/* ============================================================
   Bischwihr — main.css v3
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400&family=Montserrat:wght@500;600;700&display=swap');

:root {
  --blanc:#FFFFFF; --noir:#111111;
  --gris-10:#F7F7F7; --gris-20:#EEEEEE; --gris-40:#CCCCCC; --gris-60:#888888; --gris-80:#444444;
  --jaune:#F5C518; --jaune-pale:#FFFBEA;
  --rouge:#C8102E; --rouge-pale:#FDF0F2;
  --vert:#1A7F37; --vert-pale:#D1FAE5;
  --bleu:#1A56DB;
  --font-titre:'Montserrat',sans-serif;
  --font-corps:'Inter',sans-serif;
  --h1:2.125rem; --h2:1.625rem; --h3:1.25rem;
  --corps:1rem; --petit:0.8125rem;
  --max-w:1160px; --section-py:4rem;
  --radius:4px; --radius-lg:8px;
  --shadow-sm:0 1px 3px rgba(0,0,0,.08);
  --shadow:0 2px 8px rgba(0,0,0,.10);
  --shadow-lg:0 4px 20px rgba(0,0,0,.12);
  --tr:150ms ease;
  --navbar-h:64px;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{font-family:var(--font-corps);font-weight:400;font-size:var(--corps);line-height:1.7;color:var(--noir);background:var(--blanc);padding-top:var(--navbar-h);}
img,video,svg{display:block;max-width:100%;height:auto;}
a{color:inherit;text-decoration:none;}
ul,ol{list-style:none;}
button{cursor:pointer;font-family:inherit;}
input,select,textarea{font-family:var(--font-corps);}

/* ── ACCESSIBILITÉ ── */
.skip-link{position:absolute;top:-100px;left:1rem;z-index:9999;background:var(--noir);color:var(--blanc);padding:.5rem 1rem;border-radius:var(--radius);font-family:var(--font-titre);font-size:.875rem;transition:top var(--tr);}
.skip-link:focus{top:.75rem;}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}

/* ── TYPOGRAPHIE ── */
h1,h2,h3,h4,h5,h6{font-family:var(--font-titre);font-weight:700;line-height:1.25;color:var(--noir);}
h1{font-size:var(--h1);} h2{font-size:var(--h2);} h3{font-size:var(--h3);font-weight:600;}
h4{font-size:1rem;font-weight:600;}
p{margin-bottom:1rem;} p:last-child{margin-bottom:0;}
strong{font-weight:600;} small{font-size:var(--petit);}

/* ── LAYOUT ── */
.container{max-width:var(--max-w);margin:0 auto;padding:0 1.5rem;}
.section{padding:var(--section-py) 0;}
.section--grey{background:var(--gris-10);}
.section--border-top{border-top:1px solid var(--gris-20);}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:1.25rem;}
@media(max-width:900px){.grid-3,.grid-4{grid-template-columns:1fr 1fr;}}
@media(max-width:600px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr;}}
.page-layout{display:grid;grid-template-columns:1fr 300px;gap:3rem;align-items:start;}
.page-layout--full{grid-template-columns:1fr;}
@media(max-width:900px){.page-layout{grid-template-columns:1fr;}}

/* ════════════════════
   NAVBAR
════════════════════ */
.navbar{
  position:fixed;top:0;left:0;width:100%;
  z-index:1000;
  background:var(--blanc);
  border-bottom:2px solid var(--noir);
  transition:box-shadow .3s ease;
}
.navbar.scrolled{box-shadow:0 4px 8px rgba(0,0,0,.15);}
.navbar__inner{
  max-width:var(--max-w);
  margin:0 auto;
  padding:0 1.5rem;
  display:flex;
  align-items:stretch;
  height:var(--navbar-h);
}

.navbar__brand{
  display:flex;align-items:center;gap:.75rem;
  padding-right:2rem;
  border-right:1px solid var(--gris-20);
  flex-shrink:0;text-decoration:none;
}
.navbar__logo{height:36px;width:auto;flex-shrink:0;}
.navbar__commune{font-family:var(--font-titre);font-size:.9375rem;font-weight:700;color:var(--noir);line-height:1.1;display:block;}
.navbar__dept{font-family:var(--font-corps);font-size:.6875rem;color:var(--gris-60);letter-spacing:.04em;text-transform:uppercase;display:block;margin-top:.1rem;}

