:root{
    --indigo-950:#131D33;
    --indigo-900:#1B2A4A;
    --indigo-700:#28406F;
    --indigo-500:#4A6398;
    --indigo-200:#C4D0E4;
    --gold-600:#C4872A;
    --gold-500:#D9A441;
    --gold-300:#F0CD8A;
    --sage-700:#2F5F50;
    --sage-500:#3F7A66;
    --sage-300:#9AC4B4;
    --parchment:#F5F1E6;
    --parchment-dark:#EAE3D2;
    --white:#FFFFFF;
    --ink:#1C2230;
    --grey-600:#5B6472;
    --grey-300:#D8D9DD;

    --font-display:'Piazzolla', Georgia, serif;
    --font-body:'Work Sans', system-ui, sans-serif;
    --font-mono:'IBM Plex Mono', monospace;

    --container:1180px;
    --radius:14px;
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; scroll-behavior:auto !important;}
  }
  body{
    margin:0;
    font-family:var(--font-body);
    color:var(--ink);
    background:var(--white);
    line-height:1.55;
    -webkit-font-smoothing:antialiased;
  }
  img,svg{display:block; max-width:100%;}
  a{color:inherit; text-decoration:none;}
  ul{list-style:none; margin:0; padding:0;}
  h1,h2,h3,h4{font-family:var(--font-display); margin:0; color:var(--indigo-900); font-weight:600;}
  p{margin:0;}
  .wrap{max-width:var(--container); margin:0 auto; padding:0 28px;}
  .eyebrow{
    font-family:var(--font-mono);
    font-size:12.5px;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--gold-600);
    display:inline-flex;
    align-items:center;
    gap:10px;
  }
  .eyebrow::before{
    content:"";
    width:22px; height:1px;
    background:var(--gold-600);
    display:inline-block;
  }
  .btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:13px 24px;
    border-radius:999px;
    font-family:var(--font-body);
    font-weight:600;
    font-size:15px;
    cursor:pointer;
    border:1px solid transparent;
    transition:transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease;
  }
  .btn:hover{transform:translateY(-2px);}
  .btn-primary{background:var(--gold-500); color:var(--indigo-950);}
  .btn-primary:hover{background:var(--gold-300); box-shadow:0 10px 24px -10px rgba(217,164,65,.55);}
  .btn-ghost{border-color:rgba(255,255,255,.4); color:var(--white);}
  .btn-ghost:hover{background:rgba(255,255,255,.1);}
  .btn-outline{border-color:var(--indigo-900); color:var(--indigo-900);}
  .btn-outline:hover{background:var(--indigo-900); color:var(--white);}

  /* ---------- HEADER ---------- */
  header{
    position:fixed; top:0; left:0; right:0; z-index:100;
    padding:18px 0;
    transition:background .25s ease, padding .25s ease, box-shadow .25s ease;
  }
  header.scrolled{
    background:rgba(19,29,51,.92);
    backdrop-filter:blur(8px);
    padding:12px 0;
    box-shadow:0 6px 24px -12px rgba(0,0,0,.4);
  }
  header .wrap{display:flex; align-items:center; justify-content:space-between;}
  .logo{
    display:flex; align-items:center;
  }
  .logo svg{ height:34px; width:auto; display:block; }
  nav.primary-nav{display:flex; align-items:center; gap:34px;}
  nav.primary-nav a{
    font-size:14.5px; font-weight:500; color:rgba(255,255,255,.85);
    position:relative; padding:4px 0;
  }
  nav.primary-nav a::after{
    content:""; position:absolute; left:0; bottom:0; height:1px; width:0;
    background:var(--gold-500); transition:width .2s ease;
  }
  nav.primary-nav a:hover::after{width:100%;}
  .nav-cta{display:flex; align-items:center; gap:14px;}
  .nav-toggle{display:none; background:none; border:none; color:var(--white); font-size:24px; cursor:pointer;}

  @media (max-width:900px){
    nav.primary-nav{
      position:fixed; inset:0 0 0 auto; width:78%; max-width:320px;
      background:var(--indigo-950); flex-direction:column; align-items:flex-start;
      padding:100px 32px 32px; gap:26px;
      transform:translateX(100%); transition:transform .3s ease;
    }
    nav.primary-nav.open{transform:translateX(0);}
    .nav-toggle{display:block;}
    .nav-cta .btn-ghost{display:none;}
  }

  /* ---------- HERO ---------- */
  .hero{
    background:linear-gradient(175deg, var(--indigo-950) 0%, var(--indigo-900) 62%, var(--indigo-700) 100%);
    color:var(--white);
    padding:168px 0 96px;
    position:relative;
    overflow:hidden;
  }
  .hero .wrap{
    position:relative;
    z-index:2;
  }
  .hero .wrap.hero-single > div{
    max-width:760px;
  }
  .hero h1{
    color:var(--white);
    font-size:clamp(34px, 4.4vw, 54px);
    line-height:1.12;
    font-weight:600;
    margin:18px 0 22px;
    letter-spacing:-.01em;
  }
  .hero h1 em{color:var(--gold-400,var(--gold-500)); font-style:italic;}
  .hero p.lead{
    font-size:18px; color:var(--indigo-200); max-width:46ch; margin-bottom:34px;
  }
  .hero-actions{display:flex; flex-wrap:wrap; gap:16px;}
  .hero-stats{
    display:flex; gap:34px; margin-top:52px; flex-wrap:wrap;
  }
  .hero-stats .stat b{
    display:block; font-family:var(--font-mono); font-size:24px; color:var(--gold-500);
  }
  .hero-stats .stat span{font-size:13px; color:var(--indigo-200);}

  /* ---------- SECTION GENERICS ---------- */
  section{padding:96px 0;}
  .section-head{max-width:640px; margin-bottom:56px;}
  .section-head h2{font-size:clamp(28px,3vw,38px); margin:16px 0 14px; line-height:1.15;}
  .section-head p{color:var(--grey-600); font-size:17px;}
  .on-parchment{background:var(--parchment);}

  /* ---------- FUNCTIONS GRID ---------- */
  .functions-grid{
    display:grid;
    grid-template-columns:repeat(3, 1fr);
    gap:24px;
  }
  @media (max-width:900px){ .functions-grid{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:620px){ .functions-grid{grid-template-columns:1fr;} }

  .fn-card{
    background:var(--white);
    border:1px solid var(--grey-300);
    border-radius:var(--radius);
    padding:30px 26px 28px;
    display:flex; flex-direction:column; gap:16px;
    transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;
    opacity:0; transform:translateY(18px);
  }
  .fn-card.in-view{opacity:1; transform:translateY(0); transition:opacity .55s ease, transform .55s ease;}
  .fn-card:hover{
    transform:translateY(-5px);
    box-shadow:0 22px 40px -24px rgba(27,42,74,.28);
    border-color:var(--gold-500);
  }
  .fn-icon{
    width:46px; height:46px; border-radius:12px;
    display:flex; align-items:center; justify-content:center;
    background:var(--indigo-900); color:var(--gold-500);
  }
  .fn-card:nth-child(even) .fn-icon{ background:var(--sage-700); color:var(--sage-300); }
  .fn-card h3{font-size:20px; color:var(--indigo-900);}
  .fn-card p{color:var(--grey-600); font-size:15px;}
  .fn-tag{
    font-family:var(--font-mono); font-size:11.5px; letter-spacing:.08em;
    text-transform:uppercase; color:var(--grey-600);
  }
  .fn-more{
    margin-top:auto; font-size:14px; font-weight:600; color:var(--indigo-900);
    display:inline-flex; align-items:center; gap:6px;
  }
  .fn-card:hover .fn-more{color:var(--gold-600);}

  /* ---------- EVENT BAND ---------- */
  .event{
    background:radial-gradient(120% 140% at 15% 10%, var(--sage-700) 0%, var(--indigo-950) 55%);
    color:var(--white);
    position:relative;
    overflow:hidden;
  }
  .event .wrap{ position:relative; }
  .event h2{color:var(--white); font-size:clamp(26px,3.2vw,36px); margin:16px 0 16px;}
  .event p{color:var(--sage-300); font-size:16.5px; max-width:52ch;}
  .event .btn-primary{margin-top:26px;}

  .countdown{
    display:grid; grid-template-columns:repeat(4,1fr); gap:14px;
  }
  .countdown .box{
    background:rgba(255,255,255,.06);
    border:1px solid rgba(255,255,255,.14);
    border-radius:12px;
    padding:20px 8px;
    text-align:center;
  }
  .countdown .box b{
    font-family:var(--font-mono); font-size:clamp(26px,3.4vw,36px); color:var(--gold-500); display:block;
  }
  .countdown .box span{font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--indigo-200);}

  /* ---------- EVENT CAROUSEL ---------- */
  .carousel{ overflow:hidden; position:relative; }
  .carousel-track{
    display:flex;
    transition:transform .5s cubic-bezier(.65,0,.35,1);
  }
  .carousel-slide{
    min-width:100%;
    display:grid; grid-template-columns:1.1fr .9fr; gap:52px; align-items:center;
    min-height:340px;
  }
  @media (max-width:860px){ .carousel-slide{grid-template-columns:1fr; min-height:0;} }
  .slide-col{ display:flex; flex-direction:column; }

  .way-list{ display:flex; flex-direction:column; gap:16px; }
  .way-list li{
    background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.14);
    border-radius:12px; padding:18px 20px;
  }
  .way-tag{
    font-family:var(--font-mono); font-size:11.5px; letter-spacing:.08em; text-transform:uppercase;
    color:var(--gold-500); display:block; margin-bottom:8px;
  }
  .way-list p{ color:var(--indigo-200); font-size:14.5px; max-width:none; }

  .profile-list{ display:flex; flex-direction:column; gap:10px; }
  .profile-list li{
    background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.14);
    border-radius:10px; padding:13px 18px; font-size:14.5px; color:var(--white);
    display:flex; align-items:center; gap:10px;
  }
  .profile-list li::before{
    content:"✓"; color:var(--sage-300); font-weight:700;
  }

  .carousel-controls{
    display:flex; align-items:center; justify-content:center; gap:22px; margin-top:40px;
  }
  .carousel-arrow{
    width:38px; height:38px; border-radius:50%; border:1px solid rgba(255,255,255,.3);
    background:transparent; color:var(--white); font-size:20px; cursor:pointer; line-height:1;
    display:flex; align-items:center; justify-content:center; transition:background .2s ease;
  }
  .carousel-arrow:hover{ background:rgba(255,255,255,.12); }
  .carousel-dots{ display:flex; gap:10px; }
  .carousel-dots .dot{
    width:9px; height:9px; border-radius:50%; border:none; background:rgba(255,255,255,.3);
    cursor:pointer; padding:0; transition:background .2s ease, transform .2s ease;
  }
  .carousel-dots .dot.active{ background:var(--gold-500); transform:scale(1.2); }

  /* ---------- PUBLICS ---------- */
  .publics-row{
    display:grid; grid-template-columns:repeat(5,1fr); gap:20px; margin-top:12px;
  }
  @media (max-width:900px){ .publics-row{grid-template-columns:repeat(2,1fr);} }
  .public-item{
    padding:26px 18px; text-align:left; border-top:2px solid var(--gold-500);
    background:var(--white);
  }
  .public-item h4{font-size:15.5px; color:var(--indigo-900); margin-bottom:8px;}
  .public-item p{font-size:13.5px; color:var(--grey-600);}

  /* ---------- QUOTE ---------- */
  .quote-band{
    background:var(--parchment-dark);
  }
  .quote-band blockquote{
    font-family:var(--font-display); font-style:italic; font-weight:500;
    font-size:clamp(22px,2.6vw,30px); color:var(--indigo-900); max-width:760px; line-height:1.4;
  }
  .quote-band cite{
    display:block; margin-top:20px; font-style:normal; font-family:var(--font-mono);
    font-size:13px; color:var(--grey-600); letter-spacing:.03em;
  }

  /* ---------- FOOTER ---------- */
  footer{
    background:var(--indigo-950); color:var(--indigo-200); padding:64px 0 32px;
  }
  .footer-grid{
    display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; padding-bottom:44px;
    border-bottom:1px solid rgba(255,255,255,.1);
  }
  @media (max-width:760px){ .footer-grid{grid-template-columns:1fr 1fr;} }
  .footer-grid h5{
    font-family:var(--font-mono); font-size:12px; letter-spacing:.08em; text-transform:uppercase;
    color:var(--white); margin-bottom:16px;
  }
  .footer-grid li{margin-bottom:10px; font-size:14.5px;}
  .footer-grid a:hover{color:var(--gold-500);}
  .footer-bottom{
    display:flex; justify-content:space-between; align-items:center; padding-top:26px; font-size:13px; flex-wrap:wrap; gap:12px;
  }

  .reveal{opacity:0; transform:translateY(16px); transition:opacity .6s ease, transform .6s ease;}
  .reveal.in-view{opacity:1; transform:translateY(0);}

