/*
 * Site public des spectateurs — direction « Maillot » (choisie par le porteur du projet le
 * 2026-10-14, après des essais « Pelouse » et « Nuit de stade ») : la palette TournLive
 * traitée comme un maillot. Bandeau bleu nuit coupé d'une diagonale cyan, texture discrète
 * de filet de but, orange pour l'onglet actif, le direct et l'inscription, cartes blanches
 * sur fond bleuté, écriture condensée de stade. Les scores gardent leur code couleur :
 * vert gagné, orange-ambre nul, rouge perdu.
 * C'est l'habillage par défaut : la couleur, l'accent, la police et l'image de fond choisis
 * par l'organisateur (formule payante) gardent la priorité.
 */
body.site-public {
    --p-band: #08283a;
    --p-band-dark: #062233;
    --p-accent: #ff6a00;
    --p-accent-ink: #08283a;
    --p-bg: #eef3f6;
    --p-soft: #e2eaef;
    --p-ink: #08283a;
    --p-muted: #52798a;
    --p-line: #d5e1e8;
    --p-win: #1f9d55;
    --p-draw: #e8930c;
    --p-loss: #e5484d;
    --p-display: "Saira Condensed", "Barlow Condensed", "Avenir Next Condensed", "Roboto Condensed", "Arial Narrow", Arial, sans-serif;
    --p-net: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='24' viewBox='0 0 28 24'%3E%3Cpath d='M7 0l7 4v8l-7 4-7-4V4zM21 12l7 4v8l-7 4-7-4v-8z' fill='none' stroke='%23ffffff' stroke-opacity='.07'/%3E%3C/svg%3E");
}