.navbar__menu{display:flex;align-items:stretch;flex:1;padding-left:1.5rem;}
.nav-item{position:relative;display:flex;align-items:stretch;}
.nav-link{
  display:flex;align-items:center;
  padding:0 .9rem;
  font-family:var(--font-titre);font-size:.8125rem;font-weight:500;
  color:var(--gris-80);letter-spacing:.02em;white-space:nowrap;
  transition:color var(--tr);position:relative;
}
.nav-link:hover{color:var(--noir);}
.nav-link.active{color:var(--noir);}
.nav-link.active::after{content:'';position:absolute;bottom:-2px;left:0;right:0;height:2px;background:var(--jaune);}
.nav-link .chevron{margin-left:.3rem;font-size:.625rem;transition:transform var(--tr);}
.nav-item:hover .chevron,.nav-item.dropdown-open .chevron{transform:rotate(180deg);}

.dropdown{
  position:absolute;top:calc(100% + 2px);left:0;min-width:220px;
  background:var(--blanc);
  border:1px solid var(--gris-20);border-top:2px solid var(--noir);
  box-shadow:var(--shadow-lg);
  opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity var(--tr),transform var(--tr),visibility var(--tr);
  z-index:200;
}
.nav-item:hover .dropdown,.nav-item.dropdown-open .dropdown{opacity:1;visibility:visible;transform:translateY(0);}
.dropdown__item{display:block;padding:.625rem 1.1rem;font-family:var(--font-corps);font-size:.875rem;color:var(--gris-80);border-bottom:1px solid var(--gris-20);transition:background var(--tr),color var(--tr);}
.dropdown__item:last-child{border-bottom:0;}
.dropdown__item:hover{background:var(--gris-10);color:var(--noir);}

.navbar__search{display:flex;align-items:center;margin-left:auto;padding-left:1.5rem;border-left:1px solid var(--gris-20);flex-shrink:0;}
.navbar__search form{display:flex;align-items:center;}
.navbar__search-input{width:180px;height:34px;padding:0 .75rem;font-family:var(--font-corps);font-size:.875rem;border:1px solid var(--gris-40);border-right:none;border-radius:var(--radius) 0 0 var(--radius);outline:none;background:var(--blanc);transition:border-color var(--tr);}
.navbar__search-input:focus{border-color:var(--noir);}
.navbar__search-btn{height:34px;padding:0 .75rem;background:var(--noir);color:var(--blanc);border:1px solid var(--noir);border-radius:0 var(--radius) var(--radius) 0;font-size:.875rem;transition:background var(--tr);}
.navbar__search-btn:hover{background:var(--gris-80);}

.navbar__burger{
  display:none;
  flex-direction:column;justify-content:center;align-items:center;gap:5px;
  width:40px;height:40px;
  margin-left:auto;flex-shrink:0;
  background:none;border:none;cursor:pointer;padding:0;
}
.navbar__burger span{display:block;width:22px;height:2px;background:var(--noir);border-radius:1px;transition:transform .25s ease, opacity .2s ease;transform-origin:center;}

.nav-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity .3s;z-index:999;}
.nav-overlay.active{opacity:1;pointer-events:all;}

/* ── NAVBAR RESPONSIVE ── */
@media(max-width:900px){
  .navbar__search{display:none;}
  .navbar__burger{display:flex;}
  .navbar__menu{
    position:fixed;top:0;left:0;bottom:0;width:280px;
    background:var(--blanc);border-right:2px solid var(--noir);
    flex-direction:column;align-items:stretch;
    padding:4.5rem 0 2rem;overflow-y:auto;
    z-index:1000;
    transform:translateX(-100%);transition:transform .25s ease;
    flex:none;
  }
  .navbar__menu.open{transform:translateX(0);}
  .nav-item{flex-direction:column;align-items:stretch;}
  .nav-link{padding:.75rem 1.5rem;font-size:.9375rem;border-bottom:1px solid var(--gris-20);justify-content:space-between;}
  .nav-link.active::after{display:none;}
  .nav-link.active{color:var(--noir);background:var(--jaune-pale);}
  .dropdown{position:static;border:none;border-top:none;box-shadow:none;opacity:1;visibility:visible;transform:none;background:var(--gris-10);display:none;transition:none;}
  .nav-item.dropdown-open .dropdown{display:block;}
  .dropdown__item{padding:.625rem 1.5rem .625rem 2rem;font-size:.875rem;}
  .nav-item.dropdown-open .chevron{transform:rotate(180deg);}
}

