
:root {
  --noir:          #050506;
  --carte:         #0B0B0D;
  --texte:         #EFE6D6;
  --texte-doux:    #9A9187;
  --trait:         #1C1C21;
  --marque-g:          #F29437;
  --marque-s:          #F8E6C9;
  --marque-minuscules: #B9AB99;
  --famille:           #1BC6CD;
  --famille-bleu:      #44A5E3;
  --competition:       #FB7009;
  --competition-or:    #F28E33;
  --gouttiere: 16px;
}
body.famille     { --accent: var(--famille);     --accent-2: var(--famille-bleu); }
body.competition { --accent: var(--competition); --accent-2: var(--competition-or); }

*, *::before, *::after { box-sizing: border-box; }

@font-face {
  font-family: 'ArchivoVitrine';
  src: url('/vitrine/polices/Archivo_900Black-da5bbe6b46.ttf') format('truetype');
  font-weight: 900;
  font-display: swap;
}
@font-face {
  font-family: 'ArchivoVitrine';
  src: url('/vitrine/polices/Archivo_700Bold-fb0d3a7cf2.ttf') format('truetype');
  font-weight: 700;
  font-display: swap;
}

html { background: var(--noir); color-scheme: dark; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  color: var(--texte);
  font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  background: var(--noir);
  overflow-x: hidden;
}
body.famille     { background: radial-gradient(ellipse 70% 38% at 50% 14%, rgba(27, 198, 205, .08), transparent 70%), var(--noir); }
body.competition { background: radial-gradient(ellipse 70% 38% at 50% 14%, rgba(251, 112, 9, .07), transparent 70%), var(--noir); }
a { color: inherit; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 6px; }

.etiquette {
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.haut {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: max(6px, env(safe-area-inset-top)) var(--gouttiere) 0;
  min-height: 48px;
}
.haut a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 2px;
  font-size: 11px;
  white-space: nowrap;
  text-decoration: none;
  color: var(--texte-doux);
}
.haut .seulement-large { display: none; }
.haut a:hover { color: var(--texte); }
.haut nav { display: flex; align-items: center; gap: 18px; }
.retour .g { color: var(--marque-g); }
.retour .s { color: var(--marque-s); }
.retour .marque-mini {
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: 15px;
  letter-spacing: 0;
  text-transform: none;
  color: var(--marque-minuscules);
}
.retour .fleche { margin-right: 8px; font-size: 14px; }

.page {
  flex: 1;
  width: 100%;
  max-width: 920px;
  margin: 0 auto;
  padding: 8px var(--gouttiere) 40px;
}
.ouverture { text-align: center; padding-top: clamp(8px, 3vh, 28px); }
.ouverture img {
  display: block;
  margin: 0 auto;
  width: min(48vw, 220px);
  height: auto;
  aspect-ratio: 1;
}
.titre {
  margin: 14px 0 0;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: clamp(30px, 9vw, 52px);
  letter-spacing: .1em;
  line-height: 1.05;
  color: var(--accent);
}
.signature {
  margin: 12px 0 0;
  font-size: 11px;
  letter-spacing: .3em;
  color: var(--accent);
}
.chapeau {
  margin: 18px auto 0;
  max-width: 40ch;
  font-size: 15px;
  line-height: 1.55;
  color: var(--texte-doux);
}
.etat {
  display: inline-block;
  margin: 18px 0 0;
  padding: 8px 14px;
  border: 1px solid var(--accent);
  border-radius: 999px;
  font-size: 10px;
  color: var(--accent);
}

.bloc { margin-top: clamp(34px, 6vh, 56px); }
.bloc > h2 {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 0 0 16px;
  font-size: 11px;
  color: var(--texte-doux);
}
.bloc > h2::after { content: ''; flex: 1; height: 1px; background: var(--trait); }
.bloc > .intro { margin: -4px 0 18px; font-size: 14px; line-height: 1.5; color: var(--texte-doux); }

