:root{
  --bg:#F3F6FA; --surface:#FFFFFF; --ink:#101C33; --muted:#5C6B84; --line:#D3DBE7; --soft:#E9EEF5;
  --red:#C8202F; --blue:#1E5AA8; --gold:#B8860B; --silver:#7A8794; --bronze:#9C5B2E; --ok:#1F7A4D; --warn:#B7791F;
  --refbg:#FBEBEC; --on-medal:#fff;
  --display:"Barlow Condensed","Arial Narrow",Impact,sans-serif;
  --body:"Source Sans 3","Segoe UI",Helvetica,Arial,sans-serif;
  --mono:"IBM Plex Mono",Consolas,"Courier New",monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0C1424; --surface:#152036; --ink:#E6EDF7; --muted:#94A4BE; --line:#26344E; --soft:#1B2740;
    --red:#FF5F6B; --blue:#78A9FF; --gold:#E0B84A; --silver:#B7C2CF; --bronze:#D08A5A; --ok:#5BC48A; --warn:#E3B04B;
    --refbg:#3A1C24; --on-medal:#0C1424;
  }
}
:root[data-theme="dark"]{
  --bg:#0C1424; --surface:#152036; --ink:#E6EDF7; --muted:#94A4BE; --line:#26344E; --soft:#1B2740;
  --red:#FF5F6B; --blue:#78A9FF; --gold:#E0B84A; --silver:#B7C2CF; --bronze:#D08A5A; --ok:#5BC48A; --warn:#E3B04B;
  --refbg:#3A1C24; --on-medal:#0C1424;
}
*{box-sizing:border-box}
html{color-scheme:light dark}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.45}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
.num{font-variant-numeric:tabular-nums;text-align:right}
.mono{font-family:var(--mono);font-size:13px}
.muted{color:var(--muted)}
.small{font-size:13px}