/* ---------- ACTUALITÉS ---------- */
.news-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:24px;
}
@media (max-width:900px){ .news-grid{grid-template-columns:1fr;} }
.news-card{
  background:var(--white); border:1px solid var(--grey-300); border-radius:var(--radius);
  overflow:hidden; display:flex; flex-direction:column;
  transition:transform .22s ease, box-shadow .22s ease;
}
.news-card:hover{ transform:translateY(-4px); box-shadow:0 20px 36px -22px rgba(27,42,74,.28); }
.news-thumb{
  height:8px; background:linear-gradient(90deg, var(--gold-500), var(--sage-500));
}
.news-body{ padding:24px 22px 26px; display:flex; flex-direction:column; gap:10px; }
.news-date{
  font-family:var(--font-mono); font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--gold-600);
}
.news-body h3{ font-size:19px; color:var(--indigo-900); line-height:1.3; }
.news-body p{ font-size:14.5px; color:var(--grey-600); }
.news-link{ margin-top:auto; font-size:14px; font-weight:600; color:var(--indigo-900); }
.news-card:hover .news-link{ color:var(--gold-600); }
.section-foot-link{
  display:inline-flex; align-items:center; gap:8px; margin-top:36px;
  font-weight:600; color:var(--indigo-900); font-size:15px;
}
.section-foot-link:hover{ color:var(--gold-600); }

