/* ============================================================
   CRÉNO — E4 « Mes Crénos » (liste des réservations + annuler)
   S'appuie sur creno-ds.css (v7) + réutilise .nav du DS.
   ============================================================ */

.mine-main{max-width:760px;margin:0 auto;padding:30px 22px var(--tabbar-clearance)} /* E21/US21.5 : dégage la barre d'onglets flottante — la dernière carte ne finit jamais dessous */
.mine-main section{padding:0} /* neutralise le padding « landing » du DS (section{padding:var(--section-y) 0}) */
.mine-head{margin-bottom:24px}
.mine-head h1{font-family:var(--display);font-weight:800;font-size:clamp(26px,4vw,34px);letter-spacing:-.035em;line-height:1.05}
.mine-head p{color:var(--ink-soft);font-size:15px;margin-top:6px}

/* Compte (email + déconnexion) dans la nav */
.acct{display:flex;align-items:center;gap:12px}
.acct-mail{font-size:13.5px;color:var(--ink-soft);max-width:34vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:560px){.acct-mail{display:none}}

/* ============================================================
   Bandeau coach v2 (SCRUM-115 / D26-D27) — gamifié façon Duolingo/Alan :
   flamme hebdo animée · énergie (count-up) · sports (barres épaisses).
   Accent chaud scoped gamification : --flame (hors palette CTA, assumé D27).
   ============================================================ */
