/* ============================================================
   ACCUEIL DASHBOARD — "Éditorial calme" (2A bureau / 1A téléphone)
   ------------------------------------------------------------
   Replace le tableau de bord du membre connecté (ancien
   .dash-header + onglets Tableau de bord/Activité). Palette et
   typographie volontairement distinctes du reste du site (voir
   DESIGN.md) : un module éditorial autonome. Sa palette est en
   revanche branchée sur le bouton clair/sombre (theme.js) — elle
   était figée en papier, ce qui faisait de ce bloc le seul
   rectangle blanc de l'accueil en thème sombre.
   Portée strictement limitée à .fz-dash : aucun jeton partagé
   (--primary, --bg, etc. définis dans index.css) n'est touché.
   ============================================================ */

.fz-dash-section {
    display: none; /* accueil-dash.js le révèle une fois un pool actif chargé */
    padding: 0 24px 72px;
    /* Le fond de page vit ici et non dans .fz-dash : cette section est le
       PARENT du bloc qui porte la palette, elle n'en hérite donc pas. */
    --fzd-page: #dedbd5;
    background: var(--fzd-page);
}

.fz-dash {
    max-width: 1200px;
    margin: 0 auto;

    --fzd-bg: #f7f6f3;
    --fzd-bg-alt: #f2f0eb;
    --fzd-surface: #ffffff;
    --fzd-ink: #16181a;
    --fzd-ink-soft: #3d3a35;
    --fzd-text: #4b4843;
    --fzd-text-muted: #6d6a64;
    --fzd-text-faint: #8a877f;
    --fzd-text-fainter: #a8a49c;
    --fzd-border: #e2dfd8;
    --fzd-border-strong: #cdcac3;
    --fzd-border-soft: #eae7e0;
    --fzd-accent: #b93d28;
    --fzd-accent-dark: #8f2e1a;
    /* Aplat de la brique : --fzd-accent s'éclaircit en thème sombre pour
       rester lisible en TEXTE, le fond plein ne bouge pas. */
    --fzd-accent-fill: #b93d28;
    /* Voile de brique (badge « En direct », journée sélectionnée au
       téléphone) : il s'éclaircit avec l'accent en thème sombre. */
    --fzd-accent-tint: rgba(185, 61, 40, .1);
    --fzd-on-accent: #ffffff;
    --fzd-tile-bg: #eceae4;
    /* --fzd-ink servait à la fois de couleur de texte la plus appuyée et
       d'aplat plein (jour courant, onglet actif, CTA) : les deux
       s'inversent en thème sombre, mais pas dans le même sens. */
    --fzd-solid: #16181a;
    --fzd-solid-hover: #000000;
    --fzd-on-solid: #ffffff;
    /* Texte secondaire POSÉ sur --fzd-solid : les deux s'inversent en thème
       sombre, un rgba(255,255,255,…) figé deviendrait illisible. */
    --fzd-on-solid-soft: rgba(255, 255, 255, .62);
    --fzd-pool-icon-a: #e6e3db;
    --fzd-pool-icon-b: #dcd8d0;

    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    color: var(--fzd-text);
}

/* ------------------------------------------------------------ */
/* Thème sombre — remappage des mêmes jetons. Seules les VALEURS */
/* basculent : aucune règle en aval ne change. La brique reste   */
/* la brique en APLAT (--fzd-accent-fill, blanc dessus à 5,58:1) */
/* et s'éclaircit en TEXTE (--fzd-accent) pour tenir 5,8:1 sur   */
/* la carte sombre — 2,8:1 sinon.                                */
/* ------------------------------------------------------------ */
html[data-theme="dark"] .fz-dash {
    --fzd-bg: #1a1a1e;
    --fzd-bg-alt: #202025;
    --fzd-surface: #1e1e22;
    --fzd-ink: #f5f5f2;
    --fzd-ink-soft: #d5d2cb;
    --fzd-text: #c9c6c0;
    --fzd-text-muted: #a3a099;
    --fzd-text-faint: #8a877f;
    --fzd-text-fainter: #6e6b65;
    --fzd-border: #2e2e33;
    --fzd-border-strong: #3c3c43;
    --fzd-border-soft: #27272c;
    --fzd-accent: #e8795e;
    --fzd-accent-dark: #f19b85;
    --fzd-accent-tint: rgba(232, 121, 94, .16);
    --fzd-tile-bg: #26262b;
    --fzd-solid: #f0eee9;
    --fzd-solid-hover: #ffffff;
    --fzd-on-solid: #16181a;
    --fzd-on-solid-soft: rgba(22, 24, 26, .6);
    --fzd-pool-icon-a: #2a2a2f;
    --fzd-pool-icon-b: #232328;
}
/* --fzd-page est lu par .fz-dash-section, qui est le PARENT de .fz-dash :
   il ne peut pas hériter du bloc ci-dessus. Il le redéclare donc. */
html[data-theme="dark"] .fz-dash-section { --fzd-page: #131316; }

.fz-dash * { box-sizing: border-box; }
.fz-dash a { color: var(--fzd-accent); text-decoration: none; }
.fz-dash a:hover { color: var(--fzd-accent-dark); }

.fz-dash .fzd-display {
    font-family: 'Oswald', 'Helvetica Neue', sans-serif;
    font-variant-numeric: tabular-nums;
}

.fzd-eyebrow {
    font: 600 12px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--fzd-ink);
}

.fzd-link {
    font: 600 11.5px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .06em;
    text-transform: uppercase;
    white-space: nowrap;
}

/* ------------------------------------------------------------ */
/* Onboarding — membre inscrit mais sans pool actif.             */
/* Maquette Claude Design « Canvas-9 » (1A bureau / 1B mobile) :  */
/* panneau brique pleine largeur, deux actions empilées, puis     */
/* trois cartes « En attendant ». Remplace la carte blanche       */
/* centrée d'avant, et tient la place du calendrier et du corps   */
/* du tableau de bord tant qu'aucun pool n'est actif.             */
/*                                                                */
/* renderDash() pose display:flex en ligne quand il n'y a pas de  */
/* pool ; la valeur par défaut ci-dessous reste none.             */
/* ------------------------------------------------------------ */
.fz-dash-onboard {
    display: none;
    flex-direction: column;
    gap: 24px;
    /* La maquette inserre la colonne centrale de 28px : sans ça le panneau
       brique colle à la barre du haut. Posé ici et non sur
       .fz-dash-section, qui porte aussi le tableau de bord AVEC pool —
       Canvas-9 ne couvre que l'état vide. */
    margin-top: 28px;

    /* Le panneau brique est un aplat de marque, comme le héros mobile de
       accueil-mobile.css : tout son détail intérieur est en blanc et en
       rgba(255,255,255,…), donc il ne bascule PAS avec le thème. Seules
       les trois cartes en dessous suivent --fzd-*. */
    --fzo-hero-a: #8e2a1a;
    --fzo-hero-b: #a8351f;
    --fzo-hero-c: #b93d28;
    --fzo-slab: #16181a;
    --fzo-slab-hover: #1f2225;
    --fzo-on-hero: #ffffff;
    --fzo-on-slab-muted: #a8a49c;
    --fzo-chev: #8a877f;
}

/* ---- Panneau brique ---- */
.fzo-hero {
    display: flex;
    align-items: center;
    gap: 46px;
    padding: 46px;
    border-radius: 14px;
    background:
        radial-gradient(120% 140% at 100% 0%, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 58%),
        linear-gradient(118deg, var(--fzo-hero-a) 0%, var(--fzo-hero-b) 46%, var(--fzo-hero-c) 100%);
    box-shadow: 0 18px 40px rgba(140, 42, 26, .28);
}