.cartes {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.carte, .carte-epreuve {
  padding: 16px 18px 18px;
  border: 1px solid var(--trait);
  border-radius: 14px;
  background: var(--carte);
}
.carte .entete {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.carte h3, .carte-epreuve h3 {
  margin: 0;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: 17px;
  letter-spacing: .08em;
}
.carte p, .carte-epreuve p { margin: 8px 0 0; font-size: 14px; line-height: 1.5; color: var(--texte-doux); }

.statut {
  flex-shrink: 0;
  padding: 5px 9px;
  border-radius: 999px;
  font-size: 9px;
  white-space: nowrap;
}
.statut.disponible { background: var(--accent); color: var(--noir); }
.statut.programme { border: 1px solid var(--accent-2); color: var(--accent-2); }
.statut.a-venir { border: 1px solid #3A3A42; color: var(--texte-doux); }

.carte-epreuve h3 .sigle { color: var(--accent); }
.carte-epreuve h3 .nom-long { margin-left: 6px; font-weight: 700; font-size: 13px; letter-spacing: .04em; color: var(--texte-doux); }
.dates { margin: 12px 0 0; padding: 0; list-style: none; }
.dates li {
  display: grid;
  grid-template-columns: 9.5em 1fr;
  gap: 10px;
  padding: 7px 0;
  border-top: 1px solid var(--trait);
  font-size: 13px;
}
.dates .date { color: var(--accent-2); font-variant-numeric: tabular-nums; }
.dates .epreuve { font-weight: 600; }
.dates .complet { display: block; font-weight: 400; color: var(--texte-doux); font-size: 12px; }
.competitions-liste { display: grid; grid-template-columns: 1fr; gap: 12px; }

.chronologie { position: relative; margin: 0; padding: 0; list-style: none; }
.etape { position: relative; padding: 0 0 24px 30px; }
.etape:last-child { padding-bottom: 0; }
.etape::before {
  content: '';
  position: absolute;
  left: 6px;
  top: 18px;
  bottom: 0;
  width: 1px;
  background: var(--trait);
}
.etape:last-child::before { display: none; }
.point {
  position: absolute;
  left: 0;
  top: 3px;
  width: 13px;
  height: 13px;
  border-radius: 50%;
  border: 1.5px solid #3A3A42;
  background: var(--noir);
}
.etape[data-etat="en-cours"] .point { border-color: var(--accent); background: var(--accent); }
.etape[data-etat="passee"] .point { border-color: var(--texte-doux); background: var(--texte-doux); }
.etape .quand {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  margin: 0;
  min-height: 22px;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: .04em;
  color: var(--accent-2);
}
.etape h3 {
  margin: 6px 0 0;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: 17px;
  letter-spacing: .08em;
}
.etape .phrase { margin: 6px 0 0; font-size: 14px; line-height: 1.5; color: var(--texte-doux); }
.statut-chrono {
  padding: 5px 9px;
  border: 1px solid #3A3A42;
  border-radius: 999px;
  font-size: 9px;
  white-space: nowrap;
  color: var(--texte-doux);
}
.statut-chrono:empty { display: none; }
.etape[data-etat="en-cours"] .statut-chrono { border-color: var(--accent); background: var(--accent); color: var(--noir); }
.message { margin: 36px auto 0; max-width: 34ch; text-align: center; }
.message::before {
  content: '';
  display: block;
  width: 40px;
  height: 2px;
  margin: 0 auto 16px;
  background: var(--accent);
}
.message p {
  margin: 0;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 700;
  font-size: 18px;
  line-height: 1.45;
  color: var(--texte);
}
.ce-qui-reste { margin: 10px auto 0; max-width: 40ch; text-align: center; font-size: 13px; line-height: 1.5; color: var(--texte-doux); }

[hidden] { display: none !important; }
.bandeau {
  display: flex;
  align-items: center;
  gap: 10px;
  width: calc(100% - 2 * var(--gouttiere));
  max-width: 920px;
  margin: max(10px, env(safe-area-inset-top)) auto 0;
  padding: 4px 4px 4px 14px;
  border: 1px solid rgba(251, 112, 9, .26);
  border-radius: 16px;
  background: linear-gradient(90deg, rgba(251, 112, 9, .10), rgba(5, 5, 6, .85));
  font-size: 12.5px;
  line-height: 1.35;
}
.bandeau-point { flex: none; width: 6px; height: 6px; border-radius: 50%; background: var(--competition); box-shadow: 0 0 9px var(--competition); }
.bandeau-texte { flex: 1; margin: 0; color: var(--texte); }
.bandeau-lien {
  flex: none;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 6px;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 700;
  font-size: 10px;
  letter-spacing: .14em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--marque-s);
}
.bandeau-fermer {
  flex: none;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 12px;
  background: transparent;
  color: var(--texte-doux);
  font-size: 18px;
  cursor: pointer;
}
.bandeau-fermer:hover { color: var(--texte); }
@media (max-width: 639px) {
  .bandeau {
    display: grid;
    grid-template-columns: 6px minmax(0, 1fr) 44px;
    grid-template-areas: "point texte fermer" ". lien lien";
    column-gap: 10px;
    row-gap: 0;
    align-items: center;
  }
  .bandeau-point { grid-area: point; }
  .bandeau-texte { grid-area: texte; padding: 6px 0 0; }
  .bandeau-lien { grid-area: lien; justify-self: start; padding: 0; }
  .bandeau-fermer { grid-area: fermer; align-self: start; }
}

.rendez-vous {
  --rv: 251, 112, 9;
  --rv-2: var(--competition-or);
  position: relative;
  isolation: isolate;
  overflow: hidden;
  margin-top: clamp(28px, 5vh, 48px);
  padding: 34px 14px 30px;
  text-align: center;
  border: 1px solid rgba(var(--rv), .28);
  border-radius: 24px;
  background:
    radial-gradient(ellipse 75% 60% at 50% 48%, rgba(var(--rv), .16), transparent 72%),
    linear-gradient(180deg, #0A0A0C, #040405);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .04), 0 40px 90px -50px rgba(var(--rv), .7);
}
.rendez-vous[data-teinte="cyan"] { --rv: 27, 198, 205; --rv-2: #8FE9EC; }
.orbites {
  position: absolute;
  z-index: -1;
  left: 50%;
  top: 50%;
  width: max(118%, 520px);
  max-width: 820px;
  aspect-ratio: 1;
  transform: translate(-50%, -50%);
  pointer-events: none;
}
.anneau { fill: none; stroke: rgba(var(--rv), .16); stroke-width: 1; }
.anneau.a2 { stroke-dasharray: 2 9; stroke: rgba(var(--rv), .22); }
.anneau.a3 { stroke: rgba(var(--rv), .08); }
.arc { fill: none; stroke: rgb(var(--rv)); stroke-width: 1.6; stroke-linecap: round; opacity: .65; }
.astre { fill: var(--rv-2); filter: drop-shadow(0 0 6px rgb(var(--rv))); }
.astre.petit { fill: var(--marque-s); }
.orbite { transform-box: view-box; transform-origin: 300px 300px; }
.orbite.o1 { animation: orbite 46s linear infinite; }
.orbite.o2 { animation: orbite 70s linear infinite reverse; }
.orbite.o3 { animation: orbite 34s linear infinite; }
@keyframes orbite { to { transform: rotate(360deg); } }
.rendez-vous .surtitre { margin: 0; font-size: 10px; letter-spacing: .32em; color: var(--rv-2); }
.rv-nom {
  margin: 12px 0 0;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: clamp(28px, 8.4vw, 56px);
  letter-spacing: .08em;
  line-height: 1.05;
  color: #FFF4E2;
  text-shadow: 0 0 26px rgba(var(--rv), .55), 0 0 2px rgba(255, 255, 255, .35);
}
.rv-quand { margin: 10px 0 0; font-size: 14px; color: var(--texte-doux); }
.rv-chiffres { display: flex; justify-content: center; gap: clamp(7px, 2.4vw, 18px); margin: 26px 0 0; }
.rv-chiffres .case {
  min-width: clamp(64px, 19vw, 122px);
  padding: 13px 4px 11px;
  border: 1px solid rgba(var(--rv), .26);
  border-radius: 16px;
  background: linear-gradient(180deg, rgba(var(--rv), .07), rgba(4, 4, 5, .72));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05), 0 0 34px -14px rgba(var(--rv), .75);
}
.rv-chiffres .nombre {
  display: block;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: clamp(30px, 9.2vw, 66px);
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: #FFF2DC;
  text-shadow: 0 0 18px rgba(var(--rv), .7), 0 0 46px rgba(var(--rv), .28);
}
.rv-chiffres .unite { display: block; margin-top: 9px; font-size: 9px; letter-spacing: .24em; color: var(--rv-2); }
.rendez-vous[data-precision="jour"] .case.heure { display: none; }
.rendez-vous[data-precision="jour"] .case { min-width: clamp(150px, 44vw, 230px); }
.rv-phrase { margin: 24px auto 0; max-width: 40ch; font-size: 15px; line-height: 1.5; color: var(--texte); }
.lecteur { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

.demo-scene {
  position: relative;
  padding: 20px 12px 16px;
  border: 1px solid var(--trait);
  border-radius: 18px;
  background: radial-gradient(ellipse 80% 50% at 50% 0%, rgba(251, 112, 9, .06), transparent 70%), var(--carte);
}
.demo-theme { margin: 0; text-align: center; transition: opacity .5s, transform .5s; }
.demo-theme .etiquette { display: block; font-size: 9px; color: var(--texte-doux); }
.demo-theme strong {
  display: block;
  margin-top: 4px;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: clamp(22px, 6.4vw, 32px);
  letter-spacing: .12em;
  color: var(--accent);
  text-shadow: 0 0 22px rgba(251, 112, 9, .35);
}
.demo-joueurs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; margin: 18px 0 0; padding: 0; list-style: none; }
.demo-joueurs .nom {
  margin: 0 0 7px;
  text-align: center;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 700;
  font-size: 10px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--texte-doux);
}
.demo-joueurs .moi .nom { color: var(--marque-s); }
.idees { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; }
.idee {
  --c: 154, 145, 135;
  position: relative;
  padding: 8px 4px;
  border: 1px solid #26262C;
  border-radius: 10px;
  background: #101013;
  text-align: center;
  font-size: 12.5px;
  line-height: 1.2;
  overflow-wrap: anywhere;
  transition: opacity .4s ease-out, transform .4s ease-out, border-color .4s, background-color .4s, box-shadow .4s;
}
.idee[data-rang="1"] { --c: 251, 112, 9; }
.idee[data-rang="2"] { --c: 245, 177, 76; }
.idee[data-rang="3"] { --c: 248, 230, 201; }
.idee .pts, .idee .bonus {
  position: absolute;
  top: -8px;
  right: -4px;
  padding: 1px 5px;
  border-radius: 999px;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: 9.5px;
  line-height: 1.4;
  transition: opacity .35s, transform .35s;
}
.idee .pts { background: #1D1D22; color: var(--texte-doux); }
.idee.commune .pts { background: rgb(var(--c)); color: var(--noir); }
.idee .bonus { top: auto; right: auto; bottom: -8px; left: -4px; background: var(--marque-s); color: var(--noir); }
.demo-score { margin: 18px 0 0; text-align: center; transition: opacity .4s; }
.demo-score .etiquette { display: block; font-size: 9px; color: var(--texte-doux); }
.demo-score .calcul {
  display: block;
  margin-top: 6px;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: 20px;
  letter-spacing: .04em;
  color: var(--texte);
}
.demo-score .plus-bonus { transition: opacity .4s; }
.demo-score strong { font-size: 30px; color: var(--marque-s); text-shadow: 0 0 22px rgba(251, 112, 9, .55); }
.demo-gosame {
  margin: 10px auto 0;
  width: max-content;
  padding: 5px 16px 6px;
  border: 2px solid var(--marque-s);
  border-radius: 12px;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: 24px;
  letter-spacing: .06em;
  color: var(--marque-s);
  text-shadow: 0 0 18px rgba(248, 230, 201, .6);
  box-shadow: 0 0 26px -6px rgba(251, 112, 9, .7);
  transform: rotate(-4deg);
}
.demo-legendes { margin: 16px 0 0; padding: 0 0 0 1.4em; font-size: 13.5px; line-height: 1.5; color: var(--texte-doux); }
.demo-legendes li + li { margin-top: 4px; }
.demo-actions { display: flex; justify-content: center; gap: 10px; margin: 14px 0 0; }
.demo-actions .rejouer, .demo-actions a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 16px;
  border: 1px solid #34343C;
  border-radius: 999px;
  background: transparent;
  font-size: 10px;
  color: var(--texte);
  text-decoration: none;
  cursor: pointer;
}
.demo-actions .rejouer { border-color: var(--accent); color: var(--marque-s); }

.demo-scene[data-temps="0"] .demo-theme { opacity: 0; transform: translateY(8px); }
.demo-scene:is([data-temps="0"], [data-temps="1"]) .idee { opacity: 0; transform: translateY(8px); }
.demo-scene[data-temps="2"] .idee { transition-delay: calc(var(--j, 0) * .5s + var(--i, 0) * .14s); }
.demo-joueurs > li:nth-child(1) { --j: 0; }
.demo-joueurs > li:nth-child(2) { --j: 1; }
.demo-joueurs > li:nth-child(3) { --j: 2; }
.demo-joueurs > li:nth-child(4) { --j: 3; }
.demo-scene:is([data-temps="3"], [data-temps="4"], [data-temps="5"], [data-temps="6"], [data-temps="fin"]) .idee.commune {
  border-color: rgba(var(--c), .75);
  background-color: rgba(var(--c), .13);
  box-shadow: 0 0 18px -7px rgba(var(--c), .9);
}
.demo-scene:is([data-temps="3"], [data-temps="4"], [data-temps="5"], [data-temps="6"], [data-temps="fin"]) .idee.seule { opacity: .5; }
.demo-scene:is([data-temps="0"], [data-temps="1"], [data-temps="2"], [data-temps="3"]) :is(.pts, .demo-score) { opacity: 0; }
.demo-scene:is([data-temps="0"], [data-temps="1"], [data-temps="2"], [data-temps="3"]) .pts { transform: scale(.6); }
.demo-scene:is([data-temps="0"], [data-temps="1"], [data-temps="2"], [data-temps="3"], [data-temps="4"]) :is(.bonus, .plus-bonus) { opacity: 0; }
.demo-scene:is([data-temps="0"], [data-temps="1"], [data-temps="2"], [data-temps="3"], [data-temps="4"]) .bonus { transform: scale(.6); }
.demo-scene:is([data-temps="0"], [data-temps="1"], [data-temps="2"], [data-temps="3"], [data-temps="4"], [data-temps="5"]) .demo-gosame { visibility: hidden; }
.demo-scene[data-temps="6"] .demo-gosame { animation: tampon .55s cubic-bezier(.2, 1.6, .4, 1) both; }
@keyframes tampon { from { opacity: 0; transform: rotate(-4deg) scale(2.2); } to { opacity: 1; transform: rotate(-4deg) scale(1); } }
.demo-scene:not([data-temps="fin"]) .demo-legendes { padding-left: 0; list-style: none; text-align: center; min-height: 3em; color: var(--texte); }
.demo-scene:not([data-temps="fin"]) .demo-legendes li { display: none; }
.demo-scene[data-temps="1"] .demo-legendes li[data-temps="1"],
.demo-scene[data-temps="2"] .demo-legendes li[data-temps="2"],
.demo-scene[data-temps="3"] .demo-legendes li[data-temps="3"],
.demo-scene[data-temps="4"] .demo-legendes li[data-temps="4"],
.demo-scene[data-temps="5"] .demo-legendes li[data-temps="5"],
.demo-scene[data-temps="6"] .demo-legendes li[data-temps="6"] { display: block; }

.carte-epreuve .accroche {
  margin: 12px 0 0 !important;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: 18px !important;
  line-height: 1.3 !important;
  letter-spacing: .01em;
  color: var(--texte) !important;
}
.carte-epreuve .points { margin: 12px 0 0; padding: 0; list-style: none; font-size: 13.5px; line-height: 1.45; color: var(--texte-doux); }
.carte-epreuve .points li { position: relative; padding-left: 16px; }
.carte-epreuve .points li + li { margin-top: 5px; }
.carte-epreuve .points li::before { content: ''; position: absolute; left: 2px; top: .6em; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); }
.qualification { margin-top: 10px; border-top: 1px solid var(--trait); }
.qualification summary {
  display: flex;
  align-items: center;
  min-height: 44px;
  cursor: pointer;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 700;
  font-size: 10px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--accent-2);
}
.qualification p { margin: 0 0 4px !important; font-size: 13px !important; }
.prospectif { margin: 14px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--texte-doux); }

