﻿/* Reference-driven season skin, scoped away from draft and onboarding.
   Apple dark-ladder values; accueil-light.css covers the light theme. */
body.fz-season-page { background:var(--bg); }
#fzDashSection.is-season { background:var(--bg); padding:18px 20px 48px; }
.is-season .fz-dash { max-width:1500px; --fzd-bg:#1C1C1E; --fzd-bg-alt:#2C2C2E; --fzd-surface:#1C1C1E; --fzd-ink:#F5F5F7; --fzd-text:#F5F5F7; --fzd-text-muted:#A1A1A6; --fzd-border:#38383A; --fzd-border-soft:#38383A; --fzd-accent:var(--primary-text); --fzd-solid:var(--primary); --fzd-on-solid:var(--on-primary); }
.is-season .fz-dash > :not(#fzSeasonHome) { display:none!important; }
.fzs { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:14px; color:#F5F5F7; font:400 16px/1.35 'Barlow Condensed',sans-serif; }
.fzs .fzs-panel { min-width:0; padding:16px; border:1px solid #38383A; border-radius:11px; background:#1C1C1E; overflow:hidden; }
.fzs .fzs-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.fzs h2 { margin:0; font:500 15px/1.25 'Oswald',sans-serif; text-transform:uppercase; letter-spacing:.45px; }
.fzs a { color:var(--primary-text); }
.fzs a:hover { color:var(--primary-text); }
.fzs a:focus-visible,.fzs button:focus-visible { outline:2px solid var(--primary); outline-offset:4px; }
.fzs-head a { font-size:14px; white-space:nowrap; }
.fzs-head a span { margin-left:6px; font-size:22px; }
.fzs p { margin:5px 0; color:#F5F5F7; }
.fzs .fzs-hero { grid-column:span 8; position:relative; min-height:218px; padding:24px; display:flex; align-items:center; isolation:isolate; }
.fzs-ice { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.3; z-index:-3; }
.fzs-hero:after { content:''; position:absolute; inset:0; background:linear-gradient(90deg,#1C1C1E 5%,#1C1C1Eb8 45%,transparent); z-index:-1; }
.fzs-cover { position:absolute; right:0; bottom:-28%; width:49%; height:140%; object-fit:contain; z-index:-2; }
.fzs-hero-copy { max-width:70%; }
.fzs-eyebrow { display:flex; align-items:center; gap:10px; font-weight:600; text-transform:uppercase; letter-spacing:1px; }
.fzs h1 { font:900 italic clamp(32px,3vw,52px)/1.02 'Archivo',sans-serif; text-transform:uppercase; margin:20px 0 10px; letter-spacing:-1.5px; }
.fzs .fzs-cta { display:inline-flex; gap:24px; background:var(--primary); color:var(--on-primary); padding:10px 20px; margin-top:16px; border-radius:6px; font-weight:700; text-transform:uppercase; }
.fzs-dot { display:inline-block; width:11px; height:11px; border-radius:50%; background:var(--primary); box-shadow:0 0 14px rgba(var(--primary-rgb),.33); flex-shrink:0; }
.fzs-rank { grid-column:span 4; position:relative; }
.fzs-number { display:block; font:600 34px/1.2 'Oswald',sans-serif; margin:8px 0; }
.fzs-number small { font-size:24px; }
.fzs-number sup { font-size:18px; }
.fzs .fzs-green { color:var(--success); }
.fzs .fzs-red { color:var(--primary-text); }
.fzs-rank p span { color:#A1A1A6; font-size:13px; }
.fzs-bars { position:absolute; right:20px; bottom:25px; display:flex; align-items:end; gap:8px; height:72px; opacity:.6; }
.fzs-bars i { width:12px; height:25%; background:#38383A; }
.fzs-bars i:nth-child(2) { height:40%; }.fzs-bars i:nth-child(3) { height:60%; }.fzs-bars i:nth-child(4) { height:85%; }.fzs-bars i:nth-child(5) { height:65%; }.fzs-bars i:nth-child(6) { height:100%; }
.fzs .fzd-team-logo { width:30px; height:30px; object-fit:contain; }
.fzs-tag { display:inline-block; border-radius:3px; padding:1px 6px; background:#2C2C2E; color:#F5F5F7; font-size:11px; font-weight:700; text-transform:uppercase; width:max-content; }
.fzs-tag.is-live { background:var(--primary); color:var(--on-primary); } /* blanc dessus : 4,55:1 */
.fzs-players { grid-column:span 6; grid-row:span 2; }
.fzs-player { display:grid; grid-template-columns:55px 1.15fr 1.4fr 30px; align-items:center; gap:12px; padding:10px 0; border-bottom:1px solid #38383A; }
.fzs-player:last-child { border:0; }
.fzs .fzd-off-face { width:55px; height:55px; border-radius:50%; background:#2C2C2E; flex-shrink:0; }
.fzs-player-name { min-width:0; }.fzs-player-name strong { color:#F5F5F7; font-size:16px; }
.fzs-player-name small { display:block; color:#A1A1A6; margin:2px 0 4px; font-size:13px; }
.fzs-player-stats { display:flex; flex-wrap:wrap; justify-content:space-between; gap:5px; color:#F5F5F7; font-size:12px; }
.fzs-player-stats b,.fzs-player-stats strong { font-size:20px; }.fzs-player-stats small { flex-basis:100%; font-size:12px; }
.fzs-total { grid-column:span 4; }
.fzs-dots { display:flex; gap:6px; flex-wrap:wrap; margin-top:15px; }.fzs-dots i { width:13px; height:13px; border-radius:50%; background:#38383A; }.fzs-dots .is-on { background:var(--success); }
.fzs-breakdown { grid-column:span 6; }.fzs-stat { display:grid; grid-template-columns:115px 30px 1fr; align-items:center; gap:12px; border-bottom:1px solid #38383A; padding:7px 0; font-size:14px; }.fzs-stat > div { background:#2C2C2E; border-radius:10px; height:9px; overflow:hidden; }.fzs-stat i { display:block; height:100%; background:var(--primary); border-radius:10px; }
/* Blocs partagés (accueil-dash.js) : l'accueil de saison ne leur donne que
   leur place dans la grille et, pour « À surveiller », son fond de panneau —
   le reste de leur mise en forme les suit d'un accueil à l'autre. */
.fzs :is(#fzDashCalendarWrap, #fzdOffMoves) { grid-column:span 12; min-width:0; }
/* Le fond et la bordure viennent des jetons --fzd-* que la palette remappe
   pour cet accueil (accueil-palette.css) : ils suivent donc les deux thèmes. */
/* Seul sur sa rangée depuis que « Actualités NHL » a quitté l'accueil de
   saison : il la prend entière, comme « Mouvements récents ». */
.fzs #fzdOffWatch { grid-column:span 12; min-width:0; padding:16px; border:1px solid var(--fzd-border); border-radius:11px; overflow:hidden; }
.fzs #fzDashCalendarWrap { display:block!important; margin:0; padding:16px; border-radius:11px; }.fzs .fzd-cal-games { grid-template-columns:repeat(4,minmax(0,1fr)); }.fzs .fzd-game-players { display:none; }.fzs .fzd-cal-strip { margin-bottom:12px; }
.fzs-activity { grid-column:span 4; }
.fzs .fzm-news-list { display:grid; gap:10px; }.fzs .fzm-news-row { color:#F5F5F7; }.fzs .fzm-list-card { background:transparent; border:0; }.fzs .fzm-list-row { border-color:#38383A; }.fzs .fzm-activity-text { color:#F5F5F7; }.fzs-empty { padding:20px 0; font-size:15px; }
@media(max-width:1100px) and (min-width:769px) { .fzs-player { grid-template-columns:42px 1fr; }.fzs-player-stats { grid-column:2; }.fzs-player > .fzd-team-logo { display:none; }.fzs .fzd-cal-games { grid-template-columns:repeat(2,minmax(0,1fr)); }.fzs-head a { font-size:12px; }.fzs-bars { opacity:.25; } }
@media(max-width:768px) {
 #fzDashSection.is-season { padding:12px 12px calc(90px + env(safe-area-inset-bottom)); }
 .fzs { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; font-size:15px; }
 .fzs .fzs-panel { padding:13px; border-radius:10px; }
 .fzs .fzs-hero { grid-column:1/-1; order:0; min-height:225px; padding:20px; }
 .fzs-hero-copy { max-width:75%; }.fzs h1 { font-size:34px; max-width:250px; }.fzs-cover { right:-15%; width:80%; opacity:.7; }.fzs-hero p { max-width:210px; }
 .fzs-players { grid-column:1/-1; grid-row:auto; order:1; }.fzs-player-list { display:flex; overflow-x:auto; scroll-snap-type:x proximity; gap:12px; padding-bottom:5px; }.fzs-player { flex:0 0 205px; display:grid; grid-template-columns:48px 1fr; border:1px solid #38383A; border-radius:8px; padding:10px; scroll-snap-align:start; gap:8px; }.fzs-player:last-child { border:1px solid #38383A; }.fzs-player .fzd-off-face { width:48px; height:48px; }.fzs-player-stats { grid-column:1/-1; }.fzs-player > .fzd-team-logo { display:none; }.fzs-player-stats small { text-align:center; border-top:1px solid #38383A; padding-top:6px; }
 .fzs-rank { grid-column:span 1; order:2; }.fzs-total { grid-column:span 1; order:3; }.fzs-number { font-size:30px; }.fzs-number small { font-size:22px; }.fzs-rank .fzs-head a { display:none; }.fzs-bars { display:none; }.fzs #fzDashCalendarWrap { grid-column:1/-1; order:4; }.fzs #fzdOffMoves { grid-column:1/-1; order:5; }.fzs-breakdown { grid-column:1/-1; order:9; }.fzs-activity { grid-column:1/-1; order:10; }.fzs #fzdOffWatch { grid-column:1/-1; order:11; }
 .fzs h2 { font-size:13px; }.fzs-head { gap:8px; }.fzs-head a { font-size:13px; }.fzs .fzd-cal-games { display:flex; }.fzs .fzd-game-card { flex:0 0 85%; }.fzs .fzd-cal-strip { display:flex; overflow-x:auto; }.fzs .fzd-day-chip { flex:0 0 64px; }.fzs-stat { grid-template-columns:80px 25px 1fr; }
}
@media(prefers-reduced-motion:reduce) { .fzs * { scroll-behavior:auto!important; } }
.fzs { --fzm-bg:#000000; --fzm-panel:#1C1C1E; --fzm-surface:#1C1C1E; --fzm-ink:#F5F5F7; --fzm-ink-soft:#A1A1A6; --fzm-ink-faint:#A1A1A6; --fzm-border:#38383A; --fzm-red:var(--primary-text); --fzm-red-soft:rgba(var(--primary-rgb),.16); --fzm-green:var(--success); --fzm-solid:var(--primary); --fzm-on-solid:var(--on-primary); }

/* Mon duel (tête-à-tête) : en cours, sinon à venir, sinon le dernier joué. */
.fzs-duel { grid-column:span 4; }
.fzs-duel-score { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:10px; margin:6px 0 4px; }
.fzs-duel-side { display:flex; flex-direction:column; gap:2px; min-width:0; }
.fzs-duel-side:last-child { text-align:right; align-items:flex-end; }
.fzs-duel-side span { font-size:14px; color:#A1A1A6; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }
.fzs-duel-side.is-me span { color:#F5F5F7; font-weight:700; }
.fzs-duel-side strong { font:600 32px/1.1 'Oswald',sans-serif; font-variant-numeric:tabular-nums; }
.fzs-duel-score.is-ahead .fzs-duel-side.is-me strong { color:var(--success); }
.fzs-duel-score.is-behind .fzs-duel-side.is-me strong { color:var(--primary-text); }
.fzs-duel-vs { font:600 13px/1 'Oswald',sans-serif; text-transform:uppercase; color:#A1A1A6; }
.fzs-duel-status { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:14px; }
.fzs-duel-prev { font-size:13px; color:#A1A1A6; border-top:1px solid #38383A; padding-top:8px; margin-top:10px !important; }
@media (max-width:768px) {
 .fzs-duel { grid-column:1/-1; order:1; }
 .fzs-duel-side strong { font-size:28px; }
}

/* ---- Points du soir, ajoutés au total dès qu'ils tombent (pointsDirect.js) ----
   Un <b> et non un <span> : `.fzs-rank p span` teinte ses span en gris. */
.fzs-live-pts {
    display:inline-flex; align-items:center; gap:5px;
    margin-left:8px; padding:2px 9px 2px 7px;
    border-radius:100px;
    background:color-mix(in srgb, var(--success) 15%, transparent);
    color:var(--success);
    font:600 13px/1.3 'Barlow Condensed',sans-serif; letter-spacing:.02em;
    white-space:nowrap; vertical-align:2px;
}
.fzs-live-pts::before { content:''; width:6px; height:6px; border-radius:50%; background:currentColor; }
.fzs-live-pts.is-new { animation:fzs-live-bump 1.6s ease-out; }
@keyframes fzs-live-bump {
    0%   { transform:scale(1.18); box-shadow:0 0 0 0 color-mix(in srgb, var(--success) 45%, transparent); }
    60%  { transform:scale(1); box-shadow:0 0 0 8px transparent; }
    100% { transform:scale(1); box-shadow:none; }
}
@media (prefers-reduced-motion: reduce) { .fzs-live-pts.is-new { animation:none; } }
/* Joueur dont le match n'a pas commencé : l'heure de mise au jeu en pastille. */
.fzs-tag.is-time { background:transparent; border:1px solid #48484A; color:#F5F5F7; text-transform:none; font-variant-numeric:tabular-nums; }
.fzs-player.is-upcoming .fzs-player-stats small { color:#A1A1A6; }
html[data-theme="light"] .fzs-tag.is-time { border-color:var(--fzh-outline); color:var(--fzh-muted); }

/* ---- Mes joueurs en direct : carrousel de cartes (maquette Claude Design) ----
   Le joueur en grand sur la couleur de son club, le logo du club en filigrane ;
   ceux qui jouent sont à gauche, marqués EN DIRECT. */
.fzs-players .fzs-player-list { display:flex; flex-direction:row; flex-wrap:nowrap; gap:10px; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; padding:0 0 6px; }
.fzs-players .fzs-player-list::-webkit-scrollbar { display:none; }
.fzs-pc, .fzs-pc:hover { text-decoration:none; }
.fzs-pc { flex:none; width:172px; scroll-snap-align:start; display:flex; flex-direction:column; overflow:hidden; border-radius:12px; border:1px solid #2E2E33; background:#232326; color:#F2F2F3; font-variant-numeric:tabular-nums; }
.fzs-pc.is-live { border-color:#8A2A30; }
.fzs-pc:hover { color:#F2F2F3; border-color:#55555C; }
#fzDashSection .fzs-pc, #fzDashSection .fzs-pc:hover { color:#F2F2F3; }
.fzs-pc-top { position:relative; height:112px; overflow:hidden; background:linear-gradient(180deg, color-mix(in srgb, var(--pc-team) 85%, #fff 5%) 0%, color-mix(in srgb, var(--pc-team) 45%, #0b0b0d) 100%); }
/* Le logo du club en grand derrière le joueur, comme sur les fiches LNH. */
.fzs-pc-logo { position:absolute; left:50%; top:50%; width:130%; height:130%; transform:translate(-50%,-50%); object-fit:contain; opacity:.2; filter:brightness(.6) saturate(.6); pointer-events:none; }
/* La règle de palette (#fzDashSection … .fzd-off-face) pose un fond gris : la photo reste détourée sur la couleur du club. */
#fzDashSection .fzs .fzs-pc .fzd-off-face { position:absolute; inset:6px 0 0; width:auto; height:auto; flex:none; border-radius:0; background:transparent; display:block; font-size:0; overflow:visible; }
#fzDashSection .fzs .fzs-pc .fzd-off-face img { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; object-position:center bottom; background:transparent; transform:none; }
#fzDashSection .fzs-pc-body { border-top:1px solid rgba(255,255,255,.08); }
.fzs-pc-live { position:absolute; left:8px; top:8px; display:flex; align-items:center; gap:4px; height:18px; padding:0 6px; border-radius:4px; background:var(--primary); color:var(--on-primary); font:700 11px/1 'Barlow Condensed',Helvetica,sans-serif; letter-spacing:.06em; }
.fzs-pc-time { position:absolute; left:8px; top:8px; z-index:1; display:flex; align-items:center; height:18px; padding:0 6px; border-radius:4px; background:rgba(0,0,0,.55); color:#fff; font:700 11px/1 'Barlow Condensed',Helvetica,sans-serif; letter-spacing:.06em; font-variant-numeric:tabular-nums; }
.fzs-pc-live { z-index:1; }
.fzs-pc-live i { width:5px; height:5px; border-radius:50%; background:#fff; }
.fzs-pc-body { display:flex; flex-direction:column; align-items:center; gap:4px; padding:10px; border-top:1px solid #2E2E33; min-height:70px; }
.fzs-pc-name { display:flex; align-items:baseline; gap:4px; max-width:100%; }
.fzs-pc-name strong { font-size:14.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:#F2F2F3; }
.fzs-pc-name span { flex:none; font-size:11px; font-weight:700; color:#8A8A90; }
.fzs-pc-season { display:flex; align-items:baseline; gap:6px; font-size:13px; color:#A3A3AA; }
.fzs-pc-season b { font-weight:700; color:#8A8A90; }
.fzs-pc-stats { display:flex; gap:10px; font:600 14px/1 'Barlow Condensed',Helvetica,sans-serif; color:#C9C9CF; }
.fzs-pc-stats small { font-size:11px; color:#6F6F76; }
.fzs-pc .is-up { color:var(--success); }
.fzs-pc-stats .is-up small { color:inherit; }
.fzs-pc-foot { margin-top:auto; padding:7px 8px; background:#1C1C1F; text-align:center; font:600 12.5px/1.2 'Barlow Condensed',Helvetica,sans-serif; letter-spacing:.03em; color:#8A8A90; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fzs-pc.is-live .fzs-pc-foot { background:#2B1C1D; color:#F2F2F3; }
html[data-theme="light"] .fzs-pc { background:#fff; border-color:var(--fzh-outline); }
html[data-theme="light"] .fzs-pc, html[data-theme="light"] .fzs-pc:hover, html[data-theme="light"] .fzs-pc-name strong { color:#1D1D1F; }
html[data-theme="light"] .fzs-pc-body { border-color:var(--fzh-outline); }
html[data-theme="light"] .fzs-pc-foot { background:#F5F5F7; }
html[data-theme="light"] .fzs-pc.is-live .fzs-pc-foot { background:#FDECEC; color:#1D1D1F; }
@media(max-width:768px) { .fzs-pc { flex-basis:160px; width:160px; } }

/* ---- Disposition de saison (de haut en bas) ----
   Les histoires du haut de page (accueil.js), puis : mes joueurs ce soir ;
   ma position et le total du soir côte à côte ; mon duel (tête-à-tête) ;
   À surveiller ; les alignements des 32 clubs (.fzh-al, accueil-draft.css). */
.fzs .fzs-players { grid-column:1/-1; grid-row:auto; order:1; }
.fzs .fzs-rank { grid-column:span 6; order:2; }
.fzs .fzs-total { grid-column:span 6; order:3; }
.fzs .fzs-duel { grid-column:1/-1; order:4; }
/* À surveiller et les alignements côte à côte, comme à l'accueil de
   repêchage : en pleine largeur, les 32 tuiles deviendraient des pavés. */
#fzSeasonHome #fzdOffWatch { grid-column:span 6; order:5; }
#fzSeasonHome .fzh-al { grid-column:span 6; order:6; }
#fzSeasonHome:has(#fzdOffWatch[hidden]) .fzh-al { grid-column:1/-1; }
/* La palette teint en rouge tout lien de l'accueil de saison (#fzDashSection
   .fzs a) : les tuiles gardent l'encre de leur club, le titre son blanc. */
#fzDashSection #fzSeasonHome a.fzh-al-club { color:var(--encre); }
#fzDashSection #fzSeasonHome a.fzh-al-lien { color:#fff; }
@media(max-width:768px) {
 .fzs .fzs-rank, .fzs .fzs-total { grid-column:span 1; }
 #fzSeasonHome #fzdOffWatch, #fzSeasonHome .fzh-al { grid-column:1/-1; }
}