.fzo-hero-copy { flex: 1; display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.fzo-brand { display: flex; align-items: center; gap: 12px; }
.fzo-shield {
    width: 34px; height: 38px; flex: 0 0 auto;
    background: var(--fzo-on-hero);
    /* Écusson : la même découpe que la maquette, sans image à charger. */
    clip-path: polygon(50% 0, 100% 16%, 100% 62%, 50% 100%, 0 62%, 0 16%);
    display: grid; place-items: center;
    font: 700 13px/1 'Oswald', 'Helvetica Neue', sans-serif;
    color: var(--fzo-hero-b);
}
.fzo-eyebrow {
    font: 600 11px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .2em; text-transform: uppercase;
    color: rgba(255,255,255,.72);
}
.fzo-headline {
    margin: 0;
    font: 700 62px/.94 'Oswald', 'Helvetica Neue', sans-serif;
    letter-spacing: -.015em; text-transform: uppercase;
    color: var(--fzo-on-hero);
    text-wrap: balance;
}
.fzo-sub {
    margin: 0; max-width: 400px;
    font: 400 14.5px/1.55 'Helvetica Neue', Helvetica, sans-serif;
    color: rgba(255,255,255,.8);
    text-wrap: pretty;
}

/* ---- Les deux actions ---- */
.fzo-actions { width: 452px; flex: 0 0 auto; display: flex; flex-direction: column; gap: 10px; }
.fzo-action {
    display: flex; align-items: center; gap: 16px;
    padding: 20px 22px;
    border-radius: 11px;
    background: var(--fzo-slab);
    box-shadow: 0 6px 18px rgba(20, 10, 6, .22);
    text-decoration: none;
    transition: background .18s ease, transform .18s ease;
    /* Le repêchage instantané ne mène pas à une page : sa rangée est un
       <button>, à qui il faut retirer bordure, fond et police natifs pour
       qu'il ressemble aux <a> qui l'entourent. */
    width: 100%; border: 0; text-align: left; cursor: pointer; font: inherit;
}
.fzo-action:disabled { cursor: progress; opacity: .7; }
.fzo-action:disabled:hover { transform: none; }
.fzo-action:hover { background: var(--fzo-slab-hover); transform: translateY(-1px); }
.fzo-action:focus-visible { outline: 2px solid var(--fzo-on-hero); outline-offset: 2px; }
.fzo-action-bar { width: 3px; align-self: stretch; border-radius: 2px; background: var(--fzo-hero-c); }
.fzo-action-text { flex: 1; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.fzo-action-title {
    font: 600 15px/1 'Oswald', 'Helvetica Neue', sans-serif;
    letter-spacing: .06em; text-transform: uppercase;
    color: var(--fzo-on-hero);
}
.fzo-action-desc {
    font: 400 12.5px/1.35 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzo-on-slab-muted);
}
.fzo-action-chev { font: 400 18px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzo-chev); }

.fzo-invite {
    margin: 0; padding: 4px 4px 0;
    font: 400 12.5px/1.5 'Helvetica Neue', Helvetica, sans-serif;
    color: rgba(255,255,255,.72);
}
.fzo-invite a {
    font-weight: 600;
    color: var(--fzo-on-hero);
    border-bottom: 1px solid rgba(255,255,255,.5);
}
.fzo-invite a:hover { color: var(--fzo-on-hero); border-bottom-color: var(--fzo-on-hero); }

/* ---- « En attendant » ---- */
.fzo-divider { display: flex; align-items: center; gap: 16px; }
.fzo-divider span {
    font: 600 10px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .16em; text-transform: uppercase;
    color: var(--fzd-text-faint);
}
.fzo-divider i { flex: 1; height: 1px; background: var(--fzd-border-strong); }

.fzo-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
/* Bureau (1A) : titre au-dessus du texte, pas de chevron. La rangée avec
   chevron est la composition TÉLÉPHONE (1B), rétablie plus bas. */
.fzo-card {
    display: block;
    padding: 16px 18px;
    background: var(--fzd-surface);
    border: 1px solid var(--fzd-border);
    border-radius: 11px;
    text-align: left;
    text-decoration: none;
    font-family: inherit;
    cursor: pointer;
    transition: border-color .18s ease, transform .18s ease;
}
.fzo-card:hover { border-color: var(--fzd-border-strong); transform: translateY(-1px); }
.fzo-card:focus-visible { outline: 2px solid var(--fzd-accent); outline-offset: 2px; }
.fzo-card-body { flex: 1; display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.fzo-card-title { font: 600 12.5px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-ink); }
.fzo-card-desc { font: 400 12px/1.45 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-muted); }
.fzo-card-chev {
    display: none;
    font: 400 16px/1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text-fainter);
    transition: transform .18s ease, color .18s ease;
}
/* Les deux cartes dépliantes tournent leur chevron ; « Ligues ouvertes »
   est un lien vers une autre page et garde le sien tel quel. */
.fzo-card[aria-expanded="true"] .fzo-card-chev { transform: rotate(90deg); color: var(--fzd-accent); }

/* Palier intermédiaire : la colonne d'actions garde 452px fixes jusqu'ici,
   ce qui ne laissait plus que ~260px au titre de 62px sur un portable de
   1024 ou une tablette en paysage. Le panneau reste en deux colonnes, il
   se resserre juste. */
/* Panneau étroit (fenêtre réduite, tablette en portrait) : les cartes du
   carrousel hors-saison se resserrent pour qu'on en voie toujours deux. */
@media (max-width: 1000px) {
    .fzd-off-card { flex-basis: 264px; width: 264px; }
}

@media (max-width: 1200px) {
    .fzo-hero { gap: 30px; padding: 34px 30px; }
    .fzo-headline { font-size: 46px; }
    .fzo-actions { width: 380px; }
    .fzo-action { padding: 17px 18px; }
}

/* ------------------------------------------------------------ */
/* Onboarding — téléphone (1B). Le panneau passe en colonne et    */
/* les trois cartes s'empilent en rangées, comme la maquette.     */
/* ------------------------------------------------------------ */
@media (max-width: 900px) {
    .fzo-hero { flex-direction: column; align-items: stretch; gap: 18px; padding: 22px 18px 18px; border-radius: 16px; }
    .fzo-hero-copy { gap: 12px; }
    .fzo-headline { font-size: 30px; }
    .fzo-shield { width: 36px; height: 41px; font-size: 14px; }
    .fzo-actions { width: auto; gap: 9px; }
    .fzo-action { padding: 15px 16px; gap: 13px; }
    .fzo-action-title { font-size: 14px; }
    .fzo-action-desc { font-size: 11.5px; }

    /* La maquette 1B n'a pas de sous-titre : le titre enchaîne directement
       sur les deux actions. Masqué au même palier que le passage en
       colonne, pour ne pas fabriquer une troisième composition entre les
       deux maquettes. */
    .fzo-sub { display: none; }

    .fzo-cards { grid-template-columns: 1fr; gap: 8px; }
    .fzo-card {
        display: flex; align-items: center; gap: 12px;
        padding: 14px 15px;
    }
    .fzo-card-chev { display: block; }
    .fzo-card-desc { font-size: 11.5px; }

    /* La maquette téléphone décolle beaucoup moins du haut. */
    .fz-dash-onboard { margin-top: 14px; }
}

/* ------------------------------------------------------------ */
/* Hero — pool actif, bannière d'état (Canvas-9, Tour 2 : 2A bureau).*/
/* Repêchage en cours / avant-saison / en direct ; masquée en saison */
/* régulière normale (fz-dash-live plus bas couvre déjà ce cas).     */
/* Bureau seulement — accueil-mobile.js a son propre système d'état  */
/* à 4 modes, distinct de celui-ci. Même langage que .fzo-hero : un  */
/* aplat de marque, tout en blanc dessus, qui ne bascule pas avec    */
/* le thème (voir la note sur .fzo-hero plus haut).                  */
/* ------------------------------------------------------------ */
.fz-dash-hero {
    display: none;
    align-items: center;
    gap: 26px;
    padding: 26px 28px;
    margin-bottom: 18px;
    border-radius: 14px;
    --fzh-a: #8e2a1a;
    --fzh-b: #a8351f;
    --fzh-c: #b93d28;
    background:
        radial-gradient(120% 170% at 100% 0%, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 58%),
        linear-gradient(118deg, var(--fzh-a) 0%, var(--fzh-b) 46%, var(--fzh-c) 100%);
    box-shadow: 0 18px 40px rgba(140, 42, 26, .26);
}
@media (min-width: 769px) {
    .fz-dash-hero { display: flex; }
}