/* En-tête */
.top{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.top-in{max-width:1240px;margin:0 auto;padding:10px 20px;display:flex;align-items:center;gap:20px}
.brand{font:700 26px/1 var(--display);letter-spacing:.01em;color:var(--ink);display:flex;align-items:baseline;gap:8px}
.brand small{font:600 10px var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.search{position:relative;flex:1;max-width:520px}
.search input{width:100%;padding:9px 12px 9px 36px;border:1px solid var(--line);border-radius:4px;background:var(--bg);color:var(--ink);font:15px var(--body)}
.search input:focus{outline:2px solid var(--blue);outline-offset:1px}
.search .kbd{position:absolute;right:8px;top:8px;font:500 11px var(--mono);color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:1px 5px}
.search .ico{position:absolute;left:11px;top:9px;color:var(--muted)}
.search-results{position:absolute;left:0;right:0;top:calc(100% + 4px);background:var(--surface);border:1px solid var(--line);border-radius:4px;box-shadow:0 8px 24px rgba(0,0,0,.12);z-index:30;max-height:70vh;overflow:auto}
.search-results:empty{display:none}
.hit{display:flex;justify-content:space-between;gap:12px;padding:8px 12px;border-bottom:1px solid var(--line);color:var(--ink)}
.hit:last-child{border-bottom:0}
.hit:hover,.hit:focus{background:var(--soft);text-decoration:none;outline:none}
.hit .k{font:600 10px var(--body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.nav{display:flex;gap:18px;font:600 13px var(--body);letter-spacing:.06em;text-transform:uppercase}
.nav a{color:var(--muted)}
.nav a.on,.nav a:hover{color:var(--ink);text-decoration:none}
.nav-toggle{display:none;font:600 13px var(--body);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:8px 12px;min-height:44px;cursor:pointer}
.nav-toggle[aria-expanded="true"]{background:var(--soft)}
@media (max-width:900px){
  /* tablette en portrait et téléphone : marque + Cabine + Menu sur la première ligne, recherche pleine largeur, navigation repliée */
  .top-in{flex-wrap:wrap;gap:10px 12px;padding:8px 14px}
  .brand{order:0;margin-right:auto}
  #cabine-toggle{order:1;min-height:44px;display:inline-flex;align-items:center;padding:0 12px}
  .nav-toggle{order:2;display:inline-block}
  .search{order:3;flex-basis:100%;max-width:none}
  .nav{order:4;flex-basis:100%;display:none;flex-direction:column;gap:0;border-top:1px solid var(--line);margin:0 -14px -8px;padding:4px 0}
  .nav.open{display:flex}
  .nav a{display:block;padding:12px 14px;min-height:44px;border-bottom:1px solid var(--line)}
  .nav a:last-child{border-bottom:0}
}

.wrap{max-width:1240px;margin:0 auto;padding:24px 20px 60px}
h1{font:700 36px/1.05 var(--display);margin:0;text-wrap:balance}
h2{font:700 22px/1.1 var(--display);margin:28px 0 10px;text-wrap:balance;display:flex;align-items:baseline;gap:10px}
h2 .n{font:600 12px var(--mono);color:var(--red);letter-spacing:.06em}
h3{font:600 17px/1.2 var(--display);margin:18px 0 8px}
.eyebrow{font:600 11px var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}

/* Fiche athlète */
.profile{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:20px;align-items:start;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:18px 20px}
.avatar{width:96px;height:96px;border-radius:50%;background:var(--soft) center/cover no-repeat;border:2px solid var(--line);display:flex;align-items:center;justify-content:center;font:700 34px var(--display);color:var(--muted)}
.profile .name{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}
.profile .name .last{text-transform:uppercase}
.facts{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:8px;font-size:14px;color:var(--muted)}
.facts b{color:var(--ink);font-weight:600}
.links{display:flex;flex-direction:column;gap:6px;font-size:13px;text-align:right}
@media (max-width:760px){.profile{grid-template-columns:64px 1fr}.links{grid-column:1/-1;flex-direction:row;text-align:left}.avatar{width:64px;height:64px}}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:14px 0 6px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:10px 12px}
.kpi b{display:block;font:700 30px/1 var(--display);font-variant-numeric:tabular-nums;margin-bottom:3px}
.kpi span{font-size:12px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.kpi.red b{color:var(--red)}

.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:18px 0 16px;overflow-x:auto}
.tabs a{font:600 14px var(--display);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:10px 14px;border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tabs a.on{color:var(--ink);border-bottom-color:var(--red);text-decoration:none}
.tabs a:hover{text-decoration:none;color:var(--ink)}

.tbl{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;border:1px solid var(--line);border-radius:4px;background:var(--surface);margin:0 0 16px;max-width:100%}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{padding:7px 10px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);white-space:nowrap}
th{font:600 11px var(--body);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);background:var(--soft);position:sticky;top:0}
tr:last-child td{border-bottom:0}
tr.total td{font-weight:600;background:var(--soft)}
td.num,th.num{font-variant-numeric:tabular-nums;text-align:right}
tr.p1 td.rank,tr.p1 td.rank a{color:var(--gold);font-weight:700}
tr.p2 td.rank{color:var(--silver);font-weight:700}
tr.p3 td.rank{color:var(--bronze);font-weight:700}
tr.off td{color:var(--muted)}
.rank-pill{display:inline-block;min-width:26px;text-align:center;font:600 13px var(--mono);padding:1px 5px;border-radius:3px;border:1px solid var(--line)}
.p1 .rank-pill{background:var(--gold);color:var(--on-medal);border-color:var(--gold)}
.p2 .rank-pill{background:var(--silver);color:var(--on-medal);border-color:var(--silver)}
.p3 .rank-pill{background:var(--bronze);color:var(--on-medal);border-color:var(--bronze)}
.dnf .rank-pill{color:var(--muted)}

.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:12px 16px}
.card h3{margin-top:0}
.list{margin:0;padding:0;list-style:none}
.list li{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px solid var(--line)}
.list li:last-child{border-bottom:0}
.list li[data-short] > .txt{flex:1;min-width:0}
.copy-btns{display:inline-flex;gap:4px;flex:none;align-self:flex-start}
.btn.bref{font-family:var(--display);letter-spacing:.06em;text-transform:uppercase;color:var(--red);border-color:var(--red)}
.btn.bref:hover{background:var(--refbg)}
.btn.copied,.btn.copied:hover{background:var(--ok);color:#fff;border-color:var(--ok)}
.copy-all{margin-left:auto;font-weight:600;white-space:nowrap}
h2 .copy-all,h3 .copy-all,h4 .copy-all,.eyebrow .copy-all{font:600 12px var(--body);letter-spacing:0;text-transform:none;vertical-align:middle}
.copy-scope h3,.copy-scope h4,.copy-scope .eyebrow,.copy-scope h2{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.antenne{border-left:4px solid var(--red)}
.antenne-list{margin:0;padding:0 0 0 26px}
.antenne-list li{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px solid var(--line);font:600 17px/1.3 var(--display)}
.antenne-list li:last-child{border-bottom:0}
.antenne-list li::marker{color:var(--red);font:600 14px var(--mono)}
.antenne-list .txt{flex:1;min-width:0}
html.cabine .antenne-list li{font-size:21px}
@media (max-width:480px){
  /* téléphone : les deux boutons passent sous la phrase, alignés à droite */
  .list li[data-short]{flex-wrap:wrap}
  .list li[data-short] > .txt{flex-basis:100%}
  .copy-btns{margin-left:auto}
  .antenne-list{padding-left:20px}
  .antenne-list li{font-size:16px}
}
.medal{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}
.medal.gold{background:var(--gold)}.medal.silver{background:var(--silver)}.medal.bronze{background:var(--bronze)}
.form{display:flex;gap:4px}
.form span{font:600 12px var(--mono);min-width:30px;text-align:center;padding:3px 4px;border-radius:3px;background:var(--soft);color:var(--ink)}
.form span.p1{background:var(--gold);color:var(--on-medal)}.form span.p2{background:var(--silver);color:var(--on-medal)}.form span.p3{background:var(--bronze);color:var(--on-medal)}.form span.dnf{color:var(--muted)}
.callout{background:var(--soft);border-left:3px solid var(--red);padding:10px 14px;margin:12px 0;border-radius:0 4px 4px 0}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}
.filters select,.filters a.btn{padding:6px 10px;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--ink);font:14px var(--body)}
.btn{display:inline-block;padding:6px 12px;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--ink);font:600 13px var(--body)}
.btn:hover{text-decoration:none;background:var(--soft)}
.pill{display:inline-block;font:600 10px var(--body);letter-spacing:.08em;text-transform:uppercase;padding:2px 7px;border-radius:2px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.pill.red{color:var(--red);border-color:var(--red)}.pill.ok{color:var(--ok);border-color:var(--ok)}.pill.warn{color:var(--warn);border-color:var(--warn)}
details summary{cursor:pointer;color:var(--blue)}
/* Page nation et ligne de bilan de l'accueil */
.nation-line{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--red);border-radius:4px;padding:8px 14px;margin:0 0 20px;font-size:14px}
tr.mine td{background:color-mix(in srgb,var(--red) 7%,transparent)}
html.cabine tr.mine td{background:color-mix(in srgb,var(--red) 14%,transparent)}
.filters select{max-width:100%}
.htmx-indicator{opacity:0}.htmx-request .htmx-indicator{opacity:1}
footer{max-width:1240px;margin:0 auto;padding:20px;font-size:12px;color:var(--muted);border-top:1px solid var(--line)}

