/* =====================================================================
   ÉCOLE KALLALINE — SYSTÈME DE DESIGN PARTAGÉ
   Palette : nuit de la Médina (#102136) + or zellige (#C6981F)
   Signature : l'étoile à huit branches (motif géométrique de la Médina)
   ===================================================================== */

:root{
  /* --- Couleurs --- */
  --navy-950:#0A1524;
  --navy-900:#102136;   /* fond principal demandé */
  --navy-800:#152A44;
  --navy-700:#1B3552;
  --navy-600:#26496E;
  --navy-500:#3A649076;

  --gold-700:#9C7714;
  --gold-600:#C6981F;
  --gold-500:#D9AF3E;
  --gold-400:#E8C767;
  --gold-100:#F6ECCF;

  --cream:#FBF9F4;
  --cream-dim:#F2EEE3;
  --ink:#161B24;
  --ink-soft:#4A5468;

  /* --- Typo --- */
  --font-display:'Poppins', sans-serif;
  --font-body:'Poppins', sans-serif;
  --font-mono:'Poppins', sans-serif;

  /* --- Rythme --- */
  --radius-sm:10px;
  --radius-md:18px;
  --radius-lg:28px;
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-soft:cubic-bezier(.4,0,.2,1);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:var(--font-body);
  background:var(--navy-900);
  color:var(--cream);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;}
::selection{background:var(--gold-600);color:var(--navy-950);}
::-webkit-scrollbar{width:10px;}
::-webkit-scrollbar-track{background:var(--navy-950);}
::-webkit-scrollbar-thumb{background:linear-gradient(var(--gold-600),var(--gold-700));border-radius:8px;}

.font-display{font-family:var(--font-display);}
.font-mono{font-family:var(--font-mono);}

.wrap{max-width:1240px;margin:0 auto;padding:0 24px;}
@media (max-width:640px){ .wrap{padding:0 18px;} }

section{position:relative;}
.section-pad{padding:96px 0;}
@media (max-width:768px){ .section-pad{padding:64px 0;} }

.eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--font-mono);
  font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold-400);font-weight:600;
}

.section-title{
  font-family:var(--font-display);
  font-weight:600;
  font-size:clamp(1.9rem,3.4vw,2.75rem);
  line-height:1.12;
  letter-spacing:-.01em;
}

/* =====================================================================
   MOTIF ZELLIGE — étoile à huit branches (2 carrés superposés)
   ===================================================================== */
