/* ==========================================================================
   PRÉPA ISPITS — Système visuel « Revue académique »
   Lecture longue reposante · hiérarchie claire · sobriété
   Titres Fraunces · Corps Source Serif 4 · Interface Inter
   ========================================================================== */
:root {
  --paper:#fbfcfd; --paper-2:#f3f6f8; --card:#ffffff; --line:#e4e8ec; --line-soft:#eef1f4;
  --ink:#1f2933; --ink-2:#46535f; --ink-3:#78858f; --ink-4:#9aa5ae;
  --blue:#1d4e6f; --blue-deep:#163c56; --blue-soft:#e8eff4; --blue-tint:#f2f7fa;
  --ok:#2f6b57; --ok-bg:#e7f1ec; --warn:#9a6b1f; --warn-bg:#f6eeda; --err:#a23b3b; --err-bg:#f6e7e6;
  --display:"Fraunces",Georgia,serif; --read:"Source Serif 4",Georgia,serif;
  --ui:"Inter",system-ui,-apple-system,sans-serif;
  --r-sm:8px; --r-md:12px; --r-lg:18px;
  --sh-1:0 1px 2px rgba(31,41,51,.05); --sh-2:0 2px 10px rgba(31,41,51,.06); --sh-3:0 8px 28px rgba(31,41,51,.09);
  --measure:68ch; --sidebar-w:268px; --ease:cubic-bezier(.4,0,.2,1);
  /* alias de compatibilité (anciennes classes) */
  --ivory:var(--paper); --ivory-soft:var(--paper-2); --ivory-deep:var(--paper-2); --cream:var(--card);
  --gold:var(--blue); --gold-deep:var(--blue-deep); --gold-soft:var(--blue-soft);
  --sage:var(--ok); --sage-deep:var(--ok); --ink-soft:var(--ink-2); --ink-mute:var(--ink-3);
  --success:var(--ok); --success-bg:var(--ok-bg); --error:var(--err); --error-bg:var(--err-bg);
  /* v9.18 — doré des étoiles d'avis (ajusté par thème dans themes.css) */
  --star:#e8a838; --star-deep:#d8901f;
}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:hidden;}
body{margin:0;font-family:var(--ui);color:var(--ink);background:var(--paper);
  line-height:1.6;font-size:16px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  padding-bottom:env(safe-area-inset-bottom);}
h1,h2,h3,h4{font-family:var(--display);font-weight:600;line-height:1.2;letter-spacing:-.01em;color:var(--ink);margin:0;}
a{color:var(--blue);text-decoration:none;} a:hover{color:var(--blue-deep);}
p{margin:0 0 1em;}
code{font-family:ui-monospace,"SF Mono",Menlo,monospace;background:var(--paper-2);
  padding:1px 6px;border-radius:5px;font-size:.85em;color:var(--ink-2);}
.mute{color:var(--ink-3);} img{max-width:100%;}
:focus-visible{outline:2.5px solid var(--blue);outline-offset:2px;border-radius:3px;}

/* ---------- Boutons & puces ---------- */
.btn-primary,.btn-ghost,.btn-gold{font-family:var(--ui);font-size:.95rem;font-weight:600;
  padding:12px 22px;border-radius:var(--r-sm);border:1px solid transparent;cursor:pointer;
  transition:all .18s var(--ease);display:inline-flex;align-items:center;gap:8px;text-decoration:none;line-height:1;}
