:root{
  /* Identité MammouthFoot — palette validée sur la maquette (2026-09-11) */
  --navy-900:#16233F;
  --navy-800:#1E2E52;
  --navy-700:#2B3E68;
  --cream:#EDEAE2;
  --cream-card:#F7F5F0;
  --brand-orange:#E07830;
  --brand-orange-dark:#C4621F;
  --ivory:#F2EEE3;
  --text-dark:#1B2333;
  --text-dark-muted:#5B6478;
  --live-red:#D94A3D;
  --mf-safe-top:max(env(safe-area-inset-top, 0px), var(--safe-area-inset-top, 0px));
  --mf-safe-bottom:max(env(safe-area-inset-bottom, 0px), var(--safe-area-inset-bottom, 0px));

  /* Rôles fonctionnels — recalculés sur la nouvelle palette. Les noms
     restent ceux déjà utilisés dans tout le reste du fichier : changer un
     rôle ici suffit à re-thémer le site entier, jamais besoin de toucher
     une règle au cas par cas. */
  --bg:var(--cream);
  --bg-elevated:var(--cream-card);
  --bg-elevated-2:color-mix(in srgb, var(--cream) 80%, var(--text-dark) 20%);
  --bg-elevated-3:var(--navy-900);
  --border:rgba(27,35,51,0.14);
  --border-strong:rgba(27,35,51,0.28);
  --text:var(--text-dark);
  --text-secondary:var(--text-dark-muted);
  /* Même valeur que --text-secondary, volontairement : --text-dark-muted
     (4,9:1 sur --cream) est déjà tout juste au-dessus du minimum AA
     (4,5:1) pour du texte normal — l'éclaircir encore pour distinguer un
     3e palier, comme sur l'ancien thème sombre, repasserait sous ce
     seuil (mesuré : 2,9:1). Un seul palier "texte discret" fiable plutôt
     que deux dont un illisible. */
  --text-muted:var(--text-dark-muted);
  --accent:var(--brand-orange);
  --accent-soft:rgba(224,120,48,0.22);
  --accent-faint:rgba(224,120,48,0.09);
  /* --brand-orange en TEXTE sur --cream ne passe pas le contraste AA
     (2.5:1, mesuré — il en faut 4.5:1 pour du texte normal) : cette
     variante assombrie sert uniquement quand l'orange est la couleur du
     TEXTE lui-même (liens, libellés, "kicker") — jamais pour les fonds,
     bordures ou remplissages, où --accent reste la couleur de marque
     exacte validée sur la maquette. Mesuré : 4.7:1 sur --cream. */
  --accent-text:#9A5323;
  /* Second ton de la même famille orange, réservé aux états "neutre/nul"
     (barre de pronostic, étiquette "double chance" neutre, avertissement)
     — distinct du orange de --accent pour ne jamais laisser croire qu'un
     de ces états est cliquable comme un CTA. */
  --orange:var(--brand-orange-dark);
  --orange-faint:rgba(196,98,31,0.1);
  /* Comparaison domicile/extérieur (stats du match) : plutôt qu'un second
     orange qui rendrait les deux équipes indiscernables, on oppose les
     deux teintes de marque elles-mêmes (orange/navy). */
  --gold:var(--navy-700);
  /* Vert/rouge "fonctionnels" (victoire/défaite, favori/outsider, cartons,
     zone de relégation) — jamais la couleur de marque, et surtout jamais
     --live-red : ce rouge-là reste réservé exclusivement à l'indicateur
     "match en direct", pour ne jamais se confondre avec un carton, une
     défaite ou une zone de classement. */
  --green:#2E8B57;
  --green-faint:rgba(46,139,87,0.12);
  --red:#B23A30;
  --red-faint:rgba(178,58,48,0.1);
  /* Carton jaune : ni --orange (déjà l'accent de marque, utilisé ailleurs
     pour des CTA/états neutres — un carton dans cette teinte se confondait
     avec eux) ni un jaune trop pâle (invisible sur --cream/--cream-card,
     tous deux déjà très clairs) — un jaune franc, net à l'œil rapide,
     distinct à la fois de --orange et de --red. Jamais utilisé sur un fond
     sombre (--navy-900) dans le site actuel, mais reste suffisamment
     saturé pour y rester lisible si un jour l'un de ces composants change
     de fond. */
  --card-yellow:#FFCC00;
  --radius:16px;
}

*{box-sizing:border-box;}

/* Filet de sécurité global, une bonne fois pour toutes (audit du
   2026-09-18 après 4 cas isolés du même bug : .nav-link, .video-gallery-
   grid, .comment-auth-form/.comments-auth/.comment-form, .draft-player-
   row) : tout élément JS-piloté qui fait el.hidden = true (voir
   web/static/app.js/consent.js) repose sur la règle par défaut du
   navigateur [hidden]{display:none}, qui a une spécificité normale et
   perd donc TOUJOURS face à n'importe quelle règle d'auteur définissant
   `display` sur ce même élément, quel que soit l'ordre ou la
   spécificité de cette dernière (l'origine "auteur" prime sur l'origine
   "user agent" avant même de comparer les spécificités) — c'est ce qui a
   rendu 4 fonctionnalités différentes visuellement cassées malgré un
   attribut hidden posé correctement côté serveur/JS. Le !important
   rétablit la seule sémantique voulue de `hidden` (masqué, point final)
   sans avoir à répliquer un correctif `.xxx[hidden]{display:none;}` par
   classe à chaque nouvelle fonctionnalité — les 4 correctifs ponctuels
   précédents ont été retirés, devenus redondants avec celui-ci. */
[hidden]{display:none !important;}

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:'Barlow',system-ui,sans-serif;
  line-height:1.5;
}
h1,h2,h3,h4{font-family:'Archivo Black',system-ui,sans-serif;font-weight:400;text-wrap:balance;margin:0;}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace;font-variant-numeric:tabular-nums;}
a{color:inherit;text-decoration:none;}
a:hover{color:var(--accent-text);}
img{max-width:100%;}
::-webkit-scrollbar{height:6px;width:6px;}
::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px;}
@media (prefers-reduced-motion: reduce){ *{transition:none!important;animation:none!important;} }

.container{max-width:1180px;margin:0 auto;padding:0 32px 64px;}

/* NAV — seule zone du site sur fond marine (le reste est sur --cream) :
   variante "inversée" avec ses propres tons de texte/surface/bordure,
   plutôt que d'hériter de --text/--bg-elevated/--border (pensés pour le
   fond clair) qui y seraient illisibles. */
.site-header-outer{position:sticky;top:0;z-index:100;background:var(--navy-900);border-bottom:1px solid rgba(242,238,227,0.12);}
/* Android edge-to-edge : SystemBars.insetsHandling=css fournit l'inset
   dynamique. Il ne s'applique qu'au contexte natif afin de ne jamais
   déplacer le header du navigateur classique. */
html[data-app-context="capacitor"] .site-header-outer{padding-top:var(--mf-safe-top);}
.site-header{
  display:flex;align-items:center;justify-content:space-between;
  max-width:1180px;margin:0 auto;padding:20px 32px 14px;
}
.brand{display:flex;align-items:center;gap:11px;}
.brand-mark{width:38px;height:38px;object-fit:contain;flex-shrink:0;}
.brand-word{display:flex;flex-direction:column;line-height:1.2;}
.brand-name{font-family:'Archivo Black';font-weight:400;font-size:14px;color:var(--ivory);}
.brand-sub{font-size:9.5px;color:rgba(242,238,227,0.6);letter-spacing:0.12em;}
.site-nav{display:flex;align-items:center;gap:14px;flex-shrink:0;}
.usage-pill{padding:5px 11px;border-radius:20px;background:var(--navy-800);border:1px solid rgba(242,238,227,0.16);font-size:10px;color:rgba(242,238,227,0.7);letter-spacing:0.04em;}
.league-select{
  appearance:none;background:var(--navy-800);border:1px solid rgba(242,238,227,0.18);border-radius:9px;
  color:var(--ivory);font-family:'Barlow';font-size:12.5px;font-weight:600;padding:7px 28px 7px 12px;
  cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23F2EEE3' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;
}

/* COMPTE — bandeau de navigation (voir base.html, accessible sur toute
   page) — même en-tête sombre que le reste du header, jamais un
   composant qui détonne. */
.header-auth{position:relative;display:flex;align-items:center;}
.header-auth-guest{white-space:nowrap;}
.header-auth-account{position:relative;}
.header-auth-toggle{
  display:flex;align-items:center;gap:6px;background:none;border:none;cursor:pointer;
  color:var(--ivory);font-family:'Barlow';font-weight:600;font-size:13px;padding:0;
}
.header-auth-toggle:hover{opacity:0.85;}
.header-auth-toggle svg{color:rgba(242,238,227,0.6);flex-shrink:0;}
.header-auth-dropdown{
  position:absolute;top:calc(100% + 12px);right:0;z-index:110;
  background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);
  box-shadow:0 12px 28px rgba(0,0,0,0.22);padding:16px;min-width:240px;
}
.header-auth-menu{min-width:150px;padding:8px;}
.header-auth-menu .link-btn{display:block;width:100%;text-align:left;padding:6px 8px;}
.destructive-link{color:#a12626!important;}
.danger-btn{background:#a12626;border-color:#a12626;}
.account-dialog{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(10,18,35,.64);}
.account-dialog[hidden]{display:none;}
.account-dialog-card{width:min(520px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:24px;border:1px solid var(--border);border-radius:16px;background:var(--cream-card);box-shadow:0 24px 70px rgba(0,0,0,.28);}
.account-dialog-card form{display:grid;gap:12px;}
.account-dialog-card input{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:8px;font:inherit;}
.account-dialog-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;}
.header-auth-formpanel{width:280px;}
.header-auth-formpanel .comment-auth-form{flex-direction:column;align-items:stretch;}
.header-auth-formpanel .comment-auth-form input{min-width:0;}
.league-select:hover,.league-select:focus{border-color:var(--accent);outline:none;}

/* BANDEAU DE NAVIGATION — bande distincte sous la barre logo/recherche,
   même en-tête "inversé" (fond marine, texte ivoire) que .site-header,
   un ton plus clair pour rester lisible comme un sous-niveau. */
.primary-nav{background:var(--navy-800);}
.primary-nav-inner{max-width:1180px;margin:0 auto;padding:0 32px;position:relative;}
.primary-nav-links{display:flex;align-items:center;gap:28px;}
.nav-link{
  display:inline-block;padding:13px 1px;font-size:13.5px;font-weight:600;
  color:var(--ivory);border-bottom:2px solid transparent;
}
.nav-link:hover{color:var(--accent);}
.nav-link.active{color:var(--accent);border-bottom-color:var(--accent);}
.nav-toggle{display:none;}
.mobile-header-button,.mobile-header-actions,.mobile-page-title,.mobile-search-head,.mobile-search-status,.mobile-bottom-nav{display:none;}
.app-favorite-button,.app-favorites-global,.favorites-app-page{display:none;}
.favorites-web-fallback{max-width:520px;margin:64px auto;text-align:center;}
.empty-state-card{padding:36px 24px;border:1px solid var(--border);border-radius:18px;background:var(--bg-elevated);}
.empty-state-card h1{margin:5px 0 8px}.empty-state-card p{color:var(--text-muted);}.empty-state-heart{font-size:40px;color:var(--accent-text);}
html[data-app-context="capacitor"] .favorites-web-fallback{display:none;}
html[data-app-context="capacitor"] .favorites-app-page{display:block;}
.favorites-feedback{position:fixed;z-index:500;left:50%;bottom:calc(78px + var(--mf-safe-bottom));width:max-content;max-width:calc(100% - 32px);transform:translateX(-50%);margin:0;padding:10px 14px;border-radius:10px;background:var(--navy-900);color:var(--ivory);box-shadow:0 8px 28px rgba(0,0,0,.22);font-size:12px;text-align:center;}

/* SEARCH */
.search-wrap{position:relative;flex:1;max-width:340px;margin:0 24px;}
.search-input{
  width:100%;background:var(--navy-800);border:1px solid rgba(242,238,227,0.18);border-radius:11px;
  color:var(--ivory);font-family:'Barlow';font-size:13.5px;padding:10px 14px;
}
.search-input::placeholder{color:rgba(242,238,227,0.55);}
.search-input:focus{outline:none;border-color:var(--accent);}
.search-results{
  position:absolute;top:calc(100% + 6px);left:0;right:0;
  background:var(--bg-elevated-2);border:1px solid var(--border-strong);border-radius:12px;
  overflow:hidden;max-height:340px;overflow-y:auto;z-index:50;
  box-shadow:0 20px 40px -12px rgba(0,0,0,0.6);
}
.search-result{
  display:flex;align-items:center;gap:10px;padding:10px 14px;font-size:13px;
  border-bottom:1px solid var(--border);
}
.search-result:last-child{border-bottom:none;}
.search-result:hover,.search-result.active{background:var(--bg-elevated-3);}
.sr-crest{width:26px;height:26px;border-radius:50%;background:#fff;flex-shrink:0;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.sr-crest img{width:78%;height:78%;object-fit:contain;}
.sr-text{flex:1;min-width:0;display:flex;flex-direction:column;}
.sr-label{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sr-sub{font-size:11px;color:var(--text-muted);}
.sr-type{font-size:9.5px;letter-spacing:0.05em;padding:3px 8px;border-radius:20px;flex-shrink:0;}
.sr-type-club{background:var(--accent-faint);color:var(--accent-text);}
.sr-type-player{background:var(--orange-faint);color:var(--gold);}
.search-group h2{margin:0;padding:9px 14px 6px;font-family:'JetBrains Mono';font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);}

.mobile-more-page{max-width:720px;margin:30px auto 0;}
.mobile-more-intro{margin-bottom:28px;}
.mobile-more-intro h1{margin:4px 0 6px;}
.mobile-more-intro p{margin:0;color:var(--text-secondary);}
.mobile-more-section{margin-bottom:22px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;}
.mobile-more-section h2{margin:0;padding:13px 16px 9px;font-family:'JetBrains Mono';font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);background:var(--accent-faint);}
.mobile-more-link{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;min-height:50px;padding:13px 16px;border:0;border-top:1px solid var(--border);background:transparent;color:var(--text);font:600 14px 'Barlow';text-align:left;cursor:pointer;}
.mobile-more-section h2 + .mobile-more-link{border-top:0;}
.mobile-more-link:hover{background:var(--accent-faint);color:var(--accent-text);}
.mobile-more-link > :last-child{font-size:22px;font-weight:400;color:var(--text-muted);}

/* MATCHDAY NAV */
.matchday-bar{display:flex;align-items:center;gap:14px;margin-bottom:20px;}
.mday-btn{
  width:38px;height:38px;border-radius:10px;background:var(--bg-elevated);border:1px solid var(--border);
  color:var(--text);font-size:18px;line-height:1;cursor:pointer;flex-shrink:0;
}
.mday-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent-text);}
.mday-btn:disabled{opacity:0.35;cursor:default;}
.mday-current{display:flex;align-items:center;gap:8px;}
.mday-label{font-size:11px;letter-spacing:0.1em;color:var(--text-muted);font-family:'JetBrains Mono';}
.mday-select{
  background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;
  color:var(--text);font-family:'Barlow';font-weight:700;font-size:15px;
  padding:8px 12px;min-height:38px;
}