.star{
  display:inline-block;width:22px;height:22px;flex-shrink:0;
  background-repeat:no-repeat;background-size:contain;
}
.star-gold{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cg fill='none' stroke='%23C6981F' stroke-width='2'%3E%3Crect x='8' y='8' width='24' height='24'/%3E%3Crect x='8' y='8' width='24' height='24' transform='rotate(45 20 20)'/%3E%3C/g%3E%3C/svg%3E"); }
.star-cream{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cg fill='none' stroke='%23FBF9F4' stroke-width='2'%3E%3Crect x='8' y='8' width='24' height='24'/%3E%3Crect x='8' y='8' width='24' height='24' transform='rotate(45 20 20)'/%3E%3C/g%3E%3C/svg%3E"); }
.star-navy{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cg fill='none' stroke='%23102136' stroke-width='2'%3E%3Crect x='8' y='8' width='24' height='24'/%3E%3Crect x='8' y='8' width='24' height='24' transform='rotate(45 20 20)'/%3E%3C/g%3E%3C/svg%3E"); }
.star-spin{ animation:starSpin 14s linear infinite; }
@keyframes starSpin{ to{ transform:rotate(360deg); } }

.zellige-field{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64'%3E%3Cg fill='none' stroke='%23C6981F' stroke-width='1' opacity='0.16'%3E%3Crect x='16' y='16' width='32' height='32'/%3E%3Crect x='16' y='16' width='32' height='32' transform='rotate(45 32 32)'/%3E%3C/g%3E%3C/svg%3E");
}
.zellige-field-soft{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64'%3E%3Cg fill='none' stroke='%23102136' stroke-width='1' opacity='0.06'%3E%3Crect x='16' y='16' width='32' height='32'/%3E%3Crect x='16' y='16' width='32' height='32' transform='rotate(45 32 32)'/%3E%3C/g%3E%3C/svg%3E");
}

/* =====================================================================
   HEADER
   ===================================================================== */
.kl-header{
  position:sticky;top:0;z-index:60;
  background:rgba(16,33,54,.72);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid rgba(255,255,255,.07);
  transition:background .35s var(--ease-soft),border-color .35s;
}
.kl-header.is-scrolled{ background:rgba(10,21,36,.92); border-color:rgba(198,152,31,.22); }

/* Conteneur : le sous-header reste en flux normal, le header transparent
   se positionne juste en dessous et flotte au-dessus de la bannière */
.kl-topbar{ position:relative;z-index:60; }
.kl-topbar .kl-subheader{ position:relative;z-index:2; transition:opacity .3s,transform .3s; }
.kl-topbar.is-scrolled .kl-subheader{ opacity:0;transform:translateY(-100%);pointer-events:none; }

.kl-header--transparent{
  position:absolute;top:100%;left:0;right:0;
  background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;
  border-bottom:1px solid transparent;
}
.kl-header--transparent.is-scrolled{
  position:fixed;top:0;
  background:rgba(10,21,36,.92);
  backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom-color:rgba(198,152,31,.22);
}

.kl-header-inner{
  max-width:1240px;margin:0 auto;padding:0 24px;
  height:84px;display:flex;align-items:center;justify-content:space-between;gap:20px;
}
.kl-brand{display:flex;align-items:center;gap:13px;}
.kl-brand img{ height:44px;width:auto;object-fit:contain;border-radius:0;display:block; }
.kl-brand-name{ font-family:var(--font-display); font-weight:600; font-size:1.08rem; color:var(--cream); line-height:1.1; }
.kl-brand-tag{ font-family:var(--font-mono); font-size:10.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--gold-400); margin-top:3px; }

.kl-nav{display:flex;align-items:center;gap:34px;}
.kl-nav a{
  font-size:14.5px;font-weight:500;color:rgba(251,249,244,.72);
  position:relative;padding:6px 0;transition:color .25s;
}
.kl-nav a::after{
  content:'';position:absolute;left:0;right:100%;bottom:0;height:1.5px;
  background:var(--gold-500);transition:right .3s var(--ease-out);
}
.kl-nav a:hover, .kl-nav a.active{color:var(--cream);}
.kl-nav a:hover::after, .kl-nav a.active::after{right:0;}

.kl-cta{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--gold-600);color:var(--navy-950);
  font-weight:600;font-size:14px;padding:11px 22px;border-radius:999px;
  transition:transform .25s var(--ease-out),box-shadow .25s;
  box-shadow:0 8px 20px -8px rgba(198,152,31,.55);
}
.kl-cta:hover{ transform:translateY(-2px); box-shadow:0 14px 28px -10px rgba(198,152,31,.7); }

.kl-burger{ display:none; background:none;border:none;color:var(--cream);padding:8px; }
.kl-mobile{
  display:none;flex-direction:column;gap:4px;
  background:var(--navy-950);border-top:1px solid rgba(255,255,255,.08);
  padding:18px 24px 26px;
}
.kl-mobile a, .kl-mobile button{
  text-align:left;color:var(--cream);font-size:15px;padding:11px 4px;
  border-bottom:1px solid rgba(255,255,255,.06);background:none;border-left:none;border-right:none;border-top:none;
}
.kl-mobile.open{display:flex;}

@media (max-width:980px){
  .kl-nav{display:none;}
  .kl-cta.desktop-only{display:none;}
  .kl-burger{display:flex;}
}

/* =====================================================================
   BOUTONS
   ===================================================================== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-weight:600;font-size:15px;padding:14px 28px;border-radius:999px;
  border:1px solid transparent;transition:transform .25s var(--ease-out),box-shadow .25s,background .25s,color .25s;
  white-space:nowrap;
}
.btn-gold{ background:var(--gold-600);color:var(--navy-950); box-shadow:0 10px 24px -10px rgba(198,152,31,.6); }
.btn-gold:hover{ background:var(--gold-500); transform:translateY(-2px); box-shadow:0 16px 30px -10px rgba(198,152,31,.75); }
.btn-outline{ border-color:rgba(251,249,244,.28); color:var(--cream); }
.btn-outline:hover{ background:rgba(251,249,244,.08); border-color:rgba(251,249,244,.5); }
.btn-navy{ background:var(--navy-900); color:var(--cream); }
.btn-navy:hover{ background:var(--navy-700); transform:translateY(-2px); }
.btn-block{width:100%;}
.btn:active{ transform:translateY(0) scale(.98); }

/* =====================================================================
   CARTES & COMPOSANTS COMMUNS
   ===================================================================== */
.card{
  background:var(--navy-800);
  border:1px solid rgba(255,255,255,.08);
  border-radius:var(--radius-md);
}
.card-light{
  background:var(--cream);
  color:var(--ink);
  border:1px solid rgba(16,33,54,.08);
  border-radius:var(--radius-md);
}

.hover-lift{ transition:transform .35s var(--ease-out),box-shadow .35s; }
.hover-lift:hover{ transform:translateY(-6px); box-shadow:0 24px 48px -20px rgba(0,0,0,.45); }

.tag-pill{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.05em;
  padding:5px 12px;border-radius:999px;border:1px solid currentColor;
}

/* =====================================================================
   ANIMATIONS D'ENTRÉE (scroll reveal)
   ===================================================================== */
.reveal{ opacity:0; transform:translateY(28px); transition:opacity .8s var(--ease-out), transform .8s var(--ease-out); }
.reveal.in{ opacity:1; transform:none; }
.reveal-delay-1{ transition-delay:.08s; }
.reveal-delay-2{ transition-delay:.16s; }
.reveal-delay-3{ transition-delay:.24s; }
.reveal-delay-4{ transition-delay:.32s; }
.reveal-delay-5{ transition-delay:.4s; }

@keyframes floatY{ 0%,100%{transform:translateY(0);} 50%{transform:translateY(-14px);} }
.float{ animation:floatY 6s ease-in-out infinite; }

@keyframes fadeIn{ from{opacity:0;transform:translateY(8px);} to{opacity:1;transform:none;} }
.fade-in{ animation:fadeIn .45s var(--ease-out) both; }

@keyframes pulseRing{ 0%,100%{box-shadow:0 0 0 0 rgba(198,152,31,.4);} 50%{box-shadow:0 0 0 9px rgba(198,152,31,0);} }
.pulse-ring{ animation:pulseRing 2.2s ease-in-out infinite; }

@keyframes shimmer{ 0%{background-position:-200% 0;} 100%{background-position:200% 0;} }
.shimmer{
  background:linear-gradient(110deg, var(--gold-600) 30%, var(--gold-400) 45%, var(--gold-600) 60%);
  background-size:220% 100%; animation:shimmer 3.4s ease-in-out infinite;
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

/* Curseur focus visible / accessibilité */
:focus-visible{ outline:2px solid var(--gold-500); outline-offset:3px; border-radius:4px; }
input:focus, select:focus, textarea:focus{ outline:2px solid var(--gold-500); outline-offset:1px; border-color:var(--gold-500) !important; }

@media print{
  body *{ visibility:hidden; }
  #bulletin-print, #bulletin-print *{ visibility:visible; }
  #bulletin-print{ position:absolute;left:0;top:0;width:100%;display:block !important; }
}

/* =====================================================================
   SOUS-EN-TÊTE (barre fine façon "Edu Meeting" : accroche + réseaux sociaux)
   ===================================================================== */
.kl-subheader{
  background:rgba(16,33,54,.85);
  border-bottom:1px solid rgba(255,255,255,.06);
  font-size:12.5px;
}
.kl-subheader-inner{
  max-width:1240px;margin:0 auto;padding:9px 24px;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
}
.kl-subheader-tag{ color:#fff; }
.kl-subheader-tag em{ color:var(--gold-400);font-style:normal; }
.kl-subheader-social{ display:flex;gap:14px; }
.kl-subheader-social a{
  color:#fff;width:26px;height:26px;border-radius:999px;
  display:flex;align-items:center;justify-content:center;transition:.2s;
  border:1px solid rgba(255,255,255,.25);
}
.kl-subheader-social a:hover{ color:var(--navy-950);background:var(--gold-500);border-color:var(--gold-500); }
@media (max-width:640px){ .kl-subheader-tag{ display:none; } .kl-subheader-inner{ justify-content:flex-end; } }

/* =====================================================================
   BANNIÈRE DE PAGE générique (utilisée par blog, admission, portail, admin)
   ===================================================================== */
.page-banner{
  position:relative;background:var(--navy-900);padding:64px 0 52px;overflow:hidden;
  border-bottom:1px solid rgba(255,255,255,.06);
}
.page-banner .eyebrow{ margin-bottom:2px; }
.page-banner h1{
  font-family:var(--font-display);font-weight:600;color:var(--cream);
  font-size:clamp(1.9rem,4vw,2.7rem);margin:12px 0 0;
}
.page-banner p{ margin-top:10px;color:rgba(251,249,244,.62);font-size:15.5px;max-width:600px; }

/* =====================================================================
   CARTES ÉVÉNEMENT / ARTICLE — badge prix ou date, façon "meeting card"
   ===================================================================== */
.evt-card{ background:#fff;border-radius:var(--radius-md);overflow:hidden;border:1px solid rgba(16,33,54,.08); }
.evt-thumb{ position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--navy-900); }
.evt-thumb img{ width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease-out); }
.evt-card:hover .evt-thumb img{ transform:scale(1.07); }
.evt-badge-date{
  position:absolute;top:14px;left:14px;background:var(--gold-600);color:var(--navy-950);
  border-radius:10px;padding:7px 12px;text-align:center;font-family:var(--font-mono);line-height:1.15;
}
.evt-badge-date .mon{ display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:700; }
.evt-badge-date .day{ display:block;font-size:16px;font-weight:700; }
.evt-badge-tag{
  position:absolute;top:14px;right:14px;background:var(--navy-900);color:var(--gold-400);
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;
  padding:5px 11px;border-radius:999px;
}
.evt-body{ padding:22px; }
.evt-body h3{ font-family:var(--font-display);font-weight:600;color:var(--navy-900);margin:0;font-size:1.12rem; }
.evt-body p{ margin-top:9px;font-size:13.6px;line-height:1.6;color:var(--ink-soft); }
.evt-meta{ display:flex;gap:14px;margin-top:14px;font-size:12px;color:var(--ink-soft);flex-wrap:wrap; }
.evt-meta span{ display:flex;align-items:center;gap:5px; }

/* Filtres à onglets (façon "meetings.html") */
.filter-bar{ display:flex;gap:10px;flex-wrap:wrap;margin-bottom:34px; }
.filter-btn{
  padding:9px 18px;border-radius:999px;font-size:13px;font-weight:600;
  border:1px solid rgba(16,33,54,.14);background:#fff;color:var(--ink-soft);transition:.2s;
}
.filter-btn.active, .filter-btn:hover{ background:var(--navy-900);color:var(--cream);border-color:var(--navy-900); }

/* Pagination */
.kl-pagination{ display:flex;gap:8px;justify-content:center;margin-top:48px; }
.kl-pagination a{
  width:38px;height:38px;border-radius:999px;display:flex;align-items:center;justify-content:center;
  border:1px solid rgba(16,33,54,.14);color:var(--ink-soft);font-size:13.5px;font-weight:600;transition:.2s;
}
.kl-pagination a.active, .kl-pagination a:hover{ background:var(--navy-900);color:var(--cream);border-color:var(--navy-900); }

@media (prefers-reduced-motion: reduce){
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}

/* =====================================================================
   TOASTS
   ===================================================================== */
#toast-container{ position:fixed;top:18px;right:18px;z-index:200;display:flex;flex-direction:column;gap:10px;align-items:flex-end; }
.toast{
  font-size:14px;font-weight:500;color:var(--navy-950);
  padding:13px 20px;border-radius:12px;max-width:320px;
  box-shadow:0 18px 40px -14px rgba(0,0,0,.5);
}
.toast-info{ background:var(--cream); }
.toast-success{ background:#8FE3B0; }
.toast-error{ background:#F3A5A5; }
.toast-gold{ background:var(--gold-500); }

/* =====================================================================
   FOOTER
   ===================================================================== */
.kl-footer{ background:var(--navy-950); border-top:1px solid rgba(255,255,255,.06); }
.kl-footer h4{ font-size:12.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--cream);font-weight:600;margin:0 0 16px; }
.kl-footer ul{ list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px; }
.kl-footer a{ color:rgba(251,249,244,.6);font-size:14px;transition:color .2s; }
.kl-footer a:hover{ color:var(--gold-400); }
.kl-footer p{ color:rgba(251,249,244,.55);font-size:14px;line-height:1.7; }
.kl-footer-grid{ padding:76px 24px 32px;display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:44px; }
@media (max-width:900px){ .kl-footer-grid{ grid-template-columns:1fr 1fr;row-gap:36px; } }
@media (max-width:560px){ .kl-footer-grid{ grid-template-columns:1fr;padding:52px 20px 28px;gap:32px;text-align:left; } }
.kl-social{
  width:38px;height:38px;border-radius:999px;border:1px solid rgba(251,249,244,.18);
  display:flex;align-items:center;justify-content:center;transition:.25s;
}
.kl-social:hover{ background:var(--gold-600);border-color:var(--gold-600);color:var(--navy-950); }

/* =====================================================================
   FORMULAIRES (admission / portail / admin)
   ===================================================================== */
.field-label{ font-size:13.5px;font-weight:600;color:var(--navy-900);margin-bottom:7px;display:block; }
.field-input{
  width:100%;border:1.5px solid rgba(16,33,54,.16);border-radius:10px;
  padding:12px 14px;font-family:inherit;font-size:14.5px;color:var(--ink);
  background:#fff;transition:border-color .2s,box-shadow .2s;
}
.field-input:focus{ box-shadow:0 0 0 4px rgba(198,152,31,.16); }
.doc-btn{
  border:1.5px dashed rgba(16,33,54,.22);border-radius:12px;padding:18px 10px;
  font-size:12.5px;color:var(--ink-soft);display:flex;flex-direction:column;align-items:center;gap:8px;
  transition:.25s;text-align:center;
}
.doc-btn:hover{ border-color:var(--gold-600);color:var(--navy-900);background:var(--gold-100); }
.doc-btn.filled{ border-style:solid;border-color:#4FAE7A;background:#EAF8EF;color:#256B45; }
.doc-btn{ cursor:pointer; }
.doc-btn input[type="file"]{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.doc-btn span{ word-break:break-all; }
