:root{color-scheme:light;--bg:#f5f7fb;--card:#fff;--ink:#172033;--muted:#687386;--line:#e4e9f2;--brand:#3157d5;--danger:#b42318}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif}header{min-height:64px;padding:0 max(24px,calc((100% - 1080px)/2));display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:#101b38;color:#bdc8e8}header a{color:#fff;font-size:19px;font-weight:750;text-decoration:none}header nav{display:flex;gap:14px;margin-left:auto}header nav a{font-size:14px;font-weight:650;color:#bdc8e8}main{max-width:1080px;margin:28px auto;padding:0 18px}.card,.subcard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:24px;margin-bottom:20px;box-shadow:0 6px 25px rgba(31,46,82,.05)}.subcard{padding:18px;margin-bottom:14px}h1,h2{margin:0 0 10px}h1{font-size:24px}h2{font-size:19px}.muted,.empty{color:var(--muted)}.mono{font-family:ui-monospace,monospace}.row,.actions,.inline-actions{display:flex;align-items:center;justify-content:space-between;gap:16px}.wrap{flex-wrap:wrap}.upload-card form{display:flex;align-items:end;gap:14px;margin-top:18px}.upload-card label{flex:1;font-weight:650}.upload-card input,.stack-form input,.stack-form select,.search input{display:block;width:100%;margin-top:7px;padding:11px;border:1px solid var(--line);border-radius:9px;background:#fafbfe}button,.button{border:0;border-radius:9px;padding:10px 15px;background:var(--brand);color:#fff;font-weight:700;text-decoration:none;cursor:pointer;white-space:nowrap}.secondary{background:#edf1fb;color:#294394}.danger{background:#fff1f0;color:var(--danger);border:1px solid #f7c7c3}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;border-bottom:1px solid var(--line);padding:12px 10px}th{font-size:12px;color:var(--muted);text-transform:uppercase}td a{color:#274fc4;font-weight:650;text-decoration:none}.status{display:inline-flex;padding:5px 9px;border-radius:99px;background:#e9edf5;font-size:12px;font-weight:800}.status-completed{background:#dcfae6;color:#087443}.status-failed,.status-cancelled{background:#fee4e2;color:#b42318}.status-transcribing,.status-downloading,.status-submitting,.status-running{background:#e0edff;color:#175cd3}.status-wait_retry,.status-wait_login,.status-pending{background:#fff1d6;color:#9a5b00}.back{display:inline-block;margin-bottom:14px;color:#3d558d;text-decoration:none}.meta{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.meta.compact{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.meta div{padding:12px;background:#f8f9fc;border-radius:9px}.meta dt{color:var(--muted);font-size:12px}.meta dd{margin:4px 0 0}.actions{justify-content:flex-start;margin-top:18px}.actions form,.inline-actions form{margin:0}.error{margin-top:16px;padding:13px;background:#fff1f0;color:var(--danger);border-radius:9px}.error p{margin:5px 0 0}.error-text{color:var(--danger)!important}.count{color:var(--muted);font-size:13px}.transcript article{display:grid;grid-template-columns:85px 95px 1fr;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.transcript article p{margin:0}.transcript time{color:var(--muted);font-family:ui-monospace,monospace}.events{padding-left:22px}.events li{padding:6px}.events span,.events time{margin-left:12px;color:var(--muted)}.speaker-forms{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.speaker-forms form,.search,.inline-form{display:flex;align-items:end;gap:9px}.speaker-forms label,.stack-form label{flex:1;font-weight:650}.search input{max-width:560px}.search{align-items:center}.grid-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.stack-form{display:grid;gap:12px}.stack-list{display:grid;gap:14px}.checkbox{display:flex;align-items:center;gap:8px;font-weight:650}.checkbox input{width:auto;margin:0}.json-result{margin:0;padding:14px;background:#0f172a;color:#d8e2ff;border-radius:10px;overflow:auto;white-space:pre-wrap;word-break:break-word}.gap-top{margin-top:16px}.row-links{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.row-links form{display:inline;margin:0}.link-button{background:none;border:0;padding:0;color:#274fc4;font-weight:650;font-size:15px;cursor:pointer;text-decoration:none}.link-button:hover{text-decoration:underline}.link-button.danger{background:none;border:0;padding:0;color:var(--danger)}.upload-actions{display:flex;gap:10px;margin-top:14px}.upload-progress{margin-top:16px;padding:14px;background:#f8f9fc;border-radius:10px}.upload-progress progress{display:block;width:100%;height:14px;margin-top:10px;accent-color:var(--brand)}.upload-progress p{margin:8px 0 0}.legacy-upload{margin-top:20px;border-top:1px solid var(--line);padding-top:14px}.legacy-upload summary{cursor:pointer;color:var(--muted);font-weight:650}.legacy-upload form{margin-top:12px}@media(max-width:700px){header span{display:none}.header nav{margin-left:0}.upload-card form,.inline-form{display:block}.upload-card button,.inline-form button{width:100%;margin-top:12px}.upload-actions{display:block}.meta,.grid-two,.resource-metrics{grid-template-columns:1fr}.transcript article{grid-template-columns:70px 1fr}.transcript article p{grid-column:1/-1}.row{align-items:flex-start}.actions,.inline-actions{flex-wrap:wrap}}

/* ---- Dashboard and analysis pages (§28-§35) ---- */
.cards { display: flex; flex-wrap: wrap; gap: 12px; margin: 16px 0; }
.card { flex: 1 1 160px; border: 1px solid #d8dee6; border-radius: 8px; padding: 12px 14px; background: #fff; }
.card-label { display: block; font-size: 12px; color: #667085; }
.card strong { display: block; font-size: 26px; line-height: 1.3; }
.card-note { font-size: 12px; color: #667085; }
.resource-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin:16px 0 22px; }
.resource-card { background:#fff; border:1px solid #d8dee6; border-radius:10px; padding:14px; }
.resource-card.resource-normal { border-color:#b7e0c2; }
.resource-card.resource-attention { border-color:#f0dcae; background:#fffaf0; }
.resource-card.resource-tight { border-color:#f5c2bd; background:#fff4f2; }
.resource-card.resource-disabled,.resource-card.resource-unknown { border-color:#dcdce0; background:#f8f9fb; }
.resource-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:10px; }
.resource-head h3 { margin:0; font-size:16px; }
.resource-metrics { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:0; }
.resource-metrics div { padding:10px; background:#f8f9fc; border-radius:8px; }
.resource-metrics dt { color:#667085; font-size:12px; }
.resource-metrics dd { margin:4px 0 0; font-weight:650; }
.resource-pill.resource-normal { background:#e6f4ea; border-color:#b7e0c2; color:#1b5e33; }
.resource-pill.resource-attention { background:#fff4e5; border-color:#ffd8a8; color:#8a5300; }
.resource-pill.resource-tight { background:#fdecea; border-color:#f5c2bd; color:#8a1c12; }
.resource-pill.resource-disabled,.resource-pill.resource-unknown { background:#f1f1f3; border-color:#dcdce0; color:#5c5c66; }

.pill-list { display: flex; flex-wrap: wrap; gap: 6px; padding: 0; list-style: none; }
.pill { display: inline-block; font-size: 12px; padding: 2px 8px; border-radius: 10px;
        background: #eef1f5; color: #344054; border: 1px solid #dde1e7; }
.pill.recur { background: #fff4e5; border-color: #ffd8a8; color: #8a5300; }
.rel-work_core > .pill.rel-work_core, .pill.rel-work_core { background: #e6f4ea; border-color: #b7e0c2; color: #1b5e33; }
.pill.rel-work_related { background: #e8f0fe; border-color: #c3d7fb; color: #1a4b8f; }
.pill.rel-unknown { background: #fdf3e3; border-color: #f0dcae; color: #7a5b12; }
.pill.rel-casual { background: #f1f1f3; border-color: #dcdce0; color: #5c5c66; }

.subnav { display: flex; gap: 14px; margin: 8px 0 16px; border-bottom: 1px solid #e4e8ee; padding-bottom: 8px; }
.subnav a.on { font-weight: 600; border-bottom: 2px solid #2f6fed; }
.crumbs { margin-bottom: 8px; font-size: 13px; }
.run-picker, .filter, .search { margin: 12px 0; display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.filter-label { font-size: 13px; color: #667085; }
.check { font-size: 13px; display: inline-flex; align-items: center; gap: 4px; }

.topic-list { list-style: none; padding: 0; }
.topic-item { border: 1px solid #e0e5ec; border-left-width: 4px; border-radius: 6px;
              padding: 10px 12px; margin-bottom: 10px; background: #fff; }
.topic-item.rel-work_core { border-left-color: #34a853; }
.topic-item.rel-work_related { border-left-color: #4285f4; }
.topic-item.rel-unknown { border-left-color: #e8b931; }
.topic-item.rel-casual { border-left-color: #b9bcc4; }
.topic-head { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.topic-title { font-weight: 600; font-size: 15px; }
.topic-summary { margin: 6px 0 4px; color: #344054; }
.topic-times { display: flex; flex-wrap: wrap; gap: 10px; font-size: 12px; margin: 4px 0 0; }

.timeline { list-style: none; padding: 0; }
.timeline-item { display: flex; gap: 12px; padding: 8px 10px; border-left: 3px solid #dfe3e9;
                 margin-bottom: 4px; align-items: baseline; flex-wrap: wrap; }
.timeline-item.rel-work_core { border-left-color: #34a853; }
.timeline-item.rel-work_related { border-left-color: #4285f4; }
.timeline-item.rel-unknown { border-left-color: #e8b931; }
.timeline-item.rel-casual { border-left-color: #b9bcc4; }
.timeline-item.unanchored { background: #fffaf0; }
.tl-time { font-variant-numeric: tabular-nums; min-width: 76px; font-size: 13px; }
.tl-body { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }

.stages { padding-left: 20px; }
.stages li { margin-bottom: 6px; }
.stage-time { font-variant-numeric: tabular-nums; margin-right: 6px; }
.final-position { padding: 8px 10px; background: #f6f8fb; border-radius: 6px; }
.stage-progress { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 12px; margin: 12px 0; }
.stage-progress li { font-size: 13px; color: #667085; }
.stage-progress li.done { color: #1b5e33; }
.stage-progress li.running { color: #1a4b8f; font-weight: 600; }
.stage-mark { margin-right: 4px; }

.quotes, .matches, .times { list-style: none; padding: 0; }
.quotes li, .matches li { display: flex; gap: 10px; padding: 6px 0; border-bottom: 1px solid #f0f2f5; flex-wrap: wrap; }
.quote-time, .line-time { font-variant-numeric: tabular-nums; color: #2f6fed; min-width: 76px; font-size: 13px; }
.transcript { list-style: none; padding: 0; }
.transcript .line { display: flex; gap: 10px; padding: 4px 6px; flex-wrap: wrap; }
.transcript .line.focus { background: #fff6d8; border-radius: 4px; }
.speaker { color: #667085; font-size: 13px; min-width: 72px; }
.prose { white-space: pre-wrap; }
.lead { font-size: 15px; }

.alert { background: #fdecea; border: 1px solid #f5c2bd; color: #8a1c12; padding: 8px 10px; border-radius: 6px; }
.warn { color: #8a5300; }
.empty { color: #667085; padding: 10px 0; }
.muted { color: #667085; }
.small { font-size: 12px; }
.row-links a { margin-right: 8px; font-size: 13px; }
.pager { display: flex; gap: 14px; align-items: center; margin: 14px 0; }

/* Global search (§33). Hits are grouped per recording so a day reads in order. */
.search-global { flex-wrap: wrap; gap: 10px; }
.search-global input[type="search"] { flex: 1 1 260px; max-width: 420px; }
.search-global select { max-width: 220px; }
.search-global label.inline { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #667085; }
.search-global input[type="date"] { padding: 8px; border: 1px solid var(--line); border-radius: 8px; }
.search-group { margin: 18px 0; padding: 14px 16px; background: #fff; border: 1px solid var(--line); border-radius: 12px; }
.search-group h2 { font-size: 16px; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.search-group h2 a { color: #274fc4; text-decoration: none; }
table.compact td, table.compact th { font-size: 13px; padding: 4px 8px; }
tr.row-warn { background: #fffaf0; }
