/* ============================================================
   WRAPPED — LE PLAYER.
   REPRISE À L'IDENTIQUE du CSS de la maquette VALIDÉE
   design-prototypes/p3-wrapped/_v1-stories.html (section « B. PLAYER »),
   commentaires d'origine compris.
   SEULE modification : chaque sélecteur est préfixé par #wrapped, pour que les
   classes génériques (.card, .kick, .big, .sub, .grid, .stage…) restent
   enfermées dans l'écran et ne débordent pas sur le reste de l'app.
   NE PAS REDESSINER ICI : le design change dans la maquette d'abord.
   ============================================================ */
#wrapped {
  position: fixed;
  inset: 0;
  /* la hauteur DYNAMIQUE du mobile : avec la seule `inset:0`, l'apparition de
     la barre d'URL repoussait le bas de l'écran hors de la zone visible. */
  height: 100dvh;
  z-index: 9100;
  overflow: hidden;

  /* LES TOKENS DE LA MAQUETTE, REPRIS TELS QUELS ET FIGÉS ICI.
     L'app a des thèmes (Abîme, SYSTEM, peaux d'event) qui redéfinissent --fd,
     --fb, --paper, --ink… Sans ce verrou, le récap se repeindrait en Orbitron
     sur fond bleu-noir et ne ressemblerait plus à ce qui a été validé. */
  --paper: #FFFEF7; --ink: #0A0A0A; --gray: #C8C8C8; --gray2: #E8E8E8;
  --magenta: #FF2E93; --yellow: #FFD600; --cyan: #5BD8E5; --green: #5BE885;
  --red: #FF5252; --orange: #FF9F45; --purple: #9D4EDD; --blue: #4D7CFF;
  --fd: 'Anton', sans-serif; --fm: 'IBM Plex Mono', monospace;

  font-family: var(--fm);
  color: var(--ink);
  background: var(--ink);
}

#wrapped * { box-sizing: border-box; margin: 0; padding: 0; }

#wrapped[hidden] { display: none; }

/* Dans la maquette, .player vit dans `.device` : un conteneur FLEX COLONNE de
   390x844. Sa règle est `flex: 1; position: relative`. On reproduit donc le
   conteneur ici, au lieu de contredire la règle copiée.
   ⚠ PIÈGE : une surcharge `position:absolute; inset:0` placée AVANT le CSS copié
   est écrasée par celui-ci — `.player` retombe en `flex:1` sans parent flex, donc
   à hauteur ZÉRO, et l'écran est entièrement noir. C'est exactement ce qui s'est
   produit. Le conteneur flex est la seule façon correcte. */
#wrapped { display: flex; flex-direction: column; }

/* ⚠ COLLISIONS AVEC proto.css — la cause des aplats noirs.
   La maquette est auto-portante et utilise des noms de classes génériques
   (`.card`, `.brand`, `.chip`…). Dans l'app, proto.css donne à plusieurs de ces
   classes un `::before` = le BLOC NOIR de l'ombre brutaliste, en position absolue.
   Posé sur une carte plein écran il recouvrait tout le fond ; posé sur le logo de
   la carte de saison il le rendait noir sur noir.
   On remet donc TOUS les pseudo-éléments à zéro dans l'écran. Ceux que la maquette
   déclare elle-même (ex. la flèche ▲ du pic horaire) sont réécrits plus bas par des
   sélecteurs plus spécifiques, donc ils survivent. */
#wrapped *::before,
#wrapped *::after { content: none; }

/* ============================================================
       B. PLAYER — la séquence de cartes
       ============================================================ */
#wrapped .player {flex: 1; position: relative; background: var(--ink); overflow: hidden; }

/* segments type "stories" */
#wrapped .segs {position: absolute; top: 0; left: 0; right: 0; z-index: 30; display: flex; gap: 4px; padding: 9px 12px 0; }

#wrapped .segs .s {flex: 1; height: 4px; background: rgba(255, 254, 247, .3); border: 1.5px solid rgba(10, 10, 10, .5); overflow: hidden; }

#wrapped .segs .s i {display: block; height: 100%; width: 0; background: var(--paper); }

#wrapped .segs .s.done i {width: 100%; }

#wrapped .phead {position: absolute; top: 22px; left: 12px; right: 12px; z-index: 30; display: flex; align-items: center; gap: 8px; }

#wrapped .phead .tag {font-family: var(--fd); font-size: 9.5px; letter-spacing: 1.5px; border: 2px solid var(--ink); background: var(--paper); padding: 3px 7px; box-shadow: 2px 2px 0 var(--ink); }

#wrapped .phead .sp {flex: 1; }

#wrapped .phead .x {width: 26px; height: 26px; border: 2px solid var(--ink); background: var(--paper); box-shadow: 2px 2px 0 var(--ink); font-family: var(--fd); font-size: 14px; display: flex; align-items: center; justify-content: center; cursor: pointer; }

/* zones de tap */
#wrapped .taps {position: absolute; inset: 0; z-index: 25; display: flex; }

#wrapped .taps .z {flex: 1; cursor: pointer; }

#wrapped .taps .z.back {flex: .32; }

#wrapped .stage {position: absolute; inset: 0; }

#wrapped .card {position: absolute; inset: 0; display: none; flex-direction: column; padding: 62px 22px 26px; overflow: hidden; }

#wrapped .card.on {display: flex; }

#wrapped .card .bgnoise {position: absolute; inset: 0; background-image: radial-gradient(rgba(10, 10, 10, .1) 1.5px, transparent 1.5px); background-size: 18px 18px; pointer-events: none; }

#wrapped .card .grid {position: absolute; inset: 0; background-image: linear-gradient(rgba(10, 10, 10, .1) 2px, transparent 2px), linear-gradient(90deg, rgba(10, 10, 10, .1) 2px, transparent 2px); background-size: 30px 30px; pointer-events: none; }

#wrapped .card .ct {position: relative; z-index: 2; display: flex; flex-direction: column; height: 100%; }

/* ============================================================
       SYSTÈME DE FONDS — chaque carte empile des calques géométriques.
       --lk = la couleur d'encre des calques : sombre sur carte claire,
       claire sur carte sombre. Aucun dégradé, que des trames et des aplats.
       RÈGLE : les formes DURES (bandeau, anneaux, confettis) ne vont que
       dans les respirations, jamais sur une zone de texte.
       ============================================================ */
#wrapped .bg {position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; --lk: 10, 10, 10; }

#wrapped .card.on-dark .bg {--lk: 255, 254, 247; }

#wrapped .bg > * {position: absolute; }

#wrapped .l-dots {inset: -20px; background-image: radial-gradient(rgba(var(--lk), .16) 2.5px, transparent 2.6px); background-size: 15px 15px; }

#wrapped .l-grain {inset: 0; background-image: radial-gradient(rgba(var(--lk), .1) .5px, transparent .6px); background-size: 4px 4px; }

#wrapped .l-hatch {left: -60px; right: -60px; height: 250px; top: 30%; transform: rotate(-11deg);
      background-image: repeating-linear-gradient(90deg, rgba(var(--lk), .1) 0 5px, transparent 5px 17px); }

#wrapped .l-ghost {font-family: var(--fd); line-height: .8; color: transparent; white-space: nowrap;
      -webkit-text-stroke: 4px rgba(var(--lk), .15); letter-spacing: -10px; }

#wrapped .l-rays {width: 760px; height: 760px; top: -300px; right: -320px;
      background: repeating-conic-gradient(from 20deg, rgba(var(--lk), .08) 0 7deg, transparent 7deg 14deg); }

#wrapped .l-rings {width: 300px; height: 300px; bottom: -125px; left: -105px; border-radius: 50%;
      border: 5px solid rgba(var(--lk), .15);
      box-shadow: 0 0 0 25px rgba(var(--lk), .05), 0 0 0 30px rgba(var(--lk), .15),
                  0 0 0 55px rgba(var(--lk), .05), 0 0 0 60px rgba(var(--lk), .15); }

/* bandeau : TEXTURE et non graphique — le contenu peut passer par-dessus
       sans devenir illisible (les cartes ont leur contenu centré verticalement). */
#wrapped .l-band {left: -70px; right: -70px; height: 26px; background: rgba(var(--lk), .14); overflow: hidden;
      display: flex; align-items: center; transform: rotate(-4deg);
      border-top: 2px solid rgba(var(--lk), .28); border-bottom: 2px solid rgba(var(--lk), .28); }

#wrapped .l-band .run {display: flex; white-space: nowrap; font-family: var(--fd); font-size: 12px; letter-spacing: 3px; color: rgba(var(--lk), .45); }

#wrapped .l-band .run span {padding-right: 26px; }

#wrapped .l-scrap {border: 3px solid rgba(var(--lk), .85); }

/* fonds de carte */
#wrapped .bg-mag {background: var(--magenta); }

#wrapped .bg-yel {background: var(--yellow); }

#wrapped .bg-cya {background: var(--cyan); }

#wrapped .bg-grn {background: var(--green); }

#wrapped .bg-ink {background: var(--ink); }

#wrapped .bg-red {background: var(--red); }

#wrapped .bg-pap {background: var(--paper); }

#wrapped .bg-pur {background: var(--purple); }

#wrapped .bg-ora {background: var(--orange); }

#wrapped .on-dark,
#wrapped .on-dark .kick,
#wrapped .on-dark .big {color: var(--paper); }

/* typo de carte */
#wrapped .kick {font-family: var(--fd); font-size: 12px; letter-spacing: 2.5px; }

#wrapped .kick .u {border-bottom: 3px solid currentColor; padding-bottom: 2px; }

#wrapped .lead {font-family: var(--fd); font-size: 27px; line-height: 1.02; letter-spacing: .5px; }

#wrapped .lead.sm {font-size: 21px; }

#wrapped .big {font-family: var(--fd); font-size: 92px; line-height: .84; letter-spacing: -2px; }

#wrapped .big.xl {font-size: 116px; }

#wrapped .big.md {font-size: 66px; }

#wrapped .sub {font-weight: 700; font-size: 11.5px; line-height: 1.45; }

#wrapped .spacer {flex: 1; }

/* fond clair sur carte sombre -> on RESET la couleur de texte (sinon paper sur paper) */
#wrapped .stampbox {display: inline-block; border: 4px solid var(--ink); background: var(--paper); box-shadow: 6px 6px 0 var(--ink); padding: 10px 14px; font-family: var(--fd); letter-spacing: 1px; color: var(--ink); }