/* FOOTER */
.site-footer{max-width:1180px;margin:0 auto;padding:26px 32px 40px;border-top:1px solid var(--border);text-align:center;}
.site-footer p{font-size:12px;color:var(--text-muted);margin:0;}
.site-footer .refresh-note{margin-top:6px;opacity:.6;}
.site-footer .footer-legal{margin-top:10px;}
.site-footer .footer-legal a{color:var(--text-muted);text-decoration:underline;text-underline-offset:2px;}
.site-footer .footer-legal a:hover{color:var(--accent-text);}
.site-footer .footer-legal-sep{margin:0 8px;opacity:.5;}

/* BANDEAU CONSENTEMENT COOKIES — "Accepter" et "Refuser" partagent
   volontairement le même style (.cookie-btn), sans hiérarchie visuelle
   entre les deux : la CNIL exige un choix aussi facile dans les deux
   sens, jamais un bouton mis en avant au détriment de l'autre. */
.cookie-banner{
  position:fixed;left:0;right:0;bottom:0;z-index:200;
  background:var(--navy-900);border-top:1px solid rgba(242,238,227,0.15);
  padding:16px 20px;box-shadow:0 -4px 20px rgba(0,0,0,0.2);
}
.cookie-banner-inner{
  max-width:1180px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;
  justify-content:space-between;gap:16px;
}
.cookie-banner p{margin:0;font-size:13px;line-height:1.5;color:var(--ivory);flex:1;min-width:240px;}
.cookie-banner a{color:var(--ivory);text-decoration:underline;text-underline-offset:2px;}
.cookie-banner-actions{display:flex;gap:10px;flex-shrink:0;}
.cookie-btn{
  font-family:inherit;font-size:13px;font-weight:600;padding:9px 22px;border-radius:8px;
  border:1.5px solid rgba(242,238,227,0.5);background:transparent;color:var(--ivory);cursor:pointer;
}
.cookie-btn:hover{border-color:var(--ivory);background:rgba(242,238,227,0.1);}

@media (max-width:560px){
  .cookie-banner-inner{flex-direction:column;align-items:stretch;}
  .cookie-banner-actions{justify-content:stretch;}
  .cookie-btn{flex:1;}
}

/* HERO */
.hero{padding:36px 0 8px;background:radial-gradient(120% 60% at 15% -40%, var(--accent-faint), transparent);}
.hero-logo{width:84px;height:84px;object-fit:contain;margin-bottom:20px;filter:drop-shadow(0 8px 24px rgba(0,0,0,0.45));}
.kicker{font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:0.16em;color:var(--accent-text);font-weight:600;margin-bottom:16px;}
.hero h1{font-size:40px;line-height:1.12;font-weight:700;max-width:760px;letter-spacing:-0.01em;margin-bottom:14px;}
.hero p{font-size:15px;color:var(--text-secondary);max-width:560px;line-height:1.6;margin:0;}

.pronostic-cta{
  display:flex;align-items:center;gap:18px;margin:28px 0 36px;padding:20px 26px;
  background:linear-gradient(135deg, var(--brand-orange), var(--brand-orange-dark));border-radius:var(--radius);
  color:var(--ivory);text-decoration:none;box-shadow:0 8px 28px rgba(224,120,48,0.32);
  transition:transform 0.2s, box-shadow 0.2s;
}
.pronostic-cta:hover{transform:translateY(-2px);box-shadow:0 12px 34px rgba(224,120,48,0.44);}
.pronostic-cta-logo{width:44px;height:44px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 4px 10px rgba(0,0,0,0.3));}
.pronostic-cta-text{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0;}
.pronostic-cta-text strong{font-family:'Archivo Black',system-ui,sans-serif;font-weight:400;font-size:17px;color:var(--ivory);}
.pronostic-cta-text span{font-size:13px;color:rgba(242,238,227,0.85);}
.pronostic-cta-arrow{font-size:22px;font-weight:700;flex-shrink:0;}
@media (max-width:640px){
  .pronostic-cta{padding:16px 18px;gap:12px;}
  .pronostic-cta-logo{width:36px;height:36px;}
  .pronostic-cta-text strong{font-size:15px;}
  .pronostic-cta-text span{font-size:12px;}
}

/* PAGE DE GARDE — vignettes championnats/résumés */
.landing-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:20px;margin:32px 0;}
.landing-tile{
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;
  background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);
  padding:36px 20px;text-decoration:none;color:inherit;
  transition:transform 0.2s, border-color 0.2s;
}
.landing-tile:hover{transform:translateY(-4px);border-color:var(--accent);color:inherit;}
.landing-tile-emblem{
  width:72px;height:72px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;
  overflow:hidden;flex-shrink:0;
}
.landing-tile-emblem img{width:80%;height:80%;object-fit:contain;}
.landing-tile-fallback{font-family:'Archivo Black';font-weight:400;font-size:22px;color:var(--text-dark);}
.landing-tile-name{font-family:'Archivo Black';font-weight:400;font-size:16px;}
.landing-tile-country{font-size:12px;}
.landing-tile-video .landing-tile-emblem-video{position:relative;}
.landing-tile-video .landing-tile-emblem-video:has(.landing-tile-fallback){background:linear-gradient(135deg, var(--brand-orange), var(--navy-800));}
.landing-tile-video .landing-tile-emblem-video .landing-tile-fallback{color:var(--ivory);}
.landing-tile-video-badge{position:absolute;bottom:-2px;right:-2px;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg-elevated);}
.landing-tile-live{border-color:var(--live-red);}
.landing-tile-live:hover{border-color:var(--live-red);}
.landing-tile-emblem-live{background:var(--red-faint);}
.landing-tile-emblem-live .live-dot{width:16px;height:16px;}
.landing-tile-ball{color:var(--text-dark);display:flex;}
.landing-tile-ball svg{width:32px;height:32px;}
.landing-tile-live .landing-tile-name{color:var(--live-red);}

/* PAGE "MATCHS DU JOUR" */
.match-grid{display:flex;flex-wrap:wrap;gap:18px;margin:24px 0;}
.match-grid .m-card{flex:0 0 320px;}
.status-pill{
  display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:20px;
  font-size:10px;font-weight:700;letter-spacing:0.03em;text-transform:uppercase;flex-shrink:0;
}
.status-pill-live{background:rgba(217,74,61,0.12);color:var(--live-red);}
.status-pill-upcoming{background:var(--accent-faint);color:var(--accent-text);}
.status-pill-finished{background:var(--bg-elevated-2);color:var(--text-muted);}
.status-pill-probable{background:var(--accent-faint);color:var(--accent-text);}
/* Club C1/Europa/Conference suivi en lecture seule (classement + résultats
   uniquement, voir app/unfollowed_clubs.py) — gris neutre comme
   status-pill-finished (un fait informatif, pas une urgence ni une
   promesse) plutôt que --live-red (réservé au direct) ou --accent
   (réservé aux échéances à venir/probables) : ni l'un ni l'autre n'aurait
   de sens ici. */
.status-pill-readonly{background:var(--bg-elevated-2);color:var(--text-muted);}
.status-pill .live-dot{width:6px;height:6px;}
/* Poste de la compo probable pour lequel aucun remplaçant fiable n'a été
   trouvé (voir app/lineup_probable.py::_build_probable_side) — visuellement
   en retrait plutôt que présenté comme n'importe quel autre titulaire. */
.pitch-player-uncertain{opacity:0.55;}
.lineup-row-uncertain{opacity:0.55;font-style:italic;}
.m-card-top-league{display:inline-flex;align-items:center;gap:5px;}

/* SECTION HEADINGS */
.section-title{display:flex;align-items:baseline;justify-content:space-between;margin:40px 0 18px;}
.section-title h2{font-size:20px;font-weight:600;}
.section-title .link{font-size:12.5px;color:var(--text-muted);}

.tabs-bar{display:flex;gap:4px;margin:32px 0 20px;border-bottom:1px solid var(--border);overflow-x:auto;}
.tab-btn{appearance:none;background:none;border:none;color:var(--text-muted);font:inherit;font-family:'Barlow',system-ui,sans-serif;font-size:14px;font-weight:700;padding:10px 16px;cursor:pointer;white-space:nowrap;position:relative;top:1px;border-bottom:2px solid transparent;transition:color 0.15s;}
.tab-btn:hover{color:var(--text-secondary);}
.tab-btn.active{color:var(--text);border-bottom-color:var(--accent);}
[data-tab-panel]{animation:tab-fade-in 0.15s ease-out;}
@keyframes tab-fade-in{from{opacity:0;}to{opacity:1;}}

/* CAROUSEL / MATCH CARDS */
.carousel{display:flex;gap:18px;overflow-x:auto;padding:4px 4px 14px;scroll-snap-type:x proximity;margin:0 -4px;}
.pronostic-grid{display:flex;flex-wrap:wrap;gap:18px;}

.pronostic-table{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;}
.pronostic-row{
  display:grid;grid-template-columns:76px 1fr auto 1fr 20px;align-items:center;gap:16px;
  padding:14px 22px;color:inherit;text-decoration:none;
  border-bottom:1px solid var(--border);transition:background 0.15s;
}
.pronostic-row:last-child{border-bottom:none;}
.pronostic-row:hover{background:var(--bg-elevated-2);}
.pronostic-row:hover .p-arrow{color:var(--text);}
.p-date{font-size:11.5px;color:var(--text-muted);}
.p-date .status-pill{margin-top:4px;}
.pronostic-team{display:flex;align-items:center;gap:10px;min-width:0;padding:6px 12px;border-radius:9px;
  background:color-mix(in srgb, var(--team-color) 12%, transparent);}
.pronostic-team.home{justify-content:flex-end;text-align:right;border-right:3px solid var(--team-color);}
.pronostic-team.away{justify-content:flex-start;border-left:3px solid var(--team-color);}
/* Page/onglet Pronos : jamais vert/rouge (voir --green/--red plus haut,
   réservés aux victoires/défaites et zones de classement) — le favori et
   l'outsider se distinguent par deux intensités de la même famille marine,
   le nul reste sur le second orange déjà documenté pour les états
   neutres. */
.pronostic-team.tip-favorite{--team-color:var(--navy-900);}
.pronostic-team.tip-underdog{--team-color:var(--gold);}
.pronostic-team.tip-neutral{--team-color:var(--orange);}
.pronostic-team .p-name{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pronostic-score{display:flex;flex-direction:column;align-items:center;gap:5px;flex-shrink:0;min-width:76px;}
.p-outcomes{display:flex;gap:9px;}
.p-outcome{display:flex;flex-direction:column;align-items:center;gap:1px;}
.p-outcome-val{font-size:14px;font-weight:800;letter-spacing:0.01em;}
.p-outcome-lbl{font-size:9px;color:var(--text-muted);letter-spacing:0.04em;}
.p-fav{font-size:10.5px;color:var(--text-muted);white-space:nowrap;}
.p-arrow{font-size:16px;color:var(--text-muted);text-align:right;transition:color 0.15s;}
@media (max-width:700px){
  .pronostic-row{grid-template-columns:1fr auto 1fr;grid-template-areas:"home score away" "date date date";row-gap:10px;padding:14px 10px;}
  .p-date{grid-area:date;text-align:center;}
  .pronostic-team{flex-direction:column;gap:5px;padding:8px 4px;border-width:0 0 3px 0 !important;border-style:solid;border-color:var(--team-color) !important;}
  .pronostic-team.home{grid-area:home;justify-content:flex-start;text-align:center;}
  .pronostic-score{grid-area:score;}
  .pronostic-team.away{grid-area:away;justify-content:flex-start;text-align:center;}
  .p-arrow{display:none;}
  .pronostic-team .p-name{font-size:11px;white-space:normal;line-height:1.25;max-width:100%;overflow:visible;text-overflow:clip;}
}
.m-card{
  display:block;flex:0 0 320px;scroll-snap-align:start;
  background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);
  padding:19px;position:relative;overflow:hidden;
  color:inherit;text-decoration:none;cursor:pointer;
  transition:transform 0.2s, border-color 0.2s;
}
.m-card:hover{transform:translateY(-3px);border-color:var(--accent);}
.m-card:hover .card-link{color:var(--text);}
.m-card::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg, var(--accent-faint), transparent 55%);pointer-events:none;}
.m-card-top{display:flex;justify-content:space-between;font-size:11px;color:var(--text-muted);margin-bottom:14px;position:relative;}
.m-row{display:flex;align-items:center;gap:11px;margin-bottom:9px;position:relative;}
.crest{width:32px;height:32px;border-radius:50%;background:#fff;flex-shrink:0;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.crest img{width:78%;height:78%;object-fit:contain;}
.crest-lg{width:64px;height:64px;}
.crest-sm{width:22px;height:22px;flex-shrink:0;}
.crest-fallback{display:inline-flex;align-items:center;justify-content:center;background:var(--navy-800);color:var(--ivory);font:700 8px 'JetBrains Mono';}
.m-row .name{flex:1;font-size:13.5px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.form-dots{display:flex;gap:3px;flex-shrink:0;}
.form-dots span{width:8px;height:8px;border-radius:50%;display:inline-block;}
.dot-V{background:var(--green);}
.dot-N{background:var(--orange);}
.dot-D{background:var(--red);}

.m-card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:14px;margin-top:14px;border-top:1px solid var(--border);position:relative;}
.m-card-foot .no-trend{font-size:12px;color:var(--text-muted);}
.card-link{display:block;text-align:center;margin-top:14px;padding-top:12px;border-top:1px solid var(--border);font-size:12px;font-weight:600;color:var(--accent-text);position:relative;}
.trend-highlight-label{font-size:9.5px;color:var(--text-muted);letter-spacing:0.05em;margin-bottom:4px;}
.trend-highlight-pct{font-size:26px;font-weight:700;}
.trend-highlight-desc{text-align:right;max-width:150px;}
.trend-highlight-desc .row{display:flex;align-items:center;gap:6px;justify-content:flex-end;margin-bottom:2px;font-size:11px;color:var(--text-secondary);}
.live-indicator{display:flex;align-items:center;justify-content:center;gap:6px;font-size:11.5px;font-weight:700;letter-spacing:0.04em;color:var(--live-red);margin-top:4px;}
.trend-highlight-label.live-indicator{justify-content:flex-start;margin-bottom:4px;}
.trend-highlight-label.pronostic-label{font-size:12.5px;font-weight:800;color:var(--accent-text);letter-spacing:0.03em;margin-bottom:6px;}
.live-dot{width:8px;height:8px;border-radius:50%;background:var(--live-red);flex-shrink:0;display:inline-block;animation:live-pulse 1.4s ease-in-out infinite;}
@keyframes live-pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:0.4;transform:scale(0.75);}}
@media (prefers-reduced-motion: reduce){.live-dot{animation:none;}}

