*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#172033;background:#f4f7fb}a{color:inherit}.top,.publicnav{display:flex;justify-content:space-between;align-items:center;padding:18px 5%;background:#0b2d59;color:#fff}.top nav,.publicnav nav{display:flex;gap:20px}.top a,.publicnav a{text-decoration:none}.hero{min-height:430px;display:grid;place-items:center;text-align:center;padding:40px;background:linear-gradient(135deg,#0b2d59,#1675bd);color:#fff}.hero h1{font-size:clamp(2.2rem,5vw,4.7rem);max-width:900px;margin:.2em auto}.button,button,.action{display:inline-block;border:0;border-radius:12px;padding:13px 20px;background:#e52329;color:#fff;text-decoration:none;font-weight:750;cursor:pointer}.public,.dashboard,.formpage{width:min(1180px,92%);margin:40px auto}.public section{margin:56px 0}.sectiongrid,.newsgrid,.actions,.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px}.card,.sectioncard,.stats article{background:#fff;border-radius:18px;padding:24px;box-shadow:0 8px 28px #18304b15}.sectioncard{border-top:5px solid #1675bd}.icon{font-size:28px;color:#e52329}.auth{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#0b2d59,#1675bd)}.auth .card{width:min(440px,100%)}.brand{font-size:30px;font-weight:900;color:#e52329}form{display:grid;gap:10px}label{font-weight:700;margin-top:8px}input,textarea,select{width:100%;padding:12px;border:1px solid #cbd5e1;border-radius:10px;font:inherit}.error{background:#fee2e2;color:#991b1b;padding:12px;border-radius:10px}.success{background:#dcfce7;color:#166534;padding:12px;border-radius:10px}.muted{color:#64748b}.stats article b{display:block;font-size:2.3rem;color:#0b2d59}.stats article span{color:#64748b}.actions{margin-top:28px}.action{background:#fff;color:#0b2d59;box-shadow:0 8px 28px #18304b15}.row{display:flex;gap:12px;flex-wrap:wrap}.secondary{background:#64748b}table{width:100%;border-collapse:collapse;background:#fff;border-radius:14px;overflow:hidden}th,td{text-align:left;padding:14px;border-bottom:1px solid #e2e8f0}.badge{padding:5px 9px;border-radius:99px;background:#e2e8f0}footer{text-align:center;padding:35px;background:#0b2d59;color:#fff}@media(max-width:700px){.publicnav,.top{align-items:flex-start;gap:12px;flex-direction:column}.publicnav nav,.top nav{flex-wrap:wrap}.hero{min-height:360px}table{font-size:.88rem}}