.btn-primary,.btn-gold{background:var(--blue);color:var(--btn-txt,#fff);box-shadow:var(--sh-1);}
.btn-primary:hover,.btn-gold:hover{background:var(--blue-deep);color:var(--btn-txt,#fff);box-shadow:var(--sh-2);transform:translateY(-1px);}
.btn-ghost{background:var(--card);color:var(--ink-2);border-color:var(--line);}
.btn-ghost:hover{border-color:var(--blue);color:var(--blue);}
.landing-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:26px;}
@media(max-width:440px){.landing-cta{flex-direction:column;align-items:stretch;max-width:280px;margin-left:auto;margin-right:auto;}
  .landing-cta a{justify-content:center;}}
.chip{font-family:var(--ui);font-size:.82rem;font-weight:600;padding:7px 13px;border-radius:99px;
  border:1px solid var(--line);background:var(--card);color:var(--ink-2);cursor:pointer;
  transition:all .15s var(--ease);text-decoration:none;display:inline-flex;align-items:center;gap:6px;line-height:1;}
.chip:hover{border-color:var(--blue);color:var(--blue);}
.chip-primary,.chip-gold{background:var(--blue);color:var(--btn-txt,#fff);border-color:var(--blue);}
.chip-primary:hover,.chip-gold:hover{background:var(--blue-deep);color:var(--btn-txt,#fff);}
.chip-danger{background:var(--err-bg);color:var(--err);border-color:#e0b7b5;}
.chip-danger:hover{background:var(--err);color:var(--btn-txt,#fff);border-color:var(--err);}
.chip-warn{background:var(--warn-bg);color:var(--warn);border-color:#ddc48a;}
.chip-warn:hover{background:var(--warn);color:var(--btn-txt,#fff);}

/* ---------- Topbar + sidebar ---------- */
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:14px;padding:0 20px;
  height:60px;background:var(--topbar-bg,rgba(251,252,253,.9));backdrop-filter:blur(10px);border-bottom:1px solid var(--line);}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;}
.brand-badge{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;
  background:var(--blue);color:var(--btn-txt,#fff);font-size:1.05rem;flex-shrink:0;}
.brand-txt{display:flex;flex-direction:column;line-height:1.15;}
.brand-txt strong{font-family:var(--display);font-size:1.02rem;font-weight:600;color:var(--ink);}
.brand-txt small{font-size:.72rem;color:var(--ink-3);letter-spacing:.02em;}
.burger{display:none;width:40px;height:40px;border:1px solid var(--line);background:var(--card);
  border-radius:var(--r-sm);cursor:pointer;flex-direction:column;gap:4px;align-items:center;justify-content:center;}
.burger span{width:18px;height:2px;background:var(--ink-2);border-radius:2px;}
.topbar-zone{margin-left:auto;font-size:.8rem;font-weight:600;color:var(--ink-3);
  padding:5px 12px;background:var(--paper-2);border-radius:99px;}
.topbar-out{font-size:.85rem;font-weight:600;color:var(--ink-3);}
.topbar-out:hover{color:var(--err);}
.shell{display:flex;min-height:calc(100vh - 60px);}
.sidebar{width:var(--sidebar-w);flex-shrink:0;border-right:1px solid var(--line);padding:24px 16px;
  position:sticky;top:60px;height:calc(100vh - 60px);overflow-y:auto;background:var(--paper);}
.sidebar-group{margin-bottom:22px;}
.sidebar-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;
  color:var(--ink-4);padding:0 12px;margin-bottom:8px;}
.sidebar a{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--r-sm);
  font-size:.9rem;font-weight:500;color:var(--ink-2);transition:all .15s var(--ease);margin-bottom:2px;}
.sidebar a:hover{background:var(--paper-2);color:var(--ink);}
.sidebar a.is-active{background:var(--blue-soft);color:var(--blue-deep);font-weight:600;}
.sidebar a.is-locked{color:var(--ink-4);cursor:not-allowed;}
.sidebar-ico{width:18px;text-align:center;opacity:.75;}
.content{flex:1;min-width:0;padding:34px 40px 80px;position:relative;}
.scrim{display:none;}

/* ---------- Fil d'Ariane ---------- */
.crumbs{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--ink-3);margin-bottom:22px;flex-wrap:wrap;}
.crumbs a{color:var(--ink-3);} .crumbs a:hover{color:var(--blue);}
.crumbs span{color:var(--ink-4);} .crumbs strong{color:var(--ink-2);font-weight:600;}

/* ---------- Accueil : en-tête, stats, grille modules ---------- */
.page-head{max-width:var(--measure);margin-bottom:30px;}
.eyebrow{font-family:var(--ui);font-size:.74rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.1em;color:var(--blue);margin-bottom:10px;display:block;}
.page-title{font-size:clamp(1.8rem,3vw,2.4rem);margin-bottom:10px;}
.page-sub{font-size:1.02rem;color:var(--ink-2);line-height:1.6;}
.stat-row{display:flex;gap:30px;flex-wrap:wrap;padding:20px 0;border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);margin-bottom:34px;}
.stat{display:flex;flex-direction:column;gap:2px;}
.stat b{font-family:var(--display);font-size:1.7rem;font-weight:600;color:var(--blue);}
.stat span{font-size:.82rem;color:var(--ink-3);}
.section-title{font-size:1.3rem;margin:0 0 18px;padding-bottom:10px;border-bottom:1px solid var(--line);}
.mod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));gap:18px;}
.mod-card{display:flex;flex-direction:column;gap:12px;padding:22px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-md);transition:all .2s var(--ease);
  position:relative;text-decoration:none;}
.mod-card:hover{border-color:var(--blue);box-shadow:var(--sh-2);transform:translateY(-2px);}
.mod-card-num{font-family:var(--display);font-size:.9rem;font-weight:600;color:var(--ink-4);}
.mod-card h3{font-size:1.18rem;line-height:1.25;color:var(--ink);}
.mod-card p{font-size:.88rem;color:var(--ink-3);margin:0;line-height:1.5;}
.mod-card-meta{display:flex;gap:14px;margin-top:auto;padding-top:12px;border-top:1px solid var(--line-soft);
  font-size:.8rem;color:var(--ink-3);}
.mod-card-meta b{color:var(--ink-2);font-weight:600;}
.mod-card.is-locked{opacity:.62;} .mod-card.is-locked:hover{transform:none;border-color:var(--line);box-shadow:none;}
.mod-lock{position:absolute;top:18px;right:18px;font-size:.95rem;opacity:.5;}

/* ---------- Lecteur de cours ---------- */
.reader{max-width:var(--measure);}
.reader-head{margin-bottom:30px;padding-bottom:22px;border-bottom:2px solid var(--line);}
.reader-eyebrow{font-family:var(--ui);font-size:.76rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.09em;color:var(--blue);margin-bottom:12px;}
.reader-title{font-family:var(--display);font-size:clamp(1.8rem,3.4vw,2.55rem);font-weight:600;
  line-height:1.15;margin-bottom:12px;}
.reader-sub{font-family:var(--read);font-size:1.12rem;color:var(--ink-2);line-height:1.55;font-style:italic;}
.reader-meta{display:flex;gap:16px;margin-top:16px;font-size:.82rem;color:var(--ink-3);font-family:var(--ui);}
.reader-meta span{display:inline-flex;align-items:center;gap:6px;}
.reader-intro{font-family:var(--read);font-size:1.16rem;line-height:1.75;color:var(--ink);margin-bottom:30px;}
.reader-intro::first-letter{font-family:var(--display);font-size:3.1em;float:left;line-height:.78;
  padding:6px 12px 0 0;color:var(--blue);font-weight:600;}
.reader-sec{margin-bottom:42px;padding-left:24px;border-left:2px solid var(--line-soft);}
.reader-sec>h2{font-size:1.32rem;margin-bottom:16px;color:var(--ink);line-height:1.3;}
.reader-sec>h2 .sec-num{font-family:var(--ui);font-size:.8rem;font-weight:700;color:var(--blue);
  display:block;margin-bottom:4px;letter-spacing:.05em;}
.reader-sec p,.reader-sec li{font-family:var(--read);font-size:1.09rem;line-height:1.8;color:var(--ink);}
.reader-sec p{margin-bottom:1.1em;}
.reader-sec ul{padding-left:22px;margin:0 0 1.1em;} .reader-sec li{margin-bottom:10px;padding-left:4px;}
.reader-sec li::marker{color:var(--blue);}
.reader-schema{margin:20px 0;padding:20px 24px;background:var(--blue-tint);border:1px solid var(--blue-soft);
  border-radius:var(--r-md);border-left:3px solid var(--blue);}
.reader-schema h4{font-family:var(--ui);font-size:.78rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.07em;color:var(--blue);margin-bottom:10px;}
.reader-schema-body{font-family:var(--read);font-size:1.04rem;line-height:1.7;white-space:pre-wrap;}
.schema-formule{text-align:center;font-size:1.15rem;}
.reader-pager{display:flex;justify-content:space-between;gap:12px;margin-top:40px;padding-top:24px;
  border-top:1px solid var(--line);}
.pager-link{display:flex;flex-direction:column;gap:3px;padding:14px 18px;border:1px solid var(--line);
  border-radius:var(--r-md);background:var(--card);max-width:47%;transition:all .18s var(--ease);}
.pager-link:hover{border-color:var(--blue);box-shadow:var(--sh-1);}
.pager-link small{font-size:.72rem;color:var(--ink-4);text-transform:uppercase;letter-spacing:.06em;}
.pager-link b{font-family:var(--display);font-size:.98rem;font-weight:600;color:var(--ink);}
.pager-link.next{text-align:right;margin-left:auto;}

/* ---------- Liste des cours d'un module ---------- */
.lesson-list{display:flex;flex-direction:column;gap:10px;max-width:var(--measure);}
.lesson{display:flex;align-items:center;gap:16px;padding:16px 20px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-md);transition:all .18s var(--ease);text-decoration:none;}
.lesson:hover{border-color:var(--blue);box-shadow:var(--sh-1);transform:translateX(2px);}
.lesson-num{font-family:var(--display);font-size:1.3rem;font-weight:600;color:var(--ink-4);
  min-width:32px;text-align:center;}
.lesson-body{flex:1;min-width:0;}
.lesson-body h3{font-size:1.05rem;color:var(--ink);margin-bottom:3px;}
.lesson-body p{font-size:.85rem;color:var(--ink-3);margin:0;}
.lesson-tags{display:flex;gap:8px;flex-shrink:0;}
.lesson-tag{font-family:var(--ui);font-size:.72rem;font-weight:600;padding:4px 10px;border-radius:99px;
  background:var(--paper-2);color:var(--ink-3);}
.lesson-arrow{color:var(--ink-4);font-size:1.1rem;}

/* ---------- QCM ---------- */
.q-card,.qcard{max-width:var(--measure);background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:30px 32px;box-shadow:var(--sh-1);}
.q-progress{display:flex;justify-content:space-between;font-family:var(--ui);font-size:.82rem;
  color:var(--ink-3);font-weight:600;margin-bottom:12px;}
.q-bar{height:4px;background:var(--paper-2);border-radius:99px;overflow:hidden;margin-bottom:24px;}
.q-bar i{display:block;height:100%;background:var(--blue);border-radius:99px;transition:width .3s var(--ease);}
.q-text{font-family:var(--read);font-size:1.22rem;line-height:1.5;color:var(--ink);margin-bottom:22px;font-weight:500;}
.q-opts{display:flex;flex-direction:column;gap:10px;}
.q-opt{font-family:var(--ui);font-size:1rem;text-align:left;padding:15px 18px;border:1.5px solid var(--line);
  border-radius:var(--r-md);background:var(--card);color:var(--ink);cursor:pointer;
  transition:all .15s var(--ease);line-height:1.4;}
.q-opt:hover:not(:disabled){border-color:var(--blue);background:var(--blue-tint);}
.q-opt:disabled{cursor:default;}
.q-opt.is-good{background:var(--ok-bg);border-color:var(--ok);color:var(--ok);font-weight:600;}
.q-opt.is-bad{background:var(--err-bg);border-color:var(--err);color:var(--err);}
.q-expl{margin-top:18px;padding:16px 20px;background:var(--blue-tint);border-left:3px solid var(--blue);
  border-radius:var(--r-sm);font-family:var(--read);font-size:1rem;line-height:1.65;color:var(--ink-2);}
.q-expl strong{color:var(--blue-deep);}
.q-next{margin-top:22px;}
.q-score{text-align:center;}
.q-ring{width:130px;height:130px;margin:0 auto 8px;display:block;}
.q-ring circle.bg{stroke:var(--paper-2);}
.q-ring circle.fg{stroke:var(--blue);transition:stroke-dashoffset 1s var(--ease);}
.q-ring text{font-family:var(--display);font-size:1.5rem;font-weight:600;fill:var(--ink);}
.q-mention{font-family:var(--display);font-size:1.5rem;color:var(--blue);margin:6px 0;}

/* ---------- Fiches de révision ---------- */
.fiche{max-width:var(--measure);background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:32px 34px;box-shadow:var(--sh-1);}
.fiche-title{font-size:1.6rem;margin-bottom:24px;padding-bottom:14px;border-bottom:2px solid var(--line);}
.fiche-point{margin-bottom:22px;padding-left:20px;border-left:2px solid var(--blue-soft);}
.fiche-point h4{font-family:var(--display);font-size:1.12rem;color:var(--blue-deep);margin-bottom:6px;}
.fiche-point p{font-family:var(--read);font-size:1.05rem;line-height:1.7;color:var(--ink);margin:0;}
.rev-group{margin-bottom:34px;}
.rev-group-title{font-size:1.15rem;color:var(--ink-2);margin-bottom:14px;
  padding-bottom:8px;border-bottom:1px solid var(--line);}

/* ---------- Examen ---------- */
.exam-intro{max-width:var(--measure);background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:30px 32px;}
.exam-timer{position:sticky;top:72px;z-index:20;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);padding:12px 20px;margin-bottom:22px;display:flex;align-items:center;
  gap:12px;box-shadow:var(--sh-1);max-width:var(--measure);}
.exam-timer #exam-clock{font-family:var(--display);font-size:1.5rem;font-weight:600;color:var(--blue);}
.exam-timer.is-danger #exam-clock{color:var(--err);animation:pulse 1s infinite;}
@keyframes pulse{50%{opacity:.5;}}
.corr-tag{font-family:var(--ui);font-size:.75rem;font-weight:600;color:var(--ink-3);
  text-transform:uppercase;letter-spacing:.05em;}
.exam-q{max-width:var(--measure);background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);padding:22px 26px;margin-bottom:16px;}
.exam-q h4{font-family:var(--read);font-size:1.08rem;line-height:1.5;margin-bottom:14px;font-weight:600;}
.exam-q label{display:flex;gap:11px;align-items:flex-start;padding:11px 14px;border-radius:var(--r-sm);
  cursor:pointer;transition:background .12s var(--ease);font-family:var(--ui);font-size:.98rem;}
.exam-q label:hover{background:var(--blue-tint);}
.corr-item{border-left:3px solid var(--line);}
.corr-item.is-good{border-left-color:var(--ok);} .corr-item.is-bad{border-left-color:var(--err);}

/* ---------- Préparation / glossaire ---------- */
.prep-search{max-width:var(--measure);}
.glo-list{max-width:var(--measure);display:flex;flex-direction:column;gap:8px;margin-top:16px;}
.glo-item{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:0;overflow:hidden;}
.glo-item summary{padding:15px 20px;cursor:pointer;font-weight:600;color:var(--ink);
  display:flex;justify-content:space-between;align-items:center;font-family:var(--ui);}
.glo-item summary:hover{background:var(--paper-2);}
.glo-item[open] summary{border-bottom:1px solid var(--line);}
.glo-terme{font-size:1rem;}
.glo-cat{font-size:.72rem;color:var(--ink-4);font-weight:500;}
.glo-def{padding:16px 20px;font-family:var(--read);font-size:1.02rem;line-height:1.7;color:var(--ink-2);}
.syn-block{max-width:var(--measure);background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);padding:0;margin-bottom:10px;overflow:hidden;}
.syn-block summary{padding:16px 22px;cursor:pointer;font-family:var(--display);font-size:1.1rem;
  font-weight:600;color:var(--ink);}
.syn-block summary:hover{background:var(--paper-2);}
.syn-block-body{padding:0 22px 18px;font-family:var(--read);font-size:1.02rem;line-height:1.7;color:var(--ink-2);}

/* ---------- Cartes / clés (landing) ---------- */
.landing{max-width:960px;margin:0 auto;padding:56px 24px;}
.landing-head{text-align:center;margin-bottom:40px;}
.landing-logo{width:56px;height:56px;border-radius:14px;background:var(--blue);color:var(--btn-txt,#fff);
  display:grid;place-items:center;font-size:1.6rem;margin:0 auto 20px;}
.landing-eyebrow{font-family:var(--ui);font-size:.76rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.12em;color:var(--blue);margin-bottom:12px;}
.landing-title{font-size:clamp(2rem,4vw,2.9rem);margin-bottom:14px;}
.landing-sub{font-size:1.08rem;color:var(--ink-2);max-width:52ch;margin:0 auto;line-height:1.6;}
.keycard{max-width:460px;margin:0 auto 40px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:32px;box-shadow:var(--sh-2);}
.keycard-badge{display:inline-block;font-family:var(--ui);font-size:.72rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.08em;color:var(--blue);background:var(--blue-soft);
  padding:4px 11px;border-radius:99px;margin-bottom:14px;}
.keycard-title{font-size:1.35rem;margin-bottom:8px;}
.keycard-hint{font-size:.9rem;color:var(--ink-3);margin-bottom:20px;line-height:1.55;}
.keyform{display:flex;flex-direction:column;gap:14px;}
.keyform label{font-family:var(--ui);font-size:.85rem;font-weight:600;color:var(--ink-2);
  display:flex;flex-direction:column;gap:6px;}
.keyinput{font-family:var(--ui);font-size:1rem;padding:13px 16px;border:1.5px solid var(--line);
  border-radius:var(--r-sm);background:var(--card);color:var(--ink);width:100%;transition:border-color .15s var(--ease);}
.keyinput:focus{outline:none;border-color:var(--blue);}
.keyinput.search{font-size:.95rem;}
.remember{flex-direction:row!important;align-items:center;gap:8px!important;font-weight:500!important;
  color:var(--ink-3)!important;cursor:pointer;}
.zone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:16px;margin-top:8px;}
.zone-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:24px;
  display:flex;flex-direction:column;gap:10px;transition:all .2s var(--ease);}
.zone-card:hover{border-color:var(--blue);box-shadow:var(--sh-2);transform:translateY(-2px);}
.zone-card h3{font-size:1.2rem;}
.zone-card p{font-size:.86rem;color:var(--ink-3);margin:0;flex:1;line-height:1.5;}
.landing-foot{text-align:center;margin-top:30px;font-size:.9rem;}
.landing-body{background:var(--paper);}

