/* 45427 : site du studio.
   Raleway pour les titres, Poppins pour le texte, Lilita One pour les logos de jeux.
   Les polices sont servies par le site lui-même : aucun appel à un service extérieur. */

@font-face {
  font-family: "Raleway";
  src: url("../fonts/raleway.woff2") format("woff2");
  font-weight: 500 900;
  font-display: swap;
}
@font-face {
  font-family: "Poppins";
  src: url("../fonts/poppins-400.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "Poppins";
  src: url("../fonts/poppins-500.woff2") format("woff2");
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: "Poppins";
  src: url("../fonts/poppins-600.woff2") format("woff2");
  font-weight: 600;
  font-display: swap;
}
@font-face {
  font-family: "Poppins";
  src: url("../fonts/poppins-700.woff2") format("woff2");
  font-weight: 700;
  font-display: swap;
}
@font-face {
  font-family: "Poppins";
  src: url("../fonts/poppins-800.woff2") format("woff2");
  font-weight: 800;
  font-display: swap;
}
@font-face {
  font-family: "Lilita One";
  src: url("../fonts/lilitaone.woff2") format("woff2");
  font-display: swap;
}

:root {
  --encre: #151b3d;
  --encre-2: #4b5070;
  --gris: #a3a7bd;
  --papier: #fff;
  --doux: #f3f4f9;
  --trait: #e3e5ef;
  --accent: #ffc83a;
  --accent-fonce: #f0a000;
  --nuit: #1b1f52;
  --voile: 8, 12, 40;
  --rayon: 36px;
  --rayon-s: 12px;
  --bord: 40px;
  --ban: clamp(440px, 48.2vw, 88svh);
  --titre: "Raleway", "Segoe UI", system-ui, sans-serif;
  --texte: "Poppins", "Segoe UI", system-ui, sans-serif;
  --jeu: "Lilita One", "Raleway", sans-serif;
  --elan: cubic-bezier(.12, .77, .16, .93);
  --chevrons: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 12'%3E%3Cpath d='M1.7 1.7 6 6l-4.3 4.3M9 1.7 13.3 6 9 10.3' fill='none' stroke='%23000' stroke-width='2.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

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

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: 110px;
}

body {
  margin: 0;
  overflow-x: hidden;
  background: var(--papier);
  color: var(--encre);
  font: 400 18px/1.7 var(--texte);
  -webkit-font-smoothing: antialiased;
}

img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
p, ul, ol, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
button { font: inherit; color: inherit; }

h1, h2, h3, h4 {
  margin: 0;
  font-family: var(--titre);
  font-feature-settings: "lnum" 1;
  line-height: 1.2;
  text-wrap: balance;
}

:focus-visible {
  outline: 3px solid var(--accent-fonce);
  outline-offset: 3px;
  border-radius: 6px;
}

.conteneur {
  max-width: 1300px;
  margin: 0 auto;
  padding: 0 var(--bord);
}

.passer {
  position: absolute;
  left: -9999px;
  top: 12px;
  z-index: 999;
  padding: 10px 18px;
  border-radius: 40px;
  background: var(--encre);
  color: #fff;
}
.passer:focus { left: 12px; }

.lu { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* ---------- apparition au défilement ---------- */

.js [data-vu] {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity .8s ease var(--i, 0s), transform .8s ease var(--i, 0s);
}
.js [data-vu].vu { opacity: 1; transform: none; }

/* ---------- titres ---------- */

.sur {
  font: 600 18px/1.3 var(--texte);
  color: var(--encre-2);
}

.t2 { font: 800 clamp(30px, 3.37vw, 54px)/1.25 var(--titre); }
.t3 { font: 900 clamp(27px, 2.96vw, 46px)/1.2 var(--titre); }
.t4 { font: 800 clamp(24px, 2.3vw, 36px)/1.25 var(--titre); }

/* trait de surligneur : la couleur du studio ne sert jamais de couleur de texte sur fond clair */
.marque {
  padding: 0 .14em;
  margin: 0 -.14em;
  background: linear-gradient(transparent 56%, var(--accent) 56% 92%, transparent 92%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

.fleche {
  position: relative;
  padding-left: 1.25em;
}
.fleche::before {
  content: "";
  position: absolute;
  left: 0;
  top: .17em;
  width: .9em;
  height: .9em;
  background: var(--accent-fonce);
  -webkit-mask: var(--chevrons) center / contain no-repeat;
  mask: var(--chevrons) center / contain no-repeat;
}
.sombre .fleche::before { background: var(--accent); }

.titre-centre {
  padding-bottom: 60px;
  text-align: center;
}
.titre-centre .t2 { margin: 4px 0 14px; }
.titre-centre p:last-child {
  max-width: 470px;
  margin: 0 auto;
  font-size: 16px;
  line-height: 1.4;
}

/* ---------- boutons ---------- */

.btn {
  display: inline-flex;
  align-items: center;
  min-height: 58px;
  padding: 12.5px 25px;
  border: 0;
  border-radius: 78px;
  background: var(--doux);
  color: var(--encre);
  font: 600 18px/1.4 var(--texte);
  cursor: pointer;
  transition: background-color .3s var(--elan), color .3s var(--elan);
}
.btn-t {
  display: block;
  overflow: hidden;
  white-space: nowrap;
}
.btn-t > span {
  display: block;
  text-shadow: 0 1.4em 0 currentColor;
  transition: transform .3s var(--elan);
}
.btn:hover .btn-t > span { transform: translateY(-1.4em); }

.btn-c {
  position: relative;
  flex: none;
  width: 33px;
  height: 33px;
  margin-left: 16px;
  overflow: hidden;
  border-radius: 50%;
  background: var(--accent);
  color: var(--encre);
}
.btn-c::before,
.btn-c::after {
  content: "";
  position: absolute;
  inset: 0;
  background: currentColor;
  -webkit-mask: var(--chevrons) center / 15px 12px no-repeat;
  mask: var(--chevrons) center / 15px 12px no-repeat;
  transition: transform .3s, opacity .3s;
}
.btn-c::after { transform: translateX(-100%); opacity: 0; }
.btn:hover .btn-c::before { transform: translateX(100%); opacity: 0; }
.btn:hover .btn-c::after { transform: none; opacity: 1; transition-delay: .2s; }

.btn:hover { background: var(--encre); color: #fff; }
.sombre .btn:hover { background: var(--accent); color: var(--encre); }
.sombre .btn:hover .btn-c { background: #fff; }

.btn--plein { background: var(--accent); }
.btn--plein .btn-c { background: var(--encre); color: var(--accent); }
.btn--plein:hover,
.sombre .btn--plein:hover { background: #fff; color: var(--encre); }
.sombre .btn--plein:hover .btn-c { background: var(--encre); }

.btn--encre { background: var(--encre); color: #fff; }
.btn--encre:hover { background: #fff; color: var(--encre); }

/* bouton rond qui s'ouvre au survol */
.btn--rond { padding: 12.5px; }
.btn--rond .btn-c { margin-left: 0; }
.btn--rond .btn-t {
  max-width: 0;
  opacity: 0;
  transition: max-width .5s var(--elan), opacity .3s, margin .5s var(--elan);
}
.btn--rond:hover .btn-t,
.btn--rond:focus-visible .btn-t {
  max-width: 280px;
  margin: 0 16px 0 14px;
  opacity: 1;
}
.btn--rond:hover { background: #fff; color: var(--encre); }

.rond {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  padding: 0;
  border: 1px solid currentColor;
  border-radius: 50%;
  background: none;
  cursor: pointer;
  transition: background-color .3s, color .3s, opacity .3s;
}
.rond::before {
  content: "";
  width: 20px;
  height: 16px;
  background: currentColor;
  -webkit-mask: var(--chevrons) center / contain no-repeat;
  mask: var(--chevrons) center / contain no-repeat;
  transition: transform .3s ease-out;
}
.rond--avant::before { transform: rotate(180deg); }
.rond:hover { background: var(--accent); color: var(--encre); border-color: var(--accent); }
.rond--apres:hover::before { transform: translateX(4px); }
.rond--avant:hover::before { transform: rotate(180deg) translateX(4px); }
.rond:disabled { opacity: .35; pointer-events: none; }

/* ---------- en-tête ---------- */

.entete {
  position: fixed;
  inset: 0 0 auto;
  z-index: 700;
  color: #fff;
  transition: background-color .6s, color .6s, box-shadow .6s, transform .6s, opacity .6s, visibility .6s;
}
.entete .conteneur {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 25px;
  padding-bottom: 25px;
}
body.a-defile .entete,
body.sans-banniere .entete,
body.menu-ouvert .entete {
  background: #fff;
  color: var(--encre);
}
body.a-defile .entete { box-shadow: 0 4px 64px rgba(100, 104, 140, .2); }
body.descend:not(.menu-ouvert) .entete {
  opacity: 0;
  visibility: hidden;
  transform: translateY(-100%);
}

.logo {
  display: inline-flex;
  flex-direction: column;
  font: 900 29px/.88 var(--titre);
  font-feature-settings: "lnum" 1;
  letter-spacing: .035em;
}
.logo span + span {
  font-size: .745em;
  letter-spacing: .075em;
}
.logo i {
  font-style: normal;
  color: var(--accent);
}

.nav ul { display: flex; }
.nav a {
  position: relative;
  display: block;
  overflow: hidden;
  padding: 0 20px;
  font: 600 18px/1.985 var(--texte);
}
.nav a span {
  display: block;
  text-shadow: 0 1.985em 0 currentColor;
  transition: transform .5s;
}
.nav a:hover span { transform: translateY(-1.985em); }
.nav a[aria-current]::after {
  content: "";
  position: absolute;
  left: 20px;
  right: 20px;
  bottom: 1px;
  height: 3px;
  border-radius: 2px;
  background: var(--accent);
}

.menu-bouton {
  display: none;
  width: 46px;
  height: 46px;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
}
.menu-bouton i {
  display: block;
  width: 26px;
  height: 3px;
  margin: 5px auto;
  border-radius: 2px;
  background: currentColor;
  transition: transform .3s, opacity .3s;
}
.menu-ouvert .menu-bouton i:nth-child(1) { transform: translateY(8px) rotate(45deg); }
.menu-ouvert .menu-bouton i:nth-child(2) { opacity: 0; }
.menu-ouvert .menu-bouton i:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

/* ---------- accueil : carrousel plein écran, le contenu glisse par-dessus ---------- */

.hero {
  position: fixed;
  inset: 0;
  z-index: 1;
  height: 100svh;
  overflow: hidden;
  background: var(--nuit);
  color: #f8f8f8;
}
.hero.cache,
.hero.cache .hero-vue,
.banniere.cache { visibility: hidden; }

.hero-vue {
  position: absolute;
  inset: 0;
  opacity: 0;
  visibility: hidden;
  transition: opacity 1.1s ease, visibility 0s 1.1s;
}
.hero-vue.actif {
  z-index: 1;
  opacity: 1;
  visibility: visible;
  transition: opacity 1.1s ease;
}
.hero-vue > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--pos, center);
  transform: scale(1.07);
  transition: transform 9s linear;
}
.hero-vue.actif > img { transform: none; }
.hero-vue::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(var(--voile), .45) 0, rgba(var(--voile), 0) 30%),
    linear-gradient(22deg, rgba(var(--voile), .68) 0, rgba(var(--voile), 0) 58%),
    rgba(var(--voile), .1);
}

.hero-texte {
  position: absolute;
  inset: auto 0 157px;
  z-index: 2;
}
.hero-texte .h {
  max-width: 680px;
  font: 900 clamp(34px, 3.5vw, 60px)/1.02 var(--titre);
  text-shadow: 0 4px 10px rgba(0, 0, 0, .15);
}
.hero-texte .sous {
  max-width: 520px;
  margin-top: 14px;
  font-size: 18px;
  line-height: 1.45;
}
.js .hero-vue .hero-texte > .conteneur > * {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .8s .35s, transform .8s .35s;
}
.js .hero-vue.actif .hero-texte > .conteneur > * { opacity: 1; transform: none; }
.js .hero-vue.actif .hero-texte > .conteneur > .sous { transition-delay: .5s; }

.hero-cta {
  position: absolute;
  right: 110px;
  bottom: 94px;
  z-index: 3;
}

.hero-points {
  position: absolute;
  inset: auto 0 59px;
  z-index: 3;
}
.hero-points .conteneur { display: flex; gap: 8px; }
.hero-points button {
  padding: 14px 0;
  border: 0;
  background: none;
  cursor: pointer;
}
.hero-points i,
.tirets i {
  position: relative;
  display: block;
  width: 34px;
  height: 5px;
  overflow: hidden;
  border-radius: 3px;
  background: rgba(255, 255, 255, .92);
}
.hero-points i::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--accent);
  transform: scaleX(0);
  transform-origin: left;
}
.hero-points .actif i::after { animation: jauge var(--duree, 6s) linear forwards; }
.hero-points.fixe .actif i::after { animation: none; transform: none; }
@keyframes jauge { to { transform: none; } }

.accueil main {
  position: relative;
  z-index: 2;
  margin-top: 100vh;
  margin-top: 100svh;
  border-radius: var(--rayon) var(--rayon) 0 0;
  background: #fff;
}

.panneau {
  padding: 96px 0 95px;
  border-radius: var(--rayon) var(--rayon) 0 0;
  background: #fff;
}

/* ---------- cartes de jeux ---------- */

.jeux {
  display: flex;
  flex-wrap: wrap;
  gap: 41px 37px;
}

.jeu {
  position: relative;
  isolation: isolate;
  width: calc(33.333% - 24.67px);
  border-radius: var(--rayon);
  background: var(--nuit) var(--fond) var(--pos, center) / cover no-repeat;
  color: #f8f8f8;
}
.jeu::before {
  content: "";
  display: block;
  padding-bottom: 113.65%;
}
.jeu::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: inherit;
  background: rgba(var(--voile), .26);
  transition: background-color .5s;
}
.jeu:hover::after,
.jeu:focus-within::after { background: rgba(var(--voile), .6); }

.jeu-lien {
  position: absolute;
  inset: 0;
  z-index: 3;
  border-radius: inherit;
}
.jeu-logo {
  position: absolute;
  top: 28px;
  left: 30px;
  right: 20px;
  z-index: 2;
}
.jeu-texte {
  position: absolute;
  top: 126px;
  left: 0;
  z-index: 2;
  max-width: 78%;
  padding: 3px 41px;
  opacity: 0;
  transition: opacity .5s;
}
.jeu-texte h3 {
  margin-bottom: 6px;
  font: 900 clamp(22px, 2.08vw, 30px)/1.2 var(--titre);
}
.jeu-texte p {
  font-size: 14px;
  line-height: 1.35;
}
.jeu-jouer {
  position: absolute;
  left: 41px;
  bottom: 38px;
  z-index: 4;
  opacity: 0;
  transition: opacity .5s;
}
.jeu-jouer p {
  margin-bottom: 8px;
  font-size: 16px;
  font-weight: 600;
}
.jeu-jouer a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 42px;
  padding: 0 18px 0 6px;
  border: 1px solid #fff;
  border-radius: 40px;
  font-size: 14px;
  font-weight: 600;
  transition: background-color .3s, color .3s;
}
.jeu-jouer a::before {
  content: "";
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--accent) var(--chevrons) center / 13px 11px no-repeat;
}
.jeu-jouer a:hover { background: #fff; color: var(--encre); }
.jeu:hover .jeu-texte,
.jeu:hover .jeu-jouer,
.jeu:focus-within .jeu-texte,
.jeu:focus-within .jeu-jouer { opacity: 1; }

.jeu-perso {
  position: absolute;
  right: -30px;
  bottom: 0;
  z-index: 1;
  width: auto;
  max-width: 62%;
  max-height: 78%;
  object-fit: contain;
  object-position: right bottom;
  pointer-events: none;
  transform-origin: 70% 100%;
  transition: transform .5s var(--elan);
}
.jeu:hover .jeu-perso { transform: scale(1.06) rotate(-2deg); }

/* carte large : tout est affiché d'emblée */
.jeu--large { width: 100%; }
.jeu--large::before { padding-bottom: 45.9%; }
.jeu--large::after { background: linear-gradient(90deg, rgba(var(--voile), .72) 0, rgba(var(--voile), .18) 58%, rgba(var(--voile), .05)); }
.jeu--large:hover::after,
.jeu--large:focus-within::after { background: linear-gradient(90deg, rgba(var(--voile), .82) 0, rgba(var(--voile), .3) 58%, rgba(var(--voile), .12)); }
.jeu--large .jeu-logo { top: 38px; left: 44px; }
.jeu--large .jeu-texte {
  top: auto;
  bottom: 150px;
  max-width: min(480px, 60%);
  padding: 0 44px;
  opacity: 1;
}
.jeu--large .jeu-jouer { left: 44px; bottom: 42px; opacity: 1; }

/* cartes en deux colonnes de la page des jeux */
.jeux--duo .jeu { width: calc(50% - 18.5px); }
.jeux--duo .jeu::before { padding-bottom: 75%; }

.jeu--vide {
  border: 3px dashed #cfd3e4;
  background: var(--doux);
  color: var(--encre);
}
.jeu--idee { background: var(--accent); color: var(--encre); }
.jeu--vide::after,
.jeu--idee::after { content: none; }
.jeu-centre {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  padding: clamp(26px, 3.4vw, 48px);
}
.jeu-centre h3 { margin-bottom: 10px; font: 900 clamp(24px, 2.5vw, 38px)/1.15 var(--titre); }
.jeu-centre p { max-width: 400px; margin-bottom: 22px; font-size: 16px; line-height: 1.5; }
.jeu--vide .jeu-centre p { margin-bottom: 0; color: var(--encre-2); }
.jeu-plus {
  position: absolute;
  top: clamp(26px, 3.4vw, 48px);
  left: clamp(26px, 3.4vw, 48px);
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 8px 24px rgba(21, 27, 61, .1);
}
.jeu-plus::before,
.jeu-plus::after {
  content: "";
  position: absolute;
  inset: 0;
  width: 22px;
  height: 4px;
  margin: auto;
  border-radius: 2px;
  background: var(--encre);
}
.jeu-plus::after { transform: rotate(90deg); }
.jeu--idee .jeu-centre p { max-width: 52%; }
.jeu--idee .jeu-perso { right: 4%; max-height: 92%; max-width: 40%; }

.suivant {
  margin-top: 55px;
  text-align: center;
}

/* logo du jeu Plein Pot : lettres jaunes cernées d'encre */
.contour {
  --o: .085em;
  --c: #1d2466;
  text-shadow:
    var(--o) 0 0 var(--c),
    calc(var(--o) * .924) calc(var(--o) * .383) 0 var(--c),
    calc(var(--o) * .707) calc(var(--o) * .707) 0 var(--c),
    calc(var(--o) * .383) calc(var(--o) * .924) 0 var(--c),
    0 var(--o) 0 var(--c),
    calc(var(--o) * -.383) calc(var(--o) * .924) 0 var(--c),
    calc(var(--o) * -.707) calc(var(--o) * .707) 0 var(--c),
    calc(var(--o) * -.924) calc(var(--o) * .383) 0 var(--c),
    calc(var(--o) * -1) 0 0 var(--c),
    calc(var(--o) * -.924) calc(var(--o) * -.383) 0 var(--c),
    calc(var(--o) * -.707) calc(var(--o) * -.707) 0 var(--c),
    calc(var(--o) * -.383) calc(var(--o) * -.924) 0 var(--c),
    0 calc(var(--o) * -1) 0 var(--c),
    calc(var(--o) * .383) calc(var(--o) * -.924) 0 var(--c),
    calc(var(--o) * .707) calc(var(--o) * -.707) 0 var(--c),
    calc(var(--o) * .924) calc(var(--o) * -.383) 0 var(--c),
    0 calc(var(--o) * 1.9) 0 var(--c);
}

.pp-logo {
  display: inline-flex;
  gap: .2em;
  font: 400 var(--pp, 54px)/1 var(--jeu);
  letter-spacing: .01em;
  rotate: -3deg;
}
.pp-logo span {
  position: relative;
  color: #1d2466;
}
.pp-logo span::after {
  content: attr(data-t);
  position: absolute;
  left: 0;
  top: 0;
  text-shadow: none;
  background: linear-gradient(180deg, #fff38a 6%, #ffd23f 40%, #ff9a1f 94%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

.mot-jeu {
  display: inline-block;
  font: 400 var(--pp, 44px)/1 var(--jeu);
  letter-spacing: .01em;
  color: #fff;
  rotate: -3deg;
}

/* ---------- bandeau du studio : la carte grandit en entrant dans l'écran ---------- */

.bande {
  position: relative;
  padding-top: 40px;
  background: #fff;
}
.bande-carte {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: min(57vw, 880px);
  overflow: hidden;
  border-radius: var(--rayon);
  background: var(--nuit);
  color: #f8f8f8;
  transform: scale(var(--e, 1));
  will-change: transform;
}
.bande-fond {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.bande-carte::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(180deg, rgba(var(--voile), .62) 0, rgba(var(--voile), .12) 46%, rgba(var(--voile), .7) 100%),
    rgba(var(--voile), .16);
}
.bande-contenu {
  position: relative;
  z-index: 2;
  display: flex;
  flex: 1;
  flex-wrap: wrap;
  align-content: space-between;
  justify-content: space-between;
  width: 100%;
  padding-top: clamp(40px, 4.2vw, 64px);
}
.bande-g { max-width: 600px; }
.bande-sur {
  margin-bottom: -6px;
  color: var(--accent);
  font: 800 30px/1.8 var(--titre);
  font-feature-settings: "lnum" 1;
  letter-spacing: .03em;
}
.bande-d {
  max-width: 350px;
  padding-top: 14px;
}
.bande-d p {
  margin-bottom: 26px;
  font-size: 16px;
  line-height: 1.6;
}

.chiffres {
  display: flex;
  width: 100%;
  padding-top: 60px;
}
.chiffres li {
  width: 33.333%;
  padding: 0 5px;
  text-align: center;
}
.chiffres b {
  display: block;
  color: var(--accent);
  font: 800 clamp(38px, 3.5vw, 52px)/1.5 var(--texte);
}
.chiffres span { font-size: 14px; }

.defile {
  position: relative;
  z-index: 2;
  overflow: hidden;
  padding: 26px 0 34px;
}
.defile-piste {
  display: flex;
  align-items: flex-end;
  gap: clamp(50px, 7vw, 110px);
  width: max-content;
  padding-right: clamp(50px, 7vw, 110px);
  animation: roule var(--t, 38s) linear infinite;
}
.defile-piste img {
  width: auto;
  height: clamp(64px, 7vw, 104px);
  filter: drop-shadow(0 12px 10px rgba(0, 0, 0, .35));
}
@keyframes roule { to { transform: translateX(-50%); } }

/* ---------- nouveautés ---------- */

.actus {
  position: relative;
  padding: 82px 0 124px;
  background: #fff;
}
.actus-tete {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  padding-bottom: 34px;
}
.actus-tete p { font-size: 16px; }

.actus-cadre {
  position: relative;
  padding: 0 86px;
}
.actus-vue { overflow: hidden; border-radius: var(--rayon-s); }
.actus-piste {
  display: flex;
  transition: transform .7s var(--elan);
}
.actus-page {
  display: flex;
  flex: 0 0 100%;
  gap: 36px;
}
.actus-page > :first-child { width: calc(46.5% - 18px); }
.actus-colonne {
  display: flex;
  flex-direction: column;
  gap: 35px;
  width: calc(53.5% - 18px);
}

.actu {
  position: relative;
  display: block;
  overflow: hidden;
  min-height: 250px;
  border-radius: var(--rayon-s);
  background: var(--nuit);
  color: #f8f8f8;
}
.actus-colonne .actu { flex: 1; }
.actu img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .3s;
}
.actu:hover img { transform: scale(1.03); }
.actu::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(var(--voile), .6) 0, rgba(var(--voile), .08) 62%);
  transition: background-color .3s;
}
.actu:hover::after { background-color: rgba(var(--voile), .34); }
.actu-texte {
  position: relative;
  z-index: 2;
  display: block;
  padding: clamp(24px, 3.2vw, 45px) clamp(24px, 3.6vw, 52px);
}
.actu-texte b {
  display: block;
  margin-bottom: 10px;
  font: 800 clamp(18px, 1.55vw, 22px)/1.3 var(--titre);
  font-feature-settings: "lnum" 1;
}
.actu-texte time {
  display: block;
  margin-bottom: 11px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.3;
}
.actu-texte small {
  display: block;
  max-width: 380px;
  font-size: 15px;
  line-height: 1.5;
  opacity: 0;
  transition: opacity .3s;
}
.actu:hover small,
.actu:focus-visible small { opacity: 1; }

.actus-fleche {
  position: absolute;
  top: 50%;
  width: 64px;
  height: 64px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: none;
  cursor: pointer;
  transform: translateY(-50%);
  transition: background-color .3s, opacity .3s;
}
.actus-fleche::before {
  content: "";
  position: absolute;
  inset: 16px 14px;
  background: var(--encre);
  -webkit-mask: var(--chevrons) center / contain no-repeat;
  mask: var(--chevrons) center / contain no-repeat;
}
.actus-fleche--avant { left: 0; }
.actus-fleche--avant::before { transform: rotate(180deg); }
.actus-fleche--apres { right: 0; }
.actus-fleche:hover { background: var(--accent); }
.actus-fleche:disabled { opacity: .22; pointer-events: none; }

/* ---------- appel à écrire ---------- */

.contact {
  position: relative;
  z-index: 2;
  padding-bottom: 70px;
  background: #fff;
}
.contact-image {
  position: relative;
  max-width: 1920px;
  height: clamp(170px, 22vw, 330px);
  margin: 0 auto;
  overflow: hidden;
  border-radius: var(--rayon) var(--rayon) 0 0;
}
.contact-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 38%;
}
.contact-image::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(var(--voile), .14);
}
.contact-contenu {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 24px;
  padding-top: 54px;
}
.contact-contenu .t2 { font-weight: 800; }
.contact-d {
  max-width: 400px;
  padding-top: 9px;
}
.contact-d p {
  margin-bottom: 36px;
  color: var(--encre-2);
  line-height: 1.5;
}