.just-updated{animation:live-flash 0.9s ease-out;border-radius:var(--radius);}
@keyframes live-flash{0%{box-shadow:0 0 0 2px var(--accent);}100%{box-shadow:0 0 0 2px transparent;}}
@media (prefers-reduced-motion: reduce){.just-updated{animation:none;}}
.rel-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block;}
.rel-vert{background:var(--green);}
.rel-orange{background:var(--orange);}
.rel-rouge{background:var(--red);}
.txt-vert{color:var(--green);}
.txt-orange{color:var(--orange);}

/* STANDINGS */
.standings-table{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;}
.st-head,.st-row{
  display:grid;grid-template-columns:36px minmax(0,1fr) 40px 40px 40px 40px 72px 52px;
  column-gap:6px;padding:12px 22px;align-items:center;
}
.st-head{font-size:10.5px;color:var(--text-muted);letter-spacing:0.05em;border-bottom:1px solid var(--border);}
.st-row{font-size:13.5px;border-bottom:1px solid var(--border);}
.st-row:last-child{border-bottom:none;}
.st-row .club{display:flex;align-items:center;gap:9px;font-weight:600;min-width:0;}
.st-row .club-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.st-head>div:first-child,.st-row>div:first-child{text-align:center;}
.st-head>div:nth-child(n+3):nth-child(-n+6),.st-row>div:nth-child(n+3):nth-child(-n+6){text-align:center;}
.st-head>div:nth-child(7),.st-row>div:nth-child(7){text-align:center;}
.st-head>div:last-child,.st-row>div:last-child{text-align:right;}
.st-row.zone-top{background:var(--accent-faint);}
.st-row.zone-bottom{background:var(--red-faint);}
.pos-top{color:var(--accent-text);font-weight:700;}
.pos-bottom{color:var(--red);font-weight:700;}
/* Classement en direct : ligne d'une équipe dont le match est en cours
   (voir app/standings_live.py) — même rouge "live" que partout ailleurs
   sur le site pour le badge, jamais confondu avec --red (zone de
   relégation ci-dessus) ni --green/--red du reste du site. */
.st-row-live{background:color-mix(in srgb, var(--live-red) 6%, transparent);}
.st-row .status-pill-live{margin-left:8px;flex-shrink:0;}
/* Ligne d'une des deux équipes du match affiché sur l'onglet "Classement"
   d'une fiche de match (_match_standings_tab.html) — un simple liseré, pas
   un fond plein, pour ne jamais entrer en conflit visuel avec zone-top/
   zone-bottom/st-row-live qui posent déjà un fond sur la même ligne. */
.st-row-featured{box-shadow:inset 3px 0 0 0 var(--accent);}
.st-row-featured .club-name{font-weight:800;}
/* Score du match en cours, sur la ligne de l'équipe dans le classement
   (voir app/standings_live.py::apply_live_overlay -> live_match_score) —
   couleur du même langage que partout ailleurs sur le site pour un
   résultat (--green/--orange/--red = victoire/nul/défaite, voir .badge-V/
   -N/-D et .dot-V/-N/-D), jamais --live-red qui reste réservé à l'unique
   sens "ce match est en direct" (voir status-pill-live juste au-dessus). */
.live-score-badge{font-size:11px;font-weight:700;margin-left:8px;padding:1px 6px;border-radius:9px;flex-shrink:0;font-family:'JetBrains Mono',monospace;}
.lsb-lead{background:var(--green);color:var(--text-dark);}
.lsb-draw{background:var(--orange);color:var(--text-dark);}
.lsb-trail{background:var(--red);color:#fff;}
.st-delta{font-size:11px;font-weight:700;margin-left:6px;white-space:nowrap;flex-shrink:0;}
.st-delta-up{color:var(--green);}
.st-delta-down{color:var(--red);}
.muted{color:var(--text-secondary);}

.pr-head,.pr-row{grid-template-columns:36px minmax(0,1fr) 40px 40px 64px;}
.pr-row .club img{display:block;}

/* GENERIC CARD */
.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:26px 28px;margin-bottom:22px;}
.card h3{font-size:17px;font-weight:600;margin-bottom:6px;}

/* CLUB PAGE */
.back-link{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:16px;}
.back-link:hover{color:var(--accent-text);}

.club-header{display:flex;align-items:center;gap:18px;flex-wrap:wrap;}
.club-header .club-info{flex:1;min-width:200px;}
.club-header h2{font-size:24px;font-weight:700;margin-bottom:4px;}

.next-match-link{
  display:flex;flex-direction:column;gap:4px;align-items:flex-start;
  background:var(--bg-elevated-2);border:1px solid var(--border);border-radius:12px;
  padding:11px 16px;text-decoration:none;color:inherit;transition:border-color 0.15s;
}
.next-match-link:hover{border-color:var(--accent);color:inherit;}
.next-match-link .nm-label{font-size:10.5px;color:var(--text-muted);letter-spacing:0.05em;text-transform:uppercase;}
.next-match-link .nm-date{font-size:15px;font-weight:700;}
.next-match-link .nm-comp{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);font-weight:600;}

/* Onglets par compétition (fiche joueur) */
.comp-tab-btn{display:inline-flex;align-items:center;gap:7px;}
.comp-tab-logo{width:16px;height:16px;border-radius:50%;background:#fff;object-fit:contain;flex-shrink:0;}
.btn{
  display:inline-block;background:var(--accent);color:#fff;padding:11px 18px;
  border-radius:11px;font-weight:600;font-size:13.5px;text-decoration:none;
}
.btn:hover{color:#fff;opacity:0.9;}

.form-badges{display:flex;gap:7px;margin:10px 0 18px;flex-wrap:wrap;}
.badge{
  display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:50%;font-weight:700;font-size:0.85rem;color:var(--text-dark);
}
.badge-V{background:var(--green);}
.badge-N{background:var(--orange);}
.badge-D{background:var(--red);color:#fff;}

.split-columns{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.split-columns h4{font-size:12px;color:var(--text-muted);letter-spacing:0.05em;margin-bottom:8px;}

.squad-table{width:100%;border-collapse:collapse;font-size:13.5px;}
.squad-table td:first-child{width:36px;padding-right:0;}
.squad-table th{text-align:left;padding:8px 10px;color:var(--text-muted);font-size:11px;letter-spacing:0.04em;border-bottom:1px solid var(--border);font-weight:600;}
.squad-table td{padding:9px 10px;border-bottom:1px solid var(--border);}
.squad-table tr:last-child td{border-bottom:none;}

/* HISTORY */
.history-list{display:flex;flex-direction:column;}
.history-row{
  display:flex;align-items:center;gap:12px;padding:11px 8px;border-bottom:1px solid var(--border);
  border-radius:8px;color:var(--text);transition:background 0.15s;
}
.history-row:hover{background:var(--bg-elevated-2);color:var(--text);}
.history-row:last-child{border-bottom:none;}
.history-row .h-date{font-size:11.5px;color:var(--text-muted);width:78px;flex-shrink:0;}
.history-row .h-venue{font-size:10.5px;color:var(--text-muted);width:56px;flex-shrink:0;text-transform:uppercase;letter-spacing:0.03em;}
.history-row .h-opponent{flex:1;display:flex;align-items:center;gap:9px;min-width:0;font-weight:600;font-size:13.5px;}
.history-row .h-opponent span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.history-row .h-score{font-size:13.5px;font-weight:700;flex-shrink:0;width:52px;text-align:center;}
.history-row .pitch-rating{width:30px;text-align:center;flex-shrink:0;box-shadow:none;}
/* Résultat d'un club suivi en lecture seule (voir app/unfollowed_clubs.py) :
   même ligne que .history-row, mais un <div>, pas un <a> — pas de détail
   de match disponible pour ces clubs (voir app/unfollowed_clubs.py), donc
   rien à ouvrir. Neutralise l'effet de survol hérité de .history-row qui
   suggérerait à tort que la ligne est cliquable. */
.history-row-static:hover{background:none;color:var(--text);cursor:default;}

/* PLAYER PAGE */
.info-grid{display:grid;grid-template-columns:max-content 1fr;gap:8px 20px;margin:16px 0;font-size:14px;}
.info-grid dt{color:var(--text-muted);}
.info-grid dd{margin:0;font-weight:600;}
.notice{
  background:var(--orange-faint);border:1px solid var(--orange);border-radius:12px;
  padding:12px 16px;font-size:13px;color:var(--text-secondary);margin-top:16px;
}
.notice-red{background:var(--red-faint);border-color:var(--red);}

/* AVATAR (photo joueur + repli initiales) */
.avatar{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;overflow:hidden;flex-shrink:0;width:32px;height:32px;
  font-size:11px;font-weight:700;color:#fff;font-family:'Barlow';
}
.avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.avatar-sm{width:24px;height:24px;font-size:9px;}
.avatar-lg{width:72px;height:72px;font-size:22px;}
.avatar-xl{width:96px;height:96px;font-size:28px;}

/* TRANSFERTS */
.transfer-list{display:flex;flex-direction:column;}
.transfer-row{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;
  padding:12px 0;border-bottom:1px solid var(--border);font-size:13.5px;
}
.transfer-row:last-child{border-bottom:none;}
.transfer-date{color:var(--text-muted);font-size:12px;flex-shrink:0;width:82px;}
.transfer-clubs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:200px;}
.transfer-club-name{font-weight:600;}
.transfer-arrow{color:var(--text-muted);}
.transfer-type{font-size:12px;flex-shrink:0;text-align:right;}

@media (max-width: 520px){
  .transfer-date{width:auto;}
  .transfer-row{flex-direction:column;align-items:flex-start;}
}

/* CHARGEMENT ASYNCHRONE (carrière joueur, voir app.js::initCareerLoader) */
.loader-row{display:flex;align-items:center;justify-content:center;gap:10px;padding:22px 0;color:var(--text-muted);font-size:13px;}
.loader-spinner{
  width:18px;height:18px;flex-shrink:0;border-radius:50%;
  border:2.5px solid var(--border-strong);border-top-color:var(--accent);
  animation:loader-spin 0.7s linear infinite;
}
@keyframes loader-spin{to{transform:rotate(360deg);}}

/* CARRIÈRE */
.career-list{display:flex;flex-direction:column;}
.career-row{padding:14px 0;border-bottom:1px solid var(--border);}
.career-row:last-child{border-bottom:none;}
.career-row-current .career-club-name{color:var(--accent,inherit);}
.career-club{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px;}
.career-club-name{font-weight:600;font-size:14px;}
.career-period{font-size:12px;}
.career-stats{grid-template-columns:repeat(4,max-content);gap:4px 22px;margin:6px 0 0;font-size:12.5px;}
.career-stats dt{font-size:11px;}
.career-breakdown{margin:8px 0 0;}
.career-view-switcher{display:grid;grid-template-columns:repeat(2,minmax(110px,160px));gap:4px;width:max-content;max-width:100%;margin:0 0 10px;padding:3px;border:1px solid var(--border);border-radius:10px;background:var(--bg);}
.career-view-switcher .tab-btn{min-height:34px;padding:7px 14px;border-radius:7px;font-size:11px;}
.career-view-panel{display:block;min-width:0;}
.career-view-panel[hidden]{display:none;}
.career-season-list{display:flex;flex-direction:column;}
.career-season-row{display:grid;grid-template-columns:90px minmax(130px,1fr) minmax(240px,auto);align-items:center;gap:8px 18px;padding:12px 2px;border-bottom:1px solid var(--border);}
.career-season-row:last-child{border-bottom:0;}
.career-season-row.career-season-partial{padding-left:8px;border-left:2px solid rgba(224,120,48,.35);}
.career-season-label{font:700 13px 'JetBrains Mono';color:var(--navy-800);}
.career-season-clubs{min-width:0;font-size:12px;font-weight:600;overflow-wrap:anywhere;}
.career-season-stats{color:var(--text-muted);font-size:11px;line-height:1.45;text-align:right;}
.career-season-warning{grid-column:2/-1;color:var(--accent-text);font-size:9px;line-height:1.35;}
@media (max-width: 560px){
  .career-stats{grid-template-columns:repeat(2,max-content);}
}

/* MATCH DETAIL */
.match-hero{padding:8px 0 4px;text-align:center;}
.teams-row{display:flex;align-items:center;justify-content:center;gap:44px;margin:22px 0 10px;flex-wrap:wrap;}
.team-block{width:170px;text-align:center;}
.team-block .tname{font-size:16px;font-weight:600;margin-top:10px;}
.team-block .tmeta{font-size:11.5px;color:var(--text-muted);margin-top:3px;}
.vs{font-family:'Archivo Black';font-weight:400;font-size:28px;color:var(--text-muted);}

.teams-analysis{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-top:30px;}
.team-analysis{background:var(--bg-elevated);padding:30px 34px;}
.analysis-head{display:flex;align-items:center;gap:10px;margin-bottom:6px;}
.analysis-head h4{font-size:16px;font-weight:600;}
.form-line{font-size:11.5px;color:var(--text-muted);margin-bottom:20px;display:flex;align-items:center;gap:4px;flex-wrap:wrap;}

.absence-list{display:flex;flex-direction:column;}
.absence-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);font-size:13.5px;}
.absence-row:last-child{border-bottom:none;}
.absence-reason{font-size:11.5px;flex-shrink:0;}

.featured-trend{border-radius:13px;padding:16px 18px;margin-bottom:22px;border:1px solid;}
.featured-trend.rel-vert-bg{background:var(--green-faint);border-color:var(--green);}
.featured-trend.rel-orange-bg{background:var(--orange-faint);border-color:var(--orange);}
.ft-label{display:flex;align-items:center;gap:7px;font-size:9.5px;letter-spacing:0.07em;font-weight:700;margin-bottom:9px;}
.ft-body{display:flex;align-items:baseline;justify-content:space-between;gap:12px;}
.ft-stat{font-size:14.5px;font-weight:600;}
.ft-pct{font-size:21px;font-weight:700;flex-shrink:0;}
.ft-sample{font-size:11px;color:var(--text-muted);margin-top:2px;}
.no-featured{font-size:13px;color:var(--text-muted);margin-bottom:22px;}

.trend-caption{font-size:10.5px;color:var(--text-muted);letter-spacing:0.05em;margin-bottom:12px;}
.trend-item{margin-bottom:13px;}
.trend-item .tr-top{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px;}
.trend-item .tr-pct{font-weight:600;}
.trend-track{height:6px;border-radius:4px;background:var(--bg-elevated-2);overflow:hidden;}
.trend-fill{height:100%;}

.pronostic-card{padding-top:24px;}
.pronostic-lead{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:16px;font-weight:600;margin-bottom:18px;}
.pronostic-published-note{font-size:11.5px;margin:-12px 0 18px;}
.pronostic-live-badge.live-indicator{justify-content:flex-start;margin:0 0 14px;}
.pronostic-lead-pct{font-size:23px;font-weight:700;color:var(--accent-text);flex-shrink:0;}
.pronostic-bar{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--bg-elevated-2);margin-bottom:9px;}
.pronostic-seg-home{background:var(--accent);}
.pronostic-seg-draw{background:var(--orange);}
.pronostic-seg-away{background:var(--gold);}
.pronostic-bar-labels{display:flex;justify-content:space-between;gap:10px;font-size:11.5px;color:var(--text-secondary);margin-bottom:24px;}
.pronostic-stats{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px;}
.pronostic-stat{background:var(--bg-elevated-2);border:1px solid var(--border);border-radius:12px;padding:16px 18px;text-align:center;}
.pronostic-stat-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:7px;}
.pronostic-stat-value{font-size:23px;font-weight:700;}
.pronostic-stat-sub{font-size:11px;margin-top:4px;}
.pronostic-stat-top{border-color:var(--orange);background:var(--orange-faint);}
.pronostic-stat-top .pronostic-stat-value{color:var(--orange);}
.pronostic-section-title{font-size:10.5px;color:var(--text-muted);letter-spacing:0.05em;text-transform:uppercase;margin:22px 0 12px;}
.pronostic-stats-wrap{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));}
.pronostic-disclaimer{font-size:12px;margin-top:18px;}
.history-row{display:grid;grid-template-columns:minmax(0,1.6fr) repeat(4,1fr);column-gap:6px;padding:12px 22px;align-items:center;border-bottom:1px solid var(--border);font-size:13.5px;}
.history-row:last-child{border-bottom:none;}
.history-head{font-size:10.5px;color:var(--text-muted);letter-spacing:0.05em;}
.history-row>div:not(:first-child){text-align:center;}
@media (max-width:640px){
  .pronostic-bar-labels{flex-direction:column;gap:3px;}
}