#wrapped .chipline {display: flex; flex-wrap: wrap; gap: 6px; }

#wrapped .chip {font-family: var(--fd); font-size: 12px; letter-spacing: .5px; border: 3px solid var(--ink); background: var(--paper); box-shadow: 3px 3px 0 var(--ink); padding: 5px 9px; line-height: 1; color: var(--ink); }

/* « TOUCHE TA RÉPONSE » à 9 px et 50 % d'opacité sur un fond jaune : on ne le
   lisait pas. C'est pourtant la seule consigne de la carte. */
#wrapped .hint {font-weight: 800; font-size: 11px; letter-spacing: 1.6px; opacity: .78; text-align: center; }

/* ---- c2 : grille des parties ---- */
#wrapped .tiles {display: grid; grid-template-columns: repeat(10, 1fr); gap: 4px; }

#wrapped .tiles i {aspect-ratio: 1; border: 2px solid var(--ink); background: var(--paper); display: block; }

#wrapped .tiles i.w {background: var(--green); }

/* ---- c3 : histogramme horaire ---- */
#wrapped .hours {display: flex; align-items: flex-end; gap: 3px; height: 176px; border-bottom: 3px solid var(--ink); }

#wrapped .hours .h {flex: 1; background: var(--paper); border: 2px solid var(--ink); border-bottom: 0; height: 4px; position: relative; }

#wrapped .hours .h.peak {background: var(--magenta); }

#wrapped .hours .h.peak::after {content: '▲'; position: absolute; top: -15px; left: 50%; transform: translateX(-50%); font-size: 9px; }

#wrapped .hlabels {display: flex; justify-content: space-between; font-weight: 700; font-size: 8px; margin-top: 5px; opacity: .6; }

/* ---- c4 : jauge précision ---- */
#wrapped .meter {height: 46px; border: 4px solid var(--ink); background: var(--paper); box-shadow: 5px 5px 0 var(--ink); position: relative; overflow: hidden; }

#wrapped .meter .f {height: 100%; width: 0; background: var(--green); border-right: 4px solid var(--ink); }

#wrapped .meter .marks {position: absolute; inset: 0; display: flex; }

#wrapped .meter .marks span {flex: 1; border-right: 2px dashed rgba(10, 10, 10, .22); }

/* ---- c7 : course des modes ---- */
#wrapped .race {display: flex; flex-direction: column; gap: 9px; }

#wrapped .race .r {display: flex; align-items: center; gap: 8px; }

#wrapped .race .r .n {font-family: var(--fd); font-size: 12px; width: 78px; flex-shrink: 0; letter-spacing: .5px; }

#wrapped .race .r .t {flex: 1; height: 26px; border: 3px solid var(--ink); background: rgba(255, 254, 247, .55); position: relative; overflow: hidden; }

#wrapped .race .r .t i {display: block; height: 100%; width: 0; background: var(--magenta); border-right: 3px solid var(--ink); }

#wrapped .race .r .v {font-family: var(--fd); font-size: 13px; width: 26px; text-align: right; }

#wrapped .race .r.win .t i {background: var(--yellow); }

/* ---- c10 : nemesis ---- */
#wrapped .clash {display: flex; align-items: center; justify-content: center; gap: 6px; position: relative; }

#wrapped .fighter {display: flex; flex-direction: column; align-items: center; gap: 6px; width: 132px; }

#wrapped .fighter .av {width: 96px; height: 96px; border: 4px solid var(--ink); background: var(--paper); box-shadow: 5px 5px 0 var(--ink); overflow: hidden; }

#wrapped .fighter .av img {width: 100%; height: 100%; display: block; }

#wrapped .fighter .nm {font-family: var(--fd); font-size: 17px; letter-spacing: .5px; }

#wrapped .fighter .sc {font-family: var(--fd); font-size: 42px; line-height: 1; }

#wrapped .vs {font-family: var(--fd); font-size: 30px; color: var(--paper); background: var(--ink); border: 3px solid var(--paper); padding: 4px 7px; transform: rotate(-8deg); box-shadow: 4px 4px 0 rgba(255, 254, 247, .35); }

#wrapped .flash {position: absolute; inset: -40px; background: var(--paper); opacity: 0; pointer-events: none; z-index: 9; }

/* ---- c11 : podium des potes ---- */
#wrapped .podium {display: flex; align-items: flex-end; justify-content: center; gap: 10px; }

#wrapped .pod {display: flex; flex-direction: column; align-items: center; gap: 6px; }

#wrapped .pod .av {width: 62px; height: 62px; border: 3px solid var(--ink); background: var(--paper); box-shadow: 4px 4px 0 var(--ink); overflow: hidden; }

#wrapped .pod .av img {width: 100%; height: 100%; display: block; }

#wrapped .pod .nm {font-family: var(--fd); font-size: 12px; }

#wrapped .pod .col {width: 76px; border: 3px solid var(--ink); background: var(--paper); box-shadow: 4px 4px 0 var(--ink); display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding-top: 7px; }

#wrapped .pod .col .v {font-family: var(--fd); font-size: 20px; line-height: 1; }

#wrapped .pod .col .l {font-weight: 700; font-size: 7px; margin-top: 2px; opacity: .6; }

#wrapped .pod.p1 .col {height: 104px; background: var(--yellow); }

#wrapped .pod.p2 .col {height: 76px; background: var(--gray2); }

#wrapped .pod.p3 .col {height: 58px; background: var(--orange); }

/* ---- c12 : récompenses ---- */
#wrapped .rays2 {position: absolute; top: 34%; left: 50%; width: 620px; height: 620px; transform: translate(-50%, -50%); background: repeating-conic-gradient(from 0deg, rgba(255, 214, 0, .28) 0deg 11deg, transparent 11deg 22deg); pointer-events: none; }

#wrapped .trophy {width: 128px; height: 128px; border: 5px solid var(--ink); background: var(--yellow); box-shadow: 7px 7px 0 var(--ink); display: flex; align-items: center; justify-content: center; margin: 0 auto; }

#wrapped .trophy .nemoji {width: 82px; height: 82px; }

#wrapped .reward {display: flex; align-items: center; gap: 10px; border: 3px solid var(--ink); background: var(--paper); box-shadow: 4px 4px 0 var(--ink); padding: 9px 11px; color: var(--ink); }

#wrapped .reward .nemoji {width: 26px; height: 26px; flex-shrink: 0; }

#wrapped .reward .tx {flex: 1; }

#wrapped .reward .tx .k {font-weight: 700; font-size: 8px; letter-spacing: 1px; opacity: .6; }

#wrapped .reward .tx .v {font-family: var(--fd); font-size: 15px; letter-spacing: .5px; line-height: 1.05; }

/* ---- c13 : archétype (carte à collectionner) ---- */
#wrapped .persona {position: relative; width: 244px; margin: 0 auto; perspective: 1000px; }

#wrapped .persona .face {border: 5px solid var(--ink); background: var(--paper); box-shadow: 8px 8px 0 var(--ink); padding: 14px; }

#wrapped .persona .art {height: 152px; border: 3px solid var(--ink); background: var(--purple); display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; }

#wrapped .persona .art .nemoji {width: 92px; height: 92px; position: relative; }

#wrapped .persona .art .rr {position: absolute; width: 400px; height: 400px; background: repeating-conic-gradient(from 0deg, rgba(255, 254, 247, .2) 0deg 14deg, transparent 14deg 28deg); }

#wrapped .persona .ttl {font-family: var(--fd); font-size: 27px; letter-spacing: .5px; margin-top: 10px; line-height: 1; }

#wrapped .persona .dsc {font-weight: 700; font-size: 9.5px; line-height: 1.4; margin-top: 6px; opacity: .8; }

#wrapped .persona .rar {position: absolute; top: -12px; right: -12px; font-family: var(--fd); font-size: 10px; letter-spacing: 1px; border: 3px solid var(--ink); background: var(--magenta); color: var(--paper); box-shadow: 3px 3px 0 var(--ink); padding: 4px 8px; transform: rotate(9deg); }

/* ---- c14 : carte de partage ---- */
#wrapped .idcard {border: 4px solid var(--ink); background: var(--paper); box-shadow: 7px 7px 0 var(--ink); padding: 13px; }

#wrapped .idcard .hd {display: flex; align-items: center; gap: 10px; border-bottom: 3px solid var(--ink); padding-bottom: 10px; }

#wrapped .idcard .hd .av {width: 54px; height: 54px; border: 3px solid var(--ink); background: var(--paper); box-shadow: 3px 3px 0 var(--ink); overflow: hidden; flex-shrink: 0; }

#wrapped .idcard .hd .av img {width: 100%; height: 100%; display: block; }

#wrapped .idcard .hd .nm {font-family: var(--fd); font-size: 22px; line-height: 1; letter-spacing: .5px; }

#wrapped .idcard .hd .rl {font-weight: 700; font-size: 8.5px; letter-spacing: 1px; opacity: .65; margin-top: 3px; }

#wrapped .idcard .hd .sn {margin-left: auto; text-align: right; font-family: var(--fd); font-size: 11px; letter-spacing: 1px; }

#wrapped .idcard .rows {display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin-top: 10px; }

#wrapped .idcard .rw {border: 2.5px solid var(--ink); padding: 6px 8px; background: var(--paper); }

#wrapped .idcard .rw .k {font-weight: 700; font-size: 7px; letter-spacing: 1px; opacity: .6; }

#wrapped .idcard .rw .v {font-family: var(--fd); font-size: 15px; line-height: 1.05; margin-top: 2px; }

#wrapped .idcard .rw.y {background: var(--yellow); }

#wrapped .idcard .rw.c {background: var(--cyan); }

#wrapped .idcard .rw.g {background: var(--green); }

#wrapped .idcard .rw.m {background: var(--magenta); color: var(--paper); }

#wrapped .idcard .ft {display: flex; align-items: center; gap: 7px; margin-top: 11px; border-top: 3px solid var(--ink); padding-top: 9px; }

#wrapped .idcard .ft .brand {font-family: var(--fd); font-size: 13px; letter-spacing: 2px; background: var(--ink); color: var(--paper); padding: 3px 8px; }

#wrapped .idcard .ft .code {font-weight: 700; font-size: 8.5px; opacity: .6; }

