@font-face{font-family:FC Sans;src:url(/fonts/FCSans-Variable.woff2) format("woff2");font-weight:400 700;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-500.woff2) format("woff2");font-weight:500;font-display:swap}:root{color-scheme:light dark;--g: #e8e9e9;--panel: #f7f7f7;--bar: #eeefef;--field: #ffffff;--line: rgba(0, 0, 0, .08);--text: #202426;--muted: #5c6366;--accent: #1d5c58;--ink: #1f7d70;--soft: rgba(31, 125, 112, .12);--ok: #2fae6e;--off: #a3a8ab;--warn: #d99a1c;--err: #c8402f;--term: #0b0c0e;--term-text: #f3f4f6;--on-accent: #ffffff;--draw-person: #81baff;--draw-object: #ffd080;--draw-keypoint: #ffcb70;--draw-geometry: #a8e4bf;--scrim: rgba(0, 0, 0, .45);--shade: rgba(0, 0, 0, .16);--shadow-modal: 0 12px 32px rgba(0, 0, 0, .25);--font-sans: "FC Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;--fs-xs: 11px;--fs-sm: 12px;--fs-md: 12.5px;--fs-base: 13px;--fs-lg: 14px;--fs-xl: 15px;--fs-2xl: 18px;--fs-hero: 40px;--editor-label: 25px;--gap: 10px;--r-sm: 4px;--r: 6px;--bar-h: 30px;--control-h: 26px;--nav-w: 184px;--side-w: 340px}@media(prefers-color-scheme:dark){:root{--g: #1a1c1e;--panel: #232628;--bar: #2a2e31;--field: #1c1f21;--line: rgba(255, 255, 255, .09);--text: #e6e8e9;--muted: #98a0a4;--accent: #1f7569;--ink: #58cdb4;--soft: rgba(88, 205, 180, .14);--ok: #3ec97f;--off: #6d7478;--warn: #e0ac3a;--err: #c94f41;--shade: rgba(0, 0, 0, .5)}}@media(max-width:600px){:root{--control-h: 36px}}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--g);color:var(--text);font:400 var(--fs-base) / 1.45 var(--font-sans);word-break:keep-all;overflow-wrap:break-word}h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.3}h1{font-size:var(--fs-xl)}h2,h3,h4{font-size:var(--fs-base)}p{margin:0}a{color:var(--ink)}code,pre,.mono{font-family:var(--font-mono)}.mono{font-size:var(--fs-sm)}.muted{color:var(--muted);font-weight:400}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}svg.icon{flex:none;width:16px;height:16px}button,.button,input,select,textarea{font:500 var(--fs-md) / 1 var(--font-sans);color:var(--text);border-radius:var(--r-sm)}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--control-h);padding:0 10px;border:1px solid var(--line);background:var(--field);text-decoration:none;white-space:nowrap;cursor:pointer}button:hover:not(:disabled),.button:hover{background:var(--bar)}button.primary{border-color:transparent;background:var(--accent);color:var(--on-accent);font-weight:600;padding:0 12px}button.danger{border-color:transparent;background:var(--err);color:var(--on-accent);font-weight:600}button.primary:hover:not(:disabled),button.danger:hover:not(:disabled){background:var(--accent);filter:brightness(1.12)}button.danger:hover:not(:disabled){background:var(--err)}button.ghost{border-color:transparent;background:transparent;padding:0 8px}button.link-danger{border-color:transparent;background:transparent;color:var(--err);padding:0 6px}button:disabled{opacity:.5;cursor:default}input,select,textarea{min-height:var(--control-h);min-width:0;max-width:100%;padding:0 8px;border:1px solid var(--line);background:var(--field);font-weight:400}textarea{padding:6px 8px;line-height:1.45;width:100%;font-family:var(--font-mono)}input::placeholder{color:var(--muted)}input[type=checkbox],input[type=radio]{min-height:0;width:14px;height:14px;margin:0;accent-color:var(--ink)}label{display:flex;flex-direction:column;gap:3px;min-width:0;font-size:var(--fs-sm);color:var(--muted)}label>input,label>select,label>textarea{color:var(--text)}label.check{flex-direction:row;align-items:center;gap:6px;min-height:var(--control-h);font-size:var(--fs-md);color:var(--text)}fieldset{min-width:0;margin:0;padding:0;border:0}legend{padding:0;font-size:var(--fs-sm);color:var(--muted)}.panel{display:flex;flex-direction:column;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.panel-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-height:var(--bar-h);padding:2px 10px;background:var(--bar);font-weight:600}.panel-bar>.icon{color:var(--ink)}.panel-extra{margin-left:auto;font-size:var(--fs-sm);font-weight:400;color:var(--muted)}.panel-body{display:flex;flex-direction:column;gap:var(--gap);padding:10px 12px}.panel-foot{padding:6px 10px;border-top:1px solid var(--line);font-size:var(--fs-sm);color:var(--muted)}.strip{flex-direction:row;align-items:center;flex-wrap:wrap;gap:var(--gap);min-height:36px;padding:4px 10px}.strip>.icon{color:var(--ink)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.table{overflow-x:auto;background:linear-gradient(to right,var(--panel) 30%,transparent) left / 40px 100% no-repeat local,linear-gradient(to left,var(--panel) 30%,transparent) right / 40px 100% no-repeat local,linear-gradient(to right,var(--shade),transparent) left / 14px 100% no-repeat scroll,linear-gradient(to left,var(--shade),transparent) right / 14px 100% no-repeat scroll}table{width:100%;border-collapse:collapse}th{padding:6px 10px;border-bottom:1px solid var(--line);font-size:var(--fs-sm);font-weight:600;color:var(--muted);text-align:left;white-space:nowrap}td{padding:5px 10px;border-bottom:1px solid var(--line);font-size:var(--fs-md);white-space:nowrap}tbody tr:last-child td{border-bottom:0}th.num,td.num{text-align:right;font-variant-numeric:tabular-nums}td.wrap{white-space:normal;overflow-wrap:anywhere}tr.clickable{cursor:pointer}tr.clickable:hover,tr.selected{background:var(--soft)}td button.cell-link{min-height:0;padding:0;border:0;background:transparent;font:inherit;color:inherit}.status{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);font-weight:500}.dot{flex:none;display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--off)}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.err{background:var(--err)}.tone-ok{color:var(--text)}.tone-updating{color:var(--warn)}.tone-failed,.text-err{color:var(--err)}.text-ok{color:var(--ink)}.badge{padding:1px 6px;border-radius:9px;background:var(--soft);color:var(--ink);font-size:var(--fs-xs);font-weight:600}[role=alert],.notice{display:flex;gap:8px;align-items:flex-start;padding:7px 9px;border-left:3px solid var(--err);border-radius:var(--r-sm);background:var(--field);color:var(--text);font-size:var(--fs-sm);line-height:1.5}.notice.warn{border-left-color:var(--warn)}.notice.info{border-left-color:var(--ink)}.note,p[role=status],div[role=status]{font-size:var(--fs-sm);color:var(--muted)}.panel.secret{border-color:var(--ink)}code.secret-value{display:block;padding:7px 9px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--field);font-size:var(--fs-sm);overflow-wrap:anywhere}code.digest{font-size:var(--fs-xs);color:var(--muted);white-space:normal;overflow-wrap:anywhere}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:8px}.metric{display:flex;flex-direction:column;gap:1px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--field);font-size:var(--fs-sm);color:var(--muted)}.metric strong{font-size:var(--fs-2xl);font-weight:600;line-height:1.2;color:var(--text);font-variant-numeric:tabular-nums}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr));gap:8px 12px;margin:0}.facts dt{font-size:var(--fs-xs);color:var(--muted)}.facts dd{margin:0;font-size:var(--fs-md);overflow-wrap:anywhere}.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chips button.chip{min-height:24px;padding:0 4px 0 8px;border:0;background:var(--soft);color:var(--ink);font:400 var(--fs-sm) / 1 var(--font-mono)}.seg{display:inline-flex;gap:2px;padding:2px;border-radius:var(--r);background:var(--bar)}.seg button{border:0;background:transparent;color:var(--muted)}.seg button[aria-pressed=true],.seg button[aria-selected=true]{background:var(--panel);color:var(--ink);font-weight:600}.weekdays{display:flex;gap:2px}.weekdays label{position:relative;display:grid;place-items:center;width:32px;min-height:var(--control-h);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--field);font-size:var(--fs-sm);color:var(--text);cursor:pointer}.weekdays input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.weekdays label:has(input:checked){background:var(--soft);color:var(--ink);font-weight:600}.weekdays label:has(input:focus-visible){outline:2px solid var(--ink);outline-offset:1px}dialog.confirm{width:min(440px,calc(100vw - 32px));padding:0;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);color:var(--text);box-shadow:var(--shadow-modal)}dialog.confirm::backdrop{background:var(--scrim)}dialog.confirm .panel-bar>.icon{color:var(--err)}dialog.confirm p{white-space:pre-line}label.inline{flex-direction:row;align-items:center;gap:8px}td.strong,strong.strong{font-weight:600}.panel-note{padding:8px 12px;border-bottom:1px solid var(--line);font-size:var(--fs-sm);color:var(--muted)}.list-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:0}.stack-tight{display:flex;flex-direction:column;gap:2px}.list-row>.stack-tight{flex:1;min-width:0}.panel>[role=alert],.panel>[role=status],.panel-body>[role=alert]{margin:8px 12px}.panel-body>[role=alert]{margin:0}.stack{display:flex;flex-direction:column;gap:var(--gap);min-width:0}.row{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.row-end{margin-left:auto}.panel-body.row{flex-direction:row}.split{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:var(--gap);align-items:start}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:8px 10px}.topbar{display:flex;align-items:center;gap:var(--gap);min-height:44px;padding:0 12px}.brand{display:flex;align-items:baseline;gap:8px;padding-right:8px}.brand strong{font-size:var(--fs-lg);font-weight:700;letter-spacing:.02em}.brand span,.topbar .user{font-size:var(--fs-sm);color:var(--muted)}.topbar .user{margin-left:auto}.page{display:flex;flex-direction:column;gap:var(--gap);padding:0 10px 12px;min-width:0}.admin-grid{display:grid;grid-template-columns:var(--nav-w) minmax(0,1fr);gap:var(--gap);padding:0 10px 12px}.sidenav{position:sticky;top:0;align-self:start;display:flex;flex-direction:column;gap:2px;padding-top:2px}.sidenav button{justify-content:flex-start;gap:8px;width:100%;min-height:30px;border:0;border-radius:5px;background:transparent;font-size:var(--fs-base);text-align:left}.sidenav button>.icon{color:var(--muted)}.sidenav button>span:first-of-type{flex:1}.sidenav button[aria-pressed=true],.sidenav button[aria-current=true]{background:var(--panel);color:var(--ink);font-weight:600}.sidenav button[aria-pressed=true]>.icon{color:var(--ink)}.sidenav .sub{display:flex;flex-direction:column;gap:2px;padding-left:22px}.sidenav .sub button{min-height:26px;font:400 var(--fs-sm) / 1 var(--font-mono);color:var(--muted)}.sidenav .sub button[aria-current=true]{background:var(--soft);color:var(--ink)}.sidenav hr{width:calc(100% - 20px);margin:6px 10px;border:0;border-top:1px solid var(--line)}.content{display:flex;flex-direction:column;gap:var(--gap);min-width:0}.auth{display:grid;place-items:center;min-height:100dvh;padding:24px 16px}.auth-card{display:flex;flex-direction:column;gap:12px;width:min(440px,100%)}.auth-card .brand{justify-content:center;padding:0}.auth-card .brand strong{font-size:var(--fs-2xl)}.auth-grid{display:grid;grid-template-columns:82px minmax(0,1fr);gap:8px 12px;align-items:center}.auth-grid>label{display:contents}.auth-grid>button[type=submit]{grid-column:2;min-height:30px}.auth .wide{min-height:30px;flex:1}@media(max-width:900px){.admin-grid,.split{grid-template-columns:minmax(0,1fr)}.sidenav{position:static;flex-direction:row;flex-wrap:wrap;padding-bottom:2px}.sidenav button{width:auto;flex:none}.sidenav hr{display:none}.sidenav .sub{flex-direction:row;flex-wrap:wrap;padding-left:0}}@media(max-width:600px){.topbar{flex-wrap:wrap;gap:6px;padding:6px 10px}.brand span,.topbar .user{display:none}.topbar .seg{margin-left:auto}.label-wide{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.auth-grid{grid-template-columns:minmax(0,1fr)}.auth-grid>button[type=submit]{grid-column:1}}.auth-grid>label>span{text-align:right}@media(max-width:600px){.auth-grid>label>span{text-align:left}}.auth .panel-bar h1{font-size:var(--fs-base)}.auth form .row>button.primary,.auth a.primary-link{flex:1;min-height:30px;border-color:transparent;background:var(--accent);color:var(--on-accent);font-weight:600}.monitor{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--gap);align-items:start}.player-empty{display:grid;place-items:center;aspect-ratio:16 / 9}.camera-row{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:8px;min-height:30px;padding:4px 10px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:var(--soft);font-weight:400;text-align:left;white-space:normal}.camera-row[aria-pressed=true]{box-shadow:inset 3px 0 0 var(--ink)}.camera-row strong{font-size:var(--fs-base)}.camera-state{font-size:var(--fs-sm);color:var(--muted);text-align:right}.picture{position:relative;background:var(--term);aspect-ratio:16 / 9}.picture video,.picture canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.picture canvas{pointer-events:none}.player-meta{display:flex;justify-content:space-between;gap:8px;padding:6px 12px;border-bottom:1px solid var(--line);font-size:var(--fs-sm);color:var(--muted)}.spans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;padding-top:8px;border-top:1px solid var(--line)}.spans h3{font-size:var(--fs-sm);color:var(--muted);font-weight:500}.spans ul{margin:0;padding:0;list-style:none;font-size:var(--fs-md)}.counts-grid{display:grid;grid-template-columns:240px minmax(0,1fr) 340px;align-items:start}.counts-grid>.table{border-left:1px solid var(--line);border-right:1px solid var(--line)}.metric-hero{font-size:var(--fs-hero);font-weight:600;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}ul.rule-totals{display:flex;flex-direction:column;margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}ul.rule-totals li{display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px solid var(--line);font-size:var(--fs-md)}.events h3{padding:6px 10px;border-bottom:1px solid var(--line);font-size:var(--fs-sm);color:var(--muted)}button.event{display:grid;grid-template-columns:62px minmax(0,1fr) auto;gap:8px;width:100%;padding:4px 10px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;font-weight:400;text-align:left;white-space:normal}.event-what{overflow-wrap:anywhere}@media(max-width:900px){.monitor,.counts-grid{grid-template-columns:minmax(0,1fr)}.player-empty{display:none}.counts-grid>.table{border:0}}@media(max-width:600px){.camera-state{grid-column:2 / -1;text-align:left}.player .panel-body .row:first-child>button{flex:1}label.inline:has(input[type=datetime-local]){order:1;flex-direction:column;align-items:stretch;width:100%}.counts .panel-bar>.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.counts .panel-bar label.inline{flex-direction:column;align-items:stretch;gap:3px}}