/* ---------- pied de page ---------- */

.pied {
  position: relative;
  z-index: 2;
  overflow: hidden;
  background: var(--accent);
  color: var(--encre);
}
.pied-haut {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  max-width: 1440px;
  margin: 0 auto;
}
.pied-g {
  position: relative;
  width: 32.8%;
  padding: 71px 40px 50px;
  border-radius: 0 0 57px;
  background: #fff;
}
.pied-g::before {
  content: "";
  position: absolute;
  top: 0;
  right: 20%;
  width: 50vw;
  height: 100%;
  background: #fff;
}
.pied-g > * { position: relative; }
.pied-g h2 {
  margin-bottom: 30px;
  font: 700 30px/1.5 var(--titre);
}
.pied-g p {
  margin-top: 26px;
  color: var(--encre-2);
  font-size: 15px;
  line-height: 1.5;
}
.pied-d {
  display: flex;
  gap: clamp(40px, 9vw, 129px);
  width: 67.2%;
  padding: 71px 40px 30px 19.3%;
}
.pied-d h3 {
  margin-bottom: 11px;
  font: 700 18px/1.5 var(--texte);
  text-transform: uppercase;
}
.pied-d a {
  font: 600 16px/37px var(--texte);
  letter-spacing: -.16px;
}
.pied-d a:hover { text-decoration: underline; text-underline-offset: 4px; }
.pied-bas {
  max-width: 1440px;
  margin: 0 auto;
  padding: 25px 40px 41px;
  font-size: 16px;
  font-feature-settings: "lnum" 1;
  letter-spacing: -.16px;
}