#wrapped .idcard .ft .qr {margin-left: auto; width: 34px; height: 34px; border: 2.5px solid var(--ink); background: repeating-conic-gradient(from 0deg, var(--ink) 0 25%, var(--paper) 0 50%) 0 0/9px 9px; }

/* confettis */
#wrapped .conf {position: absolute; inset: 0; pointer-events: none; z-index: 20; overflow: hidden; }

#wrapped .conf i {position: absolute; width: 11px; height: 11px; border: 2px solid var(--ink); }

/* rideau d'intro */
#wrapped .curtain {position: absolute; inset: 0; z-index: 22; display: flex; pointer-events: none; }

#wrapped .curtain i {flex: 1; background: var(--ink); }

    

/* ============================================================
   LA PLATINE — hors maquette (ajout demandé) : le récap doit avoir un son.
   Posée en bas, au-dessus des zones de tap pour rester cliquable, dans la
   même grammaire que le reste : trait noir, ombre portée, capitales Anton.
   ============================================================ */
#wrapped .wrmusic {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: calc(14px + env(safe-area-inset-bottom));
  z-index: 28;
  display: flex;
  align-items: center;
  gap: 10px;
  border: 3px solid var(--ink);
  background: var(--paper);
  box-shadow: 4px 4px 0 var(--ink);
  padding: 8px 11px;
}

#wrapped .wrmusic[hidden] { display: none; }

#wrapped .wrmusic .bt {
  width: 30px; height: 30px; flex-shrink: 0;
  border: 3px solid var(--ink); background: var(--yellow);
  font-family: var(--fd); font-size: 13px;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
}

#wrapped .wrmusic .tx { flex: 1; min-width: 0; }
#wrapped .wrmusic .t { font-family: var(--fd); font-size: 13px; letter-spacing: .4px; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#wrapped .wrmusic .a { font-weight: 700; font-size: 9px; letter-spacing: .8px; opacity: .6; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

#wrapped .wrmusic .eq { display: flex; align-items: flex-end; gap: 2px; height: 18px; flex-shrink: 0; }
#wrapped .wrmusic .eq i { width: 3px; background: var(--ink); height: 4px; display: block; }
#wrapped .wrmusic.on .eq i { animation: wr-eq .9s ease-in-out infinite; }
#wrapped .wrmusic.on .eq i:nth-child(2) { animation-delay: .18s; }
#wrapped .wrmusic.on .eq i:nth-child(3) { animation-delay: .36s; }
#wrapped .wrmusic.on .eq i:nth-child(4) { animation-delay: .54s; }

@keyframes wr-eq { 0%, 100% { height: 4px; } 50% { height: 17px; } }

@media (prefers-reduced-motion: reduce) { #wrapped .wrmusic.on .eq i { animation: none; height: 11px; } }

/* la platine s'efface après s'être annoncée (le son, lui, continue) */
#wrapped .wrmusic { transition: opacity var(--dur-m) var(--ease-out), transform var(--dur-m) var(--ease-out); }
#wrapped .wrmusic.parti { opacity: 0; transform: translateY(14px); pointer-events: none; }

/* CARTES SOMBRES — la maquette n'énumère que `.on-dark`, `.on-dark .kick` et
   `.on-dark .big`. Elle est auto-portante, donc tout le reste hérite sans souci.
   Dans l'app, d'autres textes des cartes sombres retombaient sur l'encre : noir sur
   noir, les noms de la carte NEMESIS disparaissaient. On pose la couleur sur tout le
   contenu de la carte ; ce qui a sa propre couleur (chiffres verts/rouges, chips,
   stampbox) la garde, puisque ces règles-là sont plus spécifiques ou en ligne. */
#wrapped .card.on-dark .ct,
#wrapped .card.on-dark .ct .nm,
#wrapped .card.on-dark .ct .lead,
#wrapped .card.on-dark .ct .sub { color: var(--paper); }

/* ⚠ JAMAIS UNE OMBRE NOIRE SUR DU NOIR.
   L'entête (étiquette de saison, pause, fermer) et la platine sont posés sur
   .player, dont le fond est var(--ink) — leur ombre var(--ink) était donc noire
   sur noir et disparaissait dès qu'une carte sombre passait dessous.
   Ombre magenta, comme .pill.ink dans proto.css. */
#wrapped .phead .tag,
#wrapped .phead .x { box-shadow: 2px 2px 0 var(--magenta); }
#wrapped .wrmusic { box-shadow: 4px 4px 0 var(--magenta); }

/* ⚠ EXCEPTION : la cassette est un OBJET CLAIR posé sur une carte sombre. La règle
   ci-dessus (1 id + 3 classes) battait `#wrapped .cass { color: var(--ink) }` et
   repeignait son étiquette jaune en crème — « SAISON 1 · ORIGINES » en blanc sur
   jaune, contraste 1,41. Même chose pour la platine. */
#wrapped .card.on-dark .ct .cass,
#wrapped .card.on-dark .ct .cass .lbl .a,
#wrapped .card.on-dark .ct .cass .lbl .b,
#wrapped .card.on-dark .ct .cass .scr { color: var(--ink); }

/* et l'inverse : sur une carte CLAIRE, le contenu reste à l'encre */
#wrapped .card:not(.on-dark) .ct { color: var(--ink); }

/* LE FLARE DERRIÈRE LA COUPE — la maquette le fige à 620x620, taillé pour le cadre
   390x844 de son téléphone d'atelier. En plein écran il s'arrêtait en plein milieu.
   On le dimensionne sur le viewport : il déborde toujours, quelle que soit la taille. */
#wrapped .rays2 {
  width: 200vmax;
  height: 200vmax;
  top: 34%;
  left: 50%;
  transform: translate(-50%, -50%);
}

/* LES BOUTONS PAUSE / FERMER — 26 px dans la maquette, pensés pour une vignette
   d'atelier. Sur un vrai téléphone c'est sous la cible tactile confortable (44 px) et
   les deux se touchent presque. On les agrandit, on les écarte, et on les décale sous
   l'encoche. Le reste de l'en-tête ne bouge pas. */
#wrapped .phead { top: calc(20px + env(safe-area-inset-top)); gap: 10px; }

#wrapped .phead .x {
  width: 40px;
  height: 40px;
  font-size: 16px;
  border-width: 3px;
  box-shadow: 3px 3px 0 var(--magenta);   /* jamais noir sur noir : .player est en var(--ink) */
  border-radius: 0;
  touch-action: manipulation;
}

#wrapped .phead .x:active { transform: translate(3px, 3px); box-shadow: 0 0 0 var(--ink); }

/* la pastille de pause se distingue de la fermeture : jaune contre rouge */
#wrapped .phead #wrPause { background: var(--yellow); }
#wrapped .phead #wrClose { background: var(--red); color: var(--paper); }

#wrapped .phead .tag { padding: 6px 10px; font-size: 10.5px; }

/* ============================================================
   REPRIS DE LA MIXTAPE — design-prototypes/p3-wrapped/wrapped.html.
   La cassette d'intro et la platine de la carte MUSIQUE viennent de LÀ, à
   l'identique (seuls les sélecteurs sont préfixés). Le reste de la séquence
   reste celui de _v1-stories.html.
   ============================================================ */
#wrapped .sticker { display: inline-block; border: 3px solid var(--ink); background: var(--paper); box-shadow: 4px 4px 0 var(--ink); padding: 7px 10px; font-family: var(--fd); font-size: 12px; letter-spacing: 1px; color: var(--ink); }
#wrapped .sticker.y { background: var(--yellow); }
#wrapped .sticker.g { background: var(--green); }
#wrapped .sticker.c { background: var(--cyan); }
#wrapped .sticker.m { background: var(--magenta); color: var(--paper); }

#wrapped .cass { width: 300px; height: 200px; border: 5px solid var(--ink); background: var(--paper); box-shadow: 8px 8px 0 var(--ink); padding: 12px 12px 22px; display: flex; flex-direction: column; position: relative; color: var(--ink); }
#wrapped .cass .lbl { border: 3px solid var(--ink); background: var(--yellow); padding: 6px 8px; }
#wrapped .cass .lbl .a { font-family: var(--fd); font-size: 19px; letter-spacing: 1px; line-height: 1.2; }
#wrapped .cass .lbl .b { font-weight: 700; font-size: 8.5px; letter-spacing: 1px; margin-top: 3px; }
#wrapped .cass .win { flex: 1; margin-top: 10px; border: 3px solid var(--ink); background: var(--ink); display: flex; align-items: center; justify-content: center; gap: 26px; }
#wrapped .reel { width: 54px; height: 54px; border: 4px solid var(--paper); border-radius: 50%; position: relative; background: var(--ink); }
#wrapped .reel::before,
#wrapped .reel::after { content: ''; position: absolute; inset: 18px; background: var(--paper); }
#wrapped .reel::before { clip-path: polygon(50% 0, 58% 50%, 50% 100%, 42% 50%); }
#wrapped .reel::after { clip-path: polygon(0 50%, 50% 42%, 100% 50%, 50% 58%); }
#wrapped .cass .scr { position: absolute; bottom: 8px; left: 12px; right: 12px; display: flex; justify-content: space-between; font-weight: 700; font-size: 7px; opacity: .5; }

#wrapped .plat { width: 208px; height: 208px; border-radius: 50%; border: 5px solid var(--paper); background: var(--ink); position: relative; display: flex; align-items: center; justify-content: center; }
#wrapped .plat .art { width: 96px; height: 96px; border: 4px solid var(--paper); overflow: hidden; }
#wrapped .plat .art img { width: 100%; height: 100%; display: block; }
#wrapped .plat .gr { position: absolute; inset: 8px; border-radius: 50%; background: repeating-radial-gradient(circle, rgba(255, 254, 247, .18) 0 1px, transparent 1px 7px); }