.appel { margin-top: clamp(40px, 7vh, 64px); text-align: center; }
.appel p { margin: 0 auto 18px; max-width: 34ch; font-size: 14px; line-height: 1.5; color: var(--texte-doux); }
.jouer {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 176px;
  min-height: 52px;
  padding: 0 34px;
  border-radius: 999px;
  border: 1.5px solid var(--competition-or);
  background: #140D08;
  font-family: 'ArchivoVitrine', system-ui, sans-serif;
  font-weight: 900;
  font-size: 17px;
  letter-spacing: .22em;
  text-decoration: none;
  color: var(--marque-s);
}
.jouer:hover { background: #24170C; }
.jouer:focus-visible { outline-color: var(--marque-s); border-radius: 999px; }

.pied {
  padding: 0 var(--gouttiere) max(18px, env(safe-area-inset-bottom));
  text-align: center;
}
.pied p { margin: 0; }
.voisin {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  font-size: 11px;
  text-decoration: none;
  color: var(--texte-doux);
}
.voisin:hover { color: var(--texte); }
.voisin.vers-famille strong { color: var(--famille); }
.voisin.vers-competition strong { color: var(--competition); }
.slogan { margin-top: 18px !important; font-size: 10px; letter-spacing: .24em; color: var(--texte-doux); opacity: .85; }
.beta { margin-top: 6px !important; font-size: 11px; color: var(--texte-doux); opacity: .85; }

body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 10;
  pointer-events: none;
  animation: arrivee .3s ease-out both;
}
body.famille::before     { background: radial-gradient(circle at 30% 50%, rgba(27, 198, 205, .22), var(--noir) 70%); }
body.competition::before { background: radial-gradient(circle at 70% 50%, rgba(251, 112, 9, .22), var(--noir) 70%); }
@keyframes arrivee {
  from { opacity: 1; visibility: visible; }
  to   { opacity: 0; visibility: hidden; }
}

