:root{color-scheme:dark;--bg:#080b10;--panel:#0e131b;--panel2:#121923;--line:#273142;--text:#edf3fb;--muted:#91a0b5;--accent:#6cb8ff;--good:#58d68d;--warn:#f5c451;--bad:#ff6b6b}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 15% 0,#172131 0,transparent 34rem),var(--bg);color:var(--text);font:15px/1.45 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button,input,select{font:inherit}button{border:1px solid var(--line);background:#121a25;color:var(--text);border-radius:9px;padding:.62rem .85rem;cursor:pointer}button:hover{border-color:#496078}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:#dbeeff;color:#07111d;border-color:#dbeeff;font-weight:800}.ghost{background:transparent}.hidden{display:none!important}.topbar{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:16px 22px;border-bottom:1px solid var(--line);background:rgba(8,11,16,.88);position:sticky;top:0;z-index:20;backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand img{width:52px;height:52px;object-fit:contain}.brand h1{margin:1px 0 0;font-size:1.2rem;letter-spacing:.02em}.eyebrow{font-size:.69rem;color:var(--accent);letter-spacing:.14em;font-weight:800}.test-badge{font-size:.62rem;padding:.18rem .4rem;border:1px solid #48637f;border-radius:999px;color:#bcdcff;vertical-align:middle}.header-actions{display:flex;align-items:center;gap:.5rem}.pill{font-size:.72rem;font-weight:800;letter-spacing:.06em;padding:.36rem .55rem;border:1px solid var(--line);border-radius:999px}.pill.good{color:var(--good);border-color:#225c3c}.pill.bad{color:var(--bad);border-color:#6d3030}.neutral{color:var(--muted)}main{max-width:1500px;margin:0 auto;padding:18px}.auth-card{max-width:430px;margin:9vh auto;padding:28px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,#111822,#0c1118)}.auth-card h2{margin:.35rem 0}.auth-card p{color:var(--muted)}label{display:grid;gap:.3rem;color:var(--muted);font-size:.78rem}.auth-card label{margin:1rem 0}.auth-card input,input,select{background:#080d13;border:1px solid var(--line);color:var(--text);border-radius:8px;padding:.62rem .7rem;min-width:0}.error{color:var(--bad);min-height:1.3rem;margin-top:.75rem}.tabs{display:flex;gap:.35rem;border-bottom:1px solid var(--line);margin-bottom:14px;overflow:auto}.tab{border:none;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--muted);padding:.75rem 1rem}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.tab-panel{display:none}.tab-panel.active{display:block}.toolbar{display:flex;align-items:end;gap:.55rem;margin:0 0 12px}.wrap{flex-wrap:wrap}.compact{margin-top:10px}.segmented{display:flex}.segmented button{border-radius:0}.segmented button:first-child{border-radius:8px 0 0 8px}.segmented button:last-child{border-radius:0 8px 8px 0}.segmented button.active{background:#26364a;border-color:#4a6b8c}.live-layout{display:grid;grid-template-columns:minmax(210px,280px) minmax(0,1fr);gap:14px}.camera-list-panel,.ptz-panel,.event-preview-panel,.status-card{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:12px}.panel-title{font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:800;margin:2px 0 9px}.camera-list{display:grid;gap:7px}.camera-item{text-align:left;background:#0a1018;padding:.7rem}.camera-item.active{border-color:var(--accent);background:#102035}.camera-item strong,.camera-item small{display:block}.camera-item small{color:var(--muted);margin-top:2px}.video-column{min-width:0}.video-frame{position:relative;overflow:hidden;border:1px solid var(--line);background:#000;border-radius:12px;aspect-ratio:16/9;display:grid;place-items:center}.video-frame video,.video-frame img{width:100%;height:100%;object-fit:contain;background:#000}.video-overlay{position:absolute;left:0;right:0;display:flex;justify-content:space-between;gap:1rem;padding:.55rem .7rem;background:linear-gradient(180deg,rgba(0,0,0,.78),transparent);pointer-events:none}.video-overlay.top{top:0}.video-overlay span{font-size:.72rem;color:#c7d3df}.camera-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.grid-tile{position:relative;aspect-ratio:16/9;background:#000;border:1px solid var(--line);border-radius:10px;overflow:hidden;cursor:pointer}.grid-tile:first-child{grid-column:1/-1}.grid-tile video{width:100%;height:100%;object-fit:cover}.grid-label{position:absolute;left:0;right:0;bottom:0;padding:.45rem .55rem;background:linear-gradient(0deg,rgba(0,0,0,.85),transparent);font-weight:700}.ptz-panel{margin-top:10px}.ptz-grid{display:grid;grid-template-columns:repeat(3,58px);gap:5px;justify-content:center}.ptz-grid button{height:48px}.ptz-row{display:flex;align-items:end;justify-content:center;gap:.55rem;flex-wrap:wrap;margin-top:8px}.ptz-row label{min-width:180px}.muted-text{color:var(--muted)}.events-layout,.playback-layout{display:grid;grid-template-columns:minmax(260px,420px) minmax(0,1fr);gap:14px}.event-list,.recording-list{display:grid;gap:7px;max-height:68vh;overflow:auto;padding-right:3px}.event-card,.recording-card{width:100%;text-align:left;background:#0c121a}.event-card.active,.recording-card.active{border-color:var(--accent);background:#102035}.event-card .meta,.recording-card .meta{display:flex;justify-content:space-between;gap:.5rem;color:var(--muted);font-size:.74rem;margin-top:4px}.event-type{font-size:.66rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.event-type.person{color:#81c7ff}.event-type.vehicle{color:#ffd37d}.event-type.ivs{color:#b7a0ff}.event-type.motion{color:#a7b3bf}.preview-frame{min-height:280px}.preview-image{position:absolute;inset:0}.detail-card{border:1px solid var(--line);background:#0a1017;border-radius:9px;padding:10px;margin-top:8px;white-space:pre-wrap;overflow-wrap:anywhere}.empty{padding:1rem;border:1px dashed var(--line);border-radius:8px;color:var(--muted)}.system-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.status-card h3{margin:.4rem 0}.status-card p{min-height:42px}body.fullscreening .video-frame:fullscreen,body.fullscreening .video-frame:-webkit-full-screen{border:0;border-radius:0;background:#000}.video-frame:fullscreen video,.video-frame:fullscreen img{width:100vw;height:100vh;object-fit:contain}.video-frame:-webkit-full-screen video,.video-frame:-webkit-full-screen img{width:100vw;height:100vh;object-fit:contain}
@media(max-width:900px){.live-layout,.events-layout,.playback-layout,.system-grid{grid-template-columns:1fr}.camera-list-panel{order:2}.camera-grid{grid-template-columns:1fr}.grid-tile:first-child{grid-column:auto}.topbar{position:static}.event-list,.recording-list{max-height:none}.header-actions .pill{display:none}}
@media(max-width:560px){main{padding:10px}.topbar{padding:12px}.brand img{width:40px;height:40px}.brand h1{font-size:1rem}.toolbar button{flex:1 1 auto}.video-overlay{font-size:.8rem}.ptz-row button{flex:1}.tabs .tab{flex:1}}

/* v0.2.1 production polish */
.video-action{position:absolute;right:.65rem;bottom:3.1rem;z-index:3;background:rgba(8,13,19,.82);backdrop-filter:blur(8px);border-color:#52657a}
.media-state{font-weight:800}
.camera-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,auto);align-content:start;gap:8px;height:auto;min-height:0}
.grid-tile,.grid-tile:first-child{grid-column:auto;align-self:start;min-height:0;aspect-ratio:22/15}
.grid-tile video{object-fit:contain}
.error-state{color:var(--bad);border-color:#6d3030}
body.grid-mode{overflow:hidden}
body.grid-mode main{padding-bottom:8px}
@media(max-width:900px){.camera-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,auto);height:auto;min-height:0}}
.timeline-panel{border:1px solid var(--line);background:linear-gradient(180deg,#0d141d,#090e14);border-radius:12px;padding:12px 14px 10px;margin-bottom:14px}.timeline-heading,.timeline-scale{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:.64rem;letter-spacing:.09em}.timeline-heading span:first-child{font-weight:900;color:#b9c8d8}.timeline-heading strong{color:var(--accent);font-size:.72rem}.event-rail{position:relative;height:40px;margin:5px 7px 10px;border-radius:12px;background:#070b10;border:1px solid #273544}.event-rail:before{content:"";position:absolute;inset:50% 7px auto;height:1px;background:#35475b}.event-rail.empty-rail:after{content:attr(data-empty-text);position:absolute;inset:10px 8px;text-align:center;color:#66778a;font-size:.65rem}.event-marker{position:absolute;z-index:2;width:13px;height:13px;min-height:0;padding:0;border:2px solid #081018;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px currentColor,0 0 10px currentColor}.event-marker.active{z-index:3;box-shadow:0 0 0 3px #eaf6ff,0 0 14px currentColor}.event-marker.person{background:#64bfff;color:#64bfff}.event-marker.vehicle{background:#ffd071;color:#ffd071}.event-marker.ivs,.event-marker.tripwire,.event-marker.intrusion{background:#b292ff;color:#b292ff}.event-marker.motion{background:#93a2b3;color:#93a2b3}.scrub-stack{position:relative;height:28px;margin:4px 7px}.recording-rail{position:absolute;left:0;right:0;top:10px;height:8px;border-radius:999px;background:#070b10;border:1px solid #233140;overflow:hidden}.recording-segment{position:absolute;top:0;bottom:0;min-width:2px;background:linear-gradient(90deg,#226296,#56b5fb)}.day-scrubber{position:absolute;inset:0;width:100%;height:28px;margin:0;padding:0;background:transparent!important;border:0!important;appearance:none;cursor:pointer}.day-scrubber::-webkit-slider-runnable-track{height:8px;background:transparent}.day-scrubber::-webkit-slider-thumb{appearance:none;width:15px;height:22px;margin-top:-7px;border-radius:4px;background:#e8f4ff;border:2px solid #68baff;box-shadow:0 0 10px rgba(104,186,255,.65)}.day-scrubber::-moz-range-track{height:8px;background:transparent}.day-scrubber::-moz-range-thumb{width:13px;height:20px;border-radius:4px;background:#e8f4ff;border:2px solid #68baff}.timeline-scale{margin:0 5px;letter-spacing:0;font-size:.59rem}
@media(max-width:560px){.timeline-panel{padding:10px 8px}.timeline-heading{font-size:.57rem}.event-marker{width:14px;height:14px}}

/* UI polish: transparent identity and a purposeful camera connection state. */
.brand img{width:64px;height:64px;object-fit:contain;filter:drop-shadow(0 0 12px rgba(107,190,255,.22))}
.camera-standby{position:absolute;z-index:1;inset:0;display:grid;place-content:center;justify-items:center;gap:8px;color:#8fa2b5;background:radial-gradient(circle at center,rgba(39,70,98,.22),transparent 45%),#05080c;text-align:center;letter-spacing:.1em}.camera-standby b{font-size:.7rem;color:#bcd8ed}.camera-standby small{font-size:.68rem;letter-spacing:.02em}.camera-spinner{width:34px;height:34px;border:2px solid rgba(105,186,255,.18);border-top-color:var(--accent);border-radius:50%;animation:cameraSpin .85s linear infinite}#featuredFrame video{position:relative;z-index:2;opacity:0;transition:opacity .25s}#featuredFrame.camera-ready video{opacity:1}#featuredFrame.camera-ready .camera-standby{display:none}.video-overlay,.video-action{z-index:3}@keyframes cameraSpin{to{transform:rotate(360deg)}}
@media(max-width:560px){.brand img{width:48px;height:48px}}

/* v0.2.4 control-center presentation */
:root{--cyan:#77c9ff;--steel:#9eb3c8;--panel3:#161f2b;--glow:rgba(95,188,255,.15)}
html{scroll-behavior:smooth}
body{min-height:100vh;background:radial-gradient(circle at 12% -5%,rgba(49,89,129,.34),transparent 36rem),radial-gradient(circle at 92% 20%,rgba(17,55,83,.18),transparent 30rem),linear-gradient(145deg,#080c12,#06090d 70%)}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.15;background-image:linear-gradient(rgba(122,190,235,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(122,190,235,.04) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to bottom,#000,transparent 75%)}
.skip-link{position:fixed;left:1rem;top:-5rem;z-index:100;background:#e7f5ff;color:#07111d;padding:.7rem 1rem;border-radius:8px;font-weight:800}.skip-link:focus{top:1rem}
.topbar{min-height:82px;padding:10px max(18px,calc((100vw - 1500px)/2 + 18px));border-bottom-color:#304156;box-shadow:0 12px 30px rgba(0,0,0,.18)}
.brand h1{font-size:1.28rem}.header-actions{gap:.7rem}.button-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:var(--text);border:1px solid var(--line);border-radius:9px;padding:.62rem .85rem}.button-link:hover{border-color:#5a718b;background:#121a25}
main{position:relative;z-index:1}.auth-shell{min-height:calc(100vh - 150px);display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,470px);align-items:center;gap:clamp(35px,7vw,110px);max-width:1180px;margin:0 auto;padding:7vh 30px}.auth-brief{max-width:620px}.auth-brief h2{font-size:clamp(2.8rem,6vw,5.8rem);line-height:.9;letter-spacing:-.06em;margin:.45rem 0 1.4rem}.auth-brief>p{max-width:570px;color:#a5b6c8;font-size:1.05rem}.auth-mark{width:74px;height:74px;margin-bottom:1.6rem;display:grid;place-items:center;border:1px solid #3e607e;border-radius:24px;background:linear-gradient(145deg,#1b3044,#0b131c);box-shadow:0 15px 50px rgba(26,105,162,.25)}.auth-mark span{width:28px;height:32px;border:3px solid var(--cyan);border-radius:5px 5px 10px 10px;position:relative;border-top:0}.auth-mark span:before{content:"";position:absolute;width:18px;height:17px;left:2px;top:-13px;border:3px solid var(--cyan);border-bottom:0;border-radius:12px 12px 0 0}.trust-row{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.6rem}.trust-row span{font-size:.65rem;letter-spacing:.1em;font-weight:900;color:#a8c7df;border:1px solid #28445a;background:rgba(12,29,42,.6);border-radius:999px;padding:.42rem .65rem}
.auth-card{max-width:none;width:100%;margin:0;padding:clamp(25px,4vw,42px);border-color:#33445a;border-radius:20px;background:linear-gradient(160deg,rgba(20,29,40,.98),rgba(9,14,21,.98));box-shadow:0 28px 90px rgba(0,0,0,.46),inset 0 1px rgba(255,255,255,.035)}.auth-card h2{font-size:2rem;letter-spacing:-.035em;margin:.45rem 0}.auth-card form{margin-top:1.5rem}.auth-card label{margin:.9rem 0 .35rem;color:#afc0d1;text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;font-weight:800}.auth-card input{width:100%;min-height:48px;border-color:#35465a;background:#070c12;padding:.75rem .85rem}.password-field{position:relative}.password-field input{padding-right:4.6rem}.password-toggle{position:absolute;right:6px;top:6px;bottom:6px;padding:0 .75rem;border:0;background:transparent;color:var(--cyan);font-size:.75rem;font-weight:800}.full-width{width:100%;min-height:49px;margin-top:1.1rem}.auth-note{font-size:.72rem!important;padding-top:1rem;margin:1rem 0 0;border-top:1px solid #222e3d}.error:empty{display:none}
.operations-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin-bottom:14px;border:1px solid #2c3b4e;background:#2c3b4e;border-radius:12px;overflow:hidden}.operations-strip>div{display:flex;align-items:center;gap:10px;background:linear-gradient(145deg,#111923,#0c1219);padding:12px 14px;min-width:0}.operations-strip span>small,.operations-strip span>strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.operations-strip small{font-size:.6rem;letter-spacing:.11em;color:#778ca2;font-weight:900}.operations-strip strong{font-size:.82rem;color:#d9e6f2}.ops-icon{width:24px;height:24px;flex:0 0 auto;border:1px solid #3a536b;border-radius:7px;background:#0b1118;position:relative}.live-dot:after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:var(--good);inset:0;margin:auto;box-shadow:0 0 10px var(--good)}.camera-icon:after{content:"";position:absolute;width:12px;height:8px;border:2px solid var(--cyan);border-radius:2px;inset:0;margin:auto}.focus-icon:before,.focus-icon:after{content:"";position:absolute;inset:5px;border:1px solid var(--cyan)}.focus-icon:after{inset:9px;background:var(--cyan)}.clock-icon:after{content:"";position:absolute;inset:5px;border:1px solid var(--cyan);border-radius:50%}
.tabs{border:1px solid #2b3a4d;border-radius:12px;padding:4px;background:#0b1017;margin-bottom:14px}.tab{flex:1;border:0;border-radius:8px!important;text-align:center}.tab span{font-size:.6rem;color:#6c8095;margin-right:.35rem}.tab.active{border:0;background:linear-gradient(180deg,#26384b,#1a2837);box-shadow:inset 0 1px rgba(255,255,255,.05)}
.camera-list-panel,.ptz-panel,.event-preview-panel,.status-card,.timeline-panel{border-color:#2d3c4f;box-shadow:0 12px 35px rgba(0,0,0,.16)}.panel-title{display:flex;justify-content:space-between}.camera-item{border-left:3px solid transparent}.camera-item.active{border-left-color:var(--accent);box-shadow:0 0 24px var(--glow)}.video-frame{border-color:#34465b;box-shadow:0 16px 45px rgba(0,0,0,.28)}.video-overlay{padding:.72rem .82rem}.video-overlay strong{letter-spacing:.02em}.video-action{bottom:.75rem}.site-footer{max-width:1500px;margin:25px auto 0;padding:16px 18px 22px;display:flex;justify-content:space-between;gap:1rem;color:#65788c;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;border-top:1px solid #1e2936}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
button,.button-link,input,select{transition:border-color .16s,background .16s,transform .16s,box-shadow .16s}button:active,.button-link:active{transform:translateY(1px)}button:focus-visible,.button-link:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(108,184,255,.35);outline-offset:2px;border-color:var(--accent)}
@media(max-width:900px){.auth-shell{grid-template-columns:1fr;padding:4vh 20px}.auth-brief{display:none}.operations-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar{position:sticky}.home-link{display:none}}
@media(max-width:560px){.topbar{min-height:68px}.header-actions{gap:.35rem}.brand h1{font-size:1.02rem}.brand .eyebrow{font-size:.54rem}.auth-shell{min-height:calc(100vh - 115px);padding:3vh 4px}.auth-card{padding:24px 18px}.operations-strip{grid-template-columns:1fr 1fr}.operations-strip>div{padding:9px}.operations-strip strong{font-size:.71rem}.tabs{position:sticky;top:70px;z-index:10}.tab{padding:.7rem .28rem;font-size:.71rem}.tab span{display:none}.site-footer{display:block;text-align:center}.site-footer span{display:block;margin:.3rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media(forced-colors:active){button,.button-link,input,select,.auth-card,.video-frame,.camera-list-panel{border:1px solid CanvasText}.pill.good,.pill.bad{forced-color-adjust:none}}
