/* ═══════════════════════════════════════════════════════════
   ATLAS DE LA FRANCOPHONIE — Design System v4 (Spec §5)
   Palette: parchment · sepia · carmin · mousse · or-patiné
   ═══════════════════════════════════════════════════════════ */

/* ── §5.3 Self-hosted fonts — variable font subsets (Latin)
   Files downloaded into /assets/fonts/ via download-fonts.sh  */
@font-face{
  font-family:'Playfair Display';
  font-style:normal;
  font-weight:400 900;
  font-display:swap;
  src:url('/assets/fonts/playfair-display-latin-400.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Source Sans 3';
  font-style:normal;
  font-weight:300 900;
  font-display:swap;
  src:url('/assets/fonts/source-sans-3-latin-400.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
:root{
  /* ── §5.2 Named colour tokens ── */
  --terre-ombre:     #3E2E23;
  --encre-sepia:     #5A3E2B;
  --sable-chaud:     #C8A97E;
  --olive-sauvage:   #6B7A3A;
  --mousse:          #8A9A5B;
  --mousse-clair:    #EDF1E0;
  --parchemin:       #F4ECD8;
  --parchemin-clair: #FBF6E9;
  --ivoire:          #FFFDF5;
  --rouge-carmin:    #A43E2C;
  --or-patine:       #B8860B;
  /* Cartographic */
  --ocean:           #D7E3DE;
  --ocean-deep:      #B8CCC6;
  --terre-carte:     #EADFC4;
  --terre-franco:    #C8A97E;
  --graticule:       rgba(138,154,91,.22);
  /* ── Functional aliases (used throughout CSS) ── */
  --bg:#F4ECD8;--bg2:#EDE3CA;--w:#FBF6E9;
  --tx:#3E2E23;--tx2:#5A3E2B;--tx3:#7A5E48;--tx4:#9C7E65;--tx5:#C0A888;
  --bd:#D8C8AA;--bd2:#C8B490;--bd3:#B09870;
  /* Action / brand (CTA, links, active states) */
  --terra:#A43E2C;--terra2:#8A2C1A;--terra3:#6E1C0C;
  --tbg:#F5E6DC;--tbg2:#EAD0C0;
  /* Success / progress */
  --gr:#8A9A5B;--gr2:#6B7A3A;--gr-tx:#4D6B29;--gbg:#EDF1E0;--gbg2:#D8E0BF;
  /* Gold / CEFR badges */
  --gold:#B8860B;--goldbg:#F5EAC8;--goldbg2:#EAD898;
  /* Info / neutral blue */
  --blue:#4A6FA5;--bluebg:#E8EFF8;
  /* ── Shadows — warm paper, not glass ── */
  --sh1:0 1px 4px rgba(62,46,35,.06),0 1px 2px rgba(62,46,35,.04);
  --sh2:0 3px 10px rgba(62,46,35,.09),0 1px 4px rgba(62,46,35,.05);
  --sh3:0 8px 28px rgba(62,46,35,.11),0 3px 10px rgba(62,46,35,.06);
  --sh4:0 20px 60px rgba(62,46,35,.14),0 8px 20px rgba(62,46,35,.07);
  --sh-c:0 2px 10px rgba(164,62,44,.22);
  /* ── Radii ── */
  --r:6px;--rlg:10px;--rxl:16px;
  /* ── Type ── */
  --fd:'Playfair Display',Georgia,serif;--fb:'Source Sans 3',system-ui,sans-serif;
  /* ── Layout ── */
  --hh:64px;--max:88rem;
  /* ── Motion §5.5 ── */
  --ease-out-editorial:cubic-bezier(0.22,1,0.36,1);
  --dur-fast:160ms;--dur-base:260ms;--dur-slow:420ms;
  --ease:var(--dur-base) var(--ease-out-editorial);
}

/* ── RESET ── */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--hh) + 8px);font-size:16px}
body{font-family:var(--fb);background:var(--bg);color:var(--tx);-webkit-font-smoothing:antialiased;line-height:1.65;font-size:1rem}
::selection{background:var(--tbg2);color:var(--terra2)}
a{color:var(--terra);text-decoration:none;transition:color var(--ease)}
a:hover{color:var(--terra2)}
:focus-visible{outline:2px solid var(--terra);outline-offset:3px;border-radius:4px}
img{max-width:100%;display:block}
button{font-family:var(--fb)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.skip-link{position:absolute;top:-99px;left:8px;padding:.5rem 1.2rem;background:var(--terra);color:#fff;z-index:9999;border-radius:0 0 var(--r) var(--r);font-weight:600;font-size:.875rem;transition:top .2s}
.skip-link:focus{top:0}

/* ══════════════════════════════════════════════════
   HEADER
   ══════════════════════════════════════════════════ */
.hdr{
  position:sticky;top:0;z-index:50;
  background:rgba(244,236,216,.96);
  backdrop-filter:blur(24px) saturate(140%);
  -webkit-backdrop-filter:blur(24px) saturate(140%);
  border-bottom:1px solid var(--bd);
  height:var(--hh);
}
.hdr-in{
  max-width:var(--max);margin:0 auto;padding:0 2rem;
  display:flex;align-items:center;gap:1.5rem;height:100%;
}
.logo{display:flex;align-items:center;gap:.6rem;color:var(--tx);flex-shrink:0}
.logo-ic{
  width:34px;height:34px;border-radius:9px;
  background:linear-gradient(135deg,var(--terra) 0%,var(--terra2) 100%);
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-family:var(--fd);font-size:.9rem;font-weight:700;
  box-shadow:var(--sh-c);
  flex-shrink:0;
}
.logo-name{display:flex;flex-direction:column;gap:0;line-height:1.1}
.logo-tx{font-family:var(--fd);font-weight:600;font-size:.9rem;color:var(--tx);letter-spacing:-.01em}
.logo-sub{font-size:.65rem;color:var(--tx3);font-weight:400;letter-spacing:.01em}
.nav-d{display:flex;align-items:center;gap:.1rem;flex:1;justify-content:center}
.nav-d a{
  padding:.42rem .85rem;border-radius:6px;
  font-size:.82rem;font-weight:500;color:var(--tx3);
  transition:all .15s;white-space:nowrap;
}
.nav-d a:hover{color:var(--tx);background:rgba(0,0,0,.04)}
.nav-d a.on{color:var(--terra);font-weight:600;background:var(--tbg)}
.hdr-end{display:flex;align-items:center;gap:.4rem;flex-shrink:0}
.streak-badge{
  display:none;align-items:center;gap:.25rem;
  padding:.22rem .55rem;border-radius:99px;
  background:var(--tbg);border:1px solid var(--tbg2);
  font-size:.7rem;font-weight:700;color:var(--terra);
  cursor:default;white-space:nowrap;
}
.hdr-icon-btn{
  width:34px;height:34px;border-radius:8px;
  background:transparent;border:1px solid transparent;
  cursor:pointer;font-size:.9rem;color:var(--tx3);
  display:inline-flex;align-items:center;justify-content:center;
  transition:all .15s;position:relative;
}
.hdr-icon-btn:hover{background:rgba(0,0,0,.05);border-color:var(--bd);color:var(--tx)}
.hdr-icon-btn.active{background:var(--tbg);border-color:var(--tbg2);color:var(--terra)}
/* Header dropdown menu */
.hdr-menu-wrap{position:relative}
.hdr-dropdown{
  position:absolute;top:calc(100% + 8px);right:0;
  width:220px;background:var(--w);border:1px solid var(--bd);
  border-radius:var(--rlg);box-shadow:var(--sh4);
  padding:.5rem;z-index:100;
  opacity:0;pointer-events:none;
  transform:translateY(-6px) scale(.97);
  transform-origin:top right;
  transition:opacity .18s,transform .18s;
}
.hdr-dropdown.open{opacity:1;pointer-events:all;transform:none}
.hdd-section{padding:.3rem 0;border-bottom:1px solid var(--bd)}
.hdd-section:last-child{border-bottom:none;padding-bottom:0}
.hdd-section:first-child{padding-top:0}
.hdd-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--tx4);padding:.3rem .6rem .15rem}
.hdd-row{display:flex;gap:.25rem;padding:.2rem .4rem .3rem}
.hdd-fsb{
  flex:1;padding:.3rem .2rem;border-radius:5px;border:1px solid var(--bd);
  background:var(--bg2);font-size:.78rem;font-weight:600;color:var(--tx3);cursor:pointer;
  transition:all .12s;text-align:center;
}
.hdd-fsb:hover{background:var(--w);border-color:var(--bd3);color:var(--tx)}
.hdd-btn{
  width:100%;padding:.45rem .7rem;border-radius:7px;border:none;
  background:transparent;font-size:.82rem;color:var(--tx2);cursor:pointer;
  text-align:left;transition:background .12s;display:flex;align-items:center;gap:.5rem;
}
.hdd-btn:hover{background:var(--bg2)}
.lang-btn{
  flex:1;padding:.3rem .4rem;border-radius:5px;border:1px solid var(--bd);
  background:var(--bg2);font-size:.75rem;font-weight:700;color:var(--tx3);cursor:pointer;
  transition:all .12s;text-align:center;
}
.lang-btn:hover,.lang-btn.active{background:var(--terra);border-color:var(--terra);color:#fff}
/* Mobile */
.mbtn{
  display:none;width:34px;height:34px;border-radius:8px;
  background:transparent;border:1px solid var(--bd);
  cursor:pointer;font-size:1rem;color:var(--tx3);
  align-items:center;justify-content:center;
}
.mob-nav{
  display:none;position:fixed;inset:0;top:var(--hh);
  background:rgba(250,250,248,.98);backdrop-filter:blur(20px);
  z-index:49;padding:1.2rem;
}
.mob-nav.open{display:flex;flex-direction:column;gap:.2rem}
.mob-nav a{
  padding:.75rem 1rem;border-radius:var(--r);
  font-size:.95rem;font-weight:500;color:var(--tx2);
  transition:all .12s;display:flex;align-items:center;gap:.6rem;
}
.mob-nav a:hover{background:var(--bg2);color:var(--terra)}
.mob-nav-tools{
  margin-top:1rem;padding-top:1rem;border-top:1px solid var(--bd);
  display:flex;gap:.4rem;flex-wrap:wrap;
}
.mob-tool-btn{
  flex:1;min-width:80px;padding:.5rem .6rem;border-radius:var(--r);
  border:1px solid var(--bd);background:var(--w);font-size:.78rem;
  color:var(--tx3);cursor:pointer;text-align:center;font-family:var(--fb);
}
@media(max-width:768px){.nav-d{display:none}.mbtn{display:inline-flex}}

/* ══════════════════════════════════════════════════
   LAYOUT
   ══════════════════════════════════════════════════ */
.con{max-width:var(--max);margin:0 auto;padding:0 2rem}
.con-sm{max-width:52rem;margin:0 auto;padding:0 2rem}
.sec{padding:5.5rem 0;scroll-margin-top:var(--hh)}
.sec-alt{background:var(--w);border-top:1px solid var(--bd);border-bottom:1px solid var(--bd)}
.sec-div{display:none}
@media(max-width:768px){.sec{padding:4rem 0}}

/* ══════════════════════════════════════════════════
   BUTTONS
   ══════════════════════════════════════════════════ */
.btn{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.6rem 1.25rem;border-radius:var(--r);
  font-weight:600;font-size:.875rem;border:none;cursor:pointer;
  transition:all .18s;font-family:var(--fb);white-space:nowrap;
  text-decoration:none;
}
.btn-p{background:var(--terra);color:#fff;box-shadow:var(--sh-c)}
.btn-p:hover{background:var(--terra2);box-shadow:0 4px 14px rgba(164,62,44,.3);color:#fff;transform:translateY(-1px)}
.btn-p:active{transform:none}
.btn-s{background:var(--w);color:var(--tx2);border:1px solid var(--bd2);box-shadow:var(--sh1)}
.btn-s:hover{background:var(--bg2);border-color:var(--bd3);color:var(--tx)}
.btn-g{background:var(--w);color:var(--tx3);border:1px solid var(--bd);box-shadow:var(--sh1)}
.btn-g:hover{background:var(--bg2);color:var(--tx);border-color:var(--bd3)}
.btn-sm{padding:.4rem .85rem;font-size:.8rem}
.btn-xs{padding:.28rem .6rem;font-size:.74rem}

/* ══════════════════════════════════════════════════
   HERO
   ══════════════════════════════════════════════════ */
.hero{
  padding:0 2rem 0;
  position:relative;overflow:hidden;
  background:#FDFAF7;
}
.hero::before{
  content:'';position:absolute;inset:0;
  background:
    radial-gradient(ellipse 130% 90% at 55% -20%,rgba(164,62,44,.07) 0%,transparent 55%),
    radial-gradient(ellipse 70% 60% at -10% 80%,rgba(138,154,91,.05) 0%,transparent 55%),
    radial-gradient(ellipse 50% 40% at 105% 90%,rgba(200,169,126,.06) 0%,transparent 55%);
  pointer-events:none;z-index:0;
}
.hero-body{
  position:relative;z-index:1;
  padding:0;max-width:none;
}
.eyebrow{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.32rem .9rem;border-radius:99px;
  background:var(--tbg);border:1px solid var(--tbg2);
  color:var(--terra);font-size:.7rem;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  margin-bottom:1.4rem;
}
.hero h1{
  font-family:var(--fd);font-weight:700;
  font-size:clamp(2.4rem,6vw,4.2rem);line-height:1.06;
  letter-spacing:-.03em;margin-bottom:1.2rem;color:var(--tx);
}
.hero h1 em{
  font-style:italic;
  color:var(--terra);
  background:linear-gradient(135deg,var(--terra),var(--terra2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
.hero-sub{
  font-size:1.08rem;color:var(--tx3);line-height:1.75;
  max-width:40rem;margin:0 auto 2.5rem;font-weight:400;
}
.hero-ctas{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap;margin-bottom:0}
.hero-inner{
  display:grid;grid-template-columns:1fr 360px;
  gap:4rem;align-items:center;
  max-width:var(--max);margin:0 auto;
  padding:7rem 2rem 3.5rem;
  text-align:left;
}
.hero-body{padding:0;max-width:none}
.hero-visual{
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.hero-visual svg{
  width:100%;max-width:340px;
  filter:drop-shadow(0 8px 32px rgba(62,46,35,.10));
}
.hero-trust{
  display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
  margin-top:1.8rem;font-size:.78rem;color:var(--tx4);font-weight:500;
}
.hero-trust-sep{color:var(--tx5)}
@media(max-width:900px){
  .hero-inner{grid-template-columns:1fr;gap:2.5rem;padding:5rem 2rem 3rem}
  .hero-visual{display:none}
  .hero-body{text-align:center}
  .hero-ctas{justify-content:center}
  .hero-trust{justify-content:center}
}
.btn-lg{padding:.75rem 1.65rem;font-size:.95rem}
.btn-sm{padding:.5rem 1.1rem;font-size:.82rem}
.nums{
  position:relative;z-index:1;
  display:flex;justify-content:center;gap:0;
  max-width:min(var(--max),90vw);
  margin:0 auto;
  background:var(--w);
  border:1px solid var(--bd);
  border-radius:0 0 var(--rxl) var(--rxl);
  border-top:none;
  box-shadow:0 4px 24px rgba(0,0,0,.05);
  overflow:hidden;
}
.num-item{
  flex:1;min-width:110px;padding:1.3rem 1.5rem;
  border-right:1px solid var(--bd);
  text-align:center;position:relative;
}
.num-item:last-child{border-right:none}
.num-item::before{
  content:'';position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,transparent,var(--terra),transparent);
  opacity:0;transition:opacity .25s;
}
.num-item:hover::before{opacity:1}
.num-v{
  font-family:var(--fd);font-size:2.4rem;font-weight:700;
  color:var(--terra);line-height:1;letter-spacing:-.03em;
}
.num-l{font-size:.68rem;color:var(--tx4);margin-top:.35rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600}

/* ══════════════════════════════════════════════════
   SECTION HEADING SYSTEM
   ══════════════════════════════════════════════════ */
.sec-hdr{margin-bottom:3rem;text-align:center}
.sec-eyebrow{
  display:inline-flex;align-items:center;gap:.35rem;
  padding:.28rem .85rem;border-radius:99px;
  background:var(--tbg);border:1px solid var(--tbg2);
  color:var(--terra);font-size:.67rem;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  margin-bottom:.85rem;
}
.sec-title{
  font-family:var(--fd);font-weight:700;
  font-size:clamp(1.5rem,3.5vw,2rem);
  color:var(--tx);letter-spacing:-.025em;line-height:1.15;
}
.sec-desc{
  font-size:.9rem;color:var(--tx3);margin-top:.55rem;
  line-height:1.75;max-width:40rem;margin-left:auto;margin-right:auto;
}

/* ══════════════════════════════════════════════════
   HOW IT WORKS
   ══════════════════════════════════════════════════ */
.steps{
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  margin-top:0;position:relative;
  border:1px solid var(--bd);border-radius:var(--rlg);
  background:var(--w);overflow:hidden;box-shadow:var(--sh2);
}
@media(max-width:640px){.steps{grid-template-columns:1fr}}
.step{
  padding:2.2rem 1.8rem;
  background:var(--w);border:none;
  transition:all .25s;box-shadow:none;
  position:relative;overflow:hidden;
  border-right:1px solid var(--bd);
}
.step:last-child{border-right:none}
@media(max-width:640px){.step{border-right:none;border-bottom:1px solid var(--bd)}.step:last-child{border-bottom:none}}
.step::before{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--terra),var(--terra2));
  opacity:0;transition:opacity .25s;
}
.step:hover{background:var(--bg)}
.step:hover::before{opacity:1}
.step-n{
  width:2.5rem;height:2.5rem;border-radius:10px;
  background:linear-gradient(135deg,var(--terra),var(--terra2));
  color:#fff;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--fd);font-weight:700;font-size:.9rem;
  margin-bottom:1.1rem;
  box-shadow:0 2px 8px rgba(164,62,44,.22);
}
.step-t{font-family:var(--fd);font-weight:700;font-size:1rem;margin-bottom:.5rem;color:var(--tx)}
.step-d{font-size:.85rem;color:var(--tx3);line-height:1.7}

/* ══════════════════════════════════════════════════
   MAP
   ══════════════════════════════════════════════════ */
.map-card{background:var(--w);border-radius:var(--rxl);border:1px solid var(--bd);box-shadow:var(--sh3);overflow:hidden}
.map-in{padding:1.6rem 1.75rem 1.3rem}
.map-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:.9rem;flex-wrap:wrap;gap:.5rem}
.map-hdr-title{font-family:var(--fd);font-weight:700;font-size:1.15rem;color:var(--tx);display:flex;align-items:center;gap:.4rem}
.map-sub{font-size:.76rem;color:var(--tx3);margin-top:.15rem}
.rst{
  font-size:.74rem;padding:.3rem .7rem;border-radius:6px;
  border:1px solid var(--bd2);background:var(--bg2);
  color:var(--tx3);cursor:pointer;font-family:var(--fb);
  display:none;transition:all .15s;
}
.rst:hover{border-color:var(--terra);color:var(--terra);background:var(--tbg)}
.zcs{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.8rem}
.zc{
  display:inline-flex;align-items:center;gap:.28rem;
  padding:.28rem .6rem;border-radius:99px;
  font-size:.72rem;border:1px solid var(--bd2);
  background:var(--bg2);cursor:pointer;
  transition:all .15s;color:var(--tx3);font-family:var(--fb);
}
.zc:hover{border-color:var(--bd3);background:var(--w);color:var(--tx2)}
.zc.on{border-color:currentColor;background:var(--w);color:var(--tx);font-weight:600;box-shadow:var(--sh1)}
.zcd{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.zcn{font-size:.6rem;color:var(--tx2)}
.map-fr{
  border-radius:var(--rlg);overflow:hidden;position:relative;
  border:1px solid var(--bd);min-height:260px;
  background:linear-gradient(180deg,#C0D4E0 0%,#D0E0EA 100%);
}
.map-fr svg{display:block}
.map-fr svg path[data-f]{transition:opacity .35s,fill .3s}
.map-fr svg path[data-f]:hover{filter:brightness(.84)}
.map-fr svg .clbl{
  pointer-events:none;font-family:var(--fb);font-weight:600;
  fill:#fff;paint-order:stroke;stroke:rgba(0,0,0,.25);stroke-width:2px;
  font-size:7px;text-anchor:middle;dominant-baseline:central;
  letter-spacing:.02em;opacity:.92;
}
.tt{
  position:absolute;bottom:10px;left:50%;transform:translateX(-50%);
  background:rgba(255,255,255,.97);backdrop-filter:blur(10px);
  border:1px solid var(--bd);border-radius:var(--rlg);
  padding:.65rem 1rem;pointer-events:none;display:none;
  box-shadow:var(--sh3);z-index:5;
  color:var(--tx2);max-width:min(22rem,88vw);
  white-space:normal;text-align:center;
}
.tt-flag{font-size:1.3rem;margin-bottom:.2rem}
.tt-name{font-weight:700;font-size:.85rem;color:var(--tx);margin-bottom:.15rem}
.tt-zone{font-size:.7rem;color:var(--tx4);margin-bottom:.3rem}
.tt-fact{font-size:.73rem;color:var(--tx3);line-height:1.5;font-style:italic}
.map-leg{
  position:absolute;top:.6rem;left:.6rem;
  background:rgba(255,255,255,.92);backdrop-filter:blur(8px);
  border-radius:var(--r);padding:.55rem .7rem;
  font-size:.62rem;color:var(--tx3);
  border:1px solid rgba(232,228,222,.6);z-index:4;line-height:1.65;
}
.map-leg-t{font-weight:700;color:var(--tx2);font-size:.65rem;margin-bottom:.25rem}
.mlr{display:flex;align-items:center;gap:.28rem}
.mld{width:7px;height:7px;border-radius:50%;flex-shrink:0}
@media(max-width:640px){.map-leg{position:static;display:flex;flex-wrap:wrap;gap:.4rem .7rem;margin-top:.5rem;padding:.5rem .7rem;background:var(--bg2);border:1px solid var(--bd)}.map-leg-t{width:100%}}
.map-loading{display:flex;align-items:center;justify-content:center;min-height:280px;color:var(--tx4);font-size:.85rem;gap:.5rem;flex-direction:column}
.spinner{width:20px;height:20px;border:2.5px solid var(--bd2);border-top-color:var(--terra);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.mst{display:flex;gap:.8rem;flex-wrap:wrap;padding:.55rem 0;font-size:.76rem;color:var(--tx3)}
.stv{font-weight:700;color:var(--terra)}

/* ══════════════════════════════════════════════════
   STORIES SECTION
   ══════════════════════════════════════════════════ */
.st-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.6rem;flex-wrap:wrap;gap:.75rem}
.st-hdr-left h2{font-family:var(--fd);font-weight:700;font-size:1.5rem;color:var(--tx);letter-spacing:-.02em;line-height:1.15}
.st-hdr-left p{font-size:.8rem;color:var(--tx3);margin-top:.3rem}
.st-hdr-actions{display:flex;gap:.35rem;flex-wrap:wrap;align-items:center}
.fb{
  display:flex;gap:.5rem;margin-bottom:1.6rem;flex-wrap:wrap;
  padding:1rem;background:var(--w);
  border:1px solid var(--bd);border-radius:var(--rlg);
  box-shadow:var(--sh1);
}
.sw{flex:1;min-width:200px;position:relative}
.sw svg{position:absolute;left:.7rem;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--tx4);pointer-events:none}
.si{
  width:100%;padding:.55rem .8rem .55rem 2.1rem;
  border-radius:var(--r);border:1px solid var(--bd2);
  font-size:.85rem;font-family:var(--fb);
  background:var(--w);color:var(--tx);
  transition:all .18s;box-shadow:var(--sh1);
}
.si:focus{outline:none;border-color:var(--terra);box-shadow:0 0 0 3px rgba(164,62,44,.12)}
.fs{
  padding:.55rem .8rem;border-radius:var(--r);
  border:1px solid var(--bd2);font-size:.82rem;
  color:var(--tx3);background:var(--w);cursor:pointer;
  font-family:var(--fb);transition:all .15s;box-shadow:var(--sh1);
}
.fs:focus{outline:none;border-color:var(--terra)}
.sg{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:.85rem}
.empty{grid-column:1/-1;text-align:center;padding:3rem 1rem;color:var(--tx4)}
.empty-state{text-align:center;padding:4rem 1rem;color:var(--tx4)}
.empty-state p{font-size:.9rem;color:var(--tx3);margin:.5rem 0 1rem}

/* ══════════════════════════════════════════════════
   STORY CARD
   ══════════════════════════════════════════════════ */
.sc{
  background:var(--w);border-radius:var(--rlg);
  border:1px solid var(--bd);box-shadow:var(--sh1);
  overflow:hidden;cursor:pointer;position:relative;
  opacity:0;transform:translateY(10px);
  transition:opacity .4s,transform .4s,box-shadow .22s,border-color .22s;
  display:flex;flex-direction:column;
}
.sc.vis{opacity:1;transform:translateY(0)}
.sc:hover{box-shadow:var(--sh3);border-color:var(--bd2);transform:translateY(-4px)}
.sc:focus-visible{outline:2px solid var(--terra);outline-offset:2px;border-color:var(--terra)}
.sc.seen{border-color:rgba(138,154,91,.45)}
.scs{height:4px;flex-shrink:0}
.scb{padding:1.05rem 1.15rem .9rem;flex:1;display:flex;flex-direction:column}
.scc{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:.55rem;align-items:center}
.ch{
  display:inline-flex;align-items:center;gap:.15rem;
  padding:.12rem .45rem;border-radius:99px;
  font-size:.62rem;font-weight:700;letter-spacing:.03em;
  text-transform:uppercase;border:1px solid transparent;
  white-space:nowrap;
}
.ch-l{background:var(--gbg);color:var(--tx2);border-color:var(--gbg2)}
.ch-o{background:var(--tbg);color:var(--terra);border-color:var(--tbg2)}
.ch-t{background:var(--bg2);color:var(--tx3);border-color:var(--bd2)}
.ch-reg{background:#F5F0FF;color:#6B4FA0;border-color:#DDD0F0}
.ch-genre{background:var(--goldbg);color:var(--tx2);border-color:var(--goldbg2);font-style:italic}
.ch-year{background:var(--bg2);color:var(--tx2);border-color:var(--bd);font-size:.6rem}
.sc-rt{font-size:.62rem;color:var(--tx3);display:inline-flex;align-items:center;gap:.15rem;margin-left:auto}
.sct{
  font-family:var(--fd);font-weight:600;
  font-size:.95rem;margin-bottom:.3rem;
  line-height:1.3;transition:color .18s;color:var(--tx);
}
.sc:hover .sct{color:var(--terra)}
.scsu{
  font-size:.8rem;color:var(--tx3);line-height:1.5;
  margin-bottom:.45rem;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.scta{display:flex;flex-wrap:wrap;gap:.2rem;margin-bottom:.4rem}
.tg{font-size:.66rem;padding:.12rem .4rem;border-radius:4px;background:var(--bg2);color:var(--tx2);border:1px solid var(--bd)}
.scg{
  font-size:.68rem;color:var(--gr-tx);background:var(--gbg);
  padding:.18rem .45rem;border-radius:.25rem;
  margin-bottom:.45rem;display:inline-block;border:1px solid var(--gbg2);
}
.scf{
  display:flex;align-items:center;justify-content:space-between;
  padding-top:.5rem;border-top:1px solid var(--bd);gap:.4rem;flex-wrap:wrap;
}
.scl{font-size:.72rem;color:var(--terra);font-weight:600;white-space:nowrap}
.scst{font-size:.6rem;padding:.13rem .45rem;border-radius:99px;white-space:nowrap}
.scst.rdy{background:var(--gbg);color:var(--gr-tx);border:1px solid var(--gbg2)}
.scst.pen{background:var(--bg2);color:var(--tx4);border:1px solid var(--bd)}
.sc.seen .scst.rdy{background:var(--gbg);color:var(--gr-tx);border-color:var(--gbg2)}
.sc-score{font-size:.62rem;font-weight:700;padding:.1rem .38rem;border-radius:99px;background:var(--gbg);color:var(--gr-tx);border:1px solid var(--gbg2)}
.sc-review{font-size:.62rem;font-weight:700;padding:.1rem .38rem;border-radius:99px;background:var(--tbg);color:var(--terra);border:1px solid var(--tbg2)}
.sc-locked{opacity:.5;pointer-events:none;filter:grayscale(.6)}

/* ══════════════════════════════════════════════════
   CONTE DU JOUR
   ══════════════════════════════════════════════════ */
.cdj-banner{
  margin-bottom:1.5rem;padding:.9rem 1.2rem;
  background:linear-gradient(to right,var(--tbg) 0%,var(--w) 100%);
  border:1px solid var(--tbg2);border-radius:var(--rlg);
  display:flex;align-items:center;gap:.9rem;cursor:pointer;
  transition:all .2s;box-shadow:var(--sh1);
}
.cdj-banner:hover{box-shadow:var(--sh3);border-color:var(--terra);transform:translateY(-1px)}
.cdj-icon{font-size:1.6rem;flex-shrink:0;line-height:1}
.cdj-label{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--terra);margin-bottom:.15rem}
.cdj-title{font-family:var(--fd);font-size:.95rem;font-weight:600;color:var(--tx)}
.cdj-sub{font-size:.74rem;color:var(--tx4);margin-top:.1rem}
.cdj-arrow{margin-left:auto;color:var(--terra);font-size:1rem;flex-shrink:0;font-weight:700}

/* ══════════════════════════════════════════════════
   SOURCES / PUBLISHER / ABOUT
   ══════════════════════════════════════════════════ */
.srg{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.5rem;margin-top:1rem}
.src{
  padding:.65rem .9rem;border-radius:var(--r);
  border:1px solid var(--bd);background:var(--w);
  display:flex;align-items:center;justify-content:space-between;
  transition:all .18s;gap:.5rem;box-shadow:var(--sh1);
}
.src:hover{border-color:var(--bd3);box-shadow:var(--sh2);transform:translateY(-1px)}
.srcn{font-size:.83rem;font-weight:500;color:var(--tx2)}
.srct{font-size:.58rem;padding:.1rem .38rem;border-radius:4px;background:var(--bg2);color:var(--tx2);flex-shrink:0}
.pcard{
  margin-top:1.5rem;padding:1.5rem 1.75rem;border-radius:var(--rlg);
  background:var(--w);border:1px solid var(--bd);
  display:flex;align-items:center;gap:1.75rem;flex-wrap:wrap;
  box-shadow:var(--sh1);
}
.pcard-i{flex:1;min-width:200px}
.pcard-l{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--tx3);margin-bottom:.3rem}
.pcard-n{font-family:var(--fd);font-size:1.1rem;font-weight:600;margin-bottom:.3rem;color:var(--tx)}
.pcard-d{font-size:.83rem;color:var(--tx3);line-height:1.55}
.about p{font-size:.9rem;color:var(--tx3);line-height:1.78;margin-bottom:.75rem}
.about strong{color:var(--tx)}

/* ══════════════════════════════════════════════════
   FOOTER
   ══════════════════════════════════════════════════ */
.ftr{
  border-top:1px solid var(--bd);
  background:linear-gradient(180deg,var(--w) 0%,var(--bg2) 100%);
  padding:4rem 2rem;
}
.ftr-in{max-width:var(--max);margin:0 auto}
.ftr-g{display:grid;grid-template-columns:2fr 1fr 1fr;gap:3rem}
@media(max-width:768px){.ftr-g{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.ftr-g{grid-template-columns:1fr}}
.ftr-brand{display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem}
.ftr-brand-ic{
  width:32px;height:32px;border-radius:8px;
  background:linear-gradient(135deg,#D4632F,#A84A22);
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-family:var(--fd);font-size:.85rem;font-weight:700;
  flex-shrink:0;
}
.ftr-br{font-family:var(--fd);font-weight:700;font-size:.95rem;color:var(--tx)}
.ftr-t{font-size:.8rem;color:var(--tx4);line-height:1.65;margin-top:.3rem}
.ftr h4,.ftr .ftr-h{font-size:.65rem;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.07em;margin-bottom:.75rem}
.ftr nav{display:flex;flex-direction:column;gap:.35rem}
.ftr nav a{font-size:.8rem;color:var(--tx4);transition:color .15s;display:flex;align-items:center;gap:.3rem}
.ftr nav a:hover{color:var(--terra)}
.ftr-b{
  font-size:.72rem;color:var(--tx5);margin-top:2.5rem;
  padding-top:1.5rem;border-top:1px solid var(--bd);
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;
}
.footer-legal{margin-top:1rem;padding-top:1rem;border-top:1px dotted var(--bd)}
.footer-legal p{font-size:.68rem;line-height:1.6;color:var(--tx5);max-width:60rem;margin:0}
.footer-credits{font-size:.75em;color:var(--tx4);text-align:center;font-style:italic;margin-top:1em}
.footer-link-tdu{font-size:.78rem;color:var(--tx4)!important;opacity:.9}
.footer-link-tdu:hover{color:var(--terra)!important;opacity:1}
.about-sub{font-family:'Playfair Display',Georgia,serif;font-size:1.05rem;font-weight:600;color:var(--tx);margin:1.6rem 0 .6rem}

/* ══════════════════════════════════════════════════
   BACK TO TOP
   ══════════════════════════════════════════════════ */
.btt{
  position:fixed;bottom:1.5rem;right:1.5rem;z-index:40;
  width:38px;height:38px;border-radius:50%;
  background:var(--w);border:1px solid var(--bd2);
  box-shadow:var(--sh2);cursor:pointer;display:none;
  align-items:center;justify-content:center;
  font-size:.9rem;color:var(--tx3);transition:all .2s;
}
.btt:hover{box-shadow:var(--sh3);transform:translateY(-2px);color:var(--terra)}
.btt.show{display:flex}

/* ══════════════════════════════════════════════════
   EXERCISE PANEL — Full-page overlay
   ══════════════════════════════════════════════════ */
.ex-panel{
  position:fixed;inset:0;z-index:100;
  background:var(--bg);overflow-y:auto;
  transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);
  -webkit-overflow-scrolling:touch;
}
.ex-panel.open{transform:translateX(0)}
.ex-top{
  position:sticky;top:0;z-index:10;
  background:rgba(250,250,248,.96);backdrop-filter:blur(16px);
  border-bottom:1px solid var(--bd);padding:.75rem 1.5rem;
  display:flex;align-items:center;justify-content:space-between;gap:.5rem;
}
.ex-back{
  display:flex;align-items:center;gap:.35rem;
  font-size:.82rem;font-weight:600;color:var(--tx3);
  cursor:pointer;background:none;border:none;
  font-family:var(--fb);padding:.35rem .55rem;
  border-radius:var(--r);transition:all .15s;
}
.ex-back:hover{background:var(--bg2);color:var(--tx)}
.ex-actions{display:flex;gap:.25rem;flex-wrap:wrap}
.ex-nav{
  background:var(--w);border:1px solid var(--bd);border-radius:var(--r);
  padding:.38rem .7rem;cursor:pointer;font-size:.78rem;
  color:var(--tx3);font-family:var(--fb);transition:all .15s;
  min-height:2.1rem;display:inline-flex;align-items:center;
  white-space:nowrap;box-shadow:var(--sh1);
}
.ex-nav:hover{background:var(--bg2);border-color:var(--bd3);color:var(--tx)}
.ex-nav:disabled{opacity:.35;cursor:default;box-shadow:none}
.ex-body{max-width:50rem;margin:0 auto;padding:2rem 1.5rem 4rem}

/* Exercise header */
.exh{margin-bottom:2rem}
.exh-chips{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.65rem;align-items:center}
.exh-title{
  font-family:var(--fd);font-size:clamp(1.35rem,3.5vw,1.9rem);
  font-weight:700;margin-bottom:.4rem;line-height:1.18;color:var(--tx);
  letter-spacing:-.02em;
}
.exh-origin{font-size:.85rem;color:var(--tx3);margin-bottom:.8rem;font-weight:400}
.exh-summary{
  font-size:.9rem;color:var(--tx2);line-height:1.65;margin-bottom:1rem;
  padding:.9rem 1.1rem;background:var(--bg2);
  border-radius:var(--r);border-left:3px solid var(--terra);
}
.exh-source{margin-bottom:1.5rem}
.ex-breadcrumb{
  font-size:.72rem;color:var(--tx3);margin-bottom:.7rem;
  display:flex;align-items:center;gap:.3rem;flex-wrap:wrap;
}
.ex-breadcrumb span{color:var(--tx3);font-size:.65rem}
.exh-cn{
  margin-bottom:1rem;padding:.8rem 1.1rem;
  background:var(--bg2);border:1px solid var(--bd);
  border-radius:var(--r);border-left:3px solid var(--terra2);
  font-size:.83rem;color:var(--tx3);line-height:1.6;
}
.exh-cn-label{
  font-size:.62rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.06em;color:var(--terra2);margin-bottom:.3rem;
  display:flex;align-items:center;gap:.3rem;
}
.exh-cn-ref{margin-top:.5em;font-size:.85em}
.exh-cn-ref a{color:var(--tx3);text-decoration:none;font-style:italic}
.exh-cn-ref a:hover{text-decoration:underline}
/* Lire à la suite excerpt */
.exh-excerpt{background:var(--bg-soft,#FBF6E9);border-left:3px solid var(--ocre,#C8A97E);padding:1.2em 1.5em;margin:1.5em 0;font-family:var(--font-serif,"Playfair Display",serif);font-size:.95em;line-height:1.6;color:var(--tx,#3E2E23)}
.exh-excerpt-label{font-family:var(--font-sans,"Source Sans 3",sans-serif);font-size:.8em;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--tx3);margin-bottom:.8em}
.exh-excerpt-body{white-space:pre-line}
.exh-excerpt-cite{font-family:var(--font-sans);font-size:.8em;font-style:italic;color:var(--tx3);margin-top:1em;padding-top:.8em;border-top:1px solid var(--ocre,#C8A97E)}
.exh-excerpt-cite a{color:var(--tx3);text-decoration:none}
.exh-excerpt-cite a:hover{text-decoration:underline}
/* Mediation task example */
.act-example{font-size:.82em;font-style:italic;color:var(--tx3,#7A5E48);margin-top:.5em;padding-left:.7em;border-left:2px solid var(--gr,#8A9A5B)}
/* Mise en récit — adaptation pédagogique */
.exh-recit{background:linear-gradient(180deg,var(--w,#FBF6E9),var(--bg,#F4ECD8));border:1px solid var(--bd2,#C8B490);border-left:4px solid var(--ocre,#C8A97E);border-radius:var(--r,6px);padding:1.4em 1.6em;margin:1.5em 0}
.exh-recit-label{font-family:var(--fb,"Source Sans 3",sans-serif);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--gr-tx,#4D6B29);margin-bottom:1em}
.exh-recit-body{font-family:var(--fd,"Playfair Display",Georgia,serif);font-size:1.02em;line-height:1.7;color:var(--tx,#3E2E23)}
.exh-recit-body p{margin:0 0 .9em 0}
.exh-recit-body p:last-child{margin-bottom:0}
.exh-recit-attr{font-family:var(--fb,"Source Sans 3",sans-serif);font-size:.78rem;font-style:italic;color:var(--tx3,#7A5E48);margin-top:1.2em;padding-top:.8em;border-top:1px solid var(--ocre,#C8A97E)}
.exh-recit-attr a{color:var(--tx2,#5A3E2B);text-decoration:none;font-style:normal}
.exh-recit-attr a:hover{text-decoration:underline}
/* Related contes */
.rel-contes{margin-bottom:2rem}
.rel-contes-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--tx4);margin-bottom:.5rem}
.rel-grid{display:flex;flex-wrap:wrap;gap:.4rem}
.rel-card{
  padding:.38rem .7rem;border:1px solid var(--bd);border-radius:var(--r);
  background:var(--w);cursor:pointer;transition:all .15s;
  font-size:.76rem;color:var(--tx2);box-shadow:var(--sh1);
  display:inline-flex;align-items:center;gap:.3rem;
}
.rel-card:hover{border-color:var(--terra);color:var(--terra);background:var(--tbg);box-shadow:none}
/* Exercise sections */
.exs{margin-bottom:2.2rem}
.exs-title{
  font-family:var(--fd);font-size:1.05rem;font-weight:600;
  display:flex;align-items:center;gap:.5rem;
  margin-bottom:.9rem;padding-bottom:.5rem;
  border-bottom:1px solid var(--bd);color:var(--tx);
}
.exs-num{
  width:1.6rem;height:1.6rem;border-radius:6px;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:.68rem;font-weight:700;flex-shrink:0;
}
.exs-num.n1{background:var(--gbg);color:var(--gr-tx)}
.exs-num.n2{background:var(--tbg);color:var(--terra)}
.exs-num.n3{background:var(--bg2);color:var(--tx2);border:1px solid var(--bd)}
.exs-num.nm{background:#E8EEF8;color:#3A5FA0}
.exs-num.ng{background:var(--gbg);color:var(--gr-tx)}
/* Activity cards */
.act{
  background:var(--w);border:1px solid var(--bd);border-radius:var(--r);
  padding:.85rem 1.1rem;margin-bottom:.6rem;transition:all .18s;
  box-shadow:var(--sh1);
}
.act:hover{border-color:var(--bd3);box-shadow:var(--sh2)}
.act-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:.35rem;gap:.5rem}
.act-title{font-weight:600;font-size:.87rem;color:var(--tx)}
.act-time{
  font-size:.65rem;color:var(--tx4);background:var(--bg2);
  padding:.15rem .45rem;border-radius:99px;flex-shrink:0;
  border:1px solid var(--bd);white-space:nowrap;
}
.act-type{font-size:.6rem;font-weight:700;color:var(--terra);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.25rem}
.act-inst{font-size:.83rem;color:var(--tx3);line-height:1.6}
/* Vocab table */
.vocab{width:100%;border-collapse:collapse;font-size:.83rem;margin-top:.5rem}
.vocab th{
  text-align:left;font-weight:700;font-size:.68rem;
  text-transform:uppercase;letter-spacing:.05em;color:var(--tx4);
  padding:.45rem .6rem;border-bottom:2px solid var(--bd2);background:var(--bg2);
}
.vocab th:first-child{border-radius:var(--r) 0 0 0}
.vocab th:last-child{border-radius:0 var(--r) 0 0}
.vocab td{padding:.5rem .6rem;border-bottom:1px solid var(--bd);color:var(--tx3);vertical-align:top}
.vocab tr:last-child td{border-bottom:none}
.vocab td:first-child{font-weight:600;color:var(--terra);white-space:nowrap}
/* Grammar box */
.gram-box{
  background:var(--gbg);border:1px solid var(--gbg2);
  border-radius:var(--r);padding:.9rem 1.1rem;margin-bottom:.6rem;
}
.gram-box-t{font-weight:700;font-size:.83rem;color:var(--gr);margin-bottom:.35rem}
.gram-box-d{font-size:.83rem;color:var(--tx3);line-height:1.55}
/* Differentiation */
.diff-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.6rem}
.diff-card{border-radius:var(--r);padding:.75rem .9rem;border:1px solid var(--bd);background:var(--w)}
.diff-card.sup{border-top:3px solid var(--gr)}
.diff-card.cor{border-top:3px solid var(--bd3)}
.diff-card.cha{border-top:3px solid var(--terra)}
.diff-label{font-weight:700;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.3rem}
.diff-card.sup .diff-label{color:var(--gr)}
.diff-card.cor .diff-label{color:var(--tx3)}
.diff-card.cha .diff-label{color:var(--terra)}
.diff-desc{font-size:.8rem;color:var(--tx3);line-height:1.5}
/* Teacher notes */
.tnotes{background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r);padding:.9rem 1.1rem}
.tnotes-t{font-weight:700;font-size:.82rem;color:var(--tx2);margin-bottom:.35rem;display:flex;align-items:center;gap:.35rem}
.tnotes-d{font-size:.83rem;color:var(--tx3);line-height:1.6}
/* Placeholder */
.ex-placeholder{text-align:center;padding:3rem 1rem;color:var(--tx4)}
.ex-placeholder p{margin-bottom:.5rem}

/* ══════════════════════════════════════════════════
   INTERACTIVE EXERCISES
   ══════════════════════════════════════════════════ */
.iq-wrap{margin-top:2.5rem;border-top:2px solid var(--bd);padding-top:2rem}
.iq-hdr{
  display:flex;align-items:center;gap:.85rem;margin-bottom:1.75rem;
  padding:.9rem 1.1rem;background:var(--bg2);border-radius:var(--rlg);
  border:1px solid var(--bd);
}
.iq-hdr-icon{font-size:1.5rem;line-height:1;flex-shrink:0}
.iq-hdr-title{font-family:var(--fd);font-size:1rem;font-weight:600;color:var(--tx)}
.iq-hdr-sub{font-size:.73rem;color:var(--tx4);margin-top:.1rem}
.iq-level-badge{
  margin-left:auto;font-family:var(--fd);font-size:.85rem;font-weight:700;
  color:var(--terra);background:var(--tbg);border:1px solid var(--tbg2);
  border-radius:99px;padding:.2rem .65rem;flex-shrink:0;
}
.iq-section-wrap{margin-bottom:1.2rem}
.iq-section-hdr{display:flex;align-items:center;gap:.7rem;margin-bottom:.65rem}
.iq-sec-num{
  width:1.75rem;height:1.75rem;border-radius:50%;
  background:var(--terra);color:#fff;
  font-family:var(--fd);font-size:.8rem;font-weight:700;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.iq-sec-title{font-family:var(--fd);font-size:.92rem;font-weight:600;color:var(--tx)}
.iq-sec-sub{font-size:.73rem;color:var(--tx4)}
.iq-card{
  background:var(--w);border:1px solid var(--bd);
  border-radius:var(--rlg);padding:1.2rem 1.3rem;
  margin-bottom:1rem;box-shadow:var(--sh1);
}
.iq-card-top{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem;flex-wrap:wrap}
.iq-badge{
  display:inline-flex;align-items:center;padding:.18rem .55rem;
  border-radius:99px;font-size:.62rem;font-weight:700;
  letter-spacing:.04em;text-transform:uppercase;flex-shrink:0;
}
.iq-badge-blue{background:var(--bluebg);color:var(--blue);border:1px solid #BFDBFE}
.iq-badge-terra{background:var(--tbg);color:var(--terra);border:1px solid var(--tbg2)}
.iq-badge-green{background:var(--gbg);color:var(--gr);border:1px solid var(--gbg2)}
.iq-card-title{font-weight:600;font-size:.88rem;color:var(--tx2);flex:1}
.iq-score{font-family:var(--fd);font-size:1rem;font-weight:700;color:var(--terra);margin-left:auto;white-space:nowrap}
.iq-retry{
  margin-top:.8rem;background:none;border:1px solid var(--bd2);
  border-radius:var(--r);padding:.35rem .8rem;font-size:.75rem;
  color:var(--tx4);cursor:pointer;font-family:var(--fb);transition:all .15s;
}
.iq-retry:hover{background:var(--bg2);color:var(--tx2);border-color:var(--bd3)}
.iq-success{
  background:var(--gbg);border:1px solid var(--gbg2);border-radius:var(--r);
  padding:.65rem 1rem;font-size:.85rem;color:var(--gr);
  font-weight:600;margin-top:.9rem;text-align:center;
}
/* Vocab matching */
.iq-cols{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.iq-col{display:flex;flex-direction:column;gap:.3rem}
.iq-word,.iq-def{
  padding:.5rem .75rem;border-radius:var(--r);
  border:1.5px solid var(--bd2);background:var(--bg2);
  font-size:.82rem;color:var(--tx2);cursor:pointer;
  text-align:left;transition:all .18s;font-family:var(--fb);line-height:1.4;
}
.iq-word:hover:not(:disabled),.iq-def:hover:not(:disabled){border-color:var(--bd3);background:var(--w)}
.iq-sel{border-color:var(--blue)!important;background:var(--bluebg)!important;color:var(--blue)!important}
.iq-ok{border-color:var(--gr)!important;background:var(--gbg)!important;color:var(--gr)!important;cursor:default}
.iq-err{border-color:var(--terra)!important;background:var(--tbg)!important;animation:iq-shake .4s}
@keyframes iq-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
/* T/F */
.iq-tf-item{
  border:1px solid var(--bd);border-radius:var(--r);
  padding:.85rem 1rem;margin-bottom:.5rem;transition:border-color .2s;
}
.iq-tf-q{font-size:.86rem;color:var(--tx2);margin-bottom:.65rem;line-height:1.55}
.iq-tf-btns{display:flex;gap:.4rem}
.iq-tf-btn{
  padding:.4rem .95rem;border-radius:var(--r);border:1.5px solid;
  font-size:.8rem;font-weight:700;cursor:pointer;font-family:var(--fb);transition:all .15s;
}
.iq-tf-v{border-color:var(--gr);color:var(--gr);background:transparent}.iq-tf-v:hover:not(:disabled){background:var(--gbg)}
.iq-tf-f{border-color:var(--terra);color:var(--terra);background:transparent}.iq-tf-f:hover:not(:disabled){background:var(--tbg)}
.iq-tf-btn:disabled{opacity:.4;cursor:default}
.iq-tf-correct{border-color:var(--gr)!important;background:var(--gbg)}
.iq-tf-wrong{border-color:var(--terra)!important;background:var(--tbg)}
.iq-tf-fb{font-size:.78rem;color:var(--tx3);margin-top:.4rem;font-style:italic}
.iq-tf-correct .iq-tf-fb{color:var(--gr)}.iq-tf-wrong .iq-tf-fb{color:var(--terra2)}
/* FIB */
.iq-fib-item{margin-bottom:.9rem;padding:.75rem .9rem;border:1px solid var(--bd);border-radius:var(--r);transition:border-color .18s}
.iq-fib-sent{font-size:.88rem;color:var(--tx2);line-height:2.1;display:flex;flex-wrap:wrap;align-items:center;gap:.2rem}
.iq-fib-slot{display:inline-flex;align-items:center;gap:.2rem}
.iq-fib-in{
  width:7.5rem;padding:.28rem .5rem;border-radius:6px;
  border:1.5px solid var(--bd2);font-size:.85rem;
  font-family:var(--fb);color:var(--tx);background:var(--bg2);
  transition:all .18s;text-align:center;
}
.iq-fib-in:focus{outline:none;border-color:var(--blue);background:var(--w)}
.iq-fib-in:disabled{background:var(--gbg);border-color:var(--gr);color:var(--gr);font-weight:600}
.iq-fib-icon{display:inline-block;font-size:1rem;font-weight:700;min-width:1.2rem;text-align:center}
.iq-fib-ok{border-color:var(--gr)!important}.iq-fib-ok .iq-fib-icon{color:var(--gr)}
.iq-fib-err{border-color:var(--terra)!important}.iq-fib-err .iq-fib-icon{color:var(--terra)}
.iq-fib-bank{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.55rem}
.iq-fib-opt{
  padding:.22rem .6rem;border-radius:99px;border:1px solid var(--bd2);
  background:var(--bg2);font-size:.75rem;color:var(--tx3);cursor:pointer;
  font-family:var(--fb);transition:all .15s;
}
.iq-fib-opt:hover{border-color:var(--bd3);background:var(--w)}
.iq-fib-opt-sel{border-color:var(--blue);background:var(--bluebg);color:var(--blue)}
/* Production */
.iq-prod-aids{margin:.5rem 0 .8rem;padding-left:1.2rem;font-size:.83rem;color:var(--tx3);line-height:1.75}
.iq-prod-aids li::marker{color:var(--terra)}
.iq-prod-ta{
  width:100%;margin-top:.65rem;padding:.75rem .95rem;
  border:1.5px solid var(--bd2);border-radius:var(--r);
  font-family:var(--fb);font-size:.85rem;color:var(--tx);
  background:var(--bg2);resize:vertical;transition:border-color .18s;line-height:1.65;
}
.iq-prod-ta:focus{outline:none;border-color:var(--terra);background:var(--w)}
.iq-prod-ta-hint{font-size:.67rem;color:var(--tx5);margin-top:.3rem;font-style:italic}
.prod-restored{background:var(--bluebg);color:var(--blue);border-radius:var(--r);padding:.3rem .7rem;font-size:.73rem;margin-bottom:.4rem;display:flex;align-items:center;gap:.4rem}
.prod-clear-link{background:none;border:none;color:inherit;font-size:inherit;text-decoration:underline;cursor:pointer;padding:0;font-family:var(--fb)}
.prod-name-in{width:100%;padding:.45rem .75rem;border:1.5px solid var(--bd2);border-radius:var(--r);font-family:var(--fb);font-size:.82rem;color:var(--tx);background:var(--w);margin-bottom:.45rem;transition:border-color .18s}
.prod-name-in:focus{outline:none;border-color:var(--terra)}
.prod-actions{display:flex;align-items:center;justify-content:space-between;margin-top:.35rem;flex-wrap:wrap;gap:.3rem}
.prod-saved{font-size:.72rem;color:var(--gr);font-weight:500;opacity:0;transition:opacity .35s}
.prod-saved.vis{opacity:1}
.prod-gdpr{font-size:.65rem;color:var(--tx5);margin-top:.55rem;line-height:1.5;font-style:italic}
.iq-prod-oral{
  display:flex;flex-direction:column;align-items:center;gap:.5rem;
  padding:1.3rem;text-align:center;background:var(--tbg);
  border-radius:var(--r);margin-top:.65rem;
  color:var(--tx3);font-size:.85rem;line-height:1.55;
}
.legal-marker{font-variant:small-caps;letter-spacing:.08em;color:var(--encre-sepia);font-weight:600}
.iq-prod-orale{background:var(--mousse-clair);border-left:3px solid var(--mousse);padding:.2rem .5rem .2rem .6rem;border-radius:0 3px 3px 0;display:inline-block;font-size:.78rem;font-weight:500;color:var(--olive-sauvage)}
.iq-prod-ecrite{background:var(--parchemin-clair);border-left:3px solid var(--sable-chaud);padding:.2rem .5rem .2rem .6rem;border-radius:0 3px 3px 0;display:inline-block;font-size:.78rem;font-weight:500;color:var(--encre-sepia)}
.country-tag{display:inline-block;background:rgba(244,236,216,.15);color:var(--encre-sepia);font-size:.85em;font-weight:500;padding:2px 8px;border-radius:3px}
/* Vocab add button */
.wl-add-btn{
  display:inline-flex;align-items:center;gap:.2rem;
  padding:.15rem .4rem;border:1px dashed var(--bd3);
  border-radius:99px;font-size:.62rem;color:var(--tx4);
  background:none;cursor:pointer;font-family:var(--fb);transition:all .15s;
}
.wl-add-btn:hover{border-color:var(--terra);color:var(--terra);background:var(--tbg)}

/* ══════════════════════════════════════════════════
   TOOLKIT CARDS
   ══════════════════════════════════════════════════ */
.tk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.75rem}
.tk-card{background:var(--w);border:1px solid var(--bd);border-radius:var(--rlg);overflow:hidden;transition:box-shadow .2s,transform .2s}
.tk-card:hover{box-shadow:var(--sh3);transform:translateY(-2px)}
.tk-hdr{display:flex;align-items:center;gap:.55rem;padding:.7rem 1rem;font-size:.82rem;font-weight:600;border-bottom:1px solid transparent}
.tk-hdr-gr{background:var(--gbg);border-bottom-color:var(--gbg2);color:var(--tx2)}
.tk-hdr-or{background:var(--tbg);border-bottom-color:var(--tbg2);color:var(--terra2)}
.tk-level{
  font-size:.62rem;font-weight:800;letter-spacing:.04em;
  padding:.15rem .45rem;border-radius:4px;
  background:rgba(255,255,255,.7);flex-shrink:0;
}
.tk-hdr-gr .tk-level{color:var(--tx2)}
.tk-hdr-or .tk-level{color:var(--terra)}
.tk-body{padding:.85rem 1rem;display:flex;flex-direction:column;gap:.55rem}
.tk-item{display:flex;gap:.6rem;font-size:.8rem;color:var(--tx3);line-height:1.6;align-items:flex-start}
.tk-num{
  flex-shrink:0;width:1.4rem;height:1.4rem;border-radius:50%;
  background:var(--bg2);border:1px solid var(--bd);
  display:flex;align-items:center;justify-content:center;
  font-size:.62rem;font-weight:700;color:var(--tx4);margin-top:.1rem;
}

/* ══════════════════════════════════════════════════
   DARK MODE
   ══════════════════════════════════════════════════ */
/* ── Dark mode: warm midnight — no pure black, no pure white ── */
html.dark{
  --bg:#1E1710;--bg2:#261D12;--w:#30231A;
  --tx:#EDE0C8;--tx2:#D8C8A8;--tx3:#A89070;--tx4:#786050;--tx5:#504030;
  --bd:#3C2C1E;--bd2:#4C3828;--bd3:#5C4838;
  --tbg:#2C1C10;--tbg2:#3C2818;--gbg:#1A2010;--gbg2:#242E14;
  --bluebg:#18202C;
  --sh-c:0 2px 8px rgba(164,62,44,.28);
  --sh1:0 1px 4px rgba(0,0,0,.20),0 1px 2px rgba(0,0,0,.14);
  --sh2:0 3px 10px rgba(0,0,0,.25),0 1px 4px rgba(0,0,0,.16);
  --sh3:0 8px 28px rgba(0,0,0,.30),0 3px 10px rgba(0,0,0,.18);
  --sh4:0 20px 60px rgba(0,0,0,.38),0 8px 20px rgba(0,0,0,.22);
}
html.dark body{color-scheme:dark}
html.dark .hero{background:#1E1710}
html.dark .nums{background:var(--w);border-color:var(--bd)}
html.dark .step{background:var(--w)}html.dark .step:hover{background:var(--bg2)}
html.dark .steps{background:var(--w);border-color:var(--bd)}
html.dark .ftr{background:linear-gradient(180deg,var(--bg2) 0%,var(--bg) 100%)}
html.dark .hdr{background:rgba(24,22,20,.96);border-bottom-color:var(--bd)}
html.dark .map-fr{background:linear-gradient(180deg,#1A2830 0%,#1E2E38 100%)}
html.dark .map-leg{background:rgba(34,30,26,.95)}
html.dark .tt{background:rgba(42,38,34,.97)}
html.dark .mob-nav{background:rgba(24,22,20,.98)}
html.dark .ftr{background:var(--bg2)}
html.dark .hdr-dropdown{background:var(--w);border-color:var(--bd2)}
html.dark .hdd-btn:hover{background:var(--bg)}
html.dark .panel-overlay{background:rgba(0,0,0,.6)}
html.dark .notes-panel,html.dark .wordlist-panel{background:var(--bg2)}
html.dark .flash-card-front{background:var(--terra2)}
html.dark .flash-card-back{background:var(--w);color:var(--tx)}
html.dark .note-ta,html.dark .iq-prod-ta{background:var(--bg);border-color:var(--bd2);color:var(--tx)}
html.dark .iq-fib-in{background:var(--bd);color:var(--tx)}
html.dark .si,html.dark .fs,html.dark .hdd-fsb{background:var(--w);color:var(--tx);border-color:var(--bd2)}
html.dark .ks-modal-box,html.dark .flash-modal-box{background:var(--bg2);border-color:var(--bd2)}

/* Font size */
body.fs-sm{font-size:14px}
body.fs-lg{font-size:17.5px}

/* ══════════════════════════════════════════════════
   PANELS & MODALS
   ══════════════════════════════════════════════════ */
.panel-overlay{
  position:fixed;inset:0;background:rgba(30,23,16,.45);
  z-index:200;opacity:0;pointer-events:none;transition:opacity .2s;
  backdrop-filter:blur(4px);
}
.panel-overlay.vis{opacity:1;pointer-events:all}
.notes-panel,.wordlist-panel{
  position:fixed;top:0;right:0;bottom:0;z-index:201;
  width:min(380px,95vw);background:var(--bg);
  border-left:1px solid var(--bd);box-shadow:var(--sh4);
  display:flex;flex-direction:column;
  transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);
}
.notes-panel.open,.wordlist-panel.open{transform:translateX(0)}
.panel-hdr{
  display:flex;align-items:center;justify-content:space-between;
  padding:1rem 1.2rem;border-bottom:1px solid var(--bd);background:var(--w);
  flex-shrink:0;
}
.panel-hdr-title{font-family:var(--fd);font-size:.95rem;font-weight:600;display:flex;align-items:center;gap:.4rem;color:var(--tx)}
.panel-close{
  width:30px;height:30px;border-radius:6px;
  background:none;border:none;font-size:1rem;cursor:pointer;
  color:var(--tx4);transition:all .15s;
  display:inline-flex;align-items:center;justify-content:center;
}
.panel-close:hover{background:var(--bg2);color:var(--tx)}
.panel-body{flex:1;overflow-y:auto;padding:1.2rem}
.note-ta{
  width:100%;min-height:180px;padding:.8rem 1rem;
  border:1.5px solid var(--bd2);border-radius:var(--r);
  font-family:var(--fb);font-size:.85rem;color:var(--tx);
  background:var(--w);resize:vertical;line-height:1.65;transition:border-color .18s;
}
.note-ta:focus{outline:none;border-color:var(--terra);background:var(--w)}
.note-saved{font-size:.72rem;color:var(--gr);margin-top:.4rem;height:1rem;transition:opacity .25s}
.note-saved.hidden{opacity:0}
.note-list{display:flex;flex-direction:column;gap:.5rem}
.note-entry{
  padding:.65rem .85rem;border:1px solid var(--bd);border-radius:var(--r);
  background:var(--w);font-size:.83rem;color:var(--tx2);
  cursor:pointer;transition:all .15s;
}
.note-entry:hover{border-color:var(--terra);background:var(--tbg)}
.note-entry-title{font-weight:600;font-size:.75rem;margin-bottom:.2rem;color:var(--tx3)}
.note-entry-preview{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--tx4);font-size:.78rem}
.note-empty{color:var(--tx4);font-size:.83rem;text-align:center;padding:2.5rem 1rem;font-style:italic;line-height:1.65}
/* Word list */
.word-item{
  display:flex;align-items:flex-start;justify-content:space-between;
  padding:.5rem .65rem;border:1px solid var(--bd);border-radius:var(--r);
  background:var(--w);font-size:.83rem;gap:.5rem;margin-bottom:.35rem;
}
.word-item-w{font-weight:700;color:var(--terra);flex-shrink:0;min-width:6rem}
.word-item-d{color:var(--tx3);font-size:.78rem;line-height:1.5;flex:1}
.word-item-del{
  background:none;border:none;color:var(--tx5);cursor:pointer;
  font-size:.85rem;padding:.1rem;border-radius:4px;transition:color .15s;flex-shrink:0;
}
.word-item-del:hover{color:var(--terra)}
/* Flashcards */
.flash-modal{
  position:fixed;inset:0;z-index:210;
  background:rgba(30,23,16,.5);backdrop-filter:blur(8px);
  display:none;align-items:center;justify-content:center;padding:1rem;
}
.flash-modal.open{display:flex}
.flash-modal-box{
  background:var(--bg);border:1px solid var(--bd);border-radius:var(--rxl);
  padding:1.75rem;width:min(36rem,95vw);box-shadow:var(--sh4);
}
.flash-modal-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.3rem}
.flash-modal-title{font-family:var(--fd);font-size:1rem;font-weight:600;color:var(--tx)}
.flash-progress{font-size:.75rem;color:var(--tx4)}
.flash-card{perspective:900px;height:160px;cursor:pointer;margin-bottom:1rem}
.flash-card-inner{
  position:relative;width:100%;height:100%;
  transform-style:preserve-3d;transition:transform .45s;
  border-radius:var(--rlg);
}
.flash-card.flipped .flash-card-inner{transform:rotateY(180deg)}
.flash-card-front,.flash-card-back{
  position:absolute;inset:0;backface-visibility:hidden;
  border-radius:var(--rlg);display:flex;align-items:center;
  justify-content:center;padding:1.5rem;text-align:center;
}
.flash-card-front{background:linear-gradient(135deg,var(--terra),var(--terra2));color:#fff;font-family:var(--fd);font-size:1.3rem;font-weight:600}
.flash-card-back{background:var(--w);color:var(--tx);transform:rotateY(180deg);font-size:.93rem;color:var(--tx2);line-height:1.6;box-shadow:var(--sh2)}
.flash-hint{font-size:.72rem;color:var(--tx4);text-align:center;margin-bottom:1.1rem;font-style:italic}
.flash-btns{display:flex;gap:.5rem;justify-content:center}
.flash-btn{padding:.45rem 1.2rem;border-radius:var(--r);border:1.5px solid;font-size:.83rem;font-weight:600;cursor:pointer;font-family:var(--fb);transition:all .15s}
.flash-btn-prev{border-color:var(--bd2);color:var(--tx3);background:none}.flash-btn-prev:hover{background:var(--bg2)}
.flash-btn-next{border-color:var(--terra);color:var(--terra);background:none}.flash-btn-next:hover{background:var(--tbg)}
/* Keyboard shortcuts modal */
.ks-modal{
  position:fixed;inset:0;z-index:210;
  background:rgba(30,23,16,.5);backdrop-filter:blur(8px);
  display:none;align-items:center;justify-content:center;padding:1rem;
}
.ks-modal.open{display:flex}
.ks-modal-box{
  background:var(--bg);border:1px solid var(--bd);border-radius:var(--rxl);
  padding:1.75rem;width:min(30rem,95vw);max-height:90vh;
  overflow-y:auto;box-shadow:var(--sh4);
}
.ks-title{
  font-family:var(--fd);font-size:1rem;font-weight:600;
  margin-bottom:1.1rem;display:flex;align-items:center;justify-content:space-between;color:var(--tx);
}
.ks-list{display:flex;flex-direction:column;gap:.3rem}
.ks-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:.42rem .65rem;border-radius:var(--r);background:var(--w);border:1px solid var(--bd);
}
.ks-desc{font-size:.83rem;color:var(--tx2)}
.ks-key{
  font-size:.72rem;font-weight:700;color:var(--tx3);
  background:var(--bg2);border:1px solid var(--bd2);
  border-radius:5px;padding:.08rem .48rem;
  font-family:monospace;box-shadow:0 1px 2px rgba(0,0,0,.08);
}
/* Grammar map */
.gram-map{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.5rem;margin-top:.8rem}
.gram-node{
  padding:.65rem .75rem;border:1px solid var(--bd);border-radius:var(--r);
  background:var(--w);font-size:.75rem;cursor:pointer;transition:all .18s;
  position:relative;box-shadow:var(--sh1);
}
.gram-node:hover{border-color:var(--terra);box-shadow:var(--sh2);transform:translateY(-1px)}
.gram-node.done{border-color:var(--gr);background:var(--gbg)}
.gram-node.done::after{content:'✓';position:absolute;top:.3rem;right:.4rem;font-size:.6rem;color:var(--gr);font-weight:700}
.gram-node-t{font-weight:600;color:var(--tx2);margin-bottom:.2rem;line-height:1.3}
.gram-node-lvl{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--tx4)}
/* Lesson planner */
.planner-day{border:1px solid var(--bd);border-radius:var(--r);padding:.8rem 1rem;margin-bottom:.5rem;background:var(--w);box-shadow:var(--sh1)}
.planner-day-hdr{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;font-weight:700;color:var(--tx2);margin-bottom:.45rem}
.planner-slot{font-size:.78rem;color:var(--tx3);padding:.3rem 0;border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:.4rem}
.planner-slot:last-child{border-bottom:none}
.planner-add{
  background:none;border:1.5px dashed var(--bd3);border-radius:var(--r);
  padding:.32rem .6rem;font-size:.73rem;color:var(--tx4);cursor:pointer;
  width:100%;text-align:center;margin-top:.35rem;font-family:var(--fb);transition:all .15s;
}
.planner-add:hover{border-color:var(--terra);color:var(--terra)}
/* PWA banner */
.pwa-banner{
  position:fixed;bottom:1.2rem;left:50%;transform:translateX(-50%);
  z-index:95;background:var(--tx);color:var(--bg);
  padding:.7rem 1.3rem;border-radius:99px;font-size:.8rem;font-weight:600;
  display:none;align-items:center;gap:.75rem;box-shadow:var(--sh4);
  white-space:nowrap;max-width:calc(100vw - 2rem);
}
.pwa-banner.show{display:flex}
.pwa-banner-btn{
  padding:.3rem .75rem;border-radius:99px;background:var(--terra);
  color:#fff;border:none;cursor:pointer;font-size:.75rem;font-weight:700;font-family:var(--fb);
}
.pwa-banner-x{background:none;border:none;color:rgba(240,234,226,.45);cursor:pointer;font-size:1rem;padding:.1rem;line-height:1}
/* Streak */
.streak-badge{display:none;align-items:center;gap:.25rem;padding:.22rem .55rem;border-radius:99px;background:var(--tbg);border:1px solid var(--tbg2);font-size:.7rem;font-weight:700;color:var(--terra)}

/* ══════════════════════════════════════════════════
   READING MODE / SEQUENCE
   ══════════════════════════════════════════════════ */
body.reading-mode .hero,
body.reading-mode #methode,
body.reading-mode #espace-enseignant,
body.reading-mode #sources-sec,
body.reading-mode .ftr,
body.reading-mode .sec-div{display:none}
body.reading-mode .hdr .nav-d{visibility:hidden}
body.reading-mode #contes{padding-top:1.5rem}
#readModeBtn.active{background:var(--tbg);border-color:var(--tbg2);color:var(--terra)}

/* ══════════════════════════════════════════════════
   MAP KEYBOARD FOCUS
   ══════════════════════════════════════════════════ */
#mapEl svg:focus{outline:none}
#mapEl svg path.kb-focus{outline:3px solid var(--terra);outline-offset:2px;filter:url(#glow)}
#mapEl svg[aria-activedescendant] path[data-kb-active]{stroke:var(--terra)!important;stroke-width:2.8!important}

/* ══════════════════════════════════════════════════
   MAP BOTTOM SHEET
   ══════════════════════════════════════════════════ */
.map-sheet-scrim{
  display:none;position:fixed;inset:0;background:rgba(30,23,16,.45);z-index:300;
  backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);
}
.map-sheet-scrim.open{display:block}
.map-sheet{
  position:fixed;bottom:0;left:0;right:0;z-index:301;
  background:var(--w);border-radius:var(--rxl) var(--rxl) 0 0;
  box-shadow:var(--sh4);padding:0 1.25rem 2rem;
  transform:translateY(100%);transition:transform var(--dur-slow) var(--ease-out-editorial);
  max-height:72vh;overflow-y:auto;display:none;
}
.map-sheet.open{display:block;transform:translateY(0)}
.map-sheet-handle{
  width:2.5rem;height:4px;background:var(--bd2);border-radius:99px;
  margin:.75rem auto .5rem;
}
.map-sheet-hdr{
  display:flex;align-items:center;justify-content:space-between;
  padding:.5rem 0 .75rem;border-bottom:1px solid var(--bd);margin-bottom:1rem;
}
.map-sheet-title{font-family:var(--fd);font-size:1.15rem;font-weight:600;color:var(--tx);margin:0}
.map-sheet-close{
  background:none;border:none;cursor:pointer;font-size:1rem;
  color:var(--tx3);padding:.25rem .4rem;border-radius:var(--r);
  transition:background var(--ease);
}
.map-sheet-close:hover{background:var(--bg2);color:var(--tx)}
.map-sheet-body{font-size:.9rem;color:var(--tx2);line-height:1.6;margin-bottom:1rem}
.map-sheet-body .ms-flag{font-size:2rem;margin-bottom:.5rem}
.map-sheet-body .ms-stat{
  display:inline-flex;align-items:center;gap:.35rem;font-size:.82rem;
  background:var(--bg2);border-radius:var(--r);padding:.2rem .55rem;margin:.2rem .2rem 0 0;
  color:var(--tx2);font-weight:500;
}
.map-sheet-actions{display:flex;gap:.5rem;flex-wrap:wrap}
@media(min-width:769px){.map-sheet,.map-sheet-scrim{display:none!important}}


/* ══════════════════════════════════════════════════
   PRINT
   ══════════════════════════════════════════════════ */
@media print{
  body{display:none!important}
  body::after{content:"Ce site ne peut pas être imprimé. Veuillez utiliser la version en ligne à atlas.traitdunion.gr.";display:block!important;font-size:18pt;text-align:center;margin-top:4em;color:#3E2E23}
}

/* ══════════════════════════════════════════════════
   RESPONSIVE
   ══════════════════════════════════════════════════ */
@media(max-width:640px){
  .iq-cols{grid-template-columns:1fr}
  .num-item{min-width:80px;padding:.4rem 1rem}
  #cmpBody{grid-template-columns:1fr}
}
@media(max-width:768px){
  .sg{grid-template-columns:1fr}
  .ftr-g{grid-template-columns:1fr}
  .diff-grid{grid-template-columns:1fr}
  .pcard{flex-direction:column;gap:1rem}
  .ex-top{padding:.5rem .9rem;flex-wrap:wrap}
  .ex-actions{flex-wrap:wrap;gap:.2rem}
  .ex-body{padding:1.25rem 1rem 3rem}
  .exh-title{font-size:1.3rem}
  .vocab td:first-child{white-space:normal}
  .hero{padding:0 1.25rem}
  .hero-body{padding:4.5rem 0 3rem}
  .nums{gap:0;border-radius:0 0 var(--rlg) var(--rlg)}
  .con,.con-sm{padding:0 1.25rem}
  .map-in{padding:1rem 1.2rem}
  .hdr-in{gap:.75rem}
  .logo-sub{display:none}
}
@media(max-width:480px){
  .st-hdr{flex-direction:column;align-items:flex-start}
  .st-hdr-actions{width:100%;overflow-x:auto;padding-bottom:.2rem}
  .hero h1{font-size:2rem}
  .num-item{min-width:70px;padding:.85rem .75rem}
  .num-v{font-size:1.8rem}
}

/* ══════════════════════════════════════════════════
   REDUCED MOTION
   ══════════════════════════════════════════════════ */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    scroll-behavior:auto!important;
  }
  .sc{transform:none!important;opacity:1!important}
  .hero-visual svg{animation:none!important}
  .flash-card{transform:none!important}
  .flash-card-inner{transition:none!important}
  .ex-panel{transition:none!important}
}