/* ---------- Page « Comment obtenir ma clé » ---------- */
.obt-lifetime{max-width:760px;margin:0 auto 34px;display:flex;align-items:center;gap:18px;
  background:var(--blue);color:var(--btn-txt,#fff);border-radius:var(--r-lg);
  padding:22px 26px;box-shadow:var(--sh-2);}
.obt-lifetime-ico{flex-shrink:0;font-size:2.6rem;line-height:1;font-weight:700;opacity:.9;}
.obt-lifetime strong{display:block;font-family:var(--display);font-size:1.3rem;
  margin-bottom:4px;line-height:1.25;}
.obt-lifetime span{display:block;font-size:.98rem;line-height:1.55;opacity:.92;}
@media(max-width:560px){
  .obt-lifetime{flex-direction:column;text-align:center;gap:10px;padding:22px 20px;}
  .obt-lifetime strong{font-size:1.15rem;}
}
.obt-step{max-width:760px;margin:0 auto 38px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:26px 28px;box-shadow:var(--sh-1);}
.obt-step-head{display:flex;align-items:center;gap:14px;margin-bottom:8px;}
.obt-step-head h2{font-size:1.25rem;margin:0;}
.obt-num{flex-shrink:0;width:36px;height:36px;border-radius:99px;background:var(--blue);
  color:var(--btn-txt,#fff);display:grid;place-items:center;font-family:var(--ui);
  font-weight:700;font-size:1.05rem;}
.obt-lead{margin:0 0 18px;line-height:1.6;}
.obt-card{position:relative;}
.obt-tag{display:inline-block;font-family:var(--ui);font-size:.68rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;color:var(--btn-txt,#fff);background:var(--blue);
  padding:4px 10px;border-radius:99px;margin-bottom:4px;align-self:flex-start;}
.obt-eap .obt-tag{background:#1f52b8;}
.obt-isp .obt-tag{background:#1d6b45;}
.obt-mqss .obt-tag{background:#5a3a9e;}
.obt-key{display:block;margin-top:6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:.82rem;color:var(--ink-3);background:var(--paper-2);padding:8px 10px;
  border-radius:var(--r-sm);letter-spacing:.02em;text-align:center;}
.obt-pack{margin-top:20px;border:1.5px dashed var(--blue);background:var(--blue-tint);
  border-radius:var(--r-md);padding:16px 18px;}
.obt-pack-badge{display:inline-block;font-family:var(--ui);font-size:.7rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;color:var(--btn-txt,#fff);background:var(--blue);
  padding:4px 11px;border-radius:99px;margin-bottom:8px;}
.obt-pack p{margin:0;font-size:.95rem;color:var(--ink-2);line-height:1.55;}
.obt-contact{display:flex;gap:12px;flex-wrap:wrap;margin-top:4px;}
.obt-contact .btn-ghost{align-items:center;}
.obt-includes{list-style:none;padding:0;margin:0;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:10px 20px;}
.obt-includes li{font-size:.95rem;color:var(--ink-2);padding-left:22px;position:relative;line-height:1.5;}
.obt-includes li::before{content:"✓";position:absolute;left:0;color:var(--blue);font-weight:700;}
@media(max-width:560px){
  .obt-step{padding:22px 18px;}
  .obt-contact .btn-primary,.obt-contact .btn-ghost{width:100%;justify-content:center;}
}

/* ---------- Annonces ---------- */
.ann-stack{max-width:var(--measure);display:flex;flex-direction:column;gap:12px;margin-bottom:28px;}
.ann-stack-landing{max-width:560px;margin:0 auto 30px;}
.ann-card{display:flex;gap:14px;align-items:flex-start;padding:16px 20px;border-radius:var(--r-md);
  border:1px solid var(--line);background:var(--card);border-left:3px solid var(--blue);}
.ann-info{border-left-color:var(--blue);} .ann-offre{border-left-color:var(--ok);background:var(--ok-bg);}
.ann-alerte{border-left-color:var(--err);background:var(--err-bg);}
.ann-icon{font-size:1.2rem;} .ann-title{font-size:1.08rem;margin-bottom:4px;}
.ann-body{font-family:var(--read);font-size:.94rem;color:var(--ink-2);margin:0;line-height:1.55;}

/* ---------- Flash ---------- */
.flash{padding:13px 18px;border-radius:var(--r-sm);font-size:.92rem;margin-bottom:18px;font-family:var(--ui);}
.flash-err{background:var(--err-bg);color:var(--err);border:1px solid #e0b7b5;}
.flash-ok{background:var(--ok-bg);color:var(--ok);border:1px solid #b8d4c6;}
.flash-lock{background:var(--warn-bg);color:var(--warn);border:1px solid #ddc48a;}

/* ---------- Pager & tables (partagés) ---------- */
.pager{display:flex;gap:8px;margin-top:26px;flex-wrap:wrap;}
.hist-table{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--card);}
.hist-table table{width:100%;border-collapse:collapse;font-family:var(--ui);font-size:.88rem;}
.hist-table th{text-align:left;padding:11px 14px;background:var(--paper-2);color:var(--ink-3);
  font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line);}
.hist-table td{padding:11px 14px;border-bottom:1px solid var(--line-soft);color:var(--ink-2);}
.hist-table tr:last-child td{border-bottom:none;}
.gen-keys{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:16px;font-family:ui-monospace,monospace;font-size:.9rem;line-height:1.8;white-space:pre-wrap;color:var(--ink);}
.crumbs+.reader,.crumbs+.q-card{margin-top:0;}

/* ---------- Responsive ---------- */
@media(max-width:900px){
  .burger{display:flex;}
  .sidebar{position:fixed;top:60px;left:0;transform:translateX(-100%);transition:transform .25s var(--ease);
    z-index:45;box-shadow:var(--sh-3);}
  .sidebar.is-open{transform:translateX(0);}
  .scrim{display:block;position:fixed;inset:60px 0 0;background:rgba(31,41,51,.4);opacity:0;
    pointer-events:none;transition:opacity .25s var(--ease);z-index:44;}
  .scrim.is-visible{opacity:1;pointer-events:auto;}
  .content{padding:24px 20px 70px;}
  .reader-intro::first-letter{font-size:2.6em;}
}
@media(max-width:560px){
  .content{padding:20px 16px 60px;}
  .stat-row{gap:20px;} .stat b{font-size:1.4rem;}
  .qcard,.fiche{padding:22px 20px;}
  .reader-pager{flex-direction:column;} .pager-link{max-width:100%;}
  .lesson{flex-wrap:wrap;} .lesson-tags{width:100%;padding-left:48px;}
}
@media print{
  .topbar,.sidebar,.scrim,.reader-pager,.q-next,.crumbs{display:none!important;}
  .content{padding:0;} body{background:#fff;}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}}

/* ==========================================================================
   ADMINISTRATION (v9.1–9.3) — adapté à la palette académique
   ========================================================================== */
.admin-topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:18px;
  padding:0 20px;height:60px;background:var(--card);border-bottom:1px solid var(--line);}
.admin-nav{display:flex;gap:2px;flex:1;overflow-x:auto;scrollbar-width:none;}
.admin-nav::-webkit-scrollbar{display:none;}
.admin-nav a{padding:8px 13px;border-radius:var(--r-sm);font-size:.85rem;font-weight:600;
  color:var(--ink-3);white-space:nowrap;transition:all .15s var(--ease);}
.admin-nav a:hover{background:var(--paper-2);color:var(--ink);}
.admin-nav a.is-active{background:var(--blue-soft);color:var(--blue-deep);}
.admin-body{background:var(--paper);}
/* v9.18 — Menu admin en barre latérale verticale (réutilise .sidebar).
   Les vues admin sont enveloppées dans .admin-shell : à l'intérieur de la
   colonne .content, on retire son centrage/plafond de largeur (la colonne
   s'en charge déjà) tout en gardant un padding confortable. */
.admin-side .sidebar-ico{opacity:.8;}
.admin-shell{max-width:1080px;margin:0 auto;padding:30px 22px 70px;}
.admin-body .content{padding:0;}
.admin-body .content .admin-shell{max-width:100%;margin:0;padding:30px 34px 70px;}
.admin-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;flex-wrap:wrap;}
.admin-head h1{font-size:1.7rem;margin-bottom:3px;}
.admin-filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-md);padding:12px 14px;margin-bottom:16px;}
.admin-filters .keyinput{width:auto;min-width:140px;}
.filter-check{margin:0;white-space:nowrap;}
.admin-cols{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
@media(max-width:800px){.admin-cols{grid-template-columns:1fr;}}
.inline-form{display:inline-block;margin:0 2px 2px 0;}
.actions-cell{white-space:nowrap;}
.hero-stats,.admin-stats{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:22px;}
.hstat{flex:1;min-width:120px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);padding:16px 18px;display:flex;flex-direction:column;gap:3px;}
.hstat strong{font-family:var(--display);font-size:1.7rem;font-weight:600;color:var(--blue);}
.hstat span{font-size:.78rem;color:var(--ink-3);}
.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:.72rem;font-weight:700;
  letter-spacing:.03em;border:1px solid var(--line);background:var(--paper-2);color:var(--ink-3);text-decoration:none;}
.badge-ok{background:var(--ok-bg);color:var(--ok);border-color:#b8d4c6;}
.badge-warn{background:var(--warn-bg);color:var(--warn);border-color:#ddc48a;}
.badge-err{background:var(--err-bg);color:var(--err);border-color:#e0b7b5;}
.dot-online{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--ok);
  box-shadow:0 0 0 0 rgba(47,107,87,.5);animation:dot-pulse 1.8s infinite;margin-right:4px;}
@keyframes dot-pulse{0%{box-shadow:0 0 0 0 rgba(47,107,87,.45);}70%{box-shadow:0 0 0 7px rgba(47,107,87,0);}100%{box-shadow:0 0 0 0 rgba(47,107,87,0);}}
.row-online td{background:rgba(47,107,87,.05);}
.hstat-live strong{display:flex;align-items:center;justify-content:center;gap:8px;}
.flash-link{display:block;text-decoration:none;color:inherit;transition:transform .18s var(--ease);}
.flash-link:hover{transform:translateY(-1px);}
.ua-cell{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;}
.share-card{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--err);
  border-radius:var(--r-md);padding:16px 18px;margin-bottom:18px;}
.share-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.share-hash{font-size:1rem;font-weight:700;}
.share-metrics{display:flex;gap:6px;} .share-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;}
.ann-form-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:20px 22px;margin-bottom:26px;}
.ann-form label{display:block;font-weight:600;font-size:.85rem;margin:12px 0 5px;font-family:var(--ui);}
.ann-form textarea{resize:vertical;font-family:var(--ui);}
.ann-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;}
.ann-form-actions{display:flex;gap:10px;margin-top:18px;align-items:center;}
.ann-row{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;margin-bottom:10px;}
.ann-row.is-off{opacity:.55;} .ann-row-main{flex:1;min-width:0;} .ann-row-main>*{margin-right:8px;}
.ann-preview{margin:6px 0 0;font-size:.85rem;max-width:60ch;overflow:hidden;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;}
.ann-row-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;}
.ann-type{font-size:.75rem;font-weight:700;}
.gen-form{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:12px;}
.setup-steps{margin:14px 0 0;padding-left:20px;line-height:1.9;}
.setup-steps li{margin-bottom:16px;}
.qr-box{display:inline-block;margin:12px 0 8px;padding:12px;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);}
.qr-box svg{display:block;width:200px;height:200px;}
.secret-code{font-size:.95rem;letter-spacing:.12em;font-weight:700;background:var(--paper-2);
  padding:4px 8px;border-radius:var(--r-sm);user-select:all;}
.code-input{text-align:center;font-size:1.5rem;letter-spacing:.35em;font-weight:700;font-family:var(--display);}
.danger-details{margin-top:18px;border-top:1px solid var(--line);padding-top:12px;}
.danger-details summary{cursor:pointer;font-size:.85rem;color:var(--ink-3);}
.danger-details summary:hover{color:var(--err);}
.sec-log{max-height:520px;overflow-y:auto;}
.notfound{min-height:70vh;justify-content:center;}
.admin-form label{text-align:left;}

/* ---------- Filigrane de traçabilité ---------- */
.wm-layer{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden;display:flex;
  flex-wrap:wrap;align-content:flex-start;gap:120px 100px;padding:60px;user-select:none;}
.wm-layer span{font-family:var(--ui);font-size:.7rem;font-weight:600;letter-spacing:.22em;
  color:var(--ink);opacity:.018;transform:rotate(-24deg);white-space:nowrap;}
.content>*:not(.wm-layer){position:relative;z-index:1;}
@media print{.wm-layer span{opacity:.14;font-size:.85rem;}}
/* ---------- Gêne à la copie ---------- */
.guard-on .reader,.guard-on .fiche,.guard-on .q-card,.guard-on .qcard,.guard-on .exam-q,
.guard-on .glo-list,.guard-on .syn-block{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;}
.guard-on input,.guard-on textarea,.guard-on .keyinput{-webkit-user-select:text;user-select:text;}
.hp-field{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0;pointer-events:none;}
.sidebar-foot{margin-top:24px;padding:16px 12px 0;border-top:1px solid var(--line);
  font-family:var(--ui);font-size:.76rem;color:var(--ink-3);line-height:1.6;}
.inst-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:14px;max-width:900px;margin-bottom:34px;}
.inst-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:18px 20px;}
.inst-card h3{font-size:1.05rem;margin-bottom:6px;color:var(--ink);}
.inst-card p{font-size:.85rem;color:var(--ink-3);margin:0;line-height:1.5;}
.fil-options{margin:0;padding:16px 22px 18px 38px;font-family:var(--read);font-size:1rem;line-height:1.7;color:var(--ink-2);}
.demo-banner{max-width:var(--measure);}

/* ==========================================================================
   v9.5 — AIDE À L'UTILISATION
   ========================================================================== */
/* Bandeau d'aide contextuel */
.hint{display:flex;align-items:flex-start;gap:12px;max-width:var(--measure);
  background:var(--blue-tint);border:1px solid var(--blue-soft);border-left:3px solid var(--blue);
  border-radius:var(--r-md);padding:13px 16px;margin-bottom:22px;position:relative;}