.haut {
  position: fixed;
  right: 34px;
  bottom: 44px;
  z-index: 600;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--encre);
  font: 700 14px/1.5 var(--texte);
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transition: opacity .4s, visibility .4s;
}
.haut::before {
  content: "";
  width: 40px;
  height: 40px;
  border: 3px solid #fff;
  border-radius: 50%;
  background: var(--accent) var(--chevrons) center / 14px 12px no-repeat;
  box-shadow: 0 6px 18px rgba(21, 27, 61, .2);
  rotate: -90deg;
  transition: scale .3s var(--elan);
}
.haut:hover::before { scale: 1.12; }
.haut span {
  padding: 0 7px;
  border-radius: 20px;
  background: rgba(255, 255, 255, .86);
}
body.loin .haut { opacity: 1; visibility: visible; }

/* ---------- pages intérieures : bannière fixe ---------- */

.banniere {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1;
  width: 100%;
  height: var(--ban);
  overflow: hidden;
  background: var(--nuit);
  color: #f8f8f8;
}
.banniere > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--pos, center);
}
.banniere::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(var(--voile), .5) 0, rgba(var(--voile), 0) 34%),
    linear-gradient(25deg, rgba(var(--voile), .78) 0, rgba(var(--voile), .1) 62%),
    rgba(var(--voile), .22);
}
.banniere-texte {
  position: absolute;
  inset: auto 0 clamp(96px, 10.1vw, 146px);
  z-index: 2;
}
.fil {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font: 500 16px/22px var(--titre);
  font-feature-settings: "lnum" 1;
}
.fil::before {
  content: "";
  width: 13px;
  height: 11px;
  background: var(--accent);
  -webkit-mask: var(--chevrons) center / contain no-repeat;
  mask: var(--chevrons) center / contain no-repeat;
}
.banniere h1 {
  margin-bottom: 14px;
  font: 900 clamp(40px, 4.41vw, 72px)/1.2 var(--titre);
}
.banniere p {
  max-width: 615px;
  font-size: clamp(17px, 1.4vw, 20px);
  line-height: 1.5;
}