/* ---------- PARTENAIRES / DONATEURS ---------- */
.partners-band{
  background:var(--white); border-top:1px solid var(--grey-300); border-bottom:1px solid var(--grey-300);
  padding:52px 0;
}
.partners-head{ text-align:center; margin-bottom:34px; }
.partners-head span{ color:var(--grey-600); font-size:14px; }
.partners-row{
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:14px;
}
.partner-slot{
  display:flex; align-items:center; justify-content:center;
  padding:16px 26px; border:1px dashed var(--grey-300); border-radius:10px;
  font-family:var(--font-mono); font-size:12.5px; letter-spacing:.03em;
  color:var(--grey-600); background:var(--parchment); min-width:150px; text-align:center;
}
.donor-cta{
  text-align:center; margin-top:30px;
}
.donor-cta a{ font-weight:600; color:var(--sage-700); font-size:14.5px; }
.donor-cta a:hover{ color:var(--gold-600); }

/* ---------- NAV ACCOUNT BUTTONS ---------- */
.nav-cta{ display:flex; align-items:center; gap:12px; }
.btn-account{
  background:transparent; border:1px solid rgba(255,255,255,.5); color:var(--white);
  padding:10px 18px; font-size:14px;
}
.btn-account:hover{ background:rgba(255,255,255,.12); }