.h2h-list{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;}
.h2h-row{display:flex;justify-content:space-between;padding:13px 22px;font-size:13.5px;border-bottom:1px solid var(--border);}
.h2h-row:last-child{border-bottom:none;}
.h2h-row .d{color:var(--text-muted);}
.h2h-teams{display:flex;align-items:center;gap:12px;}
.h2h-score{font-weight:700;min-width:38px;text-align:center;}

/* MATCH REPORT — events, 2 colonnes domicile/extérieur */
.events-columns{display:grid;grid-template-columns:1fr 1fr;gap:0;}
.events-col{padding:0 20px;border-right:1px solid var(--border);}
.events-col:last-child{border-right:none;}
.events-col-head{
  display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;
  padding-bottom:12px;margin-bottom:4px;border-bottom:1px solid var(--border-strong);
}
.events-col-away{padding-right:0;}
.events-col-away .events-col-head{flex-direction:row-reverse;justify-content:flex-end;}
.events-col-away .ev2-row{flex-direction:row-reverse;text-align:right;}
.events-col-away .ev2-body > div{justify-content:flex-end;}

.ev2-row{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);font-size:13px;}
.ev2-row:last-child{border-bottom:none;}
.ev2-min{width:32px;flex-shrink:0;color:var(--text-muted);padding-top:1px;}
.ev2-icon{flex-shrink:0;padding-top:1px;color:var(--text-secondary);}
.ev2-icon-goal{color:var(--green);}
.ev2-body{flex:1;min-width:0;line-height:1.5;}
.ev2-score{font-weight:700;color:var(--text-muted);font-size:11.5px;}
.ev2-sub-in{color:var(--green);font-weight:600;}
.ev2-sub-out{font-size:12px;}
.card-icon{display:inline-block;width:9px;height:13px;border-radius:2px;flex-shrink:0;margin-top:2px;}
.card-icon-yellow{background:var(--card-yellow);border:1px solid rgba(27,35,51,0.25);}
.card-icon-red{background:var(--red);}
.ev-type-var{font-size:10.5px;letter-spacing:0.03em;padding:3px 9px;border-radius:20px;flex-shrink:0;white-space:nowrap;background:var(--accent-faint);color:var(--accent-text);}
.half-divider{
  text-align:center;font-size:10.5px;letter-spacing:0.08em;color:var(--text-muted);
  font-family:'JetBrains Mono';padding:12px 0;font-weight:600;
}

/* MATCH REPORT — frise chronologique des événements (buts/cartons/
   remplacements) sur un axe 0-90+ minutes. Équipe domicile au-dessus de
   l'axe, extérieur en dessous — même principe que les colonnes de
   l'onglet Événements, juste situé dans le temps. Positionnement en %
   (comme le terrain schématique, voir .pitch-player) : reste lisible en
   se rétrécissant avec le conteneur, jamais de débordement horizontal. */
.event-timeline-card{padding:20px 26px 14px;}
.event-timeline{position:relative;height:88px;margin:8px 6px 0;}
.event-timeline-axis{position:absolute;top:50%;left:0;right:0;height:2px;background:var(--border-strong);transform:translateY(-1px);}
.event-timeline-half{position:absolute;top:10px;bottom:10px;border-left:1px dashed var(--border-strong);}
.event-timeline-marker{
  position:absolute;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:3px;cursor:default;
}
.event-timeline-marker-home{bottom:50%;}
.event-timeline-marker-away{top:50%;flex-direction:column-reverse;}
.event-timeline-icon{
  display:flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;
  border-radius:50%;background:var(--cream-card);border:1.5px solid var(--border-strong);
  color:var(--text-dark);box-shadow:0 2px 5px rgba(27,35,51,0.12);
}
.event-timeline-icon-goal{color:var(--green);}
.event-timeline-marker-home .event-timeline-icon{border-color:var(--navy-900);}
.event-timeline-marker-away .event-timeline-icon{border-color:var(--brand-orange);}
.event-timeline-stem{width:1px;height:14px;background:var(--border-strong);flex-shrink:0;}
.event-timeline-labels{display:flex;justify-content:space-between;font-size:10px;color:var(--text-muted);margin-top:6px;font-family:'JetBrains Mono';}
.event-timeline-legend{display:flex;justify-content:center;gap:22px;font-size:11px;color:var(--text-secondary);margin-top:14px;}
.event-timeline-legend span{display:inline-flex;align-items:center;gap:6px;}
.event-timeline-legend-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.event-timeline-legend-dot-home{background:var(--navy-900);}
.event-timeline-legend-dot-away{background:var(--brand-orange);}
@media (max-width:560px){
  .event-timeline-card{padding:16px 14px 10px;}
  .event-timeline{height:76px;margin:6px 2px 0;}
  .event-timeline-icon{width:19px;height:19px;}
  .event-timeline-icon svg{width:12px;height:12px;}
  .event-timeline-legend{gap:16px;font-size:10px;}
}

/* MATCH REPORT — stats en barres comparatives */
.cstats-head{display:flex;justify-content:space-between;padding-bottom:16px;margin-bottom:8px;border-bottom:1px solid var(--border);}
.cstat{margin-bottom:18px;}
.cstat:last-child{margin-bottom:0;}
.cstat-label{text-align:center;font-size:11px;color:var(--text-muted);letter-spacing:0.04em;margin-bottom:7px;}
.cstat-row{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:12px;}
.cstat-val{font-weight:700;font-size:14px;}
.cstat-val-home{text-align:right;color:var(--accent-text);}
.cstat-val-away{text-align:left;color:var(--gold);}
.cstat-bar{display:flex;height:9px;border-radius:5px;overflow:hidden;background:var(--bg-elevated-2);}
.cstat-fill-home{background:var(--accent);}
.cstat-fill-away{background:var(--gold);}

/* MATCH REPORT — résumé vidéo (vignette + lien externe, YouTube n'autorise pas
   l'intégration iframe des vidéos officielles Ligue 1) */
.video-card{
  display:flex;gap:18px;align-items:center;padding:16px;text-decoration:none;color:inherit;
  transition:border-color 0.15s;
}
.video-card:hover{border-color:var(--accent);color:inherit;}
.video-thumb{position:relative;width:220px;flex-shrink:0;border-radius:10px;overflow:hidden;aspect-ratio:16/9;background:#000;}
.video-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.video-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;}
.video-info{flex:1;min-width:0;}
.video-title{font-weight:600;font-size:14px;margin-bottom:8px;line-height:1.4;}
.video-cta{font-size:12.5px;color:var(--accent-text);font-weight:600;}

/* GALERIE DE RESUMES (/resumes) */
.resumes-league-label{
  display:inline-block;font-size:11px;font-weight:700;letter-spacing:0.04em;color:var(--text-muted);
  text-transform:uppercase;margin:18px 0 12px;padding-bottom:6px;border-bottom:1px solid var(--border);
}
.video-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(240px, 1fr));gap:16px;margin-bottom:8px;}
.video-gallery-card{padding:0;margin-bottom:0;overflow:hidden;display:block;}
.video-gallery-card .video-thumb{width:100%;border-radius:0;aspect-ratio:16/9;}
.video-gallery-card .vg-teams{display:flex;align-items:center;gap:7px;padding:12px;font-size:12.5px;font-weight:600;}
.video-gallery-card .vg-team-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.video-gallery-card .vg-score{flex-shrink:0;font-weight:700;}
.video-gallery-card .muted{padding:0 12px 12px;margin-top:-8px;}

.video-gallery-card-compilation{display:block;}
.video-thumb-link{display:block;}
.video-thumb-link .video-thumb{width:100%;border-radius:0;aspect-ratio:16/9;}
.vg-compilation-title{padding:12px 12px 6px;font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.02em;}
.vg-compilation-matches{display:flex;flex-direction:column;}
.vg-compilation-match{display:flex;align-items:center;gap:7px;padding:8px 12px;font-size:12.5px;font-weight:600;color:inherit;text-decoration:none;border-top:1px solid var(--border);}
.vg-compilation-match:hover{background:var(--bg);color:inherit;}
.vg-compilation-match .vg-team-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.vg-compilation-match .vg-score{flex-shrink:0;font-weight:700;}

/* REPLAY AFTER FOOT (page championnat) — délibérément distincte de la
   galerie "Résumés vidéo" ci-dessus (pas de card englobante là-bas) : un
   bandeau orange en haut de bloc + un sous-titre "Débrief After Foot
   [Pays]" avec drapeau, pour qu'on ne confonde jamais les deux sources en
   un coup d'œil — l'une résume un match précis, l'autre est un débrief
   d'émission qui peut couvrir plusieurs sujets à la fois. */
.afterfoot-section{margin:40px 0 22px;padding-top:20px;border-top:3px solid var(--brand-orange);}
.afterfoot-section .section-title{margin-top:0;}
.afterfoot-subtitle{
  display:flex;align-items:center;gap:9px;margin:-6px 0 16px;
  font-family:'Archivo Black',system-ui,sans-serif;font-weight:400;font-size:14px;color:var(--text-dark);
}
.afterfoot-flag{width:22px;height:15px;object-fit:cover;border-radius:2px;border:1px solid var(--border-strong);flex-shrink:0;}
.afterfoot-video-title{
  padding:10px 12px 14px;font-size:12.5px;font-weight:600;line-height:1.35;color:var(--text-dark);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}

@media (max-width: 560px){
  .video-card{flex-direction:column;align-items:stretch;}
  .video-thumb{width:100%;}
}

/* MATCH REPORT — terrain schématique, en portrait (une équipe en bas
   attaquant vers le haut, l'autre en haut attaquant vers le bas — voir
   app/pitch.py pour le pourquoi de ce sens). Même mise en page à toutes
   les tailles d'écran : la contrainte de largeur ne porte plus que sur
   UNE ligne de joueurs à la fois (4-5, la défense au pire), jamais sur les
   11 titulaires d'une équipe compressés d'un bord à l'autre comme en
   paysage — plus besoin d'un second agencement dédié au mobile. */
.pitch-card{padding:20px;}
.pitch-formations{
  display:flex;justify-content:space-between;align-items:center;font-size:12.5px;font-weight:600;
  margin-bottom:12px;color:var(--text-secondary);
}
.pitch-formations .crest{display:inline-flex;vertical-align:middle;margin:0 4px;}
.pitch{
  position:relative;width:100%;aspect-ratio:2/3;border-radius:12px;overflow:hidden;
  background:
    repeating-linear-gradient(0deg, rgba(255,255,255,0.05) 0, rgba(255,255,255,0.05) 1px, transparent 1px, transparent 10%),
    linear-gradient(160deg, #1c5e2e, #16481f 60%, #123d1a);
}
.pitch-lines{position:absolute;inset:0;width:100%;height:100%;}
.pitch-player{
  position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;
  align-items:center;gap:3px;width:64px;
}
.pitch-player-link{display:flex;flex-direction:column;align-items:center;gap:3px;text-decoration:none;}
.pitch-player-out .pitch-player-link{opacity:0.4;}
/* Indicateur "remplacé" sur le terrain : un simple badge dans le coin de
   l'avatar (même langage visuel que le badge de but ci-dessous), jamais de
   texte détaillé superposé (nom de l'entrant, minute) — illisible sur
   petit écran une fois plusieurs changements groupés dans la même zone du
   terrain. Le détail complet (entrant, sortant, minute) vit désormais dans
   la liste "Changements" sous le terrain, seule source de cette
   information — même comportement, sur tous les écrans. */
.pitch-sub-badge{
  position:absolute;bottom:-4px;left:-4px;min-width:15px;height:15px;padding:0 2px;
  border-radius:8px;background:var(--bg-elevated-3);border:1px solid rgba(255,255,255,0.35);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 1px 4px rgba(0,0,0,0.5);
}
.pitch-sub-badge svg{width:9px;height:9px;flex-shrink:0;}
.pitch-avatar-wrap{position:relative;flex-shrink:0;}
.pitch-avatar{box-shadow:0 3px 8px rgba(0,0,0,0.45);border:1px solid rgba(255,255,255,0.25);}
.pitch-jersey-badge{
  position:absolute;bottom:-3px;right:-3px;min-width:15px;height:15px;padding:0 2px;
  border-radius:8px;background:var(--bg-elevated-3);border:1px solid rgba(255,255,255,0.35);
  font-family:'JetBrains Mono';font-size:8.5px;font-weight:700;color:#fff;
  display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px rgba(0,0,0,0.5);
}
.pitch-goal-badge{
  position:absolute;top:-4px;left:-4px;min-width:15px;height:15px;padding:0 2px;
  border-radius:8px;background:var(--bg-elevated-3);border:1px solid rgba(255,255,255,0.35);
  color:#fff;display:flex;align-items:center;justify-content:center;gap:1px;
  box-shadow:0 1px 4px rgba(0,0,0,0.5);
}
.pitch-goal-badge svg{width:10px;height:10px;flex-shrink:0;}
.pitch-goal-badge .mono{font-size:8px;font-weight:700;}
.pitch-top{display:flex;align-items:center;gap:3px;}
.pitch-rating{
  font-family:'JetBrains Mono';font-size:9.5px;font-weight:700;padding:1.5px 4px;border-radius:5px;
  color:#fff;box-shadow:0 2px 6px rgba(0,0,0,0.4);flex-shrink:0;
}
.pitch-rating.rating-vert{background:var(--green);}
.pitch-rating.rating-orange{background:var(--orange);}
.pitch-rating.rating-rouge{background:var(--red);}
.pitch-name{
  font-size:9px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,0.9);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;max-width:64px;text-align:center;font-weight:600;
}