.fzd-hero-shield {
    width: 30px; height: 34px; flex: 0 0 auto;
    background: #fff;
    clip-path: polygon(50% 0, 100% 16%, 100% 62%, 50% 100%, 0 62%, 0 16%);
    display: grid; place-items: center;
    font: 700 12px/1 'Oswald', 'Helvetica Neue', sans-serif;
    color: var(--fzh-b);
}
.fzd-hero-copy { flex: 1; display: flex; flex-direction: column; gap: 9px; min-width: 0; }
.fzd-hero-eyebrow {
    display: flex; align-items: center; gap: 7px;
    font: 600 10px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .2em; text-transform: uppercase;
    color: rgba(255,255,255,.72);
}
.fzd-hero-live-dot { width: 7px; height: 7px; border-radius: 999px; background: #fff; flex-shrink: 0; }
.fzd-hero-headline {
    margin: 0;
    font: 700 34px/1 'Oswald', 'Helvetica Neue', sans-serif;
    letter-spacing: -.01em; text-transform: uppercase;
    color: #fff;
}

.fzd-hero-stats { display: flex; align-items: center; gap: 24px; flex-shrink: 0; }
.fzd-hero-stat { display: flex; flex-direction: column; gap: 6px; }
.fzd-hero-stat-lbl {
    display: block;
    font: 600 9.5px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .14em; text-transform: uppercase;
    color: rgba(255,255,255,.68);
}
.fzd-hero-stat-val { display: block; font: 700 22px/1 'Oswald', sans-serif; color: #fff; }
.fzd-hero-stat-sep { width: 1px; height: 36px; background: rgba(255,255,255,.28); }

.fzd-hero-cta {
    display: flex; align-items: center; gap: 13px;
    background: #16181a;
    border: 0;
    border-radius: 11px;
    padding: 15px 18px;
    text-decoration: none;
    box-shadow: 0 6px 18px rgba(20,10,6,.22);
    transition: background .18s ease;
    flex-shrink: 0;
    /* Le récapitulatif de repêchage est un <button> — rien à ouvrir, juste un
       popup — et doit rester identique au <a> qui l'accompagne. */
    font: inherit; cursor: pointer; text-align: left;
}
.fzd-hero-cta:hover { background: #1f2225; }

/* Repêchage terminé : deux actions côte à côte — le récapitulatif en cartes
   (plein) et le classement (contour). Le second est secondaire : même forme,
   fond transparent, pour qu'un seul des deux tire l'œil. */
.fzd-hero-ctas { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.fzd-hero-cta--ghost {
    background: rgba(255,255,255,.12);
    box-shadow: none;
    border: 1px solid rgba(255,255,255,.34);
}
.fzd-hero-cta--ghost:hover { background: rgba(255,255,255,.2); }
.fzd-hero-cta--ghost .fzd-hero-cta-bar { background: rgba(255,255,255,.7); }
.fzd-hero-cta--ghost .fzd-hero-cta-chev { color: rgba(255,255,255,.7); }
.fzd-hero-cta-bar { width: 3px; align-self: stretch; border-radius: 2px; background: var(--fzh-c); }
.fzd-hero-cta-label {
    font: 600 14px/1 'Oswald', sans-serif; letter-spacing: .06em; text-transform: uppercase;
    color: #fff; white-space: nowrap;
}
.fzd-hero-cta-chev { font: 400 17px/1 'Helvetica Neue', Helvetica, sans-serif; color: #8a877f; }

@media (max-width: 1100px) {
    .fz-dash-hero { flex-wrap: wrap; padding: 22px 24px; }
    .fzd-hero-headline { font-size: 27px; }
    .fzd-hero-cta { width: 100%; justify-content: center; }
}

/* ------------------------------------------------------------ */
/* Repêchage — la bannière ne crie que quand c'est votre tour.    */
/* Le tour est à quelqu'un d'autre : aplat neutre qui suit le     */
/* thème (papier en clair, ardoise en sombre). Votre tour : le    */
/* rouge de marque balaie depuis la gauche et le texte bascule au */
/* blanc dans la foulée. Les autres états (avant-saison, direct)  */
/* gardent le rouge permanent défini plus haut.                   */
/* Classes posées par renderHero() (accueil-dash.js).             */
/* ------------------------------------------------------------ */
.fz-dash-hero { position: relative; overflow: hidden; }
.fz-dash-hero > * { position: relative; z-index: 1; }

.fz-dash-hero.is-draft {
    background: var(--fzd-surface);
    border: 1px solid var(--fzd-border-strong);
    box-shadow: none;
    transition: border-color .35s ease .2s, box-shadow .45s ease .15s;
}
/* Le rouge vit dans un calque : il peut ainsi balayer sans que la bannière
   change de fond d'un coup sec. */
.fz-dash-hero.is-draft::before {
    content: '';
    position: absolute; inset: 0; z-index: 0;
    background:
        radial-gradient(120% 170% at 100% 0%, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 58%),
        linear-gradient(118deg, var(--fzh-a) 0%, var(--fzh-b) 46%, var(--fzh-c) 100%);
    transform: translateX(-101%);
    transition: transform .6s cubic-bezier(.22,.61,.36,1);
}
.fz-dash-hero.is-draft.is-myturn::before { transform: translateX(0); }
.fz-dash-hero.is-draft.is-myturn {
    border-color: transparent;
    box-shadow: 0 18px 40px rgba(140, 42, 26, .26);
}

/* Teintes au repos. Le retard sur la transition laisse le balayage passer
   avant que le texte ne blanchisse. */
.fz-dash-hero.is-draft .fzd-hero-headline,
.fz-dash-hero.is-draft .fzd-hero-stat-val,
.fz-dash-hero.is-draft .fzd-hero-eyebrow,
.fz-dash-hero.is-draft .fzd-hero-stat-lbl,
.fz-dash-hero.is-draft .fzd-hero-stat-sep,
.fz-dash-hero.is-draft .fzd-hero-shield,
.fz-dash-hero.is-draft .fzd-hero-live-dot {
    transition: color .35s ease .22s, background-color .35s ease .22s;
}
.fz-dash-hero.is-draft .fzd-hero-headline,
.fz-dash-hero.is-draft .fzd-hero-stat-val { color: var(--fzd-ink); }
.fz-dash-hero.is-draft .fzd-hero-eyebrow,
.fz-dash-hero.is-draft .fzd-hero-stat-lbl { color: var(--fzd-text-faint); }
.fz-dash-hero.is-draft .fzd-hero-stat-sep { background-color: var(--fzd-border-strong); }
.fz-dash-hero.is-draft .fzd-hero-shield { background-color: var(--fzd-solid); color: var(--fzd-on-solid); }
.fz-dash-hero.is-draft .fzd-hero-cta { background: var(--fzd-solid); }
.fz-dash-hero.is-draft .fzd-hero-cta:hover { background: var(--fzd-solid-hover); }
.fz-dash-hero.is-draft .fzd-hero-cta-label { color: var(--fzd-on-solid); }

/* Votre tour — le rouge est passé, tout repasse en blanc. */
.fz-dash-hero.is-draft.is-myturn .fzd-hero-headline,
.fz-dash-hero.is-draft.is-myturn .fzd-hero-stat-val { color: #fff; }
.fz-dash-hero.is-draft.is-myturn .fzd-hero-eyebrow { color: rgba(255,255,255,.72); }
.fz-dash-hero.is-draft.is-myturn .fzd-hero-stat-lbl { color: rgba(255,255,255,.68); }
.fz-dash-hero.is-draft.is-myturn .fzd-hero-stat-sep { background-color: rgba(255,255,255,.28); }
.fz-dash-hero.is-draft.is-myturn .fzd-hero-shield { background-color: #fff; color: var(--fzh-b); }
.fz-dash-hero.is-draft.is-myturn .fzd-hero-cta { background: #16181a; }
.fz-dash-hero.is-draft.is-myturn .fzd-hero-cta:hover { background: #1f2225; }
.fz-dash-hero.is-draft.is-myturn .fzd-hero-cta-label { color: #fff; }

/* Le libellé change en même temps (« Votre tour dans 2 choix » → « C'est
   votre tour ») : il monte en fondu pendant que le rouge le rattrape. */
@keyframes fzd-hero-copy-in {
    from { opacity: 0; transform: translateY(9px); }
    to   { opacity: 1; transform: none; }
}
.fz-dash-hero.is-draft.is-myturn .fzd-hero-copy {
    animation: fzd-hero-copy-in .45s cubic-bezier(.22,.61,.36,1) .2s both;
}

@media (prefers-reduced-motion: reduce) {
    .fz-dash-hero.is-draft,
    .fz-dash-hero.is-draft::before,
    .fz-dash-hero.is-draft * { transition-duration: .01ms; }
    .fz-dash-hero.is-draft.is-myturn .fzd-hero-copy { animation: none; }
}

/* ------------------------------------------------------------ */
/* Calendrier — pleine largeur, au-dessus de tout le reste        */
/* Maquette Claude Design « Canvas-12 » : bandeau de semaine avec  */
/* le nombre de matchs par jour, journée sélectionnée en titre,    */
/* puis des cartes de match qui portent chacune un carrousel de    */
/* VOS joueurs. Grille de deux colonnes au bureau (1A/1B) ;        */
/* carrousel plein écran, un match à la fois, au téléphone (1C/1D) */
/* — voir le bloc ≤768px en bas de ce fichier.                     */
/* ------------------------------------------------------------ */
.fzd-day-chip-month, .fzd-game-roster-count { display: none; }
.fz-dash-calendar {
    background: var(--fzd-surface);
    border: 1px solid var(--fzd-border-strong);
    border-radius: 14px;
    padding: 18px;
    margin-bottom: 18px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.fzd-cal-head {
    display: flex;
    align-items: center;
    gap: 11px;
    flex-wrap: wrap;
}

.fzd-cal-title {
    font: 600 11px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--fzd-ink);
}

.fzd-cal-nav { display: flex; align-items: center; gap: 5px; }
.fzd-cal-nav-btn {
    width: 22px; height: 22px;
    border: 1px solid var(--fzd-border);
    border-radius: 5px;
    background: transparent;
    color: var(--fzd-text-muted);
    font: 400 12px/1 'Helvetica Neue', Helvetica, sans-serif;
    cursor: pointer;
    display: grid; place-items: center;
    flex-shrink: 0;
}
.fzd-cal-nav-btn:hover { border-color: var(--fzd-ink); color: var(--fzd-ink); }
.fzd-cal-range {
    font: 600 11px/1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text);
    min-width: 88px;
    text-align: center;
}

.fzd-cal-spacer { flex: 1; }

.fzd-cal-full {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: 600 10px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--fzd-accent);
}
.fzd-cal-full:hover { color: var(--fzd-accent-dark); }

/* --- Bandeau de semaine ------------------------------------- */
.fzd-cal-strip {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    scrollbar-width: none;
}
.fzd-cal-strip::-webkit-scrollbar { display: none; }

.fzd-day-chip {
    flex: 1 1 0;
    min-width: 0;
    padding: 8px 9px;
    border-radius: 8px;
    border: 1px solid var(--fzd-border);
    background: transparent;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    gap: 6px;
    text-align: left;
}
.fzd-day-chip:hover { border-color: var(--fzd-ink); }

.fzd-day-chip-top { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
.fzd-day-chip-num { font: 700 14px/1 'Oswald', sans-serif; color: var(--fzd-ink); }
.fzd-day-chip-dow {
    font: 600 8.5px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--fzd-text-faint);
}
.fzd-day-chip-count {
    display: flex;
    align-items: center;
    gap: 5px;
    font: 400 10.5px/1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text-faint);
    white-space: nowrap;
    overflow: hidden;
}

/* Jour du jour : juste le libellé en brique, l'aplat reste réservé à la
   journée SÉLECTIONNÉE — sinon les deux états se disputent la même case. */
.fzd-day-chip.is-today:not(.is-selected) .fzd-day-chip-dow { color: var(--fzd-accent); }

.fzd-day-chip.is-selected {
    background: var(--fzd-solid);
    border-color: var(--fzd-solid);
}
.fzd-day-chip.is-selected .fzd-day-chip-num { color: var(--fzd-on-solid); }
.fzd-day-chip.is-selected .fzd-day-chip-dow,
.fzd-day-chip.is-selected .fzd-day-chip-count { color: var(--fzd-on-solid-soft); }
.fzd-day-chip.is-selected .fzd-day-chip-count.is-live { color: var(--fzd-on-solid); }

/* --- Titre de la journée ------------------------------------- */
.fzd-cal-dayhead {
    display: flex;
    align-items: baseline;
    gap: 10px;
    flex-wrap: wrap;
    border-top: 1px solid var(--fzd-border);
    padding-top: 13px;
}
.fzd-cal-dayname {
    font: 700 20px/1 'Oswald', sans-serif;
    text-transform: uppercase;
    color: var(--fzd-ink);
}
.fzd-cal-daysub {
    font: 400 11.5px/1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text-faint);
}

/* --- Cartes de match ----------------------------------------- */
/* Carrousel : deux cartes par vue au bureau, une au téléphone, accrochées au
   défilement. Le nombre de cartes par vue est relu par calGamesPerView()
   (accueil-dash.js) pour poser une puce par PAGE et régler le pas des
   flèches — la CSS reste donc la seule source de la largeur des cartes. */
.fzd-cal-games {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    scrollbar-width: none;
    scroll-snap-type: x mandatory;
    align-items: stretch;
}
.fzd-cal-games::-webkit-scrollbar { display: none; }

.fzd-game-card {
    flex: 0 0 calc((100% - 12px) / 2);
    min-width: 0;
    scroll-snap-align: start;
    border: 1px solid var(--fzd-border);
    border-radius: 11px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    background: var(--fzd-surface);
}

.fzd-game-head {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    border-bottom: 1px solid var(--fzd-border-soft);
}
.fzd-game-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border-radius: 4px;
    padding: 4px 7px;
    background: var(--fzd-tile-bg);
    color: var(--fzd-text);
    font: 600 9px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .12em;
    flex-shrink: 0;
}
/* L'heure de la mise au jeu garde sa casse : « 20 h 44 », pas « 20 H 44 ».
   Seuls les deux états nommés passent en capitales. */
.fzd-game-badge.is-live,
.fzd-game-badge.is-final { text-transform: uppercase; }
.fzd-game-badge.is-live { background: var(--fzd-accent-tint); color: var(--fzd-accent); }
.fzd-game-badge.is-final { color: var(--fzd-text-faint); }
.fzd-game-when {
    font: 500 10.5px/1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text-faint);
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.fzd-live-dot {
    width: 5px; height: 5px;
    border-radius: 999px;
    background: var(--fzd-accent-fill);
    flex-shrink: 0;
    animation: fzdLivePulse 1.6s ease-in-out infinite;
}
@keyframes fzdLivePulse { 0%, 100% { opacity: 1; } 50% { opacity: .28; } }
@media (prefers-reduced-motion: reduce) { .fzd-live-dot { animation: none; } }

.fzd-game-teams { padding: 11px 12px; display: flex; flex-direction: column; gap: 8px; }
.fzd-game-row { display: flex; align-items: center; gap: 9px; }
.fzd-team-logo {
    width: 24px; height: 24px;
    flex: 0 0 auto;
    border-radius: 999px;
    background: var(--fzd-tile-bg);
    object-fit: contain;
}
.fzd-team-id { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.fzd-team-name {
    font: 600 13px/1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.fzd-team-name.is-trailing { color: var(--fzd-text-faint); }
.fzd-team-rec { font: 400 10px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-faint); }
.fzd-team-score { font: 700 20px/1 'Oswald', sans-serif; color: var(--fzd-ink); flex: 0 0 auto; }
.fzd-team-score.is-trailing { color: var(--fzd-text-faint); }

/* --- Carrousel « Vos joueurs » sous chaque match --------------- */
.fzd-game-players {
    border-top: 1px solid var(--fzd-border-soft);
    background: var(--fzd-bg);
    padding: 10px 12px 9px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: auto;
}
.fzd-gp-head { display: flex; align-items: center; gap: 8px; }
.fzd-gp-title {
    font: 600 9.5px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--fzd-ink);
}
.fzd-gp-sub { font: 400 9.5px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-fainter); }

.fzd-gp-track {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    scrollbar-width: none;
    scroll-snap-type: x mandatory;
}
.fzd-gp-track::-webkit-scrollbar { display: none; }

.fzd-gp-card {
    width: 170px;
    flex: 0 0 auto;
    scroll-snap-align: start;
    border: 1px solid var(--fzd-border);
    border-radius: 9px;
    background: var(--fzd-surface);
    padding: 9px 10px;
    display: flex;
    align-items: center;
    gap: 9px;
}
.fzd-gp-photo {
    width: 30px; height: 30px;
    flex: 0 0 auto;
    border-radius: 999px;
    background: var(--fzd-tile-bg);
    object-fit: cover;
}
.fzd-gp-photo.is-initials {
    display: grid;
    place-items: center;
    font: 600 9.5px/1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text-muted);
}
.fzd-gp-id { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.fzd-gp-name {
    font: 600 12px/1.1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.fzd-gp-meta { font: 400 9.5px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-faint); }
.fzd-gp-stat { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; gap: 1px; }
.fzd-gp-num { font: 700 22px/1 'Oswald', sans-serif; color: var(--fzd-ink); }
.fzd-gp-num.is-hot { color: var(--fzd-accent); }
.fzd-gp-lbl {
    font: 600 8px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--fzd-text-faint);
}

.fzd-cal-carnav { display: flex; align-items: center; justify-content: center; gap: 10px; }
.fzd-cal-arrow {
    background: none;
    border: none;
    padding: 0 2px;
    cursor: pointer;
    font: 400 15px/1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text-muted);
}
.fzd-cal-arrow:hover { color: var(--fzd-ink); }
/* Bout de course : la flèche s'efface au lieu de disparaître, la rangée ne
   se décale pas sous le doigt. */
.fzd-cal-arrow.is-off { color: var(--fzd-border-strong); cursor: default; }

.fzd-gp-dots, .fzd-cal-dots { display: flex; align-items: center; justify-content: center; gap: 5px; }
.fzd-gp-dot, .fzd-cal-dot {
    width: 8px; height: 3px;
    border-radius: 2px;
    background: var(--fzd-border-strong);
    transition: width .18s ease, background .18s ease;
}
.fzd-gp-dot.is-on, .fzd-cal-dot.is-on { width: 14px; background: var(--fzd-accent-fill); }

.fzd-cal-empty {
    padding: 20px 4px;
    font: 400 13px/1.4 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text-faint);
}

/* Sélecteur de mois, dépliable — remplace un lien mort vers une page
   de calendrier qui n'existe pas. */
.fzd-cal-month {
    display: none;
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--fzd-border);
}
.fzd-cal-month.is-open { display: block; }