.hint-ico{flex-shrink:0;width:20px;height:20px;border-radius:50%;background:var(--blue);color:var(--btn-txt,#fff);
  font-family:var(--display);font-size:.78rem;font-weight:700;display:grid;place-items:center;margin-top:1px;}
.hint p{margin:0;font-size:.9rem;line-height:1.55;color:var(--ink-2);flex:1;}
.hint strong{color:var(--blue-deep);}
.hint-close{flex-shrink:0;background:none;border:none;color:var(--ink-4);font-size:1.3rem;
  line-height:1;cursor:pointer;padding:0 2px;border-radius:4px;}
.hint-close:hover{color:var(--ink);}
.hint.is-hidden{display:none;}

/* Landing : blocs numérotés */
.start-block{max-width:860px;margin:0 auto 46px;}
.start-head{display:flex;gap:16px;align-items:flex-start;margin-bottom:20px;}
.start-num{flex-shrink:0;width:34px;height:34px;border-radius:50%;background:var(--blue);color:var(--btn-txt,#fff);
  font-family:var(--display);font-size:1.05rem;font-weight:600;display:grid;place-items:center;}
.start-head h2{font-size:1.4rem;margin-bottom:5px;}
.start-head p{margin:0;font-size:.92rem;line-height:1.55;max-width:60ch;}
.zone-card .btn-primary{width:100%;justify-content:center;margin-top:4px;white-space:nowrap;padding:12px 10px;}
.zone-card{align-items:stretch;text-align:left;}

/* Landing : ce que contient la plateforme */
.feat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:18px;}
.feat{text-align:center;padding:20px 14px;}
.feat-ico{display:grid;place-items:center;width:42px;height:42px;margin:0 auto 12px;border-radius:11px;
  background:var(--blue-soft);color:var(--blue);font-size:1.1rem;}
.feat h3{font-size:1.02rem;margin-bottom:6px;}
.feat p{font-size:.85rem;color:var(--ink-3);margin:0;line-height:1.5;}

/* Examen : brief avant départ */
.exam-brief{margin:0;padding-left:20px;font-size:.95rem;line-height:1.75;color:var(--ink-2);}
.exam-brief li{margin-bottom:7px;} .exam-brief li::marker{color:var(--blue);}

/* Page d'aide : étapes et cartes */
.guide-steps{display:flex;flex-direction:column;gap:16px;max-width:var(--measure);margin-bottom:38px;}
.guide-step{display:flex;gap:16px;align-items:flex-start;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-md);padding:18px 20px;}
.guide-step-num{flex-shrink:0;width:30px;height:30px;border-radius:50%;background:var(--blue);color:var(--btn-txt,#fff);
  font-family:var(--display);font-size:.95rem;font-weight:600;display:grid;place-items:center;}
.guide-step h3{font-size:1.06rem;margin-bottom:4px;}
.guide-step p{margin:0;font-size:.92rem;color:var(--ink-2);line-height:1.6;}
.guide-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:16px;margin-bottom:38px;}
.guide-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:20px;}
.guide-card-ico{width:36px;height:36px;border-radius:9px;background:var(--blue-soft);color:var(--blue);
  display:grid;place-items:center;font-size:1rem;margin-bottom:11px;}
.guide-card h3{font-size:1.02rem;margin-bottom:6px;}
.guide-card p{font-size:.88rem;color:var(--ink-3);margin:0;line-height:1.55;}

/* Visite guidée (premier passage) */
.tour-mask{position:fixed;inset:0;z-index:900;}
.tour-hole{position:absolute;border-radius:var(--r-md);box-shadow:0 0 0 9999px rgba(31,41,51,.55);
  z-index:901;pointer-events:none;border:2px solid var(--blue);}
.tour-pop{position:absolute;z-index:902;max-width:330px;background:var(--card);border-radius:var(--r-md);
  padding:18px 20px;box-shadow:var(--sh-3);}
.tour-pop h4{font-size:1.05rem;margin-bottom:7px;}
.tour-pop p{font-size:.9rem;color:var(--ink-2);line-height:1.55;margin:0 0 14px;}
.tour-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;}
.tour-step{font-size:.78rem;color:var(--ink-4);font-weight:600;}
.tour-btns{display:flex;gap:8px;}
@media(max-width:700px){
  .tour-pop{left:14px!important;right:14px!important;max-width:none;}
  .start-head{gap:12px;} .hint{padding:12px 14px;}
}

/* ==========================================================================
   v9.6 — Page de blocage (contenu réservé)
   ========================================================================== */
.mod-card.is-locked{opacity:1;background:var(--paper-2);border-style:dashed;}
.mod-card.is-locked:hover{border-color:var(--blue);border-style:solid;box-shadow:var(--sh-1);transform:translateY(-2px);}
.mod-card.is-locked h3,.mod-card.is-locked .mod-card-num{color:var(--ink-3);}
.mod-card.is-locked .mod-card-meta span{color:var(--blue);font-weight:600;}
.lock-page{max-width:640px;margin:0 auto;text-align:center;padding:20px 0 40px;}
.lock-badge{width:64px;height:64px;border-radius:16px;background:var(--blue-soft);color:var(--blue);
  display:grid;place-items:center;font-size:1.7rem;margin:0 auto 22px;}
.lock-title{font-size:clamp(1.5rem,3vw,2rem);margin-bottom:12px;}
.lock-sub{font-size:1.05rem;color:var(--ink-2);line-height:1.6;max-width:52ch;margin:0 auto 30px;}
.lock-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:28px 30px;text-align:left;box-shadow:var(--sh-1);}
.lock-card h2{font-size:1.2rem;margin-bottom:16px;}
.lock-steps{margin:0 0 22px;padding-left:22px;line-height:1.8;color:var(--ink-2);}
.lock-steps li{margin-bottom:8px;} .lock-steps li::marker{color:var(--blue);font-weight:700;}
.lock-actions{display:flex;gap:12px;flex-wrap:wrap;}
.lock-foot{margin-top:26px;font-size:.92rem;}
@media(max-width:560px){.lock-actions .btn-primary,.lock-actions .btn-ghost{width:100%;justify-content:center;}}

/* v9.9 — Retour à l'accueil (mode découverte) + fiche verrouillée */
.topbar-back{margin-left:auto;display:inline-flex;align-items:center;gap:6px;
  font-size:.85rem;font-weight:600;color:var(--ink-2);padding:7px 13px;
  border:1px solid var(--line);border-radius:99px;background:var(--card);
  transition:all .15s var(--ease);white-space:nowrap;}
.topbar-back:hover{border-color:var(--blue);color:var(--blue);}
.topbar-back + .topbar-zone{margin-left:0;}
.lesson.is-locked{background:var(--paper-2);border-style:dashed;}
.lesson.is-locked:hover{border-color:var(--blue);border-style:solid;transform:translateX(2px);}
.lesson.is-locked h3{color:var(--ink-3);}
.lesson.is-locked .lesson-body p{color:var(--blue);font-weight:600;font-size:.78rem;}
@media(max-width:560px){
  .topbar-back{padding:6px 10px;font-size:.78rem;}
  .topbar-back span{display:inline;}
  .topbar{gap:8px;}
  .topbar-zone{margin-left:0;font-size:.72rem;padding:5px 9px;white-space:nowrap;}
}
@media(max-width:440px){
  /* Le bouton retour garde son libellé « Accueil » (assez court) pour rester
     compréhensible ; seul le libellé plus long « J'ai une clé » est masqué. */
  .topbar-zone .tb-label{display:none;}
  .topbar-back{padding:7px 13px;}
  .topbar-back .tb-label{display:inline;}
  .topbar-zone{padding:7px 12px;}
}

/* ==========================================================================
   v9.10 — Page de maintenance + formulaire d'identification
   ========================================================================== */
.maint-page{max-width:560px;margin:0 auto;text-align:center;padding:70px 24px;}
.maint-icon{font-size:2.6rem;margin-bottom:18px;}
.maint-title{font-size:clamp(1.7rem,3.5vw,2.3rem);margin-bottom:14px;}
.maint-msg{font-size:1.08rem;color:var(--ink-2);line-height:1.65;margin-bottom:10px;}
.maint-until{font-size:.95rem;color:var(--blue);margin-bottom:26px;}
.maint-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);
  padding:20px 24px;text-align:left;}
.maint-card p{font-size:.94rem;line-height:1.6;color:var(--ink-2);}
.maint-foot{margin-top:30px;font-size:.82rem;}

.ident-page{max-width:640px;margin:0 auto;padding:10px 0 50px;}
.ident-why{background:var(--blue-tint);border:1px solid var(--blue-soft);
  border-left:3px solid var(--blue);border-radius:var(--r-md);padding:20px 24px;margin:22px 0 26px;}
.ident-why h2{font-size:1.08rem;margin-bottom:10px;color:var(--blue-deep);}
.ident-why p{font-size:.93rem;line-height:1.65;color:var(--ink-2);margin-bottom:9px;}
.ident-why p:last-child{margin-bottom:0;}
.ident-form{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:26px 28px;box-shadow:var(--sh-1);}
.ident-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px;}
.ident-form label{display:flex;flex-direction:column;gap:6px;font-family:var(--ui);
  font-size:.88rem;font-weight:600;color:var(--ink-2);}
.ident-fs{border:none;padding:0;margin:0 0 20px;}
.ident-fs legend{font-family:var(--ui);font-size:.88rem;font-weight:600;color:var(--ink-2);
  padding:0;margin-bottom:12px;}
.ident-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:16px;}
.ident-choice{flex-direction:row!important;align-items:center;gap:10px!important;
  padding:13px 15px;border:1.5px solid var(--line);border-radius:var(--r-md);
  cursor:pointer;transition:all .15s var(--ease);font-weight:500!important;background:var(--card);}
.ident-choice:hover{border-color:var(--blue);background:var(--blue-tint);}
.ident-choice:has(input:checked){border-color:var(--blue);background:var(--blue-soft);font-weight:600!important;}
.ident-choice input{accent-color:var(--blue);flex-shrink:0;}
.ident-choice-ico{font-size:1rem;}
.ident-note{margin-top:4px;}
.ident-note .keyinput{font-weight:400;}
.ident-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;
  padding-top:18px;border-top:1px solid var(--line-soft);}
@media(max-width:560px){
  .ident-row{grid-template-columns:1fr;}
  .ident-actions .btn-primary{width:100%;justify-content:center;}
  .maint-page{padding:50px 18px;}
}
/* v9.10 — Page d'identification : pas de barre latérale (étape obligatoire) */
.shell-gate .content{max-width:none;padding-top:40px;}

/* ==========================================================================
   v9.11 — Sélecteur d'espaces (client ayant acheté plusieurs concours)
   ========================================================================== */
.zoneswitch{position:relative;margin-left:18px;}
.zoneswitch-btn{display:inline-flex;align-items:center;gap:7px;background:var(--card);
  border:1px solid var(--line);border-radius:99px;padding:7px 13px;cursor:pointer;
  font-family:var(--ui);font-size:.84rem;font-weight:600;color:var(--ink-2);
  transition:all .15s var(--ease);}
.zoneswitch-btn:hover{border-color:var(--blue);color:var(--blue);}
.zoneswitch-btn[aria-expanded="true"]{border-color:var(--blue);color:var(--blue);background:var(--blue-tint);}
.zoneswitch-arrow{font-size:.7rem;transition:transform .15s var(--ease);}
.zoneswitch-btn[aria-expanded="true"] .zoneswitch-arrow{transform:rotate(180deg);}
.zoneswitch-menu{position:absolute;top:calc(100% + 8px);left:0;min-width:260px;z-index:60;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:var(--sh-3);padding:8px;}
.zoneswitch-menu[hidden]{display:none;}
.zoneswitch-title{font-family:var(--ui);font-size:.72rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;color:var(--ink-4);
  margin:6px 10px 8px;}
.zoneswitch-item{display:flex;align-items:center;gap:10px;padding:10px 11px;
  border-radius:var(--r-sm);font-size:.9rem;color:var(--ink-2);transition:background .12s var(--ease);}
.zoneswitch-item:hover{background:var(--paper-2);color:var(--ink);}
.zoneswitch-item.is-current{background:var(--blue-soft);color:var(--blue-deep);font-weight:600;}
.zoneswitch-ico{color:var(--blue);font-size:.7rem;}
.zoneswitch-add{display:flex;align-items:center;gap:8px;padding:10px 11px;margin-top:6px;
  border-top:1px solid var(--line-soft);border-radius:0 0 var(--r-sm) var(--r-sm);
  font-size:.85rem;color:var(--blue);font-weight:600;}