/* ---- LA QUESTION POSÉE AU JOUEUR (nouveauté demandée) ---- */
#wrapped .quiz { display: flex; flex-direction: column; gap: 9px; }
#wrapped .quiz .opt {
  display: flex; align-items: center; gap: 10px;
  border: 3px solid var(--ink); background: var(--paper); box-shadow: 4px 4px 0 var(--ink);
  padding: 12px 13px; font-family: var(--fd); font-size: 15px; letter-spacing: .4px;
  color: var(--ink); cursor: pointer; text-align: left;
}
#wrapped .quiz .opt:active { transform: translate(3px, 3px); box-shadow: 1px 1px 0 var(--ink); }
#wrapped .quiz .opt .k { width: 26px; height: 26px; flex: none; border: 3px solid var(--ink); display: grid; place-items: center; font-size: 13px; background: var(--yellow); }
#wrapped .quiz .opt.bon { background: var(--green); }
#wrapped .quiz .opt.rate { background: var(--red); color: var(--paper); }
#wrapped .quiz .opt.rate .k { background: var(--paper); }
/* Une fois répondu, le panneau ENTIER laisse passer le tap : sinon il reste au-dessus
   des zones de tap (z-index 26) en plein milieu de l'écran, et on ne peut plus avancer
   en tapant là. Seules les bordures de l'écran répondaient encore. */
#wrapped .quiz.fini { pointer-events: none; }

/* ⚠ LES ZONES DE TAP RECOUVRENT TOUT (.taps, z-index 25) : c'est voulu dans la
   maquette, où aucune carte n'est interactive — on tape n'importe où pour avancer.
   Dès qu'une carte a des BOUTONS (la question posée au joueur), ils passent sous ce
   voile et ne reçoivent jamais le clic. Tout ce qui est cliquable dans une carte doit
   donc monter AU-DESSUS. */
#wrapped .quiz { position: relative; z-index: 26; }

/* ⚠ Le z-index ci-dessus ne suffit pas tout seul : `.ct` est en position:relative
   AVEC z-index:2, donc il crée son propre contexte d'empilement et enferme tout son
   contenu sous `.taps` (25).
   On ne peut pas non plus se contenter d'élever `.ct` : il couvre toute la carte, il
   passerait alors AU-DESSUS des zones de tap et la carte ne laisserait plus avancer.
   La bonne façon : retirer le contexte d'empilement de `.ct` sur les cartes
   interactives (z-index:auto). Seuls les BOUTONS montent alors au-dessus du voile,
   le reste de la carte laisse passer le tap. */
#wrapped .card.interactif .ct { z-index: auto; }

/* la carte ne doit pas passer sous la platine */
#wrapped .card { padding-bottom: 104px; }

/* ---- LA PLATINE : le temps qui passe ---- */
#wrapped .wrmusic { flex-wrap: wrap; row-gap: 7px; }
#wrapped .wrmusic .bar {
  flex: 1 0 100%;
  height: 10px;
  border: 2px solid var(--ink);
  background: var(--paper);
  position: relative;
  overflow: hidden;
}
#wrapped .wrmusic .bar > i { display: block; height: 100%; width: 0; background: var(--magenta); border-right: 2px solid var(--ink); }
#wrapped .wrmusic .tm { font-weight: 700; font-size: 9px; letter-spacing: .5px; opacity: .65; flex: none; }

/* les deux boutons de la carte de saison doivent recevoir le clic, comme le quiz */
#wrapped .card.interactif #c14b1,
#wrapped .card.interactif #c14b2 { position: relative; z-index: 26; cursor: pointer; }

/* ============================================================
   LA CARTE D'ARCHÉTYPE — reprise de la maquette validée
   brandnew/drafts/_archetypes-partage.html. C'est le MÊME objet que l'image
   de partage : calques, décalage d'impression, sceau, numéro de série.
   ============================================================ */
#wrapped .az {
  position: relative; width: 292px; aspect-ratio: 4/5;
  border: 5px solid var(--ink); box-shadow: 10px 10px 0 var(--ink);
  background: var(--az); overflow: hidden; color: var(--ink); --lk: 10, 10, 10;
}
#wrapped .az.sombre { color: var(--paper); --lk: 255, 254, 247; }

#wrapped .az-bg { position: absolute; inset: 0; pointer-events: none; }
#wrapped .az-bg > * { position: absolute; }
#wrapped .az-bg .d { inset: -20px; background-image: radial-gradient(rgba(var(--lk), .17) 2.5px, transparent 2.6px); background-size: 15px 15px; }
#wrapped .az-bg .gr { inset: 0; background-image: radial-gradient(rgba(var(--lk), .1) .5px, transparent .6px); background-size: 4px 4px; }
#wrapped .az-bg .ha { left: -60px; right: -60px; height: 170px; top: 47%; transform: rotate(-11deg);
  background-image: repeating-linear-gradient(90deg, rgba(var(--lk), .11) 0 5px, transparent 5px 17px); }
#wrapped .az-bg .ri { width: 230px; height: 230px; bottom: -112px; left: -88px; border-radius: 50%;
  border: 5px solid rgba(var(--lk), .16);
  box-shadow: 0 0 0 20px rgba(var(--lk), .05), 0 0 0 25px rgba(var(--lk), .16), 0 0 0 46px rgba(var(--lk), .05); }
#wrapped .az-bg .gl { top: -24px; right: -8px; font-family: var(--fd); font-size: 140px; line-height: .8;
  color: transparent; -webkit-text-stroke: 4px rgba(var(--lk), .2); letter-spacing: -8px; white-space: nowrap; }
#wrapped .az-bg .sc { width: 15px; height: 15px; border: 3px solid rgba(var(--lk), .8); }

#wrapped .az-band { position: absolute; left: -40px; right: -40px; top: 27%; height: 25px; transform: rotate(-4deg);
  background: rgba(var(--lk), .14); border-top: 2px solid rgba(var(--lk), .3); border-bottom: 2px solid rgba(var(--lk), .3);
  display: flex; align-items: center; overflow: hidden; }
#wrapped .az-band span { font-family: var(--fd); font-size: 11px; letter-spacing: 3px; color: rgba(var(--lk), .45); white-space: nowrap; }

#wrapped .az-in { position: relative; height: 100%; display: flex; flex-direction: column; align-items: center; padding: 13px 14px 12px; }
#wrapped .az-top { width: 100%; display: flex; justify-content: space-between; align-items: flex-start; }
#wrapped .az-num { font-family: var(--fd); font-size: 14px; letter-spacing: 1px; }
#wrapped .az-num i { font-style: normal; font-size: 8.5px; opacity: .55; }
#wrapped .az-seal { font-family: var(--fd); font-size: 8.5px; letter-spacing: 1.2px; padding: 5px 8px;
  border: 3px solid var(--ink); background: var(--paper); color: var(--ink); box-shadow: 3px 3px 0 var(--ink); transform: rotate(6deg); }
#wrapped .az-seal.rare { background: var(--yellow); }
#wrapped .az-seal.epic { background: var(--cyan); }
#wrapped .az-seal.lege { background: var(--magenta); color: var(--paper); }

#wrapped .az-art { position: relative; z-index: 2; width: 126px; height: 126px; margin-top: 13px;
  border: 5px solid var(--ink); background: var(--paper); box-shadow: 7px 7px 0 var(--off);
  display: grid; place-items: center; transform: rotate(-3deg); }
#wrapped .az-art img { width: 86px; height: 86px; display: block; }

/* ⚠ L'IMAGE MANGEAIT LE NOM. Edwin, deux fois : « le noctambule, l'image cache
   le texte, on n'arrive pas à bien voir ». Le nom montait sous la photo et son
   décalage d'impression mordait dessus. On lui donne de l'air et une largeur. */
#wrapped .az-nm { margin-top: 22px !important; max-width: 86%; margin-left: auto; margin-right: auto; }
#wrapped .az-art { margin-top: 8px !important; }
#wrapped .az-nm { position: relative; font-family: var(--fd); font-size: 31px; line-height: 1.2;
  letter-spacing: .5px; margin-top: 16px; text-align: center; }
/* Le décalage d'impression : le MÊME texte, en couleur, 4 px derrière.
   ⚠ Il doit avoir la MÊME largeur que le vrai texte. Posé en absolu avec juste
   left:4px, il se retrouvait 4 px plus étroit : un nom un peu long passait sur
   deux lignes côté fantôme et sur une seule côté vrai texte — on lisait
   « LE FLAMBEUR » puis « LE / FLAMBEUR » par-dessus la description. */
#wrapped .az-nm::before {
  content: attr(data-t); position: absolute;
  left: 0; top: 0; width: 100%;
  transform: translate(4px, 4px);
  color: var(--off); z-index: -1;
}
#wrapped .az-rule { width: 60px; height: 4px; background: currentColor; margin: 8px 0 7px; opacity: .85; }
#wrapped .az-d { font-weight: 600; font-size: 10px; line-height: 1.5; text-align: center; padding: 0 8px; opacity: .85; }

#wrapped .az-stats { display: flex; gap: 6px; margin-top: auto; width: 100%; }
#wrapped .az-stats div { flex: 1; border: 3px solid var(--ink); background: var(--paper); color: var(--ink);
  padding: 6px 3px; text-align: center; box-shadow: 3px 3px 0 rgba(10, 10, 10, .28); }
#wrapped .az-stats div.acc { background: var(--off); }
#wrapped .az-stats b { display: block; font-family: var(--fd); font-size: 16px; line-height: 1.2; }
#wrapped .az-stats i { display: block; font-style: normal; font-weight: 700; font-size: 6px; letter-spacing: .5px; opacity: .65; margin-top: 2px; }

#wrapped .az-ft { width: 100%; display: flex; align-items: center; gap: 7px; margin-top: 9px; }
#wrapped .az-mark { font-family: var(--fd); font-size: 12px; letter-spacing: 2px; background: var(--ink); color: var(--paper); padding: 3px 8px; }
#wrapped .az-url { font-weight: 700; font-size: 7.5px; letter-spacing: .5px; opacity: .72; }
#wrapped .az-code { margin-left: auto; width: 42px; height: 19px; border: 2px solid rgba(var(--lk), .7);
  background: repeating-linear-gradient(90deg, rgba(var(--lk), .75) 0 2px, transparent 2px 5px); }

/* ---- LA CARTE DE SAISON (dernière carte) : même langage que l'archétype ---- */
#wrapped .c20-id { display: flex; flex-direction: column; align-items: center; margin-top: 14px; }
#wrapped .c20-id .av { width: 88px; height: 88px; border: 5px solid var(--ink); background: var(--paper);
  box-shadow: 6px 6px 0 var(--off); display: grid; place-items: center; overflow: hidden; transform: rotate(-3deg); }