/* ---------- FORM (compte) ---------- */
.form-shell{
  max-width:560px; margin:0 auto; background:var(--white); border:1px solid var(--grey-300);
  border-radius:var(--radius); padding:44px 40px; box-shadow:0 30px 60px -36px rgba(27,42,74,.25);
}
.form-shell h1{ font-size:30px; margin-bottom:10px; }
.form-shell > p{ color:var(--grey-600); font-size:15px; margin-bottom:30px; }
.field{ margin-bottom:20px; display:flex; flex-direction:column; gap:7px; }
.field label{ font-size:13.5px; font-weight:600; color:var(--indigo-900); }
.field input, .field select{
  padding:12px 14px; border:1px solid var(--grey-300); border-radius:9px;
  font-family:var(--font-body); font-size:15px; color:var(--ink); background:var(--white);
}
.field input:focus, .field select:focus{ outline:2px solid var(--gold-500); outline-offset:1px; border-color:var(--gold-500); }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:520px){ .field-row{grid-template-columns:1fr;} }
.form-note{ font-size:13px; color:var(--grey-600); margin-top:18px; text-align:center; }
.form-note a{ color:var(--sage-700); font-weight:600; }
.page-hero{
  background:linear-gradient(175deg, var(--indigo-950) 0%, var(--indigo-900) 100%);
  color:var(--white); padding:150px 0 70px; text-align:center;
}
.page-hero .eyebrow{ justify-content:center; }
.page-hero h1{ color:var(--white); font-size:clamp(30px,4vw,44px); margin:16px 0 14px; }
.page-hero p{ color:var(--indigo-200); max-width:56ch; margin:0 auto; font-size:17px; }