/* ── EN-TÊTE DE PAGE ── */
.page-header{background:url("/assets/images/catho.png");background-size:cover;background-repeat:no-repeat;background-position:center top;padding:3rem 0;position:relative;overflow:hidden;animation:scrollHeader 60s linear infinite;}
@keyframes scrollHeader{0%{background-position:center top;}50%{background-position:center bottom;}100%{background-position:center top;}}
.page-header::before{content:'';position:absolute;inset:0;background:rgba(0,0,0,.45);z-index:0;}
.page-header::after{content:'';position:absolute;bottom:0;left:0;right:0;height:4px;background:var(--jaune);z-index:1;}
.page-header__inner{max-width:var(--max-w);margin:0 auto;padding:0 1.5rem;position:relative;z-index:1;}
.page-header__breadcrumb{font-size:var(--petit);color:rgba(255,255,255,.55);margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;}
.page-header__breadcrumb a{color:rgba(255,255,255,.7);}
.page-header__breadcrumb a:hover{color:var(--blanc);}
.page-header__breadcrumb span{color:rgba(255,255,255,.35);}
.page-header h1{color:var(--blanc);}
.page-header__desc{color:rgba(255,255,255,.8);font-size:1.0625rem;margin-top:.5rem;max-width:600px;}

/* ── SECTION HEADER ── */
.section-header{margin-bottom:2rem;display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;}
.section-header h2{margin-bottom:0;}
.section-header__more{font-family:var(--font-titre);font-size:.8125rem;font-weight:600;color:var(--gris-80);text-decoration:underline;white-space:nowrap;transition:color var(--tr);}
.section-header__more:hover{color:var(--noir);}

/* ── BOUTONS ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.625rem 1.25rem;font-family:var(--font-titre);font-size:.8125rem;font-weight:600;letter-spacing:.02em;border-radius:var(--radius);border:1.5px solid transparent;transition:all var(--tr);cursor:pointer;white-space:nowrap;text-decoration:none;line-height:1;}
.btn--primary{background:var(--noir);color:var(--blanc);border-color:var(--noir);}
.btn--primary:hover{background:var(--gris-80);border-color:var(--gris-80);}
.btn--outline{background:transparent;color:var(--noir);border-color:var(--noir);}
.btn--outline:hover{background:var(--noir);color:var(--blanc);}
.btn--jaune{background:var(--jaune);color:var(--noir);border-color:var(--jaune);}
.btn--jaune:hover{background:#e0b315;border-color:#e0b315;}
.btn--danger{background:var(--rouge);color:var(--blanc);border-color:var(--rouge);}
.btn--ghost{background:transparent;color:var(--gris-80);border-color:var(--gris-40);}
.btn--ghost:hover{background:var(--gris-10);color:var(--noir);}
.btn--sm{padding:.375rem .875rem;font-size:.75rem;}
.btn--lg{padding:.875rem 1.75rem;font-size:.9375rem;}
.btn:disabled{opacity:.45;cursor:not-allowed;}

/* ── BADGES ── */
.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;font-family:var(--font-titre);font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border-radius:2px;}
.badge--grey{background:var(--gris-20);color:var(--gris-80);}
.badge--jaune{background:var(--jaune);color:var(--noir);}
.badge--rouge{background:var(--rouge-pale);color:var(--rouge);}
.badge--vert{background:var(--vert-pale);color:#065f46;}
.badge--dot::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;}

/* ── CARDS ── */
.card{background:var(--blanc);border:1px solid var(--gris-20);border-radius:var(--radius-lg);overflow:hidden;transition:box-shadow var(--tr);}
.card:hover{box-shadow:var(--shadow);}
.card__img{width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--gris-20);display:block;}
.card__img-placeholder{width:100%;aspect-ratio:16/9;background:var(--gris-10);display:flex;align-items:center;justify-content:center;color:var(--gris-40);font-size:2rem;}
.card__body{padding:1.25rem;}
.card__meta{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.5rem;}
.card__date{font-size:var(--petit);color:var(--gris-60);}
.card__title{font-family:var(--font-titre);font-size:1rem;font-weight:600;color:var(--noir);margin-bottom:.4rem;line-height:1.3;}
.card__excerpt{font-size:.875rem;color:var(--gris-80);line-height:1.6;}
.card__footer{padding:.875rem 1.25rem;border-top:1px solid var(--gris-20);display:flex;align-items:center;gap:.75rem;}