/* Terrain interactif Mammouth Draft (marché aux enchères) — réutilise
   .pitch/.pitch-lines/.pitch-player/.pitch-avatar-wrap/.pitch-name tels
   quels (même identité visuelle que les compos de match), seules les
   cases elles-mêmes (vides ou occupées) sont propres à cet usage. Voir
   web/static/app.js::initDraftPitch. */
.draft-pitch-slot-placeholder{
  width:32px;height:32px;border-radius:50%;border:2px dashed rgba(255,255,255,0.4);
  display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,0.6);
  font-family:'JetBrains Mono';font-size:12px;font-weight:700;
}
.draft-pitch-slot-filled{
  cursor:grab;touch-action:none; /* touch-action:none : indispensable pour qu'un doigt puisse glisser
     la case sans que le navigateur ne déclenche son propre défilement de page à la place. */
}
.draft-pitch-slot-filled:active{cursor:grabbing;}
.draft-pitch-remove{
  position:absolute;top:-6px;right:10px;width:18px;height:18px;border-radius:50%;
  background:var(--red);color:#fff;border:1px solid rgba(255,255,255,0.6);font-size:12px;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;z-index:2;
}
.draft-pitch-dragging{opacity:0.45;z-index:5;}
.draft-pitch-drop-target{outline:2px solid var(--draft-gold,#F2B705);outline-offset:3px;border-radius:14px;}

@media (max-width: 560px){
  .pitch-player{width:52px;}
  .pitch-name{font-size:8px;max-width:52px;}
  .pitch-jersey-badge{min-width:13px;height:13px;font-size:7.5px;}
  .pitch-rating{font-size:8.5px;padding:1px 3px;}
  .draft-pitch-slot-placeholder{width:26px;height:26px;font-size:10px;}
}

/* Détail des changements, sous le terrain — même contenu et même mise en
   page quel que soit l'écran (mobile compris) : c'est justement l'absence
   d'un tel emplacement dédié qui obligeait à tout superposer sur le
   terrain lui-même. */
.subs-list{margin-top:16px;border-top:1px solid var(--border);padding-top:14px;}
.subs-list-title{font-size:10.5px;color:var(--text-muted);letter-spacing:0.05em;text-transform:uppercase;margin-bottom:10px;}
.subs-row{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:13px;}
.subs-row-minute{width:32px;flex-shrink:0;color:var(--text-muted);}
.subs-row-icon{flex-shrink:0;display:flex;color:var(--text-secondary);}
.subs-row-crest{flex-shrink:0;}
.subs-row-names{min-width:0;line-height:1.4;}
.subs-row-in{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.subs-row-out{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* MATCH REPORT — lineups */
.lineup-list{display:flex;flex-direction:column;}
.lineup-row{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:13.5px;}
.lineup-num{width:22px;color:var(--text-muted);flex-shrink:0;}
.lineup-row a{font-weight:600;}
.lineup-pos{margin-left:auto;font-size:10.5px;flex-shrink:0;}
.cstat-no-bar{text-align:center;color:var(--text-muted);}

/* LOT 3 — fiche Match mobile unifiée. Le rendu desktop historique reste
   séparé afin de ne pas déplacer ses onglets ni ses interactions. */
.match-mobile-view,.club-mobile-view,.player-mobile-view{display:none;}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}

@media (max-width: 620px){
  .events-columns{grid-template-columns:1fr;}
  .events-col{border-right:none;border-bottom:1px solid var(--border);padding:0 4px 8px;margin-bottom:8px;}
  .events-col-away{padding-left:4px;}
  .events-col-away .events-col-head{flex-direction:row;justify-content:flex-start;}
  .events-col-away .ev2-row{flex-direction:row;text-align:left;}
  .events-col-away .ev2-body > div{justify-content:flex-start;}
  .cstat-row{grid-template-columns:38px 1fr 38px;gap:8px;}
}

/* LOT 2 — surfaces mobile Accueil, Direct et Compétitions. Les variantes
   restent complètement séparées du rendu desktop existant. */
.mobile-lot2,.mobile-matchday-cards,.pronostics-mobile-view{display:none;}
.mobile-page-hero{padding:54px 0 34px;max-width:680px;}
.mobile-page-hero h1{font-size:42px;line-height:1.05;margin:7px 0 10px;}
.mobile-page-hero p{color:var(--text-secondary);line-height:1.55;}
.competition-directory{padding-bottom:40px;}
.competition-directory-group{margin-bottom:32px;}
.competition-directory-group h2{font-size:14px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:12px;}
.competition-directory-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.competition-directory-card{display:flex;align-items:center;gap:14px;min-height:86px;padding:16px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:14px;color:var(--text);text-decoration:none;}
.competition-directory-card:hover{border-color:var(--accent);transform:translateY(-1px);}
.competition-directory-emblem{display:flex;align-items:center;justify-content:center;width:48px;height:48px;flex:0 0 48px;border-radius:12px;background:#fff;border:1px solid var(--border);font-weight:700;font-size:12px;overflow:hidden;}
.competition-directory-emblem img{width:38px;height:38px;object-fit:contain;}
.competition-directory-card strong,.competition-directory-card small{display:block;}
.competition-directory-card small{margin-top:3px;color:var(--text-muted);font-size:12px;}
.competition-directory-arrow{margin-left:auto;font-size:25px;color:var(--text-muted);}

/* RESPONSIVE */
@media (max-width: 760px){
  .pronostics-desktop-view{display:none;}
  .pronostics-mobile-view{display:block;margin:0 -18px;padding-bottom:10px;}
  .mobile-predictions-header{padding:25px 18px 17px;background:linear-gradient(155deg,var(--navy-900),var(--navy-800));color:var(--ivory);}
  .mobile-predictions-header .mobile-eyebrow{color:rgba(242,238,227,.66);}
  .mobile-predictions-header h1{margin:4px 0 7px;color:var(--ivory);font-size:27px;line-height:1.05;letter-spacing:-.025em;}
  .mobile-predictions-header p{max-width:390px;margin:0;color:rgba(242,238,227,.75);font-size:12.5px;line-height:1.45;}
  .mobile-prediction-selector{display:flex;gap:7px;overflow-x:auto;padding:11px 18px 12px;background:var(--bg-elevated);border-bottom:1px solid var(--border);scrollbar-width:none;scroll-snap-type:x proximity;}
  .mobile-prediction-selector::-webkit-scrollbar{display:none;}
  .mobile-prediction-selector a{display:flex;min-height:36px;align-items:center;flex:0 0 auto;padding:8px 11px;border:1px solid var(--border);border-radius:999px;background:var(--bg-elevated-2);color:var(--text-secondary);font-size:11px;font-weight:700;line-height:1;text-decoration:none;scroll-snap-align:start;}
  .mobile-prediction-selector a.active{border-color:var(--accent);background:var(--accent);color:#fff;}
  .mobile-prediction-section{padding:20px 18px 3px;}
  .mobile-prediction-section+.mobile-prediction-section{padding-top:25px;}
  .mobile-prediction-section-scoped{padding-top:21px;}
  .mobile-prediction-section .mobile-section-head{align-items:center;margin-bottom:10px;}
  .mobile-prediction-section .mobile-section-head h2{font-size:18px;}
  .mobile-prediction-section .mobile-section-head .crest{flex:0 0 auto;}
  .mobile-prediction-section .mobile-section-head>a{display:flex;min-height:36px;align-items:center;}
  .mobile-predictions-disclaimer{margin:20px 18px 5px;padding:12px 13px;border-left:3px solid var(--orange);background:var(--orange-faint);color:var(--text-muted);font-size:10.5px;line-height:1.45;}
  .pronostics-mobile-view>.mobile-empty-state{margin:20px 18px;}

  .match-desktop-view{display:none;}
  .match-mobile-view{display:block;margin:0 -18px;}
  .mobile-match-hero{position:relative;padding:18px 18px 16px;background:linear-gradient(155deg,var(--navy-900),var(--navy-800));color:var(--ivory);border-bottom:1px solid rgba(255,255,255,.12);}
  .mobile-match-context{display:flex;justify-content:center;gap:6px;color:rgba(242,238,227,.72);font-size:10px;text-transform:uppercase;letter-spacing:.07em;text-align:center;}
  .mobile-match-hero-teams{display:grid;grid-template-columns:minmax(0,1fr) 104px minmax(0,1fr);align-items:start;gap:7px;margin-top:18px;}
  .mobile-match-team{display:flex;min-width:0;flex-direction:column;align-items:center;gap:8px;color:var(--ivory);text-align:center;text-decoration:none;}
  .mobile-match-team strong{width:100%;font-size:12px;line-height:1.2;overflow-wrap:anywhere;}
  .mobile-match-crest{width:48px;height:48px;border-radius:50%;background:#fff;border:2px solid rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;overflow:hidden;}
  .mobile-match-crest img{width:40px;height:40px;object-fit:contain;}
  .mobile-match-score-wrap{text-align:center;min-width:0;}
  .mobile-match-kickoff,.mobile-match-score{font-size:28px;font-weight:800;line-height:1;letter-spacing:-.04em;}
  .mobile-match-score{display:flex;justify-content:center;gap:9px;font-size:32px;}
  .mobile-match-score span{color:rgba(242,238,227,.48);font-weight:400;}
  .mobile-match-score-missing{display:block;color:rgba(242,238,227,.6);}
  .mobile-match-date,.mobile-match-score-detail{margin-top:6px;color:rgba(242,238,227,.72);font-size:9.5px;line-height:1.25;}
  .mobile-match-status{margin-top:6px;color:rgba(242,238,227,.75);font-size:9px;font-weight:800;letter-spacing:.08em;}
  .mobile-match-status-live{display:flex;align-items:center;justify-content:center;color:#fff;}
  .mobile-match-tabs{display:flex;gap:2px;margin:0;padding:0 12px;background:var(--bg-elevated);border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none;position:sticky;top:60px;z-index:8;}
  .mobile-match-tabs::-webkit-scrollbar{display:none;}
  .mobile-match-tabs .tab-btn{padding:12px 10px;font-size:11px;}
  .match-mobile-view [data-tab-panel]{padding:14px 18px 8px;}
  .mobile-match-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  .mobile-match-summary-grid>div{min-width:0;padding:12px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;}
  .mobile-match-summary-grid span,.mobile-match-summary-grid strong{display:block;}
  .mobile-match-summary-grid span{margin-bottom:4px;color:var(--text-muted);font-size:9px;text-transform:uppercase;letter-spacing:.06em;}
  .mobile-match-summary-grid strong{font-size:12px;line-height:1.35;}
  .mobile-match-absences{margin-top:12px;padding:14px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;}
  .mobile-match-absences h3{font-size:13px;margin-bottom:10px;}
  .mobile-match-absences h4{margin:10px 0 4px;font-size:10px;color:var(--text-muted);text-transform:uppercase;}
  .mobile-match-absence{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px;}
  .mobile-match-absence:last-child{border-bottom:0;}
  .mobile-match-absence small{color:var(--text-muted);text-align:right;}
  .mobile-match-empty{padding:18px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;color:var(--text-muted);font-size:12px;text-align:center;}
  .mobile-form-teams{display:flex;flex-direction:column;gap:12px;}
  .mobile-form-team{overflow:hidden;background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;}
  .mobile-form-team h3{display:flex;align-items:center;gap:8px;padding:12px 13px;border-bottom:1px solid var(--border);font-size:13px;}
  .mobile-form-match{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--border);color:var(--text);text-decoration:none;font-size:12px;}
  .mobile-form-match:last-child{border-bottom:0;}
  .mobile-form-match span:nth-child(2){min-width:0;}
  .mobile-form-match strong,.mobile-form-match small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .mobile-form-match small{margin-top:2px;color:var(--text-muted);font-size:9.5px;}
  .form-dot{display:flex;width:21px;height:21px;align-items:center;justify-content:center;border-radius:50%;color:#fff;font:700 9px 'JetBrains Mono';}
  .form-dot.w{background:var(--green);}.form-dot.d{background:var(--orange);}.form-dot.l{background:var(--red);}
  .mobile-h2h-list{overflow:hidden;background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;}
  .mobile-h2h-row{display:grid;grid-template-columns:72px minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:7px;padding:10px;border-bottom:1px solid var(--border);font-size:10.5px;}
  .mobile-h2h-row:last-child{border-bottom:0;}.mobile-h2h-row time{color:var(--text-muted);font-size:9px;}.mobile-h2h-row span:last-child{text-align:right;}
  .mobile-timeline-head{display:flex;justify-content:space-between;padding:0 8px 8px;color:var(--text-muted);font-size:10px;font-weight:700;}
  .mobile-timeline-period{overflow:hidden;margin-bottom:10px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;}
  .mobile-timeline-period h3{display:flex;justify-content:space-between;padding:9px 12px;background:var(--bg-elevated-2);font-size:9.5px;text-transform:uppercase;letter-spacing:.07em;}
  .mobile-timeline-event{display:grid;grid-template-columns:minmax(0,1fr) 29px 34px minmax(0,1fr);min-height:48px;align-items:center;border-bottom:1px solid var(--border);font-size:11px;}
  .mobile-timeline-event:last-child{border-bottom:0;}
  .mobile-timeline-event-home .mobile-timeline-minute{grid-column:3;grid-row:1;text-align:center;}
  .mobile-timeline-event-home .mobile-timeline-marker{grid-column:2;grid-row:1;}
  .mobile-timeline-event-home .mobile-timeline-body{grid-column:1;grid-row:1;text-align:right;align-items:flex-end;}
  .mobile-timeline-event-away .mobile-timeline-minute{grid-column:2;grid-row:1;text-align:center;}
  .mobile-timeline-event-away .mobile-timeline-marker{grid-column:3;grid-row:1;}
  .mobile-timeline-event-away .mobile-timeline-body{grid-column:4;grid-row:1;align-items:flex-start;}
  .mobile-timeline-marker{display:flex;align-items:center;justify-content:center;min-height:48px;border-left:1px solid var(--border);border-right:1px solid var(--border);}
  .mobile-timeline-marker svg{width:13px;height:13px;}
  .mobile-timeline-body{display:flex;min-width:0;flex-direction:column;padding:7px;line-height:1.3;}
  .mobile-timeline-body strong,.mobile-timeline-body small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .mobile-timeline-body small{color:var(--text-muted);font-size:9px;}.mobile-timeline-score{color:var(--text-muted);font-size:9px;}
  .mobile-timeline-minute{color:var(--text-muted);font-size:9px;}
  .mobile-match-stats{overflow:hidden;background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;}
  .mobile-match-stats-head{display:flex;justify-content:space-between;padding:11px 12px;background:var(--bg-elevated-2);font-size:10px;}
  .mobile-match-stat{padding:10px 12px;border-bottom:1px solid var(--border);}.mobile-match-stat:last-child{border-bottom:0;}
  .mobile-match-stat-values{display:grid;grid-template-columns:45px minmax(0,1fr) 45px;align-items:center;text-align:center;font-size:10px;}.mobile-match-stat-values strong:first-child{text-align:left;}.mobile-match-stat-values strong:last-child{text-align:right;}
  .mobile-match-stat-bar{display:flex;height:5px;margin-top:7px;overflow:hidden;border-radius:4px;background:var(--bg-elevated-2);}.mobile-match-stat-bar i{background:var(--accent);}.mobile-match-stat-bar b{background:var(--gold);}
  .match-mobile-view .pitch-card{margin:0;padding:12px;}.match-mobile-view .pitch-formations{font-size:9px;gap:5px;}.match-mobile-view .pitch{border-radius:9px;}
  .match-mobile-view .pronostic-card{margin:0;}.match-mobile-view .pronostic-lead{font-size:14px;}.match-mobile-view .pronostic-stat{padding:12px 8px;}.match-mobile-view .pronostic-stat-value{font-size:19px;}
  .pronostic-published-note{padding:9px 10px;border-left:3px solid var(--orange);background:var(--orange-faint);color:var(--text-secondary);line-height:1.4;}
  .pronostic-published-note strong{color:var(--orange);font-size:10px;letter-spacing:.05em;}
  .match-mobile-view .comments-section{margin:0;}
  .match-mobile-view .mobile-standing-list{margin:0;}
  .club-desktop-view{display:none;}
  .club-mobile-view{display:block;margin:0 -18px;}
  .mobile-club-hero{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;padding:17px 18px 15px;background:linear-gradient(155deg,var(--navy-900),var(--navy-800));color:var(--ivory);align-items:center;}
  .mobile-club-crest{width:64px;height:64px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;overflow:hidden;border:2px solid rgba(255,255,255,.35);}.mobile-club-crest img{width:54px;height:54px;object-fit:contain;}
  .mobile-club-identity{min-width:0}.mobile-club-identity h1{font-size:19px;line-height:1.1;margin:0 0 5px;overflow-wrap:anywhere}.mobile-club-identity p{margin:0;font-size:11px}.mobile-club-identity a{color:rgba(255,255,255,.76);text-decoration:none}
  .mobile-club-standing{grid-column:1/-1;display:flex;justify-content:space-between;gap:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.14);font-size:11px}.mobile-club-standing span{color:rgba(255,255,255,.72)}
  .mobile-club-tabs{display:flex;overflow-x:auto;background:var(--bg-elevated);border-bottom:1px solid var(--border);scrollbar-width:none}.mobile-club-tabs::-webkit-scrollbar{display:none}.mobile-club-tabs .tab-btn{flex:1;min-width:max-content;padding:12px 13px}
  .club-mobile-view>[data-tab-panel]{padding:14px 18px 8px}.mobile-club-section{margin:0 0 14px}.mobile-club-section>h2{font-size:13px;text-transform:uppercase;letter-spacing:.055em;margin:0 0 8px;color:var(--navy-800)}.mobile-club-section>h3,.mobile-club-competition h3{font-size:11px;text-transform:uppercase;color:var(--text-muted);margin:12px 0 7px}.mobile-club-section .mobile-match-card{margin-bottom:8px}
  .mobile-club-form,.mobile-squad-list,.mobile-club-performance{border:1px solid var(--border);border-radius:11px;overflow:hidden;background:var(--surface)}
  .mobile-club-form-row,.mobile-club-last{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:9px;padding:10px 11px;border-bottom:1px solid var(--border);color:inherit;text-decoration:none}.mobile-club-form-row:last-child{border-bottom:0}.mobile-club-form-row small,.mobile-club-last small{display:block;color:var(--text-muted);font-size:10px;margin-top:2px}.mobile-club-form-match{color:inherit;text-decoration:none;min-width:0}.mobile-club-opponent{display:flex}.mobile-club-last{border:1px solid var(--border);border-radius:11px;background:var(--surface);grid-template-columns:auto minmax(0,1fr) auto}
  .mobile-club-rank{padding:13px;border:1px solid var(--border);border-radius:11px;background:var(--surface)}.mobile-club-rank>strong{font-size:18px}.mobile-club-rank>div{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.mobile-club-rank span{padding:5px 7px;border-radius:6px;background:var(--bg-elevated-2);font-size:10px}
  .mobile-squad-player{display:flex;align-items:center;gap:10px;padding:10px 11px;border-bottom:1px solid var(--border);color:inherit;text-decoration:none}.mobile-squad-player:last-child{border-bottom:0}.mobile-squad-name{min-width:0;flex:1}.mobile-squad-name strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.mobile-squad-name small{display:block;color:var(--text-muted);font-size:9.5px;margin-top:3px;overflow-wrap:anywhere}.mobile-squad-stats{display:flex;gap:7px}.mobile-squad-stats b{min-width:27px;text-align:center;font:700 12px 'JetBrains Mono'}.mobile-squad-stats small{display:block;font:8px 'Barlow';color:var(--text-muted);margin-top:2px}
  .mobile-club-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.mobile-club-stat-grid>div,.mobile-club-performance>div{padding:11px 8px;border-radius:9px;background:var(--bg-elevated);border:1px solid var(--border);text-align:center}.mobile-club-stat-grid span,.mobile-club-performance span{display:block;color:var(--text-muted);font-size:9px;text-transform:uppercase}.mobile-club-stat-grid strong,.mobile-club-performance strong{display:block;margin-top:5px;font:700 17px 'JetBrains Mono'}
  .mobile-club-performance{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0}.mobile-club-performance>div{border:0;border-radius:0;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.mobile-club-performance small{display:block;margin-top:4px;color:var(--text-muted);font-size:9px}.mobile-club-national-intro,.mobile-club-national-position{font-size:12px}.mobile-club-national-position{font-weight:700}.mobile-club-section .mobile-standing{margin-top:10px}

  .player-desktop-view{display:none;}
  .player-mobile-view{display:block;margin:0 -18px;}
  .mobile-player-hero{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:13px;padding:17px 18px;background:linear-gradient(155deg,var(--navy-900),var(--navy-800));color:var(--ivory);}
  .mobile-player-avatar{width:70px;height:70px;border:2px solid rgba(255,255,255,.35);}
  .mobile-player-identity{min-width:0;}.mobile-player-identity h1{margin:0 0 6px;font-size:20px;line-height:1.12;overflow-wrap:anywhere;}
  .mobile-player-identity>a{display:flex;align-items:center;gap:7px;color:var(--ivory);font-size:12px;text-decoration:none;}.mobile-player-identity>a span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .mobile-player-identity p{margin:7px 0 0;color:rgba(255,255,255,.72);font-size:10.5px;overflow-wrap:anywhere;}
  .mobile-player-tabs,.mobile-player-competitions{display:flex;overflow-x:auto;scrollbar-width:none;background:var(--bg-elevated);border-bottom:1px solid var(--border);}.mobile-player-tabs::-webkit-scrollbar,.mobile-player-competitions::-webkit-scrollbar{display:none;}
  .mobile-player-tabs .tab-btn{flex:1;min-width:max-content;padding:12px 11px;}.mobile-player-competitions{margin-bottom:9px;border:1px solid var(--border);border-radius:10px;}.mobile-player-competitions .tab-btn{display:flex;align-items:center;gap:6px;min-width:max-content;padding:9px 11px;font-size:10px;}.mobile-player-competitions img{width:17px;height:17px;object-fit:contain;}
  .player-mobile-view>[data-tab-panel]{padding:14px 18px 8px;}.mobile-player-section{margin:0 0 15px;}.mobile-player-section>h2{margin:0 0 8px;color:var(--navy-800);font-size:13px;text-transform:uppercase;letter-spacing:.055em;}
  .mobile-player-league{display:inline-block;margin-bottom:8px;color:var(--accent-text);font-size:11px;font-weight:700;text-decoration:none;}
  .mobile-player-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;}.mobile-player-stat-grid>div{min-width:0;padding:10px 5px;border:1px solid var(--border);border-radius:9px;background:var(--surface);text-align:center;}.mobile-player-stat-grid span{display:block;color:var(--text-muted);font-size:8.5px;text-transform:uppercase;}.mobile-player-stat-grid strong{display:block;margin-top:4px;font:700 16px 'JetBrains Mono';overflow-wrap:anywhere;}
  .mobile-player-club-card,.mobile-player-last{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid var(--border);border-radius:11px;background:var(--surface);color:inherit;text-decoration:none;}.mobile-player-club-card>span:nth-child(2),.mobile-player-last>span:nth-child(2){min-width:0;flex:1;}.mobile-player-club-card strong,.mobile-player-club-card small,.mobile-player-last strong,.mobile-player-last small{display:block;}.mobile-player-club-card small,.mobile-player-last small{margin-top:2px;color:var(--text-muted);font-size:9.5px;overflow-wrap:anywhere;}
  .mobile-player-matches,.mobile-transfer-list,.mobile-career-card{overflow:hidden;border:1px solid var(--border);border-radius:11px;background:var(--surface);}.mobile-player-match{display:block;padding:11px;color:inherit;text-decoration:none;border-bottom:1px solid var(--border);}.mobile-player-match:last-child{border-bottom:0;}.mobile-player-match-head{display:flex;justify-content:space-between;gap:8px;color:var(--text-muted);font-size:9.5px;}.mobile-player-match-head span:last-child{white-space:nowrap;}.mobile-player-match-main{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:8px;margin-top:7px;}.mobile-player-match-main>span:first-child{min-width:0;}.mobile-player-match-main strong,.mobile-player-match-main small{display:block;}.mobile-player-match-main>span:first-child strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;}.mobile-player-match-main small{color:var(--text-muted);font-size:9px;}.mobile-player-match-events{display:flex;align-items:center;gap:5px;margin-top:8px;color:var(--text-muted);font-size:10px;}.mobile-player-match-events .card-icon{width:8px;height:11px;margin-left:4px;}
  .mobile-transfer-row{padding:11px;border-bottom:1px solid var(--border);}.mobile-transfer-row:last-child{border-bottom:0;}.mobile-transfer-row time,.mobile-transfer-row small{display:block;color:var(--text-muted);font-size:9.5px;}.mobile-transfer-row>div{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto minmax(0,1fr);align-items:center;gap:7px;margin:6px 0;}.mobile-transfer-row>div span:not(.crest){min-width:0;overflow-wrap:anywhere;font-size:11px;font-weight:600;}.mobile-transfer-row b{color:var(--text-muted);}
  .mobile-career-card{padding:0 11px;}.mobile-career-card .career-row{padding:12px 0;}.mobile-career-card .career-club{display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 8px;}.mobile-career-card .career-period{grid-column:2;}.mobile-career-card .career-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 12px;}
  .mobile-career-card .career-view-switcher{display:grid;grid-template-columns:1fr 1fr;gap:3px;width:auto;margin:10px 0 2px;padding:3px;border:1px solid var(--border);border-radius:10px;background:var(--bg);}
  .mobile-career-card .career-view-switcher .tab-btn{min-height:36px;padding:7px 10px;border-radius:7px;font-size:10px;}
  .mobile-career-card .career-season-row{display:flex;flex-direction:column;gap:3px;padding:11px 2px;}
  .mobile-career-card .career-season-row.career-season-partial{padding-left:8px;}
  .mobile-career-card .career-season-clubs{font-size:11px;}
  .mobile-career-card .career-season-stats{font-size:10px;text-align:left;}

  html,body{max-width:100%;overflow-x:hidden;}
  .container{padding:0 18px calc(92px + var(--mf-safe-bottom));}
  .site-header-outer{border-bottom-color:rgba(242,238,227,.18);}
  .site-header{height:60px;padding:8px 14px;flex-wrap:nowrap;gap:8px;}
  .brand{order:1;min-width:0;gap:8px;}
  .brand-mark{width:34px;height:34px;}
  .brand-name{font-size:13px;}
  .brand-sub{display:none;}
  .mobile-back-button{order:0;}
  .mobile-back-button + .brand{display:none;}
  .mobile-draft-exit{order:0;width:auto;flex:0 1 auto;gap:4px;padding:0 8px;font-size:12px;font-weight:700;text-decoration:none;white-space:nowrap;}
  .mobile-draft-exit + .brand{display:none;}
  .mobile-header-button{display:flex;align-items:center;justify-content:center;width:44px;height:44px;flex:0 0 44px;padding:0;border:0;border-radius:12px;background:transparent;color:var(--ivory);cursor:pointer;}
  .app-favorites-global{display:none;}
  .mobile-header-button:active{background:rgba(242,238,227,.1);}
  .mobile-page-title{order:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ivory);font-size:15px;font-weight:700;}
  .mobile-back-button ~ .mobile-page-title{display:block;}
  .mobile-header-actions{display:flex;order:3;margin-left:auto;}
  html[data-app-context="capacitor"] .app-favorites-global{display:flex;font:400 29px/1 'Barlow';}
  html[data-app-context="capacitor"] [data-mobile-account-open].mobile-header-button{display:none;}
  .site-nav{position:absolute;width:0;height:0;overflow:visible;}
  .site-nav > .league-select,.site-nav > .usage-pill,.header-auth-guest,.header-auth-toggle{display:none!important;}
  .header-auth,.header-auth-account{position:static;display:contents;}
  .header-auth-dropdown{position:fixed;top:68px;right:14px;left:14px;z-index:180;width:auto;max-height:calc(100dvh - 90px);overflow-y:auto;}
  .header-auth-menu{left:auto;width:190px;}
  .primary-nav{display:none;}
  .search-wrap{display:none;position:fixed;inset:0;z-index:250;max-width:none;margin:0;padding:0 16px calc(24px + var(--mf-safe-bottom));background:var(--bg);overflow-y:auto;}
  body.mobile-search-open{overflow:hidden;}
  body.mobile-search-open .site-header-outer{z-index:260;}
  body.mobile-search-open .search-wrap{display:block;}
  .mobile-search-head{display:flex;align-items:center;gap:10px;height:60px;color:var(--text);}
  .mobile-search-close{display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin-left:-10px;border:0;background:transparent;color:var(--text);cursor:pointer;}
  .mobile-search-head strong{font-size:17px;}
  .search-input{height:48px;background:var(--bg-elevated);border-color:var(--border-strong);color:var(--text);font-size:16px;padding:11px 14px;}
  .search-input::placeholder{color:var(--text-muted);}
  .mobile-search-status{display:block;margin:18px 2px;color:var(--text-muted);font-size:13px;}
  .mobile-search-status[data-state="results"]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
  .mobile-search-status[data-state="error"]{color:var(--red);}
  .search-results{position:static;margin-top:14px;max-height:none;overflow:visible;border:0;border-radius:0;background:transparent;box-shadow:none;}
  .search-group{margin-bottom:18px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:14px;overflow:hidden;}
  .search-group h2{padding:12px 14px 8px;background:var(--accent-faint);}
  .search-result{min-height:58px;padding:10px 14px;}
  .search-result:hover,.search-result.active{background:var(--accent-faint);}
  .sr-crest{width:34px;height:34px;}
  .sr-label{font-size:14px;}
  .mobile-bottom-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:150;height:calc(64px + var(--mf-safe-bottom));padding:4px 4px var(--mf-safe-bottom);background:color-mix(in srgb,var(--cream-card) 96%,transparent);border-top:1px solid var(--border);box-shadow:0 -8px 24px rgba(22,35,63,.08);}
  .mobile-bottom-link{display:flex;min-width:0;min-height:56px;align-items:center;justify-content:center;flex-direction:column;gap:3px;padding:4px 1px;color:var(--text-muted);font-size:10px;font-weight:600;line-height:1;}
  .mobile-bottom-link svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
  .mobile-bottom-link.active{color:var(--accent-text);}
  .mobile-bottom-link.active svg{stroke-width:2.3;}
  .site-footer{padding-bottom:calc(86px + var(--mf-safe-bottom));}
  /* Le consentement reste utilisable mais vit au-dessus de la barre : la
     navigation primaire ne peut donc jamais être recouverte. */
  .cookie-banner{bottom:calc(64px + var(--mf-safe-bottom));}
  body.draft-mode .mobile-bottom-nav{display:none;}
  body.draft-mode .container{padding-bottom:48px;}
  .mobile-more-page{margin-top:20px;}
  .mobile-more-intro{display:none;}
  .mobile-more-section{margin-bottom:16px;border-radius:14px;}
  .mobile-more-link{min-height:54px;font-size:15px;}
  .hero h1{font-size:28px;}
  .hero p{font-size:13.5px;}
  .hero-logo{width:64px;height:64px;margin-bottom:16px;}
  .m-card{flex:0 0 280px;}
  .split-columns{grid-template-columns:1fr;}
  .teams-analysis{grid-template-columns:1fr;}
  .team-analysis{padding:22px 20px;}
  .teams-row{gap:20px;}
  .team-block{width:120px;}
  .crest-lg{width:52px;height:52px;}
  .card{padding:20px;}
  .mday-btn{width:44px;height:44px;}

  .desktop-lot2,.desktop-matchday-cards{display:none!important;}
  .mobile-lot2,.mobile-matchday-cards{display:block;}
  .mobile-page-hero{padding:28px 0 22px;}
  .mobile-page-hero-compact{padding-bottom:10px;}
  .mobile-page-hero h1{font-size:32px;margin:5px 0 8px;letter-spacing:-.02em;}
  .mobile-page-hero p{font-size:13.5px;line-height:1.45;}
  .mobile-home{margin:0 -2px;}
  .mobile-section{margin:18px 0 30px;}
  .mobile-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:12px;}
  .mobile-section-head h2{display:flex;align-items:center;gap:7px;font-size:21px;line-height:1.1;margin:0;}
  .mobile-section-head>a{flex-shrink:0;color:var(--accent-text);font-size:12.5px;font-weight:700;}
  .mobile-eyebrow{display:block;margin-bottom:4px;color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;}
  .mobile-count{display:flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 7px;border-radius:12px;background:var(--bg-elevated-2);color:var(--text-muted);font:700 11px 'JetBrains Mono';}
  .mobile-match-list{display:flex;flex-direction:column;gap:8px;}
  .mobile-match-card-shell{position:relative;}
  .mobile-match-card{display:block;padding:12px 13px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:14px;color:var(--text);text-decoration:none;box-shadow:0 2px 8px rgba(22,35,63,.035);}
  html[data-app-context="capacitor"] .mobile-match-card-shell .mobile-match-card{padding-right:56px;}
  .mobile-match-card.is-live{border-left:3px solid var(--red);}
  .mobile-match-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;color:var(--text-muted);font-size:10px;text-transform:uppercase;letter-spacing:.025em;}
  .mobile-match-competition{display:flex;align-items:center;gap:5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .crest-xs{width:16px;height:16px;flex:0 0 16px;}
  .mobile-match-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;}
  .mobile-match-teams{display:flex;flex-direction:column;gap:8px;min-width:0;}
  .mobile-match-teams>span{display:flex;align-items:center;gap:9px;min-width:0;}
  .mobile-match-teams strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;}
  .mobile-form-dots{display:flex;gap:2px;margin-left:auto;flex-shrink:0;}
  .mobile-form-dots i{display:block;width:6px;height:6px;border-radius:50%;}
  .mobile-match-state{display:flex;min-width:64px;flex-direction:column;align-items:flex-end;gap:4px;}
  .mobile-match-score,.mobile-match-time{font-size:18px;font-weight:800;}
  .mobile-match-label{font-size:10px;color:var(--text-muted);text-transform:uppercase;}
  .mobile-match-state .status-pill{font-size:8.5px;padding:3px 5px;}
  .mobile-match-prediction{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:3px 10px;margin:10px -13px -12px;padding:8px 13px;border-radius:0 0 13px 13px;background:var(--accent-faint);color:var(--accent-text);font-size:10.5px;}
  .mobile-match-prediction strong{text-align:right;}
  .mobile-prediction-split{grid-column:1/-1;text-align:right;color:var(--text-muted);font-size:9.5px;}
  .mobile-match-prediction-unavailable{display:block;color:var(--text-muted);font-style:italic;}
  .mobile-empty-state{display:flex;flex-direction:column;align-items:center;gap:8px;padding:27px 20px;text-align:center;background:var(--bg-elevated);border:1px solid var(--border);border-radius:14px;}
  .mobile-empty-state p,.mobile-empty-copy{font-size:12.5px;color:var(--text-muted);line-height:1.45;margin:0;}
  .mobile-empty-state .btn{margin-top:5px;}
  .mobile-empty-icon{font-size:30px;color:var(--border-strong);}
  .mobile-competition-strip{display:flex;gap:9px;overflow-x:auto;padding:1px 1px 8px;scroll-snap-type:x proximity;scrollbar-width:none;}
  .mobile-competition-strip::-webkit-scrollbar{display:none;}
  .mobile-competition-strip>a{display:flex;flex:0 0 116px;min-height:122px;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:12px 8px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:14px;text-align:center;color:var(--text);scroll-snap-align:start;}
  .mobile-competition-emblem{display:flex;width:43px;height:43px;align-items:center;justify-content:center;margin-bottom:3px;background:#fff;border-radius:11px;overflow:hidden;font-size:11px;}
  .mobile-competition-emblem img{width:36px;height:36px;object-fit:contain;}
  .mobile-competition-strip strong{font-size:12px;line-height:1.2;}
  .mobile-competition-strip small{font-size:10px;color:var(--text-muted);}
  .mobile-feature-link{display:flex;align-items:center;justify-content:space-between;padding:18px;border-radius:14px;background:var(--navy-900);color:var(--ivory);text-decoration:none;}
  .mobile-direct-group{margin-top:16px;}
  .mobile-league-group{margin:16px 0 22px;}
  .mobile-league-group h3{display:flex;align-items:center;gap:8px;margin-bottom:9px;color:var(--text-secondary);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;}

  html[data-app-context="capacitor"] .app-favorite-button{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--bg-elevated);color:var(--navy-700);font:400 25px/1 'Barlow';cursor:pointer;}
  html[data-app-context="capacitor"] .app-favorite-button.is-favorite{border-color:rgba(178,58,48,.24);color:var(--red);background:#fff5f3;}
  html[data-app-context="capacitor"] .app-favorite-button:focus-visible{outline:3px solid var(--accent);outline-offset:2px;}
  .match-card-favorite{position:absolute;z-index:2;top:50%;right:8px;transform:translateY(-50%);}
  .hero-favorite{position:absolute;z-index:2;top:11px;right:12px;}
  html[data-app-context="capacitor"] .mobile-match-hero .hero-favorite,
  html[data-app-context="capacitor"] .mobile-club-hero .hero-favorite{border-color:rgba(255,255,255,.28);background:rgba(22,35,63,.7);color:var(--ivory);}
  html[data-app-context="capacitor"] .mobile-match-hero .hero-favorite.is-favorite,
  html[data-app-context="capacitor"] .mobile-club-hero .hero-favorite.is-favorite{color:#ff8175;}
  html[data-app-context="capacitor"] .mobile-match-context{min-height:44px;align-items:center;padding:0 48px;line-height:1.25;}
  html[data-app-context="capacitor"] .mobile-match-hero-teams{margin-top:8px;}
  .mobile-club-hero,.mobile-competition-header{position:relative;}
  html[data-app-context="capacitor"] .mobile-competition-header{padding-right:68px;}

  .favorites-app-page{margin:0 -2px;padding:20px 0 12px;}
  .favorites-page-header{padding:5px 2px 18px;}.favorites-page-header h1{font-size:28px;margin:3px 0 5px;}.favorites-page-header p{margin:0;color:var(--text-muted);font-size:13px;}
  .favorites-loading{padding:24px 0;color:var(--text-muted);font-size:13px;}
  .favorites-empty{padding:30px 18px;margin:5px 0 22px;border:1px solid var(--border);border-radius:16px;background:var(--bg-elevated);text-align:center;}
  .favorites-empty>span{font-size:42px;color:var(--accent-text);}.favorites-empty h2{font-size:19px;margin:2px 0 7px;}.favorites-empty p{margin:0 auto 17px;max-width:310px;color:var(--text-muted);font-size:13px;}.favorites-empty>div{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;}
  .favorites-section{margin:0 0 25px;}.favorites-section>h2,.favorites-section-heading h2{font-size:16px;margin:0 0 10px;text-transform:uppercase;letter-spacing:.045em;}
  .favorites-section [data-favorites-list="match"]{display:flex;flex-direction:column;gap:8px;}.favorite-match-card .mobile-match-card{min-height:108px;}
  .favorites-identity-list{overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--bg-elevated);}
  .favorite-identity-row{display:flex;align-items:center;gap:8px;padding:9px;border-bottom:1px solid var(--border);}.favorite-identity-row:last-child{border-bottom:0;}.favorite-identity-row>a{display:flex;min-width:0;flex:1;align-items:center;gap:11px;padding:3px;}.favorite-identity-row>a>span:nth-child(2){min-width:0;}.favorite-identity-row strong,.favorite-identity-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.favorite-identity-row strong{font-size:14px;}.favorite-identity-row small{margin-top:2px;color:var(--text-muted);font-size:10px;}
  .favorites-notifications{padding:16px;border:1px solid var(--border);border-radius:14px;background:var(--bg-elevated);}.favorites-section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;}.favorites-section-heading h2{margin:0;}.favorites-section-heading>span{padding:4px 7px;border-radius:20px;background:var(--accent-faint);color:var(--accent-text);font-size:9px;font-weight:700;text-transform:uppercase;}.favorites-notifications>p{margin:7px 0 13px;color:var(--text-muted);font-size:11.5px;line-height:1.45;}.favorites-notifications label{display:flex;align-items:center;justify-content:space-between;min-height:45px;border-top:1px solid var(--border);font-size:13px;}.favorites-notifications input{position:absolute;opacity:0;pointer-events:none;}.favorites-notifications i{position:relative;width:38px;height:22px;border-radius:11px;background:var(--bg-elevated-2);}.favorites-notifications i::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--text-muted);opacity:.5;}

  .competitions-hero{padding-top:28px;}
  .competition-directory{padding-bottom:12px;}
  .competition-directory-group{margin-bottom:26px;}
  .competition-directory-group h2{font-size:11px;margin-bottom:9px;}
  .competition-directory-grid{grid-template-columns:1fr;gap:8px;}
  .competition-directory-card{min-height:70px;padding:10px 12px;border-radius:13px;}
  .competition-directory-emblem{width:46px;height:46px;flex-basis:46px;}
  .competition-directory-card strong{font-size:14px;}

  .mobile-competition-page{margin:0 -18px;}
  .mobile-competition-header{display:flex;align-items:center;gap:13px;padding:20px 18px 15px;}
  .mobile-competition-header small{font-size:9px;letter-spacing:.07em;color:var(--text-muted);}
  .mobile-competition-header h1{font-size:22px;margin:2px 0 0;}
  .mobile-competition-tabs{position:sticky;top:60px;z-index:80;display:grid;grid-template-columns:repeat(4,1fr);padding:0 8px;background:color-mix(in srgb,var(--cream-card) 97%,transparent);border-bottom:1px solid var(--border);}
  .mobile-competition-tabs button{min-height:46px;padding:0 3px;border:0;border-bottom:3px solid transparent;background:transparent;color:var(--text-muted);font-family:'Barlow';font-size:11.5px;font-weight:700;cursor:pointer;}
  .mobile-competition-tabs button.active{color:var(--accent-text);border-bottom-color:var(--accent);}
  .mobile-competition-panel{padding:16px 18px 8px;}
  .mobile-competition-panel[hidden]{display:none!important;}
  .mobile-competition-panel .matchday-bar{margin:0 0 12px;}
  .mobile-competition-panel>h2{font-size:17px;margin:8px 0 10px;}
  .mobile-competition-panel>h2:not(:first-child){margin-top:26px;}
  .mobile-subtabs{display:flex;gap:5px;margin:0 0 12px;padding:4px;overflow-x:auto;border-radius:11px;background:var(--bg-elevated-2);scrollbar-width:none;}
  .mobile-subtabs::-webkit-scrollbar{display:none;}
  .mobile-subtabs button{flex:1 0 auto;min-height:36px;padding:6px 10px;border:0;border-radius:8px;background:transparent;color:var(--text-muted);font-family:'Barlow';font-size:10.5px;font-weight:700;text-transform:uppercase;cursor:pointer;}
  .mobile-subtabs button.active{background:var(--bg-elevated);color:var(--accent-text);box-shadow:0 1px 4px rgba(22,35,63,.08);}
  .mobile-subtabs-secondary{width:max-content;margin:0 0 10px auto;}
  .mobile-subtabs-secondary button{min-width:82px;}
  .mobile-standing{overflow:hidden;background:var(--bg-elevated);border:1px solid var(--border);border-radius:14px;}
  .mobile-standing-head,.mobile-standing-row summary{display:grid;grid-template-columns:24px minmax(0,1fr) 32px 35px;gap:8px;align-items:center;}
  .mobile-standing-head{padding:9px 12px;background:var(--bg-elevated-2);font-size:9px;font-weight:700;text-transform:uppercase;color:var(--text-muted);}
  .mobile-standing-row{border-top:1px solid var(--border);}
  .mobile-standing-row.zone-top{border-left:3px solid var(--green);}
  .mobile-standing-row.zone-bottom{border-left:3px solid var(--red);}
  .mobile-standing-row summary{min-height:53px;padding:8px 12px;cursor:pointer;list-style:none;}
  .mobile-standing-row summary::-webkit-details-marker{display:none;}
  .mobile-standing-team{display:flex;align-items:center;gap:8px;min-width:0;font-size:12.5px;font-weight:600;}
  .mobile-standing-team-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .mobile-standing-team .status-pill{padding:2px 4px;font-size:7.5px;flex-shrink:0;}
  .mobile-standing-live-score{padding:2px 4px;border-radius:5px;background:var(--navy-900);color:var(--ivory);font-size:9px;flex-shrink:0;}
  .mobile-standing-team .st-delta{font-size:9px;flex-shrink:0;}
  .mobile-standing-detail{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 12px 11px 44px;background:var(--accent-faint);font-size:10.5px;color:var(--text-secondary);}
  .mobile-standing-provisional{width:100%;color:var(--red);font-weight:700;}
  .mobile-player-ranking{overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--bg-elevated);}
  .mobile-player-ranking-row{display:grid;grid-template-columns:24px minmax(0,1fr) minmax(72px,.7fr) auto;align-items:center;gap:9px;min-height:55px;padding:8px 12px;color:var(--text);border-bottom:1px solid var(--border);}
  .mobile-player-ranking-row:last-child{border-bottom:0;}
  .mobile-player-position{color:var(--text-muted);}
  .mobile-player-name{min-width:0;}
  .mobile-player-name strong,.mobile-player-name small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .mobile-player-name strong{font-size:12.5px;}.mobile-player-name small{font-size:10px;color:var(--text-muted);margin-top:2px;}
  .mobile-player-club{display:flex;align-items:center;gap:5px;min-width:0;color:var(--text-muted);font-size:9.5px;}
  .mobile-player-club>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .mobile-player-ranking-row>strong small{font-size:8px;text-transform:uppercase;color:var(--text-muted);}
}

