:root{--bg: #07090d;--surface: #10151c;--surface-2: #171e27;--line: #232c37;--text: #e6edf3;--muted: #8b949e;--family: #ffffff;--known: #ffd60a;--unknown: #ff3b30;--unidentified: #8b949e;--accent: #4cc2ff;--radius: 16px;--touch: 48px;--font: Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--radius-sm: 12px;--gap: 16px;--tabbar-h: 56px;--topbar-h: 56px;--tracking: .08em;--on-category: #07090d;--online: #30d158;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.4;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}a{color:inherit;text-decoration:none}button,input{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,p{margin:0}.mono{font-family:var(--mono);text-transform:uppercase;letter-spacing:var(--tracking)}.muted{color:var(--muted)}.shell{min-height:100dvh;padding-top:calc(var(--topbar-h) + var(--safe-top));padding-bottom:calc(var(--tabbar-h) + var(--gap) + var(--safe-bottom));padding-left:var(--safe-left);padding-right:var(--safe-right)}.shell-blank{min-height:100dvh}.topbar{position:fixed;inset:0 0 auto 0;z-index:10;height:calc(var(--topbar-h) + var(--safe-top));padding:var(--safe-top) calc(var(--gap) + var(--safe-right)) 0 calc(var(--gap) + var(--safe-left));display:flex;align-items:center;justify-content:space-between;background:var(--bg)}.topbar-title{font-size:15px;font-weight:700}.icon-button{min-width:var(--touch);min-height:var(--touch);display:inline-flex;align-items:center;justify-content:center;margin-right:-12px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);cursor:pointer}.icon-button[aria-current=page]{color:var(--accent)}.content{padding:0 var(--gap);max-width:720px;margin:0 auto}.tabbar{position:fixed;inset:auto 0 0 0;z-index:10;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:8px calc(var(--gap) + var(--safe-right)) calc(8px + var(--safe-bottom)) calc(var(--gap) + var(--safe-left));background:var(--bg);border-top:1px solid var(--line)}.tab{height:var(--tabbar-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text);font-size:11px;font-weight:600}.tab[aria-current=page]{background:var(--family);border-color:var(--family);color:var(--on-category)}.page-title{font-family:var(--mono);text-transform:uppercase;letter-spacing:var(--tracking);font-size:22px;font-weight:700;margin:8px 0 var(--gap)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--gap)}.card-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;margin-bottom:8px}.square{width:8px;height:8px;flex:none;background:var(--cat, var(--muted))}.state-line{padding:var(--gap) 0;color:var(--muted)}.error-line{color:var(--unknown);min-height:1.4em}.rows{list-style:none;margin:0;padding:0}.row{display:flex;align-items:center;gap:12px;min-height:72px;padding:8px 0;border-top:1px solid var(--line)}.rows>li:first-child .row{border-top:0}.row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.row-name{font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-time{flex:none;font-size:12px}.badge{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;padding:2px 8px;border-radius:6px;background:var(--cat);color:var(--on-category);font-family:var(--mono);text-transform:uppercase;letter-spacing:var(--tracking);font-size:11px;font-weight:700}.badge:before{content:"";width:7px;height:7px;background:var(--on-category)}.avatar{width:var(--size, 56px);height:var(--size, 56px);flex:none;border:2px solid var(--cat);border-radius:var(--radius-sm);background:var(--surface-2);overflow:hidden;display:flex;align-items:center;justify-content:center;color:var(--muted)}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:12px;font-weight:600;color:var(--muted)}.input{min-height:var(--touch);padding:0 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2);font-size:17px}.input:focus{border-color:var(--accent);outline:none}.button{min-height:var(--touch);padding:0 20px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);font-weight:700;cursor:pointer}.button-primary{min-height:56px;background:var(--family);border-color:var(--family);color:var(--on-category);font-family:var(--mono);text-transform:uppercase;letter-spacing:var(--tracking)}.button-link{display:inline-flex;align-items:center;justify-content:center}.button:disabled{opacity:.5;cursor:default}.login{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;gap:32px;max-width:400px;margin:0 auto;padding:calc(var(--gap) + var(--safe-top)) calc(24px + var(--safe-right)) calc(var(--gap) + var(--safe-bottom)) calc(24px + var(--safe-left))}.login-brand{display:flex;flex-direction:column;align-items:center;gap:16px;font-size:18px;font-weight:700}.login-brand img{width:72px;height:72px}.login-form,.stack,.live{display:flex;flex-direction:column;gap:var(--gap)}.live-stage{position:relative;margin:0 calc(-1 * var(--gap))}.live-video{position:relative;aspect-ratio:16 / 9;background:#000;overflow:hidden}.live-player,.live-player video-stream,.poi-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.live-player video-stream{display:block}.live-player video{object-fit:contain}.poi-overlay{pointer-events:none}.live-pill{position:absolute;top:12px;left:12px;padding:4px 10px;border-radius:999px;background:#0009;color:var(--muted);font-size:11px}.state-card{position:relative;z-index:1;margin:-16px var(--gap) 0;display:flex;flex-direction:column;gap:10px}.state-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.state-name{min-width:0;font-size:28px;font-weight:700;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.state-head .badge{align-self:center;flex:none}.confidence{height:3px;background:var(--line)}.confidence>span{display:block;height:100%;background:var(--cat)}.state-meta{display:flex;justify-content:space-between;gap:12px;font-size:12px}.availability{display:inline-flex;align-items:center;gap:6px;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%;background:var(--unknown)}.dot-online{background:var(--online)}.strip{list-style:none;margin:0 calc(-1 * var(--gap));padding:0 var(--gap) 4px;display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none}.strip>li{flex:none;scroll-snap-align:start}.strip-item{display:flex;flex-direction:column;gap:4px}.strip-caption{max-width:96px;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(orientation:landscape)and (min-height:601px){.live-stage{width:100vw;margin:0 0 0 calc(50% - 50vw)}.live-video{aspect-ratio:auto;height:calc(100dvh - var(--topbar-h) - var(--safe-top) - var(--tabbar-h) - var(--gap) - var(--safe-bottom))}.state-card{position:absolute;left:50%;bottom:var(--gap);width:min(720px,calc(100% - 2 * var(--gap)));margin:0;transform:translate(-50%);background:#10151cd9}}.toast-region{position:fixed;left:50%;bottom:calc(var(--tabbar-h) + 2 * var(--gap) + var(--safe-bottom));z-index:40;width:min(480px,calc(100% - 2 * var(--gap)));transform:translate(-50%);pointer-events:none}.toast{padding:12px var(--gap);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);font-size:15px;text-align:center}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:flex-end;justify-content:center;background:#0009}.sheet{width:100%;max-width:720px;max-height:85dvh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-bottom:0;border-radius:var(--radius) var(--radius) 0 0;padding-bottom:var(--safe-bottom)}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px var(--gap) 0}.sheet-head .card-title{margin:0}.sheet-close{padding:0 14px}.sheet-body{overflow-y:auto;padding:var(--gap);display:flex;flex-direction:column;gap:12px}.picker-list{list-style:none;margin:0;padding:0}.picker-row{width:100%;min-height:56px;display:flex;align-items:center;gap:12px;padding:8px 0;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;cursor:pointer}.picker-list>li:first-child .picker-row{border-top:0}.picker-new{border:1px dashed var(--line);border-radius:var(--radius-sm);justify-content:center;font-size:13px;font-weight:700}.picker-name{min-width:0;font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chips{display:flex;gap:8px;margin:0 calc(-1 * var(--gap)) var(--gap);padding:0 var(--gap) 4px;overflow-x:auto;scrollbar-width:none}.chip{flex:none;min-height:var(--touch);padding:0 14px;border:1px solid var(--line);border-radius:999px;background:transparent;font-size:12px;font-weight:700;cursor:pointer}.chip[aria-pressed=true]{background:var(--family);border-color:var(--family);color:var(--on-category)}.chips-divider{flex:none;width:1px;margin:6px 0;background:var(--line)}.day-group{margin-bottom:var(--gap)}.day-head{margin:0 calc(-1 * var(--gap)) 8px;padding:8px var(--gap);background:var(--surface);font-family:var(--mono);text-transform:uppercase;letter-spacing:var(--tracking);font-size:13px;font-weight:700}.event-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.event-card{display:flex;align-items:center;gap:12px;min-height:72px;padding:8px;border:1px solid transparent;border-radius:var(--radius-sm)}.event-card-unknown{border-color:var(--unknown)}.event-card-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.event-card-name{font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-card-category{font-size:11px}.event-card-side{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px;font-size:11px}.event-card-icons{display:inline-flex;align-items:center;gap:6px}.event-card-icons>span{display:inline-flex}.event-card-bell{color:var(--known)}.event-card-chevron{flex:none;display:inline-flex}.history-error{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}.history-sentinel{height:1px}.event{display:flex;flex-direction:column;gap:var(--gap)}.event-head{display:flex;flex-direction:column;gap:8px}.event-title{margin-bottom:0;overflow-wrap:anywhere}.event-flags{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.event-flags .badge{align-self:center}.flag{padding:2px 8px;border:1px solid var(--line);border-radius:6px;font-size:11px;font-weight:700}.event-meta{font-size:12px}.person-block{display:flex;align-items:center;gap:12px}.person-block-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.person-block-name{font-size:17px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-block-meta{font-size:11px}.person-block .badge{align-self:center;flex:none}.stills-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.stills-head .card-title{margin:0}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}.segmented-item{min-height:var(--touch);padding:0 14px;border:0;background:transparent;font-size:11px;font-weight:700;cursor:pointer}.segmented-item[aria-pressed=true]{background:var(--family);color:var(--on-category)}.still-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.still{position:relative;aspect-ratio:1;border:2px solid var(--cat);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-2)}.still img{width:100%;height:100%;object-fit:cover;display:block}.still-action{position:absolute;inset:auto 6px 6px 6px;min-height:var(--touch);border:0;border-radius:8px;background:#07090dd9;font-size:10px;font-weight:700;cursor:pointer}.still-action:disabled{opacity:.6;cursor:default}.clip-video{width:100%;border-radius:var(--radius-sm);background:#000;display:block}.ring{max-width:720px;margin:0 auto;padding:var(--safe-top) calc(var(--gap) + var(--safe-right)) calc(var(--gap) + var(--safe-bottom)) calc(var(--gap) + var(--safe-left));display:flex;flex-direction:column;gap:var(--gap)}.ring-top{height:var(--topbar-h);display:flex;align-items:center}.ring-latest{display:flex;flex-direction:column;gap:var(--gap)}.ring-card{display:flex;flex-direction:column;gap:10px}.button-danger{background:var(--unknown);border-color:var(--unknown);color:var(--on-category)}.confirm-line{font-size:15px}.confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:4px}.confirm-actions .button-primary,.confirm-actions .button-danger{min-height:var(--touch)}.textarea{min-height:96px;padding:12px 14px;resize:vertical;font-family:var(--font);line-height:1.4}.segmented-wide{display:flex}.segmented-wide .segmented-item{flex:1}.check{min-height:var(--touch);display:inline-flex;align-items:center;gap:12px;cursor:pointer}.check input{width:22px;height:22px;margin:0;accent-color:var(--family)}.people{padding-bottom:calc(56px + var(--gap))}.people-section{margin-bottom:24px}.section-head{display:flex;align-items:center;gap:8px;padding-bottom:8px;margin-bottom:12px;border-bottom:1px solid var(--line);font-size:13px;font-weight:700}.section-head-title{flex:1}.section-head-count{font-size:11px}.person-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.person-tile{position:relative;display:block;aspect-ratio:3 / 4;border:2px solid var(--cat);border-radius:var(--radius);overflow:hidden;background:var(--surface-2)}.person-tile-img{width:100%;height:100%;object-fit:cover;display:block}.person-tile-initials{position:absolute;top:0;right:0;bottom:56px;left:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:40px;font-weight:700}.person-tile-plate{position:absolute;inset:auto 0 0 0;min-height:56px;display:flex;flex-direction:column;justify-content:center;gap:2px;padding:8px 10px;background:#07090dd9}.person-tile-name{font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-tile-meta{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fab{position:fixed;z-index:11;right:calc(var(--gap) + var(--safe-right));bottom:calc(var(--tabbar-h) + 17px + var(--gap) + var(--safe-bottom));min-height:56px;display:inline-flex;align-items:center;gap:8px;padding:0 20px;border-radius:999px;background:var(--family);color:var(--on-category);font-size:13px;font-weight:700}.person,.settings{display:flex;flex-direction:column;gap:var(--gap)}.person-head{display:flex;align-items:center;gap:var(--gap);margin-top:8px}.person-head-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.name-editor-title{min-height:var(--touch);max-width:100%;padding:0;border:0;background:transparent;text-align:left;font-size:22px;font-weight:700;overflow-wrap:anywhere;cursor:text}.name-editor-input{width:100%;font-size:18px;font-weight:700}.person-head-meta{font-size:11px;overflow-wrap:anywhere}.person-section{display:flex;flex-direction:column;gap:12px}.person-section .card-title{margin:0}.sample-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.sample-meta{position:absolute;inset:auto 0 0 0;padding:6px 8px;background:#07090dd9;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sample-delete,.camera-thumb-remove{position:absolute;top:4px;right:4px;width:var(--touch);height:var(--touch);display:flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-sm);background:#07090dd9;font-size:22px;line-height:1;cursor:pointer}.merge-pair{display:flex;align-items:center;gap:12px}.camera{display:flex;flex-direction:column;gap:12px}.camera-stage{position:relative;aspect-ratio:4 / 3;border-radius:var(--radius-sm);overflow:hidden;background:#000}.camera-video{width:100%;height:100%;object-fit:cover;display:block;transform:scaleX(-1)}.camera-ring{position:absolute;top:50%;left:50%;width:64px;height:64px;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center}.camera-ring svg{position:absolute;top:0;right:0;bottom:0;left:0;transform:rotate(-90deg)}.camera-ring-track{fill:#07090d99;stroke:var(--line);stroke-width:4}.camera-ring-bar{fill:none;stroke:var(--family);stroke-width:4;transition:stroke-dashoffset .3s linear}.camera-ring-count{position:relative;font-size:20px;font-weight:700}.camera-thumbs{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}.camera-thumb{position:relative;aspect-ratio:1;border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-2)}.camera-thumb img{width:100%;height:100%;object-fit:cover;display:block;transform:scaleX(-1)}.camera-thumb-remove{top:0;right:0;font-size:20px}.user-list{list-style:none;margin:0;padding:0}.user-row{min-height:var(--touch);display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line)}.user-list>li:first-child{border-top:0}.settings-version{font-size:11px;text-align:center}
