:root{color-scheme:light;--ink:#15343f;--dim:#5d7480;--stroke:#dbe5e6;--base:#f2f7f7;--dark:#113d49;--sea:#138b79;--light:#ecfaf5;--gold:#efb45b;--red:#bb4040;--line:#eef2f2;--shadow:0 13px 35px rgba(15,53,60,.09);font-family:Inter,'Segoe UI',system-ui,-apple-system,sans-serif}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;color:var(--ink);background:var(--base)}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:var(--sea)}.hide{display:none!important}.boot{height:100vh;display:flex;align-items:center;justify-content:center;gap:12px}.spinner{border:3px solid #cce3df;border-top-color:var(--sea);width:24px;height:24px;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.login-wrap{min-height:100vh;display:grid;grid-template-columns:minmax(250px,1fr) minmax(330px,490px)}.login-side{color:#fff;padding:8vw 8%;background:linear-gradient(140deg,#113d49,#156b69 84%);display:flex;flex-direction:column;justify-content:center;gap:20px}.logo{width:62px;height:62px;padding:11px;border-radius:19px;background:#fff2;display:inline-flex;align-items:center;justify-content:center}.logo svg{width:41px}.login-side h1{font-size:clamp(34px,4vw,56px);letter-spacing:-2px;line-height:1.05;margin:0}.login-side p{opacity:.82;line-height:1.6;max-width:540px}.login-side .pill{color:#ddfef2;background:#ffffff18;align-self:start}.login-form-wrap{display:flex;align-items:center;padding:34px}.login-card{width:100%;max-width:450px;margin:auto}.login-card h2{font-size:28px;letter-spacing:-.7px}.hint{color:var(--dim);line-height:1.5;font-size:14px}.small{font-size:12px}.strong{font-weight:750}.panel{background:#fff;border:1px solid var(--stroke);border-radius:19px;box-shadow:var(--shadow);padding:24px}.form{display:grid;gap:14px}.form label{display:grid;gap:7px;font-weight:650;font-size:13px}.form input,.form select,.form textarea,.field{width:100%;min-height:42px;border:1px solid #cfdfe0;background:#fff;color:var(--ink);padding:11px 12px;border-radius:10px;outline:none}.form input:focus,.form select:focus,.field:focus{border-color:#119b89;box-shadow:0 0 0 3px #1bac961b}.form button,.btn{border:0;background:var(--sea);color:#fff;padding:11px 15px;border-radius:10px;font-weight:700;display:inline-flex;align-items:center;gap:8px;justify-content:center}.btn:hover{filter:brightness(.94)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.alt{background:#e7f2f1;color:#0d6058}.btn.gray{background:#f1f4f5;color:#2e515a}.btn.warn{background:#fff1e0;color:#8b5011}.btn.danger{background:#b24440}.btn.tiny{font-size:12px;padding:8px 10px}.app-shell{display:grid;grid-template-columns:238px 1fr;min-height:100vh}.sidebar{background:#fff;border-right:1px solid var(--stroke);padding:26px 16px;display:flex;flex-direction:column;gap:22px}.brand{display:flex;align-items:center;gap:11px;padding:6px 10px;font-weight:820;letter-spacing:-.2px}.brand .logomark{background:var(--dark);color:#fff;padding:9px;border-radius:12px}.brand small{display:block;color:var(--dim);font-size:11px;letter-spacing:0}.nav{display:grid;gap:6px}.nav button{border:0;text-align:left;background:transparent;padding:13px;border-radius:11px;color:#48646a;font-weight:650}.nav button.on,.nav button:hover{background:#e7f7f1;color:#007d69}.user-mini{margin-top:auto;border-top:1px solid var(--line);padding:18px 10px 0;display:grid;gap:10px}.page{padding:34px clamp(18px,4vw,58px);max-width:1500px;width:100%;margin:0 auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:26px}.topbar h1{font-size:clamp(25px,3vw,35px);letter-spacing:-1px;margin:0 0 6px}.topbar p{margin:0;color:var(--dim)}.top-actions{display:flex;flex-wrap:wrap;gap:8px}.pill{border-radius:99px;padding:7px 11px;font-size:12px;font-weight:700;display:inline-flex;align-items:center;gap:6px;background:#e4f1f0;color:#286558}.notice{padding:13px 15px;border-radius:10px;margin:15px 0;font-size:13px;line-height:1.5;background:#fff4db;color:#815416}.notice.good{background:#e8f8f2;color:#116354}.notice.bad{background:#feebe9;color:#a33f3a}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.metric{background:#fff;border:1px solid var(--stroke);border-radius:15px;padding:19px;display:grid;gap:8px;box-shadow:0 3px 15px #124e4410}.metric .value{font-size:32px;font-weight:820;line-height:1}.metric span{font-size:13px;color:var(--dim)}.metric.green .value{color:#14795e}.metric.gold .value{color:#ac7715}.metric.red .value{color:#b04443}.metric.blue .value{color:#21699b}.panel h2,.panel h3{margin:0 0 14px;letter-spacing:-.25px}.panel p{line-height:1.5}.twocol{display:grid;grid-template-columns:1fr 1fr;gap:18px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:17px}.toolbar>*{max-width:100%}.toolbar input,.toolbar select{min-height:40px;border:1px solid var(--stroke);border-radius:9px;padding:9px;color:var(--ink)}.table-scroll{overflow:auto;max-width:100%}table{border-collapse:collapse;width:100%;min-width:640px;font-size:13px}th{text-align:left;padding:13px 12px;background:#f6f9f9;color:#587078;font-size:12px}td{border-top:1px solid var(--line);padding:12px;vertical-align:middle}tr:hover td{background:#f9fcfb}.tag{border-radius:7px;padding:6px 8px;white-space:nowrap;font-size:11px;font-weight:700;display:inline-flex}.tag.ok{background:#e6f7ed;color:#137a4b}.tag.bad{background:#ffedec;color:#ab3c36}.tag.wait{background:#fff4d8;color:#95630c}.tag.info{background:#e6f3fb;color:#276e9b}.tag.muted{background:#f0f3f5;color:#6c8088}.today-session{border:1px solid var(--stroke);background:#fff;border-radius:15px;padding:17px;margin-bottom:13px;display:grid;gap:11px}.today-session .session-top{display:flex;justify-content:space-between;gap:10px}.today-session h3{margin:0;font-size:17px}.session-actions{display:flex;flex-wrap:wrap;gap:8px}.grid-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.grid-form label{display:grid;gap:6px;font-weight:650;font-size:13px}.grid-form input,.grid-form select{width:100%;min-height:40px;border:1px solid #cfdfe0;border-radius:9px;padding:9px 10px}.grid-form .wide{grid-column:1/-1}.room-card{border:1px solid var(--stroke);padding:16px;border-radius:13px;display:flex;gap:18px;align-items:center;justify-content:space-between}.room-card svg{height:135px;width:135px}.room-label{display:grid;gap:5px;flex:1}.room-label strong{font-size:16px}.room-label a{font-size:11px;word-break:break-all}.room-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:15px}.preview{max-height:250px;overflow:auto;border:1px solid var(--stroke);border-radius:10px;font-size:12px}.preview table{min-width:750px}.preview td,.preview th{padding:8px}.qr-view{max-width:290px;margin:12px auto}.qr-view svg{width:100%;height:auto}.scanner{position:relative;max-width:450px;margin:auto;background:#102b34;border-radius:13px;overflow:hidden}.scanner video{width:100%;display:block;min-height:220px;object-fit:cover}.camera-note{text-align:center;font-size:12px;color:var(--dim)}.overlay{position:fixed;inset:0;background:#0b283dcc;display:grid;place-items:center;padding:20px;z-index:40}.modal{max-width:570px;width:100%;max-height:95vh;overflow:auto;background:white;border-radius:20px;padding:24px;box-shadow:0 30px 90px #0004}.modal .form{margin-top:20px}.print-only{display:none}#toast{position:fixed;bottom:22px;right:22px;z-index:80;background:#123d49;color:#fff;padding:13px 18px;border-radius:10px;max-width:min(450px,90vw);box-shadow:var(--shadow);display:none;font-size:13px}#toast.on{display:block}.footer{margin-top:25px;color:#769098;font-size:12px}.stack{display:grid;gap:15px}.divider{height:1px;background:var(--line);margin:12px 0}
@media(max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;padding:12px;gap:12px}.nav{display:flex;overflow:auto;padding-bottom:4px}.nav button{white-space:nowrap}.user-mini{margin:0;display:none}.page{padding:24px 16px}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.twocol{grid-template-columns:1fr}.login-wrap{grid-template-columns:1fr}.login-side{padding:35px 25px}.login-side h1{font-size:34px}.login-form-wrap{padding:22px}.login-side p{margin:0}.sidebar .brand{padding:4px}}
@media(max-width:580px){.cards{gap:9px}.metric{padding:13px}.metric .value{font-size:28px}.topbar{align-items:start;flex-direction:column}.panel{padding:16px}.room-card{flex-direction:column;align-items:start}.grid-form{grid-template-columns:1fr}.today-session .session-top{display:grid}}
@media print{body{background:#fff}.sidebar,.topbar,.no-print,.footer,.panel:not(.print-only),#toast{display:none!important}.app-shell{display:block}.page{padding:0}.print-only{display:block!important}.room-grid{grid-template-columns:repeat(2,1fr)}.room-card{page-break-inside:avoid;border:2px solid black;display:grid;text-align:center}.room-card svg{margin:auto;width:190px;height:190px}.room-label a{display:none}.print-title{text-align:center} }