@media (max-width: 380px) {
  .carte h3 { font-size: 15px; letter-spacing: .05em; }
  .etat { letter-spacing: .08em; padding: 8px 12px; }
}

@media (min-width: 640px) {
  .haut { padding-right: 32px; padding-left: 32px; }
  .haut a { font-size: 12px; }
  .haut .seulement-large { display: inline-flex; }
  .cartes { grid-template-columns: 1fr 1fr; }
  .chapeau { font-size: 16px; }
  .ouverture img { width: 220px; }
}
@media (min-width: 760px) {
  .chronologie { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
  .etape { padding: 28px 0 0; }
  .etape::before { left: 16px; right: -20px; top: 9px; bottom: auto; width: auto; height: 1px; }
  .etape:last-child { padding-bottom: 0; }
  .point { top: 3px; }
  .message, .ce-qui-reste { max-width: none; }
  .message p { font-size: 20px; }
}
@media (min-width: 1000px) {
  .ouverture img { width: 264px; }
  .competitions-liste { grid-template-columns: 1fr 1fr 1fr; }
  .dates li { grid-template-columns: 1fr; gap: 2px; }
}

@media (prefers-reduced-motion: reduce) {
  body::before { display: none; animation: none; }
  .orbite.o1, .orbite.o2, .orbite.o3 { animation: none; }
  .demo-scene *, .demo-gosame { transition: none !important; animation: none !important; }
}
