
*{box-sizing:border-box}
:root{--flash:#70f000;--dark:#062616;--dark2:#0b3a22;--green:#247944;--ink:#07130c;font-family:Arial,Helvetica,sans-serif}
html{background:#06120b}
body{margin:0;color:#fff;background:linear-gradient(135deg,#10391f,#2b824b);min-height:100vh}
a{color:inherit;text-decoration:none}
.site{width:min(96%,1840px);margin:12px auto 24px}

/* ================= HEADER COMMUN DÉFINITIF ================= */
.hero{height:350px;position:relative;overflow:hidden;border-radius:36px;background:linear-gradient(110deg,#03180e 0 31%,#0e4b2a 64%,#247b45 100%);box-shadow:inset 0 -4px 0 var(--flash)}
.club-logo{position:absolute;left:54px;top:50%;transform:translateY(-50%);width:160px;height:160px;object-fit:contain;z-index:10;pointer-events:none}

/* Zone texte protégée : légèrement à droite du logo. Deux lignes de titre MAX. */
.hero-copy{position:absolute;left:14%;top:50%;transform:translateY(-50%);z-index:7;width:29%;max-width:29%;min-width:0}
.hero-copy h1{margin:0;font-size:68px;line-height:.94;font-weight:950;letter-spacing:-.035em}
.hero-copy h1 span,.hero-copy h1 em{display:block;white-space:nowrap}
.hero-copy h1 em{color:var(--flash);font-style:italic}
.hero-copy p{font-size:clamp(16px,1.45vw,27px);font-weight:800;font-style:italic;margin:20px 0 0;white-space:nowrap}

/* PNG : grande zone centrale jusqu'à la limite protégée des boutons */


.hero-actions{position:absolute;right:38px;top:34px;z-index:12;width:150px;display:flex;flex-direction:column;align-items:center;gap:24px}
.hero-actions button{border:0;background:#032416;color:#fff;font-weight:800;cursor:pointer}
.login{border-radius:999px;padding:16px 22px;font-size:18px}
.burger{width:62px;height:62px;border-radius:50%;font-size:25px}

/* ================= SECTIONS ================= */
.module{margin-top:24px}
.module-title{height:104px;border-radius:20px;background:linear-gradient(100deg,#031a0f,#0d4628);display:flex;align-items:center;padding:0 26px;overflow:hidden;cursor:pointer}
.module-title h2{font-size:32px;margin:0;font-weight:950;line-height:1}
.module-title h2 span{color:#fff}.module-title h2 em{color:var(--flash);font-style:italic}
.module-title img{margin-left:auto;width:150px;height:96px;object-fit:contain}
.module-title:focus-visible{outline:3px solid var(--flash);outline-offset:3px}
.white-block{height:260px;background:#fff;border-radius:24px;margin-top:12px}
.white-block.tall{height:420px}.standalone{margin-top:24px}

/* ================= NOUS REJOINDRE ================= */
.join-us{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:28px 0 34px;border-radius:18px;overflow:hidden;background:#fff}
.join-card{min-height:190px;padding:26px;display:flex;flex-direction:column;align-items:flex-start;background:#f5f7f6;color:#07130c}
.join-card:nth-child(1){background:#57ef16}
.join-card:nth-child(3){background:#e9f8e9}
.join-card h3{margin:0 0 8px;font-size:24px}
.join-card p{margin:0 0 18px;line-height:1.35;flex:1 1 auto}
.join-card a,.join-card button{box-sizing:border-box;width:230px;height:46px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;margin-top:auto;border:0;border-radius:10px;background:#06251e;color:#fff;font-weight:800;text-decoration:none;font-size:15px;line-height:1;white-space:nowrap}
.join-card button[disabled]{opacity:1;cursor:default}

/* ================= FOOTER COMMUN DÉFINITIF ================= */
.footer{margin-top:34px;padding:30px 34px 24px;border-radius:30px;background:linear-gradient(110deg,#03190f,#0d4628 65%,#082b1a)}
.footer-top{display:grid;grid-template-columns:1.05fr 1fr 1fr 1fr;gap:28px;align-items:center;min-height:150px}
.footer-brand{display:flex;align-items:center;gap:16px;min-height:132px}
.footer-brand img{width:76px;height:76px;object-fit:contain}
.footer-brand b{display:block;font-size:20px;white-space:nowrap}
.footer-brand i{color:var(--flash);font-style:italic}
.footer-brand small{display:block;margin-top:7px;color:#d8e4dc;font-size:16px;white-space:nowrap}

/* Trois illustrations seules, grandes et cliquables */
.footer-nav{display:flex;align-items:center;justify-content:center;min-height:132px}
.footer-nav img{width:100%;max-width:235px;height:132px;object-fit:contain}
.footer-rule{height:1px;background:rgba(112,240,0,.22);margin:22px 0}

/* Ligne basse répartie sur toute la largeur */
.footer-bottom{display:grid;grid-template-columns:1.15fr 1.05fr 1px 1.8fr;column-gap:54px;align-items:center}
.footer-left{display:grid;grid-template-columns:.9fr 1.1fr;gap:28px;align-items:center}
.label{max-width:170px;max-height:90px;object-fit:contain}
.socials>div{display:flex;align-items:center;justify-content:center;gap:16px}
.socials a{width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;margin:0;padding:0}
.socials a img{width:40px;height:40px;object-fit:contain}


.contact-icon{width:40px;height:40px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.15);border-radius:50%;font-size:19px;color:#dce8e1}

.institution{display:grid;align-items:center;justify-items:center}
.institution.local{grid-template-columns:1.25fr .75fr;gap:26px}
.institution.handball{grid-template-columns:repeat(3,1fr);gap:30px}
.institution a{display:flex;align-items:center;justify-content:center;width:100%;height:90px}
.institution img{max-width:100%;max-height:82px;object-fit:contain}
.institution.local a:nth-child(2) img{max-height:92px}
.institution-sep{width:1px;height:96px;background:rgba(112,240,0,.35)}
.copyright{text-align:center;color:#bdcbc1;margin-top:22px;font-size:15px}
.copyright a{text-decoration:underline}

/* ================= MENU CBHB ================= */
.drawer{position:fixed;right:-390px;top:0;width:min(390px,90vw);height:100vh;background:linear-gradient(160deg,#02170d,#07351f);z-index:100;padding:78px 28px 30px;transition:.25s;box-shadow:-20px 0 50px #0008;display:flex;flex-direction:column;gap:5px;border-left:2px solid rgba(112,240,0,.28)}
.drawer.open{right:0}
.drawer a{padding:11px 14px;border-radius:10px;font-size:16px;font-weight:950;text-transform:uppercase;letter-spacing:.01em;line-height:1.05}
.drawer a:nth-of-type(odd){color:#fff}
.drawer a:nth-of-type(even){color:var(--flash);font-style:italic}
.drawer a:hover,.drawer a:focus-visible{background:#0d4628;outline:none}
.close{position:absolute;right:20px;top:15px;border:0;background:transparent;color:#fff;font-size:40px;font-weight:700;cursor:pointer}

/* ================= TABLETTE ================= */
@media(max-width:900px){
 .site{width:94%;margin-top:10px}.hero{height:300px;border-radius:26px}
 .club-logo{left:22px;top:50%;transform:translateY(-50%);width:104px;height:104px}
 .hero-copy{left:17%;top:50%;bottom:auto;transform:translateY(-50%);width:33%;max-width:33%}
 .hero-copy h1{font-size:48px}.hero-copy p{font-size:15px;margin-top:12px}
 
 .hero-actions{right:12px;top:18px;width:88px;gap:15px}.login{font-size:13px;padding:11px 10px}.burger{width:48px;height:48px;font-size:20px}
 .module-title{height:86px;padding:0 18px}.module-title h2{font-size:clamp(20px,4.5vw,28px)}.module-title img{width:105px;height:78px}
 .white-block{height:210px}.white-block.tall{height:300px}
 .join-us{grid-template-columns:repeat(2,minmax(0,1fr))}
 .footer-top{grid-template-columns:1fr 1fr}.footer-bottom{grid-template-columns:1fr;row-gap:26px}.institution-sep{height:1px;width:100%}
 .footer-brand b,.footer-brand small{white-space:normal}
}

/* ================= MOBILE ================= */
@media(max-width:560px){
 .site{width:94%;margin:10px auto 18px}
 /* Header mobile compact : zones protégées, titre centré verticalement, 2 lignes max */
 .hero{height:220px;border-radius:22px}
 /* 4 zones réellement protégées : logo | texte | illustration | actions */
 .club-logo{left:14px;top:50%;transform:translateY(-50%);width:70px;height:70px}
 .hero-copy{left:28%;top:50%;bottom:auto;transform:translateY(-50%);width:31%;max-width:31%;z-index:8}
 .hero-copy h1{font-size:clamp(22px,6.2vw,30px);line-height:.96;letter-spacing:-.025em}
 .hero-copy h1 span,.hero-copy h1 em{white-space:nowrap}
 .hero-copy p{font-size:clamp(9px,2.8vw,12px);line-height:1.18;margin-top:9px;white-space:normal;max-width:100%}
 /* Le PNG commence APRÈS le bloc texte : aucun personnage ne peut recouvrir le titre ou la devise. */
 
 
 .hero-actions{right:7px;top:10px;width:68px;gap:12px}.login{font-size:10px;padding:8px 7px}.burger{width:40px;height:40px;font-size:19px}
 /* Bandeaux : deux groupes typographiques sans retour interne */
 .module-title{height:70px;padding:0 12px;gap:8px}.module-title h2{font-size:clamp(15px,4.6vw,19px);line-height:1.02;max-width:calc(100% - 76px)}
 .module-title h2 span,.module-title h2 em{white-space:nowrap}.module-title img{width:68px;height:62px}
 .white-block{height:180px;border-radius:18px}.white-block.tall{height:250px}
 .join-us{grid-template-columns:1fr}.join-card{min-height:auto}.join-card a,.join-card button{width:100%;max-width:230px}
 /* Footer mobile compact : aucune transformation en longue colonne */
 .footer{margin-top:24px;padding:16px 12px 14px;border-radius:24px}
 .footer-top{grid-template-columns:1.18fr repeat(4,.72fr);gap:7px;min-height:82px;align-items:center}
 .footer-brand{min-height:76px;gap:8px;align-items:center}.footer-brand img{width:48px;height:48px}
 .footer-brand span{min-width:0}.footer-brand b{font-size:11px;line-height:1.05;white-space:normal}.footer-brand b i{display:block;margin-top:2px}.footer-brand small{font-size:8px;line-height:1.1;margin-top:5px;white-space:nowrap}
 .footer-nav{min-height:76px}.footer-nav img{height:70px;max-width:100%;width:100%;object-fit:contain}
 .footer-rule{margin:10px 0}
 .footer-bottom{display:grid;grid-template-columns:1.05fr 1fr 1px 1.45fr;column-gap:8px;align-items:center;row-gap:0}
 .footer-left{grid-template-columns:.72fr 1.28fr;gap:6px;align-items:center}.label{max-width:62px;max-height:48px}
 .socials>div{gap:5px;justify-content:center}.socials a{width:25px;height:25px;flex:0 0 25px}.socials a img{width:25px;height:25px}.contact-icon{width:25px;height:25px;font-size:12px}
 .institution.local{grid-template-columns:1.25fr .75fr;gap:5px}.institution.handball{grid-template-columns:repeat(3,1fr);gap:5px}
 .institution a{height:52px}.institution img{max-height:48px}.institution.local a:nth-child(2) img{max-height:52px}.institution-sep{width:1px;height:52px}
 .copyright{margin-top:10px;font-size:9px;white-space:nowrap}
 .drawer{width:min(330px,86vw);padding:64px 18px 22px;gap:3px}.drawer a{font-size:14px;padding:9px 12px}.close{font-size:34px}
}

/* Equipes — illustrations officielles validées */
.teams-module{padding-top:28px;padding-bottom:34px}
.teams-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.team-card{margin:0;background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 8px 24px rgba(0,0,0,.12);min-width:0}
.team-art{height:260px;display:flex;align-items:center;justify-content:center;padding:10px;background:linear-gradient(180deg,#f8fbf9,#eef6f0)}
.team-art img{display:block;width:100%;height:100%;object-fit:contain}
.team-card h2{margin:0;padding:15px 16px 17px;text-align:center;background:#06251e;color:#fff;font-size:22px;line-height:1.1}
@media(max-width:900px){.teams-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.team-art{height:220px}}
@media(max-width:560px){.teams-module{padding-top:16px}.teams-grid{grid-template-columns:1fr;gap:14px}.team-art{height:230px}.team-card h2{font-size:20px}}

/* Pages dédiées équipes / arbitres — Production V1 */
.team-card-link{display:block;color:inherit;text-decoration:none;border-radius:18px}.team-card-link:focus-visible{outline:3px solid var(--flash);outline-offset:4px}.team-card-link .team-card{height:100%;transition:transform .16s ease,box-shadow .16s ease}.team-card-link:hover .team-card{transform:translateY(-3px);box-shadow:0 12px 30px rgba(0,0,0,.18)}

.detail-back{padding-top:24px;padding-bottom:0}.detail-back a{display:inline-block;background:#06251e;color:#fff;text-decoration:none;font-weight:850;border-radius:999px;padding:11px 17px}.detail-back a:hover{background:#0d4a2d}
.detail-grid{display:grid;grid-template-columns:1fr;gap:22px;padding:24px 0 34px}.detail-card{background:#fff;border-radius:20px;padding:22px;box-shadow:0 8px 24px rgba(0,0,0,.10);min-height:170px}.detail-card h2{margin:0 0 14px;color:#06251e;font-size:26px}.detail-wide{grid-column:1/-1}.empty-state{border:2px dashed #b8c8be;border-radius:14px;padding:18px;color:#52645a;background:#f7faf8;font-weight:650;line-height:1.45}
@media(max-width:900px){.detail-grid{grid-template-columns:1fr}}
@media(max-width:560px){.team-detail-hero .hero-copy{left:28%;width:34%;max-width:34%}.team-detail-hero .hero-copy h1{font-size:clamp(18px,5.5vw,27px)}.detail-grid{gap:14px;padding-top:16px}.detail-card{padding:17px;min-height:145px}.detail-card h2{font-size:22px}}

/* Accueil : 12 équipes + Arbitres dans le bloc Nos équipes */
.home-teams-block{height:auto!important;min-height:0!important;padding:22px;background:#fff}
.home-teams-block .teams-grid{width:100%}
.home-teams-block .team-art{height:190px}
.home-teams-block .team-card h2{font-size:18px;padding:12px}
.home-shop-block{height:auto!important;min-height:0!important;padding:22px;background:#fff}
.shop-home-card{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:130px}
.shop-home-card h3{margin:0 0 8px;color:#06251e;font-size:24px}.shop-home-card p{margin:0;color:#52645a;font-weight:650}
.shop-home-button{display:inline-flex;align-items:center;justify-content:center;padding:14px 20px;border-radius:999px;background:#06251e;color:#fff;text-decoration:none;font-weight:900;white-space:nowrap}
.shop-frame-wrap{background:#fff}.shop-frame{display:block;width:100%;height:1100px;border:0;background:#fff}.shop-frame-note{padding:12px 16px;font-size:13px;color:#52645a;background:#f3f7f4}
@media(max-width:900px){.home-teams-block .team-art{height:170px}.shop-frame{height:900px}}
@media(max-width:560px){.home-teams-block{padding:12px}.home-teams-block .team-art{height:190px}.shop-home-card{flex-direction:column;align-items:flex-start;gap:14px}.shop-home-button{width:100%}.shop-frame{height:760px}}

/* Masque officiel 2026-10-01 : 4 accès footer */
.footer-top{grid-template-columns:1.35fr repeat(4,1fr);gap:24px}
@media(max-width:700px){.footer-top{grid-template-columns:1.18fr repeat(4,.72fr);gap:5px}.footer-nav img{height:62px}}

/* Page publique Arbitres du club */
.referees-public{grid-column:1/-1}.referee-lead,.referee-list{margin-top:22px}.referees-public h3{margin:0 0 14px;font-size:22px}.referee-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.referee-card{display:flex;align-items:center;gap:16px;border:2px solid var(--flash);border-radius:18px;padding:12px;background:#fff}.referee-card-lead{max-width:760px}.referee-photo{width:104px;height:104px;border-radius:14px;overflow:hidden;background:#061b11;flex:0 0 104px}.referee-photo img{width:100%;height:100%;object-fit:contain}.referee-card h4{margin:0 0 7px;font-size:18px}.referee-card p{margin:0;color:#19864f;font-weight:700}@media(max-width:900px){.referee-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.referee-grid{grid-template-columns:1fr}.referee-card{gap:10px}.referee-photo{width:82px;height:82px;flex-basis:82px}}

/* Consolidation 2026-10-01 */
.coaches-public{grid-column:1/-1}.profile-note{margin:0 0 22px}.coach-defaults{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.coach-placeholder{display:flex;gap:18px;align-items:center;border:2px solid var(--flash);border-radius:18px;padding:14px}.coach-photo{width:150px;height:150px;flex:0 0 150px;border-radius:16px;overflow:hidden;background:#061b11}.coach-photo img{width:100%;height:100%;object-fit:contain}.coach-placeholder h3,.coach-placeholder p{margin:0}.coach-placeholder p{margin-top:7px}.engagement-page{margin-top:24px}.cbhb-form{display:grid;gap:18px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.cbhb-form label{display:grid;gap:7px;font-weight:800}.cbhb-form input,.cbhb-form select,.cbhb-form textarea{width:100%;box-sizing:border-box;border:1px solid #9fb8aa;border-radius:10px;padding:12px;font:inherit;background:#fff}.cbhb-form button{justify-self:start;border:0;border-radius:12px;padding:13px 18px;background:#003a29;color:#fff;font-weight:900}.form-status{font-weight:800;color:#19864f}@media(min-width:701px){.footer-top{grid-template-columns:1.35fr repeat(4,1fr)}}
@media(max-width:700px){.coach-defaults,.form-grid{grid-template-columns:1fr}.coach-placeholder{align-items:flex-start}.coach-photo{width:110px;height:110px;flex-basis:110px}}

.page-intro{font-size:1.08rem;line-height:1.55;margin:0 0 22px}.experience-fields{display:contents}.experience-fields[hidden]{display:none}.info-panel{border:1px solid rgba(100,255,0,.45);border-radius:18px;padding:20px;margin:0 0 24px;background:rgba(0,45,30,.2)}.info-panel h2{margin-top:0}.benefit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.benefit-grid>div{padding:16px;border-radius:14px;background:rgba(255,255,255,.06)}.routing-note{font-size:.9rem;opacity:.8;margin-top:18px}.referee-join{margin-top:28px}@media(max-width:760px){.benefit-grid{grid-template-columns:1fr}.experience-fields{display:contents}.experience-fields[hidden]{display:none}}

/* Production candidate 2026-10-01 */
.news-carousel-block{height:auto!important;padding:18px!important}.news-carousel{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 2px 12px}.news-card{flex:0 0 min(360px,78vw);scroll-snap-align:start;background:#06251e;border-radius:16px;overflow:hidden;color:#fff;text-decoration:none}.news-card img{width:100%;height:190px;object-fit:cover;object-position:top}.news-card div{padding:14px}.news-card h3{margin:0 0 5px;font-size:18px}.news-card span{font-size:13px;color:#72ff00;font-weight:800}.news-issue-section{padding:28px 0}.news-pages-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.news-pages-grid img{width:100%;height:auto;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.18)}.team-coaches,.team-roster{min-height:0}.role-defaults{display:none}.history-content{height:auto!important;padding:26px!important}.history-season{padding:4px 0 22px;border-bottom:1px solid #dce7df}.history-season:last-child{border-bottom:0}.history-season h2{margin:0 0 10px;color:#06251e}.history-season p{margin:0 0 10px;line-height:1.6;color:#263a30}@media(max-width:700px){.news-pages-grid{grid-template-columns:1fr}.news-card img{height:150px}.history-content{padding:18px!important}}

/* Production corrections 2026-10-01 */


.news-carousel-block{padding:18px 58px!important;position:relative;overflow:hidden}.news-carousel-shell{position:relative;max-width:980px;margin:auto}.news-carousel{display:block!important;overflow:hidden!important;padding:0!important}.news-card{display:none;grid-template-columns:minmax(260px,1.25fr) minmax(220px,.75fr);align-items:center;min-height:310px;background:#06251e;border-radius:18px;color:#fff;text-decoration:none;overflow:hidden}.news-card.active{display:grid}.news-card img{width:100%;height:310px;object-fit:cover;object-position:top}.news-card div{padding:28px}.news-card h3{font-size:28px}.news-card span{font-size:16px}.carousel-arrow{position:absolute;z-index:3;top:50%;transform:translateY(-50%);width:46px;height:46px;border:0;border-radius:50%;background:#06251e;color:#fff;font-size:34px;cursor:pointer}.carousel-arrow.prev{left:-52px}.carousel-arrow.next{right:-52px}.carousel-dots{display:flex;justify-content:center;gap:8px;margin-top:12px}.carousel-dots button{width:10px;height:10px;border:0;border-radius:50%;padding:0;background:#a7b4ac}.carousel-dots button.active{background:#72ff00}
.location-card{background:#fff;border-radius:24px;padding:24px;display:grid;grid-template-columns:minmax(220px,.32fr) minmax(0,.68fr);gap:24px}.location-copy h2{margin-top:0;color:#06251e}.location-copy p{font-size:18px;line-height:1.6}.map-embed{min-height:430px;border-radius:18px;overflow:hidden}.map-embed iframe{width:100%;height:100%;min-height:430px;border:0;display:block}.team-live:empty{display:none}.team-live .detail-card[hidden]{display:none!important}.profile-list{display:flex;flex-direction:column;gap:14px}.profile-card{display:grid;grid-template-columns:110px 1fr;gap:18px;align-items:center}.profile-card img{width:110px;height:110px;object-fit:contain;border-radius:14px}
@media(max-width:700px){.news-carousel-block{padding:14px 42px!important}.news-card.active{display:block}.news-card img{height:250px}.news-card div{padding:16px}.news-card h3{font-size:20px}.carousel-arrow.prev{left:-38px}.carousel-arrow.next{right:-38px}.location-card{grid-template-columns:1fr;padding:16px}.map-embed,.map-embed iframe{min-height:360px}}

/* 2026-10-01 — dernières corrections validées */
.cbhb-history-team,.cbhb-history-competition{color:#17382a}
.club-standing-compact>h3{color:#17382a}
.cbhb-history-team>h3{font-size:20px;margin:24px 0 10px;color:var(--cbhb-dark,#17382a)}
.cbhb-history-competition>h4{font-size:17px;margin:18px 0 10px;color:#17382a}
.cbhb-history-team+.cbhb-history-team{border-top:1px solid #d7e2dc;margin-top:24px;padding-top:8px}
.location-module{padding:0}
.location-module .location-card{display:block;padding:18px}
.location-module .location-copy{display:none}
.location-module .map-embed,.location-module .map-embed iframe{min-height:560px;width:100%}
.contact-page{margin-top:24px}
@media(max-width:700px){.location-module .location-card{padding:10px}.location-module .map-embed,.location-module .map-embed iframe{min-height:430px}.contact-page{margin-top:16px}}

/* V2 production final — shared layout for all themes */
.news-carousel-block{padding:16px!important}
.news-carousel-shell{width:100%!important;max-width:none!important;margin:0!important}
.news-card{min-height:420px!important;grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr)!important}
.news-card img{height:420px!important}
.carousel-arrow.prev{left:14px!important}.carousel-arrow.next{right:14px!important}
.carousel-arrow{box-shadow:0 3px 12px rgba(0,0,0,.28)}
.team-live [data-section]{display:block!important}
.team-live [data-section][hidden]{display:none!important}
.team-live .profile-list:empty::after,.team-live [data-training]:empty::after,.team-live [data-matches]:empty::after,.team-live [data-results]:empty::after,.team-live [data-photos]:empty::after,.team-live [data-info]:empty::after{content:"";display:block;min-height:28px}
.team-live .team-coaches,.team-live .team-roster{min-height:120px}
/* Themes change globally without changing page structure. Specific seasonal logos can replace assets later. */
:root{--cbhb-accent:#72ff00;--cbhb-bg1:#0f5137;--cbhb-bg2:#3a9258;--cbhb-dark:#083b29}
html[data-theme="normal"]{--cbhb-accent:#72ff00;--cbhb-bg1:#0f5137;--cbhb-bg2:#3a9258;--cbhb-dark:#083b29}
html[data-theme="octobre-rose"]{--flash:#ff4fa3;--cbhb-accent:#ff4fa3;--cbhb-accent-strong:#d41473;--cbhb-accent-soft-bg:#fff0f7;--cbhb-accent-soft-border:#f6a9cb;--cbhb-button-dark:#3b0a23;--cbhb-button-soft:#ffe6f2;--cbhb-bg1:#4a102d;--cbhb-bg2:#a92f6b;--cbhb-dark:#2a0017}
html[data-theme="movember"]{--flash:#4dc7ff;--cbhb-accent:#4dc7ff;--cbhb-accent-strong:#138ecf;--cbhb-accent-soft-bg:#eef8ff;--cbhb-accent-soft-border:#add8ef;--cbhb-button-dark:#0c2b38;--cbhb-button-soft:#e4f5ff;--cbhb-bg1:#112736;--cbhb-bg2:#255d74;--cbhb-dark:#071923}
html[data-theme="noel"]{--cbhb-accent:#f4d35e;--cbhb-bg1:#3b1010;--cbhb-bg2:#8b2424;--cbhb-dark:#210707}
html[data-theme="hiver"]{--cbhb-accent:#8ed8ff;--cbhb-bg1:#092d4a;--cbhb-bg2:#17699a;--cbhb-dark:#061d31}
html[data-theme="nouvel-an"]{--flash:#f4cc62;--cbhb-accent:#f4cc62;--cbhb-accent-strong:#d6a82d;--cbhb-accent-soft-bg:#fff8df;--cbhb-accent-soft-border:#e8d18c;--cbhb-button-dark:#14120b;--cbhb-bg1:#080a08;--cbhb-bg2:#183f2c;--cbhb-dark:#050706}
html[data-theme="saint-valentin"]{--cbhb-accent:#ff4f82;--cbhb-bg1:#4a1024;--cbhb-bg2:#c63d69;--cbhb-dark:#270812}
html[data-theme="printemps"]{--cbhb-accent:#ff79a8;--cbhb-bg1:#0d5b45;--cbhb-bg2:#4da85d;--cbhb-dark:#073629}
html[data-theme="paques"]{--cbhb-accent:#f3b4d4;--cbhb-bg1:#296e8b;--cbhb-bg2:#72b85a;--cbhb-dark:#174458}
html[data-theme="ete"]{--cbhb-accent:#ffd34f;--cbhb-bg1:#08739a;--cbhb-bg2:#12a978;--cbhb-dark:#064b64}
html[data-theme="14-juillet"]{--cbhb-accent:#ef3340;--cbhb-bg1:#102a68;--cbhb-bg2:#315db1;--cbhb-dark:#07173b}
html[data-theme="automne"]{--cbhb-accent:#ff8a24;--cbhb-bg1:#5a2510;--cbhb-bg2:#b85d1d;--cbhb-dark:#321307}
html[data-theme="halloween"]{--cbhb-accent:#ff7900;--cbhb-bg1:#241006;--cbhb-bg2:#8d3a09;--cbhb-dark:#110803}
html[data-theme] body{background:linear-gradient(115deg,var(--cbhb-bg1),var(--cbhb-bg2))!important}
html[data-theme] .hero,html[data-theme] .module-title,html[data-theme] .footer{background:linear-gradient(100deg,var(--cbhb-dark),var(--cbhb-bg2))!important}
html[data-theme] .hero{border-bottom-color:var(--cbhb-accent)!important}
html[data-theme] .hero-copy em,html[data-theme] .module-title em,html[data-theme] .footer-brand i,html[data-theme] .news-card span{color:var(--cbhb-accent)!important}
html[data-theme] .carousel-dots button.active{background:var(--cbhb-accent)!important}
@media(max-width:700px){.news-carousel-block{padding:10px!important}.news-card{min-height:0!important}.news-card img{height:310px!important}.carousel-arrow.prev{left:8px!important}.carousel-arrow.next{right:8px!important}}
.auth-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}.auth-status{max-width:900px;margin:18px auto;padding:12px 16px;font-weight:800}.auth-status.ok{color:#16833d}.profile-card{margin-top:24px}.profile-card .info-panel{margin-top:22px}.profile-card button,.auth-grid button{cursor:pointer}@media(max-width:760px){.auth-grid{grid-template-columns:1fr}}
/* Module membre reconstruit — lisibilité indépendante du thème */
.member-onboarding{max-width:1040px;margin:28px auto 48px;padding:0 18px;color:#102218}
.registration-card,.first-manager-card,.manager-card{box-sizing:border-box;width:100%;background:#fff;color:#102218;border-radius:22px;padding:28px;box-shadow:0 10px 30px rgba(0,0,0,.13);margin:0 0 24px}
.registration-section+ .registration-section{margin-top:30px;padding-top:26px;border-top:1px solid #dbe5de}
.registration-card h2,.first-manager-card h2,.manager-card h2{color:#06251e;margin:0 0 16px}
.registration-help{color:#52645a;line-height:1.5;margin:0 0 16px}
.registration-card label,.manager-card label{color:#102218!important}
.registration-card input,.registration-card select,.registration-card textarea,.manager-card select{color:#102218!important;background:#fff!important;border:1px solid #9fb8aa!important}
.role-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.role-choice{display:flex!important;grid-template-columns:none!important;align-items:center;gap:12px;padding:15px 16px;border:1px solid #c7d6cd;border-radius:13px;background:#f7faf8;color:#102218!important;font-weight:850;cursor:pointer}
.role-choice input{width:20px!important;height:20px;margin:0;flex:0 0 20px;accent-color:#19864f}
.role-choice span{color:#102218!important;opacity:1!important}
.role-exclusive{grid-column:1/-1}
.registration-submit,.first-manager-card button,.manager-card button{border:0;border-radius:12px;padding:14px 19px;background:#06251e;color:#fff!important;font-weight:900;cursor:pointer;margin-top:22px}
.form-feedback{min-height:24px;margin:14px 0 0;font-weight:850;color:#9d2525}.form-feedback.ok{color:#167b3d}
.first-manager-card{border:2px solid var(--cbhb-accent,#72ff00)}.first-manager-card p,.manager-card p{color:#33483c}
@media(max-width:700px){.member-onboarding{padding:0 12px}.registration-card,.first-manager-card,.manager-card{padding:20px}.role-choice-grid,.form-grid{grid-template-columns:1fr}.role-exclusive{grid-column:auto}}
/* Espaces métiers liés aux fonctions validées */
.role-workspaces{display:grid;gap:20px;margin-top:20px}.role-workspace{background:#fff;color:#111;border-radius:22px;padding:24px;box-shadow:0 10px 30px rgba(0,0,0,.08)}.role-workspace-head{border-bottom:1px solid #ddd;margin-bottom:20px;padding-bottom:14px}.role-workspace h2,.role-workspace h3,.role-workspace p,.role-workspace label{color:#111!important}.role-dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:18px 0}.role-workspace section{background:#f6f7f7;border:1px solid #e3e5e5;border-radius:16px;padding:18px}.role-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.role-stat,.role-data-item,.role-empty{background:#fff;border:1px solid #ddd;border-radius:12px;padding:12px;color:#111}.role-stat strong{display:block;font-size:1.35rem}.role-data-list{display:grid;gap:10px}.role-data-item small{display:block;color:#666;margin-top:4px}.role-data-item strong{color:#111}.role-empty{color:#555;font-style:italic}.role-workspace input,.role-workspace select,.role-workspace textarea{color:#111!important;background:#fff!important}@media(max-width:760px){.role-dashboard-grid{grid-template-columns:1fr}.role-workspace{padding:16px}.role-summary{grid-template-columns:1fr 1fr}}
.manager-role-admin{margin-bottom:24px}.manager-role-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 14px;padding-top:12px}.manager-role-grid label{display:flex;align-items:center;gap:7px;color:#111!important}.manager-role-grid input{width:auto!important}.role-data-item summary{cursor:pointer}@media(max-width:760px){.manager-role-grid{grid-template-columns:1fr}}
/* Fiche membre V2 — interface claire, le thème n'intervient plus dans l'inscription */
.member-card-modern{padding:0!important;overflow:hidden;max-width:980px;margin-inline:auto!important}.member-card-head{padding:30px 34px 26px;background:#06251e;color:#fff}.member-card-head h2{margin:4px 0 6px!important;color:#fff!important;font-size:34px}.member-card-head p{margin:0;color:#dbe8e1;line-height:1.5}.member-kicker{display:block;font-size:12px;font-weight:950;letter-spacing:.12em;color:var(--cbhb-accent,#72ff00)}.member-card-modern .registration-section{margin:0!important;padding:28px 34px!important;border-top:1px solid #e1e9e4!important}.member-card-modern .registration-section h3{font-size:22px;margin:0 0 18px;color:#06251e}.member-fields{gap:18px!important}.member-fields label{display:grid!important;gap:8px!important;font-weight:850}.member-fields input{box-sizing:border-box;width:100%!important;min-height:48px!important;padding:10px 13px!important;border-radius:10px!important;font-size:16px!important}.member-card-modern .role-choice{min-height:58px;box-sizing:border-box;transition:.16s ease;border:2px solid #dce6e0}.member-card-modern .role-choice:has(input:checked){background:#e9f9ef;border-color:#16864f;box-shadow:inset 0 0 0 1px #16864f}.member-card-modern .role-choice:has(input:checked) span{color:#075a34!important}.member-card-modern .registration-submit{display:block;width:calc(100% - 68px);margin:0 34px 30px!important;min-height:52px;font-size:16px}.member-card-modern .form-feedback{margin:0 34px 24px}.member-dashboard{display:grid;gap:22px}.dashboard-welcome{display:flex;justify-content:space-between;gap:20px;align-items:center;background:#06251e;color:#fff;border-radius:22px;padding:26px 30px;box-shadow:0 10px 30px rgba(0,0,0,.13)}.dashboard-welcome h2{font-size:30px;margin:4px 0;color:#fff}.dashboard-welcome p{margin:0;color:#d8e7df}.secondary-action{border:1px solid rgba(255,255,255,.45);background:#fff;color:#06251e;border-radius:11px;padding:12px 16px;font-weight:900;cursor:pointer}.role-workspaces{margin-top:0!important}.role-workspace{padding:0!important;overflow:hidden}.role-workspace-head{background:#06251e;padding:24px 28px!important;margin:0!important;border:0!important}.role-workspace-head h2{color:#fff!important;margin:4px 0 5px!important}.role-workspace-head p{color:#d8e7df!important;margin:0}.role-workspace>section,.role-workspace>.role-dashboard-grid{margin:20px!important}.theme-tool{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:14px;align-items:end}.theme-tool button{margin:0!important;min-height:48px}.theme-tool select{min-height:48px}.first-manager-card{max-width:980px;margin-inline:auto!important;padding:28px 32px!important}.first-manager-card button{min-height:50px}
@media(max-width:700px){.member-card-head,.member-card-modern .registration-section{padding:22px 18px!important}.member-card-head h2{font-size:28px}.member-card-modern .registration-submit{width:calc(100% - 36px);margin:0 18px 22px!important}.member-card-modern .form-feedback{margin:0 18px 20px}.dashboard-welcome{display:grid;padding:22px 18px}.secondary-action{width:100%}.role-workspace>section,.role-workspace>.role-dashboard-grid{margin:14px!important}.theme-tool{grid-template-columns:1fr}.theme-tool button{width:100%}}

/* Organigramme public du Bureau — fonctions validées Supabase */
.bureau-public{min-height:0!important;height:auto!important;padding:30px 34px!important}
.bureau-org{display:grid;gap:12px;max-width:1000px;margin:auto}
.bureau-line{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:18px;align-items:start;padding:14px 16px;border:1px solid rgba(0,58,43,.12);border-radius:14px;background:#f7faf8;color:#062d23}
.bureau-line strong{font-weight:900}.bureau-line span{line-height:1.5}.bureau-loading{margin:0;color:#415b54}
@media(max-width:700px){.bureau-public{padding:20px!important}.bureau-line{grid-template-columns:1fr;gap:4px}}
/* Tableau de bord Responsable du site — largeur du masque et navigation métier */
.member-onboarding{max-width:none!important;width:100%!important;padding:0!important}.member-card-modern,.first-manager-card,.member-dashboard{max-width:none!important;width:100%!important}.member-dashboard{box-sizing:border-box}.role-workspaces{width:100%}.admin-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:18px 20px;background:#eef4f0;border-bottom:1px solid #dce7e0}.admin-nav-btn{border:1px solid #c9d9cf;border-radius:11px;background:#fff;color:#073126;padding:13px 10px;font-weight:900;cursor:pointer}.admin-nav-btn.active{background:#073126;color:#fff;border-color:#073126}.admin-panel{margin:20px!important}.admin-member-row,.request-row{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#fff;border:1px solid #dce3df;border-radius:13px;padding:14px 16px}.admin-member-row small,.request-row small{display:block;color:#617069;margin-top:4px}.mini-action,.approve-action,.reject-action{border:0;border-radius:9px;padding:9px 13px;font-weight:900;cursor:pointer}.mini-action,.approve-action{background:#073126;color:#fff}.reject-action{background:#ecefee;color:#5c1717}.request-actions{display:flex;gap:8px}.transfer-form{max-width:760px}.transfer-confirm{display:flex!important;align-items:flex-start;gap:10px;margin-top:14px}.transfer-confirm input{width:20px!important;height:20px!important;flex:0 0 20px}.danger-action{background:#7d1c1c!important;color:#fff!important}.communication-workspace{order:20}
@media(min-width:1000px){.member-card-modern .role-choice-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.member-fields{grid-template-columns:repeat(4,minmax(0,1fr))!important}}
@media(max-width:900px){.admin-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.member-onboarding{padding:0!important}}
@media(max-width:560px){.admin-nav{grid-template-columns:1fr}.admin-member-row,.request-row{align-items:flex-start;flex-direction:column}.request-actions{width:100%}.request-actions button{flex:1}.admin-panel{margin:12px!important}}

/* Ma fiche V2 — sélecteur de rôles */
.account-panel{display:flex;justify-content:space-between;align-items:center;gap:24px;background:#06251e;color:#fff;border-radius:22px;padding:24px 28px}.account-panel h2{color:#fff;margin:4px 0}.account-panel p{color:#d8e7df;margin:0}.account-actions{display:flex;gap:10px}.role-selector-shell{background:#06251e;border-radius:22px;padding:24px 28px}.role-selector-title h2{color:#fff;margin:4px 0}.role-selector-title p{color:#d8e7df;margin:0 0 20px}.role-selector{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.role-selector-card{position:relative;min-height:180px;border:2px solid rgba(255,255,255,.16);border-radius:18px;overflow:hidden;background:#0b3a2e;color:#fff;cursor:pointer;padding:0;text-align:left}.role-selector-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.34}.role-selector-card:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 25%,rgba(3,27,21,.9) 100%)}.role-selector-card span,.role-selector-card small{position:absolute;z-index:2;left:18px;right:18px}.role-selector-card span{bottom:20px;font-size:20px;font-weight:950}.role-selector-card small{bottom:6px;color:#dce8e2}.role-selector-card.active{border-color:var(--cbhb-accent,#72ff00);box-shadow:0 0 0 2px rgba(114,255,0,.2)}.role-selector-card:disabled{cursor:default;opacity:.75}.role-workspaces{scroll-margin-top:20px}.role-head-illustrated{display:flex;justify-content:space-between;align-items:center;min-height:145px}.role-head-illustrated>img{height:125px;max-width:230px;object-fit:contain}.parent-visual{display:flex;align-items:flex-end}.parent-visual img{height:120px;width:105px;object-fit:contain;margin-left:-18px}.admin-nav{grid-template-columns:repeat(6,minmax(0,1fr))}.member-dashboard>.role-selector-shell{margin-bottom:0}
@media(max-width:980px){.role-selector{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-nav{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.account-panel,.account-actions{display:grid}.account-actions{width:100%}.role-selector-shell{padding:20px 16px}.role-selector{grid-template-columns:1fr}.role-selector-card{min-height:150px}.role-head-illustrated{display:block}.role-head-illustrated>img,.parent-visual{margin-top:14px}.admin-nav{grid-template-columns:1fr 1fr}}
/* Espace membre V39 — bandeau dynamique + sélecteur compact */
.member-role-hero .hero-copy{width:42%;max-width:42%}
.member-role-hero .hero-copy p{color:#fff;margin-top:12px}
.member-role-visual{left:48%!important;right:10%!important;top:0!important;height:100%!important}
.member-role-visual img{object-fit:contain!important;object-position:right center!important}
.compact-role-switcher{display:flex;align-items:center;gap:16px;padding:14px 18px!important;border-radius:16px!important;margin:18px 0!important}
.compact-role-switcher>.member-kicker{flex:0 0 auto;margin:0}
.compact-role-selector{display:flex!important;flex-wrap:wrap;gap:8px!important;flex:1}
.compact-role-btn{min-height:0!important;width:auto!important;border:1px solid rgba(255,255,255,.28)!important;border-radius:999px!important;background:#0b3a2e!important;padding:9px 15px!important;box-shadow:none!important}
.compact-role-btn:after,.compact-role-btn img{display:none!important}
.compact-role-btn span{position:static!important;font-size:14px!important;line-height:1.1;font-weight:900!important}
.compact-role-btn.active{background:var(--cbhb-accent,#72ff00)!important;color:#05291e!important;border-color:var(--cbhb-accent,#72ff00)!important}
#account-panel{margin:18px 0}
.role-workspace{margin-top:0}
#player-workspace,#parent-workspace,#site-manager-box,#generic-workspace,#treasurer-workspace,#secretary-workspace,#communication-workspace{scroll-margin-top:12px}
.role-empty small,#player-team small{display:block;margin-top:5px;color:#65726c;font-style:normal}
.member-fields{grid-template-columns:repeat(5,minmax(0,1fr))!important}
@media(max-width:1100px){.member-fields{grid-template-columns:repeat(2,minmax(0,1fr))!important}.member-role-visual{left:52%!important}}
@media(max-width:650px){.compact-role-switcher{display:block}.compact-role-switcher>.member-kicker{display:block;margin-bottom:10px}.compact-role-selector{display:flex!important}.compact-role-btn{padding:8px 11px!important}.member-fields{grid-template-columns:1fr!important}.member-role-visual{left:52%!important;right:9%!important;top:35px!important;height:175px!important}.member-role-hero .hero-copy{width:40%;max-width:40%}}

/* ===== ESPACE MEMBRE — reconstruction propre 2026-10-01 ===== */
.member-hero-actions{position:absolute!important;right:34px!important;top:34px!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:10px!important;z-index:8}
.member-hero-actions[hidden]{display:none!important}
.member-hero-actions .login,.member-hero-actions a.login{display:flex!important;align-items:center!important;justify-content:center!important;width:132px!important;min-width:132px!important;height:42px!important;padding:0 16px!important;white-space:nowrap!important;line-height:1!important;border-radius:999px!important;text-decoration:none!important}
button.login{white-space:nowrap!important;min-width:max-content}
.member-role-hero .hero-copy h1 span,.member-role-hero .hero-copy h1 em{display:block}
.member-role-hero .hero-copy h1 em{color:#72ff00!important;font-style:italic!important}
.member-fields{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:14px!important}
.member-fields label{min-width:0!important}
.member-fields input,.member-fields select{width:100%!important;height:48px!important;box-sizing:border-box!important;margin:0!important;padding:0 14px!important;border:1px solid #c7d7cf!important;border-radius:10px!important;background:#fff!important;color:#071d16!important;font:inherit!important}
.account-panel[hidden]{display:none!important}
.account-panel{position:fixed!important;inset:0!important;z-index:10000!important;background:rgba(0,25,18,.72)!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:24px!important}
.account-dialog{width:min(620px,100%)!important;background:#fff!important;color:#071d16!important;border-radius:18px!important;padding:28px!important;box-shadow:0 24px 80px rgba(0,0,0,.35)!important}
.account-dialog h2,.account-dialog p{color:#071d16!important}
.account-actions{display:flex!important;flex-wrap:wrap!important;gap:10px!important;margin-top:20px!important}
.compact-role-switcher{margin-top:20px!important}
.manager-tool-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:10px!important}
.manager-tool-grid button{min-height:52px!important}
@media(max-width:900px){.member-fields{grid-template-columns:repeat(2,minmax(0,1fr))!important}.manager-tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.member-hero-actions{right:18px!important;top:18px!important}}
@media(max-width:560px){.member-fields{grid-template-columns:1fr!important}.manager-tool-grid{grid-template-columns:1fr!important}.member-hero-actions .login,.member-hero-actions a.login{width:108px!important;min-width:108px!important;height:38px!important;font-size:12px!important}.member-hero-actions{right:12px!important;top:12px!important;gap:7px!important}}
/* Bouton compte public : toujours horizontal et compact */
.hero button.login{width:auto!important;min-width:132px!important;height:42px!important;padding:0 18px!important;white-space:nowrap!important;line-height:1!important}
.member-hero-actions .member-action{display:flex!important;align-items:center!important;justify-content:center!important;width:132px!important;min-width:132px!important;height:42px!important;padding:0 16px!important;white-space:nowrap!important;line-height:1!important;border:0!important;border-radius:999px!important;background:#002d22!important;color:#fff!important;font-weight:900!important;text-decoration:none!important;cursor:pointer!important;box-sizing:border-box!important}
@media(max-width:560px){.member-hero-actions .member-action{width:108px!important;min-width:108px!important;height:38px!important;font-size:12px!important}}

/* Données sportives réelles FFHB */
.live-public-block{padding:18px!important;min-height:120px!important}
.live-match-list{display:grid;gap:10px;width:100%}
.live-match-card{display:grid;grid-template-columns:150px 1fr;gap:16px;align-items:center;padding:14px 16px;border:1px solid #d9e3de;border-radius:14px;background:#f7faf8;color:#071d16}
.live-match-date{display:flex;flex-direction:column;gap:3px}.live-match-date strong{text-transform:capitalize}.live-match-date span{font-weight:800;color:#147d4b}
.live-match-main{display:flex;flex-direction:column;gap:4px}.live-match-main strong{font-size:16px}.live-match-main small{color:#52635d}.live-team{font-size:12px;font-weight:900;text-transform:uppercase;color:#15864f}
.live-doc{display:inline-block;margin-top:5px;font-weight:900;color:#064b34;text-decoration:underline}.live-empty{padding:18px;border-radius:12px;background:#f7faf8;color:#52635d;font-style:italic}
@media(max-width:700px){.live-match-card{grid-template-columns:1fr;gap:6px}.live-public-block{padding:10px!important}}

/* Corrections finales 01/10/2026 */
.news-carousel-block{height:auto!important;min-height:390px;padding:16px!important}
.news-carousel-shell{width:100%!important;max-width:none!important;height:100%;margin:0!important;padding:0 54px;box-sizing:border-box}
.news-carousel{height:100%}
.news-card{width:100%!important;min-height:350px!important;grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr)!important}
.news-card img{height:350px!important;object-fit:cover!important;object-position:top center!important}
.carousel-arrow.prev{left:4px!important}.carousel-arrow.next{right:4px!important}
.events-public-page,.live-events-block{height:auto!important;min-height:180px;padding:22px!important;box-sizing:border-box}
.events-public-list{display:grid;gap:14px;width:100%}
.event-public-card{display:grid;grid-template-columns:minmax(170px,230px) 1fr;gap:20px;padding:18px 20px;border:1px solid #dce7df;border-radius:15px;background:#f8fbf9;color:#102218}
.event-public-date{font-weight:950;text-transform:capitalize;color:#075a34}.event-public-date small{display:block;margin-top:5px;color:#51665d}.event-public-card h3{margin:0 0 7px;color:#06251e;font-size:21px}.event-public-card p{margin:4px 0;line-height:1.5}.event-place{font-weight:800}
@media(max-width:700px){.news-carousel-shell{padding:0!important}.news-card.active{display:block!important}.news-card img{height:auto!important;max-height:none!important;aspect-ratio:auto!important;object-fit:contain!important;background:#f6f2ec}.event-public-card{grid-template-columns:1fr;gap:8px}.events-public-page,.live-events-block{padding:14px!important}}
.profile-list{display:grid;gap:14px}.public-profile-card{display:grid;grid-template-columns:150px 1fr;gap:20px;align-items:center;padding:16px;border:1px solid #dce7df;border-radius:16px;background:#fff}.public-profile-card img{width:150px;height:150px;object-fit:contain;border-radius:13px;background:#f3f7f4}.public-profile-card h3{margin:0 0 4px;color:#06251e}.public-profile-card strong{color:#16864f}.public-profile-card p{margin:8px 0 0;line-height:1.5}@media(max-width:600px){.public-profile-card{grid-template-columns:92px 1fr}.public-profile-card img{width:92px;height:110px}}
.location-card-map-only{display:block!important;padding:18px!important}.location-card-map-only .map-embed,.location-card-map-only .map-embed iframe{width:100%!important;min-height:520px!important;height:520px!important}
@media(max-width:700px){.location-card-map-only{padding:10px!important}.location-card-map-only .map-embed,.location-card-map-only .map-embed iframe{min-height:430px!important;height:430px!important}}


/* Consolidation cahier des charges — rôles, entraînements, mobile */
.white-block.live-public-block,.white-block.live-events-block{height:auto!important;min-height:0!important;overflow:visible!important;padding-bottom:18px!important}
.module:has(.live-public-block),.module:has(.live-events-block){height:auto!important;overflow:visible!important}
.training-public-list{display:grid;gap:10px}.training-public-row{display:flex;justify-content:space-between;gap:18px;padding:13px 15px;border:1px solid #dce7df;border-radius:12px;background:#f8fbf9}.training-public-row strong{text-transform:capitalize}.training-public-row span{font-weight:900;color:#147d4b}
.training-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid #dce7df;border-radius:12px;background:#fff;margin-bottom:8px}.training-row small{display:block;color:#5d6d65;margin-top:3px}.attendance-actions{display:flex;gap:7px}.attendance-actions button{border:1px solid #bfd1c7;border-radius:999px;background:#fff;padding:8px 12px;font-weight:900;cursor:pointer}.attendance-actions .present.active{background:#16864f;color:#fff;border-color:#16864f}.attendance-actions .absent.active{background:#b92828;color:#fff;border-color:#b92828}.training-coach-session{border:1px solid #dce7df;border-radius:12px;background:#fff;margin-bottom:9px;padding:12px}.training-coach-session summary{cursor:pointer;display:flex;justify-content:space-between;gap:15px}.training-coach-session summary span{color:#5d6d65}.attendance-lists{padding-top:8px}.attendance-lists p{margin:6px 0}
@media(max-width:700px){.white-block.live-public-block,.white-block.live-events-block{height:auto!important;min-height:0!important;margin-bottom:18px!important}.live-match-list{display:flex!important;flex-direction:column!important;gap:12px!important}.live-match-card{position:static!important;width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;box-sizing:border-box!important;margin:0!important;overflow:visible!important}.module-title{position:relative!important;z-index:1!important;margin-top:18px!important}.training-row,.training-coach-session summary,.training-public-row{align-items:flex-start;flex-direction:column}.attendance-actions{width:100%}.attendance-actions button{flex:1}.role-dashboard-grid{grid-template-columns:1fr!important}}
/* Correctif global rôles / compte / médias */
.action-loading{opacity:.7;cursor:wait!important}.approve-action.action-success{background:#16864f!important;color:#fff!important}.reject-action.action-rejected{background:#8b1e1e!important;color:#fff!important}.action-error{background:#b42318!important;color:#fff!important}.request-actions button:active,.coverage-actions button:active,.cbhb-form button:active{transform:translateY(1px) scale(.98)}
.account-editor{width:min(980px,96vw);max-height:92vh;overflow:auto;background:#fff;color:#111;border-radius:20px;padding:24px}.account-editor-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.account-editor h2,.account-editor h3,.account-editor p,.account-editor label{color:#111!important}.account-photo-row{display:flex;align-items:center;gap:20px}.account-photo-row img{width:110px;height:110px;border-radius:50%;object-fit:cover;border:3px solid #dce7e0}.account-security{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:20px}.role-details:empty{display:none}.team-multiselect{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.team-check{display:flex!important;gap:8px;align-items:center;background:#fff;border:1px solid #dce6e0;border-radius:10px;padding:10px}.team-check input{width:auto!important}.common-documents{margin:20px!important}.document-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.document-card{display:grid;gap:6px;text-decoration:none;background:#fff;border:1px solid #dce3df;border-radius:12px;padding:14px;color:#073126}.document-card span{font-size:.9rem;color:#52645c}.coverage-row{display:flex;justify-content:space-between;gap:16px;align-items:center;background:#fff;border:1px solid #dce3df;border-radius:12px;padding:12px}.coverage-row small{display:block;color:#65726c}.coverage-actions{display:flex;gap:7px}.coverage-actions button{border:1px solid #0b5a43;background:#fff;color:#073126;border-radius:9px;padding:8px 10px;font-weight:850}.coverage-actions button.selected{background:#16864f;color:#fff}.media-gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.media-card{margin:0;background:#fff;border:1px solid #ddd;border-radius:12px;overflow:hidden}.media-card img{width:100%;aspect-ratio:1/1;object-fit:cover}.media-card figcaption{padding:10px;display:grid;gap:8px}.media-card button{justify-self:start}
@media(max-width:760px){.account-security,.document-cards,.team-multiselect{grid-template-columns:1fr}.account-photo-row,.coverage-row{align-items:flex-start;flex-direction:column}.coverage-actions{width:100%}.coverage-actions button{flex:1}.media-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Le grand visuel de rôle en haut de page suffit : pas de second bandeau-titre dans les fiches. */
.member-dashboard .role-workspace>.role-workspace-head{display:none!important}
.coach-team-admin{align-items:flex-start}.coach-team-admin>.team-multiselect{flex:1;min-width:min(680px,100%)}
@media(max-width:760px){.coach-team-admin{display:block}.coach-team-admin>.team-multiselect{min-width:0;margin-top:10px;grid-template-columns:1fr 1fr}}

.role-photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px}.role-photo-grid label{display:grid;gap:8px}.role-photo-grid img{width:92px;height:92px;object-fit:cover;border-radius:14px}.bureau-person{display:inline-flex;align-items:center;gap:8px;margin:4px 12px 4px 0}.bureau-person img{width:48px;height:48px;object-fit:cover;border-radius:50%}

/* CBHB — résultats FFHB enrichis : score lisible, logos clubs, victoire/défaite. */
.result-card{grid-template-columns:135px minmax(0,1fr) auto;gap:14px;background:#fff;border:1px solid #dce7e1;box-shadow:0 6px 20px rgba(0,0,0,.055)}
.result-board{display:grid;grid-template-columns:minmax(0,1fr) 26px minmax(0,1fr);align-items:center;gap:8px;min-width:0}
.result-club{display:grid;grid-template-columns:46px minmax(0,1fr) 48px;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;background:#f4f7f5;min-width:0}
.result-club:last-child{grid-template-columns:48px minmax(0,1fr) 46px;text-align:right}
.result-club strong{font-size:14px;line-height:1.15;overflow-wrap:anywhere}.result-club b{font-size:30px;line-height:1;text-align:center;font-variant-numeric:tabular-nums}
.result-club.winner{background:#e9f8ef;border:1px solid #9ddbb6}.result-club.winner b{color:#08783f}.result-club.loser{background:#fff0f0;border:1px solid #efb7b7}.result-club.loser b{color:#b42323}.result-club.draw{background:#f3f5f4;border:1px solid #d5dcda}.result-separator{text-align:center;font-size:22px;font-weight:900;color:#718079}
.match-club-logo{width:42px;height:42px;object-fit:contain;display:block}.match-logo-fallback{border-radius:50%;background:linear-gradient(135deg,#0a8b4e,#0b1d17);opacity:.15}.result-doc{white-space:nowrap;align-self:center}
@media(max-width:850px){.result-card{grid-template-columns:1fr}.result-board{grid-template-columns:1fr;gap:5px}.result-separator{display:none}.result-club,.result-club:last-child{grid-template-columns:42px minmax(0,1fr) 48px;text-align:left}.result-club:last-child b{grid-column:3;grid-row:1}.result-club:last-child strong{grid-column:2;grid-row:1}.result-club:last-child .match-club-logo{grid-column:1;grid-row:1}.result-doc{white-space:normal}.live-match-date{flex-direction:row;justify-content:space-between;gap:10px}}

/* FFHB automatique — résultats compacts et classements */
.result-card{grid-template-columns:135px minmax(0,1fr)}
.result-board{display:grid;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);align-items:center;gap:8px}
.result-club{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;border-radius:12px}.result-club:last-child{grid-template-columns:auto minmax(0,1fr) 48px;text-align:right}.result-club b{font-size:28px;line-height:1}.result-club.winner{background:#e8f7ef}.result-club.winner b{color:#087443}.result-club.loser{background:#fff0f0}.result-club.loser b{color:#a72b2b}.result-club.draw{background:#f1f3f2}.match-club-logo{width:44px;height:44px;object-fit:contain}.match-logo-fallback{display:block}.result-separator{font-size:22px;font-weight:950;text-align:center}.fixture-board{display:grid;grid-template-columns:1fr 20px 1fr;gap:8px;align-items:center}.fixture-board strong:last-child{text-align:right}
.standings-wrap{width:100%;overflow-x:auto}.standings-table{width:100%;border-collapse:collapse;font-size:14px;color:#123b2b}.standings-table th,.standings-table td{padding:10px 9px;border-bottom:1px solid #dce7df;text-align:center;white-space:nowrap}.standings-table th{background:#062d23;color:#fff;font-weight:900}.standings-table th:nth-child(2),.standings-table td:nth-child(2){text-align:left}.standings-table .cbhb-standing td{background:#e5f7ec;font-weight:950;color:#063c2b}.manual-fallback{margin-top:16px;padding:12px 14px;border:1px solid #dce7df;border-radius:12px;background:#f8fbf9}.manual-fallback summary{cursor:pointer;font-weight:900;color:#075a34}
@media(max-width:700px){.result-card{grid-template-columns:1fr}.result-board{grid-template-columns:1fr 16px 1fr}.result-club,.result-club:last-child{display:flex;flex-direction:column;grid-template-columns:none;text-align:center;gap:5px;padding:8px 4px}.result-club:last-child{text-align:center}.result-club b{font-size:30px}.match-club-logo{width:40px;height:40px}.result-club strong{font-size:12px;line-height:1.15}.standings-table{font-size:12px}.standings-table th,.standings-table td{padding:8px 6px}}

/* Règles finales 2026-10-01 : nul bleu, FDME uniquement page équipe, mobile-first membre */
.result-club.draw{background:#eef6ff!important;border:1px solid #a9ccef!important}.result-club.draw b{color:#1769aa!important}.team-fdme-link{margin-top:10px;text-align:center}.team-fdme-link a{display:inline-flex;min-height:42px;align-items:center;justify-content:center;padding:0 14px;border-radius:10px;background:#06251e;color:#fff!important;font-weight:900;text-decoration:none}.role-workspace section>h3{width:100%;box-sizing:border-box;background:#06251e;color:#fff!important;padding:12px 14px;border-radius:11px;margin:-4px 0 14px}.member-stack{display:grid;grid-template-columns:1fr!important;gap:14px}.member-stack section{width:100%;box-sizing:border-box}@media(max-width:700px){.role-workspace{width:100%;box-sizing:border-box}.role-dashboard-grid,.member-stack{display:grid!important;grid-template-columns:1fr!important;width:100%!important}.role-workspace section{width:100%!important;max-width:100%!important;box-sizing:border-box!important}.role-workspace section>h3{width:100%!important}.team-fdme-link a{width:100%;box-sizing:border-box}}

/* V38 — consultation interne des feuilles de match officielles FFHandball */
.fdme-page{padding:20px 0}.fdme-toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:14px}.fdme-back,.fdme-external{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:999px;background:#003c2f;color:#fff;text-decoration:none;font-weight:800}.fdme-viewer{width:100%;height:min(78vh,1050px);border:0;border-radius:18px;background:#fff}.fdme-status{padding:18px;border-radius:14px;background:#f4f7f5;font-style:italic}.fdme-title{margin:0;font-size:clamp(1.15rem,2vw,1.55rem)}
@media(max-width:700px){.fdme-page{padding-top:10px}.fdme-viewer{height:72vh;border-radius:12px}.fdme-toolbar{align-items:stretch}.fdme-back,.fdme-external{flex:1}}

/* V39 — résultats homogènes desktop/mobile */
.result-row-v39{display:grid;grid-template-columns:150px 155px minmax(250px,1fr) minmax(250px,1fr);gap:12px;align-items:stretch;padding:12px;border:1px solid #dce7e1;border-radius:14px;background:#fff;box-sizing:border-box}
.result-meta-v39{display:flex;flex-direction:column;justify-content:center;gap:4px;padding:6px 2px}.result-meta-v39 strong{font-size:14px}.result-meta-v39 span{font-weight:900;color:#087443}
.result-fdme-v39{display:flex;align-items:center;justify-content:center;min-width:0}.result-fdme-v39 .team-fdme-link{margin:0;width:100%}.result-fdme-v39 .team-fdme-link a{width:100%;box-sizing:border-box;text-align:center}
.result-team-v39{display:grid;grid-template-columns:46px minmax(0,1fr) 52px;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;background:#f4f7f5;border:1px solid #dce7e1;min-width:0}.result-team-v39 span{font-size:14px;font-weight:900;line-height:1.15;overflow-wrap:anywhere}.result-team-v39 b{font-size:30px;text-align:center;font-variant-numeric:tabular-nums}.result-team-v39.winner{background:#e9f8ef;border-color:#9ddbb6}.result-team-v39.winner b{color:#08783f}.result-team-v39.loser{background:#fff0f0;border-color:#efb7b7}.result-team-v39.loser b{color:#b42323}.result-team-v39.draw{background:#eef6ff;border-color:#a9ccef}.result-team-v39.draw b{color:#1769aa}.match-logo-shell{width:44px;height:44px;display:grid;place-items:center}.match-logo-shell .match-club-logo{grid-area:1/1}.match-logo-fallback{display:grid;place-items:center;font-weight:950;color:#fff;background:#0a503a!important;opacity:1!important;border-radius:50%;font-size:18px}
@media(max-width:900px){.result-row-v39{grid-template-columns:1fr 1fr}.result-meta-v39{grid-column:1}.result-fdme-v39{grid-column:2}.result-team-v39{grid-column:auto}}
@media(max-width:600px){.result-row-v39{grid-template-columns:1fr 1fr;gap:8px;padding:10px}.result-meta-v39{grid-column:1/-1;flex-direction:row;justify-content:space-between;align-items:center;padding:2px 1px}.result-team-v39{display:flex;flex-direction:column;text-align:center;gap:5px;padding:9px 5px;min-width:0}.result-team-v39 b{font-size:30px;order:2}.result-team-v39 span{font-size:12px;order:1}.result-team-v39 .match-logo-shell,.result-team-v39>.match-club-logo{order:0}.result-fdme-v39{grid-column:1/-1;grid-row:3}.result-fdme-v39 .team-fdme-link a{min-height:46px}.standings-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.standings-table{min-width:620px}}

/* V40 — lisibilité des résultats */
.result-meta-v39 strong{display:block!important;color:#0b211b!important;font-weight:900!important}
.result-team-v39 span{color:#10231d!important;text-shadow:none!important}
.result-team-v39.cany span{color:#10231d!important}
@media(max-width:600px){.result-meta-v39 strong{font-size:13px!important}.result-meta-v39 span{font-size:13px!important}}

/* V41: affichage propre tant que les logos FFHandball ne sont pas fiables. */
.result-team-v39{grid-template-columns:minmax(0,1fr) 52px!important}
@media(max-width:600px){.result-team-v39{display:flex!important}}

/* V42 — contraste planning entraînements */
.training-public-row strong{color:#073126!important;font-weight:900!important}
/* V44 — formulaire membre cohérent + protection permanente du logo */
.member-card-modern select,.member-card-modern input:not([type="checkbox"]):not([type="file"]),.member-card-modern textarea{width:100%;box-sizing:border-box;min-height:48px;border:2px solid #d7e4dc;border-radius:12px;padding:11px 13px;background:#f9fcfa;color:#06251e;font:inherit;outline:none}
.member-card-modern select:focus,.member-card-modern input:focus,.member-card-modern textarea:focus{border-color:#16864f;box-shadow:0 0 0 3px rgba(22,134,79,.12)}
.member-card-modern input[type="file"]{width:100%;box-sizing:border-box;border:2px dashed #bfd2c6;border-radius:12px;padding:10px;background:#f7faf8;color:#263a30}
.member-card-modern input[type="file"]::file-selector-button{border:0;border-radius:9px;background:#073126;color:#fff;font-weight:850;padding:9px 12px;margin-right:10px;cursor:pointer}
.member-card-modern .registration-help{color:#52665b;line-height:1.5}
.auto-category-card{display:grid;gap:5px;margin:0 0 16px;padding:15px 17px;border:2px solid #b9dfc8;border-radius:14px;background:#eaf8ef;color:#073126}
.auto-category-card strong{font-size:16px}.auto-category-card span{color:#385247;line-height:1.4}
.player-position-grid{grid-template-columns:minmax(240px,520px)!important}
.first-manager-card{background:linear-gradient(135deg,#06251e,#0c4a32)!important;color:#fff!important;border:3px solid var(--flash)!important}
.first-manager-card h2{color:#fff!important}.first-manager-card p{color:#e0eee7!important}.first-manager-card button{background:var(--flash)!important;color:#06251e!important}
@media(min-width:901px){.hero-copy{left:242px!important;width:calc(37% - 60px)!important;max-width:520px!important}.team-detail-hero .hero-copy{left:242px!important;width:calc(35% - 40px)!important;max-width:500px!important}}
@media(max-width:900px) and (min-width:561px){.hero-copy,.team-detail-hero .hero-copy{left:145px!important;width:34%!important;max-width:34%!important}}
@media(max-width:560px){.hero-copy,.team-detail-hero .hero-copy{left:98px!important;width:43%!important;max-width:43%!important}.member-card-modern .role-photo-grid{grid-template-columns:1fr}.member-card-modern input[type="file"]{font-size:13px}}
/* V45 — formulaire compact, tailles libres, photos facultatives */
.member-card-modern{max-width:1120px!important}
.equipment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
.equipment-grid label{display:grid;gap:8px;font-weight:800}.other-size-field{margin-top:2px}
.member-card-modern .role-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.member-card-modern .role-photo-grid label{padding:14px;border:1px solid #dce7e0;border-radius:14px;background:#fbfdfc;font-weight:800}
@media(max-width:800px){.equipment-grid,.member-card-modern .role-photo-grid{grid-template-columns:1fr}}
n/* V46 — finition formulaire et visibilité des fonctions */
.member-card-modern{width:min(86vw,1500px)!important;max-width:1500px!important}
.registration-section{margin-top:28px;padding-top:28px;border-top:1px solid #dce7e0}
.registration-section[hidden]{display:none!important}
#player-team-choice.registration-section,#coach-team-choice.registration-section,#referee-details.registration-section,#family-details.registration-section{margin-top:24px;padding:22px;border:1px solid #dce7e0;border-radius:16px;background:#fbfdfc}
#player-team-choice h3,#coach-team-choice h3,#referee-details h3,#family-details h3{margin:0 0 14px}
.pending-roles-card{grid-column:1/-1;display:grid;gap:5px;padding:15px 17px;border:2px solid #b9dfc8;border-radius:14px;background:#eaf8ef;color:#073126}.pending-roles-card strong{font-size:15px}.pending-roles-card span{font-weight:850}.pending-roles-card small{color:#52665b}
.other-size-field:not([hidden]){display:block!important;margin-top:8px}.other-size-field[hidden]{display:none!important}
@media(max-width:900px){.member-card-modern{width:calc(100% - 28px)!important}.equipment-grid{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.equipment-grid{grid-template-columns:1fr}.registration-section{margin-top:20px;padding-top:20px}}
/* V56 — compléments Arbitres, sans modification du masque global */
.referee-reading{margin-top:24px;padding-top:20px;border-top:1px solid rgba(0,0,0,.12)}
.referee-reading h3{margin:0 0 8px}.referee-documents{margin-top:20px}.referee-documents .role-data-item{display:block}.referee-documents .button-link,.referee-reading .button-link{display:inline-block;margin-top:10px}
@media(max-width:720px){.referee-documents .button-link,.referee-reading .button-link{display:block;width:100%;box-sizing:border-box;text-align:center}}
/* V57 — arbitrage: formulaire et documents restent visibles, responsive */
.referee-contact-form{margin-top:18px}.referee-reading{margin-top:24px;padding-top:20px;border-top:1px solid #dfe7e2}.referee-reading h3{margin:0 0 6px}.referee-documents .role-data-item{padding:18px}.referee-documents .form-submit{display:inline-flex;margin-top:10px}@media(max-width:650px){.referee-contact-form .form-grid{grid-template-columns:1fr}.referee-reading .form-submit,.referee-documents .form-submit{width:100%;justify-content:center;box-sizing:border-box}}

/* V58 — formulaires alignés sur le masque V2 */
.member-card-modern{width:100%!important;max-width:100%!important;box-sizing:border-box!important;margin-left:0!important;margin-right:0!important}
.registration-card{box-sizing:border-box!important}
@media(max-width:900px){.member-card-modern{width:100%!important;max-width:100%!important}}

/* V60 — masque global : footer plus lisible sur toutes les pages */
.footer-left{padding-right:28px;border-right:1px solid rgba(112,240,0,.35)}
.institution.local,.institution.handball{background:rgba(255,255,255,.94);border:1px solid rgba(255,255,255,.72);border-radius:16px;padding:8px 12px;box-sizing:border-box;min-height:106px}
.institution.handball img{filter:none!important}
.institution.handball a:last-child img{max-height:72px}
@media(max-width:980px){.footer-left{padding-right:0;border-right:0;border-bottom:1px solid rgba(112,240,0,.35);padding-bottom:20px}.institution.local,.institution.handball{width:100%;min-height:0;padding:10px}.institution-sep{display:none}}
/* V60 — recrutement arbitre : contenu toujours visible, indépendamment des données Supabase */
.referee-recruit p{display:block!important;color:#263c32!important;margin:0 0 16px!important;line-height:1.5}
.referee-recruit .button-link{display:inline-flex!important;align-items:center;justify-content:center;background:#073126!important;color:#fff!important;text-decoration:none!important;border-radius:10px;padding:12px 18px;font-weight:900}

/* V63 — règle HTML canonique : hidden gagne toujours sur les règles de mise en page. */
[hidden]{display:none!important}

/* V64 — accès Responsable validé : le rendu principal ne dépend jamais d'une RPC secondaire. */
body.manager-access #member-dashboard{display:grid!important}
body.manager-access.manager-workspace-open #role-workspaces{display:grid!important}
body.manager-access.manager-workspace-open #site-manager-box{display:block!important}
body.manager-access.manager-workspace-open #site-manager-box #members-panel:not([hidden]){display:block!important}

/* V65 — document arbitrage : le titre est l’action, sobre et directe. */
.referee-document-link>a{display:inline-block;color:#06251e!important;text-decoration:none;font-weight:950;line-height:1.35}
.referee-document-link>a:hover,.referee-document-link>a:focus-visible{text-decoration:underline;text-underline-offset:3px}
.referee-document-link small{margin-top:6px}

/* V66 — console Responsable dédiée, indépendante du DOM Mon compte */
body.manager-dedicated .member-onboarding{display:block!important}
body.manager-dedicated.manager-verified .member-onboarding{display:block!important}
body.manager-dedicated.manager-verified #profile-form,
body.manager-dedicated.manager-verified #bootstrap-box,
body.manager-dedicated.manager-verified #account-panel,
body.manager-dedicated.manager-verified .role-selector-shell{display:none!important}
body.manager-dedicated.manager-verified #member-dashboard{display:block!important}
body.manager-dedicated.manager-verified #role-workspaces{display:block!important}
body.manager-dedicated.manager-verified #role-workspaces>.role-workspace{display:none!important}
body.manager-dedicated.manager-verified #role-workspaces>#site-manager-box{display:block!important}
body.manager-dedicated.manager-verified #site-manager-box #members-panel:not([hidden]){display:block!important}
.manager-build{padding:8px 20px 0;text-align:right;font-size:11px;font-weight:800;color:#64746c;background:#eef4f0}
/* V67 — les fonctions demandées restent visibles avec l’illustration validée du rôle. */
.pending-role-card{cursor:default;opacity:.92}.pending-role-card small{display:block}.pending-role-card img{opacity:.34}

/* V74 — Galerie publique Photos : styles strictement limites au bloc photos */
.photo-public-block{height:auto!important;min-height:260px!important;padding:20px;box-sizing:border-box}
.photo-album-list{display:flex;flex-direction:column;gap:14px}
.photo-album{border:1px solid #e7e7e7;border-radius:18px;overflow:hidden;background:#fff}
.photo-album>button{width:100%;border:0;background:#fff;padding:14px 16px;display:flex;align-items:center;gap:14px;text-align:left;cursor:pointer}
.photo-album-cover{width:96px;height:70px;border-radius:12px;object-fit:cover;background:#eee;flex:0 0 auto}
.photo-album-copy{min-width:0;flex:1}.photo-album-copy strong{display:block;font-size:17px;color:#111}.photo-album-copy small{display:block;margin-top:5px;color:#666}.photo-album-arrow{font-size:25px;font-weight:900;color:var(--cbhb-accent,var(--flash))}
.photo-empty{padding:30px 15px;text-align:center;color:#666}
.photo-lightbox[hidden]{display:none}.photo-lightbox{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}
.photo-lightbox-inner{width:min(1100px,100%);height:min(780px,92vh);display:flex;flex-direction:column;position:relative}.photo-lightbox-head{display:flex;align-items:center;justify-content:space-between;color:#fff;padding:0 4px 12px}.photo-lightbox-head strong{font-size:18px}.photo-lightbox-close{border:0;background:transparent;color:#fff;font-size:38px;line-height:1;cursor:pointer}
.photo-lightbox-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;position:relative}.photo-lightbox-stage img{max-width:100%;max-height:100%;object-fit:contain;border-radius:10px}.photo-lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:58px;border:0;border-radius:12px;background:rgba(255,255,255,.18);color:#fff;font-size:34px;cursor:pointer}.photo-lightbox-prev{left:8px}.photo-lightbox-next{right:8px}.photo-lightbox-foot{color:#fff;text-align:center;padding-top:10px;min-height:24px}.photo-lightbox-caption{margin-right:12px}.photo-lightbox-count{opacity:.7}
@media(max-width:700px){.photo-public-block{padding:12px;min-height:220px!important}.photo-album>button{padding:10px;gap:10px}.photo-album-cover{width:78px;height:62px}.photo-album-copy strong{font-size:15px}.photo-lightbox{padding:8px}.photo-lightbox-inner{height:95vh}.photo-lightbox-nav{width:42px;height:52px}.photo-lightbox-prev{left:2px}.photo-lightbox-next{right:2px}}

/* V76 — bandeau campagne officiel, uniquement Octobre Rose / Movember */
.cbhb-campaign-bar{height:66px;margin-top:18px;padding:0 18px;border-radius:16px;background:linear-gradient(100deg,var(--cbhb-dark),var(--cbhb-bg2));overflow:hidden;box-shadow:none}
.cbhb-campaign-bar[hidden]{display:none!important}.cbhb-campaign-bar button{width:100%;height:100%;padding:0;border:0;background:transparent!important;color:#fff;display:flex;align-items:center;gap:8px;text-align:left;font:950 20px/1 Arial,Helvetica,sans-serif;cursor:pointer;box-shadow:none}.cbhb-campaign-bar button span{color:#fff}.cbhb-campaign-bar button em{color:var(--cbhb-accent);font-style:italic}.cbhb-campaign-bar button small{margin-left:auto;color:#fff;font-size:13px;font-weight:900;opacity:.9}
@media(max-width:700px){.cbhb-campaign-bar{height:54px;margin-top:14px;padding:0 12px;border-radius:14px}.cbhb-campaign-bar button{font-size:16px;gap:6px}.cbhb-campaign-bar button small{font-size:11px}}

/* V79 — illustration de campagne à la place de la mention Site officiel */
.cbhb-campaign-illustration{margin-left:auto;height:54px;width:auto;max-width:42%;object-fit:contain;display:block}
@media(max-width:700px){.cbhb-campaign-illustration{height:44px;max-width:46%}}

/* V81 — campagne: fond blanc, libellé couleur campagne. Aucun autre composant modifié. */
.cbhb-campaign-bar{background:#fff!important}
html[data-theme="octobre-rose"] .cbhb-campaign-bar button span,
html[data-theme="octobre-rose"] .cbhb-campaign-bar button em{color:#e6007e!important}
html[data-theme="movember"] .cbhb-campaign-bar button span,
html[data-theme="movember"] .cbhb-campaign-bar button em{color:#159bd7!important}

/* V88 — partenaires : ajout isolé, masque V82 inchangé */
.partners-carousel-block{height:auto!important;min-height:260px;padding:18px 58px!important;box-sizing:border-box;overflow:hidden;display:flex;align-items:center}
.partners-page-carousel{min-height:420px!important}
.partners-carousel-shell{position:relative;width:100%;padding:0 52px;box-sizing:border-box}
.partners-viewport{overflow:hidden;width:100%;touch-action:pan-y}
.partners-track{display:flex;gap:18px;transition:transform .55s ease;will-change:transform}
.partner-card{flex:0 0 calc((100% - 54px)/4);min-width:0;height:190px;border:1px solid #e3e9e5;border-radius:18px;background:#fff;box-shadow:0 7px 20px rgba(0,0,0,.08);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px;box-sizing:border-box;text-decoration:none;color:#06251e}
.partner-card img{display:block;width:100%;height:125px;object-fit:contain;object-position:center}
.partner-card strong{font-size:14px;line-height:1.15;text-align:center}
.partners-arrow{position:absolute;z-index:2;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;border-radius:50%;background:#06251e;color:#fff;font-size:32px;line-height:1;cursor:pointer;box-shadow:0 3px 12px rgba(0,0,0,.22)}
.partners-arrow.prev{left:0}.partners-arrow.next{right:0}
html[data-theme] .partners-arrow{background:var(--cbhb-dark)!important;color:#fff!important}
@media(max-width:900px){.partner-card{flex-basis:calc((100% - 18px)/2)}}
@media(max-width:700px){.partners-carousel-block{padding:14px 8px!important;min-height:225px!important}.partners-page-carousel{min-height:300px!important}.partners-carousel-shell{padding:0 38px}.partners-track{gap:10px}.partner-card{flex-basis:calc((100% - 10px)/2);height:170px;padding:10px}.partner-card img{height:112px}.partner-card strong{font-size:12px}.partners-arrow{width:34px;height:34px;font-size:25px}.partners-arrow.prev{left:0}.partners-arrow.next{right:0}}

/* V98 — classement club compact : une seule ligne CBHB par équipe. */
.club-standing-compact{margin:0 0 1rem}.club-standing-compact:last-child{margin-bottom:0}
.compact-standing{margin-bottom:0}.compact-standing tbody tr:last-child td{border-bottom:0}
@media(max-width:700px){.club-standing-compact h3{margin:.35rem 0 .55rem}.compact-standing{min-width:0;width:100%;max-width:100%;box-sizing:border-box}}


/* V103 — MASQUE V2 : footer canonique mobile, commun à toutes les pages. */
@media(max-width:560px){
 .footer .footer-top{
   display:grid;
   grid-template-columns:1.25fr repeat(4,minmax(0,.75fr));
   gap:5px;align-items:center;min-height:0
 }
 .footer .footer-brand{grid-column:auto;min-height:68px;gap:7px}
 .footer .footer-brand img{width:46px;height:46px}
 .footer .footer-brand b{font-size:10.5px;line-height:1.05;white-space:normal}
 .footer .footer-brand small{font-size:7.5px;line-height:1.1;margin-top:4px;white-space:normal}
 .footer .footer-nav{min-height:68px}
 .footer .footer-nav img{height:60px;width:100%;object-fit:contain}
 .footer .footer-bottom{
   display:grid;
   grid-template-columns:1fr;
   gap:8px;
   align-items:center
 }
 .footer .footer-left{
   display:grid;
   grid-template-columns:auto 1fr;
   gap:12px;
   align-items:center;
   padding:0 0 8px!important;
   border-right:0!important;
   border-bottom:1px solid rgba(112,240,0,.35)
 }
 .footer .footer-left .label{max-width:76px;max-height:52px}
 .footer .institution.local,
 .footer .institution.handball{
   width:100%;min-width:0;min-height:0;
   box-sizing:border-box;padding:7px 10px;border-radius:13px
 }
 .footer .institution.local{grid-template-columns:1.35fr .65fr;gap:10px}
 .footer .institution.handball{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
 .footer .institution a{height:48px;min-width:0}
 .footer .institution img{max-width:100%;max-height:43px}
 .footer .institution.local a:nth-child(2) img{max-height:47px}
 .footer .institution.handball a:last-child img{max-height:40px}
 .footer .institution-sep{display:none!important}
 .footer .copyright{margin-top:9px;font-size:9px;line-height:1.2;white-space:normal}
}

/* V104 — fiche Équipe : aucun classement ne peut élargir le masque mobile. */
@media(max-width:560px){.team-live{min-width:0;width:100%;max-width:100%}.team-live .detail-card{min-width:0;max-width:100%;box-sizing:border-box}.team-live .compact-standing{min-width:0!important;width:100%!important;max-width:100%!important;overflow:hidden}.team-live .standings-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}}


/* V105 — classement compact Équipe : ne peut jamais modifier la largeur du viewport. */
@media(max-width:560px){
 .team-live .club-standing-compact,
 .team-live .standings-wrap{
   width:100%!important;max-width:100%!important;min-width:0!important;
   box-sizing:border-box!important;overflow:hidden!important
 }
 .team-live table.standings-table.compact-standing{
   display:table!important;
   width:100%!important;max-width:100%!important;min-width:0!important;
   table-layout:fixed!important;
   box-sizing:border-box!important;
   font-size:10px!important
 }
 .team-live table.standings-table.compact-standing th,
 .team-live table.standings-table.compact-standing td{
   min-width:0!important;
   padding:6px 2px!important;
   white-space:normal!important;
   overflow-wrap:anywhere!important;
   word-break:normal!important
 }
 .team-live table.standings-table.compact-standing th:nth-child(1),
 .team-live table.standings-table.compact-standing td:nth-child(1){width:7%!important}
 .team-live table.standings-table.compact-standing th:nth-child(2),
 .team-live table.standings-table.compact-standing td:nth-child(2){width:37%!important}
 .team-live table.standings-table.compact-standing th:nth-child(n/**/+3),
 .team-live table.standings-table.compact-standing td:nth-child(n/**/+3){width:9.33%!important}
}


/* V106 — masque mobile : bouton Connexion légèrement réduit et contenu dans le bandeau. */
@media(max-width:560px){
 .hero .hero-actions{width:76px!important;right:7px!important}
 .hero button.login{width:96px!important;min-width:96px!important;max-width:96px!important;height:34px!important;padding:0 9px!important;font-size:10px!important;line-height:1!important;box-sizing:border-box!important}
}

/* V106 — fiches Équipe neutres avant raccordement des identités. */
.team-people{min-height:0!important}
.team-people-placeholders{display:grid;gap:10px;width:100%}
.team-people-row{display:grid;grid-template-columns:minmax(120px,.32fr) 1fr;gap:16px;align-items:center;width:100%;box-sizing:border-box;padding:13px 15px;border:1px solid #dce7df;border-radius:12px;background:#f8fbf9;color:#263a30}
.team-people-row strong{color:#073126;font-weight:950}
.team-people-row span{color:#687870;font-size:14px}
@media(max-width:560px){
 .team-people-row{grid-template-columns:1fr;gap:4px;padding:12px}
 .team-people-row span{font-size:12px}
}

/* V107 — ancien emplacement Connexion : zone tactile secrète, strictement invisible. */
.theme-secret-trigger{
 display:block;width:178px;height:74px;border:0;padding:0;margin:0;
 background:transparent!important;box-shadow:none!important;outline:0;
 color:transparent;opacity:0;cursor:default
}
.cbhb-theme-demo{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:20px;background:rgba(0,0,0,.72)}
.cbhb-theme-demo-box{width:min(92vw,420px);box-sizing:border-box;padding:22px;border-radius:18px;background:#fff;color:#08251d;box-shadow:0 20px 60px rgba(0,0,0,.35);text-align:center}
.cbhb-theme-demo-box>strong{display:block;margin-bottom:16px;font-size:20px}
.cbhb-theme-demo-buttons{display:grid;gap:9px}
.cbhb-theme-demo-buttons button,.cbhb-theme-demo-close{width:100%;min-height:46px;border:0;border-radius:12px;font-weight:900;font-size:15px}
.cbhb-theme-demo-buttons button{background:#073126;color:#fff}
.cbhb-theme-demo-close{margin-top:14px;background:#e8ecea;color:#08251d}
@media(max-width:560px){
 .theme-secret-trigger{width:122px;height:54px}
}


/* V108 — NOËL : surcouche lumineuse uniquement. Aucun impact sur géométrie, navigation ou données. */
@keyframes cbhbNoelGlow{
 0%,100%{box-shadow:0 0 0 2px rgba(244,211,94,.95),0 0 9px rgba(255,45,45,.75),0 0 18px rgba(244,211,94,.35)}
 25%{box-shadow:0 0 0 2px rgba(255,255,255,.95),0 0 11px rgba(244,211,94,.85),0 0 20px rgba(255,45,45,.40)}
 50%{box-shadow:0 0 0 2px rgba(255,55,55,.95),0 0 12px rgba(255,255,255,.75),0 0 22px rgba(244,211,94,.45)}
 75%{box-shadow:0 0 0 2px rgba(244,211,94,.95),0 0 11px rgba(255,55,55,.80),0 0 20px rgba(255,255,255,.35)}
}
html[data-theme="noel"] :is(
 .hero,.module,.content-card,.detail-card,.team-card,.news-shell,.news-card,
 .footer,.footer-top,.footer-bottom,.footer-nav,.institution,
 #cbhb-campaign-bar,.cbhb-campaign-bar
){
 animation:cbhbNoelGlow 1.65s ease-in-out infinite!important;
}
@media(prefers-reduced-motion:reduce){
 html[data-theme="noel"] :is(
  .hero,.module,.content-card,.detail-card,.team-card,.news-shell,.news-card,
  .footer,.footer-top,.footer-bottom,.footer-nav,.institution,
  #cbhb-campaign-bar,.cbhb-campaign-bar
 ){animation-duration:3.3s!important}
}

/* V112 — Résultats FFHB : domicile à gauche, score centré, extérieur à droite. */
.result-row-v112{
  display:grid;
  grid-template-columns:150px 155px minmax(0,1fr);
  gap:12px;
  align-items:center;
  padding:12px;
  border:1px solid #dce7e1;
  border-radius:14px;
  background:#fff;
  box-sizing:border-box;
}
.result-meta-v112{display:flex;flex-direction:column;justify-content:center;gap:4px;padding:6px 2px;min-width:0}
.result-meta-v112 strong{font-size:14px;color:#0b211b;font-weight:900}
.result-meta-v112 span{font-weight:900;color:#087443}
.result-fdme-v112{display:flex;align-items:center;justify-content:center;min-width:0}
.result-fdme-v112 .team-fdme-link{margin:0;width:100%}
.result-fdme-v112 .team-fdme-link a{width:100%;box-sizing:border-box;text-align:center}
.result-board-v112{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  gap:14px;
  align-items:center;
  min-width:0;
}
.result-club-v112{
  min-width:0;
  padding:8px 4px;
  background:transparent;
  border:0;
  color:#10231d;
  font-size:14px;
  font-weight:900;
  line-height:1.2;
}
.result-club-v112.home{text-align:right}
.result-club-v112.away{text-align:left}
.result-club-v112 span{display:block;overflow-wrap:anywhere}
.result-score-v112{display:flex;align-items:center;justify-content:center;gap:4px;white-space:nowrap;font-variant-numeric:tabular-nums}
.result-score-v112 b{
  display:grid;
  place-items:center;
  min-width:48px;
  height:48px;
  padding:0 8px;
  box-sizing:border-box;
  border-radius:9px;
  font-size:28px;
  line-height:1;
  border:1px solid #dce7e1;
  background:#f5f7f6;
  color:#304039;
}
.result-score-v112 b.winner{background:#e9f8ef;border-color:#9ddbb6;color:#08783f}
.result-score-v112 b.loser{background:#fff0f0;border-color:#efb7b7;color:#b42323}
.result-score-v112 b.draw{background:#eef6ff;border-color:#a9ccef;color:#1769aa}
.result-score-separator-v112{font-size:20px;font-weight:900;color:#718079}

/* V5.4 — Résultats du week-end : UNE disposition pour les rencontres
   avec score et sans score. Évite la colonne fantôme sur ordinateur. */
.result-row-v112 > .result-board-v112{grid-column:3;min-width:0}
.result-row-v112 .result-club-v112 span{overflow-wrap:break-word;word-break:normal;hyphens:none}
.result-row-v112 .result-time-v112{font-size:12px;font-weight:700;color:#68756e;line-height:1.2}
.result-row-v112 .result-score-pending-cbhb{
  min-width:142px;white-space:normal;text-align:center;
  border:1px solid var(--cbhb-accent-soft-border,#d9e4df);
  border-radius:999px;padding:8px 12px;
  background:var(--cbhb-accent-soft-bg,#f4f8f5);
  color:var(--cbhb-accent-strong,#166842);
  font-size:13px;font-weight:850;line-height:1.2
}
@media(max-width:900px){
  .result-row-v112 > .result-board-v112{grid-column:1/-1}
}
@media(max-width:600px){
  .result-row-v112 .result-time-v112{font-size:11px}
  .result-pending-cbhb > .result-board-v112{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:4px 12px;
  }
  .result-pending-cbhb .result-club-v112.home{grid-column:1;grid-row:1}
  .result-pending-cbhb .result-club-v112.away{grid-column:2;grid-row:1}
  .result-pending-cbhb .result-score-pending-cbhb{
    grid-column:1/-1;grid-row:2;justify-self:center;
    min-width:0;margin:2px 0 0;padding:5px 14px;font-size:12px
  }
}

@media(max-width:900px){
  .result-row-v112{grid-template-columns:1fr auto}
  .result-meta-v112{grid-column:1}
  .result-fdme-v112{grid-column:2}
  .result-board-v112{grid-column:1/-1}
}
@media(max-width:600px){
  .result-row-v112{grid-template-columns:1fr;gap:8px;padding:10px}
  .result-meta-v112{grid-column:1;flex-direction:row;justify-content:space-between;align-items:center;padding:2px 1px}
  .result-meta-v112 strong,.result-meta-v112 span{font-size:12px}
  .result-fdme-v112{grid-column:1;grid-row:3}
  .result-fdme-v112 .team-fdme-link a{min-height:44px}
  .result-board-v112{grid-column:1;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:6px}
  .result-club-v112{font-size:11px;padding:5px 1px}
  .result-club-v112.home{text-align:right}
  .result-club-v112.away{text-align:left}
  .result-score-v112{gap:2px}
  .result-score-v112 b{min-width:38px;height:40px;padding:0 5px;border-radius:8px;font-size:23px}
  .result-score-separator-v112{font-size:16px}
}


/* ============================================================
   V108.9 — NOËL : CADRE UNIQUEMENT SUR LE MASQUE EXTÉRIEUR
   Base : V108.4 gelée.
   Aucun habillage sur les cartes/blocs internes.
   ============================================================ */

html[data-theme="noel"] .site > .hero,
html[data-theme="noel"] .site > .module,
html[data-theme="noel"] .site > .detail-grid,
html[data-theme="noel"] .site > .join-us,
html[data-theme="noel"] .site > .footer{
  position:relative;
  isolation:isolate;
}

/* Le cadre est une surcouche : il ne participe jamais aux dimensions du bloc. */
html[data-theme="noel"] .site > .hero::after,
html[data-theme="noel"] .site > .module::after,
html[data-theme="noel"] .site > .detail-grid::after,
html[data-theme="noel"] .site > .join-us::after,
html[data-theme="noel"] .site > .footer::after{
  content:"";
  position:absolute;
  z-index:40;
  pointer-events:none;
  box-sizing:border-box;
  inset:-7px;
  border-style:solid;
  border-width:24px;
  border-image-source:url("assets/cadre-noel-exterieur.png");
  border-image-slice:112;
  border-image-repeat:round;
  filter:drop-shadow(0 3px 4px rgba(0,0,0,.20));
}

/* Header et footer : habillage plus généreux. */
html[data-theme="noel"] .site > .hero::after,
html[data-theme="noel"] .site > .footer::after{
  inset:-10px;
  border-width:34px;
  border-image-slice:112;
}

/* Gros modules uniquement : les contenus internes restent parfaitement neutres. */
html[data-theme="noel"] .site > .module::after,
html[data-theme="noel"] .site > .detail-grid::after,
html[data-theme="noel"] .site > .join-us::after{
  border-width:26px;
}

/* On garantit qu'aucun sous-bloc ne reçoit le cadre Noël. */
html[data-theme="noel"] :is(
  .white-block,.news-card,.team-card,.partner-card,.join-card,
  .event-card,.match-card,.result-card,.live-row,.role-card,
  .footer-top,.footer-bottom,.module-title
)::after{
  border-image:none!important;
  background:none;
}

/* Mobile : seulement un cadre fin et propre, aucun décor figé supplémentaire. */
@media (max-width:760px){
  html[data-theme="noel"] .site > .hero::after,
  html[data-theme="noel"] .site > .module::after,
  html[data-theme="noel"] .site > .detail-grid::after,
  html[data-theme="noel"] .site > .join-us::after,
  html[data-theme="noel"] .site > .footer::after{
    inset:-3px;
    border-width:12px;
    border-image-slice:112;
    filter:none;
  }
}

/* ============================================================
   V108.12 — HALLOWEEN : ORNEMENTS PRESERVES, AUCUN ETIREMENT
   Base : V108.9 gelée. Gros blocs extérieurs uniquement.
   ============================================================ */
.hf-layer{display:none}
html.hf-active .site > :is(.hero,.module,.detail-grid,.join-us,.footer){position:relative;isolation:isolate}
html.hf-active .hf-layer{
  display:block;position:absolute;inset:-12px;z-index:45;pointer-events:none;overflow:visible;
}
html.hf-active .hf-part{position:absolute;display:block;object-fit:contain;filter:drop-shadow(0 3px 4px rgba(0,0,0,.38));}
html.hf-active .hf-tl{left:-8px;top:-10px;width:132px;height:auto}
html.hf-active .hf-tr{right:-8px;top:-10px;width:140px;height:auto}
html.hf-active .hf-bl{left:-8px;bottom:-10px;width:142px;height:auto}
html.hf-active .hf-br{right:-8px;bottom:-10px;width:142px;height:auto}
html.hf-active .hf-top-center{left:50%;top:-9px;transform:translateX(-50%);width:210px;height:auto}
html.hf-active .hf-bottom-center{left:50%;bottom:-12px;transform:translateX(-50%);width:220px;height:auto}
html.hf-active .hf-left-mid{left:-7px;top:50%;transform:translateY(-50%);width:78px;height:auto}
html.hf-active .hf-right-mid{right:-7px;top:50%;transform:translateY(-50%);width:78px;height:auto}
html.hf-active .hf-edge{position:absolute;background:linear-gradient(90deg,transparent,#ff5a00 12%,#ffb000 28%,#ff2e00 48%,#9b28ff 66%,#ff7b00 82%,transparent);box-shadow:0 0 7px #ff5a00,0 0 13px rgba(255,104,0,.45);opacity:.9}
html.hf-active .hf-edge-top,html.hf-active .hf-edge-bottom{left:105px;right:105px;height:4px}
html.hf-active .hf-edge-top{top:5px} html.hf-active .hf-edge-bottom{bottom:5px}
html.hf-active .hf-edge-left,html.hf-active .hf-edge-right{top:105px;bottom:105px;width:4px;background:linear-gradient(180deg,transparent,#ff5a00 12%,#ffb000 28%,#ff2e00 48%,#9b28ff 66%,#ff7b00 82%,transparent)}
html.hf-active .hf-edge-left{left:5px} html.hf-active .hf-edge-right{right:5px}
html.hf-active .hf-twinkle{position:absolute;width:7px;height:7px;border-radius:50%;background:#fff7ad;top:3px;left:var(--p);box-shadow:0 0 5px #fff,0 0 10px #ff9b00,0 0 18px #ff4d00;animation:hfTwinkle 1.8s infinite ease-in-out}
html.hf-active .hf-twinkle-1{animation-delay:.35s;background:#ff7a00}.hf-twinkle-2{animation-delay:.75s;background:#bf62ff}.hf-twinkle-3{animation-delay:1.1s;background:#fff}
@keyframes hfTwinkle{0%,100%{opacity:.2;transform:scale(.65)}45%{opacity:1;transform:scale(1.7)}60%{opacity:.45;transform:scale(.9)}}

/* Modules extérieurs : décor plus compact pour ne pas recouvrir les titres. */
html.hf-active .site > :is(.module,.detail-grid,.join-us) > .hf-layer .hf-left-mid,
html.hf-active .site > :is(.module,.detail-grid,.join-us) > .hf-layer .hf-right-mid{width:62px}
html.hf-active .site > :is(.module,.detail-grid,.join-us) > .hf-layer .hf-tl,
html.hf-active .site > :is(.module,.detail-grid,.join-us) > .hf-layer .hf-tr{width:104px}
html.hf-active .site > :is(.module,.detail-grid,.join-us) > .hf-layer .hf-bl,
html.hf-active .site > :is(.module,.detail-grid,.join-us) > .hf-layer .hf-br{width:110px}
html.hf-active .site > :is(.module,.detail-grid,.join-us) > .hf-layer .hf-top-center{width:165px}
html.hf-active .site > :is(.module,.detail-grid,.join-us) > .hf-layer .hf-bottom-center{width:170px}

/* Aucun décor Halloween injecté dans les cartes internes. */
html.hf-active :is(.white-block,.news-card,.team-card,.partner-card,.join-card,.event-card,.match-card,.result-card,.live-row,.role-card) > .hf-layer{display:none!important}

/* Téléphone : pas de squelette ni de centre bas, seulement coins + ligne lumineuse animée. */
@media(max-width:760px){
  html.hf-active .hf-layer{inset:-4px;overflow:hidden}
  html.hf-active .hf-left-mid,html.hf-active .hf-right-mid,html.hf-active .hf-bottom-center{display:none}
  html.hf-active .hf-tl,html.hf-active .hf-tr,html.hf-active .hf-bl,html.hf-active .hf-br{width:62px}
  html.hf-active .hf-top-center{width:100px;top:-2px}
  html.hf-active .hf-edge-top,html.hf-active .hf-edge-bottom{left:48px;right:48px;height:3px}
  html.hf-active .hf-edge-left,html.hf-active .hf-edge-right{top:48px;bottom:48px;width:3px}
  html.hf-active .hf-twinkle{width:5px;height:5px;animation-duration:2.1s}
}
@media(prefers-reduced-motion:reduce){html.hf-active .hf-twinkle{animation:none;opacity:.7}}


/* V108-20 — Octobre Rose & Movember : suppression cohérente du vert sur tous les blocs */
html[data-theme="octobre-rose"] .join-card:nth-child(1),
html[data-theme="movember"] .join-card:nth-child(1){background:var(--cbhb-accent)!important;color:#fff!important}
html[data-theme="octobre-rose"] .join-card:nth-child(3),
html[data-theme="movember"] .join-card:nth-child(3){background:var(--cbhb-accent-soft-bg)!important;color:#102218!important}
html[data-theme="octobre-rose"] .join-card:nth-child(1) a,
html[data-theme="octobre-rose"] .join-card:nth-child(1) button,
html[data-theme="movember"] .join-card:nth-child(1) a,
html[data-theme="movember"] .join-card:nth-child(1) button,
html[data-theme="octobre-rose"] .cbhb-form button,
html[data-theme="movember"] .cbhb-form button,
html[data-theme="octobre-rose"] .team-fdme-link a,
html[data-theme="movember"] .team-fdme-link a,
html[data-theme="octobre-rose"] .fdme-back,
html[data-theme="octobre-rose"] .fdme-external,
html[data-theme="movember"] .fdme-back,
html[data-theme="movember"] .fdme-external,
html[data-theme="octobre-rose"] .member-hero-actions .member-action,
html[data-theme="movember"] .member-hero-actions .member-action{background:var(--cbhb-button-dark)!important;color:#fff!important}
html[data-theme="octobre-rose"] .live-match-date span,
html[data-theme="octobre-rose"] .live-team,
html[data-theme="octobre-rose"] .event-public-date,
html[data-theme="octobre-rose"] .public-profile-card strong,
html[data-theme="octobre-rose"] .training-public-row span,
html[data-theme="octobre-rose"] .result-meta-v39 span,
html[data-theme="octobre-rose"] .manual-fallback summary,
html[data-theme="octobre-rose"] .form-status,
html[data-theme="octobre-rose"] .form-feedback.ok,
html[data-theme="octobre-rose"] .role-choice input,
html[data-theme="movember"] .live-match-date span,
html[data-theme="movember"] .live-team,
html[data-theme="movember"] .event-public-date,
html[data-theme="movember"] .public-profile-card strong,
html[data-theme="movember"] .training-public-row span,
html[data-theme="movember"] .result-meta-v39 span,
html[data-theme="movember"] .manual-fallback summary,
html[data-theme="movember"] .form-status,
html[data-theme="movember"] .form-feedback.ok,
html[data-theme="movember"] .role-choice input{color:var(--cbhb-accent-strong)!important;accent-color:var(--cbhb-accent-strong)!important}
html[data-theme="octobre-rose"] .attendance-actions .present.active,
html[data-theme="octobre-rose"] .approve-action.action-success,
html[data-theme="octobre-rose"] .coverage-actions button.selected,
html[data-theme="movember"] .attendance-actions .present.active,
html[data-theme="movember"] .approve-action.action-success,
html[data-theme="movember"] .coverage-actions button.selected{background:var(--cbhb-accent-strong)!important;border-color:var(--cbhb-accent-strong)!important;color:#fff!important}
html[data-theme="octobre-rose"] .result-club.winner,
html[data-theme="octobre-rose"] .result-team-v39.winner,
html[data-theme="octobre-rose"] .standings-table .cbhb-standing td,
html[data-theme="octobre-rose"] .member-card-modern .role-choice:has(input:checked),
html[data-theme="octobre-rose"] .auto-category-card,
html[data-theme="movember"] .result-club.winner,
html[data-theme="movember"] .result-team-v39.winner,
html[data-theme="movember"] .standings-table .cbhb-standing td,
html[data-theme="movember"] .member-card-modern .role-choice:has(input:checked),
html[data-theme="movember"] .auto-category-card{background:var(--cbhb-accent-soft-bg)!important;border-color:var(--cbhb-accent-soft-border)!important}
html[data-theme="octobre-rose"] .result-club.winner b,
html[data-theme="octobre-rose"] .result-team-v39.winner b,
html[data-theme="octobre-rose"] .standings-table .cbhb-standing td,
html[data-theme="octobre-rose"] .member-card-modern .role-choice:has(input:checked) span,
html[data-theme="octobre-rose"] .auto-category-card strong,
html[data-theme="octobre-rose"] .auto-category-card span,
html[data-theme="movember"] .result-club.winner b,
html[data-theme="movember"] .result-team-v39.winner b,
html[data-theme="movember"] .standings-table .cbhb-standing td,
html[data-theme="movember"] .member-card-modern .role-choice:has(input:checked) span,
html[data-theme="movember"] .auto-category-card strong,
html[data-theme="movember"] .auto-category-card span{color:var(--cbhb-accent-strong)!important}
html[data-theme="octobre-rose"] .first-manager-card,
html[data-theme="movember"] .first-manager-card{background:linear-gradient(135deg,var(--cbhb-dark),var(--cbhb-bg2))!important;border-color:var(--cbhb-accent)!important}
html[data-theme="octobre-rose"] .first-manager-card button,
html[data-theme="movember"] .first-manager-card button{background:var(--cbhb-accent)!important;color:var(--cbhb-dark)!important}
html[data-theme="octobre-rose"] .member-card-modern select:focus,
html[data-theme="octobre-rose"] .member-card-modern input:focus,
html[data-theme="octobre-rose"] .member-card-modern textarea:focus,
html[data-theme="movember"] .member-card-modern select:focus,
html[data-theme="movember"] .member-card-modern input:focus,
html[data-theme="movember"] .member-card-modern textarea:focus{border-color:var(--cbhb-accent-strong)!important;box-shadow:none!important}
html[data-theme="octobre-rose"] .module-title h2 span,
html[data-theme="octobre-rose"] .hero-copy h1 span,
html[data-theme="octobre-rose"] .footer-brand b,
html[data-theme="movember"] .module-title h2 span,
html[data-theme="movember"] .hero-copy h1 span,
html[data-theme="movember"] .footer-brand b{color:#fff!important}


/* V108-21 — THEMES SANS VERT : couverture exhaustive Octobre Rose / Movember */
/* Les illustrations/photos conservent naturellement leurs couleurs internes. */
html[data-theme="octobre-rose"],html[data-theme="movember"]{background:var(--cbhb-dark)!important}
html[data-theme="octobre-rose"] .drawer,html[data-theme="movember"] .drawer{background:linear-gradient(160deg,var(--cbhb-dark),var(--cbhb-bg1))!important;border-left-color:var(--cbhb-accent-soft-border)!important}
html[data-theme="octobre-rose"] .drawer a:hover,html[data-theme="octobre-rose"] .drawer a:focus-visible,
html[data-theme="movember"] .drawer a:hover,html[data-theme="movember"] .drawer a:focus-visible{background:var(--cbhb-bg2)!important}
html[data-theme="octobre-rose"] :is(.team-card h2,.detail-back a,.shop-home-button,.news-card,.carousel-arrow,.registration-submit,.manager-card button,.member-card-head,.account-panel,.role-selector-shell,.admin-nav-btn.active,.role-workspace-head,.role-workspace section>h3,.team-fdme-link a,.fdme-back,.fdme-external,.partners-arrow,.referee-recruit .button-link,.member-card-modern input[type="file"]::file-selector-button,.cbhb-theme-demo-buttons button),
html[data-theme="movember"] :is(.team-card h2,.detail-back a,.shop-home-button,.news-card,.carousel-arrow,.registration-submit,.manager-card button,.member-card-head,.account-panel,.role-selector-shell,.admin-nav-btn.active,.role-workspace-head,.role-workspace section>h3,.team-fdme-link a,.fdme-back,.fdme-external,.partners-arrow,.referee-recruit .button-link,.member-card-modern input[type="file"]::file-selector-button,.cbhb-theme-demo-buttons button){background:var(--cbhb-button-dark)!important;color:#fff!important}
html[data-theme="octobre-rose"] :is(.detail-back a:hover,.compact-role-btn,.account-role-card,.account-actions-row a,.account-actions-row button),
html[data-theme="movember"] :is(.detail-back a:hover,.compact-role-btn,.account-role-card,.account-actions-row a,.account-actions-row button){background:var(--cbhb-bg1)!important;color:#fff!important}
html[data-theme="octobre-rose"] .account-role-card:after,html[data-theme="movember"] .account-role-card:after{background:linear-gradient(180deg,transparent 25%,var(--cbhb-dark) 100%)!important}
html[data-theme="octobre-rose"] :is(.detail-card h2,.shop-home-card h3,.history-season h2,.location-copy h2,.registration-card h2,.first-manager-card h2,.manager-card h2,.member-card-modern .registration-section h3,.document-card,.partner-card,.referee-document-link>a,.team-people-row strong,.training-public-row strong),
html[data-theme="movember"] :is(.detail-card h2,.shop-home-card h3,.history-season h2,.location-copy h2,.registration-card h2,.first-manager-card h2,.manager-card h2,.member-card-modern .registration-section h3,.document-card,.partner-card,.referee-document-link>a,.team-people-row strong,.training-public-row strong){color:var(--cbhb-button-dark)!important}
html[data-theme="octobre-rose"] :is(.referee-card p,.form-status,.live-match-date span,.live-team,.live-doc,.event-public-date,.public-profile-card strong,.training-public-row span,.result-meta-v39 span,.result-meta-v112 span,.manual-fallback summary),
html[data-theme="movember"] :is(.referee-card p,.form-status,.live-match-date span,.live-team,.live-doc,.event-public-date,.public-profile-card strong,.training-public-row span,.result-meta-v39 span,.result-meta-v112 span,.manual-fallback summary){color:var(--cbhb-accent-strong)!important}
html[data-theme="octobre-rose"] :is(.result-club.winner,.result-team-v39.winner,.result-score-v112 b.winner,.standings-table .cbhb-standing td,.auto-category-card,.pending-roles-card),
html[data-theme="movember"] :is(.result-club.winner,.result-team-v39.winner,.result-score-v112 b.winner,.standings-table .cbhb-standing td,.auto-category-card,.pending-roles-card){background:var(--cbhb-accent-soft-bg)!important;border-color:var(--cbhb-accent-soft-border)!important;color:var(--cbhb-accent-strong)!important}
html[data-theme="octobre-rose"] :is(.result-club.winner b,.result-team-v39.winner b,.result-score-v112 b.winner,.standings-table .cbhb-standing td,.auto-category-card strong,.auto-category-card span,.pending-roles-card strong,.pending-roles-card span),
html[data-theme="movember"] :is(.result-club.winner b,.result-team-v39.winner b,.result-score-v112 b.winner,.standings-table .cbhb-standing td,.auto-category-card strong,.auto-category-card span,.pending-roles-card strong,.pending-roles-card span){color:var(--cbhb-accent-strong)!important}
html[data-theme="octobre-rose"] .standings-table th,html[data-theme="movember"] .standings-table th{background:var(--cbhb-button-dark)!important;color:#fff!important}
html[data-theme="octobre-rose"] .match-logo-fallback,html[data-theme="movember"] .match-logo-fallback{background:var(--cbhb-bg1)!important;color:#fff!important}
html[data-theme="octobre-rose"] :is(.attendance-actions .present.active,.approve-action.action-success,.coverage-actions button.selected),
html[data-theme="movember"] :is(.attendance-actions .present.active,.approve-action.action-success,.coverage-actions button.selected){background:var(--cbhb-accent-strong)!important;border-color:var(--cbhb-accent-strong)!important;color:#fff!important}
html[data-theme="octobre-rose"] :is(.coverage-actions button,.admin-nav-btn,.document-card),
html[data-theme="movember"] :is(.coverage-actions button,.admin-nav-btn,.document-card){color:var(--cbhb-button-dark)!important;border-color:var(--cbhb-accent-soft-border)!important}
html[data-theme="octobre-rose"] .admin-nav,html[data-theme="movember"] .admin-nav{background:var(--cbhb-accent-soft-bg)!important;border-color:var(--cbhb-accent-soft-border)!important}
html[data-theme="octobre-rose"] .first-manager-card,html[data-theme="movember"] .first-manager-card{background:linear-gradient(135deg,var(--cbhb-dark),var(--cbhb-bg2))!important;border-color:var(--cbhb-accent)!important}
html[data-theme="octobre-rose"] .first-manager-card button,html[data-theme="movember"] .first-manager-card button{background:var(--cbhb-accent)!important;color:var(--cbhb-dark)!important}
html[data-theme="octobre-rose"] :is(.referee-photo,.coach-photo),html[data-theme="movember"] :is(.referee-photo,.coach-photo){background:var(--cbhb-dark)!important}
html[data-theme="octobre-rose"] .role-choice input,html[data-theme="movember"] .role-choice input{accent-color:var(--cbhb-accent-strong)!important}
html[data-theme="octobre-rose"] .member-card-modern .role-choice:has(input:checked),html[data-theme="movember"] .member-card-modern .role-choice:has(input:checked){background:var(--cbhb-accent-soft-bg)!important;border-color:var(--cbhb-accent-strong)!important;box-shadow:inset 0 0 0 1px var(--cbhb-accent-strong)!important}
html[data-theme="octobre-rose"] .member-card-modern .role-choice:has(input:checked) span,html[data-theme="movember"] .member-card-modern .role-choice:has(input:checked) span{color:var(--cbhb-accent-strong)!important}
html[data-theme="octobre-rose"] .member-card-modern :is(select,input,textarea):focus,html[data-theme="movember"] .member-card-modern :is(select,input,textarea):focus{border-color:var(--cbhb-accent-strong)!important;box-shadow:none!important}
html[data-theme="octobre-rose"] .first-manager-card button,html[data-theme="movember"] .first-manager-card button{border-color:transparent!important}
/* Ancien marqueur Responsable avec style inline : l'important neutralise le vert. */
html[data-theme="octobre-rose"] #v69-build-marker,html[data-theme="movember"] #v69-build-marker{background:var(--cbhb-button-dark)!important;color:#fff!important}


/* V108-22 — Thème Normal : vert structurel éclairci sans modifier la mécanique */
html[data-theme="normal"] .news-card,
html[data-theme="normal"] .carousel-arrow,
html[data-theme="normal"] .drawer,
html[data-theme="normal"] .account-panel,
html[data-theme="normal"] .role-selector-shell,
html[data-theme="normal"] .dashboard-welcome,
html[data-theme="normal"] .member-card-head,
html[data-theme="normal"] .role-workspace-head,
html[data-theme="normal"] .standings-table th{background:#0b4933!important}
html[data-theme="normal"] .hero-actions button,
html[data-theme="normal"] .join-card a,
html[data-theme="normal"] .join-card button,
html[data-theme="normal"] .cbhb-form button,
html[data-theme="normal"] .team-fdme-link a,
html[data-theme="normal"] .fdme-back,
html[data-theme="normal"] .fdme-external,
html[data-theme="normal"] .member-hero-actions .member-action,
html[data-theme="normal"] .registration-submit,
html[data-theme="normal"] .secondary-action{background:#0a432f!important}
html[data-theme="normal"] .compact-role-btn,
html[data-theme="normal"] .role-selector-card{background:#14553d!important}
html[data-theme="normal"] .first-manager-card{background:linear-gradient(135deg,#0b4933,#2f8150)!important}

/* V108-23 — bouton menu flottant raccordé aux palettes de thème */
html[data-theme="normal"] .hero-actions .burger{background:#176a49!important;color:#fff!important}
html[data-theme="normal"] .hero-actions .burger:hover,
html[data-theme="normal"] .hero-actions .burger:focus-visible{background:#1f7d57!important}
html[data-theme="octobre-rose"] .hero-actions .burger{background:#6b1743!important;color:#fff!important}
html[data-theme="octobre-rose"] .hero-actions .burger:hover,
html[data-theme="octobre-rose"] .hero-actions .burger:focus-visible{background:#842052!important}
html[data-theme="movember"] .hero-actions .burger{background:#17495f!important;color:#fff!important}
html[data-theme="movember"] .hero-actions .burger:hover,
html[data-theme="movember"] .hero-actions .burger:focus-visible{background:#1e5d78!important}


/* V108.24 — NOËL : scintillement indépendant des guirlandes */
.nf-layer{display:none}
html.nf-active .site > :is(.hero,.module,.detail-grid,.join-us,.footer){position:relative;isolation:isolate}
html.nf-active .site > :is(.hero,.module,.detail-grid,.join-us,.footer) > .nf-layer{
  display:block;position:absolute;inset:-10px;z-index:42;pointer-events:none;overflow:hidden;border-radius:inherit
}
html.nf-active .nf-twinkle{
  position:absolute;width:8px;height:8px;border-radius:50%;opacity:.18;
  background:#fff7b0;
  box-shadow:0 0 4px #fff,0 0 9px #ffd33d,0 0 15px rgba(255,72,32,.9);
  animation:nfTwinkle var(--dur,2.6s) var(--d,0s) infinite ease-in-out
}
html.nf-active .nf-c1{background:#ff3b30;box-shadow:0 0 4px #fff,0 0 9px #ff3b30,0 0 16px rgba(255,59,48,.9)}
html.nf-active .nf-c2{background:#39ff72;box-shadow:0 0 4px #fff,0 0 9px #39ff72,0 0 16px rgba(57,255,114,.85)}
html.nf-active .nf-c3{background:#55b9ff;box-shadow:0 0 4px #fff,0 0 9px #55b9ff,0 0 16px rgba(85,185,255,.85)}
html.nf-active .nf-top{top:8px;left:var(--p)}
html.nf-active .nf-bottom{bottom:8px;left:var(--p)}
html.nf-active .nf-left{left:8px;top:var(--p)}
html.nf-active .nf-right{right:8px;top:var(--p)}
@keyframes nfTwinkle{
  0%,100%{opacity:.14;transform:scale(.65);filter:brightness(.8)}
  18%{opacity:.95;transform:scale(1.35);filter:brightness(1.6)}
  33%{opacity:.30;transform:scale(.82);filter:brightness(1)}
  61%{opacity:.72;transform:scale(1.08);filter:brightness(1.3)}
  77%{opacity:.20;transform:scale(.72);filter:brightness(.9)}
}
@media(max-width:760px){
  html.nf-active .site > :is(.hero,.module,.detail-grid,.join-us,.footer) > .nf-layer{inset:-3px}
  html.nf-active .nf-twinkle{width:5px;height:5px}
  html.nf-active .nf-top{top:3px} html.nf-active .nf-bottom{bottom:3px} html.nf-active .nf-left{left:3px} html.nf-active .nf-right{right:3px}
}
@media(prefers-reduced-motion:reduce){html.nf-active .nf-twinkle{animation:none;opacity:.65}}

/* V108.35 — Halloween V2 modulaire, additif et sans impact sur le layout */
.h35-layer{display:none}
html.h35-active .site > :is(.hero,.module,.detail-grid,.join-us,.footer){position:relative;isolation:isolate}
html.h35-active .h35-layer{display:block;position:absolute;inset:0;z-index:40;pointer-events:none;overflow:visible;border:1.5px solid rgba(255,122,0,.82);border-radius:inherit;box-shadow:inset 0 0 12px rgba(255,104,0,.12)}
html.h35-active .h35-edge{position:absolute;inset:3px;border-radius:inherit;box-shadow:0 0 10px rgba(255,116,0,.18);opacity:.65}
html.h35-active .h35-corner{position:absolute;display:block;pointer-events:none;filter:drop-shadow(0 2px 4px rgba(0,0,0,.32));}
html.h35-active .h35-corner img{display:block;width:100%;height:auto;pointer-events:none;animation:h35CandleImage 2.7s ease-in-out infinite alternate}
html.h35-active .h35-tl{left:-8px;top:-7px;width:122px}
html.h35-active .h35-tr{right:-8px;top:-7px;width:122px}
html.h35-active .h35-bl{left:-8px;bottom:-7px;width:116px}
html.h35-active .h35-br{right:-8px;bottom:-7px;width:116px}
html.h35-active .h35-source{position:absolute;width:18px;height:18px;border-radius:50%;background:rgba(255,151,35,.28);filter:blur(7px);box-shadow:0 0 14px rgba(255,109,0,.9),0 0 28px rgba(255,62,0,.45);animation:h35Flame 1.9s ease-in-out infinite alternate}
html.h35-active .h35-source-b{animation-duration:2.35s;animation-delay:.55s}
html.h35-active .h35-tl .h35-source-a{left:31%;top:18%}.h35-active .h35-tl .h35-source-b{left:22%;top:50%}
html.h35-active .h35-tr .h35-source-a{right:19%;top:43%}.h35-active .h35-tr .h35-source-b{right:35%;top:70%}
html.h35-active .h35-bl .h35-source-a{left:22%;bottom:14%}.h35-active .h35-bl .h35-source-b{left:38%;bottom:42%}
html.h35-active .h35-br .h35-source-a{right:20%;bottom:16%}.h35-active .h35-br .h35-source-b{right:36%;bottom:42%}
@keyframes h35Flame{0%{opacity:.42;transform:scale(.82)}45%{opacity:.9;transform:scale(1.05)}100%{opacity:.62;transform:scale(.94)}}
@keyframes h35CandleImage{0%{filter:brightness(.95) saturate(1)}50%{filter:brightness(1.06) saturate(1.04)}100%{filter:brightness(1.0) saturate(1.02)}}
/* Header : décor assumé, centre totalement libre */
html.h35-active .site > .hero > .h35-layer .h35-corner{width:138px}
html.h35-active .site > .hero > .h35-layer .h35-bl,
html.h35-active .site > .hero > .h35-layer .h35-br{width:132px}
/* Modules : petits coins rejetés vers l’extérieur, jamais de décor central */
html.h35-active .site > :is(.module,.detail-grid,.join-us) > .h35-layer .h35-corner{width:62px;opacity:.98}
html.h35-active .site > :is(.module,.detail-grid,.join-us) > .h35-layer .h35-tl{left:-13px;top:-10px}
html.h35-active .site > :is(.module,.detail-grid,.join-us) > .h35-layer .h35-tr{right:-13px;top:-10px}
html.h35-active .site > :is(.module,.detail-grid,.join-us) > .h35-layer .h35-bl{left:-13px;bottom:-10px}
html.h35-active .site > :is(.module,.detail-grid,.join-us) > .h35-layer .h35-br{right:-13px;bottom:-10px}
html.h35-active .site > :is(.module,.detail-grid,.join-us) > .h35-layer .h35-source{width:10px;height:10px;filter:blur(5px)}
/* Footer encore plus discret */
html.h35-active .site > .footer > .h35-layer .h35-corner{width:70px}
@media(max-width:900px){
 html.h35-active .site > .hero > .h35-layer .h35-corner{width:96px}
 html.h35-active .site > :is(.module,.detail-grid,.join-us) > .h35-layer .h35-corner{width:48px}
 html.h35-active .site > .footer > .h35-layer .h35-corner{width:54px}
}
@media(max-width:560px){
 html.h35-active .site > .hero > .h35-layer .h35-corner{width:66px}
 html.h35-active .site > .hero > .h35-layer .h35-bl,
 html.h35-active .site > .hero > .h35-layer .h35-br{display:none}
 html.h35-active .site > :is(.module,.detail-grid,.join-us) > .h35-layer .h35-corner{width:36px}
 html.h35-active .site > :is(.module,.detail-grid,.join-us) > .h35-layer .h35-bl,
 html.h35-active .site > :is(.module,.detail-grid,.join-us) > .h35-layer .h35-br{display:none}
 html.h35-active .site > .footer > .h35-layer .h35-corner{width:38px}
 html.h35-active .h35-source{animation-duration:2.8s}
}
@media(prefers-reduced-motion:reduce){html.h35-active .h35-source,html.h35-active .h35-corner img{animation:none!important}}

/* V108.36 — Halloween : couverture complète des éléments communs hérités */
html[data-theme="halloween"]{
  --flash:#ff7900;
  --cbhb-accent:#ff7900;
  --cbhb-bg1:#241006;
  --cbhb-bg2:#8d3a09;
  --cbhb-dark:#110803;
}
html[data-theme="halloween"] .drawer{
  background:linear-gradient(160deg,#160903,#321305)!important;
  border-left-color:rgba(255,121,0,.48)!important;
  box-shadow:-20px 0 50px rgba(0,0,0,.62)!important;
}
html[data-theme="halloween"] .drawer a:nth-of-type(odd){color:#fff!important}
html[data-theme="halloween"] .drawer a:nth-of-type(even){color:#ff8a00!important}
html[data-theme="halloween"] .drawer a:hover,
html[data-theme="halloween"] .drawer a:focus-visible{
  background:#6f2b08!important;
  color:#fff!important;
}
html[data-theme="halloween"] .drawer .close{color:#fff!important}
html[data-theme="halloween"] .hero-actions button,
html[data-theme="halloween"] .hero-actions .burger{
  background:#6b2c06!important;
  color:#fff!important;
}
html[data-theme="halloween"] .hero-actions .burger:hover,
html[data-theme="halloween"] .hero-actions .burger:focus-visible{
  background:#8d3a09!important;
}
html[data-theme="halloween"] .hero{
  box-shadow:inset 0 -4px 0 #ff7900!important;
}
html[data-theme="halloween"] .module-title:focus-visible{
  outline-color:#ff7900!important;
}
html[data-theme="halloween"] .footer-rule,
html[data-theme="halloween"] .institution-sep{
  background:rgba(255,121,0,.28)!important;
}
html[data-theme="halloween"] .footer-brand i,
html[data-theme="halloween"] .module-title h2 em,
html[data-theme="halloween"] .hero-copy h1 em,
html[data-theme="halloween"] .news-card span{
  color:#ff7900!important;
}


/* V108.37 — page Mentions légales : bloc unique */
.legal-page{margin-top:24px}
.legal-block{height:auto!important;min-height:0!important;padding:0!important;overflow:hidden}
.legal-content{padding:34px 42px 38px;color:#15241c;line-height:1.58}
.legal-content h2{margin:28px 0 8px;color:#06251e;font-size:24px;line-height:1.2}
.legal-content h2:first-child{margin-top:0}
.legal-content p{margin:0 0 12px;color:#263a30;font-size:16px}
.legal-content a{color:#075a34;text-decoration:underline;font-weight:800}
.legal-update{margin-top:30px!important;padding-top:18px;border-top:1px solid #dce7df}
html[data-theme="octobre-rose"] .legal-content h2,html[data-theme="octobre-rose"] .legal-content a{color:#d41473!important}
html[data-theme="movember"] .legal-content h2,html[data-theme="movember"] .legal-content a{color:#138ecf!important}
html[data-theme="noel"] .legal-content h2,html[data-theme="noel"] .legal-content a{color:#8b2424!important}
html[data-theme="halloween"] .legal-content h2,html[data-theme="halloween"] .legal-content a{color:#c85a00!important}
@media(max-width:700px){.legal-content{padding:22px 18px 26px}.legal-content h2{font-size:20px;margin-top:24px}.legal-content p{font-size:15px}}


/* V108.38 — Nouvel An : noir / vert CBHB / or, habillage additif et réversible */
html[data-theme="nouvel-an"] body{background:linear-gradient(135deg,#050706 0%,#0c1710 48%,#183f2c 100%)!important}
html[data-theme="nouvel-an"] :is(.hero,.module-title,.footer){background:linear-gradient(105deg,#050706 0%,#11130d 58%,#1a4c31 100%)!important}
html[data-theme="nouvel-an"] .hero{border-bottom-color:#f4cc62!important}
html[data-theme="nouvel-an"] :is(.hero-copy em,.module-title em,.footer-brand i,.news-card span){color:#f4cc62!important}
html[data-theme="nouvel-an"] .carousel-dots button.active{background:#f4cc62!important}
html[data-theme="nouvel-an"] .hero-actions .burger{background:#1b4d32!important;color:#fff!important;box-shadow:0 0 0 2px rgba(244,204,98,.28),0 0 20px rgba(244,204,98,.12)!important}
html[data-theme="nouvel-an"] .hero-actions .burger:hover,
html[data-theme="nouvel-an"] .hero-actions .burger:focus-visible{background:#245f40!important;box-shadow:0 0 0 2px rgba(244,204,98,.48),0 0 24px rgba(244,204,98,.22)!important}
html[data-theme="nouvel-an"] .drawer{background:linear-gradient(160deg,#050706,#102c1e)!important;border-left-color:rgba(244,204,98,.42)!important}
html[data-theme="nouvel-an"] .drawer a:nth-of-type(odd){color:#fff!important}
html[data-theme="nouvel-an"] .drawer a:nth-of-type(even){color:#f4cc62!important}
html[data-theme="nouvel-an"] .drawer a:hover,
html[data-theme="nouvel-an"] .drawer a:focus-visible{background:#1a4c31!important}
html[data-theme="nouvel-an"] :is(.team-card h2,.detail-back a,.shop-home-button,.news-card,.carousel-arrow,.registration-submit,.manager-card button,.member-card-head,.account-panel,.role-selector-shell,.admin-nav-btn.active,.role-workspace-head,.role-workspace section>h3,.team-fdme-link a,.fdme-back,.fdme-external,.partners-arrow,.referee-recruit .button-link,.member-card-modern input[type="file"]::file-selector-button,.cbhb-theme-demo-buttons button){background:#14120b!important;color:#fff!important}
html[data-theme="nouvel-an"] :is(.live-match-date span,.live-team,.event-public-date,.public-profile-card strong,.training-public-row span,.result-meta-v39 span,.manual-fallback summary,.form-status,.form-feedback.ok){color:#b98c1f!important}
html[data-theme="nouvel-an"] :is(.result-club.winner,.result-team-v39.winner,.standings-table .cbhb-standing td,.auto-category-card,.pending-roles-card){background:#fff8df!important;border-color:#e8d18c!important;color:#9b7216!important}
html[data-theme="nouvel-an"] :is(.result-club.winner b,.result-team-v39.winner b,.standings-table .cbhb-standing td,.auto-category-card strong,.auto-category-card span,.pending-roles-card strong,.pending-roles-card span){color:#9b7216!important}
html[data-theme="nouvel-an"] .standings-table th{background:#14120b!important;color:#fff!important}
html[data-theme="nouvel-an"] .match-logo-fallback{background:#1a4c31!important;color:#fff!important}
html[data-theme="nouvel-an"] .first-manager-card{background:linear-gradient(135deg,#050706,#1a4c31)!important;border-color:#f4cc62!important}
html[data-theme="nouvel-an"] .first-manager-card button{background:#f4cc62!important;color:#14120b!important}
html.ny-active .site > :is(.hero,.module,.detail-grid,.join-us,.footer){position:relative;isolation:isolate}
.ny-layer{display:none}
html.ny-active .ny-layer{display:block;position:absolute;inset:0;pointer-events:none;z-index:9;overflow:hidden;border-radius:inherit}
html.ny-active .ny-edge{position:absolute;left:14px;right:14px;top:10px;height:1px;background:linear-gradient(90deg,transparent,rgba(244,204,98,.3),#f4cc62,rgba(114,255,0,.28),transparent);opacity:.9}
html.ny-active .ny-spark{position:absolute;width:5px;height:5px;border-radius:50%;background:#f4cc62;box-shadow:0 0 7px rgba(244,204,98,.95),0 0 14px rgba(244,204,98,.45);opacity:.35;animation:nySpark var(--dur,3.2s) ease-in-out infinite;animation-delay:var(--delay,0s)}
html.ny-active .ny-spark.ny-green{background:#72ff00;box-shadow:0 0 7px rgba(114,255,0,.72),0 0 13px rgba(114,255,0,.3)}
html.ny-active .ny-confetti{position:absolute;width:3px;height:13px;border-radius:2px;background:#f4cc62;opacity:.48;transform:rotate(var(--rot,20deg));animation:nyFloat var(--dur,5.5s) ease-in-out infinite;animation-delay:var(--delay,0s)}
html.ny-active .ny-confetti.ny-green{background:#3cbf69}
@keyframes nySpark{0%,100%{opacity:.22;transform:scale(.75)}45%{opacity:.95;transform:scale(1.18)}60%{opacity:.45;transform:scale(.92)}}
@keyframes nyFloat{0%,100%{transform:translateY(0) rotate(var(--rot,20deg));opacity:.25}50%{transform:translateY(8px) rotate(calc(var(--rot,20deg) + 12deg));opacity:.65}}
html.ny-active .site > .module .ny-confetti:nth-of-type(n/**/+7),html.ny-active .site > .detail-grid .ny-confetti:nth-of-type(n/**/+7){display:none}
@media(max-width:700px){
 html.ny-active .ny-edge{left:8px;right:8px;top:6px;opacity:.68}
 html.ny-active .ny-spark{width:4px;height:4px;box-shadow:0 0 5px rgba(244,204,98,.8)}
 html.ny-active .ny-confetti:nth-of-type(n/**/+5){display:none!important}
}
@media(prefers-reduced-motion:reduce){html.ny-active .ny-spark,html.ny-active .ny-confetti{animation:none!important;opacity:.45}}

/* V108.40 — accueil : illustration plus présente, sans modifier le layout */

@media(max-width:700px){
  
}


/* V108.41 — accueil : illustration ancrée en bas à droite */

@media(max-width:700px){
  
}


/* V108.42 — accueil : illustration encore plus grande, ancrée bas-droite */

@media(max-width:700px){
  
}

/* V108.43 — thème Normal : cartes Équipes raccordées au vert validé */
html[data-theme="normal"] .team-card h2,
html[data-theme="normal"] .home-teams-block .team-card h2{
  background:#176a49!important;
  color:#fff!important;
}
html[data-theme="normal"] .team-card-link:hover .team-card h2,
html[data-theme="normal"] .team-card-link:focus-visible .team-card h2{
  background:#1f7d57!important;
}


/* V108.49 — cache bust logo Noël habillé : aucun changement de layout */


/* V108.50 — Noël : macaron taille constante + décor séparé derrière */
html[data-theme="noel"] .site > .hero::before{
  content:"";
  position:absolute;
  left:10px;
  top:50%;
  width:255px;
  height:300px;
  transform:translateY(-50%);
  background:url("assets/noel-logo-decor-v10850.png") center/contain no-repeat;
  pointer-events:none;
  z-index:8;
}
html[data-theme="noel"] .club-logo{
  left:54px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  width:160px!important;
  height:160px!important;
  object-fit:contain!important;
  z-index:10!important;
}
@media(max-width:900px){
  html[data-theme="noel"] .site > .hero::before{
    left:3px;
    width:170px;
    height:200px;
  }
  html[data-theme="noel"] .club-logo{
    left:22px!important;
    width:104px!important;
    height:104px!important;
  }
}
@media(max-width:560px){
  html[data-theme="noel"] .site > .hero::before{
    left:0;
    width:116px;
    height:136px;
  }
  html[data-theme="noel"] .club-logo{
    left:14px!important;
    width:70px!important;
    height:70px!important;
  }
}


/* V108.51 — Noël : logo validé unique, sans ancien macaron rouge ni décor doublé */
html[data-theme="noel"] .site > .hero::before{display:none!important;content:none!important;background:none!important;}
html[data-theme="noel"] .club-logo{
  left:8px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  width:270px!important;
  height:auto!important;
  max-height:330px!important;
  object-fit:contain!important;
  object-position:center!important;
  z-index:10!important;
}
@media(max-width:900px){
  html[data-theme="noel"] .club-logo{left:2px!important;width:176px!important;max-height:220px!important;}
}
@media(max-width:560px){
  html[data-theme="noel"] .club-logo{left:-2px!important;width:118px!important;max-height:148px!important;}
}

/* V108.53 — Règles globales header : texte toujours au premier plan */
.hero-copy,
.team-detail-hero .hero-copy,
.member-role-hero .hero-copy{
  z-index:50!important;
}
.hero-copy h1,
.hero-copy p{
  position:relative;
  z-index:51!important;
}

/* V108.53 — Taille visuelle constante du macaron selon le thème */
/* Octobre Rose : le fichier contient une zone thématique sous le macaron,
   on agrandit donc son conteneur sans modifier le macaron lui-même. */
html[data-theme="octobre-rose"] .club-logo{
  left:50px!important;
  width:142px!important;
  height:210px!important;
  object-fit:contain!important;
  object-position:center!important;
}
/* Movember : même principe, compensation de l'ornement sous le macaron. */
html[data-theme="movember"] .club-logo{
  left:51px!important;
  width:166px!important;
  height:200px!important;
  object-fit:contain!important;
  object-position:center!important;
}
@media(max-width:900px){
  html[data-theme="octobre-rose"] .club-logo{
    left:19px!important;
    width:93px!important;
    height:137px!important;
  }
  html[data-theme="movember"] .club-logo{
    left:19px!important;
    width:108px!important;
    height:130px!important;
  }
}
@media(max-width:560px){
  html[data-theme="octobre-rose"] .club-logo{
    left:10px!important;
    width:63px!important;
    height:92px!important;
  }
  html[data-theme="movember"] .club-logo{
    left:9px!important;
    width:73px!important;
    height:88px!important;
  }
}


/* V108.58 — Habillages riches de logos + harmonisation visuelle des thèmes */
html[data-theme="normal"]{
  --cbhb-button-dark:#0c4b34;
  --cbhb-button-soft:#dff4e8;
  --cbhb-accent-soft-bg:#eef8f3;
  --cbhb-accent-soft-border:#b8dbc8;
  --cbhb-block-border:rgba(114,255,0,.24);
  --cbhb-block-shadow:rgba(8,59,41,.18);
}
html[data-theme="hiver"]{
  --cbhb-button-dark:#0d4466;
  --cbhb-button-soft:#e6f6ff;
  --cbhb-accent-soft-bg:#eef9ff;
  --cbhb-accent-soft-border:#bfe7fb;
  --cbhb-block-border:rgba(142,216,255,.34);
  --cbhb-block-shadow:rgba(6,29,49,.22);
}
html[data-theme="nouvel-an"]{
  --cbhb-block-border:rgba(244,204,98,.34);
  --cbhb-block-shadow:rgba(5,7,6,.28);
}
html[data-theme="saint-valentin"]{
  --cbhb-accent-strong:#de2f67;
  --cbhb-button-dark:#5f1730;
  --cbhb-button-soft:#ffe5ef;
  --cbhb-accent-soft-bg:#fff0f6;
  --cbhb-accent-soft-border:#f6b8cf;
  --cbhb-block-border:rgba(255,79,130,.34);
  --cbhb-block-shadow:rgba(39,8,18,.22);
}
html[data-theme="printemps"]{
  --cbhb-accent-strong:#f04d91;
  --cbhb-button-dark:#0f6243;
  --cbhb-button-soft:#eef9ec;
  --cbhb-accent-soft-bg:#f4fff2;
  --cbhb-accent-soft-border:#c7e6b9;
  --cbhb-block-border:rgba(255,121,168,.28);
  --cbhb-block-shadow:rgba(7,54,41,.18);
}
html[data-theme="paques"]{
  --cbhb-accent-strong:#de6ba6;
  --cbhb-button-dark:#1d6671;
  --cbhb-button-soft:#eefbf9;
  --cbhb-accent-soft-bg:#fff5fb;
  --cbhb-accent-soft-border:#f3c6e0;
  --cbhb-block-border:rgba(243,180,212,.34);
  --cbhb-block-shadow:rgba(23,68,88,.2);
}
html[data-theme="ete"]{
  --cbhb-accent-strong:#f0bf22;
  --cbhb-button-dark:#086080;
  --cbhb-button-soft:#e7fff6;
  --cbhb-accent-soft-bg:#fff9e6;
  --cbhb-accent-soft-border:#f4e19d;
  --cbhb-block-border:rgba(255,211,79,.34);
  --cbhb-block-shadow:rgba(6,75,100,.2);
}
html[data-theme="14-juillet"]{
  --cbhb-accent-strong:#ef3340;
  --cbhb-button-dark:#143675;
  --cbhb-button-soft:#eef3ff;
  --cbhb-accent-soft-bg:#fff2f3;
  --cbhb-accent-soft-border:#f1bcc1;
  --cbhb-block-border:rgba(239,51,64,.28);
  --cbhb-block-shadow:rgba(7,23,59,.24);
}
html[data-theme="automne"]{
  --cbhb-accent-strong:#dd6b14;
  --cbhb-button-dark:#6d2e10;
  --cbhb-button-soft:#fff1e8;
  --cbhb-accent-soft-bg:#fff5ee;
  --cbhb-accent-soft-border:#f4caad;
  --cbhb-block-border:rgba(255,138,36,.32);
  --cbhb-block-shadow:rgba(50,19,7,.22);
}
html[data-theme="halloween"]{
  --cbhb-accent-strong:#ff7900;
  --cbhb-button-dark:#311205;
  --cbhb-button-soft:#fff1e7;
  --cbhb-accent-soft-bg:#fff5eb;
  --cbhb-accent-soft-border:#f3c097;
  --cbhb-block-border:rgba(255,121,0,.34);
  --cbhb-block-shadow:rgba(17,8,3,.24);
}
html[data-theme="octobre-rose"]{
  --cbhb-block-border:rgba(255,79,163,.34);
  --cbhb-block-shadow:rgba(42,0,23,.22);
}
html[data-theme="movember"]{
  --cbhb-block-border:rgba(77,199,255,.34);
  --cbhb-block-shadow:rgba(7,25,35,.22);
}
html[data-theme="noel"]{
  --cbhb-accent-strong:#d1a52e;
  --cbhb-button-dark:#4b1212;
  --cbhb-button-soft:#fff7ef;
  --cbhb-accent-soft-bg:#fff7ea;
  --cbhb-accent-soft-border:#f0d59c;
  --cbhb-block-border:rgba(244,211,94,.32);
  --cbhb-block-shadow:rgba(33,7,7,.24);
}

html[data-theme] :is(.hero-actions .burger,.team-card h2,.detail-back a,.shop-home-button,.news-card,.carousel-arrow,.registration-submit,.manager-card button,.member-card-head,.account-panel,.role-selector-shell,.admin-nav-btn.active,.role-workspace-head,.role-workspace section>h3,.team-fdme-link a,.fdme-back,.fdme-external,.partners-arrow,.referee-recruit .button-link,.member-card-modern input[type="file"]::file-selector-button,.cbhb-theme-demo-buttons button,.cbhb-form button,.competition-nav button,.login,.close){
  background:var(--cbhb-button-dark)!important;
  color:#fff!important;
}
html[data-theme] .hero-actions .burger{
  box-shadow:0 0 0 2px color-mix(in srgb, var(--cbhb-accent) 28%, transparent),0 0 24px color-mix(in srgb, var(--cbhb-accent) 18%, transparent)!important;
}
html[data-theme] .hero-actions .burger:hover,
html[data-theme] .hero-actions .burger:focus-visible,
html[data-theme] :is(.team-card h2,.detail-back a,.shop-home-button,.registration-submit,.manager-card button,.team-fdme-link a,.fdme-back,.fdme-external,.partners-arrow,.cbhb-form button,.competition-nav button,.login,.close):hover,
html[data-theme] :is(.detail-back a,.shop-home-button,.registration-submit,.manager-card button,.team-fdme-link a,.fdme-back,.fdme-external,.partners-arrow,.cbhb-form button,.competition-nav button,.login,.close):focus-visible{
  filter:brightness(1.08);
}
html[data-theme] .drawer{
  background:linear-gradient(160deg,var(--cbhb-dark),color-mix(in srgb, var(--cbhb-bg2) 58%, #000))!important;
  border-left:1px solid color-mix(in srgb, var(--cbhb-accent) 40%, transparent)!important;
}
html[data-theme] .drawer a:nth-of-type(odd){color:#fff!important}
html[data-theme] .drawer a:nth-of-type(even){color:var(--cbhb-accent)!important}
html[data-theme] .drawer a:hover,
html[data-theme] .drawer a:focus-visible{background:color-mix(in srgb, var(--cbhb-accent) 14%, var(--cbhb-dark))!important}

html[data-theme] :is(.site > .hero,.site > .module,.site > .detail-grid,.site > .join-us,.site > .footer,.module-title,.white-block,.news-carousel-block,.partners-carousel-block,.partners-page-carousel,.partner-card,.event-public-card,.public-profile-card,.team-card,.detail-card,.join-card,.account-panel,.registration-card,.manager-card,.first-manager-card,.role-workspace section,.member-card-modern,.results-grid .result-card,.result-card,.shop-card,.history-season,.legal-content){
  border-color:var(--cbhb-block-border)!important;
  box-shadow:0 10px 28px var(--cbhb-block-shadow), inset 0 0 0 1px color-mix(in srgb, var(--cbhb-accent) 10%, transparent)!important;
}
html[data-theme] :is(.module-title,.site > .hero,.site > .footer){
  box-shadow:0 12px 30px var(--cbhb-block-shadow), inset 0 0 0 1px color-mix(in srgb, var(--cbhb-accent) 18%, transparent)!important;
}
html[data-theme] :is(.white-block,.news-carousel-block,.partners-carousel-block,.partners-page-carousel,.partner-card,.event-public-card,.public-profile-card,.team-card,.detail-card,.join-card,.account-panel,.registration-card,.manager-card,.first-manager-card,.role-workspace section,.member-card-modern,.results-grid .result-card,.result-card,.shop-card,.history-season,.legal-content){
  background-image:linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,0));
}
html[data-theme] :is(.result-club.winner,.result-team-v39.winner,.standings-table .cbhb-standing td,.auto-category-card,.pending-roles-card){
  background:var(--cbhb-accent-soft-bg)!important;
  border-color:var(--cbhb-accent-soft-border)!important;
}
html[data-theme] :is(.result-club.winner b,.result-team-v39.winner b,.standings-table .cbhb-standing td,.auto-category-card strong,.auto-category-card span,.pending-roles-card strong,.pending-roles-card span,.live-match-date span,.live-team,.event-public-date,.public-profile-card strong,.training-public-row span,.result-meta-v39 span,.manual-fallback summary,.form-status,.form-feedback.ok){
  color:var(--cbhb-accent-strong,var(--cbhb-accent))!important;
}
html[data-theme] .standings-table th{background:var(--cbhb-button-dark)!important;color:#fff!important}
html[data-theme] .match-logo-fallback{background:var(--cbhb-button-dark)!important;color:#fff!important}
html[data-theme] .carousel-dots button.active,
html[data-theme] .partner-dots button.active,
html[data-theme] .news-dots button.active{background:var(--cbhb-accent)!important}
html[data-theme] :is(.first-manager-card button,.member-card-modern .primary-action,.cbhb-form .danger-action){background:var(--cbhb-accent)!important;color:var(--cbhb-button-dark)!important}

/* Taille harmonisée des logos à habillage riche, référence Noël validé */
html[data-theme="hiver"] .club-logo,
html[data-theme="nouvel-an"] .club-logo,
html[data-theme="saint-valentin"] .club-logo,
html[data-theme="printemps"] .club-logo,
html[data-theme="paques"] .club-logo,
html[data-theme="ete"] .club-logo,
html[data-theme="14-juillet"] .club-logo,
html[data-theme="automne"] .club-logo,
html[data-theme="halloween"] .club-logo,
html[data-theme="noel"] .club-logo{
  left:8px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  width:270px!important;
  height:auto!important;
  max-height:330px!important;
  object-fit:contain!important;
  object-position:center!important;
  z-index:10!important;
}
@media(max-width:900px){
  html[data-theme="hiver"] .club-logo,
  html[data-theme="nouvel-an"] .club-logo,
  html[data-theme="saint-valentin"] .club-logo,
  html[data-theme="printemps"] .club-logo,
  html[data-theme="paques"] .club-logo,
  html[data-theme="ete"] .club-logo,
  html[data-theme="14-juillet"] .club-logo,
  html[data-theme="automne"] .club-logo,
  html[data-theme="halloween"] .club-logo,
  html[data-theme="noel"] .club-logo{left:2px!important;width:176px!important;max-height:220px!important;}
}
@media(max-width:560px){
  html[data-theme="hiver"] .club-logo,
  html[data-theme="nouvel-an"] .club-logo,
  html[data-theme="saint-valentin"] .club-logo,
  html[data-theme="printemps"] .club-logo,
  html[data-theme="paques"] .club-logo,
  html[data-theme="ete"] .club-logo,
  html[data-theme="14-juillet"] .club-logo,
  html[data-theme="automne"] .club-logo,
  html[data-theme="halloween"] .club-logo,
  html[data-theme="noel"] .club-logo{left:-2px!important;width:118px!important;max-height:148px!important;}
}

/* Logo normal légèrement réhaussé pour se rapprocher du gabarit de référence */
html[data-theme="normal"] .club-logo{
  left:42px!important;
  width:182px!important;
  height:182px!important;
}
@media(max-width:900px){
  html[data-theme="normal"] .club-logo{left:16px!important;width:118px!important;height:118px!important;}
}
@media(max-width:560px){
  html[data-theme="normal"] .club-logo{left:8px!important;width:80px!important;height:80px!important;}
}


/* V108.73 — PARTENAIRE À LA UNE : retour strict à la charte native du site */

.partner-feature-module{margin-top:24px}
.partner-feature-title{margin:0}
.partner-feature-block{
  display:grid;
  grid-template-columns:minmax(220px,32%) minmax(0,1fr);
  align-items:center;
  gap:32px;
  padding:28px 34px;
  box-sizing:border-box;
  overflow:hidden;
}
.partner-feature-logo{height:180px;display:grid;place-items:center;min-width:0}
.partner-feature-logo img{width:100%;height:100%;object-fit:contain;display:block}
.partner-feature-copy{min-width:0;color:#17362d}
.partner-feature-copy>span{display:block;font-size:13px;font-weight:950;letter-spacing:.04em;color:#0c5138;margin-bottom:4px}
.partner-feature-copy h3{font-size:36px;line-height:1;margin:0 0 10px;color:#073126}
.partner-feature-copy p{font-size:17px;line-height:1.45;margin:0 0 18px;color:#36564c}
.partner-feature-cta{display:inline-flex!important;align-items:center;justify-content:center;background:var(--cbhb-dark)!important;color:#fff!important;text-decoration:none!important;border-radius:10px;padding:12px 18px;font-weight:900}
@media(max-width:900px){
  .partner-feature-block{grid-template-columns:38% minmax(0,1fr);gap:20px;padding:22px 24px}
  .partner-feature-logo{height:150px}
  .partner-feature-copy h3{font-size:30px}
}
@media(max-width:600px){
  .partner-feature-block{grid-template-columns:1fr 1.35fr;gap:14px;padding:16px!important}
  .partner-feature-logo{height:120px}
  .partner-feature-copy>span{font-size:10px}
  .partner-feature-copy h3{font-size:22px;margin-bottom:6px}
  .partner-feature-copy p{font-size:13px;line-height:1.3;margin-bottom:10px}
  .partner-feature-cta{font-size:12px;padding:9px 11px}
}

.partner-member-demo-note{margin:12px 0 4px;padding:12px 14px;border-radius:12px;background:#eef8f3;border:1px solid #b8dbc8;color:#164b37}
.partner-logo-manager{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:20px}
.partner-logo-admin-card{background:#fff;border:1px solid #dce5df;border-radius:16px;padding:16px;display:grid;grid-template-rows:168px auto;gap:12px;box-shadow:0 8px 22px rgba(0,0,0,.08)}
.partner-logo-preview{position:relative;height:168px;border-radius:12px;background:#f7faf8;border:1px solid #edf1ef;display:grid;place-items:center;padding:12px}.partner-logo-preview img{width:100%;height:100%;object-fit:contain}.partner-logo-preview span{position:absolute;right:8px;top:8px;background:#72ff00;color:#073126;font-size:11px;font-weight:950;padding:5px 7px;border-radius:999px}
.partner-logo-admin-card h3{margin:0 0 10px;color:#073126}.partner-logo-admin-card>div:last-child{display:flex;flex-direction:column;gap:8px}.partner-logo-file{display:grid;gap:7px;font-weight:800;color:#264438;font-size:13px}.partner-logo-file input{width:100%}.partner-logo-admin-card button{border:0;border-radius:10px;background:#073126;color:#fff;font-weight:900;padding:11px 14px;cursor:pointer}.partner-logo-admin-card button:disabled{opacity:.58;cursor:not-allowed}.partner-logo-admin-card.is-example{border:2px solid #72ff00;box-shadow:0 8px 24px rgba(68,170,76,.14)}
@media(max-width:900px){.partner-showcase-block{grid-template-columns:1fr;grid-template-areas:"logo" "copy" "actions"}.partner-showcase-logo{height:180px;min-height:180px}.partner-logo-manager{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.partner-showcase-block{padding:18px!important;gap:16px}.partner-showcase-logo{height:145px;min-height:145px;padding:8px}.partner-showcase-copy h2{font-size:27px}.partner-logo-manager{grid-template-columns:1fr}.partner-logo-admin-card{grid-template-columns:110px minmax(0,1fr);grid-template-rows:auto;align-items:center}.partner-logo-preview{height:105px}.partner-logo-admin-card h3{font-size:16px}}

/* Sécurisation présentation : aucun nouvel habillage de cadre sur les thèmes non gelés. */
html[data-theme="nouvel-an"] :is(.site>.hero,.site>.module,.site>.detail-grid,.site>.join-us,.site>.footer),
html[data-theme="saint-valentin"] :is(.site>.hero,.site>.module,.site>.detail-grid,.site>.join-us,.site>.footer),
html[data-theme="printemps"] :is(.site>.hero,.site>.module,.site>.detail-grid,.site>.join-us,.site>.footer),
html[data-theme="paques"] :is(.site>.hero,.site>.module,.site>.detail-grid,.site>.join-us,.site>.footer),
html[data-theme="ete"] :is(.site>.hero,.site>.module,.site>.detail-grid,.site>.join-us,.site>.footer),
html[data-theme="14-juillet"] :is(.site>.hero,.site>.module,.site>.detail-grid,.site>.join-us,.site>.footer),
html[data-theme="automne"] :is(.site>.hero,.site>.module,.site>.detail-grid,.site>.join-us,.site>.footer){border-image:none!important;background-clip:border-box!important}


/* V108.71 — RESTAURATION HIVER V108.68 DANS VERSION PRESENTATION */
html[data-theme="hiver"] .site > .hero,
html[data-theme="hiver"] .site > .module,
html[data-theme="hiver"] .site > .detail-grid,
html[data-theme="hiver"] .site > .join-us,
html[data-theme="hiver"] .site > .footer{position:relative;isolation:isolate}

html[data-theme="hiver"] .site > .hero::after,
html[data-theme="hiver"] .site > .module::after,
html[data-theme="hiver"] .site > .detail-grid::after,
html[data-theme="hiver"] .site > .join-us::after,
html[data-theme="hiver"] .site > .footer::after{
 content:"";position:absolute;z-index:40;pointer-events:none;box-sizing:border-box;inset:-7px;
 border-style:solid;border-width:26px;border-image-source:url("assets/cadre-hiver-exterieur.png");
 border-image-slice:165;border-image-repeat:round;filter:drop-shadow(0 3px 5px rgba(2,35,65,.28));
}
html[data-theme="hiver"] .site > .hero::after,
html[data-theme="hiver"] .site > .footer::after{inset:-10px;border-width:34px}
html[data-theme="hiver"] :is(.white-block,.news-card,.team-card,.partner-card,.join-card,.event-card,.match-card,.result-card,.live-row,.role-card,.footer-top,.footer-bottom,.module-title)::after{border-image:none!important;background:none!important}

.wf-layer{display:none}
html.wf-active .site > :is(.hero,.module,.detail-grid,.join-us,.footer){position:relative;isolation:isolate}
html.wf-active .wf-layer{display:block;position:absolute;inset:0;z-index:39;pointer-events:none;overflow:hidden;border-radius:inherit}
html.wf-active .wf-flake{position:absolute;top:-12px;width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.9);box-shadow:0 0 7px rgba(180,230,255,.7);animation:wfFall var(--dur,7s) linear infinite;animation-delay:var(--delay,0s)}
@keyframes wfFall{0%{transform:translate3d(0,-12px,0);opacity:0}12%{opacity:.75}100%{transform:translate3d(var(--drift,12px),calc(100% + 24px),0);opacity:.12}}
@media(max-width:760px){
 html[data-theme="hiver"] .site > .hero::after,html[data-theme="hiver"] .site > .module::after,html[data-theme="hiver"] .site > .detail-grid::after,html[data-theme="hiver"] .site > .join-us::after,html[data-theme="hiver"] .site > .footer::after{inset:-3px;border-width:13px;border-image-slice:165;filter:none}
 html.wf-active .wf-flake:nth-child(n/**/+8){display:none}
}
@media(prefers-reduced-motion:reduce){html.wf-active .wf-flake{animation:none!important;opacity:.32}}


/* V108.74 — charte globale des actions : plus de vert foncé générique, couleurs liées au thème */
html[data-theme="normal"]{--cbhb-action-bg:#2f8f5b;--cbhb-action-hover:#3da66a;--cbhb-action-text:#fff;--cbhb-menu-bg1:#23794d;--cbhb-menu-bg2:#3a9258}
html[data-theme="octobre-rose"]{--cbhb-action-bg:#d41473;--cbhb-action-hover:#ed3188;--cbhb-action-text:#fff;--cbhb-menu-bg1:#8e2058;--cbhb-menu-bg2:#d41473}
html[data-theme="movember"]{--cbhb-action-bg:#138ecf;--cbhb-action-hover:#2aa7e8;--cbhb-action-text:#fff;--cbhb-menu-bg1:#176d94;--cbhb-menu-bg2:#138ecf}
html[data-theme="noel"]{--cbhb-action-bg:#a72d2d;--cbhb-action-hover:#c43b3b;--cbhb-action-text:#fff;--cbhb-menu-bg1:#7d2020;--cbhb-menu-bg2:#b63b3b}
html[data-theme="hiver"]{--cbhb-action-bg:#17699a;--cbhb-action-hover:#2787bd;--cbhb-action-text:#fff;--cbhb-menu-bg1:#135a86;--cbhb-menu-bg2:#2486bb}
html[data-theme="nouvel-an"]{--cbhb-action-bg:#d6a82d;--cbhb-action-hover:#f0c54f;--cbhb-action-text:#18140a;--cbhb-menu-bg1:#876a16;--cbhb-menu-bg2:#d6a82d}
html[data-theme="saint-valentin"]{--cbhb-action-bg:#de2f67;--cbhb-action-hover:#f04f82;--cbhb-action-text:#fff;--cbhb-menu-bg1:#aa244f;--cbhb-menu-bg2:#de2f67}
html[data-theme="printemps"]{--cbhb-action-bg:#4da85d;--cbhb-action-hover:#66bf73;--cbhb-action-text:#fff;--cbhb-menu-bg1:#378647;--cbhb-menu-bg2:#63b56d}
html[data-theme="paques"]{--cbhb-action-bg:#4f9e7b;--cbhb-action-hover:#67b993;--cbhb-action-text:#fff;--cbhb-menu-bg1:#397d63;--cbhb-menu-bg2:#69b58d}
html[data-theme="ete"]{--cbhb-action-bg:#12a978;--cbhb-action-hover:#20c28b;--cbhb-action-text:#fff;--cbhb-menu-bg1:#0b8361;--cbhb-menu-bg2:#12a978}
html[data-theme="14-juillet"]{--cbhb-action-bg:#ef3340;--cbhb-action-hover:#ff5260;--cbhb-action-text:#fff;--cbhb-menu-bg1:#244b9a;--cbhb-menu-bg2:#ef3340}
html[data-theme="automne"]{--cbhb-action-bg:#b85d1d;--cbhb-action-hover:#d3732f;--cbhb-action-text:#fff;--cbhb-menu-bg1:#8f4616;--cbhb-menu-bg2:#c66e2b}
html[data-theme="halloween"]{--cbhb-action-bg:#c85a00;--cbhb-action-hover:#e87112;--cbhb-action-text:#fff;--cbhb-menu-bg1:#8f3b00;--cbhb-menu-bg2:#d96508}

/* Tous les CTA et boutons principaux suivent désormais le thème actif. */
html[data-theme] :is(
  .join-card a,.join-card button,.button-link,.form-submit,.shop-home-button,
  .cbhb-form button,.registration-submit,.first-manager-card button,.manager-card button,
  .secondary-action,.compact-role-btn,.admin-nav-btn.active,.team-fdme-link a,.fdme-back,.fdme-external,
  .referee-recruit .button-link,.partner-feature-cta,.partner-logo-admin-card button,
  .competition-nav button,.login,.close,.theme-tool button,.hero-actions .burger
){
  background:var(--cbhb-action-bg)!important;
  color:var(--cbhb-action-text)!important;
  border-color:transparent!important;
  box-shadow:none!important;
}
html[data-theme] :is(
  .join-card a,.join-card button,.button-link,.form-submit,.shop-home-button,
  .cbhb-form button,.registration-submit,.first-manager-card button,.manager-card button,
  .secondary-action,.compact-role-btn,.admin-nav-btn.active,.team-fdme-link a,.fdme-back,.fdme-external,
  .referee-recruit .button-link,.partner-feature-cta,.partner-logo-admin-card button,
  .competition-nav button,.login,.close,.theme-tool button,.hero-actions .burger
):hover,
html[data-theme] :is(
  .join-card a,.join-card button,.button-link,.form-submit,.shop-home-button,
  .cbhb-form button,.registration-submit,.first-manager-card button,.manager-card button,
  .secondary-action,.compact-role-btn,.admin-nav-btn.active,.team-fdme-link a,.fdme-back,.fdme-external,
  .referee-recruit .button-link,.partner-feature-cta,.partner-logo-admin-card button,
  .competition-nav button,.login,.close,.theme-tool button,.hero-actions .burger
):focus-visible{
  background:var(--cbhb-action-hover)!important;
  color:var(--cbhb-action-text)!important;
}

/* Le menu n'utilise plus l'ancien vert foncé générique. */
html[data-theme] .drawer{
  background:linear-gradient(160deg,var(--cbhb-menu-bg1),var(--cbhb-menu-bg2))!important;
  border-left-color:color-mix(in srgb,var(--cbhb-action-bg) 60%,white)!important;
}
html[data-theme] .drawer a{color:#fff!important}
html[data-theme] .drawer a:nth-of-type(even){color:color-mix(in srgb,var(--cbhb-action-text) 76%,white)!important}
html[data-theme] .drawer a:hover,
html[data-theme] .drawer a:focus-visible{background:color-mix(in srgb,var(--cbhb-action-bg) 76%,white 24%)!important;color:#fff!important}

/* Les anciens panneaux d'action vert foncé deviennent eux aussi thématiques. */
html[data-theme] :is(.member-card-head,.dashboard-welcome,.role-workspace-head,.account-panel,.role-selector-shell){
  background:linear-gradient(110deg,var(--cbhb-menu-bg1),var(--cbhb-menu-bg2))!important;
  color:#fff!important;
}
html[data-theme] :is(.member-card-head,.dashboard-welcome,.role-workspace-head,.account-panel,.role-selector-shell) :is(h1,h2,h3,p,strong,span){
  color:#fff!important;
}


/* V108.75 — Galerie de démonstration “Nos plus beaux moments” */
.photo-demo{margin:0 0 22px;padding:0}
.photo-demo-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 14px}
.photo-demo-head strong{display:block;font-size:22px;line-height:1.1;color:#11251d}
.photo-demo-head small{display:block;margin-top:5px;color:#6c7771;font-weight:700}
.photo-demo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.photo-demo-tile{appearance:none;border:0;background:#eef2ef;border-radius:16px;overflow:hidden;aspect-ratio:4/3;padding:0;cursor:pointer;box-shadow:0 3px 14px rgba(0,0,0,.10);transition:transform .18s ease,box-shadow .18s ease}
.photo-demo-tile:hover,.photo-demo-tile:focus-visible{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.16)}
.photo-demo-tile img{display:block;width:100%;height:100%;object-fit:cover}
html[data-theme] .photo-demo-tile{outline:1px solid color-mix(in srgb,var(--cbhb-accent) 22%,transparent)}
@media(max-width:800px){.photo-demo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-demo-head strong{font-size:19px}}
@media(max-width:520px){.photo-demo-grid{gap:8px}.photo-demo-tile{border-radius:12px}.photo-demo-head{margin-bottom:10px}.photo-demo-head small{font-size:12px}}

/* V108.76 — Photos : lignes match/événement + carrousel horizontal */
.photo-public-block,.photo-home-block{height:auto!important;min-height:0!important;padding:18px!important;box-sizing:border-box}
.photo-event-row{background:#fff;border:1px solid color-mix(in srgb,var(--cbhb-accent) 20%,#dde6e1);border-radius:18px;padding:14px;margin:0 0 14px;box-shadow:0 5px 16px rgba(0,0,0,.07)}
.photo-event-row:last-child{margin-bottom:0}
.photo-event-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}
.photo-event-head strong{display:block;color:#102218;font-size:18px;line-height:1.15}
.photo-event-head small{display:block;color:#6b766f;margin-top:4px;font-weight:700}
.photo-row-controls{display:flex;gap:8px;flex:0 0 auto}
.photo-row-controls button{width:40px;height:40px;border:0;border-radius:50%;background:var(--cbhb-accent)!important;color:#fff!important;font-size:25px;font-weight:900;cursor:pointer;box-shadow:0 3px 10px rgba(0,0,0,.16)}
.photo-strip{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:2px 2px 5px}.photo-strip::-webkit-scrollbar{display:none}
.photo-strip-card{flex:0 0 clamp(180px,22vw,250px);aspect-ratio:4/3;border:0;border-radius:14px;overflow:hidden;background:#eef2ef;position:relative;scroll-snap-align:start;text-decoration:none;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#41524a;box-shadow:0 2px 10px rgba(0,0,0,.08)}
.photo-strip-card img{width:100%;height:100%;object-fit:cover;display:block}.photo-strip-card small{position:absolute;left:0;right:0;bottom:0;padding:7px 9px;background:linear-gradient(transparent,rgba(0,0,0,.72));color:#fff;text-align:left;font-weight:750}
.photo-strip-card.placeholder{background:linear-gradient(135deg,#f4f7f5,#e7eeea);border:1px dashed #cbd8d1;box-shadow:none}
.photo-placeholder-icon{font-size:34px;opacity:.55}.photo-strip-card.placeholder small{position:static;background:none;color:#6c7771;margin-top:8px;text-align:center}
.photo-event-row.compact{padding:12px}.photo-event-row.compact .photo-strip-card{flex-basis:clamp(155px,19vw,210px)}
@media(max-width:700px){.photo-public-block,.photo-home-block{padding:10px!important}.photo-event-row{padding:10px;border-radius:14px}.photo-event-head strong{font-size:16px}.photo-event-head small{font-size:12px}.photo-row-controls button{width:36px;height:36px;font-size:22px}.photo-strip{gap:9px}.photo-strip-card{flex-basis:72vw;max-width:260px}.photo-event-row.compact .photo-strip-card{flex-basis:64vw}}

/* V108.77 — accueil : carrousel d'albums ; page Photos : carrousels de photos par album */
.photo-home-block{padding:18px!important;min-height:0!important}
.photo-album-carousel{position:relative;display:flex;align-items:center;gap:12px}
.photo-album-track{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:4px 58px 8px}
.photo-album-track::-webkit-scrollbar{display:none}
.photo-album-card{flex:0 0 clamp(230px,24vw,310px);background:#fff;border:1px solid color-mix(in srgb,var(--cbhb-accent) 25%,#dfe7e3);border-radius:18px;overflow:hidden;text-decoration:none;color:#102218;scroll-snap-align:start;box-shadow:0 4px 14px rgba(0,0,0,.08);transition:transform .18s ease,box-shadow .18s ease}
.photo-album-card:hover,.photo-album-card:focus-visible{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.14)}
.photo-album-card-cover{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:#edf2ef}
.photo-album-card-cover.placeholder{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f5f7f6,#e7eeea);font-size:42px;color:#6b766f}
.photo-album-card-copy{padding:13px 14px 15px}
.photo-album-card-copy strong{display:block;font-size:17px;line-height:1.15;color:#102218}
.photo-album-card-copy small{display:block;margin-top:6px;color:#6b766f;font-weight:700}
.photo-album-nav{position:absolute;z-index:3;top:50%;transform:translateY(-50%);width:46px;height:46px;border:0;border-radius:50%;background:var(--cbhb-accent)!important;color:#fff!important;font-size:28px;font-weight:900;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.18)}
.photo-album-nav.prev{left:8px}.photo-album-nav.next{right:8px}
.photo-event-row.is-targeted{outline:3px solid color-mix(in srgb,var(--cbhb-accent) 55%,transparent);outline-offset:2px}
@media(max-width:700px){.photo-home-block{padding:10px!important}.photo-album-track{gap:10px;padding:4px 48px 6px}.photo-album-card{flex-basis:76vw;max-width:300px}.photo-album-nav{width:40px;height:40px;font-size:24px}.photo-album-nav.prev{left:4px}.photo-album-nav.next{right:4px}}

/* V108.79 — pages partenaires détaillées + mise en avant datée */
.partner-detail-hero{display:grid;grid-template-columns:minmax(180px,260px) 1fr;gap:28px;align-items:center;padding:28px}.partner-detail-logo{background:#fff;border:1px solid var(--cbhb-block-border);border-radius:22px;padding:24px;display:grid;place-items:center;min-height:220px}.partner-detail-logo img{max-width:100%;max-height:170px;object-fit:contain}.partner-detail-copy h2{margin:0 0 10px;font-size:clamp(2rem,4vw,3.4rem)}.partner-detail-copy p{font-size:1.05rem;line-height:1.6}.partner-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}.partner-services-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.partner-service-card{border:1px solid var(--cbhb-block-border);border-radius:18px;padding:18px;background:#fff;min-height:150px}.partner-service-card h3{margin:0 0 8px}.partner-photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.partner-photo-demo{aspect-ratio:4/3;border:1px dashed #c7d4ce;border-radius:18px;background:linear-gradient(135deg,#f6fbf8,#fff3f7);display:grid;place-items:center;text-align:center;padding:20px;color:#49645a}.partner-offer-public{border:1px solid #f0b4c9;border-radius:20px;padding:22px;background:linear-gradient(135deg,#fff,#fff3f7);position:relative;overflow:hidden}.partner-offer-public::after{content:"🌹";position:absolute;right:18px;bottom:8px;font-size:4rem;opacity:.18}.partner-offer-public .offer-dates{display:inline-flex;padding:6px 10px;border-radius:999px;background:#ffe2ec;color:#8d2146;font-weight:800;font-size:.86rem}.partner-offer-public .demo-warning{margin-top:10px;font-size:.86rem;color:#76515e}.partner-contact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.partner-contact-card{border:1px solid var(--cbhb-block-border);border-radius:18px;padding:16px;background:#fff}.partner-feature-block[data-featured-ready="true"]{display:grid}.partner-feature-meta{font-size:.82rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;margin-bottom:4px}.partner-feature-period{font-size:.82rem;opacity:.75;margin-top:8px}@media(max-width:900px){.partner-detail-hero,.partner-services-grid,.partner-contact-grid{grid-template-columns:1fr 1fr}.partner-photo-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.partner-detail-hero,.partner-services-grid,.partner-contact-grid,.partner-photo-grid{grid-template-columns:1fr}.partner-detail-logo{min-height:150px}.partner-detail-logo img{max-height:120px}.partner-actions .button-link{width:100%;text-align:center}}

/* V108.82: provenance sportive dans les cartes de matchs */
.cbhb-match-type{display:block;font-size:.70em;font-weight:650;line-height:1.2;letter-spacing:.015em;color:#68716d;margin-top:.3rem;white-space:normal;}

/* V108.83 — nature du match: droite de la date, juste avant l'équipe. */
.live-match-main>.cbhb-match-type{margin:0 0 2px;font-size:11px;line-height:1.15;font-weight:700;color:#60706b;white-space:nowrap;}
.live-match-date>.cbhb-match-type{display:none;}
.result-meta-v112>.cbhb-match-type{display:block;font-size:10px;line-height:1.15;font-weight:700;color:#60706b;margin:0;}
@media(max-width:700px){.live-match-main>.cbhb-match-type{margin:0 0 2px}}

/* V108.93 — Hierarchie visuelle des cartes, theme normal uniquement.
   Titres principaux fonces; informations temporelles vert foret contraste;
   categories vert profond; mentions secondaires gris ardoise.
   Aucune modification des autres themes ni des boutons / bandeaux. */
html[data-theme="normal"] .live-match-card .live-match-date,
html[data-theme="normal"] .live-match-card .live-match-date strong,
html[data-theme="normal"] .result-card .result-meta-v112 strong,
html[data-theme="normal"] .result-card .result-meta-v39 strong {color:#102218!important;}
html[data-theme="normal"] .live-match-card .live-match-date span,
html[data-theme="normal"] .result-card .result-meta-v112 span,
html[data-theme="normal"] .result-card .result-meta-v39 span,
html[data-theme="normal"] .event-public-card .event-public-date {color:#176444!important;}
html[data-theme="normal"] .live-match-card .live-match-main .live-team,
html[data-theme="normal"] .result-card .result-meta-v112 .result-team-name {color:#116342!important;}
html[data-theme="normal"] .live-match-card .live-match-main > .cbhb-match-type,
html[data-theme="normal"] .result-card .result-meta-v112 > .cbhb-match-type,
html[data-theme="normal"] .result-card .result-meta-v39 > .cbhb-match-type,
html[data-theme="normal"] .event-public-card .event-public-date small {color:#586b63!important;}
html[data-theme="normal"] .live-match-card .live-match-main strong,
html[data-theme="normal"] .live-match-card .fixture-board,
html[data-theme="normal"] .event-public-card h3,
html[data-theme="normal"] .event-public-card p,
html[data-theme="normal"] .event-public-card .event-place {color:#102218!important;}


/* V108.94 — dates d'événements : accent vert forêt, jamais vert fluo sur fond clair. */
html[data-theme="normal"] body .site .live-events-block .events-public-list .event-public-card .event-public-date,
html[data-theme="normal"] body .site .events-public-page .events-public-list .event-public-card .event-public-date,
html[data-theme="normal"] body .site [data-cbhb-events] .event-public-card .event-public-date {
  color:#176444 !important;
  -webkit-text-fill-color:#176444 !important;
}
html[data-theme="normal"] body .site [data-cbhb-events] .event-public-card .event-public-date small {
  color:#586b63 !important;
  -webkit-text-fill-color:#586b63 !important;
}

/* BETA: hero grand ecran -- image et composition dans la meme hauteur */
@media(min-width:1100px){
 .hero{height:clamp(350px,26vw,440px)}
 
 
 .hero-copy h1{font-size:clamp(46px,3.7vw,68px)}
 .hero-copy p{font-size:clamp(15px,1.35vw,24px)}
}
/* Labels textuels au-dessus des illustrations de navigation */
.footer-nav{flex-direction:column;gap:3px;min-width:0;text-align:center}
.footer-nav .footer-nav-label{display:block;font-weight:900;font-size:clamp(12px,1.12vw,17px);line-height:1.15;color:#fff;text-transform:uppercase;letter-spacing:.025em}
.footer-nav img{max-height:116px}
.footer-nav:focus-visible{outline:3px solid var(--flash);outline-offset:3px}
@media(max-width:700px){.footer-nav .footer-nav-label{font-size:12px}.footer-nav img{max-height:92px}}

/* V108.97 — Accueil : neutraliser les anciens zooms 1.46 / 1.32
   et garder l'illustration dans sa zone pour toutes les largeurs / tous les thèmes.
   Limité au bandeau de la page d'accueil : aucune modification des autres modules. */

@media(min-width:701px){
  
}
@media(max-width:700px){
  
  
}


/* V108.98 — Footer : navigation accessible en mobile/tablette.
   Le format desktop n'est pas modifié. La variante de thème reste globale.
   Délibérément ciblé sur les liens du footer commun à toutes les pages. */
@media (max-width: 980px) {
  .site > .footer .footer-top {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    min-height: 0;
  }
  .site > .footer .footer-brand {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    min-height: 0;
    min-width: 0;
    gap: 12px;
    padding: 0 0 14px;
    border-bottom: 1px solid rgba(255,255,255,.22);
  }
  .site > .footer .footer-brand img {
    width: 62px;
    height: 62px;
    flex: 0 0 62px;
    object-fit: contain;
  }
  .site > .footer .footer-brand span { min-width: 0; }
  .site > .footer .footer-brand b {
    font-size: clamp(15px, 4vw, 20px);
    line-height: 1.12;
    white-space: normal;
  }
  .site > .footer .footer-brand small {
    font-size: clamp(10px, 2.7vw, 13px);
    line-height: 1.25;
    white-space: normal;
    margin-top: 4px;
  }
  .site > .footer .footer-nav {
    box-sizing: border-box;
    min-width: 0;
    min-height: 158px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    gap: 6px;
    padding: 12px 8px;
    text-decoration: none;
    border: 1px solid rgba(255,255,255,.18);
    border-radius: 14px;
    background: rgba(255,255,255,.055);
  }
  .site > .footer .footer-nav .footer-nav-label {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    max-width: 100%;
    font-size: clamp(12px, 3.5vw, 16px);
    line-height: 1.2;
    text-align: center;
    text-wrap: balance;
    overflow-wrap: normal;
    hyphens: none;
  }
  .site > .footer .footer-nav img {
    display: block;
    width: 100%;
    height: 94px;
    max-width: 164px;
    max-height: 94px;
    object-fit: contain;
    flex: 0 1 auto;
  }
  .site > .footer .footer-rule { margin: 18px 0; }
}
@media (max-width: 380px) {
  .site > .footer .footer-top { gap: 9px; }
  .site > .footer .footer-nav { padding: 10px 6px; min-height: 146px; }
  .site > .footer .footer-nav .footer-nav-label { font-size: 12px; }
  .site > .footer .footer-nav img { height: 86px; max-height: 86px; }
}

/* V108.99 — Pied de page : le dernier mot reprend l'accent des titres du site.
   --flash suit le theme actif (vert vif dans le theme Normal). */
.site > .footer .footer-nav .footer-nav-label em {
  color: var(--cbhb-accent, var(--flash, #70f000));
  font-style: italic;
  font-weight: inherit;
}
@media (max-width: 980px) {
  /* Le label reste une phrase et non plusieurs elements flex compresses. */
  .site > .footer .footer-nav .footer-nav-label { display: block; }
}

/* V108.100 — Typographie du footer harmonisee avec les bandeaux (module-title h2).
   Quatre liens reperables par des separateurs fins sur desktop, et un etat interactif.
   Les cartes mobiles validees en V108.98 restent en deux colonnes. */
.site > .footer .footer-top .footer-nav .footer-nav-label{
  font-family:Arial,Helvetica,sans-serif;
  font-weight:950;
  letter-spacing:-.035em;
  line-height:1.12;
}
.site > .footer .footer-nav{
  transition:background-color .16s ease,box-shadow .16s ease;
}
.site > .footer .footer-nav:hover,
.site > .footer .footer-nav:focus-visible{
  background:rgba(255,255,255,.09);
  border-radius:14px;
}
/* Trait vertical dans les espaces existants du maillage a cinq colonnes. */
@media (min-width:981px){
  .site > .footer .footer-nav{position:relative}
  .site > .footer .footer-nav::before{
    content:"";
    position:absolute;
    left:-12px;
    top:12%;height:76%;width:1px;
    pointer-events:none;
    background:var(--cbhb-accent,var(--flash,#70f000));
    opacity:.38;
  }
}
/* Le label Club labellise est bien une zone distincte des reseaux sociaux. */
.site > .footer .footer-left .socials{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:78px;
  padding-left:20px;
  min-width:0;
}
.site > .footer .footer-left .socials::before{
  content:"";
  position:absolute;
  left:0;
  top:12%;height:76%;width:1px;
  background:var(--cbhb-accent,var(--flash,#70f000));
  opacity:.38;
  pointer-events:none;
}
@media (max-width:980px){
  .site > .footer .footer-left .socials{min-height:56px;padding-left:14px}
}
@media (max-width:560px){
  .site > .footer .footer-left .socials{min-height:48px;padding-left:10px}
}

/* V108.101 — Footer global: lien d'accueil perceptible sans modifier la
   position/le masque, et logo Club labellise centre dans sa cellule.
   Accents herites du theme actif. Reutilise par toutes les pages publiques. */
.site > .footer .footer-brand{
  border-radius:14px;
  transition:background-color .18s ease, box-shadow .18s ease;
  cursor:pointer;
}
@media(hover:hover){
  .site > .footer .footer-brand:hover{
    background-color:rgba(255,255,255,.105);
    box-shadow:inset 0 0 0 1px var(--cbhb-accent,var(--flash,#70f000));
  }
}
.site > .footer .footer-brand:focus-visible{
  background-color:rgba(255,255,255,.13);
  outline:2px solid var(--cbhb-accent,var(--flash,#70f000));
  outline-offset:3px;
}
.site > .footer .footer-brand:active{
  background-color:rgba(255,255,255,.17);
}
/* Le label garde sa taille validee et son propre espace; on centre l'image
   dans la colonne qui lui est deja reservee sans restructurer le HTML. */
.site > .footer .footer-left > img.label{
  display:block;
  justify-self:center;
  align-self:center;
  margin-inline:auto;
  max-width:100%;
  object-fit:contain;
}
@media(prefers-reduced-motion:reduce){
  .site > .footer .footer-brand{transition:none}
}

/* V108.102 — Harmonisation stricte des cinq acces rapides du footer.
   Les dimensions et le masque responsive valides restent inchanges. */
.site > .footer .footer-top > a.footer-brand b,
.site > .footer .footer-top > a.footer-nav .footer-nav-label{
  font-family:Arial,Helvetica,sans-serif;
  font-weight:950;
  letter-spacing:-.035em;
  line-height:1.12;
  text-transform:uppercase;
}
.site > .footer .footer-top > a.footer-brand b i,
.site > .footer .footer-top > a.footer-nav .footer-nav-label em{
  font-weight:inherit;
  font-style:italic;
}
.site > .footer .footer-top > a:is(.footer-brand,.footer-nav){
  border-radius:14px;
  cursor:pointer;
  transition:background-color .18s ease,box-shadow .18s ease;
}
@media(hover:hover){
  .site > .footer .footer-top > a:is(.footer-brand,.footer-nav):hover{
    background:rgba(255,255,255,.105);
    box-shadow:inset 0 0 0 1px var(--cbhb-accent,var(--flash,#70f000))!important;
  }
}
.site > .footer .footer-top > a:is(.footer-brand,.footer-nav):focus-visible{
  background:rgba(255,255,255,.13);
  outline:2px solid var(--cbhb-accent,var(--flash,#70f000));
  outline-offset:3px;
}
.site > .footer .footer-top > a:is(.footer-brand,.footer-nav):active{
  background:rgba(255,255,255,.17);
}
@media(prefers-reduced-motion:reduce){
  .site > .footer .footer-top > a:is(.footer-brand,.footer-nav){transition:none}
}

/* V108.103 — Masque unique du bandeau d'accueil, commun aux 13 thèmes.
   Même photo sans recadrage du contenu (seul le vide transparent a été retiré
   dans accueil-collectif-bandeau-cbhb.png). Autres bandeaux intacts.
   Desktop : image entière ancrée BAS/DROITE.
   Mobile : image entière sur une ligne large sous le titre.
   Aucun zoom, changement de logo, ni règle de palette par thème. */


@media (min-width:1100px) {
  
}

@media (min-width:1181px) and (max-width:1399px) {
  
}
@media (min-width:561px) and (max-width:1180px) {
  /* Tablette / demi-fenêtre : contenu sur deux niveaux pour éviter que la photo couvre la devise. */
  .hero.hero-home {height:clamp(430px,43vw,500px)!important}
  .hero.hero-home .club-logo {
    left:clamp(18px,3vw,35px)!important;top:92px!important;transform:translateY(-50%)!important;
    width:clamp(104px,11vw,128px)!important;height:clamp(104px,11vw,128px)!important;
  }
  .hero.hero-home .hero-copy {
    left:clamp(145px,16vw,192px)!important;top:69px!important;bottom:auto!important;
    transform:none!important;width:calc(100% - 290px)!important;
    max-width:calc(100% - 290px)!important;z-index:8!important;
  }
  .hero.hero-home .hero-copy h1 {font-size:clamp(30px,4vw,46px)!important;line-height:.98!important}
  .hero.hero-home .hero-copy p {
    white-space:normal!important;font-size:clamp(13px,1.9vw,17px)!important;
    line-height:1.25!important;margin-top:9px!important;
  }
  
  .hero.hero-home .hero-actions {right:14px!important;top:16px!important}
}

@media (max-width:560px) {
  .hero.hero-home {
    height:clamp(314px,92vw,376px)!important;
    min-height:314px!important;
    overflow:hidden!important;
  }
  .hero.hero-home .club-logo {
    left:14px!important;top:64px!important;
    transform:translateY(-50%)!important;
    width:70px!important;height:70px!important;
  }
  .hero.hero-home .hero-copy {
    left:100px!important;top:54px!important;
    bottom:auto!important;transform:none!important;
    width:calc(100% - 153px)!important;
    max-width:calc(100% - 153px)!important;
    z-index:8!important;
  }
  .hero.hero-home .hero-copy h1 {line-height:.98!important}
  .hero.hero-home .hero-copy p {
    font-size:clamp(11px,2.9vw,13px)!important;
    line-height:1.22!important;
    max-width:100%!important;
    margin-top:10px!important;
  }
  
  
  .hero.hero-home .hero-actions {right:10px!important;top:12px!important}
}

/* V108.105 — Masque carrousels mobile : cibles tactiles et scrolling iOS.
   Aucune modification de la boucle continue validée des partenaires. */
.photo-album-track,.photo-strip{
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  touch-action:pan-x pan-y;
}
.photo-album-nav,.photo-row-controls button,.partners-arrow{
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
@media(max-width:700px){
  .photo-album-nav{width:44px;height:44px}
  .photo-row-controls button{width:44px;height:44px}
  .partners-arrow{width:44px;height:44px;font-size:29px}
  .partners-carousel-shell{padding-inline:44px}
  .partners-carousel-block{padding-inline:8px!important}
}

/* CBHB V108.106 — saisons validées : aucune bordure saisonnière */
html[data-theme="hiver"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)::after{content:none!important;border-image:none!important;filter:none!important}
html.wf-active .wf-layer{display:none!important}

/* V108.107 — 4 habillages événementiels, selon le modèle 9-slice de Noël.
   Le masque commun, les cartes internes et le flux restent strictement inchangés. */
html[data-theme="saint-valentin"]{--cbhb-fete-frame:url("assets/cadre-saint-valentin.png");--cbhb-fete-color:#f14e89}
html[data-theme="paques"]{--cbhb-fete-frame:url("assets/cadre-paques.png");--cbhb-fete-color:#e5c253}
html[data-theme="nouvel-an"]{--cbhb-fete-frame:url("assets/cadre-nouvel-an.png");--cbhb-fete-color:#f2cb58}
html[data-theme="14-juillet"]{--cbhb-fete-frame:url("assets/cadre-14-juillet.png");--cbhb-fete-color:#ef3340}
html[data-theme="saint-valentin"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer),
html[data-theme="paques"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer),
html[data-theme="nouvel-an"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer),
html[data-theme="14-juillet"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer){position:relative;isolation:isolate}
html[data-theme="saint-valentin"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)::after,
html[data-theme="paques"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)::after,
html[data-theme="nouvel-an"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)::after,
html[data-theme="14-juillet"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)::after{
 content:"";display:block;position:absolute;inset:-8px;z-index:40;pointer-events:none;
 box-sizing:border-box;border-style:solid;border-width:29px;
 border-image-source:var(--cbhb-fete-frame);border-image-slice:112;border-image-repeat:round;
 filter:drop-shadow(0 2px 3px rgba(0,0,0,.22));
}
html[data-theme="saint-valentin"] .site > :is(.hero,.footer)::after,
html[data-theme="paques"] .site > :is(.hero,.footer)::after,
html[data-theme="nouvel-an"] .site > :is(.hero,.footer)::after,
html[data-theme="14-juillet"] .site > :is(.hero,.footer)::after{inset:-10px;border-width:35px}
/* Effets vivants uniquement en bordure pour les deux journées de feu d'artifice. */
.cbhb-season-ornament{display:none}
html[data-theme="nouvel-an"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)>.cbhb-season-ornament,
html[data-theme="14-juillet"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)>.cbhb-season-ornament{
 display:block;position:absolute;inset:-3px;pointer-events:none;z-index:41;overflow:hidden;border-radius:inherit;
}
.cbhb-season-ornament .cbhb-fw-burst{position:absolute;display:block;width:36px;height:36px;transform-origin:center center;
 animation:cbhb-firework-burst var(--fw-duration,3.5s) ease-out var(--fw-delay,0s) infinite;opacity:0;
 filter:drop-shadow(0 0 4px var(--fw-color,#ffc957));
}
.cbhb-fw-burst::before{content:"";position:absolute;inset:0;border-radius:50%;
 background:repeating-conic-gradient(var(--fw-color,#ffc957) 0deg 5deg,transparent 5deg 25deg);
 -webkit-mask:radial-gradient(circle,transparent 0 21%,#000 24% 52%,transparent 55%);
 mask:radial-gradient(circle,transparent 0 21%,#000 24% 52%,transparent 55%)}
.cbhb-fw-burst::after{content:"";position:absolute;inset:45%;border-radius:50%;background:white;box-shadow:0 0 8px 2px var(--fw-color,#ffc957)}
.cbhb-season-ornament .cbhb-fw-spark{position:absolute;display:block;width:5px;height:5px;border-radius:50%;
 background:var(--fw-color,#ffc957);box-shadow:0 0 8px var(--fw-color,#ffc957);opacity:0;
 animation:cbhb-firework-spark var(--fw-duration,2.6s) ease-in-out var(--fw-delay,0s) infinite}
@keyframes cbhb-firework-burst{0%,16%,100%{opacity:0;transform:translate(-50%,-50%) scale(.12) rotate(0deg)}34%{opacity:.95;transform:translate(-50%,-50%) scale(1.2) rotate(18deg)}58%{opacity:.35;transform:translate(-50%,-50%) scale(1.65) rotate(30deg)}80%{opacity:0;transform:translate(-50%,-50%) scale(1.8) rotate(38deg)}}
@keyframes cbhb-firework-spark{0%,16%,100%{opacity:0;transform:scale(.4)}42%{opacity:1;transform:scale(1.4)}72%{opacity:.15;transform:scale(.8)}}
@media(max-width:700px){
 html[data-theme="saint-valentin"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)::after,
 html[data-theme="paques"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)::after,
 html[data-theme="nouvel-an"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)::after,
 html[data-theme="14-juillet"] .site > :is(.hero,.module,.detail-grid,.join-us,.footer)::after{inset:-3px;border-width:17px}
 html[data-theme="nouvel-an"] .cbhb-fw-burst,
 html[data-theme="14-juillet"] .cbhb-fw-burst{width:24px;height:24px}
}
@media(prefers-reduced-motion:reduce){.cbhb-fw-burst,.cbhb-fw-spark{animation:none!important;opacity:.65!important;transform:translate(-50%,-50%) scale(.7)!important}}

/* V108.107 — petites illustrations aux coins des grands blocs, sans recouvrir le contenu */
html[data-theme="saint-valentin"] .site > :is(.hero,.footer)>.cbhb-season-ornament,
html[data-theme="paques"] .site > :is(.hero,.footer)>.cbhb-season-ornament{
 display:block;position:absolute;inset:0;overflow:visible;z-index:41;pointer-events:none;
}
.cbhb-fete-mascot{position:absolute;display:block;width:58px;height:58px;object-fit:contain;pointer-events:none;
 filter:drop-shadow(0 2px 3px rgba(0,0,0,.25))}
.cbhb-fete-mascot.north-east{right:-14px;top:-17px}
.cbhb-fete-mascot.south-west{left:-14px;bottom:-17px}
@media(max-width:700px){.cbhb-fete-mascot{width:36px;height:36px}.cbhb-fete-mascot.north-east{right:-5px;top:-10px}.cbhb-fete-mascot.south-west{left:-5px;bottom:-10px}}


/* CBHB V108.109 — Pied de page : logo TikTok lisible et enveloppe aux couleurs du theme.
   Les autres elements du footer, le masque public et les decorations sont conserves. */
.site > .footer .socials a.cbhb-social-link {
  position:relative;
  z-index:1;
  text-decoration:none;
  -webkit-tap-highlight-color:transparent;
}
.site > .footer .socials a.cbhb-social-link img {
  display:block;
  max-width:100%;
  object-fit:contain;
}
/* Fond blanc derriere le pictogramme TikTok : son carre noir reste intact et lisible. */
.site > .footer .socials a.cbhb-social-tiktok {
  background:#ffffff;
  border-radius:10px;
  padding:3px;
  box-sizing:border-box;
}
.site > .footer .socials a.cbhb-social-tiktok img {
  width:100%;height:100%;
  border-radius:7px;
}
.site > .footer .socials a.cbhb-contact-link .contact-icon {
  color:var(--cbhb-accent,var(--flash,#72ff00))!important;
  border-color:color-mix(in srgb,var(--cbhb-accent,var(--flash,#72ff00)) 50%,transparent)!important;
  line-height:1;
}
.site > .footer .socials a.cbhb-contact-link .contact-icon svg {
  display:block;width:62%;height:62%;fill:none;
  stroke:currentColor;stroke-width:1.9;
  stroke-linecap:round;stroke-linejoin:round;
}
.site > .footer .socials a.cbhb-social-link:focus-visible {
  outline:2px solid var(--cbhb-accent,var(--flash,#72ff00));
  outline-offset:4px;
  border-radius:8px;
}
@media(max-width:740px){
  .site > .footer .socials a.cbhb-social-tiktok {padding:2px;border-radius:7px}
  .site > .footer .socials a.cbhb-social-tiktok img {border-radius:5px}
}

/* V108.110 : logo TikTok officiel circulaire dans un support blanc contrastant.
   Ne modifier ni ses couleurs, ni la forme du pictogramme. */
.site > .footer .socials a.cbhb-social-tiktok {
  background: #fff;
  border-radius: 50%;
  padding: 2px;
  box-sizing: border-box;
}
.site > .footer .socials a.cbhb-social-tiktok img {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  object-fit: contain;
}

/* V108.114 — correctifs bandeau accueil + footer + logos institutionnels */
.hero.hero-home,.hero-home.hero{overflow:hidden;}


@media (min-width:1400px){}
@media (max-width:980px){.hero.hero-home,.hero-home.hero{height:330px !important;}}
@media (max-width:700px){.hero.hero-home,.hero-home.hero{height:390px !important;}.hero.hero-home .hero-copy,.hero-home .hero-copy{left:18px !important;top:24px !important;bottom:auto !important;transform:none !important;width:calc(100% - 36px) !important;max-width:calc(100% - 36px) !important;}.hero.hero-home .hero-copy h1,.hero-home .hero-copy h1{font-size:clamp(42px,11vw,56px) !important;line-height:.93 !important;}.hero.hero-home .hero-copy p,.hero-home .hero-copy p{font-size:clamp(13px,4vw,18px) !important;margin-top:12px !important;white-space:normal !important;max-width:70% !important;}}
.site > .footer .footer-nav .footer-nav-label,.footer .footer-nav .footer-nav-label{display:flex !important;align-items:center !important;justify-content:center !important;color:#fff !important;-webkit-text-fill-color:#fff !important;text-decoration:none !important;text-align:center !important;}
.site > .footer .socials a.cbhb-contact-link,.footer .socials a.cbhb-contact-link{width:40px !important;height:40px !important;flex:0 0 40px !important;display:grid !important;place-items:center !important;}
.site > .footer .socials a.cbhb-contact-link .contact-icon,.footer .socials a.cbhb-contact-link .contact-icon{width:100% !important;height:100% !important;box-sizing:border-box !important;}
@media (max-width:700px){.site > .footer .socials a.cbhb-contact-link,.footer .socials a.cbhb-contact-link{width:25px !important;height:25px !important;flex:0 0 25px !important;}.site > .footer .socials a.cbhb-contact-link .contact-icon,.footer .socials a.cbhb-contact-link .contact-icon{width:100% !important;height:100% !important;}}
.site > .footer .institution.handball a:first-child,.footer .institution.handball a:first-child{overflow:visible !important;}
.site > .footer .institution.handball a:first-child img,.footer .institution.handball a:first-child img{transform:scale(1.18) !important;transform-origin:center center !important;max-height:48px !important;}
@media (min-width:981px){.site > .footer .institution.handball a:first-child img,.footer .institution.handball a:first-child img{max-height:58px !important;}}


/* CBHB Fusion V3.3 — navigation canonique publique / espace membre */
.site > .hero .hero-actions .member-entry-link,
.hero .hero-actions .member-entry-link {
  display:flex!important;align-items:center!important;justify-content:center!important;
  background:#063529!important;color:#fff!important;-webkit-text-fill-color:#fff!important;
  border:1px solid rgba(255,255,255,.28)!important;border-radius:999px!important;
  min-height:41px!important;min-width:130px!important;box-sizing:border-box!important;
  padding:7px 15px!important;font-weight:900!important;font-size:15px!important;
  text-decoration:none!important;line-height:1.1!important;white-space:nowrap!important;
  box-shadow:0 3px 10px rgba(0,0,0,.17)!important;
}
.hero .hero-actions .member-entry-link:hover,
.hero .hero-actions .member-entry-link:focus-visible {
  background:#135440!important;outline:2px solid #fff!important;outline-offset:3px!important;
}
@media (max-width:900px) {
  .site > .hero .hero-actions .member-entry-link,.hero .hero-actions .member-entry-link {
    min-width:88px!important;min-height:35px!important;padding:6px 8px!important;font-size:12px!important;
  }
}
@media (max-width:560px) {
  .site > .hero .hero-actions .member-entry-link,.hero .hero-actions .member-entry-link {
    min-width:67px!important;min-height:32px!important;padding:6px 7px!important;font-size:10px!important;
  }
  .hero .hero-actions {gap:8px!important;}
}

/* CBHB V3.4 — correctifs de lisibilité et visuels existants (sans création).
   Bandeau: photo complète, recadrage interdit, boutons superposés interdits.
   Réglages localisés au bandeau accueil: autres masques inchangés. */
.hero.hero-home .hero-actions{
  right:18px!important;top:24px!important;width:138px!important;
  display:flex!important;flex-direction:column!important;align-items:center!important;
  justify-content:flex-start!important;gap:12px!important;z-index:12!important;
}
.hero.hero-home .hero-actions .member-entry-link{
  display:flex!important;width:130px!important;min-width:0!important;
  height:41px!important;min-height:41px!important;flex:0 0 auto!important;
}
.hero.hero-home .hero-actions .burger{
  display:flex!important;align-items:center!important;justify-content:center!important;
  width:58px!important;height:58px!important;flex:0 0 58px!important;
  border-radius:50%!important;margin:0!important;position:static!important;
}
.hero.hero-home .hero-actions .theme-secret-trigger{
  position:absolute!important;top:135px!important;right:0!important;
  width:22px!important;height:22px!important;margin:0!important;padding:0!important;
  flex:0 0 auto!important;
}


@media(max-width:1180px) and (min-width:561px){
  
  
  .hero.hero-home .hero-actions{top:16px!important;right:14px!important;width:115px!important;gap:8px!important;}
  .hero.hero-home .hero-actions .member-entry-link{width:110px!important;height:35px!important;min-height:35px!important;}
  .hero.hero-home .hero-actions .burger{width:48px!important;height:48px!important;flex-basis:48px!important;}
}
@media(max-width:560px){
  .hero.hero-home{height:clamp(350px,100vw,405px)!important;min-height:350px!important;}
  .hero.hero-home .hero-actions{right:10px!important;top:11px!important;width:83px!important;gap:9px!important;}
  .hero.hero-home .hero-actions .member-entry-link{
    width:83px!important;min-width:0!important;height:33px!important;
    min-height:33px!important;font-size:11px!important;padding:5px!important;
  }
  .hero.hero-home .hero-actions .burger{width:44px!important;height:44px!important;flex-basis:44px!important;font-size:21px!important;}
  .hero.hero-home .hero-actions .theme-secret-trigger{top:94px!important;}
  
  
  .hero.hero-home .hero-copy{
    left:100px!important;top:54px!important;width:calc(100% - 195px)!important;
    max-width:calc(100% - 195px)!important;
  }
  .hero.hero-home .hero-copy h1{font-size:clamp(20px,5.4vw,28px)!important;}
  .hero.hero-home .hero-copy p{font-size:clamp(9px,2.8vw,13px)!important;max-width:100%!important;}
}
/* Footer: aucune fusion des libellés, espaces conservés entre mots italiques. */
.site > .footer .footer-top a.footer-nav .footer-nav-label,
.footer .footer-top a.footer-nav .footer-nav-label{
  display:block!important;text-align:center!important;
  white-space:normal!important;color:#fff!important;-webkit-text-fill-color:#fff!important;
  line-height:1.15!important;
}
.site > .footer .footer-top a.footer-nav .footer-nav-label em,
.footer .footer-top a.footer-nav .footer-nav-label em{
  display:inline!important;margin-left:.25em!important;white-space:nowrap!important;
}
/* Affichage identique des icônes Mail / réseaux sociaux. */
.footer .socials .cbhb-contact-link{width:40px!important;height:40px!important;flex:0 0 40px!important;display:grid!important;place-items:center!important;}
.footer .socials .cbhb-contact-link .contact-icon{width:100%!important;height:100%!important;display:grid!important;place-items:center!important;box-sizing:border-box!important;}
@media(max-width:700px){
  .footer .socials .cbhb-contact-link{width:25px!important;height:25px!important;flex:0 0 25px!important;}
}
/* Le logo fédéral conserve ses proportions; plus de place est offerte au coq. */
.footer .institution.handball a:first-child img{max-height:55px!important;max-width:105%!important;transform:scale(1.11)!important;transform-origin:center!important;}
@media(max-width:700px){
  .footer .institution.handball a:first-child img{max-height:45px!important;transform:scale(1.05)!important;}
}



/* CBHB V3.5 — harmonisation footer et commandes header, publique + responsive */
.site > .footer .footer-left {display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1.55fr)!important;gap:0!important;align-items:center!important;padding-right:22px!important;}
.site > .footer .footer-left > .label{display:block!important;margin-inline:auto!important;max-width:80%!important;object-fit:contain!important;}
.site > .footer .footer-left > .socials{min-height:80px!important;padding-left:22px!important;justify-content:center!important;}
.site > .footer .footer-left > .socials::before{top:12%!important;height:76%!important;left:0!important;width:1px!important;background:var(--cbhb-accent,var(--flash,#70f000))!important;opacity:.38!important;}
.site > .footer .socials a.cbhb-contact-link .contact-icon{border-width:2.6px!important;box-sizing:border-box!important;border-color:var(--cbhb-accent,var(--flash,#70f000))!important;}
.site > .footer .socials a.cbhb-contact-link .contact-icon svg{width:64%!important;height:64%!important;stroke-width:2.3!important;}
.site > .footer .footer-top a.footer-nav .footer-nav-label em{color:var(--cbhb-accent,var(--flash,#70f000))!important;-webkit-text-fill-color:var(--cbhb-accent,var(--flash,#70f000))!important;}
/* Position et dimensions des controles rigoureusement identiques dans tous les headers publics */
.site > .hero .hero-actions,.site > .hero.hero-home .hero-actions{
 position:absolute!important;top:20px!important;right:20px!important;width:138px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;gap:12px!important;z-index:60!important;
}
.site > .hero .hero-actions .member-entry-link,.site > .hero.hero-home .hero-actions .member-entry-link{
 display:flex!important;width:130px!important;min-width:130px!important;height:42px!important;min-height:42px!important;flex:0 0 42px!important;padding:0 12px!important;font-size:15px!important;border-radius:999px!important;box-sizing:border-box!important;background:var(--cbhb-hero-button,#063529)!important;color:#fff!important;-webkit-text-fill-color:#fff!important;
}
.site > .hero .hero-actions .burger,.site > .hero.hero-home .hero-actions .burger{
 display:flex!important;align-items:center!important;justify-content:center!important;position:static!important;width:56px!important;height:56px!important;flex:0 0 56px!important;margin:0!important;padding:0!important;border-radius:50%!important;font-size:26px!important;line-height:1!important;box-sizing:border-box!important;
}
@media(max-width:980px){.site > .footer .footer-left{padding-right:0!important;}.site > .footer .footer-left > .socials{min-height:60px!important;padding-left:14px!important;}}
@media(max-width:700px){
 .site > .hero .hero-actions,.site > .hero.hero-home .hero-actions{top:12px!important;right:12px!important;width:96px!important;gap:9px!important;}
 .site > .hero .hero-actions .member-entry-link,.site > .hero.hero-home .hero-actions .member-entry-link{width:94px!important;min-width:94px!important;height:35px!important;min-height:35px!important;flex:0 0 35px!important;font-size:12px!important;}
 .site > .hero .hero-actions .burger,.site > .hero.hero-home .hero-actions .burger{width:44px!important;height:44px!important;flex:0 0 44px!important;font-size:22px!important;}
 .site > .footer .footer-left{grid-template-columns:minmax(0,1fr) minmax(0,2fr)!important;gap:0!important;}
 .site > .footer .footer-left > .socials{padding-left:10px!important;min-height:48px!important;}
}



/* ===== CBHB V4.1 beta hardening — masque commun + boutons de thème + héros plus fiables ===== */
.theme-secret-trigger{display:none!important;visibility:hidden!important;pointer-events:none!important;width:0!important;height:0!important;opacity:0!important;overflow:hidden!important}
.hero-actions,.hero.hero-home .hero-actions{display:flex!important;flex-direction:column!important;align-items:center!important;gap:10px!important;z-index:20!important}
.hero .hero-actions .member-entry-link,
.site > .hero .hero-actions .member-entry-link,
.member-hero-actions .member-action,
.member-hero-actions .login,
.member-hero-actions a.login,
.hero-actions .login,
.hero-actions button.login,
.hero-actions a.login{
  background:var(--cbhb-action-bg,#0f6d49)!important;
  color:var(--cbhb-action-text,#fff)!important;
  border:0!important;
  box-shadow:none!important;
}
.hero .hero-actions .member-entry-link:hover,
.hero .hero-actions .member-entry-link:focus-visible,
.member-hero-actions .member-action:hover,
.member-hero-actions .member-action:focus-visible,
.member-hero-actions .login:hover,
.member-hero-actions .login:focus-visible,
.hero-actions .login:hover,
.hero-actions .login:focus-visible{
  background:var(--cbhb-action-hover,#1b855c)!important;
  color:var(--cbhb-action-text,#fff)!important;
}
.hero-actions .burger,
.site > .hero .hero-actions .burger,
.hero.hero-home .hero-actions .burger{
  background:linear-gradient(160deg,var(--cbhb-menu-bg1,var(--cbhb-action-bg,#0f6d49)),var(--cbhb-menu-bg2,var(--cbhb-action-hover,#1b855c)))!important;
  color:var(--cbhb-action-text,#fff)!important;
  border:0!important;
  box-shadow:none!important;
}
.hero-actions .burger:hover,
.hero-actions .burger:focus-visible,
.site > .hero .hero-actions .burger:hover,
.site > .hero .hero-actions .burger:focus-visible{
  background:linear-gradient(160deg,var(--cbhb-menu-bg2,var(--cbhb-action-hover,#1b855c)),var(--cbhb-menu-bg1,var(--cbhb-action-bg,#0f6d49)))!important;
}
/* Homepage artwork layout moved to cbhb-mask.css (audit consolidation). */
@media (max-width:700px){
  .hero.hero-home .hero-actions,.hero-home .hero-actions{top:12px!important;right:12px!important;width:94px!important;gap:8px!important}
  .hero.hero-home .hero-actions .member-entry-link,.hero-home .hero-actions .member-entry-link{width:92px!important;min-width:92px!important;height:35px!important;font-size:12px!important}
  .hero.hero-home .hero-actions .burger,.hero-home .hero-actions .burger{width:44px!important;height:44px!important;flex:0 0 44px!important;font-size:21px!important}
}

/* CBHB 5.6 : statut honnête de la feuille de match, disponible ou non sur FFHandball. */
.result-document-wait{display:inline-block;font-size:11px;line-height:1.3;color:#68736d;text-align:center;font-weight:600;padding:5px 4px;max-width:100%;overflow-wrap:normal}
.result-fdme-v112 .team-fdme-link{width:100%;min-width:0}
.result-fdme-v112 .team-fdme-link a{display:inline-flex;justify-content:center;align-items:center;font-size:12px}

/* V5.7 — illustrations des postes de gardiens; n'altère pas le masque des bandeaux */
.cbhb-keeper-row{align-items:flex-start!important;gap:10px;flex-wrap:wrap}
.cbhb-keeper-gallery{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}
.cbhb-keeper-gallery figure{margin:0;text-align:center;max-width:175px;min-width:108px}
.cbhb-keeper-gallery img{width:100%;height:160px;object-fit:contain;object-position:center bottom;display:block}
.cbhb-keeper-gallery figcaption{font-weight:800;color:#183e29;font-size:.86rem}
.cbhb-illustration-disclaimer{flex-basis:100%;font-size:.75rem;color:#576b60;font-weight:400}
@media(max-width:600px){.cbhb-keeper-gallery figure{max-width:140px}.cbhb-keeper-gallery img{height:135px}}

.cbhb-sports-freshness{margin:10px 8px 0;padding:7px 10px;border-top:1px solid #d9e3dd;color:#50655b;font-size:12px;font-weight:600;line-height:1.5}
.cbhb-sports-freshness.is-stale{color:#995500}

/* CBHB V5.8.1 — illustrations approuvées, intégrées sans encadré au bandeau. */
.module-title[href="equipes.html"] img,.module-title[href="partenaires.html"] img{width:112px;height:75px;max-width:24%;object-fit:contain;object-position:center;flex-shrink:0;filter:none;}
@media(max-width:700px){.module-title[href="equipes.html"] img,.module-title[href="partenaires.html"] img{width:72px;height:56px;max-width:22%;}}

/* V5.9 approved illustrations: natural scale in home cards / headers */
.home-teams-block .team-art{height:215px;padding:2px 4px}
.home-teams-block .team-art img,.teams-module .team-art img{width:100%;height:100%;object-fit:contain}
.module-title[href="equipes.html"] img,.module-title[href="partenaires.html"] img{width:178px;height:100%;max-width:27%;object-fit:contain;object-position:right center;flex-shrink:0}
.hero-visual img[src*="bandeau-valide"]{object-fit:contain;object-position:center;max-height:100%;background:transparent}
.cbhb-keeper-gallery img{height:225px}
.cbhb-official-portrait{display:inline-flex;flex-direction:column;align-items:center;gap:4px;margin:0 16px 0 0;vertical-align:top}
.cbhb-official-portrait img{height:225px;width:195px;object-fit:contain;object-position:center bottom}
.cbhb-official-portrait figcaption{font-size:.88rem;font-weight:800}
@media(max-width:700px){.module-title[href="equipes.html"] img,.module-title[href="partenaires.html"] img{width:105px;max-width:28%}.home-teams-block .team-art{height:190px}.cbhb-keeper-gallery img,.cbhb-official-portrait img{height:180px}}

/* V5.9.3 -- mêmes alignements avec score, sans score ou feuille absente. */
@media(min-width:901px){
 .result-row-v112{grid-template-columns:minmax(135px,165px) minmax(0,1fr) minmax(138px,174px)!important;gap:16px!important;min-height:106px}
 .result-row-v112>.result-meta-v112{grid-column:1!important;grid-row:1!important}
 .result-row-v112>.result-board-v112{grid-column:2!important;grid-row:1!important;justify-self:stretch;width:100%;max-width:880px;margin-inline:auto}
 .result-row-v112>.result-fdme-v112{grid-column:3!important;grid-row:1!important;justify-self:stretch}
 .result-board-v112{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important;gap:10px!important}
 .result-pending-cbhb>.result-board-v112{display:grid!important;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important}
 .result-pending-cbhb .result-club-v112.home,.result-pending-cbhb .result-club-v112.away,.result-pending-cbhb .result-score-pending-cbhb{grid-column:auto!important;grid-row:auto!important;margin:0!important}
 .result-club-v112.home{text-align:right!important}.result-club-v112.away{text-align:left!important}
}
@media(max-width:900px){.result-row-v112>.result-board-v112{grid-column:1/-1!important}.result-row-v112>.result-fdme-v112{grid-column:2!important}}
@media(max-width:600px){.result-row-v112>.result-board-v112{grid-column:1!important}.result-row-v112>.result-fdme-v112{grid-column:1!important}.result-meta-v112{flex-wrap:wrap!important}.result-board-v112{min-width:0!important}.result-club-v112{overflow-wrap:anywhere!important}}
/* Deuil est un mode manuel exceptionnel, sans ornements ni animations. Le logo club reste à taille fixe. */
html[data-theme=deuil]{--cbhb-bg1:#393c40!important;--cbhb-bg2:#202226!important;--cbhb-dark:#181a1d!important;--cbhb-accent:#d5d6d8!important;--cbhb-accent-strong:#cacbd0!important;--cbhb-action-bg:#45484e!important;--cbhb-action-hover:#25272b!important;--cbhb-menu-bg2:#45484e!important;--cbhb-action-text:#fff!important;--cbhb-button-dark:#303237!important}
html[data-theme=deuil] body{background:linear-gradient(110deg,#393c40,#202226)!important}
html[data-theme=deuil] :is(.hero,.module-title,.footer){background:linear-gradient(110deg,#181a1d,#35373b)!important;border-color:#777980!important}
html[data-theme=deuil] :is(.hero-copy em,.module-title em,.footer-brand i){color:#d5d6d8!important}
html[data-theme=deuil] img.club-logo{filter:grayscale(1)!important}
html[data-theme=deuil] :is(.cbhb-season-ornament,.cbhb-fw-burst,.cbhb-fw-spark,.cbhb-fete-mascot){display:none!important}
html[data-theme=deuil] *,html[data-theme=deuil] *::before,html[data-theme=deuil] *::after{animation-duration:.001ms!important;animation-iteration-count:1!important}

/* V5.9.3 — lisibilité des scores et de l'attente sous le mode Deuil. */
html[data-theme=deuil] .result-row-v112 .result-score-pending-cbhb{background:#eef0f1!important;border:1px solid #737980!important;color:#24272c!important;box-shadow:none!important}
html[data-theme=deuil] .result-row-v112 :is(.result-score-v112,.result-score-box-v112,.result-goals-v112){filter:grayscale(1)}
html[data-theme=deuil] .result-row-v112 .result-meta-v112{color:#24272c!important}

/* V5.9.4 : résumé lié au résultat, sans carte séparée ni colonne rognée. */
.result-row-v112>.cbhbPublicMatchSummary{grid-column:1/-1!important;grid-row:auto!important;width:100%;min-width:0;padding:10px 14px;margin-top:6px;border-top:1px solid var(--theme-line,#d0dbd6);color:inherit;overflow-wrap:anywhere;box-sizing:border-box}
.result-row-v112>.cbhbPublicMatchSummary[hidden]{display:none!important}
.cbhbPublicMatchSummary strong{display:block;font-weight:850;margin-bottom:6px}
.cbhbPublicMatchSummary p{margin:0;white-space:pre-wrap;line-height:1.5}
@media(max-width:600px){.result-row-v112>.cbhbPublicMatchSummary{padding:10px 4px}}

/* CBHB V5.9.7 — avertissement de couverture, sans perturber les blocs officiels. */
.cbhb-calendar-warning{margin:5px 12px 15px;padding:9px 12px;font-size:12px;color:#574112;background:#fff7dc;border:1px solid #ead89d;border-radius:10px}
/* Bandeaux publics épurés : illustrations conservées uniquement dans les cartes et en-têtes. */
body:has(.home-teams-block) .module-title{min-height:55px;cursor:default}
.cbhbThemeTechnical{border:1px solid #dce8df;border-radius:10px;padding:10px 14px;margin:8px 0 15px}
.cbhbThemeTechnical summary{cursor:pointer;font-weight:650}
.cbhbThemeTechnical label{display:block;margin:10px 0}
.cbhbThemeTechnical input{min-height:42px;width:min(100%,600px)}

/* CBHB V5.9.11 — special campaign strip exactly the same height across three themes. */
html[data-theme="deuil"] .cbhb-campaign-bar{height:66px!important;min-height:66px!important;max-height:66px!important;padding:0 18px!important;display:flex;align-items:center}
html[data-theme="deuil"] .cbhb-campaign-bar[hidden]{display:none!important}
html[data-theme="deuil"] .cbhb-campaign-bar button{font-size:clamp(13px,1.7vw,19px)!important;line-height:1.2!important;white-space:normal!important;justify-content:center!important;text-align:center!important}
@media(max-width:700px){html[data-theme="deuil"] .cbhb-campaign-bar{height:54px!important;min-height:54px!important;max-height:54px!important;padding:0 12px!important}html[data-theme="deuil"] .cbhb-campaign-bar button{font-size:clamp(12px,3.3vw,16px)!important}}

/* Registre des corrections CBHB : provenance visible mais discrète. */
.cbhb-club-confirmed-note{display:block;font-size:.69rem;font-weight:500;color:#555c58;margin-top:.18rem}


/* CBHB_FOOTER_4_COLONNES_V2 */
/* Quatre colonnes correspondant exactement au HTML existant. */
@media (min-width:981px) {
  .site footer .footer-bottom {
    display:grid!important;
    grid-template-columns:
      minmax(0,1.2fr)
      minmax(0,0.95fr)
      1px
      minmax(0,1.4fr)!important;
    align-items:center!important;
    column-gap:24px!important;
  }

  .site footer .footer-bottom > .footer-left,
  .site footer .footer-bottom > .institution {
    min-width:0!important;
    align-self:center!important;
  }

  .site footer .footer-bottom > .institution.local,
  .site footer .footer-bottom > .institution.handball {
    display:grid!important;
    width:100%!important;
    min-height:116px!important;
    background:#fff!important;
    border-radius:22px!important;
    padding:14px!important;
    align-items:center!important;
    box-sizing:border-box!important;
  }

  .site footer .footer-bottom > .institution.local {
    grid-template-columns:1.25fr .75fr!important;
  }

  .site footer .footer-bottom > .institution.handball {
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }

  .site footer .footer-bottom > .institution-sep {
    display:block!important;
    width:1px!important;
    height:116px!important;
    align-self:center!important;
    background:rgba(112,240,0,.35)!important;
  }

  .site footer .footer-bottom > .institution a {
    display:flex!important;
    justify-content:center!important;
    align-items:center!important;
    min-width:0!important;
  }

  .site footer .footer-bottom > .institution img {
    max-width:100%!important;
    object-fit:contain!important;
  }
}


/* CBHB_COQS_TAILLE_IDENTIQUE_V1 */
/* Images normalisees sur canevas egal, sans deformation ni agrandissement individuel. */
.site footer .footer-bottom > .institution.handball a img {
  display:block!important;
  width:100%!important;
  height:auto!important;
  max-width:100%!important;
  max-height:100%!important;
  object-fit:contain!important;
  transform:none!important;
  filter:none!important;
}

.public-profile-card.cbhb-player-card{display:flex;flex-direction:column;gap:0;padding:0;overflow:hidden;background:linear-gradient(160deg,#1e2e21,#101712);border-color:#4d8c35;text-align:left}.cbhb-player-card>img{display:block;width:100%;height:260px;object-fit:contain;padding:12px;box-sizing:border-box}.cbhb-player-card>div{width:100%;box-sizing:border-box;padding:18px;border-top:3px solid #79ca33}.cbhb-player-card h3{margin:0 0 6px;color:#fff}.cbhb-player-card strong{color:#a0df69}
.public-profile-card.cbhb-player-card{background:#f2f7f3!important}.cbhb-player-card h3{color:#15331c!important}.cbhb-player-card strong{color:#285719!important}
/* Cohérence des actions et libellés avec le thème actif */
html[data-theme] body .site .hero .hero-actions a.member-entry-link,html[data-theme] body a.member-entry-link{background:var(--cbhb-action-bg,#08744f)!important;color:var(--cbhb-action-text,#fff)!important;border-color:var(--cbhb-action-bg,#08744f)!important}html[data-theme] body a.member-entry-link:hover{background:var(--cbhb-action-hover,#065a3e)!important}html[data-theme] body .result-meta-v112>span{color:var(--cbhb-action-bg,#08744f)!important}

/* Une campagne Rose ou Movember ne doit jamais survivre au thème Halloween. */
html[data-theme="halloween"] .cbhb-campaign-bar { display: none !important; }

/* CBHB person-name theme update 20261031 */
.public-profile-card h3.person-name-line{display:flex;flex-wrap:nowrap;align-items:baseline;gap:.35em;padding:.55rem .75rem;border-radius:.65rem;background:var(--cbhb-button-dark,#073126);overflow:hidden}.public-profile-card .person-first-name,.bureau-profile-body .bureau-person-name span{color:#fff;white-space:nowrap}.public-profile-card .person-last-name,.bureau-profile-body .bureau-person-name strong{color:var(--cbhb-accent,#00a84f);font-weight:900;font-style:italic;text-transform:uppercase;white-space:nowrap}.bureau-profile-body .bureau-person-name{display:flex;flex-wrap:nowrap;align-items:baseline;gap:.35em;padding:.55rem .75rem;border-radius:.65rem;background:var(--cbhb-button-dark,#073126);overflow:hidden}.bureau-profile-body .bureau-profile-body{min-width:0}@media(max-width:560px){.public-profile-card h3.person-name-line,.bureau-profile-body .bureau-person-name{font-size:clamp(.88rem,4vw,1.12rem);gap:.25em}}

/* CBHB 2026-11-03 : bordures décoratives publiques uniquement.
   Les contrôles de formulaires, focus, tableaux et séparateurs fonctionnels sont conservés. */
body .drawer{border-left:0!important;box-shadow:none!important}
body .module.standalone>.white-block{border:0!important}
body .history-season,body .cbhb-palmares-season{border:0!important}

/* Transition publique : effectifs non harmonisés masqués, entraîneurs et données sportives conservés. */
[data-team-page] [data-section="team-people"][data-cbhb-public-temporary-hide="roster"]{display:none!important}

/* CBHB 2026-11-03 : navigation publique exhaustive et utilisable sur mobile. */
.drawer{overflow-y:auto!important;overscroll-behavior:contain;scrollbar-width:thin;padding-bottom:48px!important}
.cbhb-drawer-nav{display:flex;flex-direction:column;gap:3px;min-width:0}
.drawer .cbhb-drawer-nav a{display:block;white-space:normal;overflow-wrap:break-word}
.cbhb-drawer-group{display:block;margin:0;padding:0;border:0!important}
.cbhb-drawer-group>summary{display:block;list-style:none;cursor:pointer;padding:11px 14px;border-radius:10px;font-weight:950;text-transform:uppercase;color:#fff;position:relative;padding-right:36px}
.cbhb-drawer-group>summary::-webkit-details-marker{display:none}
.cbhb-drawer-group>summary:after{content:'+';position:absolute;right:14px;font-size:20px;top:7px}
.cbhb-drawer-group[open]>summary:after{content:'−'}
.cbhb-drawer-links{display:flex;flex-direction:column;margin-left:10px;padding-left:10px;border-left:2px solid rgba(255,255,255,.18)}
.drawer .cbhb-drawer-links a{font-size:14px!important;padding:9px 10px!important;line-height:1.3!important}
.drawer .cbhb-drawer-nav a[aria-current="page"]{background:rgba(255,255,255,.16)!important;text-decoration:underline;text-underline-offset:4px}
.drawer .cbhb-drawer-nav a:focus-visible,.cbhb-drawer-group>summary:focus-visible{outline:2px solid currentColor!important;outline-offset:2px}
/* Suppression ciblée des filets décoratifs sur les modules publics. */
body .module-title{border:0!important;outline:0!important}
body .module.standalone,body .module.standalone>.white-block{border:0!important;outline:0!important}
body .cbhb-club-tile,body .history-season,body .cbhb-palmares-season{border:0!important}
body .home-match-card,body .home-result-card,body .match-card,body .result-card{border:0!important}
@media(max-width:600px){.drawer{width:min(390px,94vw)!important;padding-left:16px!important;padding-right:16px!important}.cbhb-drawer-group>summary{min-height:44px}.drawer .cbhb-drawer-nav>a{min-height:42px}}

/* CBHB 2026-11-03 - suppression des filets decoratifs encore visibles.
   Ne touche pas aux bordures des formulaires, au focus clavier, ni aux scores. */
body .site .module,
body .site .module > .module-title,
body .site .module > .white-block,
body .site .module .live-match-card,
body .site .module .live-public-block,
body .site .module .news-carousel-block,
body .site .module .news-carousel-shell {
  border: 0 !important;
  border-image: none !important;
  outline: 0;
}
body .site .module > .module-title:focus-visible,
body .site .module > a.module-title:focus-visible {
  outline: 3px solid var(--flash,#70f000) !important;
  outline-offset: 3px;
}
body .site .module .live-match-card {
  box-shadow: none !important;
}
body .site .module .live-match-card + .live-match-card {
  margin-top: 3px !important;
}


/* CBHB_MENU_RESPONSIVE_V1 : menu latéral sur tous écrans, thèmes conservés. */
html body .drawer{position:fixed!important;top:0!important;right:0!important;left:auto!important;box-sizing:border-box!important;width:min(320px,100vw)!important;max-width:100vw!important;height:100vh!important;height:100dvh!important;overflow-y:auto!important;overscroll-behavior:contain!important;z-index:10020!important;transform:translateX(102%)!important;transition:transform .25s ease!important;visibility:hidden!important;pointer-events:none!important;padding:70px 18px 28px!important;border:0!important;box-shadow:none!important}
html body .drawer.open{transform:translateX(0)!important;visibility:visible!important;pointer-events:auto!important}
html body .drawer .close{position:sticky!important;top:-54px!important;float:right!important;z-index:2!important;cursor:pointer!important}
html body .cbhb-drawer-nav{clear:both;display:flex;flex-direction:column;gap:3px;min-width:0}
html body .cbhb-drawer-nav>a,html body .cbhb-drawer-nav .cbhb-drawer-group>summary{min-height:44px;display:flex;align-items:center;box-sizing:border-box;white-space:normal;overflow-wrap:anywhere}
html body .cbhb-drawer-nav .cbhb-drawer-group{border:0!important;min-width:0}
html body .cbhb-drawer-backdrop:not([hidden]){position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:10019;display:block}
html body.cbhb-menu-open{overflow:hidden!important}
@media(max-width:600px){html body .drawer{width:100vw!important;padding-left:max(18px,env(safe-area-inset-left))!important;padding-right:max(18px,env(safe-area-inset-right))!important}}
@media(prefers-reduced-motion:reduce){html body .drawer{transition:none!important}}



/* CBHB : page FDME sans cadre rectangulaire extérieur */
html body .site > .module.fdme-page {
  border: 0 !important;
  border-image: none !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}
html body .site > .module.fdme-page::before,
html body .site > .module.fdme-page::after {
  content: none !important;
  box-shadow: none !important;
  border: 0 !important;
}