#wrapped .c20-id .av > * { width: 100%; height: 100%; display: block; }
#wrapped .c20-id .nm { position: relative; font-family: var(--fd); font-size: 34px; line-height: 1.2; letter-spacing: .5px; margin-top: 14px; }
#wrapped .c20-id .nm::before { content: attr(data-t); position: absolute; left: 4px; top: 4px; color: var(--off); z-index: -1; }
#wrapped .c20-id .rl { font-weight: 700; font-size: 9.5px; letter-spacing: 1.4px; opacity: .7; margin-top: 4px; }

#wrapped .c20-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; width: 100%; margin-top: 16px; }
#wrapped .c20-grid div { border: 3px solid var(--ink); background: var(--paper); color: var(--ink);
  padding: 7px 5px; text-align: center; box-shadow: 3px 3px 0 rgba(10, 10, 10, .3); }
#wrapped .c20-grid div.acc { background: var(--off); color: var(--paper); }
#wrapped .c20-grid b { display: block; font-family: var(--fd); font-size: 17px; line-height: 1.2; }
#wrapped .c20-grid i { display: block; font-style: normal; font-weight: 700; font-size: 6.5px; letter-spacing: .5px; opacity: .65; margin-top: 2px; }

/* ============================================================
   TON QUOTIDIEN — avec un seul compteur, la carte n'était qu'une ligne de
   texte collée à gauche dans un grand vide. Chaque compteur devient un bloc
   encadré, centré, avec son chiffre en gros : ça tient aussi bien à un qu'à
   trois. Même grammaire que le reste du récap (cadre + ombre décalée).
   ============================================================ */
#wrapped .quot { display: flex; flex-direction: column; gap: 14px; width: 100%; }
#wrapped .qb {
  position: relative; display: flex; flex-direction: column; align-items: center; text-align: center;
  border: 4px solid var(--ink); background: var(--paper); color: var(--ink);
  box-shadow: 7px 7px 0 var(--ink); padding: 16px 14px 18px;
}
#wrapped .qb-em {
  width: 62px; height: 62px; display: grid; place-items: center; margin-bottom: 8px;
  border: 3px solid var(--ink); background: var(--yellow); box-shadow: 4px 4px 0 var(--ink);
  transform: rotate(-4deg);
}
#wrapped .qb-em img { width: 40px; height: 40px; display: block; }
#wrapped .qb-v { font-family: var(--fd); font-size: 46px; line-height: 1; }
#wrapped .qb-n { font-style: normal; font-family: var(--fd); font-size: 14px; letter-spacing: 1.2px; margin-top: 3px; }
#wrapped .qb-d { text-decoration: none; font-weight: 600; font-size: 10.5px; line-height: 1.45; opacity: .7; margin-top: 6px; }
/* à deux ou trois, on resserre pour que tout tienne sans défiler */
#wrapped .quot:has(.qb:nth-child(2)) .qb { padding: 11px 12px 13px; }
#wrapped .quot:has(.qb:nth-child(2)) .qb-v { font-size: 34px; }
#wrapped .quot:has(.qb:nth-child(2)) .qb-em { width: 48px; height: 48px; margin-bottom: 5px; }
#wrapped .quot:has(.qb:nth-child(2)) .qb-em img { width: 30px; height: 30px; }

/* MUSIQUE SUIVANTE — le second bouton de la platine. Plus petit que PLAY : il
   ne lui dispute pas la place, il est là quand on en a besoin. */
#wrapped .wrmusic .bt.nx {
  width: 26px; height: 26px; font-size: 10px; letter-spacing: -1px;
  background: var(--paper);
}
#wrapped .wrmusic .bt.nx:active { transform: translate(2px, 2px); }

/* ============================================================
   ============================================================
   WRAPPED v2 — « LA MIXTAPE ».
   REPRISE À L'IDENTIQUE du bloc <style> de la maquette VALIDÉE
   brandnew/drafts/wrapped-v2.html (tout sauf l'atelier et l'annexe,
   qui n'existent que dans la maquette).
   Tout ce qui est nouveau est préfixé `w2-`. AUCUNE classe existante de
   brutal.css, proto.css ou du bloc ci-dessus n'est redéfinie.
   NE PAS REDESSINER ICI : le design change dans la maquette d'abord.
   ============================================================
   ============================================================ */
/* ------------------------------------------------------------
   LE HAUT DU PLAYER — refondu : les segments sont GROUPÉS PAR FACE,
   et une ligne dit où on en est. 24 barres identiques ne se lisaient pas.
   ------------------------------------------------------------ */
#wrapped .w2-segs{position:absolute;top:0;left:0;right:0;z-index:30;display:flex;gap:9px;padding:10px 12px 0;}
#wrapped .w2-act{display:flex;gap:3px;flex:var(--n,1);}
#wrapped .w2-act .s{flex:1;height:5px;background:rgba(255,254,247,.26);border:1.5px solid rgba(10,10,10,.55);overflow:hidden;}
#wrapped .w2-act .s i{display:block;height:100%;width:0;background:var(--paper);}
#wrapped .w2-act .s.done i{width:100%;}
html[data-skin="neon"] #wrapped .w2-act .s{background:rgba(246,238,227,.18);border-color:rgba(246,238,227,.45);}
html[data-skin="neon"] #wrapped .w2-act .s i{background:var(--magenta);}

#wrapped .w2-head{position:absolute;top:24px;left:12px;right:12px;z-index:31;display:flex;align-items:center;gap:8px;}
#wrapped .w2-face{font-family:var(--fd);font-size:10px;letter-spacing:1.6px;border:3px solid var(--ink);
  background:var(--paper);color:var(--ink);padding:6px 9px;box-shadow:3px 3px 0 var(--magenta);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px;}
#wrapped .w2-cnt{font-family:var(--fd);font-size:10px;letter-spacing:1.4px;border:3px solid var(--ink);
  background:var(--yellow);color:#12080F;padding:6px 8px;box-shadow:3px 3px 0 var(--magenta);}
#wrapped .w2-sp{flex:1;}
#wrapped .w2-k{width:40px;height:40px;flex:none;border:3px solid var(--ink);background:var(--paper);
  box-shadow:3px 3px 0 var(--magenta);display:grid;place-items:center;cursor:pointer;padding:0;
  touch-action:manipulation;}
#wrapped .w2-k:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--magenta);}
#wrapped .w2-k.y{background:var(--yellow);}
#wrapped .w2-k.r{background:var(--red);}

/* pictos TRACÉS, jamais des glyphes.
   ⚠ PRÉFIXÉS `#wrapped` — et c'est une CORRECTION par rapport à la maquette :
   le haut de ce fichier remet TOUS les pseudo-éléments de l'écran à zéro
   (`#wrapped *::before{content:none}`, qui neutralise les ombres de proto.css).
   Un sélecteur sans `#wrapped` perd contre lui : dans la maquette, la pause et
   la croix sont des carrés VIDES. Elles doivent se voir. */
#wrapped .w2-ic{display:block;position:relative;width:16px;height:16px;}
#wrapped .w2-ic.pause::before,#wrapped .w2-ic.pause::after{content:'';position:absolute;top:1px;width:4px;height:14px;background:#12080F;}
#wrapped .w2-ic.pause::before{left:2px;} #wrapped .w2-ic.pause::after{right:2px;}
#wrapped .w2-ic.play::before{content:'';position:absolute;left:3px;top:0;width:0;height:0;
  border-left:13px solid #12080F;border-top:8px solid transparent;border-bottom:8px solid transparent;}
#wrapped .w2-ic.close::before,#wrapped .w2-ic.close::after{content:'';position:absolute;left:0;top:6px;width:16px;height:4px;background:#FFFEF7;}
#wrapped .w2-ic.close::before{transform:rotate(45deg);} #wrapped .w2-ic.close::after{transform:rotate(-45deg);}
#wrapped .w2-ic.next::before{content:'';position:absolute;left:0;top:0;width:0;height:0;
  border-left:8px solid currentColor;border-top:8px solid transparent;border-bottom:8px solid transparent;}
#wrapped .w2-ic.next::after{content:'';position:absolute;left:9px;top:0;width:0;height:0;
  border-left:8px solid currentColor;border-top:8px solid transparent;border-bottom:8px solid transparent;}

/* ------------------------------------------------------------
   LA PLATINE v2 — pochette VISIBLE, progression, play/pause et
   « morceau suivant ». Elle se replie en pastille au bout de 6 s pour
   ne jamais recouvrir le contenu ; on la rouvre en la touchant.
   ------------------------------------------------------------ */
/* ⚠ LA BARRE SYSTÈME DU TÉLÉPHONE. À `bottom:14px` la platine passait sous la
   barre gestuelle de l'iPhone et sous la barre de navigation Android : le titre
   du morceau et la barre de progression étaient coupés en deux. Constaté sur
   les deux appareils. On ajoute la zone sûre. */
#wrapped .w2-deck{position:absolute;left:12px;right:12px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:28;
  display:grid;grid-template-columns:52px 1fr auto auto;grid-template-rows:auto auto;gap:7px 9px;
  align-items:center;border:3px solid var(--ink);background:var(--paper);
  box-shadow:5px 5px 0 var(--magenta);padding:8px 10px;
  transition:transform var(--dur-m) var(--ease-out),opacity var(--dur-m) var(--ease-out);}
#wrapped .w2-deck .w2-art{grid-row:1/3;width:52px;height:52px;border:3px solid var(--ink);
  background:var(--gray);overflow:hidden;}
#wrapped .w2-deck .w2-art img{width:100%;height:100%;display:block;}
#wrapped .w2-deck .w2-tx{min-width:0;}
#wrapped .w2-deck .w2-t{font-family:var(--fd);font-size:14px;letter-spacing:.4px;line-height:1.15;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink);}
#wrapped .w2-deck .w2-a{font-weight:700;font-size:9px;letter-spacing:.8px;opacity:.7;margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink);
  display:flex;align-items:center;gap:5px;}
#wrapped .w2-deck .w2-a img{width:14px;height:10px;display:block;border:1px solid var(--ink);}
#wrapped .w2-deck .w2-b{width:34px;height:34px;flex:none;border:3px solid var(--ink);background:var(--yellow);
  display:grid;place-items:center;cursor:pointer;padding:0;color:#12080F;}