/* Page et bandeau. */
body.site-public .public-event-page { background: var(--p-bg); color: var(--p-ink); }
body.site-public .public-event-hero { background: var(--p-net), linear-gradient(115deg, var(--p-band) 0 60%, #0b3a52 60% 73%, #008fb8 73% 75.5%, var(--p-band) 75.5%); min-height: 300px; }
body.site-public .public-event-hero.compact { min-height: 240px; }
body.site-public .public-event-hero::before, body.site-public .public-event-hero-overlay { display: none; }
body.site-public .public-event-logo { background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2); border-radius: 16px; color: var(--p-accent); }
body.site-public .public-event-sport { color: var(--p-accent); letter-spacing: .2em; }
body.site-public .public-event-identity h1 { font-family: var(--p-display); font-weight: 800; letter-spacing: .01em; text-transform: uppercase; }
body.site-public .public-event-identity p { opacity: .85; }
body.site-public .public-event-shell { border-radius: 16px; box-shadow: 0 18px 50px rgba(8,40,58,.18); }

/* Menu du site public : la suite du bandeau bleu nuit, onglet actif souligné d'orange. */
body.site-public .public-event-nav { background: var(--p-band-dark); border-bottom: 0; gap: .25rem; }
body.site-public .public-event-nav a { border-bottom: 3px solid transparent; border-radius: 0; color: rgba(255,255,255,.75); font-family: var(--p-display); font-size: 1rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
body.site-public .public-event-nav a:hover { background: rgba(255,255,255,.07); color: #fff; }
body.site-public .public-event-nav a.active { background: transparent; border-bottom-color: var(--p-accent); color: #fff; }
/* Actualisation automatique : rien n'est montré quand tout va bien ; seule une coupure est signalée. */
body.site-public .public-live-badge { display: none; }
body.site-public .public-live-badge[data-state="offline"] { background: rgba(255,106,0,.18); color: #ffd2b0; display: inline-flex; }
body.site-public .public-live-badge[data-state="offline"] span { display: inline; }

/* Titres de section. */
body.site-public .public-section-title h2 { font-family: var(--p-display); font-weight: 800; letter-spacing: .01em; text-transform: uppercase; }
body.site-public .public-section-title h2::before { background: var(--p-accent); content: ""; display: inline-block; height: .8em; margin-right: .5rem; vertical-align: -.05em; width: .3rem; }
body.site-public .public-section-title p { color: var(--p-muted); }
body.site-public .public-back { background: var(--p-soft); color: var(--p-ink); }

/* Boutons : orange, texte bleu nuit, angles nets, écriture de stade. */
body.site-public .btn { border-radius: 8px; font-family: var(--p-display); font-size: 1.05rem; letter-spacing: .05em; text-transform: uppercase; }
body.site-public .btn-primary { --bs-btn-color: var(--p-accent-ink); --bs-btn-bg: var(--p-accent); --bs-btn-border-color: transparent; --bs-btn-hover-color: var(--p-accent-ink); --bs-btn-hover-bg: #ff8a33; --bs-btn-hover-border-color: transparent; --bs-btn-active-color: var(--p-accent-ink); --bs-btn-active-bg: #e65f00; --bs-btn-active-border-color: transparent; --bs-btn-disabled-color: var(--p-muted); --bs-btn-disabled-bg: var(--p-soft); --bs-btn-disabled-border-color: transparent; background: var(--p-accent); border-color: transparent; box-shadow: none; color: var(--p-accent-ink); }
body.site-public .btn-primary:hover { background: #ff8a33; border-color: transparent; }
body.site-public .btn-outline-primary { --bs-btn-color: var(--p-band); --bs-btn-border-color: var(--p-band); --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--p-band); --bs-btn-hover-border-color: var(--p-band); --bs-btn-active-color: #fff; --bs-btn-active-bg: var(--p-band-dark); --bs-btn-active-border-color: var(--p-band-dark); --bs-btn-bg: #fff; }
body.site-public .public-register-cta { background: var(--p-accent); border-radius: 8px; color: var(--p-accent-ink); font-family: var(--p-display); letter-spacing: .05em; text-transform: uppercase; }

/* Pages publiques sans bandeau de compétition (lien secret des équipes) : barre réduite au nom du site. */
body.site-public .navbar-tournlive { background: var(--p-net), var(--p-band); border-bottom: 3px solid var(--p-accent); }
body.site-public .navbar-tournlive .brand-mark { color: #fff !important; }
body.site-public .navbar-tournlive .brand-icon { background: var(--p-accent); color: var(--p-accent-ink); }
body.site-public .navbar-tournlive .navbar-collapse, body.site-public .navbar-tournlive .navbar-toggler { display: none !important; }
body.site-public .app-footer { background: var(--p-band-dark); color: #9fb6c2; }

/* Tableaux : classements, buteurs, cartons. */
body.site-public .public-standing { border-color: var(--p-line); }
body.site-public .public-standing > header { background: var(--p-band); color: #fff; font-family: var(--p-display); font-size: 1.05rem; letter-spacing: .04em; text-transform: uppercase; }
body.site-public .public-standing td.points, body.site-public .public-standing th.points { background: var(--p-band); color: #fff; font-family: var(--p-display); font-size: 1.05rem; }

/* Calendrier : journées et cartes de match. */
body.site-public .public-match-day { border-color: var(--p-line); box-shadow: none; }
body.site-public .public-match-day > summary { background: var(--p-soft); font-family: var(--p-display); font-size: 1.05rem; letter-spacing: .03em; text-transform: uppercase; }
body.site-public .public-match-grid article { background: #fff; border-color: var(--p-line); position: relative; transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
body.site-public .public-match-team { border-top-color: var(--p-soft); }
/* Scores : neutre tant que le match n'est pas terminé, puis vert gagné, ambre nul, rouge perdu. */
body.site-public .public-match-team b { background: var(--p-band); color: #fff; font-family: var(--p-display); font-size: 1.05rem; }
body.site-public .public-match-team b.is-win { background: var(--p-win); color: #fff; }
body.site-public .public-match-team b.is-draw { background: var(--p-draw); color: #fff; }
body.site-public .public-match-team b.is-loss { background: var(--p-loss); color: #fff; }
body.site-public .public-match-grid article.is-clickable:hover { border-color: var(--p-band); box-shadow: 0 10px 24px rgba(8,40,58,.12); transform: translateY(-2px); }
body.site-public .public-match-link { border-radius: inherit; inset: 0; position: absolute; z-index: 1; }
body.site-public .public-match-link:focus-visible { box-shadow: 0 0 0 3px var(--p-accent); outline: 0; }
body.site-public .public-match-grid article .public-team-inline { position: relative; z-index: 2; }
body.site-public .public-match-open { border-top: 1px solid var(--p-soft); color: #006f8f; font-size: .75rem; font-weight: 700; padding-top: .5rem; text-align: right; }
body.site-public .public-match-open.is-live { color: #c2410c; }
body.site-public .public-match-grid article.is-clickable:hover .public-match-open { text-decoration: underline; }
body.site-public .public-team-logo { background: var(--p-soft); color: var(--p-band); }
@media (prefers-reduced-motion: reduce) { body.site-public .public-match-grid article { transition: none; } body.site-public .public-match-grid article.is-clickable:hover { transform: none; } }

/* État du match. */
body.site-public .public-match-tags { align-items: center; display: inline-flex; flex-wrap: wrap; gap: .4rem; }
body.site-public .public-match-status { align-items: center; border-radius: 4px; display: inline-flex; font-size: .68rem; font-weight: 800; gap: .3rem; letter-spacing: .06em; padding: .15rem .5rem; text-transform: uppercase; white-space: nowrap; }
body.site-public .public-match-status.is-upcoming { background: var(--p-soft); color: var(--p-band); }
body.site-public .public-match-status.is-live { background: var(--p-accent); color: var(--p-accent-ink); }
body.site-public .public-match-status.is-finished { background: var(--p-band); color: #fff; }
body.site-public .public-match-status.is-cancelled { background: #fde2e2; color: #8a1c1c; text-decoration: line-through; }
body.site-public .public-live-dot { animation: gx-pulse 1.4s ease-in-out infinite; background: var(--p-accent-ink); border-radius: 50%; display: inline-block; height: .45rem; width: .45rem; }
@keyframes gx-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }
@media (prefers-reduced-motion: reduce) { body.site-public .public-live-dot { animation: none; } }
body.site-public .match-clock.is-running i { color: #c2410c; }

/* Fiche du match : tableau de score, buteurs, informations, sous-onglets, fil et compositions. */
body.site-public .public-match-scoreboard { background: #fff; border-color: var(--p-line); }
body.site-public .public-match-scoreboard > a, body.site-public .public-match-scoreboard > a strong { color: var(--p-ink); font-weight: 700; }
body.site-public .public-match-scoreboard > div b { color: var(--p-ink); font-family: var(--p-display); font-size: 3rem; font-variant-numeric: tabular-nums; font-weight: 800; }
body.site-public .public-match-scoreboard > div b small { color: var(--p-muted); }
body.site-public .public-match-stage { color: var(--p-muted); display: block; font-size: .72rem; font-weight: 700; letter-spacing: .06em; margin-bottom: .35rem; text-transform: uppercase; }
body.site-public .public-match-scorers { align-items: start; border-top: 1px solid var(--p-soft); display: grid; font-size: .82rem; gap: .75rem; grid-column: 1 / -1; grid-template-columns: 1fr auto 1fr; margin-top: .25rem; padding: .7rem 0 .2rem; }
body.site-public .public-match-scorers ul { color: var(--p-muted); list-style: none; margin: 0; padding: 0; }
body.site-public .public-match-scorers ul.home { text-align: right; }
body.site-public .public-match-scorers i { color: var(--p-ink); }
body.site-public .public-match-tabs { border-bottom: 1px solid var(--p-line); display: flex; gap: 1.5rem; margin: 1.25rem 0 1rem; overflow-x: auto; }
body.site-public .public-match-tabs a { border-bottom: 3px solid transparent; color: var(--p-muted); font-family: var(--p-display); font-size: 1.05rem; font-weight: 700; letter-spacing: .05em; padding: .55rem 0; text-decoration: none; text-transform: uppercase; white-space: nowrap; }
body.site-public .public-match-tabs a:hover { color: var(--p-ink); }
body.site-public .public-match-tabs a.active { border-bottom-color: var(--p-accent); color: var(--p-ink); }
body.site-public .public-event-timeline article { border-top-color: var(--p-soft); }
body.site-public .public-event-timeline article > span { color: var(--p-band); font-family: var(--p-display); font-size: 1.1rem; }
body.site-public .public-event-timeline small { color: var(--p-muted); }
body.site-public .public-roster-role { background: var(--p-soft); color: var(--p-band); font-size: .68rem; font-weight: 800; letter-spacing: .06em; padding: .3rem 1rem; text-transform: uppercase; }
body.site-public .public-rosters header small { color: rgba(255,255,255,.75); font-size: .7rem; font-weight: 600; margin-left: .35rem; }

/* Téléphone : les deux équipes restent côte à côte, logo en haut et nom en dessous, comme sur un tableau d'affichage. */
@media (max-width: 700px) {
    body.site-public .public-match-scoreboard { gap: .5rem; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); padding: 1.1rem .6rem; }
    body.site-public .public-match-scoreboard > a { font-size: .85rem; gap: .4rem; }
    body.site-public .public-match-scoreboard > a strong { overflow-wrap: anywhere; }
    body.site-public .public-match-scoreboard .public-team-logo.xlarge { font-size: 1.4rem; height: 3.2rem; width: 3.2rem; }
    body.site-public .public-match-scoreboard > div b { font-size: 2.2rem; }
    body.site-public .public-match-scoreboard > div > small { font-size: .7rem; }
    body.site-public .public-match-stage { font-size: .6rem; }
    body.site-public .public-match-scorers { font-size: .75rem; gap: .5rem; }
}

/* Bouton du diaporama : en haut à droite du bandeau, sur toutes les pages publiques. */
body.site-public .public-event-hero .public-hero-action { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.35); color: #fff; font-size: .85rem; position: absolute; right: 1rem; top: 1rem; z-index: 2; }
body.site-public .public-event-hero .public-hero-action:hover, body.site-public .public-event-hero .public-hero-action:focus-visible { background: var(--p-accent); border-color: var(--p-accent); color: var(--p-accent-ink); }
@media (max-width: 575px) { body.site-public .public-event-hero .public-hero-action span { display: none; } }

/* Pied des pages publiques : sous le contenu, centré. */
body.site-public .public-event-footer { color: var(--p-muted); display: block; font-size: .85rem; margin: 1.25rem auto 0; padding: 0 1rem 1.5rem; text-align: center; }

/* Boutons au trait : couleurs écrites en clair pour le repos et le survol. */
body.site-public .btn-outline-primary { background-color: #fff; border-color: var(--p-band); color: var(--p-band); }
body.site-public .btn-outline-primary:hover, body.site-public .btn-outline-primary:focus-visible, body.site-public .btn-outline-primary:active { background-color: var(--p-band); border-color: var(--p-band); color: #fff; }

/* Bouton du menu : le mot « Menu » n'est affiché que sur la vitrine. */
body.site-public .navbar-toggler-label { display: none; }

/* Cartons dessinés dans le fil du match. */
body.site-public .foul-card { border-radius: 2px; box-shadow: 0 1px 2px rgba(8,40,58,.25), inset 0 0 0 1px rgba(0,0,0,.08); display: inline-block; height: 1.15em; transform: rotate(-8deg); vertical-align: middle; width: .82em; }
body.site-public .foul-card.is-yellow { background: linear-gradient(160deg, #ffe45c, #f5c400); }
body.site-public .foul-card.is-red { background: linear-gradient(160deg, #ff5a4f, #d6201a); }
body.site-public .public-event-timeline .foul-card { font-size: 1.3rem; justify-self: center; }

/* Carton : petit rectangle vertical, comme celui de l'arbitre (taille fixe, quel que soit le texte autour). */
body.site-public .foul-card { border-radius: 2px; box-shadow: 0 1px 1px rgba(8,40,58,.3); display: inline-block; flex: 0 0 auto; height: 14px; transform: rotate(-6deg); vertical-align: -2px; width: 10px; }
body.site-public .foul-card.is-yellow { background: #f7c600; }
body.site-public .foul-card.is-red { background: #e02a20; }
body.site-public .public-event-timeline .foul-card { font-size: inherit; height: 15px; width: 11px; }

/* Ballon et flèches de remplacement, à la taille des cartons. */
body.site-public .event-ball { color: #08283a; display: inline-block; flex: 0 0 auto; height: 16px; vertical-align: -3px; width: 16px; }
body.site-public .event-sub { align-items: center; display: inline-flex; flex: 0 0 auto; gap: 0; line-height: 1; }
body.site-public .event-sub .bi { font-size: 15px; font-weight: 700; -webkit-text-stroke: .6px currentColor; }
body.site-public .event-sub .is-in { color: #12805f; }
body.site-public .event-sub .is-out { color: #d6201a; margin-left: -3px; }
body.site-public .public-event-timeline .event-ball { justify-self: center; }
body.site-public .public-event-timeline .event-sub { justify-self: center; }

body.site-public .public-match-status.is-postponed { background: #fff3cd; color: #6b5200; }

/* Tableaux de statistiques (buteurs, cartons) : carte blanche, lignes nettes, chiffres alignés. */
body.site-public .pro-table-card { background: #fff; border: 1px solid #dbe6ec; border-radius: 14px; box-shadow: 0 1px 2px rgba(8,40,58,.04); overflow: hidden; }
body.site-public .pro-table { border-collapse: collapse; color: #08283a; width: 100%; }
body.site-public .pro-table thead th { background: #f5f9fb; border-bottom: 1px solid #dbe6ec; color: #52798a; font-family: inherit; font-size: .72rem; font-weight: 700; letter-spacing: .06em; padding: .7rem 1rem; text-align: left; text-transform: uppercase; }
body.site-public .pro-table tbody td { border-top: 1px solid #edf3f6; padding: .7rem 1rem; vertical-align: middle; }
body.site-public .pro-table tbody tr:first-child td { border-top: 0; }
body.site-public .pro-table tbody tr:hover td { background: #f8fbfc; }
body.site-public .pro-table .pro-rank { padding-right: 0; text-align: center; width: 3.2rem; }
body.site-public .pro-rank-badge { align-items: center; border-radius: 50%; color: #52798a; display: inline-flex; font-size: .85rem; font-variant-numeric: tabular-nums; font-weight: 700; height: 1.8rem; justify-content: center; width: 1.8rem; }
body.site-public .pro-rank-badge.is-1 { background: #ffe9a8; color: #6b4e00; }
body.site-public .pro-rank-badge.is-2 { background: #e6edf1; color: #3f5866; }
body.site-public .pro-rank-badge.is-3 { background: #f6dcc8; color: #7a3e12; }
body.site-public .pro-player { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
body.site-public .pro-player strong { font-size: .95rem; font-weight: 700; }
body.site-public .pro-sub { color: #6b8794; font-size: .78rem; }
body.site-public .pro-sub:empty { display: none; }
body.site-public .pro-team { align-items: center; color: #08283a; display: inline-flex; font-size: .9rem; font-weight: 600; gap: .55rem; text-decoration: none; }
body.site-public .pro-team:hover span { text-decoration: underline; }
body.site-public .pro-table .public-team-logo.small { height: 28px; width: 28px; }
body.site-public .pro-table .pro-num { font-variant-numeric: tabular-nums; text-align: center; width: 4.5rem; }
body.site-public .pro-table td.pro-num strong { font-size: 1.05rem; font-weight: 800; }
body.site-public .pro-table td.pro-num strong.is-zero { color: #b6c7cf; font-weight: 600; }
body.site-public .pro-table td.pro-num strong.is-red { color: #c92a2a; }
body.site-public .pro-table thead .foul-card { display: inline-block; vertical-align: middle; }
body.site-public .pro-empty { color: #6b8794; padding: 1.5rem 1rem !important; text-align: center; }
/* Sur téléphone : l'équipe passe sous le nom du joueur. */
body.site-public .pro-sub-team { display: none; }
@media (max-width: 575.98px) {
    body.site-public .pro-table .pro-team-col { display: none; }
    body.site-public .pro-sub-team { display: inline; }
    body.site-public .pro-table thead th, body.site-public .pro-table tbody td { padding: .6rem .7rem; }
    body.site-public .pro-table .pro-rank { width: 2.6rem; }
    body.site-public .pro-table .pro-num { width: 3.4rem; }
}

/* Classement : même tableau que les statistiques ; points en avant, détail masqué sur téléphone. */
body.site-public .pro-standing { margin-bottom: 1.25rem; }
body.site-public .pro-standing > header { background: #fff; border-bottom: 1px solid #dbe6ec; color: #08283a; font-family: var(--p-display); font-size: 1rem; letter-spacing: .03em; padding: .8rem 1rem; text-transform: uppercase; }
body.site-public .pro-standing .table-responsive { margin: 0; }
body.site-public .pro-table .pro-num { width: 3rem; }
body.site-public .pro-standing .pro-table th.points, body.site-public .pro-standing .pro-table td.points { background: #f1f7fa; color: #08283a; font-family: inherit; width: 3.6rem; }
body.site-public .pro-standing .pro-table td.points strong { font-size: 1.05rem; font-weight: 800; }
body.site-public .pro-standing .pro-table td.pro-num { color: #3d5b69; }
body.site-public .pro-diff.is-plus { color: #12805f !important; font-weight: 700; }
body.site-public .pro-diff.is-minus { color: #c92a2a !important; font-weight: 700; }
body.site-public .pro-standing .public-pool-matches { border-top: 1px solid #edf3f6; }
@media (max-width: 575.98px) { body.site-public .pro-table .pro-optional { display: none; } }
body.site-public .pro-standing .pro-table thead th.points { font-size: .72rem; }
/* Menu du site public : défilement horizontal sur téléphone, sans barre de défilement visible. */
body.site-public .public-event-nav { scrollbar-width: none; }
body.site-public .public-event-nav::-webkit-scrollbar { display: none; }

/* Statistiques : buteurs et cartons côte à côte sur grand écran, meilleures attaques en dessous. */
body.site-public .pro-stats-grid { display: grid; gap: 1.5rem 2rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 992px) { body.site-public .pro-stats-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
body.site-public .pro-stats-col { min-width: 0; }
@media (min-width: 992px) { body.site-public .pro-stats-col .pro-team-col { display: none; } body.site-public .pro-stats-col .pro-sub-team { display: inline; } }

body.site-public .pro-table td.is-red-text { color: #c92a2a; font-weight: 700; }

/* Calendrier public : liste de matchs façon feuille de résultats. */
body.site-public .pro-fixtures-tools { align-items: center; display: flex; flex-wrap: wrap; gap: .75rem 1rem; margin-bottom: 1.25rem; }
body.site-public .pro-fixtures-tools .public-search { flex: 1 1 18rem; margin: 0; }
body.site-public .pro-chips { display: flex; flex-wrap: wrap; gap: .4rem; }
body.site-public .pro-chip { background: #fff; border: 1px solid #cfdde4; border-radius: 999px; color: #3d5b69; font-size: .82rem; font-weight: 600; padding: .35rem .85rem; }
body.site-public .pro-chip:hover { border-color: #008fb8; color: #08283a; }
body.site-public .pro-chip.is-active { background: #08283a; border-color: #08283a; color: #fff; }
body.site-public .public-schedule .public-match-day { background: #fff; border: 1px solid #dbe6ec; border-radius: 14px; margin-bottom: 1rem; overflow: hidden; }
body.site-public .public-schedule .public-match-day[hidden] { display: none; }
body.site-public .public-schedule .public-match-day > summary { align-items: center; background: #fff; border-bottom: 1px solid #dbe6ec; color: #08283a; cursor: pointer; display: flex; font-family: var(--p-display); font-size: 1rem; gap: .75rem; letter-spacing: .03em; list-style: none; padding: .8rem 1rem; text-transform: uppercase; }
body.site-public .public-schedule .public-match-day > summary::-webkit-details-marker { display: none; }
body.site-public .public-schedule .public-match-day > summary::after { color: #6b8794; content: attr(data-count); font-family: system-ui, sans-serif; font-size: .75rem; font-weight: 600; letter-spacing: 0; margin-left: auto; text-transform: none; }
body.site-public .public-schedule .public-match-day:not([open]) > summary { border-bottom: 0; margin-bottom: 0; }
body.site-public .pro-fixtures { display: block !important; gap: 0 !important; padding: 0 !important; }
body.site-public .pro-fixture { align-items: center; background: #fff; border: 0 !important; border-radius: 0 !important; border-top: 1px solid #edf3f6 !important; box-shadow: none !important; display: grid !important; gap: .25rem 1rem; grid-template-columns: 6.5rem minmax(0, 1fr) minmax(0, 1fr) 7rem; margin: 0 !important; padding: .8rem 1rem !important; position: relative; }
body.site-public .pro-fixture:first-child { border-top: 0 !important; }
body.site-public .pro-fixture.is-clickable:hover { background: #f8fbfc; }
body.site-public .pro-fixture[hidden] { display: none !important; }
body.site-public .pro-fixture .public-match-meta { align-items: flex-start; border: 0 !important; display: flex; flex-direction: column; gap: .1rem; margin: 0 !important; padding: 0 !important; }
body.site-public .pro-fixture-time { color: #08283a; font-size: 1rem; font-variant-numeric: tabular-nums; font-weight: 800; }
body.site-public .pro-fixture-place { color: #6b8794; font-size: .75rem; line-height: 1.25; }
body.site-public .pro-fixture .public-match-team { align-items: center; border: 0 !important; display: flex; gap: .6rem; margin: 0 !important; min-width: 0; padding: 0 !important; }
body.site-public .pro-fixture .public-match-team.is-home { justify-content: flex-end; }
body.site-public .pro-fixture .public-match-team .public-team-inline { align-items: center; color: #08283a; display: flex; gap: .55rem; min-width: 0; position: relative; text-decoration: none; z-index: 2; }
body.site-public .pro-fixture .public-match-team .public-team-inline strong { font-size: .95rem; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.site-public .pro-fixture .public-match-team.is-home .public-team-inline { justify-content: flex-end; text-align: right; }
body.site-public .pro-fixture .public-match-team b { align-items: center; background: #eef3f6; border-radius: 8px; color: #08283a; display: inline-flex; flex: 0 0 auto; font-size: 1.05rem; font-variant-numeric: tabular-nums; font-weight: 800; height: 2.1rem; justify-content: center; min-width: 2.1rem; padding: 0 .4rem; }
body.site-public .pro-fixture .public-match-team.is-away b { order: -1; }
body.site-public .pro-fixture .public-match-team b.is-win { background: #12805f; color: #fff; }
body.site-public .pro-fixture .public-match-team b.is-draw { background: #e8a200; color: #fff; }
body.site-public .pro-fixture .public-match-team b.is-loss { background: #c92a2a; color: #fff; }
body.site-public .pro-fixture.is-upcoming .public-match-team b { background: transparent; color: #b6c7cf; }
body.site-public .pro-fixture-status { display: flex; justify-content: flex-end; }
body.site-public .pro-fixture .public-match-open { display: none !important; }
body.site-public .pro-fixture .public-match-link { inset: 0; position: absolute; z-index: 1; }
body.site-public .pro-fixture.is-live { box-shadow: inset 3px 0 0 #e03131 !important; }
body.site-public .pro-fixture.is-cancelled { opacity: .6; }
body.site-public .pro-fixtures-none { color: #6b8794; padding: 1.5rem; text-align: center; }
@media (max-width: 767.98px) {
    body.site-public .pro-fixture { grid-template-columns: minmax(0, 1fr) auto; padding: .75rem .9rem !important; }
    body.site-public .pro-fixture .public-match-meta { align-items: baseline; flex-direction: row; flex-wrap: wrap; gap: .5rem; grid-column: 1; grid-row: 1; }
    body.site-public .pro-fixture-status { grid-column: 2; grid-row: 1; }
    body.site-public .pro-fixture .public-match-team { grid-column: 1 / -1; justify-content: space-between !important; }
    body.site-public .pro-fixture .public-match-team.is-home .public-team-inline { flex-direction: row-reverse; justify-content: flex-end; text-align: left; }
    body.site-public .pro-fixture .public-match-team.is-away b { order: 2; }
}
@media (max-width: 767.98px) { body.site-public .pro-fixture-place { margin-left: 0; } }

/* Alignement : chaque équipe colle à son score, de part et d'autre du centre. */
@media (min-width: 768px) {
    body.site-public .pro-fixture { grid-template-columns: 6.5rem minmax(0, 1fr) minmax(0, 1fr) 7rem; column-gap: .5rem; }
    body.site-public .pro-fixture .public-match-team.is-home { justify-content: flex-end !important; }
    body.site-public .pro-fixture .public-match-team.is-away { justify-content: flex-start !important; }
    body.site-public .pro-fixture .public-match-team b { min-width: 2.4rem; }
}
body.site-public .public-match-day.is-past > summary { color: #52798a; }

/* Classements : un onglet par phase. */
body.site-public .pro-phase-tabs { background: #fff; border: 1px solid #dbe6ec; border-radius: 999px; display: inline-flex; flex-wrap: wrap; gap: 4px; margin-bottom: 1.25rem; padding: 4px; }
body.site-public .pro-phase-tabs a { border-radius: 999px; color: #3d5b69; font-size: .9rem; font-weight: 700; padding: .45rem 1.1rem; text-decoration: none; }
body.site-public .pro-phase-tabs a:hover { background: #f1f7fa; color: #08283a; }
body.site-public .pro-phase-tabs a.active { background: #08283a; color: #fff; }

/* Tableau à élimination directe : une colonne par tour, les matchs centrés entre ceux du tour précédent. */
body.site-public .pro-bracket { background: #fff; border: 1px solid #dbe6ec; border-radius: 14px; margin-bottom: 1.25rem; overflow: hidden; }
body.site-public .pro-bracket-head { border-bottom: 1px solid #dbe6ec; padding: .8rem 1rem; }
body.site-public .pro-bracket-head h3 { color: #08283a; font-family: var(--p-display); font-size: 1rem; letter-spacing: .03em; margin: 0; text-transform: uppercase; }
body.site-public .pro-bracket-scroll { overflow-x: auto; padding: 1rem; scroll-snap-type: x proximity; }
body.site-public .pro-bracket-grid { display: grid; gap: 0 2.2rem; grid-auto-columns: minmax(15rem, 1fr); grid-auto-flow: column; min-width: min-content; }
body.site-public .pro-bracket-round { display: flex; flex-direction: column; scroll-snap-align: start; }
body.site-public .pro-bracket-label { color: #52798a; font-size: .72rem; font-weight: 700; letter-spacing: .06em; margin: 0 0 .6rem; text-align: center; text-transform: uppercase; }
body.site-public .pro-bracket-matches { display: flex; flex: 1; flex-direction: column; justify-content: space-around; gap: .9rem; }
body.site-public .pro-bracket-match { background: #fff; border: 1px solid #dbe6ec; border-radius: 10px; box-shadow: 0 1px 2px rgba(8,40,58,.05); position: relative; }
body.site-public .pro-bracket-match.is-clickable:hover { border-color: #008fb8; box-shadow: 0 4px 14px rgba(0,143,184,.12); }
body.site-public .pro-bracket-match.is-live { border-color: #e03131; box-shadow: inset 3px 0 0 #e03131; }
/* Trait vers le tour suivant. */
body.site-public .pro-bracket-round:not(.is-final) .pro-bracket-match::after { border-top: 2px solid #cfdde4; content: ""; position: absolute; right: -2.2rem; top: 50%; width: 2.2rem; }
body.site-public .pro-bracket-round.is-final .pro-bracket-match { border-color: #08283a; border-width: 2px; }
body.site-public .pro-bracket-team { align-items: center; display: flex; gap: .5rem; min-height: 2.6rem; padding: .35rem .6rem; }
body.site-public .pro-bracket-team + .pro-bracket-team { border-top: 1px solid #edf3f6; }
body.site-public .pro-bracket-team .public-team-logo.small { flex: 0 0 auto; height: 24px; width: 24px; }
body.site-public .pro-bracket-name { color: #08283a; flex: 1; font-size: .9rem; font-weight: 600; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.site-public .pro-bracket-team.is-unknown .pro-bracket-name { color: #8aa3ae; font-style: italic; font-weight: 500; }
body.site-public .pro-bracket-team.is-winner .pro-bracket-name { font-weight: 800; }
body.site-public .pro-bracket-team.is-loser .pro-bracket-name { color: #8aa3ae; }
body.site-public .pro-bracket-score { align-items: center; background: #eef3f6; border-radius: 6px; color: #08283a; display: inline-flex; font-size: .95rem; font-variant-numeric: tabular-nums; font-weight: 800; height: 1.8rem; justify-content: center; min-width: 1.8rem; }
body.site-public .pro-bracket-team.is-winner .pro-bracket-score { background: #12805f; color: #fff; }
body.site-public .pro-bracket-team.is-loser .pro-bracket-score { background: #f3f6f8; color: #8aa3ae; }
body.site-public .pro-bracket-tag { background: #e6f4ef; border-radius: 999px; color: #12805f; font-size: .65rem; font-weight: 700; padding: .05rem .4rem; text-transform: uppercase; }
body.site-public .pro-bracket-tag.is-forfeit { background: #fdecec; color: #b42318; }
body.site-public .pro-bracket-meta { border-top: 1px solid #edf3f6; color: #6b8794; font-size: .72rem; margin: 0; padding: .3rem .6rem; }
body.site-public .pro-bracket-live { color: #e03131; font-weight: 700; text-transform: uppercase; }
body.site-public .pro-bracket-link { inset: 0; position: absolute; }

/* Tirage à chaque tour : les tours ne sont pas reliés entre eux. */
body.site-public .pro-bracket.is-draw .pro-bracket-match::after { display: none; }
body.site-public .pro-bracket.is-draw .pro-bracket-matches { justify-content: flex-start; }
body.site-public .pro-bracket-round.is-third .pro-bracket-match::after { display: none; }
body.site-public .pro-bracket-round.is-third .pro-bracket-matches { justify-content: center; }

/* Listes longues des statistiques : 10 lignes, puis « Voir les N autres ». */
body.site-public .pro-collapsible:not(.is-expanded) .pro-more-row { display: none; }
body.site-public .pro-more-btn { align-items: center; background: #f5f9fb; border: 0; border-top: 1px solid #dbe6ec; color: #007a9e; display: flex; font-size: .88rem; font-weight: 700; gap: .4rem; justify-content: center; padding: .7rem 1rem; width: 100%; }
body.site-public .pro-more-btn:hover { background: #eaf4f8; }
body.site-public .pro-more-btn .is-open-label { display: none; }
body.site-public .pro-collapsible.is-expanded .pro-more-btn .is-open-label { display: inline; }
body.site-public .pro-collapsible.is-expanded .pro-more-btn .is-closed-label { display: none; }
body.site-public .pro-collapsible.is-expanded .pro-more-btn .bi { transform: rotate(180deg); }
body.site-public .public-penalties { color: #52798a; display: block; font-size: .8rem; font-weight: 700; letter-spacing: .02em; }

/* Fiche du match (.public-match-facts) : date, terrain et arbitre en une ligne discrète au bas du tableau de score. */
body.site-public .public-match-facts { border-top: 1px solid var(--p-soft); color: var(--p-muted); display: flex; flex-wrap: wrap; font-size: .8rem; gap: .3rem 1.4rem; grid-column: 1 / -1; justify-content: center; list-style: none; margin: .35rem 0 0; padding: .65rem 0 0; }
body.site-public .public-match-facts li { align-items: center; display: inline-flex; gap: .35rem; white-space: nowrap; }
body.site-public .public-match-facts i { color: var(--p-band); }

/* Cartes de match de la fiche d'équipe : phase et date à gauche, état à droite. */
body.site-public .team-matches .public-match-meta { align-items: center; display: flex; gap: .5rem; justify-content: space-between; }
body.site-public .team-matches .public-match-tags { color: #6b8794; font-size: .8rem; gap: .2rem .5rem; min-width: 0; }
body.site-public .team-matches .public-match-stage-name { color: #08283a; font-weight: 700; }
body.site-public .team-matches .public-match-tags { align-items: flex-start; flex-direction: column; flex-wrap: nowrap; gap: .05rem; line-height: 1.3; }
body.site-public .team-matches .public-match-tags > span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* « Matchs de Poule A » sous un classement : une vraie ligne repliable. */
body.site-public .pro-standing .public-pool-matches { margin: 0; }
body.site-public .pro-standing .public-pool-matches > summary { align-items: center; color: #007a9e; cursor: pointer; display: flex; font-size: .88rem; font-weight: 700; gap: .45rem; list-style: none; padding: .75rem 1rem; }
body.site-public .pro-standing .public-pool-matches > summary::-webkit-details-marker { display: none; }
body.site-public .pro-standing .public-pool-matches > summary::before { content: "\F282"; font-family: "bootstrap-icons"; font-size: .8rem; transition: transform .15s ease; }
body.site-public .pro-standing .public-pool-matches[open] > summary::before { transform: rotate(180deg); }
body.site-public .pro-standing .public-pool-matches > summary:hover { background: #f5f9fb; }
body.site-public .pro-standing .public-pool-matches > ul { padding: 0 1rem .8rem; }
body.site-public .pro-standing .public-pool-matches > ul { gap: 0; margin: 0 auto; max-width: 44rem; }
body.site-public .pro-standing .public-pool-matches li { background: transparent; border-bottom: 1px solid #edf3f6; border-radius: 0; grid-template-columns: 7.5rem minmax(0, 1fr) 4rem minmax(0, 1fr); padding: .5rem 0; }
body.site-public .pro-standing .public-pool-matches li:last-child { border-bottom: 0; }
body.site-public .pro-standing .public-pool-matches li > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.site-public .pro-standing .public-pool-matches li b { background: #eef3f6; border-radius: 6px; color: #08283a; font-variant-numeric: tabular-nums; padding: .15rem 0; text-align: center; }
body.site-public .pro-standing .public-pool-matches .public-pool-date { color: #6b8794; font-size: .78rem; }
@media (max-width: 575.98px) { body.site-public .pro-standing .public-pool-matches li { font-size: .8rem; grid-template-columns: 4.6rem minmax(0, 1fr) 3rem minmax(0, 1fr); } }
body.site-public .pro-standing .public-pool-matches .public-pool-date small { font-size: 1em; }
body.site-public .pro-standing .public-pool-matches .public-pool-date small::before { content: "· "; }
@media (max-width: 575.98px) { body.site-public .pro-standing .public-pool-matches .public-pool-date { line-height: 1.25; white-space: normal; } body.site-public .pro-standing .public-pool-matches .public-pool-date small { display: block; } body.site-public .pro-standing .public-pool-matches .public-pool-date small::before { content: none; } }

/* Texte enrichi affiché sur le site public (filtre |rich_text). */
body.site-public .rich-content > :last-child { margin-bottom: 0; }
body.site-public .rich-content h3, body.site-public .rich-content h4 { font-size: 1.1rem; font-weight: 700; margin: 1rem 0 .4rem; }
body.site-public .rich-content ul, body.site-public .rich-content ol { padding-left: 1.3rem; }
body.site-public .rich-content a { text-decoration: underline; }
body.site-public .public-description.rich-content { margin-bottom: 1rem; }

/* Mode « app » (application mobile TournLive, MobileAppViewSubscriber) : les onglets de l'application
   remplacent le menu du tournoi ; ni barre du site, ni inscription, ni pieds de page. Le bandeau du
   tournoi ne reste que sur l'onglet Tournoi. */
body.site-public.is-app-view > nav.navbar,
body.site-public.is-app-view > footer.app-footer,
body.site-public.is-app-view .public-event-nav,
body.site-public.is-app-view .public-event-footer,
body.site-public.is-app-view .public-register-cta,
body.site-public.is-app-view .public-hero-action,
body.site-public.is-app-view a[href*="/register-team"] { display: none !important; }
body.site-public.is-app-view:not(.is-app-home) .public-event-hero { display: none !important; }
body.site-public.is-app-view .public-event-page { padding-bottom: 1rem; }

/* ===== Site public, refonte du 2026-10-21 (étape A) =====
   Barre fine TournLive, en-tête « carte d'identité » aligné à gauche, bande « En direct », menu
   vertical à gauche sur grand écran. Passe après les règles « Maillot » ci-dessus. */
body.site-public .public-event-page { padding: 0 0 3rem; background: var(--p-bg); }
body.site-public .public-topbar { align-items: center; background: #fff; border-bottom: 1px solid var(--p-line); color: var(--p-muted); display: flex; font-size: .8rem; gap: .6rem; min-height: 40px; padding: 0 max(1rem, calc((100% - 1320px) / 2)); }
body.site-public .public-topbar-brand { align-items: center; color: var(--p-ink); display: inline-flex; gap: .45rem; text-decoration: none; }
body.site-public .public-topbar-brand img { border-radius: 5px; }
body.site-public .public-topbar-tools { align-items: center; display: flex; gap: 1rem; margin-left: auto; }
body.site-public .public-sync { align-items: center; color: #1e8e5a; display: inline-flex; font-weight: 600; gap: .35rem; }
body.site-public .public-sync i { font-size: .5rem; }
body.site-public .public-sync[data-state="offline"] { color: #c25000; }
body.site-public .public-share { align-items: center; background: none; border: 0; color: var(--p-muted); display: inline-flex; font-size: .8rem; font-weight: 600; gap: .35rem; padding: 0; }
body.site-public .public-share:hover { color: var(--p-ink); }
body.site-public a.public-share { text-decoration: none; }

body.site-public .public-event-hero, body.site-public .public-event-hero.compact { background: linear-gradient(105deg, var(--p-band) 0 62%, #00b8d4 62% 63.2%, #0e4a70 63.2%); color: #fff; display: block; margin: 0; min-height: 0; overflow: hidden; place-items: normal; }
body.site-public .public-hero-main { align-items: center; display: flex; flex-wrap: wrap; gap: 1rem 1.25rem; padding: 1.1rem max(1rem, calc((100% - 1320px) / 2)); position: relative; }
body.site-public .public-event-identity { align-items: center; color: inherit; display: flex; gap: 1rem; min-width: 0; text-align: left; }
body.site-public .public-event-logo { background: #fff; border: 0; border-radius: 14px; box-shadow: 0 4px 14px rgba(0,0,0,.22); flex: none; font-size: 1.9rem; height: 64px; margin: 0; overflow: hidden; width: 64px; }
body.site-public .public-event-identity h1 { font-size: clamp(1.45rem, 3vw, 2rem); line-height: 1.1; margin: 0; overflow-wrap: anywhere; }
body.site-public .public-event-chips { display: flex; flex-wrap: wrap; gap: .35rem; list-style: none; margin: .45rem 0 0; padding: 0; }
body.site-public .public-event-chips li { align-items: center; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.2); border-radius: 999px; display: inline-flex; font-size: .78rem; gap: .3rem; padding: .12rem .6rem; }
body.site-public .public-event-chips li.public-event-sport { color: inherit; font-family: inherit; font-size: .78rem; font-weight: 700; letter-spacing: 0; text-transform: none; }
body.site-public .public-hero-side { align-items: center; display: flex; flex-wrap: wrap; gap: .5rem; justify-content: flex-end; margin-left: auto; }
body.site-public .public-event-hero .public-hero-action { font-size: .82rem; padding: .35rem .7rem; position: static; }
body.site-public .public-live-pill { align-items: center; background: #e5392b; border-radius: 999px; color: #fff; display: inline-flex; font-size: .85rem; font-weight: 800; gap: .45rem; padding: .35rem .85rem; text-decoration: none; }
body.site-public .public-live-pill:hover { background: #c92d20; color: #fff; }
body.site-public .public-live-pill .public-live-dot, body.site-public .public-live-ticker-label .public-live-dot { background: #fff; }
body.site-public .public-hero-state { align-items: center; background: #fff; border-radius: 999px; color: var(--p-ink); display: inline-flex; font-size: .85rem; font-weight: 700; gap: .4rem; padding: .35rem .85rem; }
body.site-public .public-hero-state.is-done { background: #e6f5ee; color: #1e8e5a; }
body.site-public .public-hero-signup { align-items: center; border-radius: 999px; display: inline-flex; font-family: inherit; font-size: .85rem; font-weight: 700; gap: .4rem; letter-spacing: 0; padding: .35rem .95rem; text-decoration: none; text-transform: none; }
body.site-public .public-live-ticker { align-items: stretch; background: #071e2c; border-bottom: 3px solid var(--p-accent); color: #fff; display: flex; min-height: 52px; }
body.site-public .public-live-ticker-label { align-items: center; background: #e5392b; display: flex; flex: none; font-size: .75rem; font-weight: 800; gap: .5rem; letter-spacing: .08em; padding: 0 1rem; text-transform: uppercase; }
body.site-public .public-live-ticker-items { display: flex; flex: 1; overflow-x: auto; scrollbar-width: none; }
body.site-public .public-live-ticker-items::-webkit-scrollbar { display: none; }
body.site-public .public-live-ticker-item { align-items: center; border-right: 1px solid rgba(255,255,255,.1); color: #fff; display: flex; font-size: .85rem; font-weight: 600; gap: .55rem; padding: 0 1rem; text-decoration: none; white-space: nowrap; }
body.site-public .public-live-ticker-item:hover { background: rgba(255,255,255,.06); color: #fff; }
body.site-public .public-live-ticker-item b { font-size: 1.15rem; font-variant-numeric: tabular-nums; font-weight: 800; }
body.site-public .public-live-ticker-item .match-clock { color: #00c7df; font-size: .75rem; font-weight: 700; }
body.site-public .public-live-ticker-next { align-items: center; color: #9dd8e5; display: flex; font-size: .8rem; gap: .4rem; padding: 0 1rem; white-space: nowrap; }
body.site-public .public-live-ticker-next b { color: #fff; }
body.site-public .public-live-ticker-all { align-items: center; color: #9dd8e5; display: flex; flex: none; font-size: .8rem; font-weight: 700; gap: .35rem; padding: 0 1rem; text-decoration: none; white-space: nowrap; }
body.site-public .public-live-ticker-all:hover { color: #fff; }

body.site-public .public-event-shell { border-radius: 14px; box-shadow: 0 8px 30px rgba(8,40,58,.08); margin: 1.25rem auto 0; max-width: 1320px; }
body.site-public .public-nav-live { background: #e5392b; border-radius: 999px; color: #fff; font-size: .7rem; font-style: normal; font-weight: 800; letter-spacing: 0; margin-left: .35rem; padding: 0 .45rem; }
@media (min-width: 992px) {
    body.site-public .public-event-shell:has(> .public-event-nav) { display: grid; grid-template-columns: 210px minmax(0, 1fr); }
    body.site-public .public-event-nav { align-items: stretch; background: #fff; border-right: 1px solid var(--p-line); flex-direction: column; gap: .15rem; overflow: visible; padding: 1rem .6rem; }
    body.site-public .public-event-nav a { border-bottom: 0; border-radius: 8px; color: var(--p-ink); font-family: inherit; font-size: .92rem; font-weight: 600; gap: .65rem; letter-spacing: 0; padding: .6rem .75rem; text-transform: none; }
    body.site-public .public-event-nav a i { color: var(--p-muted); font-size: 1rem; text-align: center; width: 18px; }
    body.site-public .public-event-nav a:hover { background: var(--p-bg); color: var(--p-ink); }
    body.site-public .public-event-nav a.active { background: #e4f8fc; box-shadow: inset 3px 0 0 #008fb8; color: #007a9e; }
    body.site-public .public-event-nav a.active i { color: inherit; }
    body.site-public .public-event-nav .public-nav-live { margin-left: auto; }
    body.site-public .public-event-nav .public-nav-signup { background: var(--p-accent); color: #fff; justify-content: center; margin-top: 1rem; }
    body.site-public .public-event-nav .public-nav-signup i { color: #fff; }
    body.site-public .public-event-nav .public-nav-signup.active { box-shadow: none; color: #fff; }
    body.site-public .public-event-shell:has(> .public-event-nav) > .public-event-content { margin: 0; max-width: none; padding: 1.5rem 1.75rem 3rem; }
}
@media (max-width: 767.98px) {
    body.site-public .public-topbar-tagline, body.site-public .public-share span { display: none; }
    body.site-public .public-hero-main { padding-bottom: .9rem; padding-top: .9rem; }
    body.site-public .public-event-logo { font-size: 1.4rem; height: 48px; width: 48px; }
    body.site-public .public-hero-side { justify-content: flex-start; margin-left: 0; width: 100%; }
    body.site-public .public-event-hero .public-hero-action span { display: none; }
    body.site-public .public-live-ticker-all { display: none; }
    body.site-public .public-event-shell { border-radius: 0; margin-top: 0; }
}
body.site-public.is-app-view .public-topbar { display: none !important; }

/* Site public, étape B : page « Tournoi » qui s'adapte au moment, documents, motifs de l'en-tête. */
body.site-public .ov-page { display: grid; gap: 1.25rem; }
body.site-public .ov-title { align-items: center; display: flex; font-size: 1.05rem; font-weight: 800; gap: .5rem; margin: 0 0 .65rem; }
body.site-public .ov-title > span { color: #007a9e; font-size: .8rem; font-weight: 600; margin-left: auto; }
body.site-public .ov-title .public-live-dot { background: #e5392b; }
body.site-public .ov-card { background: #fff; border: 1px solid var(--p-line); border-radius: 12px; overflow: hidden; }
body.site-public .ov-card > h2 { align-items: center; border-bottom: 1px solid #eef4f7; display: flex; font-size: 1rem; font-weight: 800; gap: .5rem; margin: 0; padding: .8rem 1rem; }
body.site-public .ov-card > h2 > span { color: var(--p-muted); font-size: .8rem; font-weight: 600; }
body.site-public .ov-card > h2 > a { color: #007a9e; font-size: .8rem; font-weight: 600; margin-left: auto; text-decoration: none; }
body.site-public .ov-scoreboard { align-items: center; background: linear-gradient(180deg, #fff, #f6fbfd); color: var(--p-ink); display: grid; gap: 1rem; grid-template-columns: 1fr auto 1fr; padding: 1.25rem 1.5rem; text-decoration: none; }
body.site-public .ov-scoreboard:hover { border-color: #9dd8e5; color: var(--p-ink); }
body.site-public .ov-team { align-items: center; display: flex; flex-direction: column; font-size: 1.05rem; gap: .5rem; text-align: center; }
body.site-public .ov-team .public-team-logo { border-radius: 14px; font-size: 1.5rem; height: 56px; width: 56px; }
body.site-public .ov-score { align-items: center; display: flex; flex-direction: column; gap: .35rem; }
body.site-public .ov-score b { font-family: var(--p-display); font-size: 3rem; font-variant-numeric: tabular-nums; font-weight: 800; line-height: 1; }
body.site-public .ov-score .match-clock { background: #fdecea; border-radius: 999px; color: #e5392b; font-size: .82rem; font-weight: 800; padding: .1rem .6rem; }
body.site-public .ov-feed { background: #fff; border: 1px solid var(--p-line); border-radius: 0 0 12px 12px; border-top: 0; color: var(--p-muted); display: flex; flex-wrap: wrap; font-size: .82rem; gap: .4rem 1.25rem; list-style: none; margin: -12px 0 0; padding: .9rem 1.5rem .6rem; }
body.site-public .ov-feed b { color: var(--p-ink); }
body.site-public .ov-more-live { color: var(--p-muted); font-size: .82rem; margin: .5rem 0 0; }
body.site-public .ov-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
body.site-public .ov-row { align-items: center; border-top: 1px solid #eef4f7; color: var(--p-ink); display: grid; font-size: .88rem; gap: .6rem; grid-template-columns: 5.2rem minmax(0, 1fr) auto; padding: .6rem 1rem; text-decoration: none; }
body.site-public .ov-row:first-of-type { border-top: 0; }
body.site-public .ov-row:hover { background: var(--p-bg); color: var(--p-ink); }
body.site-public .ov-time { color: #007a9e; font-weight: 800; }
body.site-public .ov-row small { color: var(--p-muted); font-size: .75rem; }
body.site-public .ov-empty, body.site-public .ov-teams { color: var(--p-muted); font-size: .88rem; margin: 0; padding: .8rem 1rem; }
body.site-public .ov-mini { border-collapse: collapse; font-size: .88rem; width: 100%; }
body.site-public .ov-mini td { border-top: 1px solid #eef4f7; padding: .55rem 1rem; }
body.site-public .ov-mini tr:first-child td { border-top: 0; }
body.site-public .ov-mini td:last-child { font-weight: 800; text-align: right; white-space: nowrap; }
body.site-public .ov-mini small { color: var(--p-muted); }
body.site-public .ov-rank { align-items: center; background: #eef3f6; border-radius: 50%; display: inline-flex; font-size: .72rem; font-weight: 800; height: 1.35rem; justify-content: center; margin-right: .55rem; width: 1.35rem; }
body.site-public .ov-rank.r1 { background: #f5c542; color: #5a4200; }
body.site-public .ov-rank.r2 { background: #d5dde2; }
body.site-public .ov-rank.r3 { background: #e2a86f; color: #5a2d00; }
body.site-public .ov-about-grid { display: grid; gap: 1rem; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); }
body.site-public .ov-presentation { padding-bottom: 1rem; }
body.site-public .ov-presentation .public-description { padding: .9rem 1.25rem 0; }
body.site-public .ov-presentation .public-overview-image { border-radius: 10px; display: block; margin: .75rem 1.25rem 0; max-width: calc(100% - 2.5rem); }
body.site-public .ov-side { align-content: start; display: grid; gap: 1rem; }
body.site-public .ov-doc { align-items: center; border-top: 1px solid #eef4f7; color: var(--p-ink); display: grid; gap: .75rem; grid-template-columns: 2.4rem minmax(0, 1fr) auto; padding: .65rem 1rem; text-decoration: none; }
body.site-public .ov-card > h2 + .ov-doc { border-top: 0; }
body.site-public .ov-doc:hover { background: var(--p-bg); color: var(--p-ink); }
body.site-public .ov-doc strong { display: block; font-size: .9rem; }
body.site-public .ov-doc small { color: var(--p-muted); font-size: .75rem; }
body.site-public .ov-doc > i { color: var(--p-muted); }
body.site-public .ov-doc-icon { align-items: center; border-radius: 9px; display: flex; font-size: 1.1rem; height: 2.4rem; justify-content: center; width: 2.4rem; }
body.site-public .ov-doc-icon.is-pdf { background: #fdecea; color: #c23b2e; }
body.site-public .ov-doc-icon.is-word { background: #e6eefb; color: #2b5bb8; }
body.site-public .ov-doc-icon.is-excel { background: #e6f5ee; color: #1e8e5a; }
body.site-public .ov-doc-icon.is-image, body.site-public .ov-doc-icon.is-file { background: #e4f8fc; color: #007a9e; }
body.site-public .ov-facts { color: var(--p-muted); display: grid; font-size: .86rem; gap: .1rem; list-style: none; margin: 0; padding: .6rem 1rem; }
body.site-public .ov-facts li { align-items: baseline; display: flex; flex-wrap: wrap; gap: .35rem; padding: .3rem 0; }
body.site-public .ov-facts strong { color: var(--p-ink); font-weight: 600; }
body.site-public .ov-register { display: block; margin: 0 1rem 1rem; padding: .55rem; text-align: center; text-decoration: none; }
@media (max-width: 991.98px) { body.site-public .ov-about-grid { grid-template-columns: 1fr; } }
@media (max-width: 575.98px) { body.site-public .ov-scoreboard { padding: 1rem .75rem; } body.site-public .ov-score b { font-size: 2.3rem; } body.site-public .ov-team { font-size: .9rem; } }

/* Motifs de l'en-tête (formules payantes) : dessinés par-dessus la couleur, sans image. */
body.site-public .public-event-hero[class*="has-pattern-"] { position: relative; }
body.site-public .public-event-hero[class*="has-pattern-"] > .public-event-hero-overlay { display: block !important; inset: 0; opacity: .5; pointer-events: none; position: absolute; }
.has-pattern-pitch > .public-event-hero-overlay, .pattern-swatch.has-pattern-pitch { background-image: radial-gradient(circle at 30% 50%, transparent 54px, rgba(255,255,255,.28) 55px 57px, transparent 58px), linear-gradient(90deg, transparent calc(30% - 1px), rgba(255,255,255,.28) calc(30% - 1px) calc(30% + 1px), transparent calc(30% + 1px)); }
.has-pattern-net > .public-event-hero-overlay, .pattern-swatch.has-pattern-net { background-image: repeating-linear-gradient(45deg, transparent 0 10px, rgba(255,255,255,.22) 10px 11px), repeating-linear-gradient(-45deg, transparent 0 10px, rgba(255,255,255,.22) 10px 11px); }
.has-pattern-stripes > .public-event-hero-overlay, .pattern-swatch.has-pattern-stripes { background-image: repeating-linear-gradient(90deg, transparent 0 46px, rgba(255,255,255,.14) 46px 92px); }
.has-pattern-dots > .public-event-hero-overlay, .pattern-swatch.has-pattern-dots { background-image: radial-gradient(rgba(255,255,255,.35) 1.5px, transparent 2px); background-size: 14px 14px; }
.has-pattern-waves > .public-event-hero-overlay, .pattern-swatch.has-pattern-waves { background-image: radial-gradient(circle at 50% 120%, rgba(255,255,255,.2) 30%, transparent 31%); background-size: 44px 30px; }
.has-pattern-diagonal > .public-event-hero-overlay, .pattern-swatch.has-pattern-diagonal { background-image: linear-gradient(115deg, transparent 0 55%, rgba(255,255,255,.18) 55% 58%, transparent 58% 66%, rgba(255,255,255,.1) 66% 70%, transparent 70%); }
body.site-public .ov-result { background: #eef3f6; border-radius: 6px; font-variant-numeric: tabular-nums; margin: 0 .3rem; padding: .05rem .4rem; }

/* Site public, étape C : page « Matchs », direct épinglé et filtre « Mon équipe ». */
body.site-public .pro-live-now { margin-bottom: 1.1rem; }
body.site-public .pro-live-now h2 { align-items: center; display: flex; font-size: 1.05rem; font-weight: 800; gap: .5rem; margin: 0 0 .65rem; }
body.site-public .pro-live-now h2 .public-live-dot { background: #e5392b; }
body.site-public .pro-live-cards { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
body.site-public .pro-live-card { align-items: center; background: #071e2c; border-left: 4px solid #e5392b; border-radius: 12px; color: #fff; display: grid; gap: .5rem; grid-template-columns: 1fr auto 1fr; padding: .85rem 1rem; text-decoration: none; }
body.site-public .pro-live-card:hover { background: #0b2a3d; color: #fff; }
body.site-public .pro-live-team { font-weight: 700; overflow-wrap: anywhere; }
body.site-public .pro-live-team.is-away { text-align: right; }
body.site-public .pro-live-score { align-items: center; display: flex; flex-direction: column; }
body.site-public .pro-live-score b { font-family: var(--p-display); font-size: 1.9rem; font-variant-numeric: tabular-nums; line-height: 1; }
body.site-public .pro-live-score .match-clock { color: #00c7df; font-size: .75rem; font-weight: 700; }
body.site-public .pro-live-meta { border-top: 1px solid rgba(255,255,255,.1); color: #9dd8e5; display: flex; font-size: .75rem; gap: .5rem; grid-column: 1 / -1; justify-content: space-between; padding-top: .5rem; }
body.site-public .public-team-filter { align-items: center; background: #fff; border: 1px solid var(--p-line); border-radius: 10px; display: inline-flex; gap: .4rem; padding: 0 .6rem; }
body.site-public .public-team-filter i { color: var(--p-accent); }
body.site-public .public-team-filter select { background: transparent; border: 0; color: var(--p-ink); font-size: .9rem; font-weight: 600; max-width: 14rem; outline: 0; padding: .55rem 0; }
body.site-public .public-team-filter:focus-within { border-color: #008fb8; box-shadow: 0 0 0 3px rgba(0,143,184,.15); }

/* Site public, étape D : sur téléphone, menu en bas de l'écran, comme l'application mobile. */
@media (max-width: 767.98px) {
    body.site-public .public-event-page:has(.public-event-nav) { padding-bottom: 5.5rem; }
    body.site-public .public-event-nav { background: #fff !important; border-top: 1px solid var(--p-line); bottom: 0; box-shadow: 0 -6px 18px rgba(8,40,58,.08); display: grid; gap: 0; grid-auto-columns: 1fr; grid-auto-flow: column; left: 0; overflow: visible; padding: .35rem .25rem calc(.45rem + env(safe-area-inset-bottom)); position: fixed; right: 0; z-index: 1030; }
    body.site-public .public-event-nav a { align-items: center; border-bottom: 0; border-radius: 8px; color: var(--p-muted) !important; flex-direction: column; font-family: inherit; font-size: .66rem; font-weight: 600; gap: .1rem; letter-spacing: 0; min-width: 0; padding: .3rem .1rem; position: relative; text-transform: none; }
    body.site-public .public-event-nav a i { font-size: 1.2rem; }
    body.site-public .public-event-nav a span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    body.site-public .public-event-nav a.active { background: transparent; box-shadow: none !important; color: #007a9e !important; }
    body.site-public .public-event-nav a:hover { background: transparent; }
    body.site-public .public-event-nav .public-nav-signup { display: none; }
    body.site-public .public-event-nav .public-nav-live { left: calc(50% + .35rem); margin: 0; position: absolute; top: 0; }
    body.site-public .pro-live-cards { grid-template-columns: 1fr; }
    body.site-public .public-team-filter { width: 100%; }
    body.site-public .public-team-filter select { max-width: none; width: 100%; }
}
/* « À jour » retiré à la demande du porteur du projet : seule « Connexion interrompue » s affiche. */
body.site-public .public-sync[data-state="online"] { display: none; }
