:root{--bg: #ffffff;--page: #f6f6f4;--panel: #ffffff;--fg: #1a1a1a;--muted: #6b7280;--hint: #9ca3af;--border: #e7e7e4;--line: #f1f1ef;--accent: #111111;--active: #eef2ff;--active-fg: #3730a3;--ok: #0f766e;--warn: #b45309;--gap: #b91c1c}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font:14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--fg);background:var(--page)}.layout{display:flex;height:100%}.sidebar{width:220px;flex:none;background:var(--bg);border-right:1px solid var(--border);padding:16px 12px;display:flex;flex-direction:column;gap:3px}.brand{font-size:15px;font-weight:600;padding:2px 8px 14px}.nav-label{font-size:11px;color:var(--hint);padding:0 8px 6px}.ws{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:none;background:none;padding:8px 10px;border-radius:8px;cursor:pointer;color:var(--muted);font:inherit}.ws:hover{background:var(--line)}.ws.active{background:var(--active);color:var(--active-fg);font-weight:500}.ws-name{text-transform:capitalize;flex:1}.ws .ti{font-size:16px}.nav-bottom{margin-top:auto;border-top:1px solid var(--border);padding-top:8px;display:flex;flex-direction:column;gap:2px}.dbstat{font-size:12px;color:var(--muted);padding:10px 10px 0;display:flex;align-items:center;gap:6px}.dot{width:8px;height:8px;border-radius:50%}.dot.ok{background:var(--ok)}.dot.bad{background:var(--gap)}.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.ws-head{display:flex;align-items:center;gap:10px;padding:18px 24px 0}.ws-head h1{font-size:20px;font-weight:600;margin:0;text-transform:capitalize}.provider{font-size:12px;color:var(--muted);background:var(--line);padding:2px 8px;border-radius:999px}.spacer{flex:1}.muted{color:var(--muted)}.error{margin:14px 24px 0;background:#fef2f2;color:var(--gap);padding:10px 12px;border-radius:8px}.error code{background:#fee2e2;padding:1px 5px;border-radius:4px}.tabs{display:flex;gap:20px;padding:12px 24px 0;border-bottom:1px solid var(--border)}.tab{border:none;background:none;padding:8px 0;border-bottom:2px solid transparent;cursor:pointer;color:var(--muted);font:inherit;text-transform:capitalize}.tab:hover{color:var(--fg)}.tab.active{color:var(--fg);border-bottom-color:var(--accent);font-weight:500}.view{flex:1;overflow:auto;padding:18px 24px 40px}.empty{color:var(--muted);padding:24px;text-align:center;border:1px dashed var(--border);border-radius:12px}.pad{padding:18px 0}.coverage{display:flex;flex-direction:column;gap:10px;max-width:820px}.cs-card{border:1px solid var(--border);border-radius:12px;padding:12px 14px;background:var(--panel)}.cs-head{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;cursor:pointer;font:inherit;padding:0}.cs-head .ti{font-size:16px;color:var(--muted)}.cs-name{font-weight:500}.pct{width:38px;text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.bar{height:6px;border-radius:999px;background:var(--line);overflow:hidden;margin:10px 0 0}.fill{height:100%;border-radius:999px;transition:width .4s ease}.coverage{max-width:940px}.cs-season{color:var(--muted);font-size:13px}.cs-items{color:var(--muted);font-size:12px}.num{font-variant-numeric:tabular-nums}.ok{color:var(--ok);font-weight:500}.warn{color:var(--warn);font-weight:500}.ready{color:var(--ok);font-weight:600;background:#ecfdf5;border:1px solid #a7f3d0;padding:2px 9px;border-radius:999px;font-size:12px}.dataview{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.dv-tabs{display:flex;gap:6px;margin-bottom:10px}.dv-tabs button{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:5px 12px;font:inherit;font-size:13px;cursor:pointer;color:var(--muted);display:flex;align-items:center;gap:6px}.dv-tabs button.on{background:var(--accent);color:#fff;border-color:var(--accent)}.dv-tabs .cnt{font-size:11px;opacity:.7;font-variant-numeric:tabular-nums}.dv-pad{padding:14px 2px}.dv-scroll{max-height:440px;overflow:auto;border:1px solid var(--line);border-radius:10px}table.standings{width:100%;border-collapse:collapse;font-size:13px}table.standings th{position:sticky;top:0;background:var(--panel);text-align:left;color:var(--muted);font-weight:500;padding:8px 10px;border-bottom:1px solid var(--border);font-size:12px}table.standings th.r,table.standings td.r{text-align:right}table.standings td{padding:7px 10px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}table.standings tr:last-child td{border-bottom:none}table.standings td.pos{color:var(--muted);width:28px}table.standings td.team{font-weight:500}table.standings td.pts{font-weight:600}table.standings td.form{white-space:nowrap}.fm{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:4px;font-size:10px;font-weight:700;color:#fff;margin-right:3px}.fm.W{background:var(--ok)}.fm.D{background:var(--hint)}.fm.L{background:var(--gap)}.fixtures .fx-row{display:grid;grid-template-columns:92px 1fr 56px 64px;align-items:center;gap:10px;padding:7px 12px;border-bottom:1px solid var(--line);font-size:13px}.fixtures .fx-row:last-child{border-bottom:none}.fx-date{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.fx-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fx-score{text-align:center;font-weight:600;font-variant-numeric:tabular-nums}.fx-score.none{color:var(--hint);font-weight:400}.fx-state{text-align:right;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.03em}.dv-records{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 20px}.rec-row{display:flex;align-items:center;gap:8px;font-size:13px;padding:3px 0}.rec-row .ti{font-size:15px}.rec-name{color:var(--muted)}.tier{font-size:11px;padding:1px 6px;border-radius:4px}.tier.reference{background:#eef2ff;color:#3730a3}.tier.season{background:#ecfdf5;color:#065f46}.tier.event{background:#fff7ed;color:#9a3412}.ops{display:flex;flex-direction:column;gap:16px;max-width:720px}.card{border:1px solid var(--border);border-radius:12px;padding:16px 18px;background:var(--panel)}.card h3{margin:0 0 12px;font-size:15px;font-weight:600}.sequence{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-wrap:wrap;gap:8px}.sequence li{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:13px}.step{background:#111;color:#fff;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:11px;flex:none}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.controls input,.filter{border:1px solid var(--border);border-radius:8px;padding:7px 10px;font:inherit}.controls input{width:140px}.controls button{border:1px solid var(--border);border-radius:8px;padding:7px 14px;font:inherit;cursor:pointer;background:var(--bg)}.controls button:disabled{opacity:.5;cursor:not-allowed}.controls .primary{background:#111;color:#fff;border-color:#111}.status{font-size:12px;color:var(--muted);margin:10px 0 0}.evidence{max-width:900px}.filter{width:320px;margin-bottom:14px}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:left;color:var(--muted);font-weight:500;border-bottom:1px solid var(--border);padding:7px 8px}table.data td{padding:7px 8px;border-bottom:1px solid var(--line)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--muted)}.sport-switch{display:inline-flex;gap:2px;background:var(--line);border-radius:8px;padding:3px}.sw{border:none;background:none;padding:5px 12px;border-radius:6px;cursor:pointer;font:inherit;font-size:13px;color:var(--muted);text-transform:capitalize}.sw.on{background:var(--bg);color:var(--fg);font-weight:500;box-shadow:0 1px 2px #0000000d}.status-badge{font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap;border:1px solid transparent}.tone-idle{background:#f1f5f9;color:#64748b}.tone-info{background:#dbeafe;color:#1e40af}.tone-warn{background:#fef3c7;color:#92400e}.tone-ok{background:#ecfdf5;color:#065f46}.tone-ready{background:#ecfdf5;color:#065f46;border-color:#6ee7b7}.tone-done{background:#eef2ff;color:#3730a3}.tone-bad{background:#fee2e2;color:#991b1b}.overview{max-width:980px;display:flex;flex-direction:column;gap:18px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.stat{border:1px solid var(--border);border-radius:12px;padding:14px 16px;background:var(--panel)}.stat-value{font-size:26px;font-weight:600;font-variant-numeric:tabular-nums}.stat-label{font-size:12px;color:var(--muted);margin-top:2px}.stat.tone-bad .stat-value{color:var(--gap)}.stat.tone-warn .stat-value{color:var(--warn)}.stat.tone-ok .stat-value,.stat.tone-ready .stat-value{color:var(--ok)}.panel{border:1px solid var(--border);border-radius:12px;background:var(--panel);padding:14px 16px}.panel>h3{margin:0 0 12px;font-size:14px;font-weight:600}.panel-head{display:flex;align-items:center;margin-bottom:8px}.panel-head h3{margin:0;font-size:14px;font-weight:600;flex:1}.empty-inline{padding:8px 0}.scope-list{list-style:none;margin:0;padding:0}.scope-list li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}.scope-list li:last-child{border-bottom:none}.scope-link{border:none;background:none;padding:0;font:inherit;cursor:pointer;display:flex;align-items:baseline;gap:8px;text-align:left}.scope-link:disabled{cursor:default}.scope-name{font-weight:500;color:var(--fg)}.catalog{max-width:1040px}.catalog-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.catalog-head p{margin:0;flex:1}.catalog-cols{display:grid;grid-template-columns:360px 1fr;gap:18px;align-items:start}.cat-comps .filter{width:100%;margin-bottom:10px}.comp-list,.season-list{list-style:none;margin:0;padding:0;max-height:560px;overflow:auto}.comp{display:grid;grid-template-columns:1fr auto;grid-template-areas:"name id" "meta id";width:100%;text-align:left;border:1px solid transparent;background:none;border-radius:8px;padding:8px 10px;cursor:pointer;font:inherit;gap:1px 8px}.comp:hover{background:var(--line)}.comp.on{background:#f8fafc;border-color:#111;box-shadow:inset 3px 0 #111}.comp-name{grid-area:name;font-weight:500}.comp.on .comp-name{font-weight:650}.comp-meta{grid-area:meta;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}.comp-id{grid-area:id;align-self:center;font-size:11px;color:var(--hint);font-family:ui-monospace,monospace}.chip{font-size:10px;font-weight:600;padding:1px 6px;border-radius:4px;background:var(--line);color:var(--muted)}.ok-chip{background:#ecfdf5;color:#065f46}.progress-chip{background:#dbeafe;color:#1e40af}.warn-chip{background:#fef3c7;color:#92400e}.fail-chip{background:#fee2e2;color:#991b1b}.spinner{width:12px;height:12px;border:2px solid #bfdbfe;border-top-color:#1e40af;border-radius:50%;animation:spin .8s linear infinite;flex:none}@keyframes spin{to{transform:rotate(360deg)}}.cat-seasons{border-left:1px solid var(--line);padding-left:18px;min-height:200px}.seasons-title{margin:0 0 10px;font-size:14px;font-weight:600;display:flex;align-items:baseline;gap:8px}.season{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:1px solid transparent;background:none;border-radius:8px;padding:8px 10px;cursor:pointer;font:inherit}.season:hover{background:var(--line)}.season.on{background:var(--active);border-color:#c7d2fe}.season-name{font-weight:500;flex:1}.empty.tall{padding:60px 24px}.preview{margin-top:16px;border:1px solid var(--border);border-radius:12px;padding:14px 16px;background:var(--bg)}.preview-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px}.preview-head>div:first-child{flex:1}.preview-title{font-weight:600;font-size:15px}.preview-actions{display:flex;gap:8px}.btn{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:7px 14px;font:inherit;font-size:13px;cursor:pointer}.btn:hover:not(:disabled){background:var(--line)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover:not(:disabled){opacity:.9;background:var(--accent)}.btn.sm{padding:4px 10px;font-size:12px}.coverage-table-wrap{overflow:auto}.scopes-table{width:100%;border-collapse:collapse;font-size:13px;max-width:1100px}.scopes-table th{text-align:left;color:var(--muted);font-weight:500;font-size:12px;padding:8px 10px;border-bottom:1px solid var(--border)}.scopes-table th.r,.scopes-table td.r{text-align:right}.scopes-table td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle}.scopes-table .comp-cell{font-weight:500}.scopes-table .num{font-variant-numeric:tabular-nums}.actions-col{white-space:nowrap}.actions-col .link{margin-right:10px}.scope-detail{max-width:1000px}.back{display:inline-block;margin-bottom:12px}.scope-detail-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.scope-detail-head h2{margin:0;font-size:20px;font-weight:600}.scope-actions{display:flex;align-items:center;gap:8px;margin-bottom:18px;flex-wrap:wrap}.timeline{list-style:none;display:flex;flex-wrap:wrap;gap:0;margin:0 0 18px;padding:0}.timeline li{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);padding-right:18px;position:relative}.timeline li:after{content:"→";position:absolute;right:5px;color:var(--hint)}.timeline li:last-child:after{content:""}.timeline .tl-dot{width:9px;height:9px;border-radius:50%;background:var(--border)}.timeline li.done{color:var(--fg)}.timeline li.done .tl-dot{background:var(--ok)}.matrix{width:100%;border-collapse:collapse;font-size:13px}.matrix th{text-align:left;color:var(--muted);font-weight:500;font-size:12px;padding:7px 10px;border-bottom:1px solid var(--border)}.matrix th.r,.matrix td.r{text-align:right}.matrix td{padding:7px 10px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}.matrix .res-cell{font-weight:500}.req{font-size:11px;color:var(--active-fg);background:var(--active);padding:1px 7px;border-radius:4px}.jobs-view,.gaps-view{max-width:820px;display:flex;flex-direction:column;gap:12px}.jobs-toolbar{border:1px solid var(--border);border-radius:12px;background:var(--panel);padding:10px 14px;display:flex;align-items:center;gap:10px}.jobs-toolbar>div:first-child{display:flex;align-items:baseline;gap:8px}.worker-pill{font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;white-space:nowrap}.worker-pill.online{background:#ecfdf5;color:#065f46}.worker-pill.offline{background:#fee2e2;color:#991b1b}.secondary{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:6px 12px;font:inherit;font-size:13px;cursor:pointer}.secondary:hover:not(:disabled){background:var(--line)}.secondary:disabled{opacity:.5;cursor:not-allowed}.job-group,.gap-group{border:1px solid var(--border);border-radius:12px;background:var(--panel);padding:12px 14px}.job-group-head,.gap-group-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.job-rows,.gap-rows{list-style:none;margin:0;padding:0}.job-rows li,.gap-rows li{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--line);font-size:13px}.job-rows .res{color:var(--muted)}.res-name{min-width:120px;font-weight:500}.job-state-counts,.gap-states{display:flex;flex-wrap:wrap;gap:5px;align-items:center;color:var(--muted)}.gap-states span{font-size:12px}.job-error{max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gap-rows li{gap:8px}.gap-count{display:inline-grid;place-items:center;min-width:26px;height:20px;padding:0 6px;border-radius:6px;background:#fef3c7;color:#92400e;font-weight:600;font-size:12px}.jobs-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.badge{font-size:11px;padding:2px 8px;border-radius:999px;white-space:nowrap}.badge.queued{background:#fef3c7;color:#92400e}.badge.running{background:#dbeafe;color:#1e40af}.badge.succeeded,.badge.resolved{background:#d1fae5;color:#065f46}.badge.empty,.badge.not_populated{background:#f1f5f9;color:#64748b}.badge.failed{background:#fee2e2;color:#991b1b}.joblist{list-style:none;margin:0;padding:0}.joblist li{display:flex;align-items:center;gap:10px;padding:5px 0;border-bottom:1px solid var(--line);font-size:13px}.joblist li:last-child{border-bottom:none}.joblist .res{color:var(--muted)}.link{background:none;border:none;color:var(--muted);cursor:pointer;text-decoration:underline;font:inherit;padding:0}.link:hover{color:var(--fg)}
