:root{
  --green:#1C6B39;
  --green-dark:#123524;
  --green-darker:#12241A;
  --green-border:#2F4A3B;
  --green-gray:#A9BBAE;
  --green-gray-soft:#7C9184;
  --cream:#FAF6EE;
  --cream-alt:#F1E8D2;
  --cream-alt-2:#EFE6D3;
  --beige-border:#E4D9C6;
  --beige-border-2:#D8C9A8;
  --ink:#2B2420;
  --ink-soft:#4A4034;
  --ink-softer:#6B5D4A;
  --ink-softest:#8A7A63;
  --gold:#F0C24C;
  --terracotta:#B0452E;
  --brown:#3D2A1E;
  --white:#FFFFFF;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:'Public Sans', sans-serif;
  line-height:1.6;
}
img{max-width:100%;display:block;}
a{color:inherit;}

h1,h2,h3{
  font-family:'Lora', serif;
  margin:0;
  color:var(--green-dark);
  line-height:1.15;
}
h1,h2{font-family:'Poppins', sans-serif;font-weight:600;}

.eyebrow{
  display:inline-block;
  font-family:'Caveat', cursive;
  font-style:italic;
  font-weight:500;
  font-size:1.5rem;
  color:var(--green);
  margin-bottom:6px;
}

.wrap{max-width:1120px;margin:0 auto;padding:0 24px;}

.btn{
  display:inline-block;
  padding:12px 24px;
  border-radius:4px;
  font-weight:600;
  font-size:.95rem;
  text-decoration:none;
  border:2px solid transparent;
  transition:opacity .15s ease;
}
.btn:hover{opacity:.88;}
.btn-primary{background:var(--green);color:var(--white);}
.btn-outline{background:transparent;color:var(--green-dark);border-color:var(--green);}
.btn-outline-light{background:transparent;color:var(--white);border-color:var(--white);}
.btn-terracotta{background:var(--terracotta);color:var(--white);}
.btn-gold{background:var(--gold);color:var(--brown);}

/* ---------- header / nav ---------- */
.site-header{
  background:var(--cream);
  border-bottom:2px solid var(--green);
  position:sticky;
  top:0;
  z-index:50;
}
.nav-inner{
  max-width:1200px;
  margin:0 auto;
  padding:14px 24px;
  display:flex;
  align-items:center;
  gap:24px;
}
.brand{
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
  margin-right:auto;
}
.brand-logo{
  width:48px;
  height:48px;
  border-radius:50%;
  object-fit:cover;
  border:2px solid var(--green);
}
.brand-name{
  font-family:'Lora', serif;
  font-weight:600;
  font-size:1rem;
  color:var(--green-dark);
  line-height:1.2;
}
.main-nav{
  display:flex;
  align-items:center;
  gap:22px;
  flex-wrap:wrap;
}
.main-nav a{
  text-decoration:none;
  font-weight:600;
  font-size:.92rem;
  color:var(--ink-soft);
  padding:4px 2px;
  border-bottom:2px solid transparent;
  white-space:nowrap;
}
.main-nav a:hover,.main-nav a.active{
  color:var(--green-dark);
  border-bottom-color:var(--gold);
}
.nav-actions{
  display:flex;
  align-items:center;
  gap:14px;
}
.amicale-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  background:var(--cream-alt);
  border:1px solid var(--terracotta);
  color:var(--terracotta);
  font-weight:700;
  font-size:.82rem;
  padding:6px 14px;
  border-radius:20px;
  text-decoration:none;
  white-space:nowrap;
}
.amicale-pill:hover{background:var(--terracotta);color:var(--white);}
.btn-cta{
  background:var(--green);
  color:var(--white);
  text-decoration:none;
  font-weight:700;
  font-size:.9rem;
  padding:10px 20px;
  border-radius:4px;
  white-space:nowrap;
}
.btn-cta:hover{background:var(--green-dark);}
.nav-toggle{
  display:none;
  background:none;
  border:2px solid var(--green);
  border-radius:4px;
  color:var(--green-dark);
  font-size:1.3rem;
  width:42px;
  height:42px;
  cursor:pointer;
}

@media (max-width:980px){
  .main-nav{
    display:none;
    order:3;
    width:100%;
    flex-direction:column;
    align-items:flex-start;
    gap:4px;
    padding-top:14px;
    border-top:1px solid var(--beige-border);
    margin-top:14px;
  }
  .main-nav.open{display:flex;}
  .nav-actions{
    display:none;
    order:4;
    width:100%;
    flex-direction:column;
    align-items:stretch;
    gap:10px;
    padding-bottom:8px;
  }
  .nav-actions.open{display:flex;}
  .amicale-pill,.btn-cta{justify-content:center;text-align:center;}
  .nav-toggle{display:block;}
  .nav-inner{flex-wrap:wrap;}
}