#wrapped .w2-deck .w2-b.nx{background:var(--cyan);}
#wrapped .w2-deck .w2-b:active{transform:translate(2px,2px);}
#wrapped .w2-deck .w2-line{grid-column:2/5;display:flex;align-items:center;gap:8px;}
#wrapped .w2-deck .w2-bar{flex:1;height:9px;border:2px solid var(--ink);background:var(--gray2);overflow:hidden;}
#wrapped .w2-deck .w2-bar i{display:block;height:100%;width:0;background:var(--magenta);border-right:2px solid var(--ink);}
#wrapped .w2-deck .w2-tm{font-weight:700;font-size:8.5px;letter-spacing:.5px;opacity:.7;flex:none;color:var(--ink);}
#wrapped .w2-deck.replie{transform:translateY(calc(100% - 22px));opacity:.85;}
html[data-skin="neon"] #wrapped .w2-deck{box-shadow:5px 5px 0 var(--magenta);}

/* ------------------------------------------------------------
   LES INTERLUDES — les cartes-chapitres qui découpent l'album.
   C'est la nouveauté de structure : le récap est un disque, pas une liste.
   ------------------------------------------------------------ */
#wrapped .w2-chap{display:flex;flex-direction:column;align-items:center;text-align:center;width:100%;}
#wrapped .w2-chap .f{font-family:var(--fd);font-size:13px;letter-spacing:5px;border:3px solid var(--ink);
  background:var(--paper);color:var(--ink);padding:6px 14px;box-shadow:4px 4px 0 var(--magenta);}
#wrapped .w2-chap .n{font-family:var(--fd);font-size:122px;line-height:.82;letter-spacing:-6px;margin-top:16px;}
#wrapped .w2-chap .t{font-family:var(--fd);font-size:34px;line-height:1;letter-spacing:.5px;margin-top:6px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
#wrapped .w2-chap .r{width:88px;height:5px;background:currentColor;margin:14px 0 12px;}
#wrapped .w2-chap .d{font-weight:700;font-size:11px;line-height:1.5;opacity:.8;max-width:270px;}
#wrapped .w2-chap .pistes{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;margin-top:18px;max-width:300px;}
#wrapped .w2-chap .pistes span{font-family:var(--fd);font-size:10px;letter-spacing:.8px;border:2.5px solid var(--ink);
  background:var(--paper);color:var(--ink);padding:4px 7px;}

/* ------------------------------------------------------------
   PETITS BLOCS AJOUTÉS
   ------------------------------------------------------------ */
/* remplissages de pastille : le texte est TOUJOURS lisible sur l'aplat */
.w2-f-yel{background:var(--yellow)!important;color:#12080F!important;}
.w2-f-cya{background:var(--cyan)!important;color:#12080F!important;}
.w2-f-grn{background:var(--green)!important;color:#12080F!important;}
.w2-f-ora{background:var(--orange)!important;color:#12080F!important;}
.w2-f-mag{background:var(--magenta)!important;color:#FFFEF7!important;}
.w2-f-red{background:var(--red)!important;color:#FFFEF7!important;}
.w2-f-pur{background:var(--purple)!important;color:#FFFEF7!important;}

/* la grille des parties : au-delà de 60 parties, 10 colonnes font 13 rangées
   et la carte déborde. On resserre à 14 colonnes. */
#wrapped .w2-tiles{grid-template-columns:repeat(14,1fr);gap:3px;}
#wrapped .w2-tiles i{border-width:1.5px;}

/* un titre de carte tient sur UNE ligne.
   ⚠ `overflow:hidden` + les interlignes serrés d'Anton (.84 à 1.02) coupaient
   les ACCENTS : on lisait « VICTOIRES D'AFFILEE », « BADGES DEBLOQUES ». On
   élargit la boîte de coupe sans bouger la mise en page (padding + marge
   négative de même valeur). */
#wrapped .w2-1l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:block;
  padding-block:.24em;margin-block:-.24em;}

/* deux chiffres côte à côte */
#wrapped .w2-duo{display:grid;grid-template-columns:1fr 1fr;gap:9px;width:100%;}
#wrapped .w2-duo > div{border:3px solid var(--ink);background:var(--paper);color:var(--ink);
  box-shadow:4px 4px 0 var(--ink);padding:9px 8px;text-align:center;}
#wrapped .w2-duo b{display:block;font-family:var(--fd);font-size:26px;line-height:1;}
#wrapped .w2-duo i{display:block;font-style:normal;font-weight:700;font-size:7.5px;letter-spacing:.9px;opacity:.7;margin-top:4px;}

/* la barre « le pire / le meilleur » de la carte SPÉCIALITÉ */
#wrapped .w2-cats{display:flex;flex-direction:column;gap:7px;width:100%;}
#wrapped .w2-cats .l{display:flex;align-items:center;gap:8px;}
#wrapped .w2-cats .l .n{font-family:var(--fd);font-size:11px;width:92px;flex:none;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#wrapped .w2-cats .l .t{flex:1;height:20px;border:3px solid var(--ink);background:var(--gray2);overflow:hidden;}
#wrapped .w2-cats .l .t i{display:block;height:100%;width:0;background:var(--cyan);border-right:3px solid var(--ink);}
#wrapped .w2-cats .l.top .t i{background:var(--green);}
#wrapped .w2-cats .l.flop .t i{background:var(--red);}
#wrapped .w2-cats .l .v{font-family:var(--fd);font-size:12px;width:34px;text-align:right;flex:none;}

/* la trace de série : une case par victoire, la dernière est la défaite (croix TRACÉE) */
#wrapped .w2-run{display:flex;flex-wrap:wrap;gap:5px;}
#wrapped .w2-run span{width:30px;height:30px;border:3px solid var(--ink);background:var(--green);
  box-shadow:3px 3px 0 var(--ink);display:grid;place-items:center;
  font-family:var(--fd);font-size:14px;color:#12080F;}
#wrapped .w2-run span.ko{background:var(--red);position:relative;}
#wrapped .w2-run span.ko i{position:absolute;left:5px;top:11px;width:16px;height:3.5px;background:#FFFEF7;display:block;}
#wrapped .w2-run span.ko i:first-child{transform:rotate(45deg);}
#wrapped .w2-run span.ko i:last-child{transform:rotate(-45deg);}

/* MERCI — les potes cités par leur nom */
#wrapped .w2-merci{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;max-width:320px;}
#wrapped .w2-merci span{font-family:var(--fd);font-size:13px;letter-spacing:.6px;border:3px solid var(--ink);
  background:var(--paper);color:var(--ink);box-shadow:3px 3px 0 var(--magenta);padding:5px 9px;}

/* LA SUITE — le compte à rebours de disponibilité */
#wrapped .w2-delai{display:flex;align-items:center;gap:11px;width:100%;border:4px solid var(--ink);
  background:var(--paper);color:var(--ink);box-shadow:6px 6px 0 var(--magenta);padding:12px;}
#wrapped .w2-delai .j{font-family:var(--fd);font-size:46px;line-height:.9;flex:none;}
#wrapped .w2-delai .x{min-width:0;}
#wrapped .w2-delai .x b{display:block;font-family:var(--fd);font-size:15px;letter-spacing:.5px;line-height:1.1;}
#wrapped .w2-delai .x i{display:block;font-style:normal;font-weight:700;font-size:10px;line-height:1.45;opacity:.75;margin-top:4px;}
#wrapped .w2-ou{display:flex;flex-direction:column;gap:7px;width:100%;}
#wrapped .w2-ou div{display:flex;align-items:center;gap:9px;border:3px solid var(--ink);background:var(--paper);
  color:var(--ink);box-shadow:4px 4px 0 var(--ink);padding:9px 10px;}
#wrapped .w2-ou div img{width:24px;height:24px;flex:none;display:block;}
#wrapped .w2-ou div b{font-family:var(--fd);font-size:13px;letter-spacing:.4px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#wrapped .w2-ou div i{font-style:normal;font-weight:700;font-size:9px;opacity:.7;display:block;margin-top:2px;}

/* ⚠ JAMAIS UNE OMBRE NOIRE SUR UNE CARTE NOIRE — la remarque la plus répétée.
   Les cartes `bg-ink` portent des blocs dont l'ombre var(--ink) tombait dans le
   noir : l'objet flottait sans relief. Sur CES cartes-là, et sur elles seules,
   l'ombre passe en magenta. Les cartes de couleur gardent l'ombre d'encre. */
#wrapped .card.bg-ink .chip,
#wrapped .card.bg-ink .w2-chap .pistes span{box-shadow:3px 3px 0 var(--magenta);}
#wrapped .card.bg-ink .sticker,
#wrapped .card.bg-ink .reward,
#wrapped .card.bg-ink .pod .av,
#wrapped .card.bg-ink .pod .col,
#wrapped .card.bg-ink .w2-duo > div,
#wrapped .card.bg-ink .w2-ou div,
#wrapped .card.bg-ink .w2-run span,
#wrapped .card.bg-ink .w2-chap .f{box-shadow:4px 4px 0 var(--magenta);}
#wrapped .card.bg-ink .fighter .av,
#wrapped .card.bg-ink .meter{box-shadow:5px 5px 0 var(--magenta);}
#wrapped .card.bg-ink .stampbox,
#wrapped .card.bg-ink .w2-delai,
#wrapped .card.bg-ink .qb-em{box-shadow:6px 6px 0 var(--magenta);}
#wrapped .card.bg-ink .trophy,
#wrapped .card.bg-ink .qb{box-shadow:7px 7px 0 var(--magenta);}
#wrapped .card.bg-ink .cass{box-shadow:9px 9px 0 var(--magenta);}
#wrapped .card.bg-ink .az{box-shadow:10px 10px 0 var(--magenta);}
/* la carte à collectionner est elle-même une carte SOMBRE : son emblème et son
   avatar portaient une ombre `--off` magenta, mais ses blocs de chiffres une
   ombre d'encre à 28 % — invisible. On les rend au magenta aussi. */
#wrapped .card.bg-ink .az-stats div,
#wrapped .card.bg-ink .c20-grid div{box-shadow:3px 3px 0 var(--off);}

/* ------------------------------------------------------------
   L'ÉCRAN D'ENTRÉE — rien ne démarre avant le bouton. C'est LUI qui
   débloque la lecture audio : un seul appui, le parcours ET la musique
   partent ensemble. Plus de « touche l'écran pour que le son arrive ».
   ------------------------------------------------------------ */
/* L'entrée est TOUJOURS posée sur du sombre, dans les deux peaux. On lui donne
   donc ses deux couleurs à elle : --gtxt (la claire, pour le texte et les traits)
   et --gbg (la sombre, pour les blocs). En néon, les tokens s'échangent —
   sans ça le titre passait prune sur prune et disparaissait. */
#wrapped .w2-gate{--gtxt:var(--paper);--gbg:var(--ink);
  position:absolute;inset:0;z-index:60;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:30px 22px;background:var(--gbg);}
html[data-skin="neon"] #wrapped .w2-gate{--gtxt:var(--ink);--gbg:#1A0F18;}
#wrapped .w2-gate[hidden]{display:none;}
/* avant le départ : ni segments, ni en-tête, ni platine — l'entrée est seule */
#wrapped.avant .w2-segs,
#wrapped.avant .w2-head,
#wrapped.avant .w2-deck{display:none;}
#wrapped .w2-gate .bandes{position:absolute;inset:0;display:flex;pointer-events:none;}
#wrapped .w2-gate .bandes i{flex:1;background:var(--magenta);opacity:.13;}
#wrapped .w2-gate .bandes i:nth-child(2n){background:var(--cyan);}
#wrapped .w2-gate .bandes i:nth-child(3n){background:var(--yellow);}
#wrapped .w2-gate .in{position:relative;z-index:2;display:flex;flex-direction:column;
  align-items:center;text-align:center;width:100%;}