/* COMMENTAIRES DE MATCH (voir web/templates/_comments_section.html) */
.comments-section h3{margin-bottom:14px;}
.comments-auth{margin-bottom:16px;}
.comments-auth-tabs{display:flex;gap:4px;margin-bottom:12px;border-bottom:1px solid var(--border);}
.comments-auth-tab{
  background:none;border:none;border-bottom:2px solid transparent;padding:8px 4px;margin-right:14px;
  font-family:'Barlow';font-size:13.5px;font-weight:600;color:var(--text-muted);cursor:pointer;
}
.comments-auth-tab.active{color:var(--text);border-bottom-color:var(--accent);}
.comment-auth-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.comment-auth-form input{
  flex:1;min-width:140px;background:var(--bg-elevated-2);border:1px solid var(--border-strong);
  border-radius:10px;color:var(--text);font-family:'Barlow';font-size:13.5px;padding:9px 12px;
}
.comment-auth-form input:focus{outline:none;border-color:var(--accent);}
.comment-auth-message{margin-top:10px;font-size:12.5px;}
.comment-auth-message.comment-auth-error{color:var(--red);}
.link-btn{
  background:none;border:none;padding:0;font-family:'Barlow';font-size:inherit;font-weight:600;
  color:var(--accent-text);cursor:pointer;text-decoration:underline;
}
.comment-form{margin-bottom:18px;}
.comment-input{
  width:100%;background:var(--bg-elevated-2);border:1px solid var(--border-strong);border-radius:12px;
  color:var(--text);font-family:'Barlow';font-size:13.5px;padding:11px 14px;resize:vertical;min-height:56px;
}
.comment-input:focus{outline:none;border-color:var(--accent);}
.comment-form-row{display:flex;align-items:center;gap:12px;margin-top:8px;}
.comment-form-hint{font-size:11.5px;}
.comment-error{color:var(--red);font-size:12.5px;margin-top:8px;}
.comments-list{display:flex;flex-direction:column;gap:2px;}
.comment-row{padding:12px 0;border-bottom:1px solid var(--border);}
.comment-row:last-child{border-bottom:none;}
.comment-row-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px;flex-wrap:wrap;}
.comment-row-head strong{font-size:13.5px;}
.comment-date{font-size:11px;}
.comment-report-btn{margin-left:auto;font-size:11px;font-weight:600;text-decoration:none;color:var(--text-muted);}
.comment-report-btn:hover{color:var(--red);}
.comment-body{font-size:14px;line-height:1.5;white-space:pre-wrap;word-break:break-word;}