/* ── ASSOCIATION CARDS ── */
.asso-card{
  background:var(--blanc);border:1px solid var(--gris-20);
  border-radius:var(--radius-lg);overflow:hidden;
  transition:box-shadow var(--tr),transform var(--tr);
  cursor:pointer;display:flex;flex-direction:column;
}
.asso-card:hover{box-shadow:var(--shadow);transform:translateY(-2px);}
.asso-card__img{width:100%;height:180px;object-fit:cover;background:var(--gris-10);display:block;flex-shrink:0;}
.asso-card__placeholder{width:100%;height:180px;background:linear-gradient(135deg,var(--gris-10) 0%,var(--gris-20) 100%);display:flex;align-items:center;justify-content:center;font-size:3rem;flex-shrink:0;}
.asso-card__body{padding:1.25rem;flex:1;display:flex;flex-direction:column;}
.asso-card__name{font-family:var(--font-titre);font-size:1rem;font-weight:700;color:var(--noir);margin-bottom:.5rem;line-height:1.2;}
.asso-card__desc{font-size:.875rem;color:var(--gris-80);line-height:1.6;flex:1;margin-bottom:.875rem;}
.asso-card__contact{font-size:.8125rem;color:var(--gris-60);display:flex;align-items:center;gap:.4rem;}

/* ── FORMULAIRES ── */
.form-group{margin-bottom:1.25rem;}
.form-label{display:block;font-family:var(--font-titre);font-size:.8125rem;font-weight:600;color:var(--noir);margin-bottom:.375rem;}
.form-label .required{color:var(--rouge);margin-left:.15rem;}
.form-control{display:block;width:100%;padding:.625rem .875rem;font-family:var(--font-corps);font-size:.9375rem;color:var(--noir);background:var(--blanc);border:1px solid var(--gris-40);border-radius:var(--radius);outline:none;transition:border-color var(--tr);line-height:1.5;}
.form-control:focus{border-color:var(--noir);}
.form-control::placeholder{color:var(--gris-60);}
.form-control.is-invalid{border-color:var(--rouge);}
textarea.form-control{resize:vertical;min-height:120px;}
select.form-control{appearance:none;cursor:pointer;}
.form-hint{font-size:var(--petit);color:var(--gris-60);margin-top:.3rem;}
.form-error{font-size:var(--petit);color:var(--rouge);margin-top:.3rem;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
@media(max-width:600px){.form-row{grid-template-columns:1fr;}}

/* ── TABLEAUX ── */
.table-wrap{overflow-x:auto;}
table{width:100%;border-collapse:collapse;font-size:.875rem;}
thead th{padding:.625rem 1rem;font-family:var(--font-titre);font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--gris-60);background:var(--gris-10);border-bottom:1px solid var(--gris-20);text-align:left;white-space:nowrap;}
tbody td{padding:.75rem 1rem;border-bottom:1px solid var(--gris-20);vertical-align:middle;color:var(--noir);}
tbody tr:last-child td{border-bottom:0;}
tbody tr:hover{background:var(--gris-10);}

/* ── DIVIDER ── */
.divider{border:none;border-top:1px solid var(--gris-20);margin:2rem 0;}
.divider--bold{border-top:2px solid var(--noir);}

/* ── ÉTATS ── */
.empty-state{text-align:center;padding:3rem 1.5rem;color:var(--gris-60);font-size:.9375rem;}
.empty-state__icon{font-size:2.5rem;margin-bottom:.75rem;}
.loading-state{text-align:center;padding:2.5rem 1.5rem;color:var(--gris-60);font-size:.9375rem;}
.loading-state::before{content:'';display:block;width:28px;height:28px;border:2px solid var(--gris-20);border-top-color:var(--noir);border-radius:50%;margin:0 auto .75rem;animation:spin .7s linear infinite;}
.error-state{text-align:center;padding:2rem 1.5rem;color:var(--rouge);font-size:.875rem;}
@keyframes spin{to{transform:rotate(360deg);}}

/* ── PAGINATION ── */
.pagination{display:flex;align-items:center;justify-content:center;gap:.375rem;margin-top:2.5rem;}
.pagination__btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;font-family:var(--font-titre);font-size:.8125rem;font-weight:500;border:1px solid var(--gris-20);background:var(--blanc);color:var(--gris-80);border-radius:var(--radius);transition:all var(--tr);cursor:pointer;}
.pagination__btn:hover{background:var(--gris-10);color:var(--noir);}
.pagination__btn--active{background:var(--noir);color:var(--blanc);border-color:var(--noir);}
.pagination__btn:disabled{opacity:.35;cursor:not-allowed;}