#wrapped .w2-gate .k{font-family:var(--fd);font-size:11px;letter-spacing:3px;
  border:3px solid var(--gtxt);background:var(--gbg);color:var(--gtxt);
  padding:6px 11px;box-shadow:4px 4px 0 var(--magenta);}
#wrapped .w2-gate .t{font-family:var(--fd);font-size:70px;line-height:.86;letter-spacing:-1px;
  color:var(--gtxt);margin-top:20px;}
#wrapped .w2-gate .t em{font-style:normal;color:var(--magenta);}
#wrapped .w2-gate .d{font-weight:700;font-size:11px;letter-spacing:1.2px;color:var(--gtxt);
  opacity:.8;margin-top:12px;}
#wrapped .w2-gate .b{margin-top:30px;width:100%;cursor:pointer;
  font-family:var(--fd);font-size:24px;letter-spacing:1.5px;line-height:1;
  border:5px solid var(--gbg);background:var(--yellow);color:#12080F;
  box-shadow:8px 8px 0 var(--magenta);padding:19px 14px;touch-action:manipulation;}
#wrapped .w2-gate .b:active{transform:translate(5px,5px);box-shadow:3px 3px 0 var(--magenta);}
html[data-skin="neon"] #wrapped .w2-gate .b{border-color:var(--gtxt);}
#wrapped .w2-gate .son{display:flex;align-items:center;gap:9px;margin-top:22px;width:100%;
  border:3px solid var(--gtxt);background:var(--gbg);padding:8px 10px;box-shadow:4px 4px 0 var(--cyan);}
#wrapped .w2-gate .son img.p{width:42px;height:42px;flex:none;border:2px solid var(--gtxt);display:block;}
#wrapped .w2-gate .son .x{min-width:0;text-align:left;}
#wrapped .w2-gate .son .x b{display:block;font-family:var(--fd);font-size:13px;color:var(--gtxt);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#wrapped .w2-gate .son .x i{display:block;font-style:normal;font-weight:700;font-size:9px;
  letter-spacing:.8px;color:var(--gtxt);opacity:.7;margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#wrapped .w2-gate .son .eq{display:flex;align-items:flex-end;gap:3px;height:20px;margin-left:auto;flex:none;}
#wrapped .w2-gate .son .eq i{width:4px;height:6px;background:var(--cyan);display:block;}

/* ------------------------------------------------------------
   BRIQUES DES TROIS ÉCRANS D'OUVERTURE
   ------------------------------------------------------------ */
#wrapped .w2-tag{font-family:var(--fd);font-size:11px;letter-spacing:3px;
  border:3px solid var(--ink);background:var(--paper);color:var(--ink);
  padding:6px 11px;box-shadow:4px 4px 0 var(--magenta);}
#wrapped .w2-rule{width:120px;height:7px;background:currentColor;margin:14px 0 4px;}
/* les têtes de la bande, qui tombent une par une */
#wrapped .w2-tetes{display:flex;gap:9px;justify-content:center;margin-top:24px;}
#wrapped .w2-tetes figure{display:flex;flex-direction:column;align-items:center;gap:6px;width:74px;}
#wrapped .w2-tetes .av{width:64px;height:64px;border:4px solid var(--ink);background:var(--paper);
  box-shadow:5px 5px 0 var(--magenta);overflow:hidden;}
#wrapped .w2-tetes .av img{width:100%;height:100%;display:block;}
#wrapped .w2-tetes figcaption{font-family:var(--fd);font-size:11px;letter-spacing:.5px;
  border:2.5px solid var(--ink);background:var(--paper);color:var(--ink);padding:3px 5px;
  max-width:74px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* ------------------------------------------------------------
   LE REVEAL DE FIN — la saison 02. Des grands mots, pas du texte.
   ------------------------------------------------------------ */
#wrapped .w2-rev{position:relative;display:flex;flex-direction:column;align-items:center;width:100%;}
#wrapped .w2-rev .k{font-family:var(--fd);font-size:12px;letter-spacing:4px;
  border:3px solid var(--ink);background:var(--paper);color:var(--ink);padding:6px 12px;
  box-shadow:4px 4px 0 var(--magenta);}
/* ⚠ LE NUMÉRO DE SAISON ÉTAIT COUPÉ EN HAUT ET EN BAS. `line-height:.8` serre
   la ligne sous la hauteur réelle des chiffres d'Anton, et `overflow:hidden`
   tranchait ce qui dépassait : le 0 et le 2 arrivaient rognés. Le masque ne
   sert qu'à l'entrée (les chiffres viennent de hors-champ) — on le pose sur un
   calque intérieur, et la boîte, elle, laisse respirer. */
#wrapped .w2-rev .n{font-family:var(--fd);font-size:150px;line-height:1;letter-spacing:-9px;
  margin-top:14px;display:flex;overflow:visible;padding:6px 0;}
/* Le masque de chaque chiffre faisait EXACTEMENT la hauteur de la ligne : les
   chiffres d'Anton dépassent de leur ligne, le 3 se retrouvait coupé en bas.
   On agrandit le masque (padding) et on reprend la place (marge négative) :
   l'entrée depuis le hors-champ (±130 %) reste masquée, le glyphe respire. */
#wrapped .w2-rev .n span{display:block;overflow:hidden;
  padding:.16em .03em;margin:-.16em -.03em;}
/* le nom de la saison : AUCUNE coupe ici. `overflow:hidden` mangeait l'accent
   d'Anton (« NEON » au lieu de « NÉON ») quelle que soit la marge ajoutée. */
#wrapped .w2-rev .t{font-family:var(--fd);font-size:54px;line-height:1;letter-spacing:2px;
  margin-top:12px;white-space:nowrap;overflow:visible;max-width:100%;}
#wrapped .w2-rev .e{position:absolute;top:8px;right:-6px;width:68px;height:68px;display:block;}
#wrapped .w2-rev .r{width:150px;height:7px;background:currentColor;margin-top:16px;}

/* le halo néon : inerte en light, c'est le relief de la peau sombre */
#wrapped .w2-halo{display:none;}

/* ============================================================
   PEAU NÉON — html[data-skin="neon"], posée sur data-theme="abime",
   exactement comme brutal.css § NÉON. Les valeurs sont CELLES de
   brutal.css (encre prune, crème, magenta lisible) ; rien d'inventé.

   Le principe : ce n'est PAS le light recolorié. En néon, toutes les
   cartes deviennent une seule scène d'encre prune, et la couleur passe
   dans la LUMIÈRE : le trait, le chiffre, les calques, le halo, les
   pastilles. Un seul aplat clair par carte, au plus.
   ============================================================ */
html[data-skin="neon"] #wrapped{
  --paper:#31202F;          /* --surface  */
  --ink:#F6EEE3;            /* --text : le trait et le texte, jamais blanc pur */
  --gray:#3E2A3B;           /* --surface2 */
  --gray2:#3E2A3B;
  --magenta:#FF5CA8;        /* le magenta LISIBLE sur l'encre */
  --yellow:#FFD84D; --cyan:#59E7F2; --green:#6BFFB0;
  --red:#FF6B6B; --orange:#FFA76B; --purple:#C07CFF; --blue:#7CA0FF;
  background:#1A0F18;
}
html[data-skin="neon"] #wrapped .player{background:#1A0F18;}
/* une seule scène : les fonds de carte deviennent l'encre prune, teintée
   par l'accent de la carte (jamais un aplat de couleur plein écran). */
html[data-skin="neon"] #wrapped .card{background:#241722;}
html[data-skin="neon"] #wrapped .card.bg-mag{--ac:var(--magenta);}
html[data-skin="neon"] #wrapped .card.bg-yel{--ac:var(--yellow);}
html[data-skin="neon"] #wrapped .card.bg-cya{--ac:var(--cyan);}
html[data-skin="neon"] #wrapped .card.bg-grn{--ac:var(--green);}
html[data-skin="neon"] #wrapped .card.bg-red{--ac:var(--red);}
html[data-skin="neon"] #wrapped .card.bg-ora{--ac:var(--orange);}
html[data-skin="neon"] #wrapped .card.bg-pur{--ac:var(--purple);}
html[data-skin="neon"] #wrapped .card.bg-ink{--ac:var(--magenta);}
html[data-skin="neon"] #wrapped .card.bg-pap{--ac:var(--cyan);}
/* les calques de fond passent en crème, et prennent l'accent de la carte */
html[data-skin="neon"] #wrapped .bg{--lk:246,238,227;}
html[data-skin="neon"] #wrapped .card .grid,
html[data-skin="neon"] #wrapped .card .bgnoise{opacity:.55;filter:invert(1);}
/* LE HALO : le relief de la peau sombre. Trait net, aucune lueur ni flou. */
html[data-skin="neon"] #wrapped .w2-halo{display:block;position:absolute;inset:7px;z-index:1;
  border:3px solid var(--ac,var(--magenta));pointer-events:none;}