.fzd-month-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.fzd-month-label { font: 600 13px/1 'Oswald', sans-serif; letter-spacing: .02em; color: var(--fzd-ink); }

.fzd-month-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.fzd-month-dow { text-align: center; font: 600 9px/1 'Helvetica Neue', Helvetica, sans-serif; letter-spacing: .08em; text-transform: uppercase; color: var(--fzd-text-fainter); padding-bottom: 6px; }
.fzd-month-cell {
    aspect-ratio: 1;
    display: grid; place-items: center;
    border-radius: 8px;
    font: 500 12px/1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text-muted);
    cursor: pointer;
}
.fzd-month-cell:hover { background: var(--fzd-bg-alt); }
.fzd-month-cell.is-empty { cursor: default; }
.fzd-month-cell.is-empty:hover { background: transparent; }
.fzd-month-cell.is-today { background: var(--fzd-solid); color: var(--fzd-on-solid); font-weight: 700; }
.fzd-month-cell.is-selected:not(.is-today) { border: 1px solid var(--fzd-ink); color: var(--fzd-ink); }

/* ------------------------------------------------------------ */
/* Hors-saison — compte à rebours + carrousel des mouvements     */
/* Résumé en deux cartes, mouvements paginés et tableau de       */
/* surveillance. Palette locale compatible avec les deux thèmes. */
/* ------------------------------------------------------------ */
.fz-dash-offseason {
    display: grid;
    gap: 12px;
    margin-bottom: 18px;
}