.coach{--flame:#FF8A00;margin-bottom:34px}
.coach-top{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.coach-reno{width:64px;height:64px;object-fit:contain;flex:none;filter:drop-shadow(0 6px 12px rgba(20,22,14,.14))}
.coach-msg{font-family:var(--display);font-weight:700;font-size:clamp(17px,2.4vw,20px);letter-spacing:-.02em;line-height:1.25;color:var(--ink)}
.coach-note{margin-top:10px;font-size:11px;color:var(--ink-mute)}
.coach-grid{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:12px}
@media(max-width:640px){
  .coach-grid{display:flex;overflow-x:auto;scroll-snap-type:x proximity;margin:0 -22px;padding:2px 22px 8px;scrollbar-width:none}
  .coach-grid::-webkit-scrollbar{display:none}
  .gw{flex:0 0 218px;scroll-snap-align:start}
}
.gw{position:relative;display:flex;flex-direction:column;gap:10px;background:var(--cloud);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;box-shadow:var(--elev-card,var(--elev-1));min-width:0;overflow:hidden;
  animation:gwIn var(--dur-slow) var(--ease-entrance) both;transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.gw:nth-child(2){animation-delay:70ms}.gw:nth-child(3){animation-delay:140ms}
.gw:hover{transform:translateY(-3px);box-shadow:var(--elev-pop,var(--elev-3))}
@keyframes gwIn{from{opacity:0;translate:0 14px;scale:.97}to{opacity:1;translate:0 0;scale:1}}
.gw-body{display:flex;flex-direction:column;gap:5px;min-width:0}
.gw-val{display:flex;align-items:baseline;gap:7px;font-family:var(--display);font-weight:800;font-size:30px;letter-spacing:-.03em;color:var(--ink);line-height:1;font-variant-numeric:tabular-nums}
.gw-val small{font-family:var(--body);font-weight:700;font-size:13px;letter-spacing:0;color:var(--ink)}
.gw-sub{font-size:12px;color:var(--ink-soft);line-height:1.45}
.gw-label{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft)}
.gw-ic{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;flex:none}
.gw-ic svg{width:21px;height:21px}
.gw-ic-lime{background:var(--lime-soft);color:var(--ink)}
/* Icône 3D posée à cru (pas de pastille) — les renders ont leur propre profondeur */
.gw-3dico{width:46px;height:46px;object-fit:contain;flex:none;filter:drop-shadow(0 4px 9px rgba(20,22,14,.14))}

/* --- 1 · FLAMME (Duolingo) : brûle si streak >= 1, cendre sinon (relance, D17) --- */
.gw-flame{flex-direction:row;align-items:center;gap:14px;background:linear-gradient(150deg,var(--surface-raised) 0%,var(--cloud) 62%)}
.gw-flame:not(.is-lit){background:var(--cloud)}
.gw-flame-stage{position:relative;flex:none;width:88px;height:92px;display:grid;place-items:center}
.flame-img{width:86px;height:86px;object-fit:contain;filter:drop-shadow(0 6px 12px rgba(255,138,0,.30))}
.gw-flame.is-lit .flame-img{transform-origin:50% 88%;animation:flameDance 1.9s ease-in-out infinite}
.gw-flame:not(.is-lit) .flame-img{filter:drop-shadow(0 5px 10px rgba(20,22,14,.14));opacity:.96}
@keyframes flameDance{0%,100%{transform:scale(1) rotate(0deg)}30%{transform:scale(1.05,.96) rotate(-2deg)}60%{transform:scale(.97,1.05) rotate(2deg)}}
.gw-flame .gw-val b{font-size:30px;color:var(--flame)}
.gw-flame:not(.is-lit) .gw-val{font-size:inherit}
.gw-relight{font-family:var(--body);font-weight:700;font-size:13.5px;color:var(--ink);line-height:1.4;letter-spacing:0}
.gw-cta{font-size:13px;font-weight:700;color:var(--violet);text-decoration:underline;text-underline-offset:3px}
.gw-cta:hover{color:var(--violet-pop)}

/* --- 2 · ÉNERGIE : kcal en chip lime (D27 : estimation, jamais stocké) --- */
.kcal-chip{align-self:flex-start;display:inline-flex;align-items:baseline;gap:3px;background:var(--lime);color:var(--on-lime);border-radius:var(--r-pill);padding:5px 11px;font-weight:700;font-size:13px}
.kcal-chip b{font-family:var(--display);font-weight:800;font-size:15px;font-variant-numeric:tabular-nums}

/* --- 3 · SPORTS : barres épaisses animées (fill + stagger) --- */
.sb{display:grid;grid-template-columns:24px 1fr auto;grid-template-rows:auto auto;gap:2px 9px;align-items:center}
.sb-ic{grid-row:span 2;width:30px;height:30px;object-fit:contain}
.sb em{font-style:normal;font-weight:700;font-size:12.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb b{font-family:var(--mono);font-size:11.5px;color:var(--ink-soft)}
.sb-track{grid-column:2/4;height:9px;border-radius:99px;background:var(--paper-2);overflow:hidden}
.sb-track i{display:block;height:100%;width:var(--w);border-radius:99px;background:linear-gradient(90deg,var(--lime),var(--lime-pop));
  animation:sbFill .7s var(--ease) both;animation-delay:var(--d);transform-origin:left}
.sb:nth-child(2) .sb-track i{background:linear-gradient(90deg,#8E74FF,var(--violet))}
.sb:nth-child(3) .sb-track i{background:linear-gradient(90deg,#79D3A4,var(--ok))}
@keyframes sbFill{from{scale:0 1}to{scale:1 1}}
@media(prefers-reduced-motion:reduce){
  .gw,.gw-flame.is-lit .flame-img,.sb-track i{animation:none}
}

/* --- Joker « Mi-temps » (US22.5/SCRUM-139) : mention douce dans le corps de la
   flamme quand il a comblé une semaine + rappel discret du stock restant. Jamais
   « cassé »/« perdu » (D17) — le joker se dit en positif, le stock en aparté. --- */
.gw-joker{display:block;font-size:11.5px;font-weight:700;color:var(--flame);line-height:1.35;margin-top:1px}
.gw-joker-left{display:block;font-size:10.5px;color:var(--ink-mute);line-height:1.3;margin-top:1px}

/* ============================================================
   Médailles (US22.5/SCRUM-139) — 6 jalons CRENO_GAMIF, pastilles en rangée sous
   les widgets coach. Obtenu = icône 3D en couleur nette · non obtenu = grisée +
   nom (jamais masqué : la progression reste visible, D17). Stagger d'entrée
   35ms (pattern D23). Volontairement HORS de #coachGrid (pas un enfant du
   scroll-snap mobile ni de la grille 3-col desktop) pour ne rien fragiliser de
   ces deux comportements déjà réglés — cf. rapport de livraison.
   ============================================================ */
.med-block{margin-top:18px}
.med-row{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:8px}
.med-item{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6px;text-align:center;min-height:88px;padding:12px 6px;
  background:var(--cloud);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--elev-card,var(--elev-1));
  animation:medIn var(--dur-slow) var(--ease-entrance) both;animation-delay:var(--d);
  transition:box-shadow var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.med-item:hover{transform:translateY(-2px);box-shadow:var(--elev-pop,var(--elev-3))}
@keyframes medIn{from{opacity:0;translate:0 10px;scale:.96}to{opacity:1;translate:0 0;scale:1}}
.med-ic{width:42px;height:42px;object-fit:contain;transition:filter var(--dur-fast) var(--ease),opacity var(--dur-fast) var(--ease)}
.med-item:not(.is-obtenu) .med-ic{filter:grayscale(1);opacity:.4}
.med-item.is-obtenu .med-ic{filter:drop-shadow(0 4px 9px rgba(20,22,14,.16))}
.med-nom{font-size:10.5px;font-weight:700;line-height:1.25;color:var(--ink-soft)}
.med-item.is-obtenu .med-nom{color:var(--ink)}
@media(max-width:640px){.med-row{grid-template-columns:repeat(3,1fr)}}
@media(prefers-reduced-motion:reduce){.med-item{animation:none}}

/* ============================================================
   Teaser Collection (US22.5/SCRUM-139) — carte-lien pleine largeur vers
   collection.html. Même langage visuel que .mine-acct-link (cohérence des
   cartes-liens de la page) + badge lime si des pochettes attendent.
   ============================================================ */
.gw-teaser{display:flex;align-items:center;gap:14px;margin-top:14px;padding:14px 16px;
  background:var(--cloud);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--elev-card,var(--elev-1));
  text-decoration:none;color:var(--ink);transition:box-shadow var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.gw-teaser:hover{box-shadow:var(--elev-pop,var(--elev-3));transform:translateY(-2px)}
.gw-teaser:focus-visible{outline:3px solid var(--violet);outline-offset:2px}
.gw-teaser-ic{width:44px;height:44px;object-fit:contain;flex:none;filter:drop-shadow(0 4px 9px rgba(20,22,14,.14))}
.gw-teaser-txt{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.gw-teaser-txt b{font-family:var(--display);font-weight:700;font-size:14.5px;letter-spacing:-.01em}
.gw-teaser-sub{font-size:12.5px;color:var(--ink-soft)}
.gw-teaser-badge{flex:none;font-family:var(--mono);font-size:11px;font-weight:700;color:var(--ink);background:var(--lime);border-radius:var(--r-pill);padding:4px 10px;white-space:nowrap}
.gw-teaser .arr{flex:none;color:var(--ink-soft);transition:transform var(--dur-fast) var(--ease)}
.gw-teaser:hover .arr{transform:translateX(3px);color:var(--ink)}
/* Mobile étroit : le badge dispute la place du titre/sous-titre sur la même ligne
   (ex. « Ta » / « collection » coupé en 2 mots isolés) → il passe en 2ᵉ ligne, indenté
   sous le texte ; la flèche reste sur la 1ʳᵉ ligne (order fait passer SEUL le badge). */
@media(max-width:640px){
  .gw-teaser{flex-wrap:wrap;row-gap:8px}
  .gw-teaser .arr{order:1}
  .gw-teaser-badge{order:2;flex:0 1 calc(100% - 58px);margin-left:58px}
}

/* Sections */
.mine-sec{margin-bottom:30px}
.mine-sec h2{font-family:var(--display);font-weight:700;font-size:16px;letter-spacing:-.02em;color:var(--ink);margin-bottom:14px}
.mine-sec .cnt{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--ink-soft);background:var(--paper-2);padding:3px 9px;border-radius:var(--r-pill);margin-left:8px;vertical-align:2px}

.rlist{display:flex;flex-direction:column;gap:12px}

/* Carte-lien « Gérer mon compte » (E21/US21.5) — remplace la danger-zone RGPD inline :
   la suppression de compte (art. 17 / US4.10) vit désormais sur mon-compte.html.
   Même langage visuel que les cartes existantes (.gw/.rcard) : cloud + line + r-lg + elev-card. */
.mine-acct-link{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:34px;padding:16px 18px;background:var(--cloud);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--elev-card,var(--elev-1));font-family:var(--body);font-weight:700;font-size:14.5px;color:var(--ink);text-decoration:none;transition:box-shadow var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.mine-acct-link:hover{box-shadow:var(--elev-pop,var(--elev-3));transform:translateY(-2px)}
.mine-acct-link:focus-visible{outline:3px solid var(--violet);outline-offset:2px}
.mine-acct-link .arr{color:var(--ink-soft);transition:transform var(--dur-fast) var(--ease)}
.mine-acct-link:hover .arr{transform:translateX(3px);color:var(--ink)}

/* ============================================================
   Carte réservation v2 (SCRUM-115) — bloc date teinté sport · référence ·
   actions (plus d'infos ▾ · calendrier · annuler rouge) · expand détails.
   ============================================================ */
.rcard{--tint:var(--paper-2);--tic:var(--ink);background:var(--cloud);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px 0;box-shadow:var(--elev-card,var(--elev-1));animation:rIn var(--dur-slow) var(--ease-entrance) both;transition:box-shadow var(--dur-fast) var(--ease)}
.rcard:hover{box-shadow:var(--elev-pop,var(--elev-3))}
@keyframes rIn{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:reduce){.rcard{animation:none}}
.rcard.is-past{opacity:.78}
.rcard.leaving{opacity:0;transform:translateX(12px);transition:opacity var(--dur-base) var(--ease-exit),transform var(--dur-base) var(--ease-exit)}

.rc-row{display:flex;align-items:center;gap:14px;min-width:0}
/* Bloc date façon billetterie : teinté par sport */
.rc-date{flex:none;width:60px;display:flex;flex-direction:column;align-items:center;gap:0;background:var(--tint);border-radius:14px;padding:8px 4px}
.rd-wd{font-family:var(--mono);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--tic)}
.rd-num{font-family:var(--display);font-weight:800;font-size:23px;line-height:1.05;color:var(--tic);font-variant-numeric:tabular-nums}
.rd-mo{font-family:var(--mono);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--tic)}
.rcard[data-sport="Tennis"]{--tint:var(--lime-soft)}
.rcard[data-sport="Badminton"]{--tint:var(--violet-soft);--tic:var(--violet)}
.rcard[data-sport="Natation"]{--tint:var(--violet-soft);--tic:var(--violet)}
.rcard[data-sport="Gym"]{--tint:var(--violet-soft);--tic:var(--violet)}
.rcard[data-sport="Escalade"]{--tint:var(--warn-soft);--tic:var(--warn)}
.rcard[data-sport="Golf"]{--tint:var(--ok-soft);--tic:var(--ok)}

.rc-body{flex:1;min-width:0}
.rc-top{font-family:var(--mono);font-size:12px;color:var(--ink-soft);letter-spacing:.02em}
.rc-body h3{display:flex;align-items:center;gap:7px;font-family:var(--display);font-weight:700;font-size:17.5px;letter-spacing:-.015em;line-height:1.15;margin:3px 0 2px}
.rc-sic{width:24px;height:24px;object-fit:contain;vertical-align:-5px}
.rc-place{display:block;font-size:13px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Côté droit : référence (copiable) + annuler ROUGE (facile, mais texte sobre) */
.rc-side{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.rc-code{border:1px dashed var(--border-strong,var(--line));background:var(--paper);border-radius:9px;padding:5px 9px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.05em;color:var(--ink);cursor:copy;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}
.rc-code:hover{background:var(--lime-wash);border-color:var(--ink)}
.rc-cancel{border:none;background:none;padding:2px 3px;font-family:var(--body);font-size:12.5px;font-weight:700;color:var(--danger);cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.rc-cancel:hover{color:#A32619}

/* Pied d'actions */
.rc-foot{display:flex;align-items:center;gap:18px;border-top:1px solid var(--line);margin-top:13px;padding:9px 2px}
.rc-more,.rc-cal{display:inline-flex;align-items:center;gap:6px;border:none;background:none;padding:4px 2px;font-family:var(--body);font-size:13px;font-weight:700;color:var(--ink);cursor:pointer;border-radius:7px}
.rc-more svg{width:14px;height:14px;transition:transform var(--dur-base) var(--ease)}
.rcard.open .rc-more svg{transform:rotate(180deg)}
.rc-cal svg{width:16px;height:16px}
.rc-more:hover,.rc-cal:hover{color:var(--violet)}
.rc-more:focus-visible,.rc-cal:focus-visible,.rc-code:focus-visible,.rc-cancel:focus-visible{outline:3px solid var(--violet);outline-offset:2px}

/* Expand « plus d'infos » (grid-rows, même patron qu'E1) */
.rc-expand{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-base) var(--ease)}
.rcard.open .rc-expand{grid-template-rows:1fr}
.rc-expand-in{overflow:hidden;min-height:0}
.rcard.open .rc-expand-in{padding:2px 2px 14px}
.rx-row{display:flex;gap:12px;align-items:baseline;padding:5px 0;font-size:13.5px}
.rx-k{flex:none;width:86px;font-family:var(--mono);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-mute)}
.rx-v{color:var(--ink);min-width:0}
.rx-link{display:inline-flex;align-items:center;gap:6px;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.rx-link:hover{color:var(--violet)}
.rx-link svg{width:12px;height:12px;opacity:.6;flex:none}
.rx-code{font-family:var(--mono);font-weight:700;font-size:15px;letter-spacing:.08em;background:var(--lime-wash);border-radius:8px;padding:3px 10px}
.rx-hint{font-size:12px;color:var(--ink-mute);line-height:1.45;margin-top:6px}

/* ---------- Modale annulation : Réno désolé (curseur vers « garder ») ---------- */
.cx-scrim{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:24px;background:rgba(20,22,14,.44);backdrop-filter:blur(3px);
  opacity:0;visibility:hidden;transition:opacity .28s var(--ease),visibility 0s .28s}
.cx-scrim.open{opacity:1;visibility:visible;transition:opacity .28s var(--ease)}
.cx{width:min(400px,100%);background:var(--cloud);border-radius:var(--r-xl);box-shadow:var(--elev-4);padding:26px 26px 22px;text-align:center;
  transform:translateY(14px) scale(.97);transition:transform .3s var(--ease-spring,var(--ease))}
.cx-scrim.open .cx{transform:none}
.cx-reno{width:116px;height:116px;object-fit:contain;margin:0 auto 4px;filter:drop-shadow(0 8px 16px rgba(20,22,14,.16))}
.cx h3{font-family:var(--display);font-weight:800;font-size:19px;letter-spacing:-.02em;margin-bottom:8px}
.cx-what{font-family:var(--mono);font-size:12px;color:var(--ink);background:var(--paper-2);border-radius:var(--r-pill);padding:6px 12px;display:inline-block;margin-bottom:8px}
.cx-sub{font-size:13.5px;color:var(--ink-soft);line-height:1.5;margin-bottom:18px}
.cx-actions{display:flex;flex-direction:column;gap:9px}
.cx-actions .btn{width:100%;justify-content:center}
.cx-confirm{background:none;border:1.5px solid var(--danger);color:var(--danger)}
.cx-confirm:hover{background:var(--danger);color:#fff}
@media(prefers-reduced-motion:reduce){.cx{transition:none}}

/* États vides / gated / erreur */
.mine-state{text-align:center;padding:56px 20px;max-width:40ch;margin:0 auto}
.empty-reno{width:140px;height:140px;object-fit:contain;margin:0 auto 14px;filter:drop-shadow(0 10px 20px rgba(20,22,14,.14))}
.mine-state .ic{width:56px;height:56px;border-radius:18px;background:var(--lime-soft);display:grid;place-items:center;margin:0 auto 18px}
.mine-state .ic svg{width:27px;height:27px;color:var(--ink)}
.mine-state.gated .ic{background:var(--violet-soft)}
.mine-state.gated .ic svg{color:var(--violet)}
.mine-state h2{font-family:var(--display);font-weight:700;font-size:20px;letter-spacing:-.02em;margin-bottom:8px}
.mine-state p{color:var(--ink-soft);font-size:15px;line-height:1.55;margin-bottom:20px}

/* Skeleton */
.rskel{height:78px;border-radius:var(--r-lg);background:linear-gradient(90deg,var(--paper-2) 25%,rgba(20,22,14,.04) 37%,var(--paper-2) 63%);background-size:400% 100%;animation:skel 1.3s ease infinite;margin-bottom:12px}
@keyframes skel{0%{background-position:100% 0}100%{background-position:0 0}}
@media(prefers-reduced-motion:reduce){.rskel{animation:none}}

/* Toast de confirmation d'annulation — posé au-dessus de la barre d'onglets flottante (E21/US21.5) */
.toast{position:fixed;left:50%;bottom:calc(22px + var(--tabbar-clearance));transform:translateX(-50%) translateY(20px);z-index:90;background:var(--ink);color:var(--paper);font-weight:600;font-size:14px;padding:12px 20px;border-radius:var(--r-pill);box-shadow:var(--elev-4);opacity:0;pointer-events:none;transition:opacity var(--dur-base) var(--ease),transform var(--dur-base) var(--ease)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ============================================================
   E23 DESKTOP PREMIUM — US23.2 : « Mes Crénos » dashboard 2 colonnes.
   Réf. visuelle CONTRACTUELLE (validée fondateur) : mockup-desktop.html
   section A — rail coach gauche (flamme·énergie·sports·médailles·
   teaser) + résas en grille 2 colonnes à droite. Additions PURES dans
   ce media query — zéro règle hors @media, zéro suppression, le
   mobile (<1024px) est bit-à-bit inchangé.

   Breakpoint 1024px, PAS 900 comme .d-lift/.app-topnav (creno-ds.css)
   ou mon-compte.css (US23.4) : à 900px la vraie .rcard (référence
   copiable + annuler + « plus d'infos » + calendrier) est bien plus
   dense que les cartes simplifiées de la maquette V0 — en
   grid-template-columns:1fr 1fr la carte tombe à ~225px, trop juste
   pour son anatomie. 1024px laisse ~287px, confortable ; à 1440px
   (cible de vérif) on est à ~375px, quasi identique à la maquette.
   Un seul breakpoint pour TOUT le dashboard (rail + résas) : éviter un
   état intermédiaire 900-1023px où le rail serait déjà en mode desktop
   mais les résas encore empilées.
   ============================================================ */
@media (min-width:1024px){
  /* 1 · Page élargie + grille 2 colonnes (rail coach 370px | contenu résas 1fr) */
  .mine-main{
    max-width:var(--page-max,1200px);
    padding-left:var(--page-gutter,32px);
    padding-right:var(--page-gutter,32px);
  }
  #content{
    display:grid;
    grid-template-columns:370px 1fr;
    grid-template-areas:"rail up" "rail past";
    gap:22px;
    align-items:start;
  }
  #content > .coach{grid-area:rail}
  #content > #secUp{grid-area:up}
  #content > #secPast{grid-area:past}

  /* 2 · Rail : coachGrid repasse en colonne (1 widget/ligne, comme la maquette) */
  .coach-grid{grid-template-columns:1fr}
  /* Médailles en wrap : 6 jalons → 2 rangs de 3 (même densité que le palier mobile 640px,
     déjà éprouvé) plutôt que 6 colonnes forcées dans les 370px du rail (trop juste avec le nom
     sous chaque icône, cf. .med-nom — la maquette n'a pas ce label, notre carte si). */
  .med-row{grid-template-columns:repeat(3,1fr)}

  /* Teaser collection : sombre + badge lime, conforme à la maquette (mentionnée « NOIR avec
     badge lime »). Fond ink verrouillé même en thème sombre — même parade que .cta-band
     (landing.css:298) : un simple var(--ink) s'inverserait en CLAIR une fois le thème sombre
     appliqué (--ink devient #F2F3EE en dark), on fixe donc explicitement --surface-elevated.
     Texte en --text-on-ink (#F2F3EE, identique dans les 2 thèmes, cf. creno-ds.css) plutôt que
     --paper/--ink-soft qui s'inverseraient. Le badge lime existant n'a pas besoin d'y toucher. */
  .gw-teaser{background:var(--ink);color:var(--text-on-ink)}
  .gw-teaser-sub{color:rgba(242,243,238,.68)}
  .gw-teaser .arr{color:rgba(242,243,238,.68)}
  .gw-teaser:hover .arr{color:var(--text-on-ink)}
  :root[data-theme="dark"] .gw-teaser{background:var(--surface-elevated)}

  /* 3 · Résas : grille 2 colonnes. .rcard garde toute son anatomie (rc-row/rc-foot/rc-expand)
     — seul le PARENT change de layout, l'expand/annuler/copier/calendrier restent intacts.
     align-items:start : sans ça une carte ouverte (« Plus d'infos ») étire sa voisine de ligne
     à la même hauteur (stretch par défaut de grid) — chaque carte garde sa hauteur naturelle. */
  .rlist{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
  /* Hover lift : translateY + timing repris à l'identique de .d-lift (creno-ds.css, référence
     CANONIQUE desktop des écrans V2) ; le box-shadow reste var(--elev-pop,var(--elev-3))
     DÉJÀ theme-aware sur .rcard — pas le rgba figé de .d-lift qui, lui, ne l'est pas. */
  .rcard{transition:box-shadow var(--dur-fast) var(--ease),transform .18s var(--ease)}
  .rcard:hover{transform:translateY(-3px)}
}
@media (min-width:1024px) and (prefers-reduced-motion:reduce){
  .rcard:hover{transform:none}
}