/* ---------- hero ---------- */
.hero{
  padding:64px 0 56px;
  text-align:center;
}
.hero h1{
  font-size:clamp(1.7rem,3.4vw,2.4rem);
  max-width:820px;
  margin:0 auto 20px;
}
.hero p{
  max-width:640px;
  margin:0 auto 30px;
  color:var(--ink-softer);
  font-size:1.08rem;
}
.hero .actions{
  display:flex;
  justify-content:center;
  gap:16px;
  flex-wrap:wrap;
}

.page-hero{
  padding:56px 0 40px;
  text-align:center;
  border-bottom:1px solid var(--beige-border);
  background:var(--cream-alt-2);
}
.page-hero h1{font-size:clamp(1.5rem,3vw,2rem);}
.page-hero p{
  max-width:620px;
  margin:14px auto 0;
  color:var(--ink-softer);
}

section{padding:64px 0;}
.section-alt{background:var(--cream-alt-2);}
.section-head{text-align:center;max-width:680px;margin:0 auto 40px;}
.section-head h2{font-size:clamp(1.4rem,2.8vw,1.8rem);}
.section-head p{color:var(--ink-softer);margin-top:12px;}

/* ---------- stats ---------- */
.stats{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
  max-width:760px;
  margin:0 auto;
}
.stats .stat{
  text-align:center;
  background:var(--white);
  border:1px solid var(--beige-border);
  border-radius:6px;
  padding:26px 16px;
}
.stats .stat .num{
  font-family:'Lora', serif;
  font-weight:700;
  font-size:2.2rem;
  color:var(--green);
  display:block;
}
.stats .stat .label{
  color:var(--ink-softer);
  font-size:.9rem;
  margin-top:4px;
}

/* ---------- preview cards (societe / ecole) ---------- */
.preview-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:48px;
  align-items:center;
}
.preview-grid.reverse .preview-media{order:2;}
.preview-media{
  border-radius:8px;
  overflow:hidden;
  border:1px solid var(--beige-border);
}
.preview-media img{
  width:100%;
  height:auto;
  display:block;
}
.preview-text h3{font-size:1.6rem;margin-bottom:14px;}
.preview-text p{color:var(--ink-softer);margin-bottom:20px;}
.preview-text .actions{display:flex;gap:14px;flex-wrap:wrap;}

.placeholder-photo{
  width:100%;
  aspect-ratio:4/3;
  background:
    repeating-linear-gradient(45deg, var(--cream-alt), var(--cream-alt) 10px, var(--cream-alt-2) 10px, var(--cream-alt-2) 20px);
  border:1px dashed var(--beige-border-2);
  border-radius:8px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  color:var(--ink-softest);
  text-align:center;
  gap:8px;
  padding:20px;
}
.placeholder-photo svg{width:38px;height:38px;opacity:.6;}
.placeholder-photo span{font-size:.85rem;font-weight:600;}

/* ---------- amicale block ---------- */
.amicale-block{
  background:var(--cream-alt);
  border-top:1px solid var(--beige-border);
  border-bottom:1px solid var(--beige-border);
}
.amicale-inner{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:48px;
  align-items:center;
}
.amicale-text .eyebrow{color:var(--terracotta);}
.amicale-text h2{
  color:var(--brown);
  font-size:clamp(1.6rem,3.4vw,2.3rem);
  margin-bottom:6px;
}
.amicale-text .tagline{
  font-family:'Caveat', cursive;
  font-weight:700;
  font-size:1.7rem;
  color:var(--terracotta);
  margin:0 0 14px;
}
.amicale-text p.desc{color:var(--ink-soft);margin-bottom:16px;}
.amicale-text .date{
  font-weight:700;
  color:var(--brown);
  margin-bottom:22px;
}
.amicale-media{position:relative;}
.amicale-media img.main-photo{
  border-radius:8px;
  border:4px solid var(--white);
  box-shadow:0 16px 34px rgba(61,42,30,.22);
}
.amicale-medaillon{
  position:absolute;
  bottom:-18px;
  right:-18px;
  width:88px;
  height:88px;
  border-radius:50%;
  border:4px solid var(--white);
  box-shadow:0 8px 18px rgba(61,42,30,.28);
  object-fit:cover;
  background:var(--white);
}