.avec-banniere main {
  position: relative;
  z-index: 2;
  margin-top: calc(var(--ban) - 44px);
  border-radius: var(--rayon) var(--rayon) 0 0;
  background: #fff;
}
.sans-banniere main { padding-top: 150px; }

/* ---------- le studio : quatre étapes qui se relaient pendant le défilement ---------- */

.mission {
  position: relative;
  padding-top: 36px;
}
.mission-pas {
  display: flex;
  align-items: center;
  gap: 30px;
  padding: 53px 0;
}
.mission-texte { width: 46.72%; }
.mission-texte p {
  max-width: 475px;
  margin-top: 20px;
}
.mission-image {
  position: relative;
  width: 53.28%;
}
.mission-image img {
  width: 100%;
  max-height: 70vh;
  object-fit: contain;
}
.mission-points { display: none; }

@media (min-width: 901px) {
  .js .mission { height: 400vh; padding-top: 0; }
  .js .mission-fixe {
    position: sticky;
    top: 0;
    height: 100vh;
    overflow: hidden;
  }
  .js .mission-cadre { position: relative; height: 100%; }
  .js .mission-pas {
    position: absolute;
    inset: 0 var(--bord);
    visibility: hidden;
  }
  .js .mission-pas.actif { visibility: visible; }
  .js .mission-texte {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity .35s, transform .35s;
  }
  .js .mission-pas.actif .mission-texte {
    opacity: 1;
    transform: none;
    transition: opacity .5s .15s, transform .5s .15s;
  }
  .js .mission-image img {
    opacity: 0;
    transform: scale(.3);
    transition: opacity .3s, transform .3s;
  }
  .js .mission-pas.actif .mission-image img {
    opacity: 1;
    transform: none;
    transition: opacity .5s, transform .6s var(--elan);
  }
  .js .mission-points {
    position: absolute;
    left: var(--bord);
    bottom: 19%;
    display: flex;
    gap: 8px;
  }
}
.tirets i { background: #e2e4ee; transition: background-color .3s; }
.tirets i.fait { background: var(--accent-fonce); }
.sombre .tirets i { background: rgba(255, 255, 255, .92); }
.sombre .tirets i.fait { background: var(--accent); }
.tirets--boutons { display: flex; gap: 8px; justify-content: center; }
.tirets--boutons button { padding: 12px 0; border: 0; background: none; cursor: pointer; }

/* téléphone dessiné, avec une capture du jeu dedans */
.telephone {
  position: relative;
  width: min(300px, 62vw);
  aspect-ratio: 600 / 1250;
  margin: 0 auto;
  overflow: hidden;
  border: 9px solid #0f1330;
  border-radius: 40px;
  background: #0f1330;
  box-shadow: 0 30px 60px rgba(8, 12, 40, .35), 0 0 0 2px rgba(255, 255, 255, .14);
}
.telephone img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.mission-image .telephone { rotate: 5deg; }
.js .mission-image .telephone {
  opacity: 0;
  scale: .3;
  transition: opacity .3s, scale .3s;
}
.js .mission-pas.actif .mission-image .telephone,
.js .mission-image .telephone.vu {
  opacity: 1;
  scale: 1;
  transition: opacity .5s, scale .6s var(--elan);
}
.js .mission-image .telephone img { opacity: 1; transform: none; }

/* bloc sombre « la suite » */
.suite {
  position: relative;
  max-width: 1920px;
  margin: 0 auto;
  padding: clamp(70px, 8.9vw, 128px) 0 clamp(80px, 10.7vw, 155px);
  overflow: hidden;
  border-radius: var(--rayon);
  background: var(--nuit);
  color: #fff;
}
.suite-fond {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.suite::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(var(--voile), .68);
}
.suite > .conteneur,
.suite-bas { position: relative; z-index: 2; }
.suite .t3 { max-width: 560px; margin-bottom: 24px; }
.suite p { max-width: 526px; }
.suite-bas {
  display: flex;
  align-items: center;
  gap: clamp(30px, 5vw, 70px);
  margin-top: clamp(60px, 9vw, 130px);
}
.suite-images {
  flex: 1;
  min-width: 0;
  overflow: hidden;
}
.suite-images .defile-piste {
  align-items: stretch;
  gap: 20px;
  padding-right: 20px;
  --t: 46s;
}
.suite-images img {
  width: clamp(240px, 29vw, 418px);
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: var(--rayon-s);
  filter: none;
}
.suite-bas > p {
  flex: none;
  width: min(36%, 470px);
  padding-right: var(--bord);
}

.envie {
  padding: clamp(80px, 9.6vw, 138px) 0;
  text-align: center;
}
.envie::before {
  content: "";
  display: block;
  width: 26px;
  height: 22px;
  margin: 0 auto 14px;
  background: var(--accent-fonce);
  -webkit-mask: var(--chevrons) center / contain no-repeat;
  mask: var(--chevrons) center / contain no-repeat;
  rotate: 90deg;
}
.envie .t2 { margin-bottom: 40px; }

/* ---------- page des jeux ---------- */

.intro {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 24px 60px;
  padding: clamp(60px, 8.3vw, 119px) 0 37px;
}
.intro .t4 { max-width: 620px; }
.intro p {
  max-width: 532px;
  padding-top: 4px;
  font-size: 16px;
  line-height: 1.9;
}
.jeux-bloc { padding: 0 0 clamp(80px, 9vw, 130px); }
.jeux-bloc .jeux + .jeux { margin-top: 41px; }

/* ---------- fiche d'un jeu ---------- */

.fiche-tete {
  position: relative;
  padding-bottom: 50px;
}
.fiche-carte {
  position: relative;
  max-width: 1226px;
  margin: 0 auto;
  padding: clamp(50px, 5vw, 76px) clamp(24px, 14vw, 200px) clamp(56px, 5.6vw, 84px);
  overflow: hidden;
  border-radius: var(--rayon);
  background:
    radial-gradient(120% 90% at 50% 0, rgba(124, 92, 255, .55), rgba(124, 92, 255, 0) 60%),
    repeating-conic-gradient(from 0deg at 50% 118%, rgba(255, 255, 255, .05) 0 7deg, rgba(255, 255, 255, 0) 7deg 14deg),
    #262b77;
  color: #fff;
  text-align: center;
}
.fiche-icone {
  width: 108px;
  height: 108px;
  margin: 0 auto 26px;
  border: 4px solid rgba(255, 255, 255, .9);
  border-radius: 26px;
  box-shadow: 0 14px 30px rgba(8, 12, 40, .4);
}
.fiche-carte h1 { --pp: clamp(54px, 6.4vw, 92px); }
.fiche-ruban {
  display: inline-block;
  margin: 18px 0 26px;
  padding: 7px 22px 9px;
  border: 4px solid #1d2466;
  border-radius: 999px;
  background: #f0485f;
  font: 400 clamp(17px, 1.7vw, 24px)/1.1 var(--jeu);
  rotate: -2deg;
}
.fiche-carte > p {
  max-width: 560px;
  margin: 0 auto 34px;
  font-size: clamp(16px, 1.4vw, 20px);
  line-height: 1.55;
}
.fiche-carte small {
  display: block;
  margin-top: 18px;
  font-size: 14px;
  opacity: .82;
}
.fiche-perso {
  position: absolute;
  z-index: 3;
  width: auto;
  pointer-events: none;
}
.fiche-perso--g {
  left: max(0px, calc(50% - 713px));
  top: 14%;
  height: 64%;
}
.fiche-perso--d {
  right: max(0px, calc(50% - 713px));
  bottom: 0;
  height: 72%;
}

.bloc { padding: clamp(60px, 7vw, 100px) 0; }
.bloc-titre {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: clamp(30px, 4vw, 56px);
}
.bloc-titre--centre { justify-content: center; }
.bloc-titre > div { display: flex; flex: none; gap: 12px; }

.etapes {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 36px;
}
.etapes li {
  padding: 34px 32px 36px;
  border-radius: var(--rayon);
  background: var(--doux);
}
.etapes b {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  margin-bottom: 18px;
  border-radius: 50%;
  background: var(--accent);
  font: 800 20px/1 var(--texte);
}
.etapes h3 {
  margin-bottom: 8px;
  font: 800 22px/1.25 var(--titre);
}
.etapes p {
  color: var(--encre-2);
  font-size: 16px;
  line-height: 1.55;
}

.persos {
  display: flex;
  gap: clamp(18px, 2.6vw, 38px);
  overflow-x: auto;
  padding: 8px 4px 20px;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
.persos::-webkit-scrollbar { display: none; }
.perso {
  flex: 0 0 clamp(150px, 16.6vw, 216px);
  scroll-snap-align: start;
  text-align: center;
}
.perso-rond {
  position: relative;
  aspect-ratio: 1;
  overflow: hidden;
  border-radius: 50%;
  background: var(--c, var(--doux));
  box-shadow: inset 0 0 0 0 var(--accent);
  transition: box-shadow .3s;
}
.perso:hover .perso-rond { box-shadow: inset 0 0 0 6px var(--accent); }
.perso-rond img {
  position: absolute;
  left: 50%;
  top: 9%;
  width: var(--l, 118%);
  max-width: none;
  translate: -50% 0;
  transition: scale .4s var(--elan);
  transform-origin: 50% 20%;
}
.perso:hover .perso-rond img { scale: 1.08; }
.perso h3 {
  margin-top: 16px;
  font: 800 20px/1.25 var(--titre);
}
.perso p {
  margin-top: 4px;
  color: var(--encre-2);
  font-size: 14px;
  line-height: 1.45;
}

.ecrans {
  position: relative;
  max-width: 1920px;
  margin: 0 auto;
  padding: clamp(60px, 6.4vw, 92px) 0 clamp(64px, 7vw, 100px);
  overflow: hidden;
  border-radius: var(--rayon);
  background: var(--nuit);
  color: #fff;
  text-align: center;
}
.ecrans > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ecrans::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(var(--voile), .74);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}
.ecrans .conteneur { position: relative; z-index: 2; }
.ecrans .pp-logo { --pp: clamp(44px, 4.6vw, 66px); margin-bottom: clamp(34px, 4vw, 56px); }
.ecrans-scene {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(14px, 5vw, 74px);
}
.ecrans .telephone img {
  opacity: 0;
  transition: opacity .5s;
}
.ecrans .telephone img.actif { opacity: 1; }
.ecrans-textes {
  display: grid;
  max-width: 640px;
  margin: 44px auto 0;
}
.ecrans-textes > div {
  grid-area: 1 / 1;
  opacity: 0;
  visibility: hidden;
  transform: translateY(14px);
  transition: opacity .4s, transform .4s, visibility 0s .4s;
}
.ecrans-textes > div.actif {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition: opacity .4s .1s, transform .4s .1s;
}
.ecrans-textes h3 {
  display: inline-block;
  margin-bottom: 12px;
  font: 800 clamp(24px, 2.4vw, 34px)/1.25 var(--titre);
}
.ecrans-textes p {
  font-size: 16px;
  line-height: 1.6;
}
.ecrans .tirets--boutons { margin-top: 26px; }

.nouveautes {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px 36px;
}
.nouveaute { scroll-margin-top: 120px; }
.nouveaute img {
  width: 100%;
  aspect-ratio: 1090 / 504;
  object-fit: cover;
  border-radius: var(--rayon-s);
}
.nouveaute-info {
  display: flex;
  gap: 12px;
  align-items: center;
  margin: 18px 0 8px;
  color: var(--encre-2);
  font-size: 14px;
  font-weight: 600;
}
.nouveaute-info span {
  padding: 2px 12px;
  border-radius: 20px;
  background: var(--accent);
  color: var(--encre);
}
.nouveaute h3 { font: 800 21px/1.3 var(--titre); font-feature-settings: "lnum" 1; }
.nouveaute p {
  margin-top: 8px;
  color: var(--encre-2);
  font-size: 16px;
  line-height: 1.55;
}
.nouveaute:target h3 { background: linear-gradient(transparent 56%, var(--accent) 56% 92%, transparent 92%); display: inline; }

.appel {
  position: relative;
  max-width: 1226px;
  margin: 0 auto clamp(70px, 8vw, 110px);
  padding: clamp(46px, 5.6vw, 80px) clamp(24px, 5vw, 70px);
  border-radius: var(--rayon);
  background: var(--accent);
}
.appel-texte { max-width: 560px; }
.appel .t2 { margin-bottom: 14px; }
.appel p {
  margin-bottom: 30px;
  line-height: 1.55;
}
.appel-perso {
  position: absolute;
  right: 5%;
  bottom: 0;
  height: 118%;
  width: auto;
  pointer-events: none;
}
.appel-perso + .appel-perso { right: 22%; height: 104%; }

/* ---------- page de texte ---------- */

.prose {
  max-width: 860px;
  padding-bottom: clamp(70px, 8vw, 120px);
}
.prose h1 {
  margin-bottom: 14px;
  font: 900 clamp(36px, 4vw, 60px)/1.15 var(--titre);
}
.prose h2 {
  margin: 54px 0 12px;
  font: 800 clamp(22px, 2vw, 28px)/1.3 var(--titre);
}
.prose p,
.prose li {
  color: var(--encre-2);
  font-size: 17px;
}
.prose p + p { margin-top: 12px; }
.prose ul {
  margin-top: 10px;
  padding-left: 22px;
  list-style: disc;
}
.prose a { text-decoration: underline; text-underline-offset: 3px; color: var(--encre); }
.prose .chapo { color: var(--encre); font-size: 20px; }
.a-completer {
  padding: 1px 8px;
  border-radius: 6px;
  background: var(--accent);
  color: var(--encre);
  font-weight: 600;
}

/* ---------- écrans moyens ---------- */

@media (max-width: 1100px) {
  .hero-cta { right: var(--bord); }
  .actus-cadre { padding: 0 64px; }
  .pied-d { padding-left: 10%; }
  .nouveautes { grid-template-columns: repeat(2, 1fr); }
  .appel-perso + .appel-perso { display: none; }
  .fiche-perso--g { height: 46%; top: 30%; }
  .fiche-perso--d { height: 52%; }
}

@media (max-width: 900px) {
  :root { --bord: 22px; --rayon: 28px; }
  body { font-size: 16px; }

  .menu-bouton { display: block; }
  .nav {
    position: fixed;
    inset: 0;
    z-index: -1;
    display: flex;
    align-items: center;
    padding: 110px var(--bord) 40px;
    background: #fff;
    color: var(--encre);
    opacity: 0;
    visibility: hidden;
    transition: opacity .4s, visibility .4s;
  }
  .menu-ouvert .nav { opacity: 1; visibility: visible; }
  .nav ul { flex-direction: column; gap: 6px; width: 100%; }
  .nav a {
    padding: 0;
    font: 800 34px/1.6 var(--titre);
  }
  .nav a span { text-shadow: none; }
  .nav a:hover span { transform: none; }
  .nav a[aria-current]::after { left: 0; right: auto; width: 46px; bottom: 4px; height: 5px; }

  .hero-vue::after {
    background:
      linear-gradient(180deg, rgba(var(--voile), .45) 0, rgba(var(--voile), 0) 26%),
      linear-gradient(0deg, rgba(var(--voile), .82) 0, rgba(var(--voile), .5) 34%, rgba(var(--voile), 0) 62%);
  }
  .hero-texte { bottom: 196px; }
  .hero-cta { bottom: 118px; left: var(--bord); right: auto; }
  .hero-points { bottom: 62px; }

  .panneau { padding: 64px 0 70px; }
  .titre-centre { padding-bottom: 40px; }
  .jeux { gap: 26px; }
  .jeu,
  .jeux--duo .jeu { width: 100%; }
  .jeu::before { padding-bottom: 96%; }
  .jeux--duo .jeu::before { padding-bottom: 84%; }
  .jeu--large::before { padding-bottom: 118%; }
  .jeu--large::after,
  .jeu--large:hover::after { background: linear-gradient(0deg, rgba(var(--voile), .92) 0, rgba(var(--voile), .66) 46%, rgba(var(--voile), .08) 74%); }
  .jeu--large { --pos: 50% 20%; }
  .jeu--large .jeu-logo { top: 26px; left: 26px; }
  .jeu--large .jeu-texte { max-width: none; padding: 0 26px; bottom: 124px; }
  .jeu--large .jeu-jouer { left: 26px; bottom: 30px; }
  .jeu-texte { top: 104px; padding: 3px 0 3px 30px; max-width: 60%; }
  .jeu-jouer { left: 30px; bottom: 28px; }
  .jeu-perso { right: -10px; }

  .bande { padding-top: 10px; }
  .bande-carte { min-height: 0; }
  .bande-contenu { display: block; padding-top: 44px; }
  .bande-d { max-width: none; padding-top: 20px; }
  .chiffres { padding-top: 54vw; }
  .chiffres span { font-size: 13px; line-height: 1.3; display: block; }
  .bande-fond { object-position: 50% 70%; }

  .actus { padding: 60px 0 80px; }
  .actus-tete { flex-direction: column; align-items: flex-start; }
  .actus-cadre { padding: 0; }
  .actus-vue { overflow: visible; }
  .actus-piste { flex-direction: column; gap: 22px; transform: none !important; }
  .actus-page { flex-direction: column; gap: 22px; }
  .actus-page > :first-child,
  .actus-colonne { width: 100%; }
  .actus-colonne { gap: 22px; }
  .actu { min-height: 230px; }
  .actus-page > .actu { min-height: 380px; }
  .actu-texte small { opacity: 1; }
  .actus-fleche { display: none; }

  .contact-contenu { padding-top: 36px; }
  .pied-g { width: 100%; border-radius: 0 0 40px 40px; padding: 48px var(--bord) 44px; }
  .pied-g::before { content: none; }
  .pied-d { width: 100%; padding: 44px var(--bord) 10px; gap: 44px; }
  .pied-bas { padding: 20px var(--bord) 96px; }
  .haut { right: 16px; bottom: 20px; }

  .banniere-texte { bottom: 84px; }
  .mission-pas { flex-direction: column-reverse; align-items: stretch; padding: 34px 0; }
  .mission-texte,
  .mission-image { width: 100%; }
  .mission-image img { max-height: 46vh; }
  .suite-bas { flex-direction: column; align-items: stretch; }
  .suite-bas > p { width: auto; padding: 0 var(--bord); }

  .fiche-carte { padding-bottom: 46vw; }
  .fiche-ruban { padding: 6px 14px 8px; border-width: 3px; font-size: min(4vw, 17px); white-space: nowrap; }
  .fiche-perso--g { left: 4%; top: auto; bottom: 0; height: 42vw; }
  .fiche-perso--d { right: 4%; height: 44vw; }
  .nouveautes { grid-template-columns: 1fr; }
  .etapes { grid-template-columns: 1fr; gap: 18px; }
  .appel { padding-bottom: 54vw; }
  .appel-perso { right: 8%; height: 56vw; }
  .sans-banniere main { padding-top: 120px; }
}

@media (max-width: 520px) {
  .logo { font-size: 25px; }
  .hero-texte .sous { font-size: 16px; }
  .bande-sur { font-size: 24px; }
  .pied-d { flex-direction: column; gap: 30px; }
  .ecrans .rond { display: none; }
  .btn { font-size: 16px; min-height: 54px; }
}

@media (hover: none) {
  .jeu::after { background: linear-gradient(180deg, rgba(var(--voile), .66) 0, rgba(var(--voile), .16) 70%); }
  .jeu-texte,
  .jeu-jouer,
  .actu-texte small { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01s !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01s !important;
  }
  .defile-piste { animation: none; }
  .bande-carte { transform: none; }
}