/* ── SIDEBAR ── */
.sidebar__block{border:1px solid var(--gris-20);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:1.5rem;}
.sidebar__block-title{padding:.875rem 1.1rem;font-family:var(--font-titre);font-size:.8125rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gris-60);border-bottom:1px solid var(--gris-20);background:var(--gris-10);}
.sidebar__link{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.1rem;font-size:.875rem;color:var(--gris-80);border-bottom:1px solid var(--gris-20);transition:background var(--tr),color var(--tr);}
.sidebar__link:last-child{border-bottom:0;}
.sidebar__link:hover{background:var(--gris-10);color:var(--noir);}
.sidebar__link.active{background:var(--jaune-pale);color:var(--noir);font-weight:500;}

/* ── FOOTER ── */
footer{background:var(--noir);color:rgba(255,255,255,.65);font-family:var(--font-corps);font-size:.875rem;margin-top:auto;}
.footer__top{max-width:var(--max-w);margin:0 auto;padding:3rem 1.5rem;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:2.5rem;}
.footer__brand-row{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;}
.footer__brand-logo-wrap{width:44px;height:44px;background:rgba(255,255,255,0.92);border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:3px;}
.footer__brand-logo-wrap img{height:38px;width:auto;display:block;}
.footer__brand-name{font-family:var(--font-titre);font-size:.9375rem;font-weight:700;color:var(--blanc);}
.footer__brand-dept{font-size:var(--petit);color:rgba(255,255,255,.4);margin-top:.1rem;}
.footer__desc{color:rgba(255,255,255,.45);line-height:1.65;font-size:var(--petit);}
.footer__col h4{font-family:var(--font-titre);font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--jaune);margin-bottom:.875rem;}
.footer__col a{display:block;color:rgba(255,255,255,.5);font-size:var(--petit);margin-bottom:.375rem;transition:color var(--tr);}
.footer__col a:hover{color:var(--blanc);}
.footer__bottom{border-top:1px solid rgba(255,255,255,.1);padding:1rem 1.5rem;max-width:var(--max-w);margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;font-size:.75rem;color:rgba(255,255,255,.3);}
.footer__bottom a{color:rgba(255,255,255,.35);transition:color var(--tr);}
.footer__bottom a:hover{color:var(--blanc);}
@media(max-width:900px){.footer__top{grid-template-columns:1fr 1fr;}}
@media(max-width:600px){.footer__top{grid-template-columns:1fr;}.footer__bottom{flex-direction:column;text-align:center;}}

/* ── TOAST ── */
.toast-container{position:fixed;bottom:1.5rem;right:1.5rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem;pointer-events:none;}
.toast{background:var(--noir);color:var(--blanc);padding:.75rem 1.1rem;border-radius:var(--radius);font-size:.875rem;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:.6rem;max-width:320px;animation:toastIn .2s ease;border-left:3px solid var(--gris-60);pointer-events:all;}
.toast--ok{border-left-color:var(--vert);}
.toast--err{border-left-color:var(--rouge);}
.toast--info{border-left-color:var(--bleu);}
@keyframes toastIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

/* ── UTILITAIRES ── */
.text-center{text-align:center;}.text-right{text-align:right;}.text-muted{color:var(--gris-60);}.text-small{font-size:var(--petit);}
.fw-500{font-weight:500;}.fw-600{font-weight:600;}.fw-700{font-weight:700;}
.mt-1{margin-top:.5rem;}.mt-2{margin-top:1rem;}.mt-3{margin-top:1.5rem;}.mt-4{margin-top:2rem;}
.mb-1{margin-bottom:.5rem;}.mb-2{margin-bottom:1rem;}.mb-3{margin-bottom:1.5rem;}.mb-4{margin-bottom:2rem;}
.d-flex{display:flex;}.align-center{align-items:center;}.gap-1{gap:.5rem;}.gap-2{gap:1rem;}.flex-wrap{flex-wrap:wrap;}
.hidden{display:none!important;}
@media(max-width:900px){.container{padding:0 1rem;}}

/* ── TAILLES RTE ── */
.txt-xxs{font-size:.65rem!important;}
.txt-xs{font-size:.8rem!important;}
.txt-sm{font-size:.9rem!important;}
.txt-md{font-size:1rem!important;}
.txt-lg{font-size:1.2rem!important;}
.txt-xl{font-size:1.5rem!important;}
.txt-xxl{font-size:2rem!important;}