.zoneswitch-add:hover{background:var(--blue-tint);}

/* Page « Ajouter un espace » */
.addkey-page{max-width:var(--measure);}
.addkey-current{background:var(--paper-2);border:1px solid var(--line);
  border-radius:var(--r-md);padding:18px 22px;margin:22px 0 26px;}
.addkey-current h2{font-size:1rem;margin-bottom:12px;}
.addkey-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;}
.addkey-list li{display:flex;align-items:center;gap:10px;font-size:.93rem;}
.addkey-dot{color:var(--blue);font-size:.7rem;}
.addkey-list .chip{margin-left:auto;}
.addkey-list .badge{margin-left:auto;}
@media(max-width:760px){
  .zoneswitch{margin-left:10px;}
  .zoneswitch-cur{max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .zoneswitch-menu{min-width:220px;}
}

/* v9.11 — Bannière « Ajouter un espace » sur l'accueil */
.addspace-banner{display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  background:var(--blue-tint);border:1px solid var(--blue-soft);
  border-radius:var(--r-md);padding:14px 18px;margin-bottom:26px;}
.addspace-txt{flex:1;min-width:220px;font-size:.9rem;line-height:1.5;color:var(--ink-2);}
.addspace-txt strong{display:block;color:var(--blue-deep);margin-bottom:2px;}
.addspace-btn{flex-shrink:0;white-space:nowrap;}
@media(max-width:520px){ .addspace-btn{width:100%;justify-content:center;} }

/* ==========================================================================
   Module Permutation (« Autres services ») — responsive + suit les 13 thèmes
   ========================================================================== */
.pm-wrap{max-width:820px;margin:0 auto;padding:0 4px;}
.pm-nav{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 auto 24px;
  max-width:820px;padding-bottom:14px;border-bottom:1px solid var(--line);
  padding-top:56px;padding-right:120px;}
/* Le bouton « Thème » flotte en haut à droite ; on réserve la place pour que
   les liens (Se connecter, Créer un compte) ne passent jamais dessous. */
@media(max-width:560px){
  .pm-nav{padding-top:52px;padding-right:0;}
}
.pm-nav a{font-family:var(--ui);font-size:.9rem;font-weight:600;color:var(--ink-2);
  padding:9px 16px;border-radius:999px;border:1px solid transparent;text-decoration:none;
  transition:all .15s var(--ease);}
.pm-nav a:hover{background:var(--paper-2);color:var(--ink);}
.pm-nav a.is-active{background:var(--blue-soft);color:var(--blue-deep);border-color:var(--blue-soft);}
/* v9.19.2 — « Se connecter » : bouton contour ; « Créer un compte » : bouton
   d'action principal. Uniquement des variables de thème (13 thèmes ok). */
.pm-nav a.pm-btn-ghost{border-color:var(--line);background:var(--card);color:var(--ink-2);}
.pm-nav a.pm-btn-ghost:hover{border-color:var(--blue);color:var(--blue);background:var(--card);}
.pm-nav a.pm-btn-ghost.is-active{border-color:var(--blue);color:var(--blue);background:var(--blue-tint);}
.pm-nav a.pm-btn-cta{background:var(--blue);color:var(--btn-txt,#fff);border-color:var(--blue);
  box-shadow:var(--sh-1);}
.pm-nav a.pm-btn-cta:hover{background:var(--blue-deep);border-color:var(--blue-deep);
  color:var(--btn-txt,#fff);transform:translateY(-1px);box-shadow:var(--sh-2);}
.pm-nav a.pm-btn-cta.is-active{background:var(--blue-deep);border-color:var(--blue-deep);
  color:var(--btn-txt,#fff);}
.pm-nav .pm-spacer{margin-left:auto;}
/* v9.19.2 — Pages Permutation intégrées à l'espace membre : la topbar existe
   déjà (avec le sélecteur de thème), donc plus besoin de réserver la place du
   bouton Thème flottant, ni du grand padding d'accueil. */
.content .pm-nav{padding-top:0;padding-right:0;}
.content .landing{padding:8px 0 48px;}
.pm-badge{display:inline-block;font-family:var(--ui);font-size:.7rem;font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;color:var(--btn-txt,#fff);background:var(--blue);
  padding:4px 11px;border-radius:99px;}
.pm-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:22px 24px;box-shadow:var(--sh-1);margin-bottom:18px;}
.pm-offre{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);
  padding:18px 20px;margin-bottom:14px;transition:border-color .2s var(--ease),box-shadow .2s var(--ease);}
.pm-offre:hover{border-color:var(--blue);box-shadow:var(--sh-2);}
.pm-offre-phrase{font-size:1rem;line-height:1.6;color:var(--ink);margin:0 0 10px;}
.pm-offre-meta{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;
  font-size:.85rem;color:var(--ink-3);}
.pm-tag-rem{font-weight:600;color:var(--ok);}
.pm-tag-norem{font-weight:600;color:var(--ink-3);}
.pm-form label{display:block;font-family:var(--ui);font-weight:600;font-size:.9rem;
  color:var(--ink-2);margin:14px 0 5px;}
.pm-form input[type=text],.pm-form input[type=email],.pm-form input[type=password],
.pm-form select,.pm-form textarea{width:100%;padding:11px 13px;border:1px solid var(--line);
  border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font-size:1rem;
  font-family:inherit;box-sizing:border-box;}
.pm-form textarea{min-height:90px;resize:vertical;}
.pm-form input:focus,.pm-form select:focus,.pm-form textarea:focus{outline:none;
  border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-tint);}
.pm-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.pm-check{display:flex;align-items:flex-start;gap:9px;margin-top:14px;font-size:.92rem;
  color:var(--ink-2);line-height:1.5;}
.pm-check input{margin-top:3px;flex-shrink:0;}
.pm-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr));
  gap:10px;background:var(--paper-2);border-radius:var(--r-md);padding:14px;margin-bottom:18px;}
.pm-filters select{padding:9px 11px;font-size:.9rem;}
.pm-count{font-size:.9rem;color:var(--ink-3);margin:0 0 14px;}
.pm-empty{text-align:center;padding:40px 20px;color:var(--ink-3);}
.pm-info{background:var(--blue-tint);border:1px solid var(--blue-soft);border-radius:var(--r-md);
  padding:14px 16px;font-size:.9rem;color:var(--ink-2);line-height:1.55;margin:14px 0;}
.pm-step-list{counter-reset:pm;list-style:none;padding:0;margin:0;}
.pm-step-list li{position:relative;padding:0 0 18px 46px;line-height:1.6;color:var(--ink-2);}
.pm-step-list li::before{counter-increment:pm;content:counter(pm);position:absolute;left:0;top:0;
  width:32px;height:32px;border-radius:99px;background:var(--blue);color:var(--btn-txt,#fff);
  display:grid;place-items:center;font-family:var(--ui);font-weight:700;}
.pm-admin-preview{background:var(--warn-bg);border:1px solid var(--warn);border-radius:var(--r-md);
  padding:10px 14px;font-size:.85rem;color:var(--ink-2);margin-bottom:16px;text-align:center;}
@media(max-width:560px){
  .pm-row{grid-template-columns:1fr;}
  .pm-card{padding:18px 16px;}
  .pm-nav{gap:4px;}
  .pm-nav a{padding:7px 9px;font-size:.82rem;}
}

/* ---- Messagerie permutation (chat interne anonyme) ---- */
/* v9.20 — Chat de permutation (temps réel, mobile + desktop) */
.pm-chat-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  flex-wrap:wrap;margin-bottom:12px;}
.pm-chat-actions{display:flex;gap:8px;}
.pm-act{font-family:var(--ui);font-size:.8rem;font-weight:600;cursor:pointer;
  padding:6px 12px;border-radius:999px;border:1px solid var(--line);
  background:var(--card);color:var(--ink-3);transition:all .15s var(--ease);}
.pm-act:hover{border-color:var(--blue);color:var(--blue);}
.pm-act-danger:hover{border-color:var(--err);color:var(--err);background:var(--err-bg);}

.pm-chat{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;
  height:min(52vh,440px);overflow-y:auto;padding:10px 4px;
  background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-md);
  scroll-behavior:smooth;overscroll-behavior:contain;}
.pm-chat-empty{margin:auto;text-align:center;color:var(--ink-3);font-size:.9rem;padding:20px;}
.pm-msg{display:flex;align-items:flex-end;gap:6px;max-width:82%;animation:pmIn .18s var(--ease);}
@keyframes pmIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.pm-msg-me{align-self:flex-end;flex-direction:row-reverse;}
.pm-msg-other{align-self:flex-start;}
.pm-bubble{padding:9px 13px;border-radius:16px;line-height:1.5;word-break:break-word;}
.pm-msg-me .pm-bubble{background:var(--blue);color:var(--btn-txt,#fff);border-bottom-right-radius:5px;}
.pm-msg-other .pm-bubble{background:var(--card);color:var(--ink);border:1px solid var(--line);
  border-bottom-left-radius:5px;}
.pm-msg-body{white-space:pre-wrap;word-wrap:break-word;font-size:.94rem;}
.pm-msg-time{font-size:.66rem;opacity:.75;margin-top:3px;text-align:right;}
.pm-flag{opacity:0;background:none;border:none;cursor:pointer;color:var(--ink-4);
  font-size:.85rem;padding:2px 4px;border-radius:5px;transition:opacity .15s var(--ease),color .15s;}
.pm-msg:hover .pm-flag,.pm-flag:focus{opacity:1;}
.pm-flag:hover{color:var(--err);background:var(--err-bg);}

/* Zone de saisie */
.pm-composer{display:flex;align-items:flex-end;gap:8px;position:relative;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:8px;}
.pm-composer textarea{flex:1;border:none;background:none;resize:none;outline:none;
  font-family:var(--ui);font-size:.95rem;color:var(--ink);line-height:1.45;
  max-height:140px;padding:6px 4px;}
.pm-composer textarea::placeholder{color:var(--ink-4);}
.pm-emoji-btn,.pm-send{flex:0 0 auto;cursor:pointer;border-radius:50%;width:38px;height:38px;
  display:flex;align-items:center;justify-content:center;font-size:1.15rem;
  transition:all .15s var(--ease);}
.pm-emoji-btn{background:var(--paper-2);border:1px solid var(--line);color:var(--ink-2);}
.pm-emoji-btn:hover{border-color:var(--blue);color:var(--blue);}
.pm-send{background:var(--blue);border:1px solid var(--blue);color:var(--btn-txt,#fff);}
.pm-send:hover{background:var(--blue-deep);border-color:var(--blue-deep);}
.pm-send:disabled{opacity:.5;cursor:default;}
.pm-hint-send{font-size:.72rem;color:var(--ink-4);margin:6px 2px 0;}
.pm-emoji-panel{position:absolute;bottom:56px;left:6px;z-index:30;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:var(--sh-3);padding:8px;display:grid;grid-template-columns:repeat(6,1fr);
  gap:2px;width:236px;max-height:190px;overflow-y:auto;}
/* v9.20.1 — « display:grid » ci-dessus écrasait l'attribut HTML `hidden`
   (dont le display:none par défaut est moins prioritaire). Le panneau
   d'émojis ne doit s'afficher QUE sur clic du bouton ☺. */
.pm-emoji-panel[hidden]{display:none;}
.pm-emoji{background:none;border:none;cursor:pointer;font-size:1.25rem;padding:5px;
  border-radius:7px;line-height:1;}
.pm-emoji:hover{background:var(--paper-2);}

/* Fenêtres modales (signalement / blocage) */
.pm-modal{position:fixed;inset:0;z-index:120;background:rgba(0,0,0,.5);
  display:flex;align-items:center;justify-content:center;padding:16px;}
.pm-modal[hidden]{display:none;}
.pm-modal-box{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--sh-3);padding:22px;max-width:440px;width:100%;max-height:90vh;overflow-y:auto;}
.pm-modal-box h3{margin:0 0 8px;}
.pm-modal-sub{color:var(--ink-2);font-size:.9rem;line-height:1.55;margin:0 0 16px;}
.pm-modal-box label{display:block;font-weight:600;font-size:.88rem;color:var(--ink-2);margin:12px 0 5px;}
.pm-modal-box select,.pm-modal-box textarea{width:100%;box-sizing:border-box;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper-2);
  color:var(--ink);font-family:var(--ui);font-size:.92rem;padding:9px 11px;}
.pm-modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap;}
.btn-danger{font-family:var(--ui);font-weight:600;cursor:pointer;padding:10px 18px;
  border-radius:var(--r-sm);border:1px solid var(--err);background:var(--err);
  color:#fff;transition:opacity .15s var(--ease);}
.btn-danger:hover{opacity:.88;}

.pm-chat-form textarea{width:100%;box-sizing:border-box;}
.pm-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);}

