:root{color-scheme:light;--bg:#f6f7f9;--bg-soft:#eef2f6;--panel:#fff;--ink:#18202b;--muted:#637083;--line:#d9dee7;--line-soft:#e7ebf1;--primary:#0f766e;--primary-strong:#0b5f59;--warn:#b45309;--danger:#b91c1c;--ok:#166534;--shadow:0 12px 32px rgba(24,32,43,.06)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif;line-height:1.35}a{color:inherit}button,input,select,textarea{font:inherit}.shell{min-height:100vh}.topbar{align-items:center;background:#121c28;border-bottom:1px solid hsla(0,0%,100%,.08);color:#fff;display:flex;gap:14px;justify-content:space-between;padding:10px 16px;position:-webkit-sticky;position:sticky;top:0;z-index:5}.brand{font-size:18px;font-weight:700;letter-spacing:0;text-decoration:none}.nav{align-items:center;display:flex;gap:6px}.nav a,.nav button{background:transparent;border:1px solid hsla(0,0%,100%,.14);border-radius:6px;color:#fff;min-height:34px;padding:7px 10px;text-decoration:none}.nav a:hover,.nav button:hover{background:hsla(0,0%,100%,.08)}.main{margin:0 auto;max-width:1200px;padding:20px}.main:has(.model-test-detail),.main:has(.model-tests-page),.main:has(.observations-page),.main:has(.review-page){max-width:min(1600px,100%)}.stack{display:grid;grid-gap:16px;gap:16px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:20px}.panel h1,.panel h2{margin:0}.grid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.metric{background:var(--panel);border:1px solid var(--line);border-radius:8px;min-width:0;padding:12px 14px}.metric-label{color:var(--muted);font-size:13px}.metric-value{font-size:22px;font-weight:700;margin-top:5px;overflow-wrap:anywhere}.target{background:#111b25;border-radius:8px;color:#fff;display:grid;grid-gap:4px;gap:4px;padding:22px}.target h1{font-size:clamp(32px,5vw,54px);line-height:1.04;margin:0}.key{color:#b9c3d2;font-size:18px;margin-top:10px}.actions{display:flex;flex-wrap:wrap;gap:8px}.batch-control{align-items:end;display:grid;grid-gap:5px 8px;gap:5px 8px;grid-template-columns:92px auto}.batch-control label{color:var(--muted);font-size:12px;font-weight:700;grid-column:1}.batch-control input{border:1px solid var(--line);border-radius:8px;grid-column:1;grid-row:2;min-height:42px;padding:8px 10px;width:92px}.batch-control .button{grid-column:2;grid-row:1/span 2}.button{align-items:center;background:var(--primary);border:0;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-weight:700;justify-content:center;line-height:1.1;min-height:42px;padding:10px 14px;text-decoration:none}.button:hover{background:var(--primary-strong)}.button.secondary{background:#e8edf3;color:var(--ink)}.button.secondary:hover{background:#dce3ec}.button.warn{background:var(--warn)}.button.danger{background:var(--danger)}.button:disabled{cursor:not-allowed;opacity:.55}.form{display:grid;grid-gap:12px;gap:12px}.field{display:grid;grid-gap:6px;gap:6px}.field label{color:var(--muted);font-size:14px;font-weight:700}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:8px;min-height:44px;padding:9px 10px;width:100%}.camera-input{background:#fff;border:2px dashed var(--line);border-radius:8px;min-height:74px;padding:18px}.preview{border:1px solid var(--line);border-radius:8px;max-height:55vh;max-width:100%;object-fit:contain;width:100%}.message{border-radius:8px;padding:12px}.message.ok{background:#dcfce7;color:var(--ok)}.message.error{background:#fee2e2;color:var(--danger)}.message.warn{background:#fef3c7;color:var(--warn)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;min-width:760px;width:100%}td,th{border-bottom:1px solid var(--line-soft);padding:12px 10px;text-align:left;vertical-align:middle}th{color:var(--muted);font-size:13px;font-weight:700}tbody tr:hover{background:#fafbfd}.thumb{background:#eef1f5;border:1px solid var(--line);border-radius:6px;height:64px;object-fit:cover;width:64px}.scan-table{min-width:930px}.observation-player,.scan-location strong{font-weight:750}.scan-actions{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(2,minmax(84px,1fr))}.scan-actions .button{min-height:36px;padding:8px 10px}.scan-actions .wide-action{grid-column:1/-1}.status{border-radius:999px;display:inline-block;font-size:12px;font-weight:700;padding:4px 8px;white-space:nowrap}.status-uploaded{background:#dcfce7;color:var(--ok)}.status-needs_reshoot,.status-skipped{background:#fef3c7;color:var(--warn)}.status-deleted{background:#fee2e2;color:var(--danger)}.status-not_processed,.status-unreviewed{background:#e6eaf0;color:var(--ink)}.status-processing{background:#dbeafe;color:#1d4ed8}.status-accepted,.status-corrected,.status-processed,.status-reviewed{background:#dcfce7;color:var(--ok)}.status-needs_rescan,.status-parse_failed{background:#fee2e2;color:var(--danger)}.review-header{align-items:start;display:grid;grid-gap:14px;gap:14px;grid-template-columns:minmax(220px,1fr) auto}.review-meta{grid-column:1/-1}.review-nav{justify-content:flex-end}.review-workspace{align-items:start;display:grid;grid-gap:16px;gap:16px;grid-template-columns:minmax(420px,48vw) minmax(600px,1fr)}.review-image-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:10px;position:-webkit-sticky;position:sticky;top:66px}.review-image{border-radius:6px;max-height:calc(100vh - 110px);object-fit:contain;width:100%}.review-grid{align-items:stretch;display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.slot-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:10px;gap:10px;min-width:0;padding:14px}.slot-card>.stack{align-content:start;gap:12px}.slot-head{align-items:center;display:flex;justify-content:space-between;gap:8px}.slot-card h2{font-size:18px;line-height:1.2;margin:0 0 5px}.slot-facts{display:grid;grid-gap:5px 12px;gap:5px 12px;grid-template-columns:minmax(70px,auto) 1fr;margin:0}.slot-facts dt{color:var(--muted);font-size:13px;font-weight:700}.slot-facts dd{margin:0;min-width:0;overflow-wrap:anywhere}.slot-summary{border-bottom:1px solid var(--line-soft);display:grid;grid-gap:7px;gap:7px;min-height:142px;padding-bottom:10px}.slot-summary p{margin:0}.brand-row{align-items:center;display:flex;min-height:30px}.brand-chip{background:hsl(var(--brand-hue) 72% 91%);border:1px solid hsl(var(--brand-hue) 58% 78%);border-radius:999px;color:hsl(var(--brand-hue) 54% 26%);display:inline-flex;font-size:13px;font-weight:800;line-height:1.1;max-width:100%;min-height:28px;overflow:hidden;padding:6px 10px;text-overflow:ellipsis;white-space:nowrap}.slot-note{font-size:13px;line-height:1.3;margin:0;max-height:76px;overflow:auto}.slot-card-actions{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}.slot-card-actions .button{min-height:40px}.slot-card-actions .danger{grid-column:1/-1}.muted{color:var(--muted)}@media (max-width:680px){.topbar{align-items:stretch;flex-direction:column}.nav{display:grid;grid-template-columns:repeat(3,1fr)}.nav a,.nav button{font-size:13px;padding:8px 6px}.main{padding:12px}.actions .button{flex:1 1 100%}.batch-control{grid-template-columns:92px minmax(0,1fr);width:100%}.review-grid,.review-header,.review-workspace{grid-template-columns:1fr}.review-nav{justify-content:stretch}.review-image-panel{position:static}.review-image{max-height:70vh}}.filter-grid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.wide-field{grid-column:span 2}.observations-page{max-width:none}.observations-table-wrap{max-height:72vh;padding:0}.observations-table{min-width:1500px}.observations-table th{background:var(--panel);position:-webkit-sticky;position:sticky;top:0;z-index:1}.observations-table td{height:58px}.observations-table .table-actions{display:grid;grid-gap:6px;gap:6px;grid-template-columns:1fr}.sort-button{background:transparent;border:0;color:var(--muted);cursor:pointer;font-size:13px;font-weight:700;padding:0;text-align:left}.table-actions .button{min-height:34px;padding:7px 9px}.toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}.toolbar .actions{margin-left:auto}.model-test-detail,.model-tests-page{max-width:none}.model-choice-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.model-choice,.test-page-choice{align-items:center;border:1px solid var(--line);border-radius:8px;cursor:pointer;display:flex;gap:10px;min-width:0;padding:10px 12px}.model-choice:has(input:checked),.test-page-choice.selected{background:#ecfdf5;border-color:#5eead4}.model-choice span{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;min-width:0;overflow-wrap:anywhere}.test-selection-summary{align-items:flex-end;display:grid;grid-gap:2px;gap:2px;text-align:right}.test-page-choice small,.test-selection-summary span{color:var(--muted)}.test-page-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));max-height:430px;overflow-y:auto;padding-right:4px}.test-page-choice span{display:grid;grid-gap:3px;gap:3px;min-width:0}.model-test-history{min-width:980px}.model-list-cell{max-width:380px;overflow-wrap:anywhere}.compact-button{min-height:34px;padding:7px 10px}.score-table{min-width:1200px}.run-metadata-table{min-width:1400px}.score-table small{color:var(--muted);white-space:nowrap}.toggle-label{align-items:center;display:flex;font-weight:700;gap:8px}.model-comparison-wrap{max-height:68vh}.model-comparison-table{min-width:1100px}.model-comparison-table th{background:var(--panel);position:-webkit-sticky;position:sticky;top:0;z-index:1}.reference-cell{background:#f3f4f6;font-weight:700}.comparison-match{background:#f0fdf4;color:var(--ok)}.comparison-mismatch{background:#fff1f2;color:var(--danger);font-weight:800}.comparison-pending{background:#f3f4f6;color:var(--muted);font-style:italic}.status-queued{background:#e6eaf0;color:var(--ink)}.status-running{background:#dbeafe;color:#1d4ed8}.status-completed{background:#dcfce7;color:var(--ok)}.status-cancelled,.status-completed_with_errors,.status-failed{background:#fee2e2;color:var(--danger)}.modal-backdrop{align-items:flex-start;background:rgba(16,24,32,.62);bottom:0;display:flex;justify-content:center;left:0;overflow-y:auto;padding:32px 16px;position:fixed;right:0;top:0;z-index:20}.modal-panel{background:var(--panel);border-radius:8px;box-shadow:0 20px 80px rgba(0,0,0,.28);display:grid;grid-gap:14px;gap:14px;max-width:900px;padding:18px;width:min(900px,100%)}@media (max-width:680px){.wide-field{grid-column:auto}}