/* Réservations Club de Pétanque de Bulle — thème « Terre battue »
   Noir & blanc éditorial réchauffé d'un accent terracotta (le cochonnet / la terre battue).
   Titres : Bricolage Grotesque · Texte : Instrument Sans (auto-hébergées). */

@font-face{font-family:'Bricolage Grotesque';src:url('fonts/bricolage-bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Bricolage Grotesque';src:url('fonts/bricolage-regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Instrument Sans';src:url('fonts/instrumentsans-regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Instrument Sans';src:url('fonts/instrumentsans-bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}

:root{
    /* Tokens « Terre battue » */
    --ink:#1B1916;
    --paper:#F4F1EA;
    --sand:#EAE2D4;
    --line:#E0D9CC;
    --ember:#C2532E;
    --ember-d:#A3431F;
    --pine:#3F6B4F;
    --ochre:#B07D1A;
    --brick:#8C3B2E;
    --corps:#2B2823;
    /* Alias compat (utilisés ailleurs / en style inline PHP) */
    --vert:#1B1916;
    --vert-fonce:#100E0C;
    --sable:#F4F1EA;
    --bord:#E0D9CC;
    --gris:#6B6458;   /* gris atténué assombri : contraste AA (~5:1) sur fond clair */
    --orange:#B07D1A;   /* en attente */
    --ok:#3F6B4F;       /* approuvé */
    --rouge:#8C3B2E;    /* refusé */
    --r-lg:16px; --r-md:12px; --r-sm:9px;
    --sh:0 18px 38px -22px rgba(27,25,22,.22);
    --serif:'Bricolage Grotesque',system-ui,'Segoe UI',sans-serif;
    --sans:'Instrument Sans',system-ui,'Segoe UI',Arial,sans-serif;
}

*{box-sizing:border-box}

/* Accessibilité : focus clavier visible et homogène + lien d'évitement */
a:focus-visible,button:focus-visible,.btn:focus-visible,summary:focus-visible,
.nav-trigger:focus-visible,.cal-resa:focus-visible,.media-carte:focus-visible,[tabindex]:focus-visible{
    outline:2px solid var(--ember);outline-offset:2px;border-radius:var(--r-sm)
}
.skip-link{position:absolute;left:8px;top:-48px;z-index:200;background:var(--ink);color:#fff;
    padding:10px 16px;border-radius:var(--r-sm);text-decoration:none;font-weight:600;transition:top .15s}
.skip-link:focus{top:8px}

body{
    margin:0;
    overflow-x:hidden;
    font-family:var(--sans);
    color:var(--corps);
    background-color:var(--paper);
    background-image:radial-gradient(rgba(27,25,22,.035) 1px,transparent 1.4px);
    background-size:24px 24px;
    line-height:1.55;
}

h1,h2,h3{font-family:var(--serif);color:var(--ink);letter-spacing:-.4px;text-wrap:balance}
h2{font-size:1.55rem;font-weight:700;margin:1.6em 0 .7em}
h3{font-weight:700;letter-spacing:-.2px}
/* Chiffres alignés (horaires, stats, calendrier, tarifs) */
.bande-stats strong,.evt-date strong,.actu-date strong,.cal-jour,.cal2-num,
table.calendrier td,.evt-horaire,.tarif strong,.ardoise-ligne strong,.ligue-nb{font-variant-numeric:tabular-nums}

/* ---------- En-tête ---------- */
header.site{
    background:var(--ink);
    color:#fff;
    padding:14px 24px;
    display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;
}
header.site h1{
    margin:0;color:#fff;font-family:var(--serif);font-size:1.05rem;font-weight:700;
    letter-spacing:1.6px;text-transform:uppercase;display:flex;align-items:center;gap:12px;
}
header.site h1 a{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none}
header.site h1 a::before{
    content:'';width:34px;height:35px;flex:none;
    background:url('logo.png') no-repeat center / contain;
}
header.site nav{display:flex;flex-wrap:wrap;align-items:center}
header.site a{
    color:#d9d4ca;text-decoration:none;margin-left:18px;font-size:.9rem;letter-spacing:.4px;
    padding-bottom:3px;border-bottom:1px solid transparent;transition:.2s;
}
header.site a:hover{color:#fff;border-bottom-color:var(--ember)}
header.site a.actif{color:#fff;border-bottom-color:var(--ember)}

/* Menu déroulant « Admin ▾ » */
.nav-group{position:relative;display:inline-block;margin-left:18px}
.nav-trigger{background:none;border:0;color:#d9d4ca;font:inherit;font-size:.9rem;letter-spacing:.4px;cursor:pointer;padding:0 0 3px;border-bottom:1px solid transparent;transition:.2s}
.nav-trigger:hover{color:#fff;border-bottom-color:var(--ember)}
.nav-sub{position:absolute;right:0;top:100%;margin-top:10px;min-width:180px;background:#26231f;border:1px solid #3a352e;border-radius:10px;padding:6px;box-shadow:0 18px 34px -16px rgba(0,0,0,.55);display:none;z-index:30}
.nav-group:hover .nav-sub,.nav-group:focus-within .nav-sub{display:block}
header.site .nav-sub a{display:block;margin:0;padding:9px 12px;border-radius:7px;border-bottom:0}
header.site .nav-sub a:hover{background:#332e28;color:#fff;border-bottom:0}

main{max-width:1040px;margin:26px auto;padding:0 16px}

/* ---------- Apparition en cascade ---------- */
@keyframes apparition{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:no-preference){
    main>*{animation:apparition .55s cubic-bezier(.16,1,.3,1) backwards}
    main>*:nth-child(1){animation-delay:.05s}
    main>*:nth-child(2){animation-delay:.12s}
    main>*:nth-child(3){animation-delay:.19s}
    main>*:nth-child(4){animation-delay:.26s}
    main>*:nth-child(5){animation-delay:.33s}
    main>*:nth-child(6){animation-delay:.40s}
}

/* ---------- Boutons ---------- */
.btn{
    display:inline-flex;align-items:center;gap:8px;
    background:var(--ink);color:#fff;border:1px solid transparent;border-radius:var(--r-sm);
    padding:11px 22px;font:inherit;font-weight:600;letter-spacing:.3px;cursor:pointer;text-decoration:none;
    margin-top:12px;transition:background .2s,transform .15s,box-shadow .2s,border-color .2s;
}
.btn:hover{background:#000;box-shadow:0 8px 18px -10px rgba(20,18,15,.5)}
.btn:active{transform:translateY(1px) scale(.99)}
.btn-danger{background:var(--brick)}
.btn-danger:hover{background:#6f2d22}
.btn-secondaire{background:transparent;color:var(--ink);border-color:var(--line)}
.btn-secondaire:hover{background:#fff;border-color:var(--ink);box-shadow:none}
.btn-petit{padding:6px 14px;margin-top:0;font-size:.86rem}
/* Accent terracotta réservé aux actions phares */
.btn-hero,#demande button.btn,#demande .btn[type=submit]{background:var(--ember);color:#fff;border-color:transparent}
.btn-hero:hover,#demande button.btn:hover{background:var(--ember-d);box-shadow:0 10px 22px -10px rgba(194,83,46,.6)}

/* ---------- Hero ---------- */
/* Bande sponsors en haut de l'accueil */
.bande-sponsors{
    display:flex;align-items:center;justify-content:center;gap:24px 46px;flex-wrap:wrap;
    width:fit-content;max-width:100%;margin:0 auto 24px;padding:18px 44px;
    background:var(--ink);border:1px solid #39322a;border-radius:var(--r-md);box-shadow:var(--sh);
}
.bande-sponsors-label{font-size:.74rem;letter-spacing:1.6px;text-transform:uppercase;color:#b3aa9c}
.bande-sponsors a{display:block;line-height:0;transition:opacity .15s}
.bande-sponsors a:hover{opacity:.7}
.bande-sponsors img{height:84px;width:auto;display:block}  /* meme hauteur pour les 2 logos (blancs transparents) */
.bande-sponsors + .hero{margin-top:0}   /* la bande prend la place : pas de remontée du hero */
@media (max-width:600px){
    .bande-sponsors{gap:14px 30px;padding:16px 14px}
    .bande-sponsors-label{flex-basis:100%;text-align:center}   /* label seul sur sa ligne */
    .bande-sponsors img{height:62px}                            /* -> les 2 logos cote a cote en dessous */
}

.hero{
    position:relative;overflow:hidden;
    width:100vw;margin:-26px 0 0 calc(50% - 50vw);
    background:radial-gradient(135% 150% at 78% -8%,#42392d 0%,#2c2519 52%,#241d15 100%);
    color:#fff;
}
.hero-interieur{max-width:1040px;margin:0 auto;padding:48px 16px 116px;position:relative;z-index:1}
.hero-surtitre{margin:0 0 16px;font-size:.74rem;letter-spacing:3px;text-transform:uppercase;color:#b6ad9d}
.hero h2{
    font-family:var(--serif);color:#fff;margin:0 0 26px;font-size:3.1rem;line-height:1.02;
    letter-spacing:-1.4px;font-weight:700;max-width:9ch;
}
.hero h2 em{color:var(--ember);font-style:normal}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap}
.btn-fantome{background:rgba(255,255,255,.08);color:#fff;border:1px solid rgba(255,255,255,.5)}
.btn-fantome:hover{background:rgba(255,255,255,.16);border-color:#fff;box-shadow:none}
/* Vignette pétanque + repas (SVG injecté dans index.php) */
.hero .motif{position:absolute;top:92px;right:max(16px, calc((100% - 1040px) / 2 + 16px));width:360px;height:auto;opacity:.85;pointer-events:none;z-index:0}

/* ---------- Bande chiffres clés ---------- */
.bande-stats{
    display:grid;grid-template-columns:repeat(3,1fr);
    background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh);
    position:relative;margin:-56px 0 48px;
}
.bande-stats>div{padding:22px 28px}
.bande-stats>div+div{border-left:1px solid var(--line)}
.bande-stats strong{display:block;font-family:var(--serif);font-weight:700;font-size:1.65rem;letter-spacing:-.5px;color:var(--ink)}
.bande-stats span{font-size:.85rem;color:var(--gris)}

/* ---------- Conditions (bande sable) ---------- */
.bande-conditions{
    width:100vw;margin:0 0 30px calc(50% - 50vw);
    background:var(--sand);border-top:1px solid var(--line);border-bottom:1px solid var(--line);
}
.bande-conditions-interieur{max-width:1040px;margin:0 auto;padding:0 16px 40px}
.surtitre{margin:0 0 9px;font-size:.72rem;letter-spacing:2.5px;text-transform:uppercase;color:var(--gris)}
.conditions-grille{display:grid;grid-template-columns:.92fr 1.08fr;gap:44px;align-items:center}
.conditions-titre h2{font-family:var(--serif);margin:0 0 8px;font-size:1.9rem;letter-spacing:-.8px}
.photo-boulodrome{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-md);box-shadow:var(--sh);display:block}
.encart-sombre{background:var(--ink);color:#fff;border-radius:var(--r-md);padding:15px 18px;max-width:280px;margin-top:18px}
.encart-sombre .surtitre{color:#b6ad9d;margin-bottom:6px}
.encart-sombre p{margin:0;font-size:.95rem}
.conditions-liste{margin:0}
.conditions-liste>div{display:grid;grid-template-columns:110px 1fr;gap:16px;padding:12px 0}
.conditions-liste>div+div{border-top:1px solid var(--line)}
.conditions-liste dt{font-weight:600;color:var(--ink);font-size:.95rem}
.conditions-liste dd{margin:0;color:#56514a;font-size:.95rem}
.conditions-liste dd a{color:var(--ember);text-decoration:underline;text-underline-offset:2px}
.conditions-liste dd a:hover{color:var(--ember-d)}

/* ---------- Prochainement (manifestations publiques) ---------- */
.prochainement{margin-bottom:36px}
.prochainement h2{margin:0 0 16px;font-size:1.9rem;letter-spacing:-.8px}
.prochainement-grille{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.evt-carte{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:16px 18px;box-shadow:var(--sh)}
.evt-carte[data-date]{cursor:pointer;transition:box-shadow .2s,transform .15s}
.evt-carte[data-date]:hover{box-shadow:0 14px 30px -18px rgba(0,0,0,.4);transform:translateY(-2px)}
.evt-tete{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.evt-date{background:var(--ink);color:#fff;border-radius:10px;padding:7px 12px;text-align:center;line-height:1}
.evt-date strong{font-family:var(--serif);font-size:1.35rem;display:block;letter-spacing:-.5px}
.evt-date span{font-size:.62rem;letter-spacing:1.6px;text-transform:uppercase;color:#b6ad9d}
.evt-statut{font-size:.78rem;font-weight:600;color:var(--pine)}
.evt-statut::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:6px;vertical-align:1px}
.evt-statut.attente{color:var(--ochre)}
.evt-type{display:inline-block;margin:0 0 6px;padding:2px 9px;border-radius:999px;background:var(--sand);border:1px solid var(--line);color:#5f594e;font-size:.66rem;font-weight:700;letter-spacing:.7px;text-transform:uppercase}
.evt-carte h3{margin:0;font-size:1.02rem;letter-spacing:-.2px;line-height:1.25}
.evt-horaire{margin:3px 0 0;font-size:.85rem;color:var(--gris)}
.evt-detail{margin:8px 0 0;font-size:.85rem;color:#56514a;white-space:pre-line;
    display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.evt-lien{display:inline-block;margin-top:10px;font-size:.85rem;font-weight:600;color:var(--ember);text-decoration:none;border-bottom:1px solid currentColor}
.evt-lien:hover{color:var(--ember-d)}

/* ---------- Étapes 1-2-3 (réassurance avant le calendrier) ---------- */
.etapes{background:var(--sand);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 26px;margin-bottom:36px}
.etapes-grille{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.etape{display:flex;gap:13px;align-items:flex-start}
.etape-num{font-family:var(--serif);font-weight:700;font-size:1.5rem;color:var(--ember);line-height:1}
.etape strong{display:block;color:var(--ink);font-size:.95rem;margin-bottom:2px}
.etape p{margin:0;font-size:.85rem;color:#56514a}

/* ---------- Cartes ---------- */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:22px 24px;margin-bottom:22px;box-shadow:var(--sh)}

/* ---------- Messages flash ---------- */
.flash{padding:12px 16px;border-radius:10px;margin-bottom:16px;font-size:.95rem}
.flash-ok{background:#eaf0ea;border:1px solid #bcd2bf;color:#2c4a36}
.flash-err{background:#f4e3df;border:1px solid #e0bdb4;color:var(--brick)}

/* ---------- Formulaires ---------- */
label{display:block;font-weight:600;margin:14px 0 5px;font-size:.72rem;letter-spacing:1.1px;text-transform:uppercase;color:var(--gris)}
input[type=text],input[type=email],input[type=tel],input[type=date],input[type=time],
input[type=password],input[type=number],select,textarea{
    width:100%;max-width:420px;padding:11px 13px;border:1px solid #d3ccc0;border-radius:var(--r-sm);
    font:inherit;background:#fff;color:var(--corps);transition:border-color .2s,box-shadow .2s;
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ember);box-shadow:0 0 0 3px rgba(194,83,46,.16)}
textarea{max-width:600px;min-height:84px;resize:vertical}

/* ---------- Section demande ---------- */
.demande-grille{display:grid;grid-template-columns:230px 1fr;gap:32px;align-items:start}
.demande-intro h2{margin-top:0;font-size:1.7rem}
.demande-intro p{color:var(--gris);font-size:.95rem}

/* ---------- Tableaux ---------- */
table.liste{width:100%;border-collapse:collapse;background:#fff;border-radius:var(--r-md);overflow:hidden;box-shadow:var(--sh)}
table.liste th,table.liste td{border:1px solid #eee7dc;padding:10px 12px;text-align:left}
table.liste th{background:var(--ink);color:#fff;font-weight:600;letter-spacing:.5px;font-size:.78rem;text-transform:uppercase;border-color:#2a2620}
table.liste tr:nth-child(even){background:#faf8f3}
table.liste tr:hover td{background:#f3efe7}

/* ---------- Badges de statut ---------- */
.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:999px;font-size:.82rem;font-weight:600;white-space:nowrap;color:#fff}
.badge::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.9}
.badge-en_attente{background:#f6edd9;color:#8a6113}
.badge-approuvee{background:#eaf0ea;color:var(--pine)}
.badge-refusee{background:#f4e3df;color:var(--brick)}
.badge-facture{background:#e6edf0;color:#2c5663}

/* ---------- Légende ---------- */
.legende{color:var(--gris);font-size:.88rem;margin:0 0 12px}
.puce{display:inline-block;width:10px;height:10px;border-radius:3px;margin:0 4px 0 12px;vertical-align:baseline}
.puce:first-child{margin-left:0}
.puce-vert{background:#eaf0ea;border:1px solid var(--pine)}
.puce-orange{background:#f6edd9;border:1px solid var(--ochre)}

/* ---------- Calendrier (admin, avec blocs) ---------- */
.panneau-calendrier{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px 20px;box-shadow:var(--sh);margin-bottom:26px}
.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.cal-nav h2{margin:0;font-family:var(--serif);text-transform:capitalize;letter-spacing:-.3px;font-size:1.25rem}
.cal-nav-gauche{display:flex;align-items:center;gap:8px}
.cal-nav-gauche h2{margin-left:12px}
.cal-fleche{background:#f2efe8;color:#56514a;border:1px solid var(--line);font-size:1.1rem;line-height:1;padding:5px 13px;border-radius:var(--r-sm)}
.cal-fleche:hover{background:#e9e4da;color:var(--ink);box-shadow:none}
table.calendrier{width:100%;border-collapse:collapse;background:#fff;table-layout:fixed}
table.calendrier th{background:transparent;color:var(--gris);padding:8px 4px;letter-spacing:1.4px;font-size:.7rem;text-transform:uppercase;font-weight:600;border-bottom:1px solid var(--line)}
table.calendrier td{border:1px solid #eee7dc;vertical-align:top;height:92px;padding:5px;font-size:.85rem;transition:background .2s}
table.calendrier td[data-date]:hover{background:#f6f3ec}
table.calendrier td.jour-reserve{background:#eaf0ea;box-shadow:inset 0 3px 0 var(--pine)}
table.calendrier td.jour-attente{background:#f6edd9;box-shadow:inset 0 3px 0 var(--ochre)}
table.calendrier td.jour-reserve:hover{background:#e1ebe0}
table.calendrier td.jour-attente:hover{background:#f0e3c9}
td.hors-mois{background:#f1ede5}
td.aujourdhui{box-shadow:inset 0 0 0 2px rgba(194,83,46,.5)}
.cal-jour{font-weight:700;color:#56514a;font-size:.95rem}
.cal-resa{display:block;background:#eaf0ea;border-left:3px solid var(--pine);border-radius:6px;padding:2px 6px;margin-top:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#2c4a36;text-decoration:none;font-size:.92rem}
a.cal-resa:hover{filter:brightness(.97)}
.cal-resa.attente{background:#f6edd9;border-left-color:var(--ochre);color:#7a5512}

/* ---------- Calendrier à pastilles (public) ---------- */
.calendrier-pastilles{border-collapse:separate;border-spacing:5px}
.calendrier-pastilles th{border-bottom:none}
.calendrier-pastilles td{border:none;height:60px;padding:9px 0 0;text-align:center;vertical-align:top;border-radius:12px;cursor:pointer}
.calendrier-pastilles td.hors-mois{background:transparent;cursor:default}
.calendrier-pastilles td[data-date]:hover{background:#efeadf}
.calendrier-pastilles td.aujourdhui{box-shadow:inset 0 0 0 1.5px rgba(194,83,46,.5)}
.cal2-num{display:block;font-weight:600;color:#56514a;line-height:1.05}
.cal2-pastilles{display:block;height:9px;margin-top:8px}
.pastille{display:inline-block;width:6px;height:6px;border-radius:50%;margin:0 2.5px;vertical-align:middle}
.pastille-verte{background:var(--pine)}
.pastille-orange{background:var(--ochre);border-radius:2px}  /* carré arrondi : distinct de la pastille ronde, pas seulement par la couleur */
/* Libellé d'un événement public (titre affiché dans la case, 2 lignes max) */
.calendrier-pastilles .cal2-evt{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;
    margin:7px 4px 0;padding:2px 5px;border-radius:6px;font-size:.63rem;line-height:1.2;font-weight:600;
    background:#eaf0ea;color:#2c4a36;overflow:hidden}
.calendrier-pastilles .cal2-evt.attente{background:#f6edd9;color:#8a6113}
.calendrier-pastilles td.jour-actif .cal2-evt{background:rgba(159,208,166,.22);color:#d4ead7}
.calendrier-pastilles td.jour-actif .cal2-evt.attente{background:rgba(227,183,102,.22);color:#f0d8a8}
.calendrier-pastilles td.jour-actif{background:var(--ink)!important;box-shadow:none}
.calendrier-pastilles td.jour-actif .cal2-num{color:#fff}
.calendrier-pastilles td.jour-actif .pastille-verte{background:#9fd0a6}
.calendrier-pastilles td.jour-actif .pastille-orange{background:#e3b766}
.legende .pastille{width:8px;height:8px;margin:0 5px 0 14px}
.legende .pastille:first-child{margin-left:0}

/* ---------- Jours passés (grisés) ---------- */
.calendrier td.passe{opacity:.6}
.calendrier td.passe .cal-jour{color:#b3aa9a}
.calendrier-pastilles td.passe{opacity:.45;cursor:default}
.calendrier-pastilles td.passe:hover{background:transparent}
.calendrier-pastilles td.passe .cal2-num{color:var(--gris)}

/* ---------- Calendrier deux volets (public) ---------- */
.cal-deux-volets{display:grid;grid-template-columns:1.25fr 1fr;gap:28px}
.volet-jour{border-left:1px solid #eee7dc;padding-left:28px}
.vj-date{margin:0 0 16px;font-family:var(--serif);font-size:1.4rem;font-weight:600;letter-spacing:-.4px;color:var(--ink)}
.vj-resa{background:#eaf0ea;border-left:3px solid var(--pine);border-radius:8px;padding:9px 13px;margin:0 0 8px}
.vj-resa strong{display:block;font-size:.95rem;color:#2c4a36}
.vj-resa span{font-size:.85rem;color:#41502f}
.vj-resa.attente{background:#f6edd9;border-left-color:var(--ochre)}
.vj-resa.attente strong{color:#7a5512}
.vj-resa.attente span{color:#7a5a1d}
.vj-detail{margin-top:8px;padding-top:8px;border-top:1px dashed #cfe0cc;font-size:.86rem;color:#4a5448;white-space:pre-line}
.vj-resa.attente .vj-detail{border-top-color:#e6d3a8;color:#6a5a3a}
.vj-lien{display:inline-block;margin-top:8px;font-size:.86rem;font-weight:600;color:var(--ember);text-decoration:none;border-bottom:1px solid currentColor}
.vj-lien:hover{color:var(--ember-d)}
.vj-libre{color:var(--pine);font-weight:600}
.badge-libre{display:inline-block;background:#eaf0ea;border:1px solid #cfe0cc;color:#2c4a36;border-radius:999px;padding:4px 13px;font-size:.85rem;margin:0 6px 6px 0}
.vj-aide{margin-top:22px}

/* ---------- Divers ---------- */
.grille{display:flex;gap:22px;flex-wrap:wrap}
.grille>div{flex:1 1 300px}
.muted{color:var(--gris);font-size:.9rem}
.inline-form{display:inline}

footer.site{background:var(--ink);color:#b6ad9d;text-align:center;padding:30px 20px;font-size:.8rem;letter-spacing:1.4px;text-transform:uppercase;margin-top:30px}

/* ---------- Footer enrichi (page publique) ---------- */
footer.footer-riche{text-align:left;text-transform:none;letter-spacing:normal;font-size:.88rem;padding:36px 20px 22px}
.footer-grille{max-width:1040px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.footer-grille strong{display:block;color:#fff;font-family:var(--serif);font-size:.72rem;letter-spacing:2px;text-transform:uppercase;margin-bottom:8px}
.footer-grille span{display:block;line-height:1.6}
.footer-grille a{display:block;color:var(--ember);text-decoration:none;line-height:1.6;width:fit-content}
.footer-grille a:hover{color:#fff}
.footer-bas{max-width:1040px;margin:28px auto 0;padding-top:16px;border-top:1px solid #332e28;font-size:.74rem;letter-spacing:1.4px;text-transform:uppercase;text-align:center}

/* ---------- Mobile ---------- */
@media (max-width:780px){
    header.site{flex-direction:column;align-items:flex-start}
    header.site a{margin-left:0;margin-right:14px}
    .nav-group{margin-left:0;display:block}
    .nav-trigger{display:none}
    .nav-sub{display:block;position:static;margin:0;padding:0;background:none;border:0;box-shadow:none;min-width:0}
    header.site .nav-sub a{display:inline-block;padding:0 0 3px;margin-right:14px;border-radius:0}
    table.liste{display:block;overflow-x:auto}
    main{margin-top:12px}
    .hero{margin-top:-12px}
    .hero-interieur{padding:48px 16px 70px}
    .hero h2{font-size:2.1rem}
    .hero .motif{width:230px;top:64px;opacity:.35}
    .bande-stats{grid-template-columns:1fr;margin-top:-36px}
    .bande-stats>div+div{border-left:none;border-top:1px solid var(--line)}
    .conditions-titre h2{max-width:none}
    .conditions-grille,.demande-grille{grid-template-columns:1fr}
    .prochainement-grille,.etapes-grille,.footer-grille{grid-template-columns:1fr}
    .conditions-liste>div{grid-template-columns:1fr;gap:2px}
    .cal-deux-volets{grid-template-columns:1fr}
    .volet-jour{border-left:none;border-top:1px solid #eee7dc;padding-left:0;padding-top:18px}
}
@media (max-width:600px){
    table.calendrier td{height:60px;font-size:.7rem}
}

/* ---------- Pages de contenu ---------- */
.page-tete{margin:30px 0 6px}
.page-tete .surtitre{margin-bottom:6px}
.page-tete h2{font-family:var(--serif);font-size:2.1rem;letter-spacing:-.5px;margin:0 0 6px}
.page-tete p.chapo{color:#5f594e;max-width:64ch;font-size:1.05rem;line-height:1.6;margin:0}
.prose{max-width:760px;margin:22px auto;padding:0 20px;line-height:1.7;color:#2c2823}
.prose h3{font-family:var(--serif);font-size:1.35rem;letter-spacing:-.3px;margin:30px 0 10px}
.prose h4{font-family:var(--serif);font-size:1.1rem;margin:24px 0 8px}
.prose p{margin:0 0 14px}
.prose ul,.prose ol{margin:0 0 16px;padding-left:22px}
.prose li{margin:5px 0}
.prose a{color:var(--brick);text-decoration:underline;text-underline-offset:2px}
.prose a:hover{color:var(--ember)}
.prose hr{border:0;border-top:1px solid var(--line);margin:28px 0}
.bloc-info{max-width:760px;margin:18px auto;padding:18px 20px;background:var(--sand);border:1px solid var(--line);border-radius:12px}
.bloc-info strong{color:var(--brick)}
.tarifs{max-width:760px;margin:18px auto;padding:0 20px;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.tarif{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;text-align:center}
.tarif strong{display:block;font-family:var(--serif);font-size:1.5rem;color:var(--brick)}
.tarif span{display:block;font-size:.85rem;color:#5f594e;margin-top:4px}
.galerie{max-width:1040px;margin:24px auto;padding:0 20px;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.galerie figure{margin:0;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:#fff}
.galerie img{display:block;width:100%;height:200px;object-fit:cover}
.galerie figcaption{padding:8px 10px;font-size:.8rem;color:#5f594e}
.medias-liste{max-width:900px;margin:22px auto;padding:0 20px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.media-carte{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;text-decoration:none;color:inherit;transition:.2s}
.media-carte:hover{box-shadow:0 14px 30px -18px rgba(0,0,0,.4);transform:translateY(-2px)}
.media-carte img{width:100%;height:150px;object-fit:cover;background:var(--sand)}
.media-carte .m-corps{padding:12px 14px}
.media-carte .m-source{font-size:.72rem;letter-spacing:1.4px;text-transform:uppercase;color:var(--ember)}
.media-carte .m-titre{font-family:var(--serif);font-size:1rem;margin:4px 0 0;line-height:1.35}
@media (max-width:780px){
    .tarifs{grid-template-columns:1fr}
    .page-tete h2{font-size:1.7rem}
}

/* ---------- Page buvette ---------- */
.bandeau-photo{width:100vw;margin:18px 0 0 calc(50% - 50vw)}
.bandeau-photo img{width:100%;height:clamp(220px,36vw,400px);object-fit:cover;display:block}
.buvette-grille{display:grid;grid-template-columns:1.1fr .9fr;gap:42px;align-items:start;padding-top:34px}
.buvette-grille h2{margin:0 0 8px;font-size:1.9rem;letter-spacing:-.8px}
.reperes{display:flex;flex-direction:column;gap:10px;margin-top:18px}
.repere{display:flex;gap:11px;align-items:center;font-size:.95rem;color:#2c2823}
.repere svg{flex:none;width:20px;height:20px;color:var(--ember)}
.ardoise{background:var(--ink);color:#fff;border-radius:var(--r-md);padding:20px 24px 18px;box-shadow:var(--sh)}
.ardoise .surtitre{color:#b6ad9d;margin-bottom:8px}
.ardoise-ligne{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:8px 0;font-size:.97rem}
.ardoise-ligne+.ardoise-ligne{border-top:1px dashed #3a352e}
.ardoise-ligne strong{font-family:var(--serif);color:#E8A98F;font-weight:700;letter-spacing:.3px;white-space:nowrap}
.ardoise-ligne em{color:#b6ad9d;font-style:normal;font-size:.88rem}
.ardoise-note{margin:12px 0 0;font-size:.8rem;color:#b6ad9d}
.badge-mois{display:inline-block;background:var(--ink);color:#fff;border-radius:7px;padding:3px 9px;font-size:.62rem;letter-spacing:1.6px;text-transform:uppercase;margin-bottom:4px}
@media (max-width:780px){
    .buvette-grille{grid-template-columns:1fr;gap:24px;padding-top:26px}
    .bandeau-photo{margin-top:10px}
}

/* ---------- Page équipes ---------- */
.bande-equipes-interieur{max-width:1040px;margin:0 auto;padding:26px 16px 32px}
.carte-blanche{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:16px 20px}
.carte-blanche .surtitre{margin-bottom:6px}
.carte-blanche p{margin:0;font-size:.95rem;line-height:1.65;color:#2c2823}
.ligues-grille{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px}
.ligue-carte{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:16px 18px}
.ligue-carte .surtitre{margin-bottom:4px}
.ligue-nb{display:block;font-family:var(--serif);font-weight:700;font-size:1.45rem;letter-spacing:-.5px;color:var(--ink);margin:0 0 4px}
.ligue-carte p{margin:0;font-size:.88rem;color:#56514a;line-height:1.5}
.ligue-carte>a{display:inline-block;margin-top:8px;color:var(--ember);text-decoration:none;font-size:.85rem;font-weight:600;border-bottom:1px solid currentColor}
.ligue-carte>a:hover{color:var(--ember-d)}
.ligue-carte.lna{background:var(--ink);border-color:transparent;color:#fff}
.ligue-carte.lna .surtitre{color:#b6ad9d}
.ligue-carte.lna .ligue-nb{color:#fff}
.ligue-carte.lna p{color:#d9d4ca;margin-bottom:8px}
.ligue-carte.lna a{display:block;color:#e8a98f;text-decoration:none;font-size:.85rem;font-weight:600;line-height:1.9;width:fit-content}
.ligue-carte.lna a:hover{color:#fff}
.actus{margin:26px 0}
.actus>h2{font-size:1.9rem;letter-spacing:-.8px;margin:0 0 18px}
.actu{display:grid;grid-template-columns:64px 1fr;gap:16px;margin-bottom:18px}
.actu-date{background:var(--ink);color:#fff;border-radius:10px;padding:9px 4px;text-align:center;line-height:1.1;height:fit-content}
.actu-date strong{font-family:var(--serif);font-size:1.05rem;display:block;letter-spacing:-.3px}
.actu-date span{font-size:.62rem;letter-spacing:1.4px;color:#b6ad9d}
.actu-phare .actu-date{background:var(--ember)}
.actu-phare .actu-date span{color:#f3cfc0}
.actu-corps{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:18px 22px;box-shadow:var(--sh)}
.actu-phare .actu-corps{border-color:var(--ember)}
.actu-corps h3{margin:0 0 8px;font-family:var(--serif);font-size:1.25rem;letter-spacing:-.3px}
.actu-corps p{margin:0 0 10px;font-size:.95rem;line-height:1.65;color:#3c372f}
.actu-corps ul,.actu-corps ol{margin:0 0 10px;padding-left:20px;font-size:.95rem;line-height:1.6;color:#3c372f}
.actu-corps p:last-child,.actu-corps ul:last-child,.actu-corps ol:last-child{margin-bottom:0}
.signature{margin:4px 0 0;font-size:.85rem;color:var(--gris);text-align:right;font-style:italic}
.actu-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-top:14px}
.actu-photos a{display:block}
.actu-photos img{width:100%;height:118px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block;background:var(--sand)}
.actu-photos a:hover img{filter:brightness(1.05)}
.legende-photos{margin:8px 0 0;font-size:.78rem;color:var(--gris)}
@media (max-width:780px){
    .ligues-grille{grid-template-columns:1fr}
    .actu{grid-template-columns:52px 1fr;gap:10px}
    .actu-corps{padding:14px 16px}
}

/* ---------- Accueil : À la une ---------- */
.alaune{margin:0 0 36px}
.alaune h2{margin:0 0 16px;font-size:1.9rem;letter-spacing:-.8px}
.alaune-grille{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.alaune .media-carte img{height:232px;object-position:50% 30%}
.carte-tv{background:var(--ink);border-radius:12px;padding:18px 20px;color:#fff}
.carte-tv .surtitre{color:#b6ad9d;margin-bottom:6px}
.carte-tv strong{display:block;font-family:var(--serif);font-size:1.05rem;letter-spacing:-.2px;margin-bottom:8px}
.carte-tv a{display:block;color:#e8a98f;text-decoration:none;font-size:.9rem;font-weight:600;line-height:2;width:fit-content}
.carte-tv a:hover{color:#fff}
.carte-tv a.lien-tous{color:#b6ad9d;font-size:.85rem;margin-top:8px}
.carte-tv a.lien-tous:hover{color:#fff}
.alaune-pied{margin:14px 0 0;font-size:.9rem;color:var(--gris)}
.alaune-pied a{color:var(--brick);text-decoration:underline;text-underline-offset:2px}
.alaune-pied a:hover{color:var(--ember)}
@media (max-width:780px){
    .alaune-grille{grid-template-columns:1fr}
}

/* Accueil : photo étirée sur toute la hauteur de la colonne texte */
.grille-etiree{align-items:stretch}
.grille-etiree .photo-boulodrome{aspect-ratio:auto;height:100%;min-height:300px}

/* ---------- Page mêlées ---------- */
.melees-grille{display:grid;grid-template-columns:1.1fr .9fr;gap:18px;padding-top:30px;align-items:stretch}
.melees-grille .carte-blanche .etape-num{font-size:1.3rem}
.melees-grille .carte-blanche ol{margin:0;padding:0;list-style:none}
.melees-grille .carte-blanche li{display:flex;gap:12px;margin-bottom:10px;font-size:.93rem;line-height:1.55;color:#2c2823}
.note-quota{margin:12px 0 0;font-size:.85rem;color:var(--brick)}
.carte-prochaines{background:var(--ink);border-radius:var(--r-md);padding:18px 20px;color:#fff;box-shadow:var(--sh)}
.carte-prochaines .surtitre{color:#b6ad9d;margin-bottom:10px}
.prochaine-melee{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:7px 0;font-size:.95rem}
.prochaine-melee+.prochaine-melee{border-top:1px dashed #3a352e}
.prochaine-melee strong{font-family:var(--serif);letter-spacing:.2px}
.prochaine-melee span{color:#b6ad9d;font-size:.85rem;white-space:nowrap}
.carte-prochaines .lien-agenda{display:inline-block;margin-top:10px;color:#e8a98f;text-decoration:none;font-size:.85rem;font-weight:600}
.carte-prochaines .lien-agenda:hover{color:#fff}
.frise{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.frise-etape{background:#fff;border:1px solid var(--line);border-radius:10px;padding:13px 10px;text-align:center}
.frise-etape strong{display:block;font-family:var(--serif);font-size:1.2rem;letter-spacing:-.3px;color:var(--ember)}
.frise-etape span{font-size:.8rem;color:#56514a;line-height:1.4;display:block;margin-top:3px}
.frise-etape.pause{background:var(--sand)}
.frise-etape.pause strong{color:var(--ink)}
.frise-etape.fin{background:var(--ink);border-color:transparent}
.frise-etape.fin strong{color:#fff}
.frise-etape.fin span{color:#b6ad9d}
.note-frise{margin:12px 0 0;font-size:.9rem;color:#5f594e;line-height:1.6}
@media (max-width:780px){
    .melees-grille{grid-template-columns:1fr;padding-top:24px}
    .frise{grid-template-columns:repeat(2,1fr)}
    .frise-etape.fin{grid-column:span 2}
}

/* ---------- Mêlées : équipes inscrites (export SQLite) ---------- */
.insc-resume{margin:0 0 12px;font-size:1rem;color:#3c372f;line-height:1.6}
.insc-details summary{cursor:pointer;font-weight:600;color:var(--brick);width:fit-content;margin-bottom:12px}
.insc-details summary:hover{color:var(--ember)}
.equipes-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}
.equipe-pill{background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 12px;font-size:.9rem;color:#2c2823;display:flex;justify-content:space-between;align-items:center;gap:8px}
.badge-groupe{flex:none;background:var(--sand);border:1px solid var(--line);border-radius:6px;padding:1px 8px;font-size:.72rem;font-weight:700;color:var(--ink)}
.insc-statut{display:inline-block;border-radius:999px;padding:3px 13px;font-size:.82rem;font-weight:700;margin-right:8px;vertical-align:1px}
.insc-statut.complet{background:var(--brick);color:#fff;text-transform:uppercase;letter-spacing:1px}
.insc-statut.libre{background:#f6edd9;color:#8a6113}

/* Inscriptions aux manifestations (agenda + page publique) */
.evt-inscription{margin:10px 0 0;font-size:.85rem;font-weight:700;color:var(--ember)}
.evt-inscrire{margin-top:4px}
.insc-ferme{margin:0 0 8px;font-weight:700;color:var(--brick)}
.insc-joueurs{border:1px solid var(--line);border-radius:var(--r-md);padding:12px 14px;margin:0 0 4px}
.insc-joueurs legend{padding:0 6px;font-size:.85rem;font-weight:700;color:var(--ink)}