/* Scénarios conditionnels : étiquette de l'issue (victoire, podium, top 10) */
.oc{display:inline-block;font:600 10px var(--body);letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;border-radius:2px;margin-right:4px;white-space:nowrap;vertical-align:middle}
.oc-win{background:var(--gold);color:var(--on-medal)}
.oc-podium{background:var(--silver);color:var(--on-medal)}
.oc-top10{background:var(--soft);color:var(--ink);border:1px solid var(--line)}
.scenarios h4{font:600 15px var(--display);margin:12px 0 2px}
.scenarios h4.sui a{color:var(--red)}
.scenarios details{margin-top:8px}
.scenarios .who{font-weight:600}
html.cabine .oc{font-size:12px}

/* Actualité (flux RSS) et portrait Wikipédia */
.news-list{list-style:none;margin:0;padding:0}
.news-item{padding:10px 0;border-bottom:1px solid var(--line)}
.news-item:last-child{border-bottom:0}
.news-list.compact .news-item{padding:6px 0}
.news-title{font-weight:600;color:var(--ink);display:inline-block;margin:2px 0}
.news-title:hover{color:var(--blue)}
.news-summary{margin:4px 0 8px;color:var(--muted);font-size:14px;line-height:1.4}
.news-meta{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:12px}
.news-meta .pill.who{color:var(--blue);border-color:var(--blue);text-transform:none;letter-spacing:0;font-size:11px}
.news-meta .pill.who:hover{background:var(--soft);text-decoration:none}
.portrait{border-left:3px solid var(--blue);margin-bottom:12px}
.portrait-text{margin:0;font-size:15px;line-height:1.5}
.portrait-reload{margin:0 0 16px}
.news-brief{margin-top:4px}
.news-brief li span{flex:1;min-width:0;white-space:normal}
html.cabine .news-title{font-size:18px}
html.cabine .news-summary{font-size:16px}
html.cabine .portrait-text{font-size:17px}