@media(max-width:640px){
  .pm-chat{height:min(58vh,420px);}
  .pm-msg{max-width:88%;}
  .pm-flag{opacity:1;}            /* pas de survol sur mobile : toujours visible */
  .pm-emoji-panel{width:calc(100vw - 60px);grid-template-columns:repeat(7,1fr);}
  .pm-chat-head{flex-direction:column;align-items:flex-start;gap:8px;}
  .pm-composer{padding:6px;}
  .pm-emoji-btn,.pm-send{width:36px;height:36px;}
}

/* =========================================================================
   v9.18 — AVIS & COMMENTAIRES
   ========================================================================= */
.avis-page{max-width:860px;margin:0 auto;}
.avis-head{margin-bottom:22px;}

/* --- Étoiles (affichage) --- */
.star{color:var(--line);font-size:1.05em;line-height:1;letter-spacing:1px;}
.star.st-full{color:var(--star);}
.star.st-half{position:relative;color:var(--line);}
.star.st-half::before{content:"★";position:absolute;left:0;top:0;width:50%;overflow:hidden;color:var(--star);}
.star.st-empty{color:var(--line);}

/* --- Synthèse de la note --- */
.avis-summary{display:flex;gap:28px;align-items:center;flex-wrap:wrap;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:24px 26px;box-shadow:var(--sh-1);margin-bottom:24px;}
.avis-score{text-align:center;flex:0 0 auto;min-width:140px;}
.avis-score-num{font-family:var(--display);font-size:3.4rem;font-weight:700;color:var(--blue);line-height:1;}
.avis-score-stars{font-size:1.3rem;margin:6px 0 4px;letter-spacing:2px;}
.avis-score-count{font-size:.85rem;color:var(--ink-3);}
.avis-bars{flex:1;min-width:220px;display:flex;flex-direction:column;gap:7px;}
.avis-bar-row{display:flex;align-items:center;gap:10px;font-size:.82rem;color:var(--ink-3);}
.avis-bar-label{flex:0 0 42px;display:flex;align-items:center;gap:3px;color:var(--ink-2);font-weight:500;}
.avis-bar-track{flex:1;height:9px;background:var(--paper-2);border-radius:6px;overflow:hidden;}
.avis-bar-fill{display:block;height:100%;background:linear-gradient(90deg,var(--star),var(--star-deep));border-radius:6px;transition:width .5s var(--ease);}
.avis-bar-val{flex:0 0 26px;text-align:right;color:var(--ink-3);}

/* --- Bandeau porte obligatoire --- */
.avis-gate-note{background:var(--blue-tint);border:1px solid var(--blue-soft);
  border-radius:var(--r-lg);padding:22px 24px;margin-bottom:24px;}
.avis-gate-note h1{margin:6px 0 12px;}
.avis-gate-note p{color:var(--ink-2);line-height:1.6;margin:0 0 8px;font-family:var(--read);}

/* --- Formulaire d'avis --- */
.avis-form-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:24px 26px;box-shadow:var(--sh-1);margin-bottom:30px;}
.avis-form-title{font-size:1.3rem;margin-bottom:4px;}
.avis-form-sub{font-size:.88rem;margin:0 0 18px;line-height:1.5;}
.avis-form{display:flex;flex-direction:column;gap:18px;}
.avis-rate{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.avis-rate-label{font-weight:600;color:var(--ink-2);font-size:.95rem;}
.stars-input{display:flex;gap:4px;}
.star-btn{background:none;border:none;cursor:pointer;font-size:2rem;line-height:1;
  color:var(--line);padding:0 2px;transition:transform .1s var(--ease),color .1s var(--ease);}
.star-btn:hover{transform:scale(1.15);}
.star-btn.is-on{color:var(--star);}
.stars-hint{font-size:.85rem;color:var(--ink-3);font-weight:500;min-height:1em;}
.avis-field{display:flex;flex-direction:column;gap:6px;}
.avis-field>span{font-weight:600;color:var(--ink-2);font-size:.92rem;}
.avis-textarea{resize:vertical;min-height:100px;font-family:var(--read);line-height:1.55;}
.avis-count{font-size:.76rem;color:var(--ink-4);text-align:right;}
.avis-form-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center;}

/* --- CTA pour visiteurs sans clé --- */
.avis-cta-locked{background:var(--paper-2);border:1px dashed var(--line);border-radius:var(--r-md);
  padding:18px 22px;margin-bottom:28px;display:flex;align-items:center;justify-content:space-between;
  gap:16px;flex-wrap:wrap;}
.avis-cta-locked p{margin:0;color:var(--ink-2);font-size:.92rem;}

/* --- Liste --- */
.avis-list-head{display:flex;align-items:center;justify-content:space-between;gap:14px;
  flex-wrap:wrap;margin:10px 0 16px;}
.avis-sort{display:flex;gap:4px;background:var(--paper-2);border-radius:999px;padding:3px;}
.avis-sort a{font-size:.8rem;font-weight:600;color:var(--ink-3);padding:6px 13px;border-radius:999px;
  transition:all .15s var(--ease);}
.avis-sort a.is-active{background:var(--card);color:var(--blue);box-shadow:var(--sh-1);}
.avis-list{display:flex;flex-direction:column;gap:14px;}
.avis-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);
  padding:18px 20px;box-shadow:var(--sh-1);}
.avis-card-top{display:flex;align-items:center;gap:12px;}
.avis-avatar{flex:0 0 42px;width:42px;height:42px;border-radius:50%;
  background:var(--blue);color:var(--btn-txt,#fff);display:flex;align-items:center;justify-content:center;
  font-family:var(--display);font-weight:600;font-size:1.15rem;}
.avis-who{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.avis-name{font-size:.98rem;color:var(--ink);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.avis-lastinit{color:var(--ink-3);font-weight:500;}
.avis-badge-you{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  background:var(--blue-soft);color:var(--blue);padding:2px 7px;border-radius:5px;}
.avis-role{font-size:.8rem;color:var(--ink-3);}
.avis-date{font-size:.78rem;color:var(--ink-4);flex:0 0 auto;}
.avis-card-stars{font-size:1.05rem;letter-spacing:1px;margin:10px 0 8px;}
.avis-comment{font-family:var(--read);color:var(--ink-2);line-height:1.6;margin:0 0 12px;
  white-space:normal;word-break:break-word;}
.avis-card-foot{display:flex;align-items:center;gap:12px;}
.avis-like{display:inline-flex;align-items:center;gap:7px;background:var(--paper-2);
  border:1px solid var(--line);border-radius:999px;padding:6px 14px;cursor:pointer;
  font-family:var(--ui);font-size:.82rem;font-weight:600;color:var(--ink-3);
  transition:all .15s var(--ease);}
.avis-like:hover{border-color:var(--err);color:var(--err);}
.avis-like-ico{font-size:1rem;line-height:1;transition:transform .15s var(--ease);}
.avis-like.is-liked{background:var(--err-bg);border-color:var(--err);color:var(--err);}
.avis-like.is-liked .avis-like-ico{transform:scale(1.1);}
.avis-like-count{min-width:14px;text-align:center;font-variant-numeric:tabular-nums;}
.avis-like.pulse .avis-like-ico{animation:likePulse .32s var(--ease);}
@keyframes likePulse{0%{transform:scale(1);}45%{transform:scale(1.45);}100%{transform:scale(1.1);}}

.avis-empty{text-align:center;padding:40px 20px;background:var(--card);border:1px dashed var(--line);
  border-radius:var(--r-md);color:var(--ink-3);}
.avis-empty-ico{font-size:2.4rem;color:var(--line);margin-bottom:8px;}
.avis-back-public{margin-top:26px;text-align:center;}

/* --- Admin : filtres, table, boutons --- */
.avis-admin-filters{display:flex;gap:4px;background:var(--paper-2);border-radius:999px;padding:3px;
  width:fit-content;margin-bottom:16px;}
.avis-admin-filters a{font-size:.82rem;font-weight:600;color:var(--ink-3);padding:6px 14px;
  border-radius:999px;transition:all .15s var(--ease);}
.avis-admin-filters a.is-active{background:var(--card);color:var(--blue);box-shadow:var(--sh-1);}
.avis-admin-table td.nowrap{white-space:nowrap;}
.avis-admin-comment{max-width:320px;font-family:var(--read);line-height:1.5;color:var(--ink-2);}
.avis-admin-actions{display:flex;flex-direction:column;gap:6px;}
.avis-admin-actions form{margin:0;}
.avis-row-hidden{opacity:.55;}
.tag-ok{color:var(--ok);font-weight:600;white-space:nowrap;font-size:.82rem;}
.tag-warn{color:var(--warn);font-weight:600;white-space:nowrap;font-size:.82rem;}
.btn-mini{font-family:var(--ui);font-size:.78rem;font-weight:600;cursor:pointer;
  padding:5px 11px;border-radius:7px;border:1px solid var(--line);background:var(--card);
  color:var(--ink-2);white-space:nowrap;transition:all .15s var(--ease);width:100%;}
.btn-mini:hover{border-color:var(--blue);color:var(--blue);}
.btn-mini-ok{border-color:var(--ok);color:var(--ok);}
.btn-mini-ok:hover{background:var(--ok-bg);}
.btn-mini-danger{border-color:var(--err);color:var(--err);}
.btn-mini-danger:hover{background:var(--err-bg);}

/* --- Mobile --- */
@media(max-width:640px){
  .avis-summary{gap:18px;padding:20px;}
  .avis-score{min-width:110px;flex:1;}
  .avis-score-num{font-size:2.8rem;}
  .avis-form-card,.avis-gate-note{padding:18px 16px;}
  .star-btn{font-size:1.9rem;}
  .avis-card{padding:16px;}
  .avis-list-head{flex-direction:column;align-items:flex-start;}
  .avis-admin-comment{max-width:180px;}
}

/* v9.19 — Permutation : bloc « Commencer la permutation » */
.pm-start{border-color:var(--blue-soft);}
.pm-start-state{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;}
.pm-chip{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;font-weight:600;
  padding:6px 12px;border-radius:999px;background:var(--paper-2);color:var(--ink-3);
  border:1px solid var(--line);}
.pm-chip-on{background:var(--ok-bg);color:var(--ok);border-color:var(--ok);}
.pm-linkbtn{background:none;border:none;padding:0;color:var(--blue);font-weight:600;
  cursor:pointer;font-family:var(--ui);font-size:.9rem;text-decoration:underline;}
.pm-linkbtn:hover{color:var(--blue-deep);}

/* v9.20 — Admin : signalements */
.sig-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:6px;}
.sig-box{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;}
.sig-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-4);
  font-weight:700;margin-bottom:5px;}
.sig-val{font-weight:600;color:var(--ink);font-size:1rem;word-break:break-word;}
.sig-chat{display:flex;flex-direction:column;gap:10px;background:var(--paper-2);
  border:1px solid var(--line);border-radius:var(--r-md);padding:14px;max-height:520px;overflow-y:auto;}
.sig-msg{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:11px 14px;}
.sig-msg.is-flagged{border-color:var(--err);background:var(--err-bg);box-shadow:0 0 0 1px var(--err);}
.sig-msg-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px;font-size:.84rem;}
.sig-msg-head time{margin-left:auto;color:var(--ink-4);font-size:.76rem;}
.sig-tag-vise{font-size:.7rem;font-weight:700;background:var(--warn-bg);color:var(--warn);
  padding:2px 7px;border-radius:5px;}
.sig-tag-flag{font-size:.7rem;font-weight:700;background:var(--err-bg);color:var(--err);
  padding:2px 7px;border-radius:5px;}
