:root{--bg: #f6f5f1;--surface: #ffffff;--surface-2: #f0efea;--border: rgba(11, 11, 11, .1);--text: #0b0b0b;--text-2: #52514c;--muted: #76756e;--accent: #2a63d4;--accent-ink: #ffffff;--danger: #d03b3b;--available: #0ca30c;--occupied: #ec835a;--on-status: #ffffff;--zone: #2a63d4;--cat-1: #2a78d6;--cat-2: #eb6834;--cat-3: #1baf7a;--cat-4: #eda100;--cat-5: #e87ba4;--cat-6: #008300;--cat-7: #6250d6;--cat-8: #8a8a85;--unassigned: #9a9990;--radius: 10px;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg);color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #111110;--surface: #1a1a19;--surface-2: #232321;--border: rgba(255, 255, 255, .1);--text: #f2f1ec;--text-2: #c3c2b7;--muted: #8f8e86;--accent: #5b8ff0;--accent-ink: #0b0b0b;--zone: #7aa5ff;--cat-1: #3987e5;--cat-2: #d95926;--cat-3: #199e70;--cat-4: #c98500;--cat-5: #d55181;--cat-6: #008300;--cat-7: #9085e9;--cat-8: #a3a29a;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h1,h2,p{margin:0}button,input{font:inherit;color:inherit}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-bottom:1px solid var(--border);background:var(--surface)}.topbar h1{font-size:18px;font-weight:600}.layout{flex:1;display:grid;grid-template-columns:300px 1fr;gap:16px;padding:16px 24px 32px;align-items:start}.main{display:flex;flex-direction:column;gap:16px;min-width:0}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.section-title{font-size:14px;font-weight:600;color:var(--text-2);margin-bottom:12px}.muted{color:var(--muted)}.small{font-size:12px}.tabular{font-variant-numeric:tabular-nums}.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.row.spread{justify-content:space-between}.error-text{color:var(--danger);font-size:13px;margin-top:8px}.btn{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:7px 14px;cursor:pointer;font-weight:500}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}.btn.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--accent)}.btn.danger{background:var(--danger);color:#fff;border-color:transparent}.icon-btn{border:none;background:none;cursor:pointer;color:var(--muted);font-size:18px;line-height:1;padding:4px 8px;border-radius:6px}.icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.icon-btn:disabled{opacity:.3;cursor:not-allowed}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pill{font-size:12px;padding:4px 10px;border-radius:999px;background:var(--surface-2);color:var(--text-2)}.pill.running{background:var(--accent);color:var(--accent-ink)}.badge{font-size:11px;padding:1px 6px;border-radius:4px;width:fit-content}.badge.running{background:var(--accent);color:var(--accent-ink)}.banner{margin:12px 24px 0;padding:10px 14px;border-radius:8px;display:flex;justify-content:space-between;align-items:center}.banner.error{background:color-mix(in srgb,var(--danger) 14%,var(--surface));border:1px solid var(--danger)}.tabs{display:flex;gap:4px;background:var(--surface-2);padding:3px;border-radius:8px;width:fit-content}.tab{border:none;background:none;padding:6px 12px;border-radius:6px;cursor:pointer;color:var(--text-2);font-size:13px}.tab.active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 2px #00000014}.run-settings .section-title{margin-bottom:10px}.settings-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin-bottom:12px}.setting{display:flex;flex-direction:column;gap:4px}.setting-label{font-size:13px;font-weight:500}.setting input,.setting select{padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);max-width:160px;font:inherit;color:inherit}.explain{margin:0;padding:10px 14px 10px 30px;background:var(--surface-2);border-radius:8px;display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text-2);line-height:1.5}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.source-panel{display:flex;flex-direction:column;gap:14px;position:sticky;top:16px}.source-panel .tabs{width:100%}.source-panel .tab{flex:1}.video-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.video-list li{display:flex;align-items:flex-start;gap:2px}.video-card{flex:1;min-width:0;display:flex;gap:10px;padding:6px;text-align:left;cursor:pointer;border:1px solid transparent;border-radius:8px;background:none}.video-card:hover{background:var(--surface-2)}.video-card.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.video-card img{width:80px;height:52px;object-fit:cover;border-radius:6px;background:var(--surface-2);flex-shrink:0}.video-meta{display:flex;flex-direction:column;gap:3px;min-width:0}.video-name{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload{display:flex;flex-direction:column;gap:10px}.dropzone{display:flex;flex-direction:column;align-items:center;gap:4px;padding:28px 12px;border:1.5px dashed var(--border);border-radius:var(--radius);cursor:pointer;text-align:center}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--surface))}.empty-state{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:24px 8px}.empty-state.wide{padding:64px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.empty-title{font-weight:600}.progress{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden;margin-top:10px}.progress-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .4s ease}.progress-fill.failed{background:var(--danger)}.progress-fill.stopped{background:var(--muted)}.editor{display:grid;grid-template-columns:1fr 300px;gap:16px;align-items:start}.editor-main{display:flex;flex-direction:column;gap:10px;min-width:0}.instruction-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.shape-toggle .tab{font-size:12px}.polygon-help{margin-top:-4px}.vertex{fill:#fff;stroke:#000}.vertex.first{fill:var(--accent)}.instruction{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px}.step-badge{font-size:12px;font-weight:600;padding:3px 8px;border-radius:999px;background:var(--accent);color:var(--accent-ink)}.tabletop{fill:color-mix(in srgb,currentColor 12%,transparent);stroke:currentColor}.head-zone{fill:color-mix(in srgb,currentColor 20%,transparent);stroke:currentColor}.person-box{fill:none;stroke:currentColor;opacity:.55}.head-dot{fill:currentColor;stroke:#000}.person.duplicate .head-dot{fill:none;stroke:currentColor}.frame-slider{display:flex;align-items:center;gap:10px}.frame-slider input[type=range]{flex:1;accent-color:var(--accent)}.preview-status{min-width:170px;text-align:right}.zone-item{flex-direction:column;align-items:stretch!important;gap:6px!important;padding:8px;border:1px solid var(--border);border-radius:8px;cursor:pointer}.zone-item.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}.zone-item .row{flex-wrap:nowrap}.zone-item .steps,.zone-item .zones{flex-wrap:wrap;gap:6px}.zone-tag{display:inline-flex;align-items:center;gap:2px;font-size:12px;padding:1px 2px 1px 8px;border-radius:999px;background:var(--surface-2);color:var(--text-2)}.icon-btn.tiny{font-size:14px;padding:0 5px}.swatch{width:12px;height:12px;border-radius:3px;flex-shrink:0}.chip{font-size:12px;padding:3px 8px;border-radius:999px;border:1px solid var(--border);background:var(--surface);cursor:pointer}.chip.missing{border-color:var(--danger);color:var(--danger)}.chip.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.readiness{font-size:13px;padding:8px 10px;border-radius:8px}.readiness.warn{background:color-mix(in srgb,var(--danger) 12%,var(--surface))}.readiness.ok{background:color-mix(in srgb,var(--available) 14%,var(--surface))}.frame-wrap{position:relative;line-height:0;border-radius:8px;overflow:hidden;background:var(--surface-2)}.frame-wrap img{width:100%;height:auto;-webkit-user-select:none;user-select:none}.frame-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none}.frame-overlay.drawing{cursor:crosshair}.zone{fill:color-mix(in srgb,var(--zone) 18%,transparent);stroke:var(--zone)}.zone.draft{stroke-dasharray:8 6}.zone-label{fill:#fff;font-weight:600;paint-order:stroke;stroke:#000000b3;stroke-width:4px}.editor-side{display:flex;flex-direction:column;gap:12px}.zone-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.zone-list li{display:flex;align-items:center;gap:6px}.zone-id{font-size:12px;color:var(--muted);width:28px}.zone-list input{flex:1;min-width:0;padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.monitor{display:flex;flex-direction:column;gap:16px}.monitor-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:16px}.live-frame{width:100%;border-radius:8px;display:block}.live-placeholder{aspect-ratio:16 / 9;display:grid;place-items:center;background:var(--surface-2);border-radius:8px}.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.tile{display:flex;flex-direction:column;gap:4px}.tile-label{font-size:13px;color:var(--text-2)}.tile-value{font-size:28px;font-weight:600;line-height:1.15}.table-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}.table-card{display:flex;flex-direction:column;gap:4px;padding:12px;border-radius:8px;border:1px solid var(--border);border-left:4px solid var(--available)}.table-card.occupied{border-left-color:var(--occupied)}.counts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:4px 0}.counts>div{display:flex;flex-direction:column;padding:6px 8px;border-radius:6px;background:var(--surface-2);cursor:help}.count-label{font-size:12px;font-weight:600;color:var(--text-2)}.table-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;margin:8px 0 0;padding-top:8px;border-top:1px solid var(--border)}.table-stats dt{font-size:11px;color:var(--muted)}.table-stats dd{margin:0;font-size:13px;font-weight:500}.run-settings-line{margin-top:8px}.visits{margin-top:8px;border-top:1px solid var(--border);padding-top:8px}.visits summary{cursor:pointer;font-size:13px;font-weight:500;padding:2px 0}.visits summary:hover{color:var(--accent)}.visits ol{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.visit{display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;align-items:baseline;padding:6px 8px;border-radius:6px;background:var(--surface-2);font-size:13px}.visit.ongoing{border-left:3px solid var(--occupied)}.visit-number{font-weight:600}.visit-time{grid-column:1 / -1}.visits-empty{margin-top:8px;border-top:1px solid var(--border);padding-top:8px}.status{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--text-2)}.status-icon{width:15px;height:15px;flex-shrink:0}.status-icon.available{fill:var(--available)}.status-icon.occupied{fill:var(--occupied)}.alerts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;max-height:420px;overflow-y:auto}.alert{display:flex;align-items:center;gap:8px;padding:8px 4px;border-bottom:1px solid var(--border);font-size:13px}.alert:last-child{border-bottom:none}.alert-text{flex:1;min-width:0}.alert.freed{background:color-mix(in srgb,var(--available) 7%,transparent)}.toasts{position:fixed;right:24px;bottom:24px;display:flex;flex-direction:column;gap:8px;z-index:10}.toast{display:flex;align-items:center;gap:10px;padding:12px 16px;min-width:260px;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--available);border-radius:8px;box-shadow:0 6px 20px #00000026;animation:slide-in .25s ease-out}@keyframes slide-in{0%{transform:translateY(12px);opacity:0}}@media (max-width: 1100px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.monitor-grid,.editor{grid-template-columns:1fr}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 800px){.layout{grid-template-columns:1fr;padding:12px 16px 24px}.source-panel{position:static}.topbar{padding:12px 16px}}.layout-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;margin-bottom:14px;border:1px solid var(--border);border-radius:8px;background:var(--surface-2)}.layout-chips{display:flex;gap:6px;flex-wrap:wrap;flex:1;min-width:0}.layout-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:13px}.layout-chip.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);font-weight:600}.layout-dot{width:8px;height:8px;border-radius:50%;background:var(--danger)}.layout-dot.ready{background:var(--available)}.small-btn{padding:4px 10px;font-size:13px}.layout-name{padding:4px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface);width:160px}.layout-picker{display:inline-flex;align-items:center;gap:6px}.layout-picker select{padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);font:inherit;color:inherit}
