
:root{--red:#b30000;--black:#0b0b0b;--ink:#171717;--muted:#737373;--line:#e5e5e5;--bg:#f4f4f2;--panel:#fff;--ok:#1f7a43;--warn:#a86700;--fail:#aa1c1c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Montserrat,Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.topbar{height:68px;background:var(--black);color:#fff;display:flex;align-items:center;padding:0 28px;gap:34px;position:sticky;top:0;z-index:20;border-bottom:4px solid var(--red)}.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-weight:800;letter-spacing:.08em}.brand-mark{background:var(--red);padding:9px 10px;font-weight:900;letter-spacing:-.04em}.topbar nav{display:flex;gap:22px}.topbar nav a{color:#d8d8d8;text-decoration:none;font-size:14px}.topbar nav a:hover{color:#fff}.scope-switch{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:12px;color:#aaa}.scope-switch select{background:#181818;color:#fff;border:1px solid #444;padding:7px 28px 7px 10px;border-radius:4px}.shell{max-width:1380px;margin:0 auto;padding:34px 28px 70px}.footer{padding:18px 28px;background:#111;color:#777;font-size:12px;text-align:center}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:26px}.page-head.compact{margin-top:12px}.page-head h1{font-size:38px;line-height:1.04;margin:3px 0 8px;letter-spacing:-.035em}.page-head p{margin:0;color:var(--muted);max-width:820px}.eyebrow{font-weight:800;font-size:11px;letter-spacing:.18em;color:var(--red)}.back{display:inline-block;color:var(--muted);text-decoration:none;margin-bottom:8px}.segmented{display:flex;border:1px solid var(--line);background:#fff;padding:3px}.segmented a{padding:8px 14px;text-decoration:none;color:#555;font-size:13px}.segmented a.active{background:#111;color:#fff}.metric-row{display:flex;gap:12px;margin-bottom:18px}.metric{background:#fff;border:1px solid var(--line);min-width:150px;padding:15px 18px;display:flex;gap:8px;align-items:baseline}.metric strong{font-size:24px}.metric span{font-size:12px;color:var(--muted)}.stack{display:grid;gap:12px}.radar-card,.editor-card,.panel{background:var(--panel);border:1px solid var(--line);box-shadow:0 1px 0 rgba(0,0,0,.02)}.radar-card,.editor-card{padding:20px 22px;border-left:4px solid transparent}.radar-card:hover,.editor-card:hover{border-left-color:var(--red)}.radar-card h2,.editor-card h2{font-size:20px;margin:10px 0 8px}.radar-card h2 a,.editor-card h2 a{color:var(--ink);text-decoration:none}.radar-card p,.editor-card p{color:#555;line-height:1.55}.card-meta,.card-foot{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:11px;color:var(--muted)}.card-foot{border-top:1px solid #eee;padding-top:12px;margin-top:15px}.card-foot a{margin-left:auto;color:var(--red);text-decoration:none;font-weight:700}.badge,.gate{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:800;letter-spacing:.06em}.badge.direct{background:#ffe5e5;color:#9b1111}.badge.context{background:#fff1d9;color:#8d5500}.badge.industry,.badge.neutral{background:#eee;color:#555}.gate.pass{background:#e6f4eb;color:var(--ok)}.gate.review{background:#fff1d9;color:var(--warn)}.gate.fail{background:#ffe5e5;color:var(--fail)}.gate.big{padding:8px 12px;font-size:12px}.two-col{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,.7fr);gap:18px;align-items:start}.editor-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(360px,.7fr);gap:18px;align-items:start}.panel{padding:22px}.sticky{position:sticky;top:92px}.panel h3{margin-top:0}.panel h4{margin:22px 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.08em}.facts-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:16px}.facts-grid div{padding:10px;background:#f6f6f4}.facts-grid span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase}.facts-grid strong{font-size:13px}.source-link{color:var(--red);font-weight:700;font-size:13px}.source-copy{white-space:pre-wrap;font-family:inherit;line-height:1.6;background:#f7f7f5;border:1px solid #e7e7e2;padding:16px;margin-top:16px;max-height:500px;overflow:auto;font-size:13px}.source-copy.tall{max-height:720px}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #bbb;background:#fff;color:#111;text-decoration:none;padding:10px 14px;font-weight:750;font-size:13px;cursor:pointer;margin:5px 4px 5px 0}.button.primary{background:var(--red);border-color:var(--red);color:#fff}.button.secondary{background:#111;color:#fff;border-color:#111}.button.danger{color:#a11;border-color:#d99;background:#fff}.button:disabled{opacity:.35;cursor:not-allowed}.plain-list,.version-list{padding-left:18px;font-size:13px}.version-list{list-style:none;padding:0}.version-list li{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid #eee}.version-list a{color:#111;text-decoration:none}.runtime{display:grid;grid-template-columns:70px 1fr 12px;gap:8px;padding:8px 0;border-bottom:1px solid #eee;align-items:center;font-size:12px}.runtime span{color:var(--muted)}.dot{width:9px;height:9px;border-radius:50%;background:#bbb}.dot.ok{background:var(--ok)}label{display:block;font-size:12px;font-weight:700;margin-bottom:14px}input,textarea{display:block;width:100%;margin-top:6px;border:1px solid #ccc;background:#fff;padding:11px;font:inherit;font-size:14px}textarea{line-height:1.55;resize:vertical}.form-row{display:flex;gap:12px}.form-row label{min-width:180px}.form-row .grow{flex:1}.verify-score{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.issue-list{padding-left:18px;font-size:12px;line-height:1.5}.issue-list.hard{color:#8d1717}.issue-list.warn{color:#7b570f}.issue-list small{display:block;color:#777;margin-top:4px}.quiet{color:var(--muted);font-size:13px}.publication{margin-top:18px;padding:10px;background:#f4f4f2;font-size:12px}.source-details{margin-top:18px}.source-details summary{cursor:pointer;font-weight:800}.flash{padding:12px 15px;margin-bottom:18px;border-left:4px solid}.flash.success{background:#eaf5ee;border-color:var(--ok)}.flash.error{background:#fff0f0;border-color:var(--fail);color:#7f1111}.empty{padding:40px;text-align:center;color:var(--muted);background:#fff;border:1px dashed #ccc}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line)}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:12px;border-bottom:1px solid #eee;vertical-align:top}th{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:#fafafa}td small{display:block;color:var(--muted);margin-top:4px}.error-page pre{white-space:pre-wrap;background:#fff1f1;padding:14px}.htmx-indicator{display:none}.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{display:inline}.htmx-request{opacity:.75}@media(max-width:900px){.topbar{padding:0 14px;gap:14px}.brand span:last-child{display:none}.topbar nav{gap:10px}.shell{padding:24px 14px 60px}.two-col,.editor-layout{grid-template-columns:1fr}.sticky{position:static}.page-head{align-items:flex-start;flex-direction:column}.metric-row{overflow:auto}.facts-grid{grid-template-columns:1fr}.scope-switch span{display:none}}


/* 0.23.1 — radar information architecture */
.radar-tabs{flex-wrap:wrap}.bucket-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:750;letter-spacing:.03em;background:#efefed;color:#575757}.bucket-pill.editorial{background:#ffe8e8;color:#971515}.bucket-pill.matches{background:#e8eef6;color:#35546f}.bucket-pill.reference{background:#eee;color:#606060}.bucket-pill.other{background:#f3efe1;color:#756126}.radar-card.bucket-reference{background:#fafaf9}.radar-card.bucket-matches{border-left-color:#d7e1eb}.radar-card.actionable{border-left-color:var(--red)}.radar-reason{margin:9px 0 4px;color:#777;font-size:12px}.radar-reason strong{color:#444}.radar-excerpt{margin:8px 0 0!important;color:#404040!important;line-height:1.58!important}.detail-label-row{display:flex;gap:8px;align-items:center;margin-bottom:20px}.reason-callout{padding:13px 14px;background:#f5f5f2;border-left:3px solid var(--red);font-size:13px;line-height:1.5}.relevant-copy{font-size:15px;line-height:1.65;padding:17px 18px;background:#fbfbf8;border:1px solid #e6e6df;margin-bottom:24px}.raw-evidence{padding-top:18px;border-top:1px solid #eee}.raw-evidence summary{padding:8px 0}.suitability{padding:10px 12px;font-size:12px;font-weight:800;border-left:3px solid}.suitability.good{background:#fff0f0;border-color:var(--red);color:#851616}.suitability.info{background:#edf3f8;border-color:#557895;color:#35546f}.suitability.neutral{background:#f1f1ef;border-color:#aaa;color:#555}.evidence-panel h3:not(:first-child){margin-top:24px}@media(max-width:900px){.radar-tabs{width:100%}.radar-tabs a{flex:1;text-align:center;min-width:92px}.card-foot span:nth-child(3){display:none}}

.excerpt-kicker{margin-top:12px;margin-bottom:4px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#777}


/* 0.23.3 — readable match presentation */
.match-summary{display:grid;grid-template-columns:minmax(0,1fr) 116px minmax(0,1fr);gap:14px;align-items:stretch;margin:8px 0 14px}
.match-team{background:#f7f7f4;border:1px solid #e4e4de;padding:18px;min-height:104px;display:flex;flex-direction:column;justify-content:center}
.match-team span,.match-facts span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:7px}
.match-team strong{font-size:20px;line-height:1.18}
.match-team.away{text-align:right}
.match-score{background:#111;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px;text-align:center}
.match-score strong{font-size:31px;line-height:1;font-weight:900;letter-spacing:-.04em}
.match-score span{font-size:9px;line-height:1.2;text-transform:uppercase;letter-spacing:.06em;color:#aaa;margin-top:7px}
.match-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:10px}
.match-facts div{background:#f3f3f0;padding:10px 12px;min-height:62px}
.match-facts strong{font-size:13px;line-height:1.3}
.match-competition{padding:11px 13px;border-left:3px solid #557895;background:#edf3f8;color:#35546f;font-size:12px;line-height:1.45}
.match-inline{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:10px 0 2px;font-size:12px;color:#555}
.match-inline span{background:#f1f3f5;padding:5px 8px}
.match-inline strong{background:#111;color:#fff;padding:5px 9px;font-size:14px}
@media(max-width:700px){
  .match-summary{grid-template-columns:1fr}
  .match-team.away{text-align:left}
  .match-score{min-height:84px}
  .match-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* 0.23.4 — match facts + editorial recap builder */
.match-periods{display:flex;gap:12px;align-items:baseline;padding:10px 12px;background:#f7f7f4;border:1px solid #e7e7e2;margin-bottom:10px;font-size:12px}
.match-periods span{color:var(--muted);text-transform:uppercase;font-size:9px;letter-spacing:.08em}.match-periods strong{font-size:13px}
.recap-form{display:block}.recap-toolbar{display:flex;justify-content:space-between;gap:24px;align-items:center;background:#111;color:#fff;padding:16px 18px;margin-bottom:12px;border-left:4px solid var(--red);position:sticky;top:68px;z-index:12}
.recap-toolbar div{display:flex;flex-direction:column;gap:4px}.recap-toolbar strong{font-size:15px}.recap-toolbar span{font-size:12px;color:#aaa;max-width:760px}.recap-toolbar .button{margin:0;white-space:nowrap}
.match-select-card{position:relative;padding-left:58px}.match-selector{position:absolute;left:16px;top:18px;margin:0;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:9px;color:#777;cursor:pointer}.match-selector input{width:20px;height:20px;margin:0;accent-color:var(--red)}.match-selector span{font-weight:700;font-size:9px}
.editor-recap-meta{display:inline-flex;padding:6px 9px;background:#edf3f8;color:#35546f;font-size:11px;font-weight:700;margin:4px 0 8px}
.recap-summary{display:flex;justify-content:space-between;gap:16px;background:#111;color:#fff;padding:13px 15px;margin:14px 0}.recap-summary span{color:#bbb;font-size:12px}
.recap-match-list{display:grid;gap:7px}.recap-match-row{display:grid;grid-template-columns:130px minmax(0,1fr) 85px 150px;gap:12px;align-items:center;padding:12px 13px;background:#f7f7f4;border:1px solid #e7e7e2}.recap-date{font-size:12px;font-weight:700}.recap-date small,.recap-teams small{display:block;color:var(--muted);font-weight:400;margin-top:3px}.recap-score{font-size:22px;font-weight:900;text-align:center}.recap-score span{color:#aaa}.recap-outcome{font-size:11px;color:#555;text-align:right}
@media(max-width:800px){.recap-toolbar{position:static;align-items:flex-start;flex-direction:column}.match-select-card{padding-left:50px}.recap-match-row{grid-template-columns:1fr 80px}.recap-date,.recap-outcome{grid-column:1/-1;text-align:left}.recap-score{text-align:right}}

/* 0.23.4.1 — validation is an editable gate, not a lost generation */
.validation-help{font-size:12px;line-height:1.45;background:#fff6e6;border-left:3px solid #d99100;padding:10px 12px;margin:8px 0 10px}
.recap-no-score{display:flex;flex-direction:column;gap:5px;line-height:1.35}
.recap-no-score span{font-weight:400}

/* 0.23.5 — operational delete, distinct from editorial reject */
.delete-draft-zone{margin-top:14px;padding-top:12px;border-top:1px dashed #d7d7d2}
.button.delete{background:transparent;color:#7a7a76;border:1px solid #c9c9c4}
.button.delete:hover{color:#b00000;border-color:#b00000;background:#fff7f7}
.tiny{font-size:10px;line-height:1.35;margin:7px 0 0}


/* 0.23.6 — production login */
.user-menu{display:flex;align-items:center;gap:9px;margin-left:10px;color:#aaa;font-size:11px}
.user-menu form{margin:0}
.user-menu button{background:transparent;border:1px solid #444;color:#ddd;padding:5px 8px;cursor:pointer}
.user-menu button:hover{border-color:#d40000;color:#fff}
.login-page{min-height:100vh;background:#f3f3f0;border-top:4px solid #c90000}
.login-shell{width:min(440px,calc(100% - 32px));margin:12vh auto 0}
.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:18px;letter-spacing:.12em}
.login-card{background:#fff;border:1px solid #deded8;padding:28px}
.login-card h1{font-size:42px;margin:4px 0 8px}
.login-form{display:grid;gap:14px;margin-top:20px}
.login-form label{display:grid;gap:6px;font-size:12px;font-weight:700}
.login-form input{font:inherit;padding:11px 12px;border:1px solid #cfcfca;background:#fafaf8}