.sig-msg-body{color:var(--ink-2);line-height:1.55;white-space:pre-wrap;word-break:break-word;font-family:var(--read);}
.sig-actions{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-bottom:24px;}
.sig-form{flex:1;min-width:260px;}
.sig-form label{display:block;font-weight:600;font-size:.88rem;color:var(--ink-2);margin-bottom:5px;}
.sig-form textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);
  border-radius:var(--r-sm);background:var(--card);color:var(--ink);padding:9px 11px;
  font-family:var(--ui);font-size:.92rem;resize:vertical;}
.sig-btns{margin-top:10px;}
.sig-danger{border:1px solid var(--err);border-radius:var(--r-md);padding:18px;
  background:var(--err-bg);margin-top:8px;}
.sig-danger label{display:block;font-weight:600;font-size:.88rem;color:var(--ink-2);margin:10px 0 5px;}
@media(max-width:640px){
  .sig-actions{flex-direction:column;}
  .sig-msg-head time{margin-left:0;width:100%;}
}

/* v9.20.1 — Aperçu du premier message (page « Je suis intéressé ») */
.pm-chat-preview{height:auto;min-height:110px;max-height:240px;margin-bottom:14px;}
.pm-chat-preview .pm-msg[hidden]{display:none;}

/* v9.20.2 — Bulle en cours d'envoi (affichage optimiste) */
.pm-msg-sending{opacity:.6;}
.pm-msg-sending .pm-msg-time::after{content:" · envoi…";font-size:.9em;}

/* v9.21 — Pastille « messages non lus » (permutation).
   Le texte utilise --btn-txt : sur les thèmes clairs c'est du blanc, sur les
   thèmes sombres (où --err est un rouge clair) c'est du noir — ce qui garde
   un contraste conforme dans les deux cas. */
.pm-unread{display:inline-flex;align-items:center;gap:5px;margin-left:7px;
  background:var(--err);color:var(--btn-txt,#fff);font-size:.72rem;font-weight:700;
  padding:2px 9px;border-radius:999px;line-height:1.5;white-space:nowrap;
  vertical-align:middle;}
.pm-unread::before{content:"●";font-size:.6em;line-height:1;}
.pm-nav a.pm-has-unread{color:var(--ink);font-weight:700;}
.pm-offre-unread{border-color:var(--err);box-shadow:0 0 0 1px var(--err);}
@media(max-width:640px){
  .pm-unread{font-size:.68rem;padding:2px 7px;margin-left:5px;}
}


/* =========================================================================
   v9.23 — JEUX PÉDAGOGIQUES
   Uniquement des variables de thème (compatible avec les 13 thèmes).
   Style sobre et académique. Boutons larges, lisibles au doigt.
   ========================================================================= */

/* --- Liste des jeux --- */
.jeux-intro{background:var(--blue-tint);border:1px solid var(--blue-soft);
  border-radius:var(--r-md);padding:16px 18px;margin-bottom:22px;}
.jeux-intro p{margin:0;color:var(--ink-2);line-height:1.6;font-size:.95rem;}
.jeux-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;}
.jeu-card{display:flex;flex-direction:column;gap:8px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px;
  box-shadow:var(--sh-1);text-decoration:none;transition:border-color .15s var(--ease),
  box-shadow .15s var(--ease),transform .15s var(--ease);}
.jeu-card:hover{border-color:var(--blue);box-shadow:var(--sh-2);transform:translateY(-2px);}
.jeu-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.jeu-ico{font-size:1.9rem;line-height:1;}
.jeu-comp{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  background:var(--blue-soft);color:var(--blue-deep);padding:3px 9px;border-radius:999px;text-align:right;}
.jeu-titre{font-family:var(--display);font-size:1.15rem;color:var(--ink);margin:2px 0 0;}
.jeu-obj{color:var(--ink-2);font-size:.88rem;line-height:1.55;margin:0;flex:1;}
.jeu-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;
  border-top:1px solid var(--line-soft);padding-top:10px;margin-top:4px;flex-wrap:wrap;}
.jeu-stat{font-size:.78rem;color:var(--ink-3);}
.jeu-stat-neuf{font-style:italic;color:var(--ink-4);}
.jeu-go{font-size:.85rem;font-weight:600;color:var(--blue);}

/* --- Page de présentation --- */
.jeu-hero{display:flex;align-items:center;gap:16px;margin-bottom:22px;}
.jeu-hero-ico{font-size:3rem;line-height:1;}
.jeu-bloc{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:20px 22px;margin-bottom:16px;box-shadow:var(--sh-1);}
.jeu-bloc-titre{font-family:var(--display);font-size:1.1rem;color:var(--ink);margin:0 0 10px;}
.jeu-bloc-txt{color:var(--ink-2);line-height:1.65;margin:0;font-size:.97rem;}
.jeu-bloc-note{color:var(--ink-3);font-size:.87rem;line-height:1.55;margin:12px 0 0;}
.jeu-etapes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px;}
.jeu-etapes li{display:flex;align-items:flex-start;gap:11px;color:var(--ink-2);
  line-height:1.55;font-size:.95rem;}