/* ---------- cards (agenda / actualites) ---------- */
.card-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:26px;
}
.card{
  background:var(--white);
  border:1px solid var(--beige-border);
  border-radius:8px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.card .card-media{aspect-ratio:16/10;}
.card .card-media img{width:100%;height:100%;object-fit:cover;}
.card .card-body{padding:22px;display:flex;flex-direction:column;gap:8px;flex:1;}
.card .card-date{
  font-size:.8rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:var(--green);
}
.card h3{font-size:1.15rem;}
.card p{color:var(--ink-softer);font-size:.95rem;margin:0;}
.card .card-link{
  margin-top:auto;
  font-weight:700;
  font-size:.88rem;
  color:var(--green-dark);
  text-decoration:none;
  border-bottom:2px solid var(--gold);
  align-self:flex-start;
}

.notice{
  background:var(--cream-alt);
  border:1px dashed var(--beige-border-2);
  border-radius:6px;
  padding:16px 20px;
  color:var(--ink-softer);
  font-size:.92rem;
  font-style:italic;
  text-align:center;
  max-width:760px;
  margin:0 auto 40px;
}

/* ---------- committee ---------- */
.committee-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:18px;
}
.committee-card{
  background:var(--white);
  border:1px solid var(--beige-border);
  border-radius:6px;
  padding:20px 22px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}
.committee-card .role{
  font-size:.8rem;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:var(--green);
  font-weight:700;
  margin-bottom:4px;
}
.committee-card .name{font-weight:600;color:var(--ink);}
.committee-card a{
  color:var(--ink-softer);
  text-decoration:none;
  font-size:.9rem;
  white-space:nowrap;
}
.committee-card a:hover{color:var(--green-dark);}

.subhead{
  font-family:'Lora', serif;
  font-size:1.3rem;
  color:var(--green-dark);
  margin:44px 0 18px;
}
.subhead:first-of-type{margin-top:0;}

/* ---------- gallery ---------- */
.gallery-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:16px;
}
.gallery-grid .g-item{
  aspect-ratio:1/1;
  border-radius:6px;
  overflow:hidden;
  border:1px solid var(--beige-border);
}
.gallery-grid .g-item img{width:100%;height:100%;object-fit:cover;}
.gallery-grid .g-item.wide{grid-column:span 2;aspect-ratio:2/1;}

/* ---------- join options ---------- */
.join-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:28px;
}
.join-card{
  background:var(--white);
  border:1px solid var(--beige-border);
  border-radius:8px;
  padding:36px 30px;
  text-align:center;
}
.join-card .icon{
  width:56px;
  height:56px;
  border-radius:50%;
  background:var(--cream-alt);
  color:var(--green);
  display:flex;
  align-items:center;
  justify-content:center;
  margin:0 auto 18px;
}
.join-card h3{font-size:1.3rem;margin-bottom:12px;}
.join-card p{color:var(--ink-softer);margin-bottom:22px;}

/* ---------- contact ---------- */
.contact-wrap{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:40px;
}
.contact-info{
  background:var(--white);
  border:1px solid var(--beige-border);
  border-radius:8px;
  padding:34px;
}
.contact-info .row{
  display:flex;
  gap:14px;
  padding:14px 0;
  border-top:1px solid var(--beige-border);
}
.contact-info .row:first-of-type{border-top:none;padding-top:0;}
.contact-info .icon{color:var(--green);flex-shrink:0;width:22px;}
.contact-info .label{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-softest);margin-bottom:2px;}
.contact-info .value{font-weight:600;color:var(--ink);}
.contact-info .value a{color:var(--green-dark);text-decoration:none;}
.social-row{display:flex;gap:14px;margin-top:24px;}
.social-row a{
  width:40px;height:40px;border-radius:50%;
  background:var(--cream-alt);
  display:flex;align-items:center;justify-content:center;
  color:var(--green-dark);
}

/* ---------- schedule (amicale) ---------- */
.schedule-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:26px;
}
.schedule-card{
  background:var(--white);
  border:1px solid var(--beige-border);
  border-radius:8px;
  padding:26px 24px;
}
.schedule-card .day-name{
  font-family:'Lora', serif;
  font-weight:600;
  font-size:1.25rem;
  color:var(--green-dark);
}
.schedule-card .day-sub{
  color:var(--terracotta);
  font-size:.92rem;
  margin:4px 0 16px;
  font-style:italic;
}
.schedule-card .row{
  display:flex;
  gap:14px;
  padding:8px 0;
  border-top:1px dashed var(--beige-border-2);
}
.schedule-card .row:first-of-type{border-top:none;}
.schedule-card .time{
  font-weight:700;
  color:var(--green);
  min-width:54px;
}

