:root{--bg:#eef2f7;--bg-glow:#d7ece8;--ink:#0c1929;--muted:#5b6b80;--panel:#fff;--line:#dce3ee;--accent:#0d9488;--accent-hover:#0f766e;--accent-bright:#2dd4bf;--accent-soft:#ccfbf1;--navy:#07111f;--navy-2:#0c1a2e;--danger:#e11d48;--warning:#d97706;--online:#10b981;--shadow:0 1px 2px #0c19290a, 0 12px 32px #0c19290f;--shadow-lg:0 24px 60px #07111f2e;--radius:16px;--radius-sm:10px;color:var(--ink);background:radial-gradient(1200px 500px at -10% -20%, var(--bg-glow), transparent 55%), radial-gradient(900px 420px at 110% 0%, #dbe7f8, transparent 50%), linear-gradient(180deg, #f7f9fc 0%, var(--bg) 100%);font-feature-settings:"ss01" on, "cv11" on;font-family:Plus Jakarta Sans,Segoe UI,sans-serif;line-height:1.5}*{box-sizing:border-box}body{min-height:100vh;margin:0}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}.shell{grid-template-columns:268px 1fr;min-height:100vh;display:grid}.sidebar{background:radial-gradient(circle at top left, #2dd4bf29, transparent 42%), linear-gradient(180deg, var(--navy-2) 0%, var(--navy) 100%);color:#e8eef6;border-right:1px solid #ffffff0f;flex-direction:column;gap:1.35rem;padding:1.35rem .95rem 1.1rem;display:flex}.brand{align-items:center;gap:.8rem;padding:.15rem .45rem;display:flex}.brand-mark{color:#042f2e;letter-spacing:-.04em;background:linear-gradient(145deg,#2dd4bf 0%,#0d9488 70%);border-radius:13px;flex-shrink:0;place-items:center;width:42px;height:42px;font-weight:800;display:grid;box-shadow:0 8px 20px #0d948859}.brand p,.muted{color:var(--muted);margin:.15rem 0 0;font-size:.9rem}.brand strong{letter-spacing:-.02em;font-size:.98rem;display:block}.brand .brand-sub{color:#8aa0b8;letter-spacing:.04em;text-transform:uppercase;margin:.1rem 0 0;font-size:.75rem;font-weight:500}.sidebar nav{flex-direction:column;flex:1;gap:1.05rem;padding:0 .15rem;display:flex;overflow:auto}.nav-group{flex-direction:column;gap:.2rem;display:flex}.nav-group-label{letter-spacing:.12em;text-transform:uppercase;color:#6d8299;margin:0 .7rem .35rem;font-size:.68rem;font-weight:700}.nav{color:#c5d3e0;border-radius:11px;align-items:center;gap:.7rem;padding:.62rem .8rem;font-size:.92rem;font-weight:550;transition:background .15s,color .15s,transform .15s;display:flex}.nav svg{opacity:.85;flex-shrink:0;width:18px;height:18px}.nav.active,.nav:hover{color:#fff;background:#2dd4bf1f}.nav.active{box-shadow:inset 0 0 0 1px #2dd4bf38}.nav.active svg,.nav:hover svg{opacity:1;color:var(--accent-bright)}.logout{color:#d7e2ee;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1f;border-radius:11px;padding:.7rem .9rem;font-weight:600;transition:background .15s,border-color .15s}.logout:hover{color:#fff;background:#ffffff14;border-color:#2dd4bf66}.content{min-width:0;padding:1.85rem 2rem 2.4rem}.page{animation:.28s page-in}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.75rem;margin-bottom:1.4rem;display:flex}.page-header h1{letter-spacing:-.035em;margin:0;font-size:1.85rem;font-weight:800}.page-header p{color:var(--muted);max-width:62ch;margin:.4rem 0 0}.panel,.login-card,.stat-grid article{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.panel{margin-bottom:1rem;padding:1.2rem 1.3rem}.panel h2{letter-spacing:-.02em;margin:0 0 .9rem;font-size:1.05rem}.panel h3{margin:1rem 0 .5rem;font-size:.92rem}.stat-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem;margin-bottom:1rem;display:grid}.stat-grid article{padding:1.1rem 1.15rem 1.05rem;transition:transform .18s,box-shadow .18s;position:relative;overflow:hidden}.stat-grid article:hover{transform:translateY(-2px);box-shadow:0 16px 36px #0c19291a}.stat-grid article:before{content:"";background:var(--accent);width:4px;position:absolute;inset:0 auto 0 0}.stat-grid article:nth-child(2):before{background:var(--online)}.stat-grid article:nth-child(3):before{background:#2563eb}.stat-grid article:nth-child(4):before{background:var(--warning)}.stat-grid article:nth-child(5):before{background:var(--danger)}.stat-grid .stat-label{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;align-items:center;gap:.45rem;font-size:.82rem;font-weight:650;display:flex}.stat-grid span{color:var(--muted);font-size:.9rem}.stat-grid strong{letter-spacing:-.04em;margin-top:.45rem;font-size:1.95rem;font-weight:800;display:block}.split{grid-template-columns:1fr 1fr;gap:1rem;display:grid}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.78rem .55rem}th{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:.75rem;font-weight:700}tbody tr{transition:background .12s}tbody tr:hover{background:#f8fafc}ul{margin:0;padding:0;list-style:none}ul li{border-bottom:1px solid var(--line);justify-content:space-between;gap:1rem;padding:.62rem 0;display:flex}.form-grid{gap:.85rem;display:grid}.filters{flex-wrap:wrap;align-items:end;gap:.65rem;margin-bottom:1rem;display:flex}.form-grid label,.filters label,.login-card label{gap:.35rem;font-size:.9rem;font-weight:650;display:grid}.filters label{flex:1;min-width:220px}.filters label.checkbox{flex:none;min-width:auto;padding-bottom:.55rem}input,select,textarea,button{border-radius:var(--radius-sm);border:1px solid var(--line);background:#fff;padding:.7rem .85rem;transition:border-color .15s,box-shadow .15s,background .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 4px #0d948824}button{background:linear-gradient(180deg, #14b8a6 0%, var(--accent) 100%);color:#fff;cursor:pointer;border-color:#0000;font-weight:700;box-shadow:0 6px 16px #0d948838}button:hover:not(:disabled){background:linear-gradient(180deg, #2dd4bf 0%, var(--accent-hover) 100%)}button:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.filters>button,.filters>.button-link{color:var(--ink);border:1px solid var(--line);box-shadow:none;background:#fff;font-weight:650}.filters>button:hover:not(:disabled),.filters>.button-link:hover{border-color:var(--accent);color:var(--accent-hover);background:#f0fdfa}button.danger{color:var(--danger);box-shadow:none;background:#fff;border:1px solid #fecdd3}button.danger:hover:not(:disabled){background:#fff1f2;border-color:#fda4af}.row-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.checkbox{align-items:center;gap:.5rem;display:flex!important}.badge{letter-spacing:.02em;border-radius:999px;align-items:center;padding:.18rem .6rem;font-size:.75rem;font-weight:750;display:inline-flex}.badge.online{background:var(--accent-soft);color:#0f766e}.badge.offline,.badge.planned,.badge.info{color:#475569;background:#eef2f7}.badge.warning{color:#92400e;background:#fef3c7}.badge.critical{color:var(--danger);background:#ffe4e6}.button-link{border-radius:var(--radius-sm);background:linear-gradient(180deg, #14b8a6 0%, var(--accent) 100%);color:#fff;justify-content:center;align-items:center;padding:.5rem .8rem;font-size:.85rem;font-weight:700;display:inline-flex;box-shadow:0 4px 12px #0d948833}.button-link:hover{filter:brightness(1.06)}.remote-shell{color:#e8eef1;background:#070b10;grid-template-rows:auto minmax(0,1fr) auto;height:100dvh;max-height:100dvh;display:grid;overflow:hidden}.remote-topbar{background:linear-gradient(#101a26 0%,#0b131c 100%);border-bottom:1px solid #ffffff14;flex-direction:column;gap:.45rem;min-width:0;padding:.55rem .75rem .6rem;display:flex}.remote-topbar-row{flex-wrap:wrap;align-items:center;gap:.45rem .65rem;min-width:0;display:flex}.remote-topbar-left,.remote-topbar-center,.remote-topbar-actions,.remote-topbar-right{flex-wrap:wrap;align-items:center;gap:.45rem .55rem;min-width:0;display:flex}.remote-topbar-left{flex:0 auto}.remote-topbar-center{flex:auto}.remote-topbar-actions{flex:0 auto;justify-content:flex-end;margin-left:auto}.remote-identity{flex-direction:column;min-width:0;line-height:1.2;display:flex}.remote-identity strong{text-overflow:ellipsis;white-space:nowrap;max-width:18rem;overflow:hidden}.remote-topbar-tools{justify-content:flex-start}.remote-back{color:#99f6e4;background:#2dd4bf1f;border-radius:8px;padding:.4rem .7rem;font-weight:700}.remote-pill{background:#243039;border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .7rem;font-size:.85rem;font-weight:700;display:inline-flex}.remote-pill i{background:#8899a6;border-radius:50%;width:8px;height:8px}.remote-pill.live{color:#7ddec8;background:#2dd4bf2e}.remote-pill.live i{background:#2dd4bf;box-shadow:0 0 0 4px #2dd4bf33}.remote-pill.wait{color:#ffd27a;background:#ffc45a24}.remote-pill.wait i{background:#ffc45a}.remote-pill.off{color:#9aa7b2;background:#ffffff0f}.remote-metric{font-variant-numeric:tabular-nums;color:#9aa7b2;font-size:.85rem}.fps-control{background:#eef2f5;border:1px solid #d5dee6;border-radius:10px;align-items:center;gap:.35rem;padding:.2rem .35rem;display:inline-flex}.fps-control-label{color:#5b6b76;padding:0 .25rem;font-size:.75rem;font-weight:700}.fps-control-value{text-align:center;font-variant-numeric:tabular-nums;min-width:1.75rem;font-size:.9rem;font-weight:700}.fps-control button{color:#1a232b;cursor:pointer;width:1.75rem;height:1.75rem;box-shadow:none;background:#fff;border:0;border-radius:8px;padding:0;font-size:1.05rem;font-weight:700;line-height:1}.fps-control button:hover:not(:disabled){color:#042f2e;background:#2dd4bf}.fps-control button:disabled{opacity:.4;cursor:not-allowed}.fps-control-dark{background:#1a232b;border-color:#2a3640}.fps-control-dark .fps-control-value{color:#e8eef2}.fps-control-dark .fps-control-label{color:#8b98a3}.fps-control-dark button{color:#e8eef2;background:#243039}.fps-control-dark button:hover:not(:disabled){color:#042f2e;background:#2dd4bf}.remote-seg{background:#1a232b;border-radius:10px;gap:2px;padding:3px;display:inline-flex}.remote-tool-group{align-items:center;gap:.4rem;display:inline-flex}.remote-seg-label{letter-spacing:.08em;text-transform:uppercase;color:#8b98a3;font-size:.68rem;font-weight:800}.remote-seg button,.remote-ghost{color:#c5d0d7;cursor:pointer;box-shadow:none;white-space:nowrap;background:0 0;border:0;border-radius:8px;flex-shrink:0;padding:.35rem .55rem;font-size:.78rem;font-weight:600}.remote-seg button.active,.remote-ghost:hover{color:#042f2e;background:#2dd4bf}.remote-seg button.best{color:#ffe2a8}.remote-seg button.best.active{color:#2a1d00;background:linear-gradient(135deg,#d4a017,#f0c14b)}.remote-ghost{background:#1a232b;align-items:center;display:inline-flex}.remote-banner{border-radius:0;margin:0}.remote-stage{background:radial-gradient(circle at top,#2dd4bf14,#0000 40%),#070b10;justify-content:center;align-items:center;height:100%;min-height:0;padding:.55rem;display:flex;position:relative;overflow:hidden}.remote-stage.fill-mode{padding:0}.remote-stage.scroll{display:block;overflow:auto}.remote-stage.scroll .remote-viewport{max-width:none;max-height:none;margin:.75rem auto}.remote-viewport{background:#000;border:1px solid #ffffff14;border-radius:0;flex:none;width:auto;max-width:none;height:auto;max-height:none;position:relative;overflow:hidden;box-shadow:0 24px 60px #00000073}.remote-viewport.stretch,.remote-viewport.full{width:auto;max-width:none;height:auto;max-height:none;box-shadow:none;border:0;border-radius:0;position:absolute;inset:0}.remote-viewport.original{max-width:none;max-height:none}.remote-canvas{cursor:crosshair;image-rendering:auto;background:#000;outline:none;width:auto;height:auto;display:block}.remote-viewport.stretch .remote-canvas{width:100%;height:100%;position:absolute;inset:0}.remote-annotate-layer{cursor:crosshair;width:100%;height:100%;position:absolute;inset:0}.share-targets{flex-wrap:wrap;gap:.65rem 1.1rem;margin:.75rem 0;display:flex}.share-preview-wrap{background:#102226;border-radius:12px;min-height:240px;position:relative;overflow:hidden}.share-video,.share-annotate{object-fit:contain;width:100%;max-height:420px;display:block}.share-annotate{width:100%;height:100%;position:absolute;inset:0}.recording-player{background:#000;border-radius:12px;width:100%;max-height:480px;margin-bottom:.75rem}.remote-ghost.active{background:var(--accent);color:#fff}.remote-overlay{text-align:center;z-index:2;pointer-events:none;background:#080c10b8;place-content:center;gap:.5rem;display:grid;position:absolute;inset:0}.remote-overlay p{margin:0;font-weight:700}.remote-overlay small{color:#9aa7b2}.remote-spinner{border:3px solid #ffffff26;border-top-color:#2dd4bf;border-radius:50%;width:36px;height:36px;margin:0 auto .4rem;animation:.8s linear infinite remote-spin}@keyframes remote-spin{to{transform:rotate(360deg)}}.remote-footer{color:#8b98a3;background:#0b131c;border-top:1px solid #ffffff0f;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.35rem 1rem;min-width:0;padding:.5rem .75rem;font-size:.8rem;line-height:1.35;display:flex}.remote-footer span{min-width:0}.remote-footer span:last-child{text-align:right;flex:16rem}.remote-shell .muted{color:#8b98a3}@media (width<=960px){.remote-topbar-actions,.remote-topbar-center{margin-left:0}.remote-footer{flex-direction:column}.remote-footer span:last-child{text-align:left}}.login-page{background:radial-gradient(900px 500px at 10% 10%,#2dd4bf2e,#0000 50%),radial-gradient(700px 400px at 90% 80%,#2563eb2e,#0000 46%),linear-gradient(160deg,#07111f 0%,#0c1a2e 55%,#10233a 100%);place-items:center;min-height:100vh;padding:1.25rem;display:grid}.login-shell{width:min(980px,100%);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffff0a;border:1px solid #ffffff14;border-radius:28px;grid-template-columns:1.05fr .95fr;display:grid;overflow:hidden}.login-hero{color:#e8eef6;background:radial-gradient(circle at 20% 20%,#2dd4bf38,#0000 42%),linear-gradient(#0c1a2e66,#07111f33);flex-direction:column;justify-content:space-between;gap:2rem;padding:2.4rem 2.2rem;display:flex}.login-hero .brand strong{color:#fff}.login-hero h1{letter-spacing:-.04em;margin:1.4rem 0 .7rem;font-size:2.15rem;font-weight:800;line-height:1.15}.login-hero>p{color:#9fb0c4;max-width:36ch;margin:0}.login-features{gap:.65rem;display:grid}.login-features li{color:#d5e0ec;border:0;align-items:center;gap:.7rem;padding:0;font-weight:600;display:flex}.login-features li:before{content:"";background:var(--accent-bright);border-radius:50%;flex-shrink:0;width:8px;height:8px;box-shadow:0 0 0 5px #2dd4bf29}.login-card{width:auto;box-shadow:none;background:#fff;border:0;border-radius:0;gap:.95rem;padding:2.2rem 2rem;display:grid}.login-card h1{letter-spacing:-.03em;margin:0;font-size:1.55rem}.login-card p{color:var(--muted);margin:0}.login-card button{margin-top:.35rem;padding:.85rem .9rem}.error,.success{border-radius:12px;margin-bottom:1rem;padding:.75rem .9rem}.error{color:var(--danger);background:#ffe4e6}.success{background:var(--accent-soft);color:#0b4f45}code{background:#f1f5f9;border-radius:6px;padding:.12rem .35rem;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.88em}@media (width<=960px){.shell{grid-template-columns:1fr}.sidebar{z-index:10;position:sticky;top:0}.sidebar nav{flex-flow:wrap;gap:.35rem}.nav-group{flex-flow:wrap}.nav-group-label{display:none}.stat-grid,.split,.login-shell{grid-template-columns:1fr}}@media (width<=640px){.stat-grid,.split{grid-template-columns:1fr}.content{padding:1rem}}.policy-fieldset{border:1px solid var(--line);background:#f8fafc;border-radius:14px;grid-column:1/-1;margin:0;padding:.85rem 1rem 1rem}.policy-fieldset legend{padding:0 .35rem;font-weight:700}.monitor-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.monitor-tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:.55rem;padding:.8rem;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex}.monitor-tile:hover{transform:translateY(-3px);box-shadow:0 18px 40px #0c19291a}.monitor-tile.selected{outline:2px solid var(--accent);border-color:#0000}.monitor-tile-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.monitor-thumb{aspect-ratio:16/10;background:linear-gradient(#2dd4bf14,#0000 40%),#102226;border-radius:12px;display:block;overflow:hidden}.monitor-thumb img{object-fit:cover;width:100%;height:100%;display:block}.monitor-placeholder{color:#9fb0b4;text-align:center;place-items:center;height:100%;min-height:140px;padding:1rem;font-size:.9rem;display:grid}.monitor-meta{gap:.2rem;font-size:.88rem;display:grid}.monitor-meta .muted{min-width:5.2rem;display:inline-block}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-log{flex-direction:column;gap:.65rem;max-height:320px;margin-bottom:.75rem;display:flex;overflow:auto}.chat-bubble{border:1px solid var(--line);background:#fff;border-radius:12px;padding:.65rem .8rem}.chat-bubble.admin_to_device{background:var(--accent-soft)}.chat-bubble p{margin:.25rem 0}.chat-bubble small{color:var(--muted)}.toolbar-note{background:linear-gradient(#f8fffd,#fff)}.camera-wall{grid-template-columns:repeat(var(--cols,2), minmax(0, 1fr));grid-auto-rows:1fr;gap:.65rem;min-height:calc(100vh - 210px);display:grid}.camera-cell{min-height:180px;box-shadow:var(--shadow);background:#070b10;border:1px solid #0f172a59;border-radius:14px;position:relative;overflow:hidden}.camera-cell.live{box-shadow:0 0 0 1px #0d948859, var(--shadow)}.camera-canvas{object-fit:contain;background:#000;width:100%;height:100%;display:block}.camera-overlay{text-align:center;color:#d7e2ee;pointer-events:none;background:#070b108c;place-content:center;gap:.35rem;display:grid;position:absolute;inset:0 0 44px}.camera-overlay p{margin:0;font-weight:700}.camera-caption{color:#fff;background:linear-gradient(#0000,#000000c7);justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem .65rem;display:flex;position:absolute;bottom:0;left:0;right:0}.camera-caption strong,.camera-caption span{display:block}.camera-caption span{color:#cbd5e1;font-size:.78rem}.camera-remote{background:var(--accent);color:#fff;white-space:nowrap;border-radius:8px;padding:.32rem .6rem;font-size:.78rem;font-weight:700}.page-header-actions{flex-wrap:wrap;gap:.5rem;display:flex}.assign-panel h2{margin-top:0}.assign-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.85rem;margin-top:.85rem;display:grid}.display-shell{background:#000;min-height:100vh;position:relative}.display-shell .camera-cell,.camera-cell.fill{height:100vh;min-height:100vh;box-shadow:none;border:0;border-radius:0}.display-shell .camera-overlay{inset:0 0 48px}.display-close{z-index:5;color:#fff;box-shadow:none;background:#070b10b8;border:1px solid #ffffff29;position:fixed;top:.75rem;right:.75rem}