/* v0.4 — Cartes illustrées des sections */
.section-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:24px}.section-heading>p{max-width:480px;margin:0;color:#64748b}.section-heading h2{margin:.15rem 0 0}.eyebrow{margin:0;color:#e52329;font-size:.82rem;font-weight:850;letter-spacing:.12em}.sectiongrid-images{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:22px}.sectioncard-image{padding:0;border-top:0;overflow:hidden;display:flex;flex-direction:column;transition:transform .2s ease,box-shadow .2s ease}.sectioncard-image:hover{transform:translateY(-4px);box-shadow:0 15px 38px #18304b25}.section-photo{height:180px;overflow:hidden;background:#dfe7f1}.section-photo img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}.sectioncard-image:hover .section-photo img{transform:scale(1.045)}.section-content{padding:20px 22px 24px;flex:1}.section-content h3{margin:0 0 9px;color:#0b2d59;font-size:1.22rem}.section-content p{margin:0;color:#64748b;line-height:1.55}.sectioncard-image:nth-child(4n+1) .section-content{border-top:4px solid #1675bd}.sectioncard-image:nth-child(4n+2) .section-content{border-top:4px solid #e52329}.sectioncard-image:nth-child(4n+3) .section-content{border-top:4px solid #fcfc04}.sectioncard-image:nth-child(4n+4) .section-content{border-top:4px solid #1d8a62}@media(max-width:700px){.section-heading{align-items:flex-start;flex-direction:column;gap:10px}.section-photo{height:190px}}

/* v0.5 — Identité noire et jaune + fond animé */
:root{--black:#050505;--black-soft:#0d0d0d;--gold:#fcfc04;--gold-deep:#d4d400;--white:#fff;--muted-gold:#ffff80}
html{scroll-behavior:smooth}.public-home{min-height:100vh;background:#050505;color:#fff;overflow-x:hidden}.public-home main,.public-home header,.public-home footer{position:relative;z-index:2}.gold-particles{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.75}.animated-bg{position:fixed;inset:0;overflow:hidden;z-index:0;pointer-events:none;background:radial-gradient(circle at 50% 15%,rgba(255,212,0,.08),transparent 34%),linear-gradient(180deg,#030303 0%,#080602 50%,#020202 100%)}.gold-wave{position:absolute;width:90vw;height:28vw;border:2px solid rgba(255,212,0,.28);border-radius:50%;filter:blur(2px);box-shadow:0 0 26px rgba(255,212,0,.18),inset 0 0 35px rgba(255,212,0,.12);animation:waveFloat 12s ease-in-out infinite}.wave-one{left:-28vw;top:23vh;transform:rotate(16deg)}.wave-two{right:-24vw;top:28vh;transform:rotate(-18deg);animation-delay:-5s}.gold-glow{position:absolute;width:36rem;height:36rem;border-radius:50%;filter:blur(90px);background:rgba(255,190,0,.12);animation:glowDrift 10s ease-in-out infinite alternate}.glow-one{left:-12rem;top:18vh}.glow-two{right:-12rem;top:25vh;animation-delay:-4s}@keyframes waveFloat{0%,100%{translate:0 0;scale:1}.5%{}50%{translate:0 28px;scale:1.05}}@keyframes glowDrift{to{translate:40px 35px;scale:1.14}}
.publicnav-dark{position:sticky;top:0;background:rgba(0,0,0,.82);backdrop-filter:blur(16px);border-bottom:1px solid rgba(255,212,0,.22);padding:18px 5%;z-index:20}.site-brand{display:flex;flex-direction:column;text-decoration:none;line-height:1}.brand-mark{font-size:2rem;font-weight:950;letter-spacing:.04em;color:var(--gold)}.brand-subtitle{font-size:.7rem;font-weight:800;color:#fff;margin-top:4px;letter-spacing:.12em}.publicnav-dark nav{align-items:center}.publicnav-dark nav a{position:relative;padding:9px 4px;color:#fff;font-size:.92rem;font-weight:700}.publicnav-dark nav a:not(.admin-link)::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:2px;background:var(--gold);transition:right .25s ease}.publicnav-dark nav a:hover::after,.publicnav-dark nav a.active::after{right:0}.publicnav-dark .admin-link{border:1px solid var(--gold);border-radius:7px;padding:10px 15px;color:var(--gold)}
.hero-gold{min-height:620px;background:transparent;padding:100px 24px 70px}.hero-content{max-width:980px;margin:auto;text-align:center}.hero-kicker{font-size:clamp(1rem,2vw,1.25rem);color:#ececec;margin:0 0 18px}.hero-gold h1{font-size:clamp(3rem,8vw,6rem);line-height:.95;text-transform:uppercase;letter-spacing:.015em;margin:0;color:var(--gold);text-shadow:0 0 28px rgba(255,212,0,.2)}.hero-gold h1 span{display:block;color:#fff;font-size:.72em;letter-spacing:.08em;margin-bottom:14px}.hero-rule{width:68px;height:3px;background:var(--gold);margin:30px auto}.hero-intro{font-size:clamp(1.1rem,2.4vw,1.4rem);color:#f5f5f5}.hero-intro strong{color:var(--gold)}.hero-actions{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;margin-top:34px}.button-gold{background:var(--gold);color:#050505;border-radius:8px;box-shadow:0 0 24px rgba(255,212,0,.18)}.button-gold:hover{background:#ffe35b}.button-outline{background:rgba(0,0,0,.45);border:1px solid var(--gold);color:#fff;border-radius:8px}.button-outline:hover{color:var(--gold)}
.public-dark{width:min(1320px,92%);margin:0 auto 60px}.content-section{margin:64px 0}.title-row{display:flex;justify-content:space-between;align-items:end;margin-bottom:24px}.title-row h2,.dark-heading h2{margin:.2rem 0 0;color:#fff;font-size:clamp(2rem,4vw,3rem)}.dark-heading h2 span{color:var(--gold)}.eyebrow{color:var(--gold)}.dark-heading>p{color:#bdbdbd}.dark-card{background:linear-gradient(145deg,rgba(24,24,24,.94),rgba(8,8,8,.94));border:1px solid rgba(255,212,0,.26);color:#fff;box-shadow:0 12px 35px rgba(0,0,0,.28)}.news-card small{color:var(--gold);font-weight:800}.news-card h3{color:#fff}.news-card p{color:#c9c9c9}.dark-empty{color:#ddd;background:rgba(15,15,15,.8);border:1px solid rgba(255,212,0,.2);padding:20px;border-radius:12px}
.dark-section-card{background:#0a0a0a;border:1px solid rgba(255,212,0,.35);box-shadow:0 12px 32px rgba(0,0,0,.38);border-radius:14px}.dark-section-card:hover{border-color:rgba(255,212,0,.8);box-shadow:0 18px 42px rgba(0,0,0,.52),0 0 26px rgba(255,212,0,.1)}.dark-section-card .section-photo{height:190px;background:#111}.photo-shade{position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(0,0,0,.72) 100%)}.dark-section-card .section-photo{position:relative}.dark-section-card .section-content{border-top:2px solid var(--gold)!important;background:linear-gradient(180deg,#101010,#080808)}.dark-section-card .section-content h3{color:#fff}.dark-section-card .section-content p{color:#bfbfbf}.dark-section-card:hover .section-content h3{color:var(--gold)}
.dark-footer{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:28px 5%;background:#020202;border-top:1px solid rgba(255,212,0,.35);color:#ddd}.dark-footer strong{color:var(--gold);font-weight:700}.dark-footer a{color:#fff;text-decoration:none}.dark-footer a:hover{color:var(--gold)}
@media(max-width:800px){.hero-gold{min-height:540px;padding-top:70px}.publicnav-dark{position:relative}.dark-footer{flex-direction:column;text-align:center}.gold-wave{width:140vw;height:54vw}.wave-one{left:-70vw}.wave-two{right:-65vw}.sectiongrid-images{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.gold-wave,.gold-glow{animation:none}.sectioncard-image,.section-photo img{transition:none}}

/* v0.6 — Fiches publiques et administration des sections */
.section-card-link{display:block;color:inherit;text-decoration:none;height:100%}.sectioncard-image:hover{transform:translateY(-5px);border-color:#fcfc04;box-shadow:0 16px 35px rgba(255,212,0,.16)}.section-president{color:#fcfc04!important;font-weight:700;font-size:.9rem}.discover-link{display:inline-block;margin-top:.65rem;color:#fcfc04;font-weight:800}.section-admin-layout{display:grid;grid-template-columns:minmax(240px,320px) minmax(0,1fr);gap:1.4rem;align-items:start}.section-admin-list{position:sticky;top:1rem;padding:1rem}.section-admin-list h2{margin-top:0}.section-admin-item{display:flex;justify-content:space-between;gap:.8rem;padding:.75rem;border-radius:10px;color:inherit;text-decoration:none}.section-admin-item:hover,.section-admin-item.selected{background:#fff3b0}.section-admin-item small{color:#777}.section-form{max-width:950px}.form-title-row{display:flex;justify-content:space-between;align-items:center;gap:1rem}.form-columns{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.checkline{display:flex!important;align-items:center;gap:.6rem;margin:1rem 0}.checkline input{width:auto}.section-public-main{position:relative;z-index:2;max-width:1250px;margin:auto;padding:1rem 1.2rem 4rem}.section-public-hero{position:relative;min-height:390px;border:1px solid rgba(255,212,0,.35);border-radius:24px;overflow:hidden;margin:1rem 0 2rem}.section-public-hero img{position:absolute;width:100%;height:100%;object-fit:cover}.section-public-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.92),rgba(0,0,0,.35))}.section-public-title{position:absolute;left:7%;bottom:12%;max-width:780px}.section-public-title p,.section-public-title h1{margin:.2rem 0}.section-public-title p{color:#fcfc04;font-weight:800;letter-spacing:.12em}.section-public-title h1{font-size:clamp(2.5rem,7vw,5.5rem);text-transform:uppercase;color:#fff}.section-public-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.8fr);gap:1.4rem}.section-description,.president-card{padding:1.6rem}.section-description>p:last-child{line-height:1.8}.president-card h3{font-size:1.5rem;color:#fcfc04}.contact-actions{display:flex;gap:.7rem;flex-wrap:wrap;margin:1.2rem 0}.social-links{display:flex;gap:1rem;flex-wrap:wrap}.social-links a{color:#fcfc04;font-weight:700}.section-news{padding-left:0!important;padding-right:0!important}
@media(max-width:850px){.section-admin-layout,.section-public-grid{grid-template-columns:1fr}.section-admin-list{position:static}.form-columns{grid-template-columns:1fr}.form-title-row{align-items:flex-start;flex-direction:column}.section-public-hero{min-height:300px}.section-public-title{left:6%;right:6%}}

/* v0.7 — Comité directeur */
.committee-main{position:relative;z-index:2;width:min(1240px,92%);margin:0 auto;padding:70px 0 80px}.committee-hero{text-align:center;padding:38px 20px 48px}.committee-hero h1{margin:.2rem auto;color:#fff;font-size:clamp(2.5rem,6vw,5rem);text-transform:uppercase;max-width:1050px}.committee-date{color:#fcfc04;font-weight:750}.committee-intro{display:grid;grid-template-columns:minmax(0,.9fr) minmax(420px,1.35fr);gap:32px;align-items:center;padding:30px}.committee-copy{font-size:1.08rem;line-height:1.8;color:#e2e2e2}.committee-group-photo{margin:0}.committee-group-photo img{display:block;width:100%;border-radius:15px;border:1px solid rgba(255,212,0,.4)}.committee-group-photo figcaption{text-align:center;margin-top:10px;color:#aaa}.committee-section{margin-top:55px}.committee-section-title{display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:24px}.committee-section-title span{height:2px;width:70px;background:#fcfc04}.committee-section-title h2{margin:0;color:#fff;font-size:clamp(1.7rem,3vw,2.5rem)}.committee-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}.committee-card{display:flex;align-items:center;gap:18px;padding:20px}.committee-avatar{flex:0 0 82px;width:82px;height:82px;border:2px solid #fcfc04;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:#111;color:#fcfc04;font-size:1.45rem;font-weight:900}.committee-avatar img{width:100%;height:100%;object-fit:cover}.committee-card h3{margin:0;color:#fff;font-size:1.22rem}.committee-role{margin:5px 0 0;color:#fcfc04;font-weight:700}.committee-contact{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.committee-contact a{color:#ddd;font-size:.9rem}.committee-contact a:hover{color:#fcfc04}.committee-admin{display:grid;gap:24px}.committee-admin-grid{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(0,1.2fr);gap:24px;align-items:start}.committee-member-list{display:grid;gap:10px}.committee-admin-member{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px;border:1px solid #e2e8f0;border-radius:12px}.committee-admin-member div:first-child{display:grid;gap:3px}.committee-admin-member span,.committee-admin-member small{color:#64748b}.danger{background:#b91c1c}@media(max-width:850px){.committee-intro,.committee-admin-grid{grid-template-columns:1fr}.committee-main{padding-top:30px}.committee-admin-member{align-items:flex-start;flex-direction:column}.committee-group-photo{order:-1}}

/* v0.8 — Histoire de l'USCM */
.history-main{position:relative;z-index:2;width:min(1240px,92%);margin:0 auto;padding:55px 0 85px}.history-hero{text-align:center;padding:35px 20px 48px}.history-hero h1{margin:.2rem auto;color:#fff;font-size:clamp(2.8rem,7vw,5.5rem);text-transform:uppercase}.history-subtitle{margin:14px 0 0;color:#fcfc04;font-size:clamp(1.15rem,2.5vw,1.6rem);font-weight:750}.history-intro{display:grid;grid-template-columns:minmax(0,.85fr) minmax(400px,1.15fr);gap:32px;align-items:center;padding:30px}.history-copy{font-size:1.08rem;line-height:1.85;color:#e3e3e3}.history-main-photo{margin:0;text-align:center}.history-main-photo img{display:block;width:100%;max-height:620px;object-fit:contain;border-radius:16px;background:#000;border:1px solid rgba(255,212,0,.4)}.history-main-photo figcaption{margin-top:10px;color:#aaa}.history-timeline-section{margin-top:60px}.history-timeline{position:relative;max-width:1050px;margin:35px auto 0;padding:12px 0}.history-timeline::before{content:"";position:absolute;top:0;bottom:0;left:50%;width:3px;transform:translateX(-50%);background:linear-gradient(#fcfc04,rgba(255,212,0,.2))}.history-event{position:relative;display:grid;grid-template-columns:1fr 74px 1fr;align-items:start;margin:0 0 28px}.history-year{grid-column:1;text-align:right;padding:13px 20px 0 0;color:#fcfc04;font-size:1.45rem;font-weight:900}.history-dot{grid-column:2;justify-self:center;margin-top:18px;width:19px;height:19px;border:4px solid #050505;border-radius:50%;background:#fcfc04;box-shadow:0 0 0 2px #fcfc04,0 0 20px rgba(255,212,0,.55)}.history-event-card{grid-column:3;padding:22px}.history-event-card h3{margin:0 0 9px;color:#fff;font-size:1.35rem}.history-event-card p{margin:0;color:#d1d1d1;line-height:1.7}.history-event-card img{width:100%;max-height:230px;object-fit:cover;border-radius:10px;margin-bottom:15px}.history-event-right .history-year{grid-column:3;text-align:left;padding-left:20px;padding-right:0}.history-event-right .history-dot{grid-column:2}.history-event-right .history-event-card{grid-column:1;grid-row:1;text-align:right}.history-today{margin-top:65px;padding:36px;max-width:980px;margin-left:auto;margin-right:auto;text-align:center}.history-today h2{margin:.25rem 0 18px;color:#fff;font-size:clamp(2rem,4vw,3rem)}.history-today p:not(.eyebrow){color:#ddd;line-height:1.8;max-width:800px;margin:0 auto 25px}.history-admin{display:grid;gap:24px}.history-admin-grid{display:grid;grid-template-columns:minmax(310px,.8fr) minmax(0,1.2fr);gap:24px;align-items:start}.history-admin-preview{display:block;max-width:420px;max-height:260px;object-fit:contain;border-radius:12px;border:1px solid #e2e8f0}.history-admin-list{display:grid;gap:11px}.history-admin-item{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:14px;border:1px solid #e2e8f0;border-radius:12px}.history-admin-item>div:first-child{display:grid;gap:5px}.history-admin-item small{color:#64748b}.history-admin-item form{display:inline}.history-admin-item button,.history-admin-item .button{padding:9px 12px;font-size:.9rem}
@media(max-width:850px){.history-intro,.history-admin-grid{grid-template-columns:1fr}.history-main{padding-top:25px}.history-main-photo{order:-1}.history-timeline::before{left:17px}.history-event,.history-event-right{display:grid;grid-template-columns:44px 1fr}.history-year,.history-event-right .history-year{grid-column:2;grid-row:1;text-align:left;padding:0 0 8px}.history-dot,.history-event-right .history-dot{grid-column:1;grid-row:1 / span 2;justify-self:start;margin-left:8px;margin-top:7px}.history-event-card,.history-event-right .history-event-card{grid-column:2;grid-row:2;text-align:left}.history-admin-item{align-items:flex-start;flex-direction:column}}
.history-home-teaser{display:flex;justify-content:space-between;align-items:center;gap:28px;padding:34px}.history-home-teaser h2{margin:.25rem 0 10px;color:#fff;font-size:clamp(2rem,4vw,3rem)}.history-home-teaser p:last-child{margin:0;color:#c9c9c9;line-height:1.7}.history-home-teaser .button{flex:0 0 auto}@media(max-width:720px){.history-home-teaser{align-items:flex-start;flex-direction:column}}


/* v1.0 — Charte graphique USCM harmonisée avec le jaune du logo */
:root{
    --uscm-yellow:#fcfc04;
    --uscm-yellow-hover:#e4e400;
    --uscm-yellow-soft:#ffff80;
    --uscm-black:#000000;
    --uscm-anthracite:#111111;
    --uscm-white:#ffffff;
    --gold:var(--uscm-yellow);
    --gold-deep:var(--uscm-yellow-hover);
    --muted-gold:var(--uscm-yellow-soft);
}

/* Couleur officielle sur les textes, liens actifs et éléments lumineux */
.public-home .eyebrow,
.public-home .section-president,
.public-home .discover-link,
.public-home .committee-role,
.public-home .committee-date,
.public-home .history-subtitle,
.public-home .history-year,
.public-home .president-card h3,
.public-home .social-links a,
.public-home .dark-footer strong,
.public-home .brand-mark,
.public-home .publicnav-dark .admin-link{
    color:var(--uscm-yellow)!important;
}

.public-home .hero-rule,
.public-home .committee-section-title span,
.public-home .history-timeline::before,
.public-home .publicnav-dark nav a:not(.admin-link)::after{
    background:var(--uscm-yellow)!important;
}

.public-home .button-gold,
.public-home .button:not(.button-outline),
.public-home button:not(.secondary):not(.danger){
    background:var(--uscm-yellow);
    color:#000;
}

.public-home .button-gold:hover,
.public-home .button:not(.button-outline):hover,
.public-home button:not(.secondary):not(.danger):hover{
    background:var(--uscm-yellow-hover);
}

.public-home .button-outline,
.public-home .publicnav-dark .admin-link,
.public-home .section-public-hero,
.public-home .history-main-photo img,
.public-home .committee-group-photo img{
    border-color:var(--uscm-yellow)!important;
}

/* Administration et pages de connexion : même identité noire et jaune */
.auth{
    background:
        radial-gradient(circle at 50% 15%,rgba(252,252,4,.16),transparent 34%),
        linear-gradient(145deg,#000,#151500);
}
.auth .brand,.brand{color:var(--uscm-yellow)}
.top,.publicnav,footer{background:#000;color:#fff}
.button,button,.action{background:var(--uscm-yellow);color:#000}
.button:hover,button:hover,.action:hover{background:var(--uscm-yellow-hover)}
.secondary{background:#4b5563!important;color:#fff!important}
.danger{background:#b91c1c!important;color:#fff!important}
.sectioncard{border-top-color:var(--uscm-yellow)}
.icon,.eyebrow{color:var(--uscm-yellow)}
.stats article b{color:#000}
.action{border:1px solid rgba(252,252,4,.55)}
input:focus,textarea:focus,select:focus{
    outline:none;
    border-color:var(--uscm-yellow);
    box-shadow:0 0 0 3px rgba(252,252,4,.22);
}
a:focus-visible,button:focus-visible,.button:focus-visible{
    outline:3px solid var(--uscm-yellow);
    outline-offset:3px;
}

/* Accueil — Bonne Mère et archère, sans modifier le fond animé existant */
.hero-uscm-new{
    position:relative;
    overflow:hidden;
    min-height:660px;
    padding:95px 24px 75px;
}
.hero-uscm-new .hero-inner-uscm{
    position:relative;
    z-index:3;
}
.hero-uscm-new .hero-content{
    text-align:left;
    max-width:760px;
}
.hero-decoration{
    position:absolute;
    inset:0;
    z-index:1;
    pointer-events:none;
    overflow:hidden;
}
.hero-archer{
    position:absolute;
    left:clamp(-260px,-13vw,-150px);
    bottom:-55px;
    width:clamp(360px,38vw,610px);
    opacity:.16;
    filter:grayscale(1) sepia(.35) brightness(.72) contrast(1.08);
}
.hero-bonne-mere{
    position:absolute;
    left:58%;
    bottom:-95px;
    width:clamp(520px,48vw,760px);
    transform:translateX(-50%);
    opacity:.08;
    filter:grayscale(1) sepia(.55) brightness(.72) contrast(1.12);
}
.hero-title-new{
    margin:0;
    color:#fcfc04!important;
    font-size:clamp(3rem,6.6vw,6.1rem)!important;
    line-height:.92!important;
    letter-spacing:.01em!important;
    text-transform:uppercase;
    text-align:left;
    text-shadow:0 0 26px rgba(252,252,4,.16);
}
.hero-title-new span{
    display:block;
    margin-top:.18em!important;
    color:#fcfc04!important;
    font-size:.55em!important;
    line-height:1.08!important;
    letter-spacing:.015em!important;
}
.hero-uscm-new .hero-kicker,
.hero-uscm-new .hero-intro-new{
    text-align:left;
}
.hero-uscm-new .hero-rule{
    margin:28px 0;
}
.hero-intro-new{
    max-width:690px;
    line-height:1.65;
}
.hero-uscm-new .hero-actions{
    justify-content:flex-start;
}
.hero-uscm-new .hero-logo-uscm{
    position:relative;
    z-index:4;
    flex:0 0 auto;
    margin-left:auto;
    width:clamp(210px,22vw,320px);
    filter:drop-shadow(0 0 22px rgba(252,252,4,.24)) drop-shadow(0 18px 32px rgba(0,0,0,.42));
}
@media(max-width:900px){
    .hero-uscm-new{padding-top:70px;min-height:620px}
    .hero-uscm-new .hero-content,.hero-title-new,.hero-uscm-new .hero-kicker,.hero-uscm-new .hero-intro-new{text-align:center}
    .hero-uscm-new .hero-rule{margin:28px auto}
    .hero-uscm-new .hero-actions{justify-content:center}
    .hero-bonne-mere{left:50%;transform:translateX(-50%);width:clamp(430px,70vw,650px);opacity:.15}
    .hero-archer{opacity:.10;left:-190px;width:470px}
}
@media(max-width:600px){
    .hero-uscm-new{min-height:600px;padding:58px 18px 56px}
    .hero-title-new{font-size:clamp(2.5rem,14vw,4.2rem)!important}
    .hero-title-new span{font-size:.48em!important}
    .hero-bonne-mere{width:390px;bottom:-45px}
    .hero-archer{display:none}
}


/* v1.6 — Positionnement commun Safari / Firefox
   Remplace les corrections précédentes spécifiques aux navigateurs. */
.hero-uscm-new{
    position:relative;
    overflow:hidden;
}

.hero-uscm-new .hero-decoration{
    position:absolute;
    inset:0;
    z-index:1;
    overflow:hidden;
    pointer-events:none;
}

.hero-uscm-new .hero-inner-uscm,
.hero-uscm-new .hero-content{
    position:relative;
    z-index:5;
}

.hero-archer{
    display:block !important;
    visibility:visible !important;
    position:absolute;
    left:-28px;
    top:92px;
    bottom:auto;
    width:155px;
    height:auto;
    max-height:520px;
    object-fit:contain;
    object-position:top left;
    opacity:.30;
    transform:none;
    filter:drop-shadow(0 0 18px rgba(252,252,4,.10));
}

.hero-bonne-mere{
    display:block !important;
    visibility:visible !important;
    position:absolute;
    left:61%;
    top:26px;
    bottom:auto;
    width:360px;
    height:auto;
    max-height:570px;
    object-fit:contain;
    object-position:top center;
    opacity:.28;
    transform:translateX(-50%);
    filter:drop-shadow(0 0 24px rgba(252,252,4,.14));
}

.hero-uscm-new .hero-logo-uscm{
    position:relative;
    z-index:6;
    transform:none !important;
}

/* Annule toute ancienne correction réservée à Firefox. */
@supports (-moz-appearance:none){
    .hero-bonne-mere{
        left:61%;
        top:26px;
        bottom:auto;
        width:360px;
        max-height:570px;
        transform:translateX(-50%);
        opacity:.28;
    }

    .hero-uscm-new .hero-logo-uscm{
        transform:none !important;
        width:clamp(210px,22vw,320px);
    }
}

@media(max-width:1100px){
    .hero-bonne-mere{
        left:58%;
        top:45px;
        width:315px;
        max-height:510px;
        opacity:.23;
    }

    .hero-archer{
        left:-42px;
        top:120px;
        width:135px;
        max-height:450px;
        opacity:.22;
    }
}

@media(max-width:900px){
    .hero-bonne-mere{
        left:50%;
        top:80px;
        width:300px;
        max-height:450px;
        opacity:.16;
    }

    .hero-archer{
        left:-45px;
        top:145px;
        width:120px;
        max-height:390px;
        opacity:.16;
    }
}

@media(max-width:600px){
    .hero-archer{
        display:none !important;
    }

    .hero-bonne-mere{
        display:block !important;
        left:50%;
        top:115px;
        width:235px;
        max-height:350px;
        opacity:.12;
    }
}


/* v1.7 — Logo déplacé dans l'en-tête, sous le texte USCM */
.publicnav-dark{
    align-items:flex-start;
}

.site-brand-with-logo{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:7px;
    min-width:92px;
}

.header-logo-uscm{
    display:block;
    width:72px;
    height:72px;
    object-fit:cover;
    border-radius:50%;
    filter:drop-shadow(0 0 10px rgba(252,252,4,.22));
}

/* Le grand logo de la bannière est définitivement masqué. */
.hero-logo-uscm{
    display:none !important;
}

/* Le contenu peut utiliser tout l'espace libéré à droite. */
.hero-uscm-new .hero-inner-uscm{
    display:block;
    width:min(1180px,calc(100% - 40px));
    margin:0 auto;
}

.hero-uscm-new .hero-content{
    max-width:790px;
}

/* La Bonne Mère occupe désormais l'espace central/droit sans être masquée. */
.hero-bonne-mere{
    left:72%;
    top:24px;
    width:390px;
    max-height:585px;
    opacity:.30;
}

@media(max-width:1100px){
    .hero-bonne-mere{
        left:72%;
        width:340px;
    }
}

@media(max-width:900px){
    .publicnav-dark{
        align-items:flex-start;
    }

    .header-logo-uscm{
        width:62px;
        height:62px;
    }

    .hero-uscm-new .hero-content{
        max-width:100%;
    }

    .hero-bonne-mere{
        left:65%;
        top:72px;
        width:300px;
        opacity:.17;
    }
}

@media(max-width:700px){
    .site-brand-with-logo{
        align-items:flex-start;
    }

    .header-logo-uscm{
        width:56px;
        height:56px;
    }
}

@media(max-width:600px){
    .hero-bonne-mere{
        left:50%;
        top:120px;
        width:235px;
        opacity:.11;
    }
}


/* v3.2 — Images des dernières actualités sur la page d'accueil */
.news-card{
    overflow:hidden;
}

.news-card-with-image{
    padding:0;
    display:flex;
    flex-direction:column;
}

.news-card-image{
    width:100%;
    height:210px;
    overflow:hidden;
    background:#111;
    border-bottom:2px solid var(--uscm-yellow,#fcfc04);
}

.news-card-image img{
    display:block;
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center;
    transition:transform .35s ease;
}

.news-card-with-image:hover .news-card-image img{
    transform:scale(1.045);
}

.news-card-content{
    padding:24px;
}

.news-card-content small{
    display:block;
    margin-bottom:9px;
}

.news-card-content h3{
    margin:0 0 12px;
}

.news-card-content p{
    margin:0;
    line-height:1.65;
}

@media(max-width:700px){
    .news-card-image{
        height:190px;
    }

    .news-card-content{
        padding:20px;
    }
}



/* v3.3 — Boutons de même largeur dans Comptes et droits d'accès */
.table-actions{
    display:flex;
    flex-direction:column;
    gap:8px;
    min-width:170px;
}

.table-actions .inline-form{
    margin:0;
}

.table-actions .small-button,
.table-actions button.small-button{
    display:flex;
    justify-content:center;
    align-items:center;
    width:170px;
    min-height:40px;
    box-sizing:border-box;
    padding:10px 16px;
    font-weight:600;
    text-align:center;
}


/* v3.7 — Logo à gauche du titre sur ordinateur, emplacement actuel sur mobile */
.hero-desktop-layout{
    display:grid;
    grid-template-columns:150px minmax(0,790px);
    align-items:center;
    justify-content:start;
    gap:34px;
}

.hero-desktop-logo{
    display:flex;
    align-items:center;
    justify-content:center;
    align-self:center;
}

.hero-desktop-logo img{
    display:block;
    width:132px;
    height:132px;
    object-fit:cover;
    border-radius:50%;
    filter:
        drop-shadow(0 0 14px rgba(252,252,4,.30))
        drop-shadow(0 18px 28px rgba(0,0,0,.48));
    animation:uscmHeroLogoIn .48s ease-out both;
}

.hero-desktop-layout .hero-content{
    max-width:790px;
    margin:0;
    animation:uscmHeroTextIn .55s .08s ease-out both;
}

@keyframes uscmHeroLogoIn{
    from{opacity:0;transform:translateX(-14px) scale(.96)}
    to{opacity:1;transform:translateX(0) scale(1)}
}

@keyframes uscmHeroTextIn{
    from{opacity:0;transform:translateY(9px)}
    to{opacity:1;transform:translateY(0)}
}

/* Sur ordinateur, le logo de l'en-tête est masqué : il est dans la bannière. */
@media(min-width:901px){
    .site-brand-with-logo .header-logo-uscm{
        display:none;
    }

    .site-brand-with-logo{
        min-width:auto;
        gap:0;
    }

    .publicnav-dark{
        align-items:center;
    }
}

/* Sur tablette et téléphone, le logo reste exactement dans l'en-tête. */
@media(max-width:900px){
    .hero-desktop-layout{
        display:block;
    }

    .hero-desktop-logo{
        display:none;
    }

    .site-brand-with-logo .header-logo-uscm{
        display:block;
    }

    .hero-desktop-layout .hero-content{
        max-width:100%;
        margin:0 auto;
        animation:none;
    }
}

@media(prefers-reduced-motion:reduce){
    .hero-desktop-logo img,
    .hero-desktop-layout .hero-content{
        animation:none;
    }
}


/* v3.8 — Titre d'accueil administrable et taille uniforme */
.hero-title-new{
    white-space:normal;
    text-wrap:balance;
}

.hero-title-new span{
    display:inline;
    margin:0!important;
    color:inherit!important;
    font-size:inherit!important;
    line-height:inherit!important;
    letter-spacing:inherit!important;
}

.hero-title-new br{
    display:block;
    content:"";
}

@media(min-width:992px){
    .hero-title-new{
        font-size:clamp(2.35rem,4.2vw,4.65rem)!important;
        line-height:1.02!important;
    }
}

@media(max-width:991px){
    .hero-title-new{
        font-size:clamp(2.25rem,9vw,4.2rem)!important;
        line-height:1.04!important;
    }
}


/* v4.0 — Bannière pilotée par les paramètres administrateur */
.hero-uscm-new::before{
    content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
    background:rgba(0,0,0,var(--hero-overlay-opacity,0));
}
.hero-uscm-new .hero-decoration{z-index:2}
.hero-uscm-new .hero-inner-uscm{z-index:4}
.hero-title-new{
    width:100%;max-width:1000px;margin-left:auto!important;margin-right:auto!important;
    color:var(--hero-title-color,#fcfc04)!important;
    font-size:var(--hero-title-size,72px)!important;
    text-align:center!important;line-height:1.03!important;
}
.hero-uscm-new .hero-kicker,.hero-uscm-new .hero-intro-new{text-align:center!important}
.hero-intro-new{
    max-width:1000px;margin-left:auto;margin-right:auto;
    color:var(--hero-subtitle-color,#f2f2f2)!important;
    font-size:var(--hero-subtitle-size,22px)!important;
    white-space:normal;line-height:1.55;
}
.hero-uscm-new .hero-rule{margin:28px auto!important}
.hero-uscm-new .hero-actions{justify-content:center!important}
.hero-uscm-new .hero-actions .button{
    font-size:var(--hero-button-size,16px);
    border-radius:var(--hero-button-radius,8px);
    min-width:210px;text-align:center;
}
.hero-uscm-new .hero-actions .button-gold{background:var(--hero-button-color,#fcfc04)}
.hero-uscm-new .hero-actions .button-outline{border-color:var(--hero-button-color,#fcfc04)}
.hero-desktop-layout{
    grid-template-columns:max-content minmax(0,1000px);
    justify-content:center;gap:34px;width:min(1320px,96%);margin:auto;
}
.hero-desktop-layout .hero-content{max-width:1000px;width:100%;text-align:center}
.hero-desktop-logo{transform:translate(var(--hero-logo-x,0),var(--hero-logo-y,0))}
.hero-desktop-logo img{width:var(--hero-logo-size,132px);height:var(--hero-logo-size,132px)}
.hero-archer{
    left:var(--hero-archer-x,-28px)!important;top:var(--hero-archer-y,92px)!important;
    width:var(--hero-archer-size,155px)!important;opacity:var(--hero-archer-opacity,.30)!important;
}
.hero-bonne-mere{
    left:var(--hero-bm-x,72%)!important;top:var(--hero-bm-y,24px)!important;
    width:var(--hero-bm-size,390px)!important;opacity:var(--hero-bm-opacity,.30)!important;
}
@media(max-width:900px){
 .hero-title-new{font-size:clamp(2.25rem,9vw,4.2rem)!important}
 .hero-intro-new{font-size:clamp(1rem,4vw,1.25rem)!important}
}

/* Éditeur de bannière */
.banner-editor-page{width:min(1500px,95%);margin:34px auto 70px}
.banner-editor-layout{display:grid;grid-template-columns:minmax(420px,620px) minmax(480px,1fr);gap:24px;align-items:start}
.banner-controls{display:grid;gap:18px}.editor-group{display:grid;gap:12px}.editor-group h2{margin:0 0 4px}
.control-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px}.editor-group input[type=color]{height:48px;padding:4px}
.editor-group input[type=range]{padding:0}.editor-group output{float:right;color:#64748b;font-weight:600}
.banner-editor-actions{position:sticky;bottom:12px;padding:12px;border-radius:14px;background:rgba(244,247,251,.95);backdrop-filter:blur(10px)}
.import-button{position:relative;overflow:hidden;cursor:pointer}.import-button input{position:absolute;inset:0;opacity:0;cursor:pointer}
.banner-preview-wrap{position:sticky;top:24px}.banner-preview{--ptitle:72px;--ctitle:#fcfc04;--psub:22px;--csub:#f2f2f2;position:relative;min-height:620px;overflow:hidden;border-radius:20px;background:radial-gradient(circle at 50% 15%,rgba(252,252,4,.11),transparent 34%),linear-gradient(180deg,#030303,#0a0802 60%,#020202);border:1px solid rgba(252,252,4,.4);color:#fff}
.banner-preview::after{content:"";position:absolute;inset:0;background:rgba(0,0,0,var(--poverlay,0));z-index:1}
.banner-preview .preview-archer,.banner-preview .preview-bm{position:absolute;z-index:2;object-fit:contain;pointer-events:none}
.preview-archer{left:var(--parcherx,-28px);top:var(--parchery,92px);width:var(--parchersize,155px);opacity:var(--parcheropacity,.3)}
.preview-bm{left:var(--pbmx,72%);top:var(--pbmy,24px);width:var(--pbmsize,390px);opacity:var(--pbmopacity,.3);transform:translateX(-50%)}
.preview-layout{position:relative;z-index:3;min-height:620px;display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:24px;padding:54px 36px}
.preview-logo{width:var(--plogo,132px);height:var(--plogo,132px);object-fit:cover;border-radius:50%;transform:translate(var(--plogox,0),var(--plogoy,0));filter:drop-shadow(0 0 14px rgba(252,252,4,.3))}
.preview-copy{text-align:center}.preview-title{white-space:pre-line;text-transform:uppercase;font-size:clamp(28px,calc(var(--ptitle)*.62),76px);line-height:1.03;font-weight:900;color:var(--ctitle)}
.preview-rule{width:64px;height:3px;background:#fcfc04;margin:24px auto}.preview-subtitle{white-space:pre-line;font-size:clamp(14px,calc(var(--psub)*.85),32px);line-height:1.5;color:var(--csub)}
.preview-buttons{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:26px}.preview-button{display:inline-block;min-width:180px;padding:13px 18px;border-radius:var(--pbuttonradius,8px);font-size:var(--pbuttonsize,16px);font-weight:800}.preview-button.primary{background:var(--pbuttoncolor,#fcfc04);color:#000}.secondary-preview{border:1px solid var(--pbuttoncolor,#fcfc04);color:#fff}
@media(max-width:1100px){.banner-editor-layout{grid-template-columns:1fr}.banner-preview-wrap{position:static}.banner-preview{min-height:520px}.preview-layout{min-height:520px}}
@media(max-width:700px){.control-pair{grid-template-columns:1fr}.banner-editor-page{width:92%}.preview-layout{grid-template-columns:1fr;padding:30px 18px}.preview-logo{display:none}.banner-preview{min-height:500px}}

/* v4.1 — Photo et carte du responsable de section */
.responsable-preview{
    border-radius:50%;
    object-fit:cover;
    aspect-ratio:1 / 1;
    height:220px;
}

.responsable-upload{
    border-color:#d6d600;
    background:#fffef0;
}

.responsable-card{
    text-align:center;
    align-self:start;
}

.responsable-photo-wrap{
    width:170px;
    height:170px;
    margin:18px auto 20px;
    padding:5px;
    border:2px solid var(--uscm-yellow,#fcfc04);
    border-radius:50%;
    background:#080808;
    box-shadow:0 0 26px rgba(252,252,4,.16);
}

.responsable-photo{
    display:block;
    width:100%;
    height:100%;
    border-radius:50%;
    object-fit:cover;
    object-position:center;
}

.responsable-photo-placeholder{
    width:170px;
    height:170px;
    margin:18px auto 20px;
    display:grid;
    place-items:center;
    border:2px solid var(--uscm-yellow,#fcfc04);
    border-radius:50%;
    background:linear-gradient(145deg,#1b1b1b,#080808);
    color:var(--uscm-yellow,#fcfc04);
    font-size:2.25rem;
    font-weight:900;
    letter-spacing:.08em;
}

.responsable-card h2{
    margin:0;
    color:#fff;
    font-size:1.65rem;
}

.responsable-role{
    margin:7px 0 18px;
    color:var(--uscm-yellow,#fcfc04);
    font-weight:750;
}

.responsable-details{
    margin-top:18px;
    padding-top:14px;
    text-align:left;
    border-top:1px solid rgba(252,252,4,.22);
}

.responsable-details p{
    margin:10px 0;
    line-height:1.55;
}

.responsable-card .contact-actions{
    justify-content:center;
}

.responsable-card .social-links{
    justify-content:center;
    margin-top:18px;
}

@media(max-width:700px){
    .responsable-photo-wrap,
    .responsable-photo-placeholder{
        width:145px;
        height:145px;
    }

    .responsable-preview{
        height:auto;
        max-width:220px;
        margin:0 auto;
    }
}


/* v4.4 — Réservation du gymnase */
.gym-page{margin:0;background:#f3f5f8;color:#172033;min-height:100vh}.gym-top{background:#000}.gym-main{width:min(1420px,94%);margin:34px auto 70px}.gym-intro{text-align:center;margin-bottom:28px}.gym-intro h1{margin:.3rem 0;font-size:clamp(2rem,5vw,3.8rem)}.gym-intro>p:last-child{color:#64748b}.gym-calendar-card{padding:22px}.gym-calendar-header{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;margin-bottom:14px}.gym-calendar-header h2{text-align:center;margin:0;text-transform:capitalize}.gym-legend{display:flex;gap:20px;justify-content:center;margin:0 0 16px;color:#64748b}.gym-legend span{display:flex;align-items:center;gap:7px}.gym-dot{width:11px;height:11px;border-radius:50%;display:inline-block}.gym-dot-approved{background:#15803d}.gym-dot-pending{background:#d97706}.gym-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid #dbe1e8;border-top:1px solid #dbe1e8}.gym-weekday{padding:10px;text-align:center;font-weight:800;background:#111;color:#fcfc04;border-right:1px solid #333}.gym-day{min-height:145px;padding:8px;border-right:1px solid #dbe1e8;border-bottom:1px solid #dbe1e8;background:#fff;overflow:hidden}.gym-day.is-outside{background:#f0f2f5;color:#9aa3af}.gym-day.is-today{box-shadow:inset 0 0 0 3px #fcfc04}.gym-day-number{font-weight:850;margin-bottom:7px}.gym-events{display:grid;gap:5px}.gym-event{display:grid;gap:2px;padding:6px 7px;border-radius:7px;font-size:.76rem;line-height:1.25}.gym-event strong{font-size:.77rem}.gym-event span,.gym-event small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gym-event-validee{background:#dcfce7;border-left:4px solid #15803d}.gym-event-en_attente{background:#ffedd5;border-left:4px solid #d97706}.gym-two-columns{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(0,1.2fr);gap:22px;margin-top:25px;align-items:start}.gym-request-form h2,.gym-my-requests h2{margin:.25rem 0 14px}.gym-readonly-section{padding:12px;border:1px solid #d5dae2;border-radius:10px;background:#f6f7f9;font-weight:800}.gym-request-list{display:grid;gap:10px}.gym-request-list>article{display:flex;justify-content:space-between;gap:16px;padding:14px;border:1px solid #e1e5eb;border-radius:12px}.gym-request-list article>div:first-child{min-width:0}.gym-request-list span{margin-left:8px;color:#64748b}.gym-request-list p{margin:6px 0}.gym-request-list small{display:block;color:#64748b}.gym-status{display:inline-block;padding:5px 9px;border-radius:99px;font-size:.78rem;font-weight:800;white-space:nowrap}.gym-status-en_attente{background:#ffedd5;color:#9a3412}.gym-status-validee{background:#dcfce7;color:#166534}.gym-status-refusee{background:#fee2e2;color:#991b1b}.gym-status-annulee{background:#e2e8f0;color:#475569}.gym-inline-form{margin-top:9px}.gym-inline-form button{width:100%}.gym-login-callout{max-width:700px;margin:25px auto;text-align:center}.gym-admin-main{width:min(1280px,94%)}.gym-filter-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0}.gym-filter-tabs a{display:flex;gap:8px;align-items:center;padding:10px 14px;border-radius:10px;background:#fff;text-decoration:none;border:1px solid #dbe1e8}.gym-filter-tabs a.active{background:#000;color:#fcfc04;border-color:#000}.gym-filter-tabs span{display:grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:99px;background:#e2e8f0;color:#111;font-size:.8rem;font-weight:800}.gym-admin-list{display:grid;gap:16px}.gym-admin-reservation{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,380px);gap:24px}.gym-admin-summary{display:flex;gap:18px}.gym-date-block{flex:0 0 82px;height:82px;display:grid;place-items:center;align-content:center;border-radius:14px;background:#111;color:#fff}.gym-date-block strong{font-size:2rem;line-height:1;color:#fcfc04}.gym-date-block span{font-size:.72rem;margin-top:5px}.gym-admin-summary h2{margin:8px 0 4px}.gym-admin-summary p{margin:5px 0}.gym-user-comment,.gym-admin-comment{margin-top:12px!important;padding:10px;border-radius:9px;background:#f4f6f8}.gym-admin-comment{background:#fff8cc}.gym-admin-actions{align-content:start}.gym-admin-actions .danger{margin-top:8px}.gym-admin-actions .row button{flex:1}.gym-admin-actions textarea{resize:vertical}
@media(max-width:900px){.gym-calendar{font-size:.9rem}.gym-day{min-height:115px}.gym-two-columns,.gym-admin-reservation{grid-template-columns:1fr}.gym-admin-actions{border-top:1px solid #e2e8f0;padding-top:15px}}
@media(max-width:700px){.gym-calendar-card{padding:10px}.gym-calendar-header{grid-template-columns:1fr 1fr}.gym-calendar-header h2{grid-column:1/-1;grid-row:1}.gym-calendar-header .button{padding:10px;font-size:.82rem;text-align:center}.gym-weekday{padding:7px 2px;font-size:.72rem}.gym-day{min-height:82px;padding:4px}.gym-day-number{font-size:.75rem}.gym-event{padding:4px;font-size:.65rem}.gym-event small{display:none}.gym-event strong{font-size:.65rem}.gym-event span{font-size:.62rem}.gym-request-list>article{flex-direction:column}.gym-admin-summary{align-items:flex-start}.gym-date-block{flex-basis:65px;height:65px}.gym-date-block strong{font-size:1.5rem}}


/* v4.4A — Calendrier professionnel FullCalendar */
.gym-page{background:linear-gradient(180deg,#050505 0,#111 480px,#f3f5f8 480px);}
.gym-main{position:relative;z-index:2;}
.gym-hero-pro{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;padding:34px 36px;margin:0 0 24px;border:1px solid rgba(252,252,4,.34);border-radius:22px;background:linear-gradient(135deg,rgba(12,12,12,.96),rgba(28,28,8,.92));color:#fff;box-shadow:0 18px 46px rgba(0,0,0,.28)}
.gym-hero-pro h1{margin:.25rem 0 .7rem;font-size:clamp(2.15rem,5vw,4.4rem);line-height:1;color:#fcfc04;text-transform:uppercase}.gym-hero-pro p:last-child{margin:0;max-width:760px;color:#d9d9d9;line-height:1.65}.gym-hero-status{display:grid;gap:10px;flex:0 0 auto}.gym-hero-status span{display:flex;align-items:center;gap:9px;color:#eee;font-weight:700}
.gym-calendar-pro,.gym-admin-calendar-card{padding:24px;border-radius:20px;overflow:hidden}.gym-calendar-pro{box-shadow:0 18px 42px rgba(17,24,39,.13)}
#gym-calendar,#gym-admin-calendar{--fc-border-color:#dfe4ea;--fc-page-bg-color:#fff;--fc-neutral-bg-color:#f7f8fa;--fc-list-event-hover-bg-color:#fffbe6;--fc-today-bg-color:rgba(252,252,4,.10);--fc-button-bg-color:#111;--fc-button-border-color:#111;--fc-button-hover-bg-color:#2a2a2a;--fc-button-hover-border-color:#2a2a2a;--fc-button-active-bg-color:#fcfc04;--fc-button-active-border-color:#fcfc04;--fc-event-text-color:#111;font-family:inherit}
.fc .fc-toolbar{gap:16px;flex-wrap:wrap}.fc .fc-toolbar-title{font-size:clamp(1.25rem,3vw,2rem);text-transform:capitalize}.fc .fc-button{border-radius:9px!important;padding:.62em .9em!important;font-weight:750;box-shadow:none!important}.fc .fc-button.fc-button-active{color:#000!important}.fc .fc-col-header-cell{background:#111}.fc .fc-col-header-cell-cushion{padding:11px 5px;color:#fcfc04;text-decoration:none;text-transform:capitalize}.fc .fc-daygrid-day-number{padding:8px;color:#222;text-decoration:none;font-weight:800}.fc .fc-day-today .fc-daygrid-day-number{display:grid;place-items:center;min-width:31px;height:31px;margin:4px;border-radius:50%;background:#fcfc04;color:#000}.fc .fc-event{border:0!important;border-radius:7px!important;padding:2px 4px!important;cursor:pointer}.fc .fc-event-main{color:inherit!important}.fc .fc-timegrid-slot{height:3em}.fc .fc-list-day-cushion{background:#111!important}.fc .fc-list-day-text,.fc .fc-list-day-side-text{color:#fcfc04!important;text-decoration:none}.fc-uscm-validee{background:#dcfce7!important;border-left:5px solid #15803d!important;color:#14532d!important}.fc-uscm-en_attente{background:#ffedd5!important;border-left:5px solid #d97706!important;color:#7c2d12!important}.fc-uscm-refusee{background:#fee2e2!important;border-left:5px solid #b91c1c!important;color:#7f1d1d!important}
.gym-form-help{margin:-5px 0 12px}.gym-admin-calendar-card{margin-top:22px}.gym-admin-calendar-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:18px}.gym-admin-calendar-heading h2{margin:.2rem 0 0}.gym-dot-refused{background:#b91c1c}.gym-highlight-reservation{outline:4px solid #fcfc04;outline-offset:3px;transition:outline-color .25s ease}
.gym-modal[hidden]{display:none}.gym-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px}.gym-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.68);backdrop-filter:blur(4px)}.gym-modal-panel{position:relative;z-index:1;width:min(500px,100%);padding:28px;border:1px solid rgba(252,252,4,.45);border-radius:18px;background:#111;color:#fff;box-shadow:0 24px 70px rgba(0,0,0,.45)}.gym-modal-panel h2{margin:.3rem 0 20px;color:#fff}.gym-modal-close{position:absolute;top:12px;right:14px;width:38px;height:38px;padding:0;border-radius:50%;font-size:1.6rem;line-height:1;background:#252525!important;color:#fff!important}.gym-modal-details{display:grid;gap:12px;margin:0}.gym-modal-details>div{display:grid;grid-template-columns:110px 1fr;gap:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.12)}.gym-modal-details dt{color:#fcfc04;font-weight:800}.gym-modal-details dd{margin:0}.gym-modal-open{overflow:hidden}
@media(max-width:900px){.gym-hero-pro{align-items:flex-start;flex-direction:column}.gym-hero-status{grid-template-columns:1fr 1fr}.gym-admin-calendar-heading{align-items:flex-start;flex-direction:column}.fc .fc-toolbar{align-items:stretch;flex-direction:column}.fc .fc-toolbar-chunk{display:flex;justify-content:center;flex-wrap:wrap}.fc .fc-toolbar-title{text-align:center}}
@media(max-width:600px){.gym-main{width:min(100% - 20px,1420px);margin-top:18px}.gym-hero-pro{padding:24px 20px;border-radius:16px}.gym-hero-status{grid-template-columns:1fr}.gym-calendar-pro,.gym-admin-calendar-card{padding:10px;border-radius:14px}.fc .fc-button{padding:.55em .7em!important;font-size:.82rem}.fc .fc-list-event-title{font-size:.86rem}.gym-modal-details>div{grid-template-columns:1fr;gap:4px}}

/* v4.2 — Partenaires et pied de page commun */
.public-footer{
    display:block;
    padding:0;
}
.footer-partners{
    padding:24px 5%;
    text-align:center;
    border-bottom:1px solid rgba(252,252,4,.24);
}
.footer-partners-title{
    display:block;
    margin-bottom:14px;
    color:var(--uscm-yellow,#fcfc04);
    font-size:.82rem;
    letter-spacing:.14em;
    text-transform:uppercase;
}
.footer-partners-links{
    display:flex;
    justify-content:center;
    align-items:center;
    flex-wrap:wrap;
    gap:10px 16px;
}
.footer-partners-links a{
    display:inline-flex;
    align-items:center;
    min-height:38px;
    padding:8px 14px;
    border:1px solid rgba(252,252,4,.42);
    border-radius:999px;
    color:#fff;
    text-decoration:none;
    transition:background .2s ease,color .2s ease,border-color .2s ease;
}
.footer-partners-links a:hover{
    color:#000;
    background:var(--uscm-yellow,#fcfc04);
    border-color:var(--uscm-yellow,#fcfc04);
}
.footer-main-row{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:20px;
    padding:28px 5%;
}
.footer-main-row strong{
    color:var(--uscm-yellow,#fcfc04);
}
.footer-main-row a{
    color:#fff;
    text-decoration:none;
}
.footer-main-row a:hover{
    color:var(--uscm-yellow,#fcfc04);
}
.partners-admin-layout{
    display:grid;
    grid-template-columns:minmax(290px,.75fr) minmax(0,1.25fr);
    gap:24px;
    align-items:start;
}
.partner-form{
    position:sticky;
    top:20px;
}
.partner-admin-list{
    display:grid;
    gap:12px;
}
.partner-admin-item{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:18px;
    padding:15px;
    border:1px solid #e2e8f0;
    border-radius:12px;
}
.partner-admin-item>div:first-child{
    min-width:0;
    display:grid;
    gap:5px;
}
.partner-admin-item a:not(.button){
    overflow-wrap:anywhere;
    color:#475569;
}
.partner-admin-item small{
    color:#64748b;
}
.partner-admin-actions{
    display:flex;
    gap:8px;
    align-items:center;
    flex-wrap:wrap;
}
.partner-admin-actions form{
    margin:0;
}
.partner-admin-actions .button,
.partner-admin-actions button{
    padding:9px 13px;
    font-size:.9rem;
}
@media(max-width:850px){
    .footer-main-row{
        flex-direction:column;
        text-align:center;
    }
    .partners-admin-layout{
        grid-template-columns:1fr;
    }
    .partner-form{
        position:static;
    }
    .partner-admin-item{
        align-items:flex-start;
        flex-direction:column;
    }
}

/* v4.3 — Logos et page publique des partenaires */
.footer-partners-heading{
    display:flex;
    justify-content:center;
    align-items:center;
    gap:22px;
    flex-wrap:wrap;
    margin-bottom:18px;
}
.footer-partners-heading .footer-partners-title{
    margin:0;
}
.footer-partners-heading a{
    color:#fff;
    font-size:.88rem;
    text-decoration:none;
}
.footer-partners-heading a:hover{
    color:var(--uscm-yellow,#fcfc04);
}
.footer-partners-logos{
    display:flex;
    justify-content:center;
    align-items:center;
    flex-wrap:wrap;
    gap:14px;
}
.footer-partners-logos a{
    width:150px;
    height:76px;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:10px 14px;
    border:1px solid rgba(252,252,4,.32);
    border-radius:12px;
    background:#fff;
    color:#111;
    text-decoration:none;
    transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.footer-partners-logos a:hover{
    transform:translateY(-3px);
    border-color:var(--uscm-yellow,#fcfc04);
    box-shadow:0 8px 22px rgba(0,0,0,.28);
}
.footer-partners-logos img{
    display:block;
    width:100%;
    height:100%;
    object-fit:contain;
}
.footer-partners-logos span{
    font-weight:800;
    text-align:center;
}

.partner-logo-upload{
    display:grid;
    gap:12px;
    margin:16px 0;
    padding:16px;
    border:1px solid #d7dde7;
    border-radius:14px;
    background:#f8fafc;
}
.partner-logo-preview{
    display:block;
    width:100%;
    max-width:260px;
    height:150px;
    margin:0 auto;
    padding:14px;
    object-fit:contain;
    border:1px solid #d7dde7;
    border-radius:12px;
    background:#fff;
}
.partner-logo-preview.is-hidden{display:none}
.partner-logo-dropzone{
    position:relative;
    min-height:130px;
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:center;
    gap:7px;
    margin:0;
    padding:18px;
    text-align:center;
    border:2px dashed #aeb8c7;
    border-radius:12px;
    background:#fff;
    cursor:pointer;
    transition:border-color .2s ease,background .2s ease;
}
.partner-logo-dropzone:hover,
.partner-logo-dropzone.is-dragging{
    border-color:#d6d600;
    background:#fffef0;
}
.partner-logo-dropzone input{
    position:absolute;
    width:1px;
    height:1px;
    opacity:0;
    pointer-events:none;
}
.partner-logo-dropzone span,
.partner-logo-dropzone small{color:#64748b}
.partner-delete-logo{justify-self:start}
.partner-admin-item-logo{
    display:grid;
    grid-template-columns:86px minmax(0,1fr) auto;
}
.partner-admin-logo-cell{
    width:86px;
    height:66px;
    display:grid;
    place-items:center;
    padding:8px;
    border:1px solid #e2e8f0;
    border-radius:10px;
    background:#fff;
    color:#111827;
    font-weight:900;
}
.partner-admin-logo-cell img{
    width:100%;
    height:100%;
    object-fit:contain;
}
.partner-admin-copy{
    min-width:0;
    display:grid;
    gap:5px;
}
.partner-admin-copy p{
    margin:0;
    color:#475569;
    line-height:1.45;
}

.partners-public-main{
    position:relative;
    z-index:2;
    width:min(1240px,92%);
    margin:0 auto;
    padding:70px 0 85px;
}
.partners-public-hero{
    max-width:880px;
    margin:0 auto 42px;
    text-align:center;
}
.partners-public-hero h1{
    margin:.15rem 0 16px;
    color:#fff;
    font-size:clamp(2.8rem,7vw,5.4rem);
    text-transform:uppercase;
}
.partners-public-hero>p:last-child{
    color:#d3d3d3;
    font-size:1.12rem;
    line-height:1.7;
}
.partners-public-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
    gap:22px;
}
.partner-public-card{
    display:flex;
    flex-direction:column;
    align-items:center;
    padding:26px;
    text-align:center;
}
.partner-public-logo{
    width:100%;
    height:155px;
    display:grid;
    place-items:center;
    margin-bottom:20px;
    padding:20px;
    border-radius:14px;
    background:#fff;
    color:#111;
    font-size:2rem;
    font-weight:900;
}
.partner-public-logo img{
    width:100%;
    height:100%;
    object-fit:contain;
}
.partner-public-card h2{
    margin:0 0 12px;
    color:#fff;
}
.partner-public-card p{
    flex:1;
    margin:0 0 20px;
    color:#c9c9c9;
    line-height:1.65;
}

@media(max-width:850px){
    .partner-admin-item-logo{
        grid-template-columns:76px minmax(0,1fr);
    }
    .partner-admin-actions{
        grid-column:1 / -1;
    }
}
@media(max-width:600px){
    .footer-partners-logos a{
        width:128px;
        height:68px;
    }
    .partner-admin-item-logo{
        grid-template-columns:1fr;
    }
    .partner-admin-logo-cell{
        width:100%;
        height:90px;
    }
}


/* v4.4A.2 — intégration sûre du lien Réservation, sans modifier les partenaires */
.publicnav-dark nav a[href="/reservation-gymnase.php"]{
    color:#fff;
}
.publicnav-dark nav a[href="/reservation-gymnase.php"]:hover{
    color:var(--uscm-yellow,#fcfc04);
}
@media(max-width:900px){
    .publicnav-dark nav a[href="/reservation-gymnase.php"]{
        width:100%;
    }
}


/* v4.4A.3 — Espacement des boutons Mois / Semaine / Liste */
.fc .fc-button-group{
    display:flex;
    gap:8px;
}

.fc .fc-button-group > .fc-button{
    margin:0 !important;
    border-radius:9px !important;
}

@media(max-width:600px){
    .fc .fc-button-group{
        gap:6px;
    }
}


/* v4.4A.4 — Barre d’outils du calendrier harmonisée */
.fc .fc-header-toolbar{
    column-gap:18px;
    row-gap:16px;
    margin-bottom:24px !important;
}

/* Espace entre les commandes de navigation et le bouton Aujourd’hui. */
.fc .fc-toolbar-chunk{
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    gap:10px;
}

.fc .fc-toolbar-chunk:first-child{
    row-gap:14px;
}

/* Même encadrement pour Mois, Semaine et Liste, actif ou non. */
.fc .fc-button-group > .fc-button,
.fc .fc-button-group > .fc-button:first-child,
.fc .fc-button-group > .fc-button:last-child,
.fc .fc-button-group > .fc-button.fc-button-active{
    margin:0 !important;
    border:2px solid #111 !important;
    border-radius:9px !important;
    box-shadow:none !important;
}

/* Empêche FullCalendar de supprimer la bordure entre les boutons. */
.fc .fc-button-group > .fc-button:not(:first-child){
    margin-left:0 !important;
}

@media(max-width:700px){
    .fc .fc-header-toolbar{
        row-gap:18px;
    }

    .fc .fc-toolbar-chunk{
        row-gap:12px;
    }
}


/* v4.4A.5 — Création directe d'une réservation par les administrateurs */
.gym-admin-create-card{
    margin:24px 0;
    border-top:5px solid var(--uscm-yellow,#fcfc04);
}

.gym-admin-create-heading h2{
    margin:.2rem 0 .45rem;
}

.gym-admin-create-form{
    margin-top:18px;
}

.gym-admin-create-form > .row{
    margin-top:10px;
}

@media(max-width:700px){
    .gym-admin-create-card{
        padding:20px;
    }
}


/* v4.4A.6 — Période et journée entière */
.gym-all-day-check{
    width:fit-content;
    margin:14px 0 8px;
    padding:11px 14px;
    border:1px solid #d6d600;
    border-radius:10px;
    background:#fffef0;
}

.gym-all-day-check input{
    flex:0 0 auto;
}

.gym-request-form input[readonly],
.gym-admin-create-form input[readonly]{
    background:#eef1f5;
    color:#111827;
    cursor:not-allowed;
}


/* v4.5.4 — Dates de réservation côte à côte */
.gym-date-columns{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:18px;
    align-items:end;
    margin:4px 0 8px;
}

.gym-date-columns > div{
    min-width:0;
    display:flex;
    flex-direction:column;
}

.gym-date-columns label{
    margin-bottom:6px;
}

.gym-date-columns input[type="date"]{
    width:100%;
    min-width:0;
}

/* La règle générique .form-columns passe à une colonne dès 850 px.
   Les dates restent côte à côte sur tablette et ne se superposent
   que sur les petits téléphones. */
@media(max-width:560px){
    .gym-date-columns{
        grid-template-columns:1fr;
        gap:10px;
    }
}


/* v4.5.7 — Nouveaux statuts des réservations */
.gym-status-en_attente_decision{
    background:#dbeafe;
    color:#1e3a8a;
}

.gym-status-validee_sous_reserve{
    background:#f3e8ff;
    color:#6b21a8;
}

.fc-uscm-en_attente_decision{
    background:#dbeafe!important;
    border-left:5px solid #2563eb!important;
    color:#1e3a8a!important;
}

.fc-uscm-validee_sous_reserve{
    background:#f3e8ff!important;
    border-left:5px solid #9333ea!important;
    color:#581c87!important;
}

.gym-dot-decision{
    background:#2563eb;
}

.gym-dot-conditional{
    background:#9333ea;
}

.gym-decision-actions{
    align-items:stretch;
}

.gym-decision-actions button{
    flex:1 1 175px!important;
}

.decision-button{
    background:#2563eb!important;
    color:#fff!important;
}

.decision-button:hover{
    background:#1d4ed8!important;
}

.conditional-button{
    background:#9333ea!important;
    color:#fff!important;
}

.conditional-button:hover{
    background:#7e22ce!important;
}


/* v4.6.1 — Bloc de marque uniforme sur toutes les pages publiques */
.publicnav-dark .site-brand-with-logo,
.gym-top .site-brand-with-logo{
    display:grid;
    grid-template-areas:
        "name"
        "subtitle"
        "logo";
    justify-items:center;
    align-items:center;
    width:max-content;
    min-width:118px;
    gap:3px;
    line-height:1;
    text-align:center;
    text-decoration:none;
}

.publicnav-dark .site-brand-with-logo .brand-mark,
.gym-top .site-brand-with-logo .brand-mark{
    grid-area:name;
    display:block;
    width:100%;
    margin:0;
    text-align:center;
}

.publicnav-dark .site-brand-with-logo .brand-subtitle,
.gym-top .site-brand-with-logo .brand-subtitle{
    grid-area:subtitle;
    display:block;
    width:100%;
    margin:2px 0 0;
    text-align:center;
    white-space:nowrap;
}

.publicnav-dark .site-brand-with-logo .header-logo-uscm,
.gym-top .site-brand-with-logo .header-logo-uscm{
    grid-area:logo;
    justify-self:center;
    margin:7px auto 0;
}

/* Sur ordinateur, le logo reste masqué comme auparavant.
   USCM et PORTAIL OFFICIEL restent parfaitement centrés entre eux. */
@media(min-width:901px){
    .publicnav-dark .site-brand-with-logo .header-logo-uscm,
    .gym-top .site-brand-with-logo .header-logo-uscm{
        display:none;
    }

    .publicnav-dark .site-brand-with-logo,
    .gym-top .site-brand-with-logo{
        grid-template-areas:
            "name"
            "subtitle";
        gap:3px;
    }
}

/* Sur téléphone et tablette, le logo est centré sous les deux textes. */
@media(max-width:900px){
    .publicnav-dark .site-brand-with-logo,
    .gym-top .site-brand-with-logo{
        margin-left:auto;
        margin-right:auto;
    }

    .publicnav-dark .site-brand-with-logo .header-logo-uscm,
    .gym-top .site-brand-with-logo .header-logo-uscm{
        display:block;
    }
}

/* v4.6.2 — Rétablissement du centrage du Comité directeur */
.committee-president-row{
    display:flex;
    justify-content:center;
    width:100%;
    margin:0 auto 34px;
}

.committee-president-card{
    display:block;
    width:min(720px,100%);
    padding:34px 28px;
    text-align:center;
    border-color:rgba(252,252,4,.58);
}

.committee-president-content{
    width:100%;
    text-align:center;
}

.committee-president-label{
    margin:0 0 14px;
    color:var(--uscm-yellow,#fcfc04);
    font-size:.86rem;
    font-weight:900;
    letter-spacing:.14em;
    text-align:center;
}

.committee-president-card h3{
    margin:0;
    color:#fff;
    font-size:clamp(1.7rem,3vw,2.35rem);
    text-align:center;
}

.committee-president-card .committee-role{
    margin:10px 0 0;
    text-align:center;
}

.committee-president-contact{
    justify-content:center;
    margin-top:18px;
}

/* Carte adaptée quand il n'y a qu'un représentant institutionnel */
.committee-grid-institutional{
    grid-template-columns:repeat(auto-fit,minmax(280px,420px));
    justify-content:center;
}

.committee-grid-institutional .committee-card{
    width:100%;
    max-width:420px;
    justify-self:center;
}

@media(max-width:700px){
    .committee-president-card{
        padding:28px 20px;
    }
}

@media(max-width:520px){
    .committee-grid-institutional{
        grid-template-columns:1fr;
    }

    .committee-grid-institutional .committee-card{
        max-width:none;
    }
}


/* v4.6.4 — Centrage des noms et fonctions du Comité directeur */
.committee-card .committee-card-body{
    flex:1 1 auto;
    min-width:0;
    text-align:center;
}

.committee-card .committee-card-body h3{
    margin-left:auto;
    margin-right:auto;
    text-align:center;
}

.committee-card .committee-card-body .committee-role{
    text-align:center;
}

/* Les coordonnées restent lisibles et sont centrées avec la fiche. */
.committee-card .committee-card-body .committee-contact{
    justify-content:center;
    text-align:center;
}

/* v4.7 — Réservation gymnase : thème sombre unifié avec le reste du site.
   Avant : la page passait au gris clair (#f3f5f8) sous le bandeau, et les
   cartes (calendrier, formulaire, mes demandes) restaient blanches par
   défaut (.card), ce qui détonnait avec l'identité noir/or utilisée partout
   ailleurs. On garde la même structure, on change juste les couleurs. */
.gym-page{
    background:linear-gradient(180deg,#050505 0,#111 480px,var(--black-soft,#0d0d0d) 480px);
    color:#fff;
}

.gym-page .card{
    background:linear-gradient(145deg,rgba(24,24,24,.94),rgba(8,8,8,.94));
    border:1px solid rgba(255,212,0,.22);
    color:#fff;
    box-shadow:0 12px 35px rgba(0,0,0,.28);
}

.gym-page .muted{
    color:#bdbdbd;
}

.gym-readonly-section{
    background:rgba(255,255,255,.06);
    border-color:rgba(255,212,0,.25);
    color:#fff;
}

.gym-request-list > article{
    background:rgba(255,255,255,.03);
    border-color:rgba(255,212,0,.18);
}

.gym-request-list span,
.gym-request-list small{
    color:#bdbdbd;
}

.gym-page input,
.gym-page textarea,
.gym-page select{
    background:#fff;
    color:#172033;
    border-color:rgba(255,212,0,.35);
}

/* FullCalendar (#gym-calendar sur la page publique, #gym-admin-calendar en admin) */
#gym-calendar,
#gym-admin-calendar{
    --fc-border-color:rgba(255,212,0,.4);
    --fc-page-bg-color:transparent;
    --fc-neutral-bg-color:rgba(255,255,255,.05);
    --fc-list-event-hover-bg-color:rgba(255,212,0,.08);
    --fc-neutral-text-color:#fff;
}

.fc .fc-daygrid-day-number,
.fc a.fc-daygrid-day-number,
.fc-daygrid-day-top .fc-daygrid-day-number{
    color:#ffffff !important;
    font-weight:800 !important;
}

.fc .fc-day-other .fc-daygrid-day-number{
    color:#666 !important;
}

.fc-theme-standard td,
.fc-theme-standard th,
.fc .fc-scrollgrid{
    border-color:rgba(255,212,0,.4) !important;
}

.fc .fc-daygrid-day-frame{
    background:rgba(255,255,255,.02);
}

.fc .fc-list-table td{
    background:transparent;
    color:#eee;
}

.fc .fc-more-link{
    color:var(--gold,#fcfc04) !important;
}

.fc .fc-daygrid-day.fc-day-today{
    background:rgba(252,252,4,.06) !important;
}

/* v4.7.2 — Correctif : le fond blanc des cellules ne dépendait pas de
   --fc-page-bg-color comme prévu (FullCalendar l'applique à d'autres
   éléments). On force un fond sombre explicite sur les cellules et on
   neutralise l'opacité automatique de FullCalendar sur les jours hors mois
   (elle délavait aussi notre texte au lieu de juste l'estomper). */
.fc,
.fc .fc-scrollgrid,
.fc .fc-daygrid-day-frame,
.fc .fc-daygrid-day,
.fc .fc-daygrid-body,
.fc .fc-scrollgrid-sync-table,
.fc .fc-timegrid-body,
.fc .fc-timegrid-slots,
.fc .fc-list,
.fc .fc-list-table,
.fc .fc-view-harness{
    background:#141414 !important;
}

.fc .fc-day-other{
    opacity:1 !important;
}

.fc .fc-day-other .fc-daygrid-day-frame{
    background:#0d0d0d !important;
}

.fc .fc-day-other .fc-daygrid-day-number{
    color:#777 !important;
}

/* v4.7.3 — Correctif : mon forçage en blanc (v4.7.2) écrasait aussi le
   texte noir du badge "aujourd'hui" (rond jaune), qui devient alors
   illisible (blanc sur jaune). On restaure explicitement le noir ici,
   avec !important pour être sûr de gagner sur la règle précédente. */
.fc .fc-day-today .fc-daygrid-day-number{
    color:#000 !important;
}

/* v4.7.4 — Correctif : en vue "Liste", le texte des événements (heure,
   titre) utilisait --fc-event-text-color, resté au réglage d'origine
   (#111, prévu pour un fond clair) : quasi invisible sur fond sombre.
   On force explicitement des couleurs claires sur les éléments de texte
   de la vue liste. */
#gym-calendar,
#gym-admin-calendar{
    --fc-event-text-color:#eee;
}

.fc .fc-list-event-time,
.fc .fc-list-event-title,
.fc .fc-list-event-title a,
.fc .fc-list-empty{
    color:#eee !important;
}

.fc .fc-list-event:hover td{
    background:rgba(255,212,0,.08) !important;
}

/* v4.7.5 — Correctif : en vue "Liste", les classes de statut
   (.fc-uscm-validee, etc.) appliquent leur fond pastel clair (prévu pour
   les puces de la vue Mois) à toute la ligne. Avec notre texte clair
   (v4.7.4) par-dessus, ça donne du texte pâle sur fond pastel clair :
   illisible. On neutralise ce fond spécifiquement en vue Liste et on
   garde juste la barre de couleur à gauche comme repère de statut. */
.fc-list-event.fc-uscm-validee,
.fc-list-event.fc-uscm-en_attente,
.fc-list-event.fc-uscm-en_attente_decision,
.fc-list-event.fc-uscm-validee_sous_reserve,
.fc-list-event.fc-uscm-refusee,
.fc-list-event.fc-uscm-annulee{
    background:transparent !important;
    color:#eee !important;
}

.fc-list-event.fc-uscm-validee td,
.fc-list-event.fc-uscm-en_attente td,
.fc-list-event.fc-uscm-en_attente_decision td,
.fc-list-event.fc-uscm-validee_sous_reserve td,
.fc-list-event.fc-uscm-refusee td,
.fc-list-event.fc-uscm-annulee td{
    background:transparent !important;
}

/* v4.7.6 — Correctif : la vue "Semaine" (grille horaire) a sa propre
   structure DOM (fc-timegrid-*), différente de la vue Mois. Les mêmes
   soucis de fond blanc / texte invisible s'y posaient sans être couverts
   par les correctifs précédents. On traite ici tous les conteneurs de
   grille de FullCalendar (mois, semaine, liste) en une fois : fond
   transparent (le fond sombre de la carte apparaît derrière) et texte
   clair pour les libellés d'heures et d'en-têtes. */
.fc-scrollgrid,
.fc-scrollgrid-section > *,
.fc-scrollgrid-sync-table,
.fc-daygrid-body,
.fc-daygrid-day-frame,
.fc-daygrid-day-events,
.fc-timegrid-body,
.fc-timegrid-body-inner,
.fc-timegrid-cols,
.fc-timegrid-col-frame,
.fc-timegrid-slots,
.fc-timegrid-slots table,
.fc-timegrid-slot,
.fc-timegrid-slot-lane,
.fc-timegrid-slot-label,
.fc-timegrid-slot-label-frame,
.fc-timegrid-axis,
.fc-timegrid-axis-frame,
.fc-list-table,
.fc-list-table tbody,
.fc-view-harness,
.fc-scrollgrid td,
.fc-scrollgrid th{
    background-color:transparent !important;
}

.fc-timegrid-slot-label-cushion,
.fc-timegrid-axis-cushion{
    color:#ddd !important;
}

.fc-timegrid-now-indicator-line{
    border-color:var(--gold,#fcfc04) !important;
}

.fc-timegrid-now-indicator-arrow{
    border-color:var(--gold,#fcfc04) !important;
    color:var(--gold,#fcfc04) !important;
}

/* v4.7.8 — Correctif : la ligne d'en-tête des jours (Lun./Mar./...) est
   redevenue transparente à cause du correctif large v4.7.6, laissant
   apparaître un fond clair derrière le texte jaune (peu lisible). On
   restaure explicitement son fond sombre. */
.fc .fc-col-header-cell{
    background:#111 !important;
}

/* v4.9 — Lisibilité du texte de présentation sur la fiche section.
   Avant : un seul <p> avec des retours à la ligne (nl2br), interligne
   serré uniquement sur le dernier paragraphe -> bloc de texte dense.
   Le PHP peut désormais générer plusieurs <p> quand le texte contient
   des lignes vides ; on espace tous les paragraphes et on augmente
   l'interligne partout, pas seulement sur le dernier. */
.section-description p{
    line-height:1.85;
    margin:0 0 1.1em;
}

.section-description p:last-child{
    margin-bottom:0;
}

/* v5.0 — Espace admin : même identité visuelle sombre que le site public.
   Les pages admin n'avaient pas la classe "public-home" et gardaient donc
   le thème clair d'origine (fond gris clair, cartes blanches). On ajoute
   la classe "admin-dark" sur le <body> de chaque page admin et on
   réutilise ici les mêmes couleurs que le thème public (noir + doré). */
body.admin-dark{
    background:#050505 !important;
    color:#fff;
}

body.admin-dark .dashboard,
body.admin-dark .formpage,
body.admin-dark .public{
    color:#fff;
}

body.admin-dark h1,
body.admin-dark h2,
body.admin-dark h3,
body.admin-dark h4{
    color:#fff;
}

body.admin-dark .card,
body.admin-dark .stats article,
body.admin-dark .sectioncard,
body.admin-dark .dashboard-counter,
body.admin-dark .section-admin-list,
body.admin-dark .gym-filter-tabs a,
body.admin-dark .partner-admin-item,
body.admin-dark .history-admin-item,
body.admin-dark .committee-admin-member,
body.admin-dark .gym-admin-reservation{
    background:linear-gradient(145deg,rgba(24,24,24,.94),rgba(8,8,8,.94)) !important;
    border-color:rgba(255,212,0,.22) !important;
    color:#fff !important;
    box-shadow:0 12px 35px rgba(0,0,0,.28) !important;
}

body.admin-dark .dashboard-counter strong{
    color:#fff !important;
}

body.admin-dark .dashboard-counter span{
    color:#bdbdbd !important;
}

body.admin-dark .dashboard-counter small{
    color:#8a8a8a !important;
}

body.admin-dark .dashboard-group-header h2{
    color:#fff !important;
}

body.admin-dark .muted,
body.admin-dark .table-actions small,
body.admin-dark small{
    color:#bdbdbd !important;
}

body.admin-dark table{
    background:transparent !important;
    color:#eee;
}

body.admin-dark th,
body.admin-dark td{
    border-bottom-color:rgba(255,212,0,.16) !important;
    color:#eee;
}

body.admin-dark .badge{
    background:rgba(255,212,0,.16) !important;
    color:var(--gold,#fcfc04) !important;
}

body.admin-dark input,
body.admin-dark textarea,
body.admin-dark select{
    background:#fff;
    color:#172033;
    border-color:rgba(255,212,0,.35) !important;
}

body.admin-dark label{
    color:#eee;
}

body.admin-dark .action{
    background:#141414 !important;
    color:#fff !important;
    border:1px solid rgba(255,212,0,.28) !important;
    box-shadow:none !important;
}

body.admin-dark .action:hover{
    border-color:var(--gold,#fcfc04) !important;
}

body.admin-dark .secondary{
    background:#3a3a3a !important;
    color:#fff !important;
}

body.admin-dark .section-admin-item{
    color:#fff !important;
}

body.admin-dark .section-admin-item:hover,
body.admin-dark .section-admin-item.selected{
    background:rgba(255,212,0,.12) !important;
}

body.admin-dark .section-admin-item small{
    color:#9a9a9a !important;
}

body.admin-dark .filter-tabs a,
body.admin-dark .gym-filter-tabs a{
    color:#fff !important;
}

body.admin-dark .gym-filter-tabs a.active{
    background:#000 !important;
    color:var(--gold,#fcfc04) !important;
    border-color:#000 !important;
}

body.admin-dark .responsable-upload,
body.admin-dark .section-image-upload,
body.admin-dark .partner-logo-upload,
body.admin-dark .publication-upload{
    background:rgba(255,212,0,.06) !important;
    border-color:rgba(255,212,0,.3) !important;
    color:#fff !important;
}

body.admin-dark a{
    color:#fff;
}

body.admin-dark .brand,
body.admin-dark .eyebrow{
    color:var(--gold,#fcfc04) !important;
}

/* v5.1 — Correctifs suite au relookage sombre de l'espace admin :
   1) La case "Journée entière" gardait son fond crème clair d'origine
      (prévu pour le thème clair), texte blanc dessus = illisible.
   2) Les heures de l'axe de la vue Semaine passent en gras, comme
      demandé. */
.gym-all-day-check{
    background:rgba(255,212,0,.08) !important;
    border-color:rgba(255,212,0,.35) !important;
    color:#fff !important;
}

.fc .fc-timegrid-slot-label-cushion{
    font-weight:700 !important;
}

/* v5.2 — La Bonne Mère reste visible pendant le scroll (au lieu de
   disparaître avec la bannière). L'image est sortie du conteneur
   "hero-decoration" (qui la découpait avec overflow:hidden) et déplacée
   juste après le fond animé, en position fixe par rapport à l'écran. */
.hero-bonne-mere-fixed{
    position:fixed !important;
    z-index:1;
    pointer-events:none;
}

/* v5.3 — Correctif : en position fixe, "top" se calcule depuis le haut de
   l'écran et non plus depuis le haut de la bannière comme avant : l'image
   se retrouvait sous l'en-tête collant (qui lui masquait le haut). On
   ajoute la hauteur approximative de l'en-tête à l'offset existant. */
.hero-bonne-mere-fixed{
    top:calc(var(--hero-bm-y, 24px) + 96px) !important;
}

/* v5.4 — Menu mobile : bouton hamburger + overlay plein écran.
   Injectés par /assets/js/nav-mobile.js. Sur ordinateur (> 700px) le
   bouton et l'overlay restent masqués : la navigation ne change pas. */
.nav-toggle{
    display:none;
    background:transparent;
    border:1px solid var(--gold,#fcfc04);
    color:var(--gold,#fcfc04);
    border-radius:8px;
    font-size:1.5rem;
    line-height:1;
    padding:6px 13px;
    cursor:pointer;
}
.nav-overlay{
    position:fixed;
    inset:0;
    z-index:60;
    display:none;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:4px;
    padding:24px;
    background:radial-gradient(circle at 50% 20%,rgba(252,252,4,.10),transparent 45%),rgba(0,0,0,.97);
}
.nav-overlay.open{display:flex}
.nav-overlay a{
    color:#fff;
    font-size:1.55rem;
    font-weight:750;
    padding:12px 20px;
    text-decoration:none;
}
.nav-overlay a:hover,.nav-overlay a:focus{color:var(--gold,#fcfc04)}
.nav-overlay .admin-link{
    margin-top:16px;
    border:1px solid var(--gold,#fcfc04);
    border-radius:9px;
    color:var(--gold,#fcfc04);
    padding:12px 26px;
}
.nav-close{
    position:absolute;
    top:18px;
    right:22px;
    font-size:2.1rem;
    line-height:1;
    color:var(--gold,#fcfc04);
    background:none;
    border:none;
    cursor:pointer;
}
body.nav-locked{overflow:hidden}
@media(max-width:700px){
    .nav-toggle{display:inline-flex;align-self:center}
    /* La barre reste horizontale (marque à gauche, hamburger à droite) */
    .publicnav.publicnav-dark,.top{
        flex-direction:row;
        align-items:center;
        justify-content:space-between;
        flex-wrap:nowrap;
    }
    /* La navigation « en ligne » de la barre est masquée : elle est
       reprise par l'overlay plein écran. */
    .publicnav-dark > nav,.top > nav{display:none}
    /* Barre compacte : on cache le grand logo au profit du texte USCM. */
    .publicnav-dark .site-brand-with-logo .header-logo-uscm,
    .top .site-brand-with-logo .header-logo-uscm{display:none}
}