/* MODÉRATION ADMIN (voir web/templates/admin_moderation.html) */
.admin-mod-list{display:flex;flex-direction:column;gap:14px;}
.admin-mod-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap;}
.admin-mod-body{font-size:14px;line-height:1.5;margin-bottom:14px;white-space:pre-wrap;}
.btn-danger{
  display:inline-block;background:var(--red);color:#fff;padding:9px 16px;border:none;
  border-radius:10px;font-weight:600;font-size:13px;cursor:pointer;font-family:'Barlow';
}
.btn-danger:hover{opacity:0.88;}

@media (max-width:560px){
  .comment-row-head{gap:6px;}
  .comment-report-btn{margin-left:0;}
}

/* MAMMOUTH DRAFT (voir web/templates/draft_*.html) — habillage VOLONTAIREMENT
   distinct de la charte navy/orange/crème du reste du site (--navy-900 est
   déjà la couleur du header partout ailleurs, --brand-orange déjà --accent
   partout ailleurs : les réutiliser ici ne signalait rien de différent,
   régression corrigée ici). Palette dédiée (violet foncé + doré), jamais
   utilisée en dehors de .draft-mode, pour qu'un visiteur sache en un
   coup d'œil qu'il a changé de mode. */
body.draft-mode{
  --draft-ink:#241A3D;
  --draft-ink-2:#33215A;
  --draft-gold:#F2B705;
  --draft-gold-dark:#B88900;
  --draft-gold-faint:rgba(242,183,5,0.16);
  background:#F4EFFC;
}
body.draft-mode .site-header-outer{background:var(--draft-ink);}
body.draft-mode .primary-nav{background:var(--draft-ink-2);}
body.draft-mode .primary-nav .nav-link{color:var(--ivory);opacity:0.75;}
body.draft-mode .primary-nav .nav-link:hover,
body.draft-mode .primary-nav .nav-link.active{opacity:1;color:#fff;}
body.draft-mode .primary-nav .nav-link.active{box-shadow:inset 0 -3px 0 var(--draft-gold);}

/* Cartes : ombre douce + coins plus généreux + air interne (demandé
   explicitement — "ça semble compressé") — scopé à .draft-page pour ne
   jamais changer l'apparence des cartes du reste du site. */
body.draft-mode .draft-page .card{
  border-top:3px solid var(--draft-gold);
  border-radius:20px;
  padding:30px 32px;
  box-shadow:0 1px 2px rgba(36,26,61,0.05), 0 12px 28px rgba(36,26,61,0.09);
}

/* Boutons : contraste texte/fond du doré vérifié (ratio ~9:1, largement
   au-dessus du seuil AAA) — hover en relief (translation + ombre + léger
   éclaircissement du MÊME doré via `filter`, jamais une nouvelle teinte). */
body.draft-mode .btn{
  background:var(--draft-gold);color:var(--draft-ink);
  box-shadow:0 2px 8px rgba(242,183,5,0.35);
  transition:transform .12s ease, box-shadow .12s ease, filter .12s ease;
}
body.draft-mode .btn:hover{
  transform:translateY(-1px);filter:brightness(1.07);
  box-shadow:0 6px 18px rgba(242,183,5,0.45);color:var(--draft-ink);
}
body.draft-mode .btn:active{transform:translateY(0);filter:brightness(0.97);}
body.draft-mode .link-btn{color:var(--draft-gold-dark);}
body.draft-mode .comment-input:focus{outline:none;border-color:var(--draft-gold);box-shadow:0 0 0 3px rgba(242,183,5,0.28), 0 0 14px rgba(242,183,5,0.3);}
body.draft-mode .draft-matchday-nav .nav-link{background:var(--bg-elevated-2);}
body.draft-mode .draft-matchday-nav .nav-link.active{background:var(--draft-gold);color:var(--draft-ink);}
.nav-link-draft{font-weight:700;}
.status-pill-captain{background:var(--draft-gold-faint,rgba(242,183,5,0.16));color:var(--draft-gold-dark,#B88900);}
/* Statut de "Mon équipe soumise" (voir web/templates/draft_ligue.html) :
   .status-pill-upcoming existe déjà (même sens "en attente" utilisé
   ailleurs sur le site) ; .status-pill-validated réutilise les tokens
   --green/--green-faint déjà en place pour tout état "positif/confirmé"
   (victoires, etc.) plutôt qu'introduire une nouvelle couleur. */
.status-pill-validated{background:var(--green-faint);color:var(--green);}

.draft-page{display:flex;flex-direction:column;gap:4px;}
.draft-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
h3.draft-card-title{display:flex;align-items:center;gap:9px;margin-bottom:18px;}
.draft-icon{flex-shrink:0;color:var(--draft-gold-dark,var(--accent-text));}

/* Champs de formulaire : libellé discret au-dessus (hiérarchie
   typographique), champ avec relief propre et halo doré au focus —
   remplace .comment-input (pensé pour un champ de commentaire compact,
   pas pour un vrai formulaire) dans les pages Mammouth Draft. */
.draft-field{margin-bottom:0;}
.draft-label{
  display:block;font-size:11.5px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;
  color:var(--text-muted);margin-bottom:7px;
}
.draft-input{
  width:100%;background:#FBF9FF;border:1.5px solid var(--border-strong);border-radius:12px;
  color:var(--text);font-family:'Barlow';font-size:15px;padding:13px 15px;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.draft-input:focus{
  outline:none;border-color:var(--draft-gold,var(--accent));
  box-shadow:0 0 0 3px rgba(242,183,5,0.28), 0 0 14px rgba(242,183,5,0.3);
}
.draft-input-code{text-transform:uppercase;letter-spacing:0.08em;font-weight:700;}
.draft-input-code::placeholder{text-transform:none;font-weight:400;letter-spacing:normal;}

/* État vide "Mes ligues" : invitation active plutôt qu'un constat, voir
   la demande explicite de ne pas laisser une simple phrase plate. */
.draft-empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;padding:44px 32px;}
.draft-empty-icon{color:var(--border-strong);}
.draft-empty-state p{color:var(--text-secondary);margin:0;}

.error-page{max-width:720px;margin:48px auto;padding:56px 40px;text-align:center;}
.error-page h1{margin:8px 0 14px;}
.error-page>p:not(.eyebrow){color:var(--text-secondary);font-size:1.05rem;}
.error-page-actions{display:flex;justify-content:center;align-items:center;gap:18px;margin-top:28px;}

@media (max-width: 700px){
  .error-page{margin:24px 0;padding:40px 22px;}
  .error-page-actions{flex-direction:column;}
}

.draft-league-list{display:flex;flex-direction:column;gap:10px;}
.draft-league-row{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;text-decoration:none;color:var(--text);
  transition:transform .12s ease, box-shadow .12s ease;
}
body.draft-mode .draft-league-row:hover{transform:translateY(-2px);box-shadow:0 4px 14px rgba(36,26,61,0.12);}
.draft-matchday-nav{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0;}
.draft-matchday-nav .nav-link{padding:6px 12px;border-radius:8px;background:var(--bg-elevated-2);}
.draft-matchday-nav .nav-link.active{background:var(--accent);color:#fff;}
.draft-standings{width:100%;border-collapse:collapse;}
.draft-standings td{padding:8px;border-bottom:1px solid var(--border);font-size:14px;}
.draft-owned-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px;font-size:14px;}
.draft-owned-list li{display:flex;align-items:center;gap:10px;}
.draft-budget-bar{font-size:13.5px;font-weight:600;margin-bottom:10px;}
.draft-budget-bar.draft-budget-over{color:var(--red);}
.draft-player-list{max-height:520px;overflow-y:auto;border:1px solid var(--border);border-radius:12px;}
.draft-player-row{
  display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);
  font-size:13.5px;cursor:pointer;min-height:44px;
}
.draft-player-row:last-child{border-bottom:none;}
.draft-player-row:hover{background:var(--bg-elevated);}
.draft-player-name{font-weight:600;flex:1;}
.draft-bid-input{padding:6px 8px;min-height:32px;}

/* Barre de filtres du marché/repêchage (nom + club + poste, voir
   web/templates/_macros.html::draft_filter_bar) — s'enroule proprement sur
   mobile plutôt que de déborder, chaque champ restant assez large pour
   rester tactile. */
.draft-filter-bar{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0 16px;}
.draft-filter-bar .draft-field{flex:1 1 160px;min-width:140px;}
.draft-filter-empty{padding:14px;}

@media (max-width:640px){
  .draft-grid{grid-template-columns:1fr;}
  body.draft-mode .draft-page .card{padding:22px 20px;border-radius:16px;}
  .draft-input{font-size:16px;padding:12px 14px;} /* >=16px : évite le zoom auto de Safari iOS au focus */
  .draft-empty-state{padding:32px 20px;}
  .draft-filter-bar{gap:10px;}
  .draft-filter-bar .draft-field{flex:1 1 100%;}
}

@media (max-width: 520px){
  .st-head,.st-row{grid-template-columns:26px minmax(0,1fr) 34px 46px;column-gap:8px;padding:11px 16px;}
  .st-head>div:nth-child(4),.st-row>div:nth-child(4),
  .st-head>div:nth-child(5),.st-row>div:nth-child(5),
  .st-head>div:nth-child(6),.st-row>div:nth-child(6),
  .st-head>div:nth-child(7),.st-row>div:nth-child(7){display:none;}

  /* Classements joueurs (buteurs/passeurs) : forme différente (5 colonnes,
     pas 8) — ne pas hériter du masquage/gabarit ci-dessus, sinon la colonne
     du nombre de buts/passes (la seule qui compte ici) disparaît. On garde
     #, joueur, crest club et la valeur ; on masque seulement "MJ". */
  .pr-head,.pr-row{grid-template-columns:22px minmax(0,1fr) 26px 40px;column-gap:6px;padding:11px 16px;}
  .pr-head>div:nth-child(3),.pr-row>div:nth-child(3){display:block;}
  .pr-head>div:nth-child(4),.pr-row>div:nth-child(4){display:none;}
  .pr-head>div:nth-child(5),.pr-row>div:nth-child(5){display:block;}

  /* Effectif club : Poste et Nationalité masqués (colonnes les moins
     essentielles), sinon la table déborde à droite hors de l'écran. */
  .squad-table{table-layout:fixed;}
  .squad-table th:nth-child(3),.squad-table td:nth-child(3),
  .squad-table th:nth-child(5),.squad-table td:nth-child(5){display:none;}
  .squad-table th:nth-child(4),.squad-table td:nth-child(4),
  .squad-table th:nth-child(6),.squad-table td:nth-child(6){width:42px;}
  .squad-table td:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
}

/* Paysage large/tablette dans la WebView : conserve un accès app-only aux
   favoris sans transformer le header desktop du navigateur classique. */
@media (min-width: 761px){
  html[data-app-context="capacitor"] .mobile-header-actions{display:flex;order:3;margin-left:10px;}
  html[data-app-context="capacitor"] .app-favorites-global{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;color:var(--ivory);font-size:29px;}
  html[data-app-context="capacitor"] .mobile-header-actions>[data-search-open],
  html[data-app-context="capacitor"] .mobile-header-actions>[data-mobile-account-open]{display:none;}
}