/* ---------- loto highlight (amicale) ---------- */
.loto-highlight{
  background:linear-gradient(180deg, var(--terracotta) 0%, #8a3320 100%);
  color:var(--white);
  border-radius:8px;
  padding:40px 36px;
  text-align:center;
  max-width:760px;
  margin:0 auto;
}
.loto-highlight .tag{
  font-family:'Caveat', cursive;
  font-weight:700;
  font-size:1.4rem;
  color:var(--gold);
}
.loto-highlight h3{
  color:var(--white);
  font-size:clamp(1.8rem,4vw,2.4rem);
  margin:6px 0 4px;
}
.loto-highlight .when{
  color:#f1d9cf;
  margin-bottom:26px;
}
.loto-stats{
  display:flex;
  justify-content:center;
  gap:14px;
  flex-wrap:wrap;
}
.loto-stats .stat{
  background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.35);
  border-radius:6px;
  padding:16px 26px;
  min-width:130px;
}
.loto-stats .stat .num{
  font-family:'Lora', serif;
  font-weight:700;
  font-size:1.6rem;
  display:block;
}
.loto-stats .stat .unit{font-size:.85rem;color:#f1d9cf;}

/* ---------- map ---------- */
.map-frame{
  border-radius:8px;
  overflow:hidden;
  border:1px solid var(--beige-border);
  min-height:260px;
}
.map-frame iframe{width:100%;height:100%;border:0;min-height:260px;}

@media (max-width:900px){
  .schedule-grid{grid-template-columns:1fr;}
}

/* ---------- footer ---------- */
.site-footer{
  background:var(--green-darker);
  color:var(--green-gray);
  padding-top:56px;
}
.footer-inner{
  display:grid;
  grid-template-columns:1.6fr 1fr 1fr 1fr;
  gap:36px;
  padding-bottom:40px;
  border-bottom:1px solid var(--green-border);
}
.footer-brand{display:flex;flex-direction:column;gap:10px;}
.footer-logo{width:52px;height:52px;border-radius:50%;object-fit:cover;}
.footer-brand h3{color:var(--white);font-size:1.1rem;}
.footer-brand p{color:var(--green-gray-soft);font-size:.9rem;margin:0;}
.footer-social{display:flex;gap:12px;margin-top:6px;}
.footer-social a{
  width:36px;height:36px;border-radius:50%;
  border:1px solid var(--green-border);
  display:flex;align-items:center;justify-content:center;
  color:var(--green-gray);
  text-decoration:none;
}
.footer-social a:hover{background:var(--green);color:var(--white);}
.footer-col h4{
  color:var(--white);
  font-family:'Public Sans', sans-serif;
  font-size:.85rem;
  text-transform:uppercase;
  letter-spacing:.05em;
  margin-bottom:14px;
}
.footer-col a,.footer-col p{
  display:block;
  color:var(--green-gray-soft);
  text-decoration:none;
  font-size:.92rem;
  margin-bottom:10px;
}
.footer-col a:hover{color:var(--white);}
.footer-bottom{
  max-width:1200px;
  margin:0 auto;
  padding:20px 24px;
  display:flex;
  justify-content:space-between;
  font-size:.82rem;
  color:var(--green-gray-soft);
}
.footer-inner{max-width:1200px;margin:0 auto;padding:0 24px 40px;}

@media (max-width:900px){
  .preview-grid,.amicale-inner,.contact-wrap,.join-grid{grid-template-columns:1fr;}
  .preview-grid.reverse .preview-media{order:0;}
  .card-grid{grid-template-columns:1fr;}
  .stats{grid-template-columns:1fr;}
  .committee-grid{grid-template-columns:1fr;}
  .gallery-grid{grid-template-columns:repeat(2,1fr);}
  .footer-inner{grid-template-columns:1fr 1fr;}
  .footer-bottom{flex-direction:column;gap:6px;text-align:center;}
}
@media (max-width:560px){
  .gallery-grid{grid-template-columns:repeat(2,1fr);}
  .gallery-grid .g-item.wide{grid-column:span 2;}
  .footer-inner{grid-template-columns:1fr;}
  .amicale-medaillon{width:64px;height:64px;right:-10px;bottom:-10px;}
}