html[data-theme="dark"] .fz-dash-offseason {
    --fzd-surface: #11161b;
    --fzd-bg-alt: #151a20;
    --fzd-ink: #f4f5f7;
    --fzd-text: #bec5cf;
    --fzd-text-muted: #aeb7c4;
    --fzd-text-faint: #8f9cac;
    --fzd-text-fainter: #8f9cac;
    --fzd-border: #242c36;
    --fzd-border-soft: #202831;
    --fzd-border-strong: #36404d;
    --fzd-accent: #ff593b;
    --fzd-accent-dark: #ff8068;
    --fzd-accent-fill: #df342b;
}
.fzd-off-summary { display: grid; grid-template-columns: 1.05fr 1fr; gap: 12px; }
.fzd-off-count, .fzd-off-position, .fzd-off-section {
    min-width: 0;
    background: linear-gradient(115deg, transparent, var(--fzd-bg-alt)), var(--fzd-surface);
    border: 1px solid var(--fzd-border);
    border-radius: 10px;
}
.fzd-off-count, .fzd-off-position { position: relative; overflow: hidden; min-height: 120px; padding: 18px 22px 15px; }
.fzd-off-count { margin: 0; isolation: isolate; }
.fz-dash-offseason .fzd-section-title {
    display: flex; align-items: center; gap: 12px; margin: 0;
    font: 600 14px/1.3 'Barlow Condensed', sans-serif;
    letter-spacing: .07em; text-transform: uppercase; color: var(--fzd-ink);
}
.fzd-section-title [data-icon] { display: inline-flex; }
.fzd-off-count .fzd-off-days, .fzd-off-count .fzd-off-sub { position: relative; margin-left: 22px; z-index: 1; }
.fzd-off-count .fzd-off-days { margin-top: 7px; }
.fzd-off-count::before {
    content: ''; position: absolute; inset: 0; z-index: -1;
    background: radial-gradient(ellipse at 95% 0, #8397ad40, transparent 65%),
        repeating-linear-gradient(153deg, transparent 0 19px, #8293a00a 20px, transparent 21px 43px);
}
.fzd-off-emblem { position: absolute; right: 10px; top: 4px; width: 145px; height: 120px; opacity: .24; transform: rotate(-13deg); filter: grayscale(1) drop-shadow(0 8px 4px #0008); z-index: -1; }
.fzd-off-position .fzd-off-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.fzd-position-link { position: relative; z-index: 1; font: 500 10px/1.3 'Barlow Condensed', sans-serif; letter-spacing: .05em; text-transform: uppercase; }
.fzd-position-value { position: relative; z-index: 1; margin: 15px 0 7px 22px; font-size: 30px; line-height: 1; color: var(--fzd-ink); }
.fzd-off-position > .fzd-off-sub { position: relative; z-index: 1; margin-left: 22px; }
.fzd-position-bars { position: absolute; right: 18px; bottom: 16px; height: 64px; display: flex; align-items: end; gap: 9px; opacity: .8; }
.fzd-position-bars i { display: block; width: 14px; height: 22%; background: var(--fzd-border-strong); }
.fzd-position-bars i:nth-child(2) { height: 43%; }
.fzd-position-bars i:nth-child(3) { height: 68%; }
.fzd-position-bars i:nth-child(4) { height: 87%; }
.fzd-position-bars i:nth-child(5) { height: 61%; }
.fzd-position-bars i:nth-child(6) { height: 100%; }
.fzd-off-days { display: block; font: 600 46px/1 'Oswald', sans-serif; color: var(--fzd-ink); }
.fzd-off-sub { display: block; margin-top: 4px; font: 400 14px/1.4 'Barlow Condensed', sans-serif; color: var(--fzd-text-muted); }

.fzd-off-section { padding: 15px 14px 12px; }
.fzd-off-empty { padding: 22px 2px; font: 400 13px/1.4 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-faint); }

/* Carrousel — en-tête + flèches, filtres, piste, points */
.fzd-off-carousel .fzd-off-head {
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; margin-bottom: 6px;
}
.fzd-off-nav { display: flex; gap: 6px; }
.fzd-off-nav-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 28px; height: 28px;
    background: var(--fzd-bg-alt); border: 1px solid var(--fzd-border); border-radius: 7px;
    font: 400 15px/1 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text-muted); cursor: pointer;
    transition: background .15s ease, color .15s ease, border-color .15s ease, opacity .15s ease;
}
.fzd-off-nav-btn:hover:not(:disabled) { background: var(--fzd-solid); border-color: var(--fzd-solid); color: var(--fzd-on-solid); }
.fzd-off-nav-btn:disabled { opacity: .3; cursor: default; }

.fzd-off-filters { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 9px; }
.fzd-off-filter {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 15px;
    background: none; border: 1px solid var(--fzd-border); border-radius: 999px;
    font: 500 11px/1 'Barlow Condensed', sans-serif;
    letter-spacing: .06em; text-transform: uppercase;
    color: var(--fzd-text-faint); cursor: pointer;
    transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.fzd-off-filter:hover { color: var(--fzd-ink); border-color: var(--fzd-border-strong); }
.fzd-off-filter.is-active { background: linear-gradient(110deg, var(--fzd-accent-fill), #f04432); border-color: var(--fzd-accent-fill); color: #fff; }
.fzd-off-filter-count { padding: 3px 5px; border-radius: 6px; background: var(--fzd-border); font-size: 10px; letter-spacing: 0; color: var(--fzd-text); }
.fzd-off-filter.is-active .fzd-off-filter-count { background: #fff; color: #171b21; }

/* Piste — cartes qui défilent, alignées sur les bords du panneau */
.fzd-off-track {
    display: flex; gap: 12px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    margin: 0; padding: 0;
}
.fzd-off-track::-webkit-scrollbar { display: none; }
.fzd-off-track.is-empty { display: block; margin: 0; padding: 0; }

.fzd-off-card {
    flex: 0 0 calc((100% - 36px) / 4); min-width: 0;
    scroll-snap-align: start;
    display: flex; flex-direction: column; gap: 12px;
    padding: 11px; min-height: 160px;
    background: linear-gradient(135deg, var(--fzd-surface), var(--fzd-bg-alt));
    border: 1px solid var(--fzd-border);
    border-radius: 8px;
}
.fzd-off-card-top { display: flex; align-items: center; gap: 8px; }
.fzd-off-card-date {
    margin-left: auto;
    font: 500 10px/1.2 'Barlow Condensed', sans-serif;
    letter-spacing: .06em; text-transform: uppercase;
    color: var(--fzd-text-faint);
}
.fzd-off-tag {
    font: 600 9px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .1em; text-transform: uppercase;
    padding: 5px 8px; border-radius: 4px;
}
.fzd-off-tag.is-trade { background: var(--fzd-accent-fill); color: var(--fzd-on-accent); }
.fzd-off-tag.is-signing { background: var(--fzd-solid); color: var(--fzd-on-solid); }
.fzd-off-tag.is-injury { color: #fff; background: linear-gradient(110deg, #c72924, #f13e32); }
.fzd-off-player { display: flex; align-items: center; gap: 8px; min-height: 44px; }
.fzd-off-player-info { min-width: 0; }
.fzd-off-face { position: relative; display: inline-grid; place-items: center; flex: 0 0 34px; width: 34px; height: 44px; overflow: hidden; border-radius: 5px; background: var(--fzd-bg-alt); color: var(--fzd-text-muted); }
.fzd-off-face img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: var(--fzd-bg-alt); }

.fzd-off-card-name {
    font: 600 13px/1.3 'Barlow Condensed', sans-serif;
    text-transform: uppercase;
    color: var(--fzd-ink);
}
.fzd-off-card-club {
    display: flex; align-items: center; gap: 8px;
    font: 400 14px/1.4 'Barlow Condensed', sans-serif;
    color: var(--fzd-text-muted);
}
.fzd-off-card-club .fzd-team-logo { width: 20px; height: 20px; flex-shrink: 0; object-fit: contain; }

.fzd-off-card-stats {
    display: flex; gap: 10px;
    margin-top: auto; padding-top: 11px;
    border-top: 1px solid var(--fzd-border);
}
.fzd-off-stat { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.fzd-off-stat-lbl {
    font: 400 11px/1.3 'Barlow Condensed', sans-serif;
    color: var(--fzd-text-faint);
}
.fzd-off-stat-val { font: 600 14px/1.4 'Barlow Condensed', sans-serif; color: var(--fzd-ink); overflow-wrap: anywhere; }
.fzd-off-card.is-injury .fzd-off-stat:first-child { flex: 1.8; }
.fzd-off-card.is-injury .fzd-off-stat:first-child .fzd-off-stat-val { color: var(--fzd-accent); }
.fzd-off-stat-val[data-status="Out"],
.fzd-off-stat-val[data-status="Injured Reserve"] { color: var(--fzd-accent); }

/* Échange — les deux clubs empilés, ce que chacun reçoit dessous */
.fzd-off-deal { display: flex; flex-direction: column; gap: 10px; }
.fzd-off-deal-rule { height: 1px; background: var(--fzd-border); }
.fzd-off-deal-side { display: flex; flex-direction: column; gap: 6px; }
.fzd-off-deal-club { display: flex; align-items: center; gap: 7px; min-width: 0; }
.fzd-off-deal-club .fzd-team-logo { width: 20px; height: 20px; flex-shrink: 0; object-fit: contain; }
.fzd-off-deal-club-name {
    flex: 1; min-width: 0;
    font: 600 12.5px/1.2 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-ink);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fzd-off-deal-acq {
    flex-shrink: 0;
    font: 600 8.5px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .13em; text-transform: uppercase;
    color: var(--fzd-text-faint);
}
.fzd-off-deal-gets { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }
.fzd-off-deal-get {
    font: 500 12.5px/1.35 'Helvetica Neue', Helvetica, sans-serif;
    color: var(--fzd-text);
    overflow-wrap: anywhere;
}
.fzd-off-deal-get.is-empty { font-weight: 400; font-style: italic; color: var(--fzd-text-fainter); }
.fzd-off-pos { font-size: 10.5px; letter-spacing: .04em; color: var(--fzd-text-fainter); }

.fzd-off-dots { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 8px; }
.fzd-off-dots:empty { display: none; }
.fzd-off-dot {
    width: 13px; height: 20px; padding: 0;
    border: none; border-radius: 999px;
    background: transparent; cursor: pointer;
    transition: width .2s ease, background .2s ease;
}
.fzd-off-dot::after { content: ''; display: block; height: 6px; border-radius: 5px; background: var(--fzd-border-strong); }
.fzd-off-dot.is-active::after { background: var(--fzd-accent-fill); }
.fzd-off-dot[hidden] { display: none; }
.fzd-off-page-arrow { width: 22px; height: 24px; padding: 0; border: 0; background: transparent; color: var(--fzd-text-muted); cursor: pointer; font-size: 18px; }
.fzd-off-page-arrow:disabled { opacity: .3; cursor: default; }

/* « À surveiller » — 70 entrées tirées de la trousse : la liste défile dans
   le panneau au lieu de l'allonger, avec un filtre par équipe au-dessus. */
.fzd-off-watch-section { padding: 0; overflow: hidden; }
.fzd-watch-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 15px 18px 10px; }
.fzd-watch-icon { display: inline-flex; color: var(--fzd-accent); }
.fzd-watch-icon svg { fill: currentColor; }
.fzd-watch-count { display: block; margin-top: 8px; font: 400 12px/1 'Barlow Condensed', sans-serif; letter-spacing: .04em; text-transform: uppercase; color: var(--fzd-text-muted); }
.fzd-watch-filter {
    max-width: 60%;
    padding: 9px 12px;
    background: var(--fzd-bg-alt); border: 1px solid var(--fzd-border); border-radius: 7px;
    font: 400 11px/1.2 'Barlow Condensed', sans-serif; color: var(--fzd-ink);
    cursor: pointer;
}
.fzd-watch-list { max-height: 420px; overflow: auto; overscroll-behavior: contain; }
.fzd-watch-table { border-collapse: collapse; width: 100%; text-align: left; font: 400 14px/1.4 'Barlow Condensed', sans-serif; color: var(--fzd-text-muted); }
.fzd-watch-table th { position: sticky; top: 0; z-index: 2; background: var(--fzd-bg-alt); font-size: 9px; font-weight: 400; text-transform: uppercase; letter-spacing: .09em; }
.fzd-watch-table th, .fzd-watch-table td { padding: 5px 12px; border-bottom: 1px solid var(--fzd-border-soft); }
.fz-dash-offseason .fzd-watch-table td { font: inherit; color: inherit; text-align: left; }
.fz-dash-offseason .fzd-watch-table th { text-align: left; font-family: 'Barlow Condensed', sans-serif; }
.fz-dash-offseason .fzd-watch-table tbody tr { background: transparent; }
.fzd-watch-table th:first-child, .fzd-watch-table td:first-child { padding-left: 22px; }
.fz-dash-offseason .fzd-watch-table th:nth-child(3), .fz-dash-offseason .fzd-watch-table .fzd-watch-position { text-align: center; }
.fz-dash-offseason .fzd-watch-table tbody tr:hover { background: var(--fzd-bg-alt); }
.fzd-watch-player { display: flex; align-items: center; gap: 12px; }
.fzd-watch-player .fzd-off-face { width: 28px; height: 28px; flex-basis: 28px; }
.fzd-watch-name { color: var(--fzd-ink); white-space: nowrap; }
.fzd-watch-status { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; color: var(--fzd-ink); }
.fzd-watch-status > span { display: inline-grid; place-items: center; width: 13px; height: 13px; border-radius: 50%; background: #008cf0; color: #fff; }
.fzd-watch-note summary { cursor: pointer; list-style: none; }
.fzd-watch-note summary::-webkit-details-marker { display: none; }
.fzd-watch-note summary:hover { color: var(--fzd-accent); }
.fzd-watch-note p { max-width: 260px; min-width: 130px; white-space: normal; margin: 8px 0; font: 400 12px/1.6 'Helvetica Neue', sans-serif; }
.fzd-watch-save { display: grid; place-items: center; width: 33px; height: 26px; border: 1px solid var(--fzd-border-strong); border-radius: 6px; background: transparent; color: var(--fzd-ink); cursor: pointer; }
.fzd-watch-save[aria-pressed="true"] { color: var(--fzd-accent); }
.fzd-watch-save[aria-pressed="true"] svg { fill: currentColor; }
.fzd-watch-more { display: block; padding: 14px 18px 18px; border: 0; background: transparent; font: 400 14px/1.4 'Barlow Condensed', sans-serif; color: var(--fzd-accent); cursor: pointer; }
.fz-dash-offseason :is(button, a, select, summary, [tabindex]):focus-visible { outline: 2px solid var(--fzd-accent); outline-offset: 3px; }
.fzd-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (min-width: 769px) and (max-width: 900px) {
    .fzd-off-card { padding: 10px; }
    .fzd-off-player { gap: 6px; }
    .fzd-off-face { width: 30px; flex-basis: 30px; }
    .fzd-off-card-name { font-size: 12px; }
    .fzd-off-count, .fzd-off-position { padding-left: 18px; padding-right: 18px; }
    .fzd-position-bars { opacity: .45; }
    .fzd-watch-table th, .fzd-watch-table td { padding-left: 8px; padding-right: 8px; }
}
@media (max-width: 600px) {
    .fzd-off-summary { grid-template-columns: 1fr; }
    .fzd-off-card { flex-basis: 80%; }
    .fzd-watch-table { min-width: 680px; }
}

/* ------------------------------------------------------------ */
/* ------------------------------------------------------------ */
/* Raccourcis pools — avant-saison seulement (#fzDashPoolChips,   */
/* posé entre le calendrier et le panneau hors-saison). Le corps  */
/* du tableau de bord se retire tant que la saison n'est pas      */
/* commencée : ces chips en reprennent les seules portes encore   */
/* utiles. Mêmes pilules que .fzd-off-filter, en taille de lien.  */
/* ------------------------------------------------------------ */
.fz-dash-poolchips {
    display: flex; flex-wrap: wrap; gap: 8px;
    margin-bottom: 18px;
}
.fzd-poolchip {
    display: inline-flex; align-items: center;
    padding: 10px 16px;
    background: var(--fzd-surface); border: 1px solid var(--fzd-border-strong);
    border-radius: 999px;
    font: 600 11px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .06em; text-transform: uppercase;
    color: var(--fzd-ink); text-decoration: none;
    transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.fzd-poolchip:hover { background: var(--fzd-bg-alt); border-color: var(--fzd-ink); }
/* Le repêchage instantané est le seul chip qui ne mène pas à une page : il
   lance la recherche sur place, donc c'est un <button>, à dépouiller de ses
   styles natifs pour qu'il se range avec les <a> voisins. */
button.fzd-poolchip {
    font: 600 11px/1 'Helvetica Neue', Helvetica, sans-serif;
    cursor: pointer;
    /* `.fz-dash a` teinte tous les liens du tableau de bord en accent et
       l'emporte sur `.fzd-poolchip` : sans ce rappel, le seul chip qui n'est
       pas un lien serait aussi le seul en couleur de texte ordinaire. */
    color: var(--fzd-accent);
}
button.fzd-poolchip:disabled { cursor: progress; opacity: .6; }
.fzd-poolchip.is-primary { background: var(--fzd-solid); border-color: var(--fzd-solid); color: var(--fzd-on-solid); }
.fzd-poolchip.is-primary:hover { opacity: .88; }

/* Corps — deux colonnes en bureau (2A), empilé en téléphone (1A) */
/* Même DOM des deux côtés : seule la grille change d'agencement */
/* via grid-template-areas, donc l'ordre 1A (live, joueurs, mes   */
/* pools, actions rapides, activité, cta) reste l'ordre du DOM,   */
/* et 2A réagence sans dupliquer aucun bloc.                     */
/* ------------------------------------------------------------ */
.fz-dash-body {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-areas:
        "live"
        "players"
        "mypools"
        "quickactions"
        "activity"
        "cta";
    gap: 0;
    background: var(--fzd-surface);
    border: 1px solid var(--fzd-border-strong);
    border-radius: 14px;
    overflow: hidden;
}

.fz-dash-live       { grid-area: live; }
.fz-dash-players    { grid-area: players; }
.fz-dash-mypools     { grid-area: mypools; background: var(--fzd-bg-alt); }
.fz-dash-quickactions { grid-area: quickactions; }
.fz-dash-activity    { grid-area: activity; background: var(--fzd-bg-alt); }
.fz-dash-cta         { grid-area: cta; background: var(--fzd-bg-alt); }

.fz-dash-live, .fz-dash-players, .fz-dash-quickactions { padding: 22px 20px; border-bottom: 1px solid var(--fzd-border); }
.fz-dash-mypools, .fz-dash-activity { padding: 20px; }
.fz-dash-cta { padding: 0 20px 22px; }

.fzd-section-title {
    font: 600 13px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--fzd-ink);
}

/* ---- Live / pre-game panel ---- */
.fzd-live-head { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; }
.fzd-live-badge { display: flex; align-items: center; gap: 8px; font: 700 10.5px/1 'Helvetica Neue', Helvetica, sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--fzd-accent); }
.fzd-live-rule { flex: 1; height: 1px; background: var(--fzd-border); }
.fzd-live-updated { font: 400 11.5px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-faint); }

.fzd-live-hero { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; }
.fzd-live-score { font: 600 64px/.85 'Oswald', sans-serif; letter-spacing: -.02em; color: var(--fzd-ink); }
.fzd-live-score-lbl { font: 500 14px/1.15 'Oswald', sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--fzd-text-muted); padding-bottom: 8px; }

.fzd-live-rank { margin-top: 10px; font: 400 13px/1.3 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-ink-soft); }
.fzd-live-rank-move { color: var(--fzd-accent); font-weight: 600; }

.fzd-live-stats { margin-top: 18px; display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--fzd-border); border-top: 1px solid var(--fzd-border); border-bottom: 1px solid var(--fzd-border); }
.fzd-live-stat { background: var(--fzd-bg); padding: 12px 14px; }
.fzd-live-stat-num { font: 600 26px/1 'Oswald', sans-serif; color: var(--fzd-ink); }
.fzd-live-stat-lbl { margin-top: 5px; font: 500 10px/1 'Helvetica Neue', Helvetica, sans-serif; letter-spacing: .11em; text-transform: uppercase; color: var(--fzd-text-faint); }

.fzd-pregame-lbl { font: 700 10px/1 'Helvetica Neue', Helvetica, sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--fzd-text-faint); margin-bottom: 14px; }
.fzd-pregame-clock { font: 600 46px/.9 'Oswald', sans-serif; color: var(--fzd-ink); }
.fzd-pregame-sub { margin-top: 8px; font: 400 13px/1.4 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-ink-soft); }
.fzd-pregame-list { margin-top: 16px; display: flex; flex-direction: column; gap: 10px; }
.fzd-pregame-row { display: flex; align-items: center; gap: 10px; font: 400 13px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-ink-soft); }
.fzd-pregame-time { font: 600 11px/1 'Oswald', sans-serif; color: var(--fzd-text-muted); width: 52px; flex-shrink: 0; }
.fzd-pregame-sep { color: #c9c5bd; }
.fzd-pregame-count { color: var(--fzd-text-faint); }

.fzd-live-empty { font: 400 13px/1.5 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-faint); }