/* ---------- PRODUCTIONS PAGE ---------- */
.filters{
  display:flex; flex-wrap:wrap; gap:10px; margin-bottom:40px;
}
.filter-chip{
  padding:9px 18px; border-radius:999px; border:1px solid var(--grey-300);
  font-size:13.5px; font-weight:600; color:var(--grey-600); background:var(--white);
  cursor:pointer;
}
.filter-chip.active{ background:var(--indigo-900); border-color:var(--indigo-900); color:var(--white); }
.productions-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:24px;
}
@media (max-width:900px){ .productions-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:620px){ .productions-grid{grid-template-columns:1fr;} }
.prod-card{
  border:1px solid var(--grey-300); border-radius:var(--radius); overflow:hidden; background:var(--white);
  transition:transform .22s ease, box-shadow .22s ease;
}
.prod-card:hover{ transform:translateY(-4px); box-shadow:0 20px 36px -22px rgba(27,42,74,.28); }
.prod-thumb{
  height:150px; display:flex; align-items:center; justify-content:center;
  color:var(--white); font-family:var(--font-mono); font-size:12px; letter-spacing:.06em; text-transform:uppercase;
}
.prod-body{ padding:20px 20px 22px; }
.prod-type{ font-family:var(--font-mono); font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--gold-600); }
.prod-body h3{ font-size:17.5px; margin:8px 0 6px; color:var(--indigo-900); }
.prod-body p{ font-size:13.5px; color:var(--grey-600); }
.prod-meta{ margin-top:12px; font-size:12.5px; color:var(--grey-600); display:flex; justify-content:space-between; }

/* ---------- PARTICIPER À DISTANCE ---------- */
.steps-list{
  display:flex; flex-direction:column; gap:0;
  counter-reset:step;
}
.step-item{
  display:grid; grid-template-columns:56px 1fr; gap:24px;
  padding:28px 0; border-bottom:1px solid var(--grey-300);
}
.step-item:last-child{ border-bottom:none; }
.step-num{
  counter-increment:step;
  width:44px; height:44px; border-radius:50%;
  background:var(--indigo-900); color:var(--gold-500);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font-mono); font-size:16px; font-weight:600;
}
.step-num::before{ content: counter(step, decimal-leading-zero); }
.step-body h3{ font-size:19px; color:var(--indigo-900); margin-bottom:6px; }
.step-body p{ font-size:15px; color:var(--grey-600); }

.req-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:20px;
}
@media (max-width:800px){ .req-grid{grid-template-columns:1fr;} }
.req-card{
  background:var(--parchment); border-radius:12px; padding:24px 22px;
}
.req-card h4{ font-size:15.5px; color:var(--indigo-900); margin-bottom:8px; }
.req-card p{ font-size:14px; color:var(--grey-600); }

.program-table{
  width:100%; border-collapse:collapse; margin-top:8px;
}
.program-table th{
  text-align:left; font-family:var(--font-mono); font-size:11.5px; letter-spacing:.06em;
  text-transform:uppercase; color:var(--grey-600); padding:12px 16px; border-bottom:2px solid var(--indigo-900);
}
.program-table td{
  padding:16px; border-bottom:1px solid var(--grey-300); font-size:14.5px; color:var(--ink); vertical-align:top;
}
.program-table td.time{ font-family:var(--font-mono); color:var(--indigo-900); font-weight:600; white-space:nowrap; }
.program-table td.tag{ white-space:nowrap; }
.badge{
  display:inline-block; font-family:var(--font-mono); font-size:11px; letter-spacing:.04em;
  padding:4px 10px; border-radius:999px; background:var(--sage-700); color:var(--white);
}

.faq-item{
  border-bottom:1px solid var(--grey-300); padding:22px 0;
}
.faq-item h4{ font-size:16.5px; color:var(--indigo-900); margin-bottom:8px; }
.faq-item p{ font-size:14.5px; color:var(--grey-600); }

.tz-note{
  background:var(--parchment); border-left:3px solid var(--gold-500);
  padding:16px 20px; font-size:14px; color:var(--grey-600); border-radius:0 8px 8px 0; margin-top:20px;
}

/* ---------- FORM MESSAGE (compte) ---------- */
.form-message{
  display:none; margin-top:18px; padding:13px 16px; border-radius:9px;
  font-size:14px; line-height:1.5;
}
.form-message.visible{ display:block; }
.form-message.success{ background:#EAF3EE; color:var(--sage-700); border:1px solid var(--sage-500); }
.form-message.error{ background:#FBEEEA; color:#A3401F; border:1px solid #D9A441; }
.form-message a{ font-weight:600; text-decoration:underline; }