.jeu-etape-num{flex:0 0 26px;width:26px;height:26px;border-radius:50%;background:var(--blue);
  color:var(--btn-txt,#fff);display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:.82rem;}
.jeu-stats-row{display:flex;gap:14px;flex-wrap:wrap;}
.jeu-stats-row>div{flex:1;min-width:110px;background:var(--paper-2);border-radius:var(--r-md);
  padding:12px;text-align:center;}
.jeu-stats-row strong{display:block;font-family:var(--display);font-size:1.5rem;color:var(--blue);}
.jeu-stats-row span{font-size:.76rem;color:var(--ink-3);}
.jeu-start-zone{text-align:center;padding:12px 0 30px;}
.jeu-btn-start{font-size:1.05rem;padding:14px 30px;}

/* --- Cadre commun de partie --- */
.jeu-hud{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px;}
.jeu-hud-item{flex:1;min-width:82px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);padding:9px 12px;text-align:center;}
.jeu-hud-val{display:block;font-family:var(--display);font-size:1.25rem;color:var(--blue);font-weight:600;}
.jeu-hud-lab{display:block;font-size:.7rem;color:var(--ink-3);text-transform:uppercase;letter-spacing:.03em;}
.jeu-hud-danger .jeu-hud-val{color:var(--err);}
.jeu-plateau{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:20px;box-shadow:var(--sh-1);}
.jeu-question{font-family:var(--read);font-size:1.05rem;color:var(--ink);line-height:1.6;
  margin:16px 0 14px;white-space:pre-wrap;word-break:break-word;}
.jeu-options{display:flex;flex-direction:column;gap:9px;}
.jeu-option{display:block;width:100%;text-align:left;font-family:var(--ui);font-size:.96rem;
  line-height:1.5;color:var(--ink);background:var(--paper-2);border:2px solid var(--line);
  border-radius:var(--r-md);padding:13px 15px;cursor:pointer;
  transition:border-color .15s var(--ease),background .15s var(--ease);}
.jeu-option:hover:enabled{border-color:var(--blue);background:var(--card);}
.jeu-aide{font-size:.85rem;color:var(--ink-3);margin:10px 0 0;text-align:center;}
.jeu-message{margin-top:14px;padding:12px 15px;border-radius:var(--r-md);
  background:var(--paper-2);border:1px solid var(--line);color:var(--ink-2);
  font-size:.93rem;line-height:1.55;}
.jeu-msg-ok{background:var(--ok-bg);border-color:var(--ok);color:var(--ok);font-weight:600;}
.jeu-msg-ko{background:var(--err-bg);border-color:var(--err);color:var(--err);}
.jeu-actions-bas{text-align:center;margin-top:16px;}

/* --- 1. Memory --- */
.mem-grille{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.mem-carte{min-height:104px;border:2px solid var(--line);border-radius:var(--r-md);
  background:var(--blue);cursor:pointer;padding:9px;display:flex;align-items:center;
  justify-content:center;transition:all .18s var(--ease);}
.mem-carte:hover:enabled{transform:translateY(-2px);box-shadow:var(--sh-2);}
.mem-dos{font-size:1.7rem;color:var(--btn-txt,#fff);font-weight:700;}
.mem-face,.mem-ouverte{background:var(--paper-2);border-color:var(--blue);}
.mem-ouverte{background:var(--ok-bg);border-color:var(--ok);}
.mem-attente{background:var(--paper-2);border-color:var(--blue);}
.mem-txt{font-size:.76rem;line-height:1.35;color:var(--ink);text-align:center;
  max-height:88px;overflow:hidden;}

/* --- 4. Reconstruis la phrase --- */
.rec-zone{min-height:74px;border:2px dashed var(--line);border-radius:var(--r-md);
  padding:12px;display:flex;flex-wrap:wrap;gap:7px;align-items:flex-start;
  background:var(--paper-2);margin-bottom:16px;}
.rec-vide{color:var(--ink-4);font-size:.88rem;font-style:italic;}
.rec-dispo{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:16px;}
.rec-bloc{font-family:var(--read);font-size:.93rem;padding:9px 13px;border-radius:var(--r-sm);
  border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;
  transition:all .15s var(--ease);}
.rec-bloc:hover{border-color:var(--blue);color:var(--blue);}
.rec-place{background:var(--blue-soft);border-color:var(--blue);color:var(--blue-deep);font-weight:500;}
.rec-actions{text-align:center;}
.rec-solution{margin-top:14px;padding:13px;background:var(--ok-bg);border:1px solid var(--ok);
  border-radius:var(--r-md);color:var(--ink-2);line-height:1.6;font-size:.93rem;}

/* --- 5. Gagnez votre place --- */
.mil-echelle{display:flex;flex-direction:column-reverse;gap:3px;margin-bottom:16px;}
.mil-palier{font-size:.76rem;padding:5px 11px;border-radius:var(--r-sm);
  background:var(--paper-2);color:var(--ink-4);border:1px solid transparent;}
.mil-franchi{background:var(--ok-bg);color:var(--ok);font-weight:600;}
.mil-courant{background:var(--blue-soft);color:var(--blue-deep);font-weight:700;
  border-color:var(--blue);}
.mil-garanti{border-left:3px solid var(--warn);}
.mil-aides{display:flex;flex-direction:column;gap:8px;margin-top:16px;}
.jeu-aide-btn{font-family:var(--ui);font-size:.88rem;font-weight:600;padding:11px 14px;
  border-radius:var(--r-md);border:1px solid var(--line);background:var(--paper-2);
  color:var(--ink-2);cursor:pointer;text-align:left;}
.jeu-aide-btn:hover:enabled{border-color:var(--blue);color:var(--blue);}
.jeu-aide-btn:disabled{opacity:.45;cursor:default;}
.jeu-aide-stop{border-color:var(--warn);color:var(--warn);}

/* --- 6. Course contre la montre --- */
.chrono-barre{height:11px;background:var(--paper-2);border-radius:6px;overflow:hidden;
  margin-bottom:6px;}
.chrono-fill{height:100%;background:var(--blue);border-radius:6px;transition:width 1s linear;}

/* --- 8. Ascension --- */
.asc-echelle{display:flex;flex-direction:column;gap:3px;margin-bottom:14px;}
.asc-barreau{font-size:.78rem;padding:6px 12px;border-radius:var(--r-sm);
  background:var(--paper-2);color:var(--ink-4);}
.asc-franchi{background:var(--ok-bg);color:var(--ok);}
.asc-ici{background:var(--blue);color:var(--btn-txt,#fff);font-weight:700;}

/* --- Résultat --- */
.jeu-fin-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:34px 26px;text-align:center;box-shadow:var(--sh-2);max-width:520px;margin:0 auto;}
.jeu-fin-ico{font-size:3.4rem;line-height:1;margin-bottom:8px;}
.jeu-fin-score{font-family:var(--display);font-size:3rem;color:var(--blue);margin:0;line-height:1;}
.jeu-fin-detail{color:var(--ink-2);margin:8px 0 4px;font-weight:600;}
.jeu-fin-msg{color:var(--ink-2);line-height:1.6;margin:10px 0 20px;}
.jeu-fin-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;}

/* --- Page verrouillée --- */
.jeux-argu{list-style:none;margin:14px 0;padding:0;display:flex;flex-direction:column;gap:9px;}
.jeux-argu li{color:var(--ink-2);line-height:1.55;font-size:.93rem;padding-left:20px;position:relative;}
.jeux-argu li::before{content:"✓";position:absolute;left:0;color:var(--ok);font-weight:700;}

/* --- Administration --- */
.jeux-admin-table td.jeu-nom{font-weight:600;color:var(--ink);}
.jeux-admin-table .jeu-nom small{display:block;font-weight:400;color:var(--ink-3);
  font-size:.78rem;margin-top:2px;}
.jeu-switch{display:inline-flex;align-items:center;gap:6px;}
.jeu-switch form{margin:0;}
.jeu-toggle{font-family:var(--ui);font-size:.76rem;font-weight:700;cursor:pointer;
  padding:5px 11px;border-radius:999px;border:1px solid var(--line);white-space:nowrap;}
.jeu-toggle-on{background:var(--ok-bg);border-color:var(--ok);color:var(--ok);}
.jeu-toggle-off{background:var(--paper-2);border-color:var(--line);color:var(--ink-4);}
.jeu-global{display:flex;align-items:center;justify-content:space-between;gap:16px;
  flex-wrap:wrap;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:18px 20px;margin-bottom:20px;}

/* --- Mobile --- */
@media(max-width:640px){
  .jeux-grid{grid-template-columns:1fr;}
  .jeu-plateau{padding:15px 13px;}
  .jeu-hero-ico{font-size:2.4rem;}
  .jeu-bloc{padding:16px 15px;}
  .mem-grille{grid-template-columns:repeat(2,1fr);gap:8px;}
  .mem-carte{min-height:92px;}
  .mem-txt{font-size:.72rem;max-height:76px;}
  .jeu-hud-item{min-width:70px;padding:7px 9px;}
  .jeu-hud-val{font-size:1.05rem;}
  .jeu-fin-card{padding:26px 18px;}
  .jeu-fin-score{font-size:2.5rem;}
}

/* --- Le grand tri --- */
.tri-item{font-family:var(--read);font-size:1rem;line-height:1.6;color:var(--ink);
  background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-md);
  padding:16px 18px;margin:12px 0 16px;text-align:center;}
.tri-colonnes{display:grid;grid-template-columns:1fr 1fr;gap:11px;}
.tri-colonne{display:flex;flex-direction:column;align-items:center;gap:7px;
  padding:16px 13px;border:2px solid var(--line);border-radius:var(--r-md);
  background:var(--card);cursor:pointer;transition:all .15s var(--ease);min-height:96px;
  justify-content:center;}
.tri-colonne:hover{border-color:var(--blue);background:var(--blue-tint);}
.tri-col-num{font-family:var(--display);font-size:1.5rem;font-weight:700;color:var(--blue);}
.tri-col-titre{font-size:.84rem;line-height:1.4;color:var(--ink-2);text-align:center;font-weight:600;}


/* =========================================================================
   v9.26 — MISE EN AVANT DES AVIS
   Sobre et discret : la preuve sociale ne doit jamais gêner la lecture ni
   retarder l'accès au contenu. Uniquement des variables de thème.
   ========================================================================= */

/* --- Section sur la page d'accueil publique --- */
.une-section{border-top:1px solid var(--line-soft);padding-top:30px;}
.une-entete{display:flex;align-items:center;gap:22px;flex-wrap:wrap;
  justify-content:center;text-align:center;margin-bottom:22px;}
.une-note{display:flex;align-items:baseline;gap:5px;flex-wrap:wrap;justify-content:center;}
.une-note-val{font-family:var(--display);font-size:2.6rem;font-weight:700;color:var(--blue);
  line-height:1;}
.une-note-max{font-size:1rem;color:var(--ink-3);}
.une-etoiles{margin-left:8px;font-size:1.05rem;letter-spacing:1px;white-space:nowrap;}
.une-texte{text-align:left;}
.une-sous{color:var(--ink-3);font-size:.9rem;margin:5px 0 0;line-height:1.5;}

.une-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:15px;}
.une-carte{margin:0;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--sh-1);
  display:flex;flex-direction:column;gap:11px;}
.une-carte-note{font-size:.95rem;letter-spacing:1px;line-height:1;}
.une-carte-txt{margin:0;font-family:var(--read);font-size:.92rem;line-height:1.6;
  color:var(--ink-2);flex:1;}
.une-carte-txt::before{content:"« ";color:var(--ink-4);}
.une-carte-txt::after{content:" »";color:var(--ink-4);}
.une-carte-sign{display:flex;align-items:center;gap:9px;
  border-top:1px solid var(--line-soft);padding-top:11px;}
.une-carte-sign strong{display:block;font-size:.87rem;color:var(--ink);}
.une-carte-sign small{display:block;font-size:.76rem;color:var(--ink-3);}
.une-avatar{flex:0 0 32px;width:32px;height:32px;border-radius:50%;background:var(--blue);
  color:var(--btn-txt,#fff);display:flex;align-items:center;justify-content:center;
  font-family:var(--display);font-weight:600;font-size:.9rem;}
.une-lien{text-align:center;margin:20px 0 0;}
.une-lien a{font-size:.9rem;font-weight:600;color:var(--blue);}

/* --- Encart discret dans l'espace membre --- */
.une-encart{margin-top:34px;padding-top:20px;border-top:1px solid var(--line-soft);}
.une-encart-tete{display:flex;align-items:baseline;justify-content:space-between;
  gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.une-encart-titre{font-size:.8rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;color:var(--ink-4);}
.une-encart-tete a{font-size:.82rem;font-weight:600;color:var(--blue);}
.une-encart-liste{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:13px;}
.une-encart-item{background:var(--paper-2);border:1px solid var(--line-soft);
  border-radius:var(--r-md);padding:14px 16px;}
.une-encart-item p{margin:7px 0 8px;font-family:var(--read);font-size:.87rem;
  line-height:1.55;color:var(--ink-2);}
.une-encart-sign{font-size:.76rem;color:var(--ink-3);}

/* --- Mobile : empilement, rien ne déborde --- */
@media(max-width:640px){
  .une-section{padding-top:24px;}
  .une-entete{flex-direction:column;gap:10px;}
  .une-texte{text-align:center;}
  .une-note-val{font-size:2.2rem;}
  .une-grille{grid-template-columns:1fr;gap:12px;}
  .une-carte{padding:15px 16px;}
  .une-encart-liste{grid-template-columns:1fr;}
}

/* =========================================================================
   v9.27 — PAGE D'ACCUEIL : HABILLAGE VISUEL
   Illustrations SVG pilotées par la couleur du thème (currentColor), fond
   qui respire, repères visuels, animation d'entrée discrète.
   Aucune couleur figée, aucune image, aucune dépendance JavaScript.
   ========================================================================= */

/* --- Base commune des illustrations --- */
.ill{display:block;width:100%;height:auto;color:var(--blue);}
.ill-hero{max-width:250px;margin:0 auto;}
.ill-zone{width:42px;height:42px;}
.ill-cle{width:42px;height:42px;}
.ill-repere{width:21px;height:21px;flex:0 0 21px;}
.ill-sceau{width:19px;height:19px;flex:0 0 19px;color:var(--ok);}
.ill-feat{width:31px;height:31px;}
.ill-quote{width:24px;height:auto;color:var(--ink-4);opacity:.5;}

/* --- Bloc d'introduction : un fond qui respire ---------------------------
   Deux halos très légers, dessinés en CSS (aucune image à télécharger).
   Sur un navigateur qui ne gère pas les dégradés radiaux, le fond reste
   simplement uni : la page demeure lisible. */
.hero{position:relative;padding-top:14px;}
.hero::before{
  content:"";position:absolute;z-index:-1;left:50%;top:-40px;
  /* Jamais plus large que le conteneur : au-delà, le halo créerait un
     défilement horizontal sur petit écran (constaté en test à 390 px). */
  width:min(620px,100%);height:340px;transform:translateX(-50%);
  background:
    radial-gradient(closest-side, var(--blue-tint), transparent 72%),
    radial-gradient(closest-side, var(--blue-soft), transparent 68%);
  background-position:30% 30%, 72% 62%;
  background-size:62% 62%, 52% 52%;
  background-repeat:no-repeat;
  opacity:.85;pointer-events:none;
}
.hero-ill{margin:0 auto 16px;max-width:250px;}
.hero-accent{color:var(--blue);}

/* Repères visuels sous le titre : plus rapides à parcourir qu'un paragraphe */
.hero-reperes{list-style:none;margin:22px auto 16px;padding:0;
  display:flex;gap:14px;flex-wrap:wrap;justify-content:center;max-width:660px;}
.hero-reperes li{display:flex;align-items:flex-start;gap:9px;text-align:left;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);
  padding:11px 14px;flex:1 1 190px;max-width:220px;box-shadow:var(--sh-1);}
.hero-reperes span{font-size:.82rem;line-height:1.42;color:var(--ink-2);font-weight:500;}

/* Mention officielle : autorité rendue visible d'un coup d'œil */
.hero-officiel{display:inline-flex;align-items:center;gap:9px;text-align:left;
  background:var(--ok-bg);border:1px solid var(--ok);border-radius:999px;
  padding:8px 16px;margin:4px auto 20px;max-width:520px;}
.hero-officiel span{font-size:.83rem;line-height:1.45;color:var(--ink-2);}
.hero-amorce{font-size:.85rem;color:var(--ink-3);margin:12px 0 0;}

/* --- Cartes des espaces --- */
.zone-ill{display:block;margin-bottom:10px;}
.zone-card{transition:border-color .18s var(--ease),box-shadow .18s var(--ease),
  transform .18s var(--ease);}
.zone-card:hover{border-color:var(--blue);box-shadow:var(--sh-2);transform:translateY(-3px);}

/* --- Bloc de la clé --- */
.keycard{position:relative;}
.keycard-ill{margin:0 auto 14px;width:42px;}

/* --- Témoignages : guillemet décoratif --- */
.une-quote{display:block;margin-bottom:-4px;}

/* --- « Ce que vous y trouverez » : cartes avec plus de présence --- */
/* v9.27.1 — Les cartes sont des liens : un clic ramène en haut, vers le
   choix de l'espace. Le défilement est natif (aucun JavaScript requis). */
.feat{display:block;text-decoration:none;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-lg);
  padding:20px 18px;box-shadow:var(--sh-1);cursor:pointer;
  transition:border-color .18s var(--ease),box-shadow .18s var(--ease),
  transform .18s var(--ease);}
.feat:hover{border-color:var(--blue);box-shadow:var(--sh-2);transform:translateY(-3px);}
.feat:hover h3{color:var(--blue);}
.feat h3{transition:color .18s var(--ease);}
.feat-ico{display:inline-flex;align-items:center;justify-content:center;
  width:52px;height:52px;border-radius:var(--r-md);background:var(--blue-tint);
  margin-bottom:12px;}

/* --- Animation d'entrée : discrète, purement décorative -------------------
   Le contenu est visible même si l'animation ne se joue pas (vieux appareil,
   JavaScript lent) : on n'anime que l'opacité et un léger décalage. */
@keyframes heroApparait{
  from{opacity:0;transform:translateY(10px);}
  to  {opacity:1;transform:none;}
}
.anim-1,.anim-2,.anim-3,.anim-4,.anim-5{
  animation:heroApparait .5s var(--ease) both;
}
.anim-1{animation-delay:.02s;}
.anim-2{animation-delay:.10s;}
.anim-3{animation-delay:.18s;}
.anim-4{animation-delay:.26s;}
.anim-5{animation-delay:.34s;}
.hero-ill{animation:heroApparait .6s var(--ease) both;}

/* Respect du réglage système « réduire les animations » : rien ne bouge,
   et le contenu reste évidemment visible. */
@media (prefers-reduced-motion: reduce){
  .anim-1,.anim-2,.anim-3,.anim-4,.anim-5,.hero-ill{animation:none;}
  .zone-card:hover,.feat:hover{transform:none;}
}

/* --- Mobile --- */
@media(max-width:640px){
  .hero::before{height:250px;top:-24px;}
  .hero-ill,.ill-hero{max-width:190px;}
  .hero-reperes{gap:9px;margin:18px auto 14px;}
  .hero-reperes li{flex:1 1 100%;max-width:100%;padding:10px 13px;}
  .hero-officiel{border-radius:var(--r-md);padding:10px 14px;}
  .feat{padding:17px 15px;}
  .feat-ico{width:46px;height:46px;}
  .ill-feat{width:27px;height:27px;}
}