/* Mode cabine : sombre, plus grand, recherche mise en avant */
html.cabine body{font-size:17px}
html.cabine .search{max-width:none}
html.cabine .search input{font-size:18px;padding:12px 14px 12px 40px}
html.cabine table{font-size:16px}
html.cabine .kpi b{font-size:36px}
html.cabine .list li{padding:8px 0}
#cabine-toggle{border:1px solid var(--line);border-radius:3px;padding:2px 8px}
html.cabine #cabine-toggle{color:var(--red);border-color:var(--red)}

/* Mode direct : ordre de départ, champ dossard, fiche express (tactile : lignes de 44 px minimum) */
.bibbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:16px 0 12px}
.bibbar-label{font:700 18px var(--display);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.bibbar input{width:110px;font:700 34px/1 var(--display);font-variant-numeric:tabular-nums;padding:8px 10px;text-align:center;border:2px solid var(--blue);border-radius:6px;background:var(--surface);color:var(--ink)}
.bibbar input:focus{outline:3px solid var(--red);outline-offset:2px}
.direct{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,460px);gap:20px;align-items:start}
.express{position:sticky;top:64px}
@media (max-width:900px){.direct{grid-template-columns:1fr}.express{position:static;order:-1}}
.start-meta{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 8px}
.start-table th{position:sticky;top:0}
.start-row{cursor:pointer}
.start-row td{padding:10px 10px;vertical-align:middle;height:46px;white-space:normal}
.start-row td.bib{font:700 26px/1 var(--display);font-variant-numeric:tabular-nums;min-width:52px;color:var(--ink)}
.start-row td.name{font-size:16px}
.start-row td.nat{white-space:nowrap}
.start-row:hover td,.start-row:focus td{background:var(--soft)}
.start-row:focus{outline:none}
.start-row.ref td{font-weight:700;background:var(--refbg)}
.start-row.ref td.name{color:var(--red)}
.start-row.on td{box-shadow:inset 4px 0 0 var(--blue);background:var(--soft)}
.start-row.ref.on td{background:var(--refbg)}
.flag{font-size:1.15em;line-height:1}
.express-head{display:flex;gap:14px;align-items:center;margin-bottom:10px}
.express-head .photo{width:72px;height:72px;border-radius:50%;object-fit:cover;flex:none}
.express-head .avatar{width:72px;height:72px;font-size:28px}
.express-name{font:700 26px/1.05 var(--display)}
.bib-big{font:700 44px/1 var(--display);font-variant-numeric:tabular-nums;color:var(--red);min-width:56px;text-align:center;flex:none}
.express-kpis{grid-template-columns:repeat(auto-fit,minmax(88px,1fr));margin:8px 0 4px}
.express-kpis .kpi{padding:8px 10px}
.express-kpis .kpi b{font-size:24px}
.express-kpis .kpi span{font-size:11px}
.facts-list li span:first-child{flex:1}
.facts-list .btn{align-self:flex-start;min-height:32px}
.form span small{display:block;font:500 10px var(--body);color:inherit;opacity:.8;text-transform:uppercase;letter-spacing:.04em}
html.cabine .start-row td{padding:12px 12px;height:52px;font-size:18px}
html.cabine .start-row td.bib{font-size:32px}
html.cabine .start-row td.name{font-size:19px}
html.cabine .bibbar input{font-size:42px;width:130px}
html.cabine .express-name{font-size:30px}
html.cabine .facts-list li{font-size:18px}
@media (pointer:coarse){
  .btn,.filters select,.filters a.btn,button.btn{min-height:44px;padding:10px 14px}
  .copy-btns .btn{padding:8px 12px}
  .tabs a{padding:12px 14px;min-height:44px}
  .start-row td{height:52px;padding:12px 10px}
  .bibbar input{min-height:56px}
  .express{position:static}
  .search input{min-height:44px;font-size:16px} /* 16 px : pas de zoom automatique sur iOS */
}