/* ---- Vos joueurs ce soir ---- */
.fzd-players-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 10px; }
.fzd-players-list { display: flex; flex-direction: column; }
.fzd-player-row { display: flex; align-items: center; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--fzd-border-soft); }
.fzd-player-row:last-child { border-bottom: none; }
.fzd-player-badge { width: 32px; height: 32px; border-radius: 6px; background: var(--fzd-tile-bg); display: grid; place-items: center; font: 600 10px/1 'Oswald', sans-serif; letter-spacing: .04em; color: var(--fzd-text); overflow: hidden; }
.fzd-player-badge img { width: 100%; height: 100%; object-fit: contain; }
.fzd-player-id { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.fzd-player-name { font: 600 15px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fzd-player-meta { font: 400 11.5px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fzd-player-pts { font: 600 22px/1 'Oswald', sans-serif; color: var(--fzd-accent); flex-shrink: 0; }
.fzd-player-pts.is-zero { color: var(--fzd-text-fainter); }
.fzd-players-empty { padding: 14px 0; font: 400 13px/1.4 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-faint); }

/* ---- Repêchage / Échanges ---- */
.fzd-actions-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.fzd-action-tile {
    padding: 14px;
    border: 1px solid var(--fzd-border-strong);
    border-radius: 12px;
    background: var(--fzd-surface);
    display: flex;
    flex-direction: column;
    gap: 7px;
    text-decoration: none;
}
.fzd-action-tile:hover { border-color: var(--fzd-ink); }
.fzd-action-tile.is-attention { border-color: var(--fzd-accent); }
.fzd-action-eyebrow { font: 500 10px/1 'Helvetica Neue', Helvetica, sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--fzd-text-faint); }
.fzd-action-tile.is-attention .fzd-action-eyebrow { color: var(--fzd-accent); }
.fzd-action-value { font: 600 17px/1 'Oswald', sans-serif; color: var(--fzd-ink); }
.fzd-action-detail { font: 400 11.5px/1.3 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-muted); }