html[data-skin="neon"] #wrapped .w2-halo::after{content:'';position:absolute;left:-3px;right:-3px;top:-3px;
  height:9px;background:var(--ac,var(--magenta));}
/* le texte : crème partout, y compris sur les cartes marquées « on-dark » */
html[data-skin="neon"] #wrapped .card .ct,
html[data-skin="neon"] #wrapped .card.on-dark .ct,
html[data-skin="neon"] #wrapped .card.on-dark .ct .nm,
html[data-skin="neon"] #wrapped .card.on-dark .ct .lead,
html[data-skin="neon"] #wrapped .card.on-dark .ct .sub,
html[data-skin="neon"] #wrapped .card.on-dark .kick,
html[data-skin="neon"] #wrapped .card.on-dark .big{color:var(--ink);}
/* les grands chiffres s'allument à l'accent de la carte — c'est la seule
   source de lumière de la scène. Posé APRÈS le bloc de couleur ci-dessus, et
   avec la même spécificité pour les cartes sombres, sinon elles restent crème. */
html[data-skin="neon"] #wrapped .big,
html[data-skin="neon"] #wrapped .card.on-dark .big,
html[data-skin="neon"] #wrapped .w2-chap .n,
html[data-skin="neon"] #wrapped .w2-rev .t{color:var(--ac,var(--magenta));}
/* les blocs clairs deviennent des blocs d'encre à trait crème.
   ⚠ jamais de fond sombre avec une ombre sombre : l'ombre est crème ou magenta. */
html[data-skin="neon"] #wrapped .chip,
html[data-skin="neon"] #wrapped .stampbox,
html[data-skin="neon"] #wrapped .sticker,
html[data-skin="neon"] #wrapped .reward,
html[data-skin="neon"] #wrapped .quiz .opt,
html[data-skin="neon"] #wrapped .w2-duo > div,
html[data-skin="neon"] #wrapped .w2-ou div,
html[data-skin="neon"] #wrapped .w2-merci span,
html[data-skin="neon"] #wrapped .w2-chap .pistes span,
html[data-skin="neon"] #wrapped .qb{background:var(--paper);color:var(--ink);}
html[data-skin="neon"] #wrapped .chip,
html[data-skin="neon"] #wrapped .w2-merci span{box-shadow:3px 3px 0 var(--magenta);}
html[data-skin="neon"] #wrapped .stampbox,
html[data-skin="neon"] #wrapped .qb,
html[data-skin="neon"] #wrapped .w2-delai{box-shadow:6px 6px 0 var(--magenta);}
html[data-skin="neon"] #wrapped .reward,
html[data-skin="neon"] #wrapped .quiz .opt,
html[data-skin="neon"] #wrapped .w2-duo > div,
html[data-skin="neon"] #wrapped .w2-ou div,
html[data-skin="neon"] #wrapped .sticker,
html[data-skin="neon"] #wrapped .pod .col,
html[data-skin="neon"] #wrapped .pod .av,
html[data-skin="neon"] #wrapped .fighter .av,
html[data-skin="neon"] #wrapped .meter,
html[data-skin="neon"] #wrapped .w2-run span{box-shadow:4px 4px 0 var(--magenta);}
html[data-skin="neon"] #wrapped .qb-em,
html[data-skin="neon"] #wrapped .trophy{box-shadow:5px 5px 0 var(--magenta);}
html[data-skin="neon"] #wrapped .cass{box-shadow:9px 9px 0 var(--magenta);}
html[data-skin="neon"] #wrapped .az{box-shadow:10px 10px 0 var(--magenta);}
/* jauges, tuiles, histogramme : creux d'encre, remplissage néon */
html[data-skin="neon"] #wrapped .meter,
html[data-skin="neon"] #wrapped .tiles i,
html[data-skin="neon"] #wrapped .hours .h,
html[data-skin="neon"] #wrapped .race .r .t,
html[data-skin="neon"] #wrapped .w2-cats .l .t,
html[data-skin="neon"] #wrapped .w2-deck .w2-bar{background:var(--gray);}
html[data-skin="neon"] #wrapped .tiles i.w{background:var(--green);}
html[data-skin="neon"] #wrapped .hours .h.peak{background:var(--magenta);}
html[data-skin="neon"] #wrapped .pod.p2 .col{background:var(--gray);}
/* podium / carte d'identité : la colonne 1 reste jaune, le texte reste sombre dessus */
html[data-skin="neon"] #wrapped .pod.p1 .col,
html[data-skin="neon"] #wrapped .pod.p3 .col,
html[data-skin="neon"] #wrapped .az-stats div,
html[data-skin="neon"] #wrapped .c20-grid div,
html[data-skin="neon"] #wrapped .az-seal{color:#12080F;}
html[data-skin="neon"] #wrapped .az-stats div,
html[data-skin="neon"] #wrapped .c20-grid div{background:#F6EEE3;}
html[data-skin="neon"] #wrapped .az-mark{background:var(--ink);color:#1A0F18;}
html[data-skin="neon"] #wrapped .vs{background:var(--paper);color:var(--ink);border-color:var(--ink);
  box-shadow:4px 4px 0 var(--magenta);}
html[data-skin="neon"] #wrapped .w2-head .w2-face,
html[data-skin="neon"] #wrapped .w2-head .w2-k{background:var(--paper);}
html[data-skin="neon"] #wrapped .w2-head .w2-k.y{background:var(--yellow);}
html[data-skin="neon"] #wrapped .w2-head .w2-k.r{background:var(--red);}
html[data-skin="neon"] #wrapped .w2-chap .f{background:var(--paper);color:var(--ink);}
html[data-skin="neon"] #wrapped .w2-deck,
html[data-skin="neon"] #wrapped .w2-deck .w2-t,
html[data-skin="neon"] #wrapped .w2-deck .w2-a,
html[data-skin="neon"] #wrapped .w2-deck .w2-tm{color:var(--ink);}
html[data-skin="neon"] #wrapped .w2-deck{background:var(--paper);}
/* la cassette d'intro et la platine de la carte MUSIQUE restent des OBJETS :
   encre prune, trait crème, étiquette allumée. */
html[data-skin="neon"] #wrapped .card.on-dark .ct .cass,
html[data-skin="neon"] #wrapped .card.on-dark .ct .cass .lbl .a,
html[data-skin="neon"] #wrapped .card.on-dark .ct .cass .lbl .b,
html[data-skin="neon"] #wrapped .card.on-dark .ct .cass .scr{color:#12080F;}
html[data-skin="neon"] #wrapped .cass{background:#F6EEE3;}
/* la fenêtre de la cassette : encre prune, bobines CRÈME — sinon les deux
   bobines étaient prune sur prune et la cassette avait un trou noir. */
html[data-skin="neon"] #wrapped .cass .win{background:#1A0F18;border-color:#12080F;}
html[data-skin="neon"] #wrapped .reel{background:#1A0F18;border-color:#F6EEE3;}
html[data-skin="neon"] #wrapped .reel::before,
html[data-skin="neon"] #wrapped .reel::after{background:#F6EEE3;}
html[data-skin="neon"] #wrapped .plat{background:var(--paper);border-color:var(--magenta);}

/* la lettre des réponses : encre sombre sur la pastille jaune, jamais crème */
html[data-skin="neon"] #wrapped .quiz .opt .k{color:#12080F;}

/* les cartes à collectionner ne sont JAMAIS du noir pur en néon : encre prune.
   Et leur texte est CRÈME : `.az.sombre` le met à var(--paper), qui vaut l'encre
   prune en néon — le nom de l'archétype et sa description passaient prune sur
   prune, on ne lisait plus que le décalage d'impression magenta. */
html[data-skin="neon"] #wrapped .az.sombre{background:#1A0F18;color:var(--ink);}

/* le flare doré de la carte CLASSEMENT écrasait la scène sombre : il passe en
   magenta, plus discret, et le halo de la carte reprend la main. */
html[data-skin="neon"] #wrapped .rays2{
  background:repeating-conic-gradient(from 0deg, rgba(255,92,168,.20) 0deg 11deg, transparent 11deg 22deg);}

/* LE VERDICT DE LA QUESTION — une pastille pleine, pas une ligne grise de 15 px
   perdue sous les réponses. Edwin : « le "bien vu" en bas, on n'arrive pas à
   bien le voir, j'avais demandé de corriger ça ». */
#wrapped .w2-verdict {
  font-family: var(--fd); font-size: 19px; letter-spacing: 1px; text-align: center;
  border: 3px solid var(--ink); box-shadow: 4px 4px 0 var(--ink); padding: 10px 14px;
  background: var(--paper); color: var(--ink);
}
#wrapped .w2-verdict.bon { background: var(--green); }
#wrapped .w2-verdict.rate { background: var(--red, #FF5252); color: #FFFEF7; }
#wrapped .w2-verdict[hidden] { display: none; }

/* LES RÉPONSES DE LA QUESTION SONT DROITES — jamais penchées. Edwin, deux fois :
   « je veux pas que les cartes là soient penchées, on répond comme si c'était
   une partie de quiz classique ». Le verrou est ici pour que ni une animation
   ni une peau d'écran ne les incline. */
#wrapped .quiz, #wrapped .quiz .opt { transform: none; rotate: none; }
#wrapped .quiz .opt:active { transform: translate(3px, 3px); }

/* L'EMOJI DE LA CARTE — Edwin : « c'est trop fade, il n'y a pas d'emojis, on ne
   sent pas que c'est un jeu, c'est que du texte ». Chaque carte porte le sien,
   dans le cadre du brandbook : bord 5 px, ombre dure, et il respire. */
#wrapped .w2-emo {
  width: 84px; height: 84px; flex: none; margin-bottom: 14px;
  border: 5px solid var(--ink); background: var(--paper); box-shadow: 7px 7px 0 var(--ink);
  display: grid; place-items: center;
  animation: w2-emo-b 2.4s ease-in-out infinite;
}
#wrapped .w2-emo img { width: 54px; height: 54px; display: block; }
#wrapped .card.on-dark .w2-emo { box-shadow: 7px 7px 0 var(--magenta); }
@keyframes w2-emo-b { 0%, 100% { transform: rotate(-3deg) } 50% { transform: rotate(3deg) } }
@media (prefers-reduced-motion: reduce) { #wrapped .w2-emo { animation: none } }