/* Impression : feuille de cabine A4 */
@page{size:A4;margin:15mm}
@media print{
  :root{--bg:#fff;--surface:#fff;--ink:#000;--muted:#444;--line:#999;--soft:#f0f0f0;--red:#b00020;--blue:#000}
  .top,.tabs,.filters,.links,footer,.search,.btn,button,form,#cabine-toggle,.nav-toggle,.copy-btns,.copy-all,.bibbar,.no-print{display:none!important}
  body{background:#fff;color:#000;font-size:11pt;line-height:1.3}
  .wrap{max-width:none;padding:0}
  h1{font-size:20pt}h2{font-size:14pt;margin:10pt 0 4pt;border-top:1px solid #999;padding-top:6pt}h3{font-size:12pt}
  .profile,.kpi,.card,.tbl,article{border-color:#bbb;break-inside:avoid;box-shadow:none}
  .card{padding:6pt 8pt}
  table{font-size:10pt}th,td{padding:3pt 5pt}
  th{position:static;background:#eee;color:#000}
  a{color:#000;text-decoration:none}
  .kpis{grid-template-columns:repeat(4,1fr)}
  .kpi b{font-size:20pt}
  .grid2{display:block}
  .page-break{break-before:page}
  .print-header{display:block!important;font-size:9pt;color:#444;border-bottom:1px solid #999;padding-bottom:4pt;margin-bottom:8pt}
  tr.sui td,tr.mine td{font-weight:700}
  .annot{width:25mm;border-left:1px dashed #999}
  .oc{background:#fff!important;color:#000!important;border:1px solid #999;font-size:8pt}
  .scenarios .list li{padding:2pt 0}
  .antenne{border:1.5pt solid #000;border-left-width:6pt;padding:6pt 10pt;margin:6pt 0 10pt;break-inside:avoid}
  .antenne h3{margin-top:0}
  .antenne-list li{font-size:12.5pt;padding:2pt 0;border-bottom:1px solid #ccc}
  .direct{display:block}.express{position:static}
  .copy-scope h3,.copy-scope h4,.copy-scope .eyebrow{display:block}
  .rank-pill,.form span{color:#000!important;background:#fff!important;border:1px solid #999}
  .p1 .rank-pill,.form span.p1{font-weight:700;border-color:#000}
  .list li{break-inside:avoid}
  .news-brief{font-size:9.5pt;color:#444}
  .news-brief a{text-decoration:underline}
  .verify-foot{display:block;color:#444;border-top:1px solid #999;font-size:9pt}
  .flag{color:#000}
}
.print-header{display:none}

/* Double vérification : état du palmarès sur la fiche, écarts, signalement d'une phrase, bloc Contrôles de l'admin */
.verify-line{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;font-size:13px;margin:-6px 0 14px}
.verify-line .ok{color:var(--ok);font-weight:600}
.verify-line form{margin:0}
.callout.verify{border-left-color:var(--warn)}
.callout.verify ul{margin:6px 0 0;padding-left:18px}
.flag{color:var(--warn);font-weight:700;text-decoration:none}
.verify-foot{font-size:12px;color:var(--muted);margin:14px 0 0;border-top:1px solid var(--line);padding-top:6px}
.report-form{display:inline;margin:0}
.btn.report{color:var(--muted);border-style:dashed}
.btn.report:hover{color:var(--warn);border-color:var(--warn)}
.pill.reported{color:var(--warn);border-color:var(--warn);text-transform:none;letter-spacing:0}
.anomalies td.small{max-width:420px}
.anomalies form{display:inline;margin:0}
.anomalies input.note{padding:4px 8px;border:1px solid var(--line);border-radius:4px;background:var(--bg);color:var(--ink);width:170px;font:13px var(--body)}