/* ---- Mes pools ---- */
.fzd-mypools-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 6px; }
.fzd-mypools-count { font: 400 12px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-faint); }
.fzd-pool-row { display: flex; align-items: center; gap: 13px; padding: 14px 0; border-bottom: 1px solid var(--fzd-border); }
.fzd-pool-row:last-child { border-bottom: none; }
.fzd-pool-icon { width: 34px; height: 34px; border-radius: 6px; background: repeating-linear-gradient(135deg, var(--fzd-pool-icon-a) 0 5px, var(--fzd-pool-icon-b) 5px 10px); flex-shrink: 0; }
.fzd-pool-id { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.fzd-pool-name { font: 600 15px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fzd-pool-meta { font: 400 11.5px/1 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-faint); }
.fzd-pool-sep { color: #c9c5bd; }
.fzd-pool-trend-up { color: var(--fzd-accent); font-weight: 600; }
.fzd-pool-trend-down { color: var(--fzd-text-muted); font-weight: 600; }
.fzd-pool-trend-flat { color: var(--fzd-text-fainter); font-weight: 600; }
.fzd-pool-rank { display: flex; align-items: baseline; gap: 2px; flex-shrink: 0; }
.fzd-pool-rank-num { font: 600 27px/1 'Oswald', sans-serif; color: var(--fzd-ink); }
.fzd-pool-rank-total { font: 400 13px/1 'Oswald', sans-serif; color: var(--fzd-text-fainter); }
.fzd-mypools-more { display: block; padding-top: 14px; }
/* Ce lien ouvre le tiroir des pools plutôt qu'une page : c'est un <button>,
   que `.fz-dash a` ne teinte donc pas et dont il faut retirer le fond, la
   bordure et la police natifs. Vide (aucun pool), il ne doit rien occuper. */
button.fzd-mypools-more {
    width: 100%;
    padding-left: 0; padding-right: 0; padding-bottom: 0;
    background: none; border: 0;
    text-align: left; cursor: pointer;
    color: var(--fzd-accent);
}
button.fzd-mypools-more:hover { color: var(--fzd-accent-dark); }
button.fzd-mypools-more:empty { display: none; }

/* ---- Activité de la ligue ---- */
.fzd-activity-title { margin-bottom: 4px; }
.fzd-activity-list { display: flex; flex-direction: column; margin-top: 10px; }
.fzd-activity-row { padding: 12px 0; border-bottom: 1px solid var(--fzd-border-soft); display: flex; gap: 12px; }
.fzd-activity-row:last-child { border-bottom: none; }
.fzd-activity-time { flex-shrink: 0; width: 40px; font: 600 11px/1.4 'Oswald', sans-serif; color: var(--fzd-text-fainter); }
.fzd-activity-text { flex: 1; font: 400 13px/1.45 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-ink-soft); }
.fzd-activity-text strong { font-weight: 600; }
.fzd-activity-empty { padding: 12px 0; font: 400 13px/1.4 'Helvetica Neue', Helvetica, sans-serif; color: var(--fzd-text-faint); }

/* ---- Créer / Rejoindre ---- */
.fzd-cta-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.fzd-cta-btn {
    padding: 13px;
    text-align: center;
    border-radius: 10px;
    font: 600 11.5px/1 'Helvetica Neue', Helvetica, sans-serif;
    letter-spacing: .07em;
    text-transform: uppercase;
    cursor: pointer;
    text-decoration: none;
}
.fzd-cta-btn.is-primary { background: var(--fzd-solid); color: var(--fzd-on-solid); }
.fzd-cta-btn.is-primary:hover { background: var(--fzd-solid-hover); color: var(--fzd-on-solid); }
.fzd-cta-btn.is-secondary { border: 1px solid var(--fzd-ink); color: var(--fzd-ink); }
.fzd-cta-btn.is-secondary:hover { background: var(--fzd-bg-alt); }

/* ============================================================
   BUREAU — 2A (≥769px) : calendrier plus dense, corps en deux
   colonnes (1fr / 400px), même DOM.
   ============================================================ */
@media (min-width: 769px) {
    .fz-dash-section { padding: 0 32px 88px; }

    .fz-dash-body {
        grid-template-columns: 1fr 400px;
        grid-template-areas:
            "live      mypools"
            "players   activity"
            "quickactions cta";
    }
    .fz-dash-live, .fz-dash-players, .fz-dash-quickactions { padding: 28px 34px; }
    .fz-dash-mypools, .fz-dash-activity { padding: 28px 30px; border-left: 1px solid var(--fzd-border); }
    .fz-dash-cta { padding: 0 30px 30px; border-left: 1px solid var(--fzd-border); }

    .fz-dash-live { border-right: 1px solid var(--fzd-border); }
    .fz-dash-players { border-right: 1px solid var(--fzd-border); }
    .fz-dash-quickactions { border-right: 1px solid var(--fzd-border); border-bottom: none; }

    .fzd-live-score { font-size: 108px; }
    .fzd-live-score-lbl { font-size: 17px; }
    .fzd-live-stat-num { font-size: 28px; }
    .fzd-pregame-clock { font-size: 84px; }

    .fzd-players-head { margin-bottom: 0; }
    .fzd-player-name { font-size: 16px; }
}

/* ============================================================
   TÉLÉPHONE — 1A (≤768px)
   ============================================================ */
@media (max-width: 768px) {
    .fz-dash-section { padding: 0 16px 56px; }
    .fzd-actions-grid { gap: 10px; }
    .fzd-cta-grid { gap: 10px; }

    /* ----------------------------------------------------------
       CALENDRIER TÉLÉPHONE — maquette Canvas-12, 1C/1D.
       Même DOM qu'au bureau : le titre passe en gros Oswald, la
       semaine devient une barre pleine largeur, les sept jours se
       centrent, et surtout les MATCHS DÉFILENT — une carte par
       écran, accrochée au scroll, avec des puces dessous — au lieu
       de s'empiler verticalement. renderDayGames() (accueil-dash.js)
       leur envoie tous les matchs de la journée dans ce cas, le
       repli « Voir les N autres » n'ayant plus de raison d'être.
       ---------------------------------------------------------- */
    .fz-dash-calendar { padding: 18px 16px; gap: 13px; }

    .fzd-cal-head { gap: 12px; }
    .fzd-cal-title {
        flex: 1 1 100%;
        font: 700 30px/1 'Oswald', sans-serif;
        letter-spacing: -.01em;
        text-transform: uppercase;
    }
    .fzd-cal-nav {
        flex: 1 1 100%;
        gap: 8px;
        border: 1px solid var(--fzd-border);
        border-radius: 10px;
        padding: 10px 12px;
    }
    /* Scopé à la barre de semaine : les flèches du sélecteur de mois
       gardent leur cadre. */
    .fzd-cal-nav .fzd-cal-nav-btn { border: none; width: auto; height: auto; font-size: 15px; }
    .fzd-cal-range { flex: 1; font-size: 13px; color: var(--fzd-ink); }
    .fzd-cal-spacer { display: none; }
    .fzd-cal-full { flex: 1 1 100%; text-align: left; }

    .fzd-cal-strip { gap: 5px; }
    .fzd-day-chip {
        padding: 7px 2px 6px;
        border-radius: 9px;
        align-items: center;
        gap: 3px;
        text-align: center;
    }
    /* L'ordre s'inverse : jour de semaine au-dessus du chiffre. */
    .fzd-day-chip-top { flex-direction: column-reverse; align-items: center; gap: 3px; }
    .fzd-day-chip-num { font-size: 18px; }
    .fzd-day-chip-dow { font-size: 8px; letter-spacing: .1em; }
    .fzd-day-chip-count { justify-content: center; font-size: 9.5px; color: var(--fzd-text-fainter); }
    /* Une case fait un septième d'écran : seul le chiffre y tient. */
    .fzd-count-w { display: none; }

    /* Journée sélectionnée : contour brique plutôt qu'aplat noir — sept
       cases côte à côte, l'aplat écrasait la rangée. */
    .fzd-day-chip.is-selected {
        background: var(--fzd-accent-tint);
        border-color: var(--fzd-accent-fill);
    }
    .fzd-day-chip.is-selected .fzd-day-chip-num { color: var(--fzd-accent); }
    .fzd-day-chip.is-selected .fzd-day-chip-dow,
    .fzd-day-chip.is-selected .fzd-day-chip-count { color: var(--fzd-text-faint); }
    .fzd-day-chip.is-selected .fzd-day-chip-count.is-live { color: var(--fzd-accent); }

    .fzd-cal-dayhead { gap: 9px; padding-top: 0; border-top: none; }
    .fzd-cal-dayname { font-size: 21px; }

    /* Une carte par écran, débordant des 16px de marge de la carte pour que
       la suivante se devine au bord. */
    .fzd-cal-games {
        margin: 0 -16px;
        padding: 0 16px;
        scroll-padding: 0 16px;
    }
    .fzd-game-card { flex-basis: 86%; }
    /* Une seule carte : elle occupe toute la largeur, rien ne défile. */
    .fzd-cal-games > .fzd-game-card:only-child { flex-basis: 100%; }

    /* Au doigt on balaie : les flèches ne servent qu'à la souris. */
    .fzd-cal-arrow { display: none; }
    .fzd-cal-empty { padding: 14px 4px; }

    .fzd-team-name { font-size: 14px; }
    .fzd-team-score { font-size: 21px; }
    .fzd-gp-card { width: 168px; }
    .fzd-gp-num { font-size: 21px; }

    /* Ce panneau ne descend pas sous 768px : accueil-mobile.css le masque en
       !important et la home mobile rend les mêmes mouvements avec ses propres
       classes .fzm-*. Le repli étroit du carrousel vit donc là-bas, pas ici. */

    /* La bannière (#fzDashHero bureau / #fzmHeroSlot téléphone, voir
       renderHero() dans accueil-dash.js) partage un seul balisage : ici on
       ne fait qu'empiler écusson+texte, stats et CTA au lieu de les aligner
       sur une seule ligne, comme la maquette Canvas-9 2C/2D. */
    .fz-dash-hero {
        flex-wrap: wrap;
        column-gap: 12px;
        row-gap: 14px;
        padding: 18px 16px 16px;
        margin-bottom: 14px;
        border-radius: 16px;
    }
    .fzd-hero-headline { font-size: 22px; }
    .fzd-hero-stats { flex: 1 1 100%; }
    .fzd-hero-cta { flex: 1 1 100%; justify-content: center; }
    /* Les deux boutons de fin de repêchage passent l'un sous l'autre plutôt
       que de se serrer sur une ligne : leurs libellés ne se coupent pas. */
    .fzd-hero-ctas { flex: 1 1 100%; flex-wrap: wrap; gap: 8px; }
    .fzd-hero-ctas .fzd-hero-cta { flex: 1 1 100%; }
}
