@import url("https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:ital,wght@0,400;0,700;1,400&display=swap");
/* Atlas. Une seule famille de caractères (Atkinson Hyperlegible, pensée pour la lisibilité), pas de cartes, pas de largeur de texte limitée.
   Titres : page 2,1 · section 1,3 · sous-section 1,05 · texte 1 · précision 0,9 · étiquette 0,78. */
:root { --bg:#fbfaf8; --fg:#1c1b19; --mute:#6f6c66; --line:#e4e1db; --soft:#f2f0ec; --accent:#1a5fb4; --bon:#1d7a3a; --mal:#b3261e;
  --c0:#1a5fb4; --c1:#c64600; --c2:#1d7a3a; --c3:#a51d8c; --c4:#8a6d00; --c5:#0e7c86; --c6:#b3261e; --c7:#5b4bc4; --cs:62%; --cl:40%;
  --p0:#1a5fb4; --p11:#c64600; --p10:#1d7a3a; --p9:#a51d8c; }
:root[data-theme=dark] { --bg:#161513; --fg:#ebe8e2; --mute:#9b978f; --line:#2e2c28; --soft:#1f1d1a; --accent:#78aeed; --bon:#6fcf8a; --mal:#f2877f;
  --c0:#78aeed; --c1:#ff9a5c; --c2:#6fcf8a; --c3:#e58bd4; --c4:#e6c24a; --c5:#5fd0d8; --c6:#f2877f; --c7:#a99cff; --cs:70%; --cl:68%;
  --p0:#78aeed; --p11:#ff9a5c; --p10:#6fcf8a; --p9:#e58bd4; }
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--fg); font:16px/1.55 "Atkinson Hyperlegible", "Segoe UI", sans-serif; font-feature-settings:"tnum" 1; }
button, input, select { font:inherit; padding:5px 9px; border:1px solid var(--line); border-radius:3px; background:var(--bg); color:var(--fg); }
button { cursor:pointer; } button:hover { border-color:var(--mute); } button:disabled { opacity:.45; cursor:default; } button.on { background:var(--fg); border-color:var(--fg); color:var(--bg); }
input[type=checkbox] { padding:0; accent-color:var(--fg); }
a { color:var(--accent); text-underline-offset:2px; }
h1 { font-size:2.1rem; line-height:1.15; margin:0 0 6px; overflow-wrap:anywhere; }
h1 + p { font-size:1.05rem; color:var(--mute); margin-top:0; }
h2 { font-size:1.3rem; line-height:1.25; margin:36px 0 12px; padding-bottom:6px; border-bottom:1px solid var(--line); }
h3 { font-size:1.05rem; line-height:1.3; margin:0 0 4px; }
.mute { color:var(--mute); font-size:.9rem; } .bon { color:var(--bon); } .mal { color:var(--mal); }
.nation { color:var(--mute); font-size:.9em; } .espace { flex:1; } .url { color:var(--mute); font-size:.8rem; }
.pastille { padding:0 6px; border:1px solid var(--line); border-radius:3px; font-size:.78rem; color:var(--mute); white-space:nowrap; }
.pastille.vac { color:var(--accent); border-color:var(--accent); } .pastille.wip, .pastille.soon { border-style:dashed; color:var(--accent); border-color:var(--accent); } .pastille.ok { color:var(--bon); border-color:var(--bon); } .pastille.marque { border-style:dotted; }
.barre { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:10px 0; }
.cristal { width:1.1em; height:1.1em; margin-left:2px; vertical-align:-2px; } .ico { vertical-align:-3px; margin-right:5px; border-radius:2px; } .ico.g { margin-right:10px; vertical-align:-6px; }
/* cadre */
.app { display:grid; grid-template-columns:236px minmax(0,1fr); min-height:100vh; }
nav.lat { border-right:1px solid var(--line); padding:14px; position:sticky; top:0; height:100vh; overflow:auto; display:flex; flex-direction:column; }
nav.lat .logo { display:block; margin:2px 0 4px; font-size:1.9rem; line-height:1.1; font-weight:700; letter-spacing:-.02em; color:var(--fg); text-decoration:none; }
nav.lat .logo:hover { text-decoration:underline; text-underline-offset:4px; }
nav.lat a.nav { display:flex; justify-content:space-between; padding:4px 0 4px 10px; margin-left:-10px; color:var(--fg); text-decoration:none; border-left:2px solid transparent; }
nav.lat a.nav:hover { text-decoration:underline; text-underline-offset:3px; } nav.lat a.nav.on { font-weight:700; border-left-color:var(--fg); } nav.lat small { font-weight:400; font-size:.75rem; }
nav.lat .pied { margin-top:auto; padding-top:26px; font-size:.85rem; } nav.lat .pied > a, nav.lat .pied > span { display:block; padding:2px 0; color:var(--mute); } nav.lat .pied span a { color:inherit; } nav.lat .pied > span { margin-top:6px; font-size:.64rem; white-space:normal; }
.contenu { min-width:0; }
.haut { position:sticky; top:0; z-index:20; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,560px) minmax(0,1fr); justify-content:stretch; gap:12px; align-items:center; padding:10px 28px; background:var(--bg); border-bottom:1px solid var(--line); } .haut .outils { grid-column:3; display:flex; gap:12px; align-items:center; justify-content:flex-end; } .haut .mob { grid-column:1; justify-self:start; }
.recherche { position:relative; grid-column:2; min-width:0; } .recherche input { width:100%; border-color:transparent; background:var(--soft); }
.recherche kbd { position:absolute; right:8px; top:6px; font:inherit; font-size:.75rem; color:var(--mute); }
.horloge { color:var(--mute); font-size:.8rem; line-height:1.3; text-align:right; white-space:pre-line; } #theme { flex:none; min-width:36px; height:36px; padding:0; }
main#vue { padding:26px 28px 110px; max-width:1440px; margin-inline:auto; }
.mob { display:none; }
/* contenu */
.chiffres { display:flex; flex-wrap:wrap; gap:4px 38px; margin:18px 0 8px; align-items:baseline; list-style:none; padding:0; }
.chiffres > li { display:flex; gap:8px; align-items:baseline; } .chiffres b { font-size:2rem; line-height:1.1; } .chiffres .lib, .chiffres small { color:var(--mute); }
.grille { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:26px 32px; margin:18px 0; } .s4 { grid-column:span 4; } .s6 { grid-column:span 6; } .s8 { grid-column:span 8; }
.liste, .fil { list-style:none; margin:0; padding:0; } .liste li, .fil li { display:flex; gap:10px; align-items:baseline; padding:6px 0; border-bottom:1px solid var(--line); }
.dl { display:grid; grid-template-columns:auto 1fr; gap:6px 18px; margin:0; } .dl dt { color:var(--mute); } .dl dd { margin:0; font-weight:700; }
.barre-h { height:5px; background:var(--line); } .barre-h i { display:block; height:100%; background:var(--fg); }
.sommaire { list-style:none; margin:0; padding:0; }
.sommaire > li { position:relative; display:grid; grid-template-columns:150px minmax(0,1fr) auto; gap:4px 24px; align-items:baseline; padding:13px 0; border-bottom:1px solid var(--line); }
.sommaire h3 { margin:0; } .sommaire h3 a { color:var(--fg); text-decoration:none; } .sommaire h3 a::after { content:""; position:absolute; inset:0; } .sommaire > li:hover h3 a { text-decoration:underline; } .sommaire p { margin:0; color:var(--mute); }
details { border-bottom:1px solid var(--line); } summary { padding:10px 0; font-weight:700; cursor:pointer; list-style:none; } summary::before { content:"▸ "; color:var(--mute); } details[open] > summary::before { content:"▾ "; } details[open] { padding-bottom:12px; }
pre { padding:10px 12px; overflow:auto; background:var(--soft); font:inherit; font-size:.9rem; } code { padding:0 4px; background:var(--soft); }
.vide, .erreur { padding:40px 0; color:var(--mute); border-block:1px solid var(--line); } .erreur { color:var(--mal); }
.squelette { height:12px; margin:12px 0; background:linear-gradient(90deg,var(--line),var(--soft),var(--line)) 0 0/200% 100%; animation:sq 1.2s infinite; } @keyframes sq { to { background-position:-200% 0; } }
/* tableaux */
.tableau { overflow:auto; } table { width:100%; border-collapse:collapse; }
th, td { padding:10px 14px 10px 0; border-bottom:1px solid var(--line); text-align:left; vertical-align:middle; line-height:1.35; white-space:nowrap; }
thead th { position:sticky; top:0; padding-block:8px; background:var(--bg); border-bottom-color:var(--fg); vertical-align:bottom; font-size:.9rem; line-height:1.25; cursor:pointer; user-select:none; }
th small { display:block; font-weight:400; font-size:.78rem; color:var(--mute); }
.wrap { white-space:normal; }
th.tri .tri-b::after { content:" ▲"; } th.tri.desc .tri-b::after { content:" ▼"; }
td.n, th.n { text-align:right; padding-right:16px; font-variant-numeric:tabular-nums; }
tbody tr:hover { background:var(--soft); } tr.vac td, tr.vac th { color:var(--mute); } tr.vac th a, tr.vac a { color:inherit; font-style:italic; }
tr.apercu td { padding:16px 12px 18px 28px; white-space:normal; background:var(--soft); } .peek { border:0; padding:0 4px; background:none; color:var(--mute); }
.matrice td, .matrice th { text-align:center; } .matrice td:first-child, .matrice th:first-child { text-align:left; }
/* filtres */
.filtres { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:16px 0 6px; } .filtres input[type=search] { flex:1; min-width:220px; } .filtres select { max-width:230px; }
.actifs { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
.etiquette { display:inline-flex; align-items:center; padding:1px 3px 1px 8px; border:1px solid var(--fg); border-radius:3px; font-size:.85rem; } .etiquette button { border:0; padding:0 5px; background:none; color:var(--mute); }
.menu-col { position:relative; } .pop { display:none; position:absolute; z-index:15; top:100%; left:0; min-width:210px; padding:8px 12px; background:var(--bg); border:1px solid var(--fg); } .menu-col.open .pop { display:block; } .menu-col label { display:block; padding:2px 0; }
.pop-filtres { gap:12px; min-width:360px; padding:12px 14px; } .menu-col.open .pop-filtres { display:grid; } .champ { display:grid; gap:3px; border:0; padding:0; margin:0; min-width:0; } .champ legend { padding:0; float:none; } .champ > .mute { font-size:.78rem; text-transform:uppercase; } .champ label { white-space:nowrap; }
/* courbes */
svg text { fill:var(--mute); font-size:12px; } svg .axe { stroke:var(--line); } svg .courbe { fill:none; stroke-width:2; }
.legende { display:flex; flex-wrap:wrap; gap:14px; margin-top:6px; font-size:.85rem; color:var(--mute); } .legende i { display:inline-block; width:14px; height:3px; margin-right:6px; vertical-align:3px; }
.tip { position:absolute; z-index:5; padding:5px 8px; background:var(--bg); border:1px solid var(--fg); border-radius:3px; font-size:.85rem; white-space:nowrap; pointer-events:none; }
/* palette de recherche */
#palette { position:fixed; inset:0; z-index:50; display:none; align-items:flex-start; justify-content:center; padding-top:12vh; background:rgba(0,0,0,.3); } #palette.open { display:flex; }
#palette .boite { width:min(560px,92vw); padding:10px; background:var(--bg); border:1px solid var(--fg); } #palette input { width:100%; font-size:1.05rem; }
#palette ul { margin:8px 0 0; padding:0; max-height:50vh; overflow:auto; } #palette li { display:flex; justify-content:space-between; gap:8px; padding:6px 8px; list-style:none; cursor:pointer; } #palette li:hover, #palette li.sel { background:var(--soft); }
/* petit écran */
@media (max-width:900px) {
  .s4, .s6, .s8 { grid-column:span 12; } .sommaire > li { grid-template-columns:1fr; }
  .app { grid-template-columns:1fr; } nav.lat { display:none; position:fixed; inset:0 auto 0 0; z-index:30; width:240px; background:var(--bg); box-shadow:4px 0 16px rgba(0,0,0,.25); } nav.lat.open { display:flex; }
  .mob { display:inline-block; } .haut { padding:10px 14px; display:flex; } .recherche { flex:1; order:1; } .horloge { display:none; } main#vue { padding:18px 14px 120px; } h1 { font-size:1.7rem; }
}
.sr, .saut:not(:focus) { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.saut:focus { position:fixed; z-index:60; top:8px; left:8px; padding:8px 12px; background:var(--bg); border:2px solid var(--fg); }
nav.lat ul { list-style:none; margin:0; padding:0; } nav.lat .groupe { margin:22px 0 4px; font-size:.78rem; letter-spacing:.09em; text-transform:uppercase; color:var(--mute); font-weight:700; }
tbody th { font-weight:inherit; }
.tri-b { all:unset; cursor:pointer; } .tri-b:focus-visible, a:focus-visible, button:focus-visible, summary:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.evenements { display:block; border:0; padding:0; margin:0; min-width:0; } .evenements .rapide { display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:4px 0 8px; }
.titre-ligne { display:flex; flex-wrap:wrap; gap:6px 24px; align-items:baseline; margin-bottom:4px; } .titre-ligne h1 { margin:0; } .bascule { display:flex; gap:6px; }
details.courbes { margin:10px 0; } details.courbes details { margin-top:6px; border:0; } details.courbes details summary { font-weight:400; }
td.i, th.i { width:1%; padding-right:6px; }
.radios { display:grid; gap:2px; max-height:240px; overflow:auto; } .radios label { display:flex; gap:6px; align-items:center; white-space:nowrap; } .radios img { width:20px; height:20px; object-fit:contain; } .etiquette img { width:16px; height:16px; margin-right:6px; vertical-align:-3px; }
.podiums table { table-layout:fixed; } .podiums th:first-child, .podiums td:first-child { width:4.5rem; }
table.leg { width:auto; min-width:440px; } table.leg td, table.leg th { padding-top:6px; padding-bottom:6px; } table.leg tbody th label { display:flex; gap:6px; align-items:center; font-weight:400; white-space:nowrap; }
hr { border:0; border-top:1px solid var(--line); margin:.8em 0; }
.sm { margin:0 0 6px; } .mt10 { margin:10px 0 0; } .l3 { padding:3px 0; } .rang { width:1.2em; } .plein { flex:1; }
.barre.sans-haut { margin-top:0; } .radios.tout { max-height:none; }
.radios.cartes { grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr)); gap:6px 14px; } .radios.cartes label { white-space:normal; align-items:center; padding:4px 0; } .radios.cartes img { width:44px; height:44px; flex:none; } .radios.cartes .titre-b { display:flex; flex-direction:column; line-height:1.3; min-width:0; } .radios.cartes .titre-b .mute { font-size:.8rem; } .etat-ligne { margin:6px 0 4px; font-size:1.15rem; }
.nouveautes li { display:grid; grid-template-columns:92px 1fr; gap:16px; padding:12px 0; }
.champ-l { display:flex; justify-content:space-between; gap:10px; padding:3px 0; } .champ-l input { width:90px; text-align:right; }
.zone-texte { width:100%; min-height:90px; padding:8px; font:12px ui-monospace,monospace; border-radius:6px; }
.cov { display:inline-block; width:12px; height:12px; margin-right:4px; vertical-align:-1px; border:1.5px solid currentColor; border-radius:50%; } .cov.full { background:currentColor; } .cov.half { background:linear-gradient(90deg,currentColor 50%,transparent 50%); }
.barres { margin:0; } .barres ul { list-style:none; margin:0; padding:0; } .barres li { display:grid; grid-template-columns:minmax(90px,170px) 1fr auto; gap:12px; align-items:center; padding:4px 0; }
.barres .piste { height:10px; background:var(--soft); } .barres .piste i { display:block; height:100%; background:var(--fg); } .barres li.mute .piste i { background:var(--mute); } .barres b { text-align:right; font-variant-numeric:tabular-nums; }
.dl + h3 { margin-top:20px; }
/* états du site réel : contenu en cours de mise à jour, avis passager, erreur détaillée */
main#vue:focus { outline:none; } main#vue[aria-busy=true] { opacity:.55; transition:opacity .15s; }
.avis { position:fixed; left:50%; bottom:16px; z-index:45; max-width:min(560px,92vw); transform:translateX(-50%); padding:8px 14px; background:var(--bg); border:1px solid var(--fg); font-size:.9rem; } .avis[hidden] { display:none; }
.erreur .detail, .vide .detail { display:block; margin-top:6px; font-size:.85rem; color:var(--mute); }
@media (prefers-reduced-motion:reduce) { .squelette { animation:none; } }
@media (max-width:900px) { .recherche kbd { display:none; } }
/* fiches, podiums, badges, simulateurs */
.texte-brut { white-space:pre-wrap; overflow-wrap:anywhere; margin:0 0 6px; } .version { margin:10px 0 16px; } .version h3 { margin-bottom:2px; }
ins { background:color-mix(in srgb,var(--bon) 22%,transparent); text-decoration:none; } del { background:color-mix(in srgb,var(--mal) 22%,transparent); }
.avert { padding-left:10px; border-left:3px solid var(--mal); }
.grille-params { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr)); gap:6px 24px; margin-top:10px; }
.champ-l input[type=checkbox] { width:auto; } .champ-l input[type=number] { width:9.5rem; max-width:50%; }
.barre [data-id] { flex:1; min-width:0; }
@media (max-width:900px) { .grille-params { grid-template-columns:1fr; } }
.partie-g { grid-column:1; justify-self:start; min-width:0; } .partie-g select { max-width:190px; }
@media (max-width:900px) { .partie-g select { max-width:140px; } .partie-g { order:2; } .outils { order:3; } }

.paliers { display:flex; flex-wrap:wrap; gap:4px 14px; margin:4px 0 0; font-size:.85rem; } .paliers .cristal { margin:0 4px 0 0; }
