/* =====================================================================
   Mode Guidé / Accompagné — style « ARCHIPEL ISOMÉTRIQUE » (défaut)
   Skin "jeu de gestion" validé sur maquettes crowdzip2/2g-archipel :
   encre #174A5C · encre douce #5E8296 · teal #1FA9A0 (foncé #157A73) ·
   or #F2C94C · lagon #E4F2F8 · ligne #A9CBD9. Cartes blanches posées
   (ombre dure 0 3px 0), radius généreux, police Baloo 2 (titres/boutons).
   Préfixe .gd- pour éviter toute collision avec .lms- / .block-.
   Mobile-first. Le sombre remappe les tokens (lagon nuit #0F2430).
   ===================================================================== */
:root {
  --gd-ink: #174A5C;        /* encre */
  --gd-ink-soft: #5E8296;   /* encre douce */
  --gd-ink-mid: #3F6E85;    /* encre douce + contraste (petits corps) */
  --gd-muted: #7FA3B5;
  --gd-teal: #1FA9A0;
  --gd-teal-dark: #157A73;
  --gd-teal-deep: #155E58;  /* encre sur fond teal-soft */
  --gd-teal-soft: #E9FBF9;  /* surface sélection / feedback positif */
  --gd-gold: #F2C94C;
  --gd-gold-dark: #D4A928;  /* ombre dure des boutons or */
  --gd-gold-text: #A9871C;  /* or lisible en texte sur blanc */
  --gd-lagoon: #E4F2F8;     /* fond lagon */
  --gd-line: #A9CBD9;       /* ligne / ombres dures posées */
  --gd-line-soft: #E1EDF4;  /* bordures de cartes cliquables */
  --gd-card: #FFFFFF;
  --gd-ok: #2E9E4F;
  --gd-ok-bg: #EAF9EE;
  --gd-bad: #E2574C;
  --gd-bad-bg: #FBE9E7;
  --gd-shadow-soft: rgba(23, 74, 92, .12);
  /* Encres FIXES (ne basculent pas en sombre) : surfaces toujours encre/or */
  --gd-ink-fixed: #174A5C;
  --gd-ink-fixed-dark: #0F3644;
  /* Police display de l'archipel (titres, boutons, chips) */
  --gd-font: 'Baloo 2', ui-rounded, 'Trebuchet MS', system-ui, sans-serif;
  /* ---- Alias historiques (le JS et d'anciens inline styles y font référence) */
  --gd-navy: var(--gd-ink);
  --gd-navy-dark: var(--gd-ink-fixed-dark);
  --gd-navy-soft: var(--gd-ink-soft);
  --gd-gold-soft: #F7DC85;
  --gd-sea: var(--gd-teal);
  --gd-paper: var(--gd-lagoon);
}
/* Nuit : lagon sombre, cartes ardoise, encre claire — les composants suivent. */
[data-theme="dark"] {
  --gd-ink: #D9EAF4;
  --gd-ink-soft: #9FBACC;
  --gd-ink-mid: #B3CFDF;
  --gd-muted: #7E9DAF;
  --gd-teal-soft: #103A38;
  --gd-teal-deep: #9FE8E2;
  --gd-gold-text: #E7C25C;
  --gd-lagoon: #0F2430;
  --gd-line: #2C4C5E;
  --gd-line-soft: #24404F;
  --gd-card: #16323F;
  --gd-ok: #4CBF6F;
  --gd-ok-bg: #14351F;
  --gd-bad: #E2574C;
  --gd-bad-bg: #3A1F1C;
  --gd-shadow-soft: rgba(0, 0, 0, .4);
}

/* ---------- Conteneur global ---------- */
.gd-wrap { max-width: 760px; margin: 0 auto; padding: 0 16px 120px; color: var(--gd-ink); }
.gd-wrap * { box-sizing: border-box; }
/* La carte du cours = « page lagon » de la maquette (panneau posé sous le header) */
.gd-wrap--map { background: var(--gd-lagoon); border-radius: 0 0 22px 22px; padding-bottom: 90px; }
.gd-h, .gd-lbl { color: var(--gd-ink); }
.gd-wrap h1, .gd-wrap h2, .gd-wrap h3 { font-family: var(--gd-font); }

/* ---------- Barre d'état (chips blanches sur lagon, façon maquette) ---------- */
.gd-topbar {
  /* top aligné sur la hauteur réelle du header (56px sur mobile via quality.css) :
     un `64px` codé en dur laissait une bande de 8px où le contenu défilait à nu. */
  position: sticky; top: var(--header-height, 64px); z-index: 40;
  display: flex; align-items: center; gap: 8px;
  /* #28 : fond OPAQUE forcé (lagon plein) — aucun skin ne doit pouvoir le rendre
     translucide (ex. Glassmorphism en rgba+blur) : rien ne transparaît derrière. */
  background: var(--gd-lagoon) !important;
  backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
  color: var(--gd-ink) !important; border-radius: 0 0 18px 18px;
  padding: 10px 16px; margin: 0 -16px 14px;
  border: none; box-shadow: 0 6px 14px -8px rgba(23, 74, 92, .28);
}
.gd-topbar__mascot { width: 42px; height: 42px; border-radius: 50%; background: var(--gd-card);
  object-fit: contain; padding: 2px; border: none; box-shadow: 0 3px 0 var(--gd-line); flex-shrink: 0; }
/* chips blanches arrondies : 🔥 j · Niv. · ⚓ */
.gd-stat { display: inline-flex; align-items: center; gap: 5px; background: var(--gd-card);
  border-radius: 10px; padding: 6px 12px; font-family: var(--gd-font); font-weight: 800;
  font-size: .82rem; line-height: 1.1; color: var(--gd-ink); box-shadow: 0 2px 0 var(--gd-line); }
.gd-stat small { font-weight: 700; font-size: .68rem; color: var(--gd-muted); letter-spacing: .02em; }
.gd-stat--fire { color: #E2793B; }
.gd-stat--level { color: #8A6FC8; }
.gd-stat--freeze { color: var(--gd-teal); }
.gd-stat__flame { font-size: 1rem; }
.gd-topbar__spacer { flex: 1; }

/* anneau objectif du jour — pastille blanche, arc teal */
.gd-ring { --p: 0; width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0;
  background: conic-gradient(var(--gd-teal) calc(var(--p) * 1%), var(--gd-line) 0);
  display: grid; place-items: center; position: relative; box-shadow: 0 2px 0 var(--gd-line); }
.gd-ring::after { content: ""; position: absolute; inset: 4px; border-radius: 50%; background: var(--gd-card); }
.gd-ring span { position: relative; z-index: 1; font-family: var(--gd-font); font-size: .64rem; font-weight: 800; color: var(--gd-ink); }

/* Mobile : chips compactes — pas de libellés qui débordent. */
@media (max-width: 560px) {
  .gd-topbar { gap: 6px; padding: 8px 12px; }
  .gd-topbar__mascot { width: 36px; height: 36px; }
  .gd-stat { font-size: .74rem; gap: 4px; padding: 5px 9px; white-space: nowrap; }
  .gd-stat small { font-size: .6rem; }
  .gd-stat__flame { font-size: .9rem; }
  .gd-ring { width: 36px; height: 36px; }
  .gd-ring span { font-size: .58rem; }
}

/* ---------- Quêtes du jour (#27 : repliables, en-tête compact) ---------- */
.gd-quests { margin: 0 0 16px; }
.gd-quests__head { width: 100%; display: flex; align-items: center; gap: 8px; background: var(--gd-card);
  border: none; border-radius: 12px; padding: 10px 14px; font-family: var(--gd-font); font-weight: 800;
  font-size: .9rem; color: var(--gd-ink); cursor: pointer; text-align: left; box-shadow: 0 3px 0 var(--gd-line); }
.gd-quests__head:hover { transform: translateY(-1px); }
.gd-quests__chev { margin-left: auto; color: var(--gd-muted); font-size: .85rem; }
.gd-quests__body { display: grid; gap: 8px; margin-top: 8px; }
.gd-quests__body[hidden] { display: none; }
.gd-quest { display: flex; align-items: center; gap: 10px; background: var(--gd-card); border: none;
  border-left: 4px solid var(--gd-gold); border-radius: 12px; padding: 10px 12px; box-shadow: 0 3px 0 var(--gd-line); }
.gd-quest--done { border-left-color: var(--gd-ok); background: var(--gd-ok-bg); }
.gd-quest__icon { font-size: 1.3rem; }
.gd-quest__body { flex: 1; }
.gd-quest__label { font-weight: 700; font-size: .9rem; }
.gd-quest__bar { height: 6px; border-radius: 99px; background: var(--gd-lagoon); margin-top: 5px; overflow: hidden; }
.gd-quest__bar i { display: block; height: 100%; background: var(--gd-gold); border-radius: 99px; }
.gd-quest--done .gd-quest__bar i { background: var(--gd-ok); }
.gd-quest__check { color: var(--gd-ok); font-weight: 900; }

/* ---------- En-tête (pages exam / révision / cabine…) ---------- */
.gd-hero { text-align: center; padding: 8px 0 4px; }
.gd-hero h1 { font-family: var(--gd-font); font-size: 1.5rem; margin: 0 0 4px; color: var(--gd-ink); }
.gd-hero p { margin: 0; color: var(--gd-ink-soft); font-size: .92rem; }

/* ---------- HERO carte : l'archipel isométrique + badges posés ---------- */
.gd-maphero { position: relative; height: 300px; border-radius: 20px; overflow: hidden;
  margin: 0 0 6px;
  background-color: #BFDCE8;
  background-image: url('../../uploads/guided/iso-archipelago.jpg');
  background-size: cover; background-position: center 68%;
  box-shadow: 0 14px 34px rgba(23, 74, 92, .18); }
.gd-maphero__title { position: absolute; left: 16px; top: 16px; max-width: min(62%, 380px);
  background: rgba(255, 255, 255, .94); border-radius: 14px; padding: 11px 16px;
  box-shadow: 0 6px 18px rgba(23, 74, 92, .15); }
.gd-maphero__title h1 { margin: 0; font-family: var(--gd-font); font-weight: 800; font-size: 1.3rem;
  line-height: 1.1; color: #174A5C; }
.gd-maphero__title p { margin: 2px 0 0; font-size: .72rem; font-weight: 700; color: #7FA3B5; }
.gd-maphero__island { position: absolute; right: 16px; top: 16px; max-width: 46%;
  background: rgba(23, 74, 92, .85); color: #fff; border-radius: 12px; padding: 8px 13px;
  font-family: var(--gd-font); font-size: .72rem; font-weight: 800; backdrop-filter: blur(6px);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gd-maphero__locked { position: absolute; right: 16px; bottom: 14px;
  background: rgba(255, 255, 255, .9); border-radius: 12px; padding: 7px 12px;
  font-family: var(--gd-font); font-size: .7rem; font-weight: 800; color: #628CA1; }
@media (max-width: 560px) {
  .gd-maphero { height: 200px; border-radius: 16px; }
  .gd-maphero__title { left: 10px; top: 10px; padding: 8px 12px; max-width: 66%; }
  .gd-maphero__title h1 { font-size: 1.02rem; }
  .gd-maphero__title p { font-size: .62rem; }
  .gd-maphero__island { right: 10px; top: 10px; font-size: .62rem; padding: 6px 10px; max-width: 30%; }
  .gd-maphero__locked { right: 10px; bottom: 10px; font-size: .62rem; }
}

/* ---------- Lecteur pas-à-pas (plein écran) ---------- */
/* Positionnement durci en !important : aucun skin ne doit pouvoir repasser le
   lecteur en `position:relative` (sinon le chapitre s'ouvre "en bas" dans le flux
   au lieu d'un nouvel écran plein écran). */
.gd-player { position: fixed !important; inset: 0 !important; z-index: 9000 !important; background: var(--gd-lagoon); display: flex; flex-direction: column; }
.gd-player__top { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: none; }
/* #10 : bouton Quitter — pastille blanche posée, cible ≥ 44×44, bien visible.
   Géométrie + fond forcés en !important : les skins restylent .gd-player__close
   -> on garantit une pastille lisible sur TOUS les thèmes. */
.gd-player__close { border: none !important; background: var(--gd-card) !important; color: var(--gd-ink) !important; width: 44px !important; height: 44px !important; min-width: 44px; border-radius: 12px !important; cursor: pointer; font-size: 1.05rem; font-weight: 800; line-height: 1; flex-shrink: 0; display: grid; place-items: center; box-shadow: 0 3px 0 var(--gd-line); transition: transform .1s, background .1s; }
.gd-player__close:hover { transform: translateY(-1px); }
.gd-player__close:active { transform: translateY(2px); }
/* #43 : titre du chapitre (ellipsé) au centre de la barre haute du lecteur */
.gd-player__mid { flex: 1; min-width: 0; }
.gd-player__ttl { text-align: center; font-family: var(--gd-font); font-size: .82rem; font-weight: 800; color: var(--gd-ink);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0 0 5px; }
.gd-progress { flex: 1; height: 10px; background: rgba(255, 255, 255, .75); border-radius: 99px; overflow: hidden; box-shadow: inset 0 0 0 1px var(--gd-line-soft); }
.gd-progress i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, #2BC5BB, var(--gd-teal-dark)); border-radius: 99px; transition: width .35s ease; }
.gd-player__count { font-family: var(--gd-font); font-size: .74rem; font-weight: 800; color: var(--gd-ink-mid);
  background: var(--gd-card); border-radius: 10px; padding: 6px 10px; box-shadow: 0 2px 0 var(--gd-line); flex-shrink: 0; }
.gd-player__stage { flex: 1; overflow-y: auto; padding: 14px 18px 40px; }
/* l'étape = grande carte blanche posée (maquette LEÇON / QUIZ) */
.gd-stage-inner { max-width: 680px; margin: 0 auto; animation: gd-slidein .3s ease;
  background: var(--gd-card); border-radius: 20px; padding: 24px 26px 26px;
  box-shadow: 0 3px 0 var(--gd-line), 0 12px 26px var(--gd-shadow-soft); }
@media (max-width: 560px) { .gd-player__stage { padding: 10px 12px 34px; } .gd-stage-inner { padding: 18px 16px 20px; border-radius: 16px; } }
@keyframes gd-slidein { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.gd-step-kicker { display: inline-block; font-family: var(--gd-font); font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  color: var(--gd-teal-dark); background: var(--gd-lagoon); padding: 4px 12px; border-radius: 99px; margin-bottom: 12px; }
[data-theme="dark"] .gd-step-kicker { color: #7ED8D2; }
/* titres du contenu de l'étape en Baloo (maquette LEÇON) — corps de texte inchangé */
.gd-player .gd-stage-inner h1, .gd-player .gd-stage-inner h2, .gd-player .gd-stage-inner h3 { font-family: var(--gd-font); }

/* pied de page lecteur : boutons posés sur le lagon */
.gd-player__foot { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 14px 16px 16px; border-top: none; background: var(--gd-lagoon); position: relative; box-shadow: 0 -8px 16px -12px rgba(23, 74, 92, .35); }
/* #45 : rond, fond OR, gros « ? » encre (l'image mascotte quittait le bouton) */
.gd-player__help { position: absolute; left: 14px; bottom: 12px; width: 46px; height: 46px; border-radius: 50%;
  border: none; background: var(--gd-gold); color: #174A5C; cursor: pointer;
  font-size: 1.3rem; font-weight: 900; line-height: 1; display: grid; place-items: center; padding: 0;
  box-shadow: 0 3px 0 var(--gd-gold-dark); font-family: var(--gd-font); }
.gd-player__help:hover { filter: brightness(1.05); }
.gd-player__next { min-width: 200px; }
/* Mascotte qui "pop" pour encourager (quiz réussi, étape, fin de chapitre) */
.gd-pop { position: fixed; left: 18px; bottom: 92px; z-index: 9200; display: flex; align-items: flex-end; gap: 8px; animation: gd-pop-in .45s cubic-bezier(.2,1.5,.4,1); pointer-events: none; }
.gd-pop img { width: clamp(80px, 16vh, 120px); height: clamp(80px, 16vh, 120px); object-fit: contain; filter: drop-shadow(0 8px 14px rgba(0,0,0,.28)); }
.gd-pop__bubble { background: var(--gd-card); border: 2.5px solid var(--gd-teal); border-radius: 14px 14px 14px 4px; padding: 10px 14px; font-family: var(--gd-font); font-weight: 700; color: var(--gd-ink); max-width: 220px; box-shadow: 0 3px 0 var(--gd-teal), 0 10px 26px rgba(0,0,0,.18); }
.gd-pop--out { animation: gd-pop-out .4s ease forwards; }
@keyframes gd-pop-in { from { transform: translateY(40px) scale(.5); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes gd-pop-out { to { transform: translateY(30px) scale(.7); opacity: 0; } }
@media (max-width: 560px) { .gd-player__help { width: 40px; height: 40px; } .gd-player__next { min-width: 150px; } .gd-pop img { width: 80px; height: 80px; } }

/* ---------- Quiz dans le lecteur : grandes cartes cliquables (maquette QUIZ) ---------- */
.gd-player .block-quiz { background: transparent; border: none; border-radius: 0; padding: 0; margin: 6px 0 0; box-shadow: none; }
.gd-player .block-quiz__header { margin-bottom: 18px; }
.gd-player .block-quiz__icon { background: var(--gd-lagoon); border-radius: 12px; }
.gd-player .block-quiz__title { font-family: var(--gd-font); font-weight: 800; color: var(--gd-ink); }
.gd-player .block-quiz__subtitle { color: var(--gd-muted); font-weight: 700; }
.gd-player .block-quiz__question { background: transparent; padding: 0; margin-bottom: 26px; counter-reset: gdopt; }
.gd-player .block-quiz__question-counter { font-family: var(--gd-font); font-size: .66rem; font-weight: 800;
  letter-spacing: .08em; text-transform: uppercase; color: #8A6FC8; margin-bottom: 6px; }
[data-theme="dark"] .gd-player .block-quiz__question-counter { color: #B9A5E8; }
.gd-player .block-quiz__question-text { font-family: var(--gd-font); font-size: 1.22rem; font-weight: 800;
  line-height: 1.25; color: var(--gd-ink); margin-bottom: 16px; }
/* réponses = grandes cartes posées, badge-lettre A/B/C/D en compteur CSS */
.gd-player .block-quiz__option { counter-increment: gdopt; position: relative;
  background: var(--gd-card); border: 2.5px solid var(--gd-line-soft); border-radius: 14px;
  padding: 12px 14px; margin-bottom: 11px; gap: 11px;
  font-size: .92rem; font-weight: 700; color: var(--gd-ink-soft);
  box-shadow: 0 3px 0 var(--gd-line-soft); transition: transform .12s ease, border-color .12s ease, box-shadow .12s ease; }
.gd-player .block-quiz__option:hover { border-color: var(--gd-teal); box-shadow: 0 3px 0 var(--gd-teal); background: var(--gd-card); transform: translateY(-1px); }
.gd-player .block-quiz__option--selected,
.gd-player .block-quiz__option--selected:hover { border-color: var(--gd-teal); background: var(--gd-teal-soft);
  color: var(--gd-teal-deep); font-weight: 800; box-shadow: 0 3px 0 var(--gd-teal); }
.gd-player .block-quiz__option--correct,
.gd-player .block-quiz__option--correct:hover { border-color: var(--gd-ok); background: var(--gd-ok-bg); color: var(--gd-ink); box-shadow: 0 3px 0 var(--gd-ok); }
.gd-player .block-quiz__option--incorrect,
.gd-player .block-quiz__option--incorrect:hover { border-color: var(--gd-bad); background: var(--gd-bad-bg); color: var(--gd-ink); box-shadow: 0 3px 0 var(--gd-bad); }
/* pastille ronde → badge-lettre carré arrondi */
.gd-player .block-quiz__option-radio,
.gd-player .block-quiz__option-checkbox { width: 26px; height: 26px; border-radius: 8px !important; border: none;
  background: var(--gd-lagoon); color: var(--gd-ink-mid); flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; }
.gd-player .block-quiz__option-radio::after,
.gd-player .block-quiz__option-checkbox::after { content: counter(gdopt, upper-alpha);
  font-family: var(--gd-font); font-size: .72rem; font-weight: 800; line-height: 1; }
.gd-player .block-quiz__option--selected .block-quiz__option-radio,
.gd-player .block-quiz__option--selected .block-quiz__option-checkbox { background: var(--gd-teal); color: #fff; }
.gd-player .block-quiz__option--correct .block-quiz__option-radio,
.gd-player .block-quiz__option--correct .block-quiz__option-checkbox { background: var(--gd-ok); color: #fff; }
.gd-player .block-quiz__option--correct .block-quiz__option-radio::after,
.gd-player .block-quiz__option--correct .block-quiz__option-checkbox::after { content: "✓"; }
.gd-player .block-quiz__option--incorrect .block-quiz__option-radio,
.gd-player .block-quiz__option--incorrect .block-quiz__option-checkbox { background: var(--gd-bad); color: #fff; }
.gd-player .block-quiz__option--incorrect .block-quiz__option-radio::after,
.gd-player .block-quiz__option--incorrect .block-quiz__option-checkbox::after { content: "✕"; }
/* feedback doux (explication) : bandeau lagon-teal façon maquette */
.gd-player .block-quiz__explanation { background: var(--gd-teal-soft); border-left: 4px solid var(--gd-teal);
  border-radius: 12px; color: var(--gd-teal-deep); font-weight: 600; }
.gd-player .block-quiz__score { font-family: var(--gd-font); color: var(--gd-teal-dark); }
[data-theme="dark"] .gd-player .block-quiz__score { color: #7ED8D2; }

/* ===================== Chatbot Merlin (flottant, dispo partout) ===================== */
/* Le FAB = logo Merlin seul, bien rond, ombre douce. overflow visible pour que la
   croix de fermeture (.merlin-fab__hide) puisse déborder du cercle sans être rognée. */
.merlin-fab { position: fixed; right: 20px; bottom: 92px; z-index: 8000; width: 62px; height: 62px; border-radius: 50%; border: 3px solid var(--gd-gold); background: var(--gd-ink-fixed); cursor: pointer; padding: 0; overflow: visible; box-shadow: 0 6px 18px rgba(23,74,92,.35); animation: merlin-bob 3s ease-in-out infinite; }
.merlin-fab img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
@keyframes merlin-bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
/* Croix « Masquer Merlin » : petit rond en haut à droite du FAB, visible au
   survol / focus clavier ET pendant 3 s au premier affichage (--intro). */
/* Sélecteur (0,2,0) + min-width/height:0 : quality.css impose min 44px aux
   [role="button"] — la croix gonflait à 44px et couvrait le CENTRE du perroquet
   (un tap mobile masquait Merlin au lieu d'ouvrir le panneau). */
.merlin-fab .merlin-fab__hide { position: absolute; top: -10px; right: -10px; width: 18px; height: 18px; min-width: 0; min-height: 0; display: grid; place-items: center; background: #fff; color: #33405a; border: 1px solid #cdd3dc; border-radius: 50%; font-size: .58rem; font-weight: 900; line-height: 1; box-shadow: 0 2px 6px rgba(0,0,0,.28); opacity: 0; pointer-events: none; transition: opacity .18s ease; }
.merlin-fab:hover .merlin-fab__hide,
.merlin-fab:focus-within .merlin-fab__hide,
.merlin-fab--intro .merlin-fab__hide { opacity: 1; pointer-events: auto; }
.merlin-fab .merlin-fab__hide:focus-visible { outline: 2px solid var(--gd-gold); outline-offset: 1px; }
[data-theme="dark"] .merlin-fab .merlin-fab__hide { background: #1E293B; color: #F1F5F9; border-color: #475569; box-shadow: 0 2px 6px rgba(0,0,0,.5); }
.merlin-panel { position: fixed; right: 20px; bottom: 166px; z-index: 8001; width: min(370px, 92vw); height: min(560px, 70vh); background: var(--gd-card); border-radius: 18px; box-shadow: 0 24px 60px rgba(0,0,0,.32); display: flex; flex-direction: column; overflow: hidden; animation: gd-pop-in .3s ease; }
/* quality.css impose des cibles 44px aux boutons du panneau : on laisse les
   icônes passer sur une 2e ligne plutôt que d'écraser le titre. */
.merlin-panel__head { background: var(--gd-ink-fixed); color: #fff; padding: 8px 12px 6px; display: flex; align-items: center; gap: 8px; row-gap: 0; flex-wrap: wrap; flex-shrink: 0; }
.merlin-panel__head img { width: 38px; height: 38px; border-radius: 50%; border: 2px solid var(--gd-gold); object-fit: cover; background: #fff; }
.merlin-panel__head b { font-family: var(--gd-font); font-size: .95rem; }
.merlin-panel__head small { display: block; font-size: .68rem; opacity: .85; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.merlin-panel__close { margin-left: auto; background: rgba(255,255,255,.16); border: none; color: #fff; width: 30px; height: 30px; border-radius: 50%; cursor: pointer; font-size: 1rem; }
.merlin-msgs { flex: 1; overflow-y: auto; padding: 14px; display: flex; flex-direction: column; gap: 10px; background: var(--gd-lagoon); }
.merlin-msg { max-width: 82%; padding: 10px 13px; border-radius: 14px; font-size: .9rem; line-height: 1.45; white-space: pre-wrap; }
.merlin-msg--bot { align-self: flex-start; background: var(--gd-card); border: 1px solid var(--gd-line-soft); border-bottom-left-radius: 4px; color: var(--gd-ink); }
.merlin-msg--me { align-self: flex-end; background: var(--gd-teal); color: #fff; border-bottom-right-radius: 4px; }
.merlin-input { display: flex; gap: 8px; padding: 10px; border-top: 1px solid var(--gd-line-soft); background: var(--gd-card); flex-shrink: 0; }
.merlin-input textarea { flex: 1; resize: none; border: 1px solid var(--gd-line); border-radius: 10px; padding: 9px 11px; font: inherit; max-height: 90px; background: var(--gd-card); color: var(--gd-ink); }
.merlin-input button { background: var(--gd-gold); color: #174A5C; border: none; border-radius: 10px; padding: 0 16px; font-weight: 800; cursor: pointer; font-size: 1.1rem; box-shadow: 0 3px 0 var(--gd-gold-dark); }
@media (max-width: 560px) {
  .merlin-fab { bottom: 80px; right: 14px; }
  /* #50 : panneau plein écran sur mobile, header sticky (desktop inchangé) */
  .merlin-panel { inset: 0; width: 100%; height: 100%; max-height: none; border-radius: 0; }
  .merlin-panel__head { position: sticky; top: 0; z-index: 2; }
}

/* ---------- Boutons (teal par défaut, or, fantôme) — à la Baloo ---------- */
.gd-btn { border: none; border-radius: 12px; padding: 13px 24px; font-family: var(--gd-font); font-weight: 800; font-size: 1rem; cursor: pointer;
  background: var(--gd-teal); color: #fff; box-shadow: 0 4px 0 var(--gd-teal-dark); transition: transform .12s ease, box-shadow .12s ease; }
.gd-btn:hover { transform: translateY(-1px); }
.gd-btn:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--gd-teal-dark); }
.gd-btn--gold { background: var(--gd-gold); color: #174A5C; box-shadow: 0 4px 0 var(--gd-gold-dark); }
.gd-btn--gold:active { box-shadow: 0 1px 0 var(--gd-gold-dark); }
.gd-btn--ghost { background: var(--gd-card); color: var(--gd-ink-mid); box-shadow: 0 3px 0 var(--gd-line); }
.gd-btn--ghost:active { box-shadow: 0 1px 0 var(--gd-line); }
.gd-btn:disabled { opacity: .45; cursor: not-allowed; box-shadow: none; }

/* ---------- Bac à sable IA ---------- */
.gd-sandbox { border: 2.5px solid var(--gd-teal); border-radius: 16px; overflow: hidden; margin: 8px 0; background: var(--gd-card); }
.gd-sandbox__head { background: var(--gd-teal); color: #fff; padding: 10px 14px; font-family: var(--gd-font); font-weight: 800; display: flex; align-items: center; gap: 8px; }
.gd-sandbox__body { padding: 14px; }
.gd-sandbox textarea { width: 100%; min-height: 90px; border: 1px solid var(--gd-line); border-radius: 10px; padding: 10px; font: inherit; resize: vertical; background: var(--gd-card); color: var(--gd-ink); }
.gd-sandbox__out { margin-top: 12px; background: var(--gd-lagoon); border-left: 4px solid var(--gd-teal); border-radius: 10px; padding: 12px; white-space: pre-wrap; font-size: .92rem; display: none; color: var(--gd-ink); }

/* ---------- Modales (célébration / certificat / mentor / bac à sable) ---------- */
.gd-modal { position: fixed; inset: 0; z-index: 9500; display: grid; place-items: center; padding: 20px;
  background: rgba(10, 36, 48, .6); backdrop-filter: blur(3px); animation: gd-fade .2s ease; }
@keyframes gd-fade { from { opacity: 0; } to { opacity: 1; } }
.gd-card { background: var(--gd-card); border-radius: 22px; max-width: 460px; width: 100%; padding: 28px 24px; text-align: center;
  box-shadow: 0 3px 0 var(--gd-line), 0 24px 60px rgba(0,0,0,.3); max-height: 90vh; overflow-y: auto; }
.gd-card__mascot { width: 120px; height: 120px; object-fit: contain; margin: -8px auto 6px; display: block; }
.gd-card h2 { font-family: var(--gd-font); font-size: 1.55rem; color: var(--gd-ink); margin: 0 0 10px; }
.gd-card p { color: var(--gd-ink-soft); margin: 0 0 16px; line-height: 1.5; }
.gd-card textarea { width: 100%; min-height: 70px; border: 1px solid var(--gd-line); border-radius: 10px; padding: 10px; font: inherit; margin-bottom: 14px; background: var(--gd-card); color: var(--gd-ink); }
.gd-card__row { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }

/* célébration : confettis + gros chiffres */
.gd-reward { display: flex; justify-content: center; gap: 18px; margin: 8px 0 18px; }
.gd-reward div { font-family: var(--gd-font); font-size: 1.8rem; font-weight: 800; color: var(--gd-gold-text); }
.gd-reward small { display: block; font-size: .66rem; color: var(--gd-muted); text-transform: uppercase; letter-spacing: .04em; font-weight: 700; }
.gd-confetti { position: fixed; top: -10px; width: 10px; height: 14px; z-index: 9600; pointer-events: none; animation: gd-fall linear forwards; }
@keyframes gd-fall { to { transform: translateY(105vh) rotate(540deg); opacity: .9; } }

/* ---------- Certificat ---------- */
.gd-cert { border: 6px double var(--gd-gold); border-radius: 14px; padding: 26px 20px; background: var(--gd-card); text-align: center; margin: 0 0 14px; box-shadow: 0 3px 0 var(--gd-line); }
.gd-cert__title { font-family: var(--gd-font); font-size: 1.4rem; color: var(--gd-ink); font-weight: 800; letter-spacing: .04em; }
.gd-cert__name { font-family: var(--gd-font); font-size: 1.6rem; font-weight: 800; color: var(--gd-ink); margin: 12px 0; }
.gd-cert__code { font-family: monospace; font-size: .8rem; color: var(--gd-gold-text); margin-top: 10px; }

/* ---------- Bouton flottant de bascule de mode ---------- */
.gd-modeswitch { position: fixed; left: 16px; bottom: 84px; z-index: 60;
  background: var(--gd-ink-fixed); color: #fff; border: 2px solid var(--gd-gold); border-radius: 99px;
  padding: 10px 16px; font-family: var(--gd-font); font-weight: 800; cursor: pointer; box-shadow: 0 8px 24px rgba(23,74,92,.35); display: flex; align-items: center; gap: 8px; }
.gd-modeswitch img { width: 26px; height: 26px; object-fit: contain; }

/* ---------- Sélecteur de mode (onboarding) ---------- */
.gd-choose { display: grid; gap: 16px; grid-template-columns: 1fr 1fr; margin: 18px 0; }
.gd-choose__card { border: 2.5px solid var(--gd-line-soft); border-radius: 16px; padding: 20px; text-align: center; cursor: pointer; background: var(--gd-card); box-shadow: 0 3px 0 var(--gd-line-soft); transition: border-color .15s, transform .1s, box-shadow .15s; }
.gd-choose__card:hover { border-color: var(--gd-teal); box-shadow: 0 3px 0 var(--gd-teal); transform: translateY(-3px); }
.gd-choose__card h3 { font-family: var(--gd-font); color: var(--gd-ink); margin: 10px 0 6px; }
.gd-choose__card p { font-size: .84rem; color: var(--gd-ink-soft); margin: 0; }
.gd-choose__emoji { font-size: 2.4rem; }

@media (max-width: 560px) {
  .gd-choose { grid-template-columns: 1fr; }
}

/* ===================== Carte du monde — LAGON de l'archipel ===================== */
/* Le « ciel océan » peint est remplacé : la carte vit sur le lagon uni de la
   page (maquette 2g-archipel), les îles sont des cartes blanches posées. */
.gd-worldmap { position: relative; margin: 14px 0 8px; padding: 18px 2px 24px; border-radius: 24px;
  overflow: visible; isolation: isolate; background: transparent; border: none; box-shadow: none; }
.gd-worldmap::before { content: none; }
/* L'ancienne image de fond ne sert plus : le lagon est le décor. */
.gd-worldmap__bg { display: none; }
/* Tracé de route entre les îles : POINTILLÉS verticaux (même langage que le
   chemin de losanges), portion parcourue en teal. Hauteur posée par guided.js
   via --gd-route-fill (0% par défaut). */
.gd-worldmap__route { position: absolute; top: 34px; bottom: 34px; left: 50%; width: 4px; transform: translateX(-50%);
  z-index: 0; border-radius: 0;
  background: repeating-linear-gradient(180deg, var(--gd-line) 0 8px, transparent 8px 18px); }
.gd-worldmap__route::before {
  content: ''; position: absolute; left: -2px; right: -2px; top: 0; height: var(--gd-route-fill, 0%);
  border-radius: 99px; background: linear-gradient(180deg, #2BC5BB, var(--gd-teal-dark));
  box-shadow: 0 2px 8px rgba(31, 169, 160, .45); transition: height .6s ease; }

/* Une île + ses chapitres, disposées en zigzag sur le lagon */
.gd-isle { position: relative; z-index: 1; width: 78%; max-width: 460px; margin: 0 0 34px;
  background: var(--gd-card); border: none; border-radius: 20px;
  padding: 12px 14px 16px; box-shadow: 0 3px 0 var(--gd-line), 0 16px 30px var(--gd-shadow-soft);
  transition: transform .2s ease, box-shadow .2s ease; }
.gd-isle:hover { transform: translateY(-3px); box-shadow: 0 6px 0 var(--gd-line), 0 22px 40px var(--gd-shadow-soft); }
.gd-isle--left { margin-right: auto; }
.gd-isle--right { margin-left: auto; }
.gd-isle--done { background: linear-gradient(180deg, #FFFDF4, #FCF3D7);
  box-shadow: 0 3px 0 #E3C86B, 0 16px 30px rgba(180, 140, 30, .16); }
.gd-isle--done:hover { box-shadow: 0 6px 0 #E3C86B, 0 22px 40px rgba(180, 140, 30, .2); }

/* #29 : île 100% verrouillée — pas de rangée de nœuds, un seul badge central */
.gd-isle--sealed { opacity: .88; }
.gd-isle--sealed .gd-isle__img, .gd-isle--sealed .gd-isle__fallback { filter: grayscale(.55) drop-shadow(0 8px 10px rgba(0,0,0,.18)); }
.gd-isle__lockmsg { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 10px;
  padding: 9px 12px; border-radius: 99px; background: var(--gd-lagoon); border: 1.5px dashed var(--gd-line);
  color: var(--gd-ink-mid); font-family: var(--gd-font); font-weight: 700; font-size: .8rem; text-align: center; }

/* grid-template-rows:100% rend la piste DÉFINIE : sans elle, la rangée implicite
   s'ajustait à l'image (max-height:100% inopérant) et l'art 448×448 rendait
   160×160 dans un cadre de 126px, recouvrant le titre de chaque île. */
.gd-isle__art { position: relative; width: 120px; height: 94px; margin: -36px auto 2px; display: grid; grid-template-rows: 100%; place-items: center; }
.gd-isle__img { max-width: 100%; max-height: 100%; object-fit: contain; filter: drop-shadow(0 8px 10px rgba(23,74,92,.28)); }
.gd-isle__fallback { display: none; font-size: 4rem; line-height: 1; filter: drop-shadow(0 6px 8px rgba(0,0,0,.2)); }
.gd-isle__art--fb .gd-isle__fallback { display: block; }
.gd-isle__flag { position: absolute; top: -4px; right: 12px; font-size: 1.5rem; transform-origin: bottom left; animation: gd-wave 2.4s ease-in-out infinite; }
@keyframes gd-wave { 0%,100% { transform: rotate(-6deg); } 50% { transform: rotate(9deg); } }

.gd-isle__plate { text-align: center; }
.gd-isle__name { display: block; font-family: var(--gd-font); font-weight: 800; color: var(--gd-ink); font-size: 1rem; }
.gd-isle__meta { display: inline-block; font-size: .74rem; font-weight: 700; margin-top: 3px;
  /* badge auto-porté : fond ET encre verrouillés — les skins posaient leurs
     encres claires (pensées pour plaques sombres) sur cette pastille claire. */
  color: var(--gd-ink-mid) !important;
  background: var(--gd-lagoon) !important;
  border-radius: 8px; padding: 2px 9px; font-family: var(--gd-font); }
.gd-isle--done .gd-isle__meta { color: #8A6B10 !important; background: #FBEEBF !important; }

/* ---------- Chemin d'escales en LOSANGES (maquette : iso-diamond) ----------
   Chaque nœud = carré tourné à 45° posé (ombre dure), reliés en pointillés.
   .gd-step (wrapper) porte la pastille « TU ES ICI » sous le losange actif. */
.gd-isle__nodes { display: flex; align-items: center; gap: 30px;
  /* centré, mais « safe » : si la rangée déborde (scroll), on n'ampute pas le début */
  justify-content: flex-start; justify-content: safe center;
  margin-top: 12px; padding: 14px 12px 12px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.gd-isle__nodes::-webkit-scrollbar { display: none; }
.gd-isle__nodes:has(.gd-step--here) { padding-bottom: 34px; }
.gd-step { position: relative; flex-shrink: 0; display: grid; place-items: center; }

/* Évolution du perroquet : le personnage de l'apprenant flotte au-dessus du nœud
   « Vous êtes ici » et avance d'île en île (son costume évolue avec les modules). */
.gd-avatar-here {
  position: absolute; left: 50%; bottom: calc(100% + 2px);
  width: 62px; height: 62px; object-fit: contain; pointer-events: none; z-index: 4;
  filter: drop-shadow(0 8px 12px rgba(0, 0, 0, .35));
  animation: gdAvatarBob 2.4s ease-in-out infinite;
}
@keyframes gdAvatarBob {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-7px); }
}
@media (prefers-reduced-motion: reduce) { .gd-avatar-here { animation: none; transform: translateX(-50%); } }
.gd-isle__nodes:has(.gd-step--here) { padding-top: 62px; }
/* segment pointillé qui relie chaque losange au précédent — il file SOUS les
   losanges opaques (z-index 0 < 1) : la route semble continue, comme la maquette */
.gd-step + .gd-step::before { content: ''; position: absolute; right: calc(100% - 10px); top: 50%; width: 50px;
  border-top: 3px dotted var(--gd-line); transform: translateY(-50%); z-index: 0; }
.gd-dot { position: relative; z-index: 1; width: 44px; height: 44px; min-width: 44px; border: 2.5px solid var(--gd-line); cursor: pointer;
  color: var(--gd-ink-mid); background: var(--gd-card); border-radius: 10px;
  transform: rotate(45deg); display: grid; place-items: center;
  font-family: var(--gd-font); font-size: .95rem; font-weight: 800; padding: 0;
  box-shadow: 3px 3px 0 var(--gd-line); transition: transform .12s ease, box-shadow .12s ease; }
.gd-dot:hover { transform: translateY(-2px) rotate(45deg) scale(1.06); }
.gd-dot:active { transform: translateY(2px) rotate(45deg); box-shadow: 1px 1px 0 var(--gd-line); }
.gd-dot__emoji { pointer-events: none; transform: rotate(-45deg); display: block; line-height: 1; }
/* ✓ terminé = OR */
.gd-dot--done { background: linear-gradient(135deg, #FFE9A8, var(--gd-gold)); border: none; color: #7A5E0E;
  box-shadow: 3px 3px 0 var(--gd-gold-dark); }
.gd-dot--done:active { box-shadow: 1px 1px 0 var(--gd-gold-dark); }
/* ★ actif = TEAL, plus grand, halo doux */
.gd-dot--current { width: 52px; height: 52px; min-width: 52px; border: none; border-radius: 12px;
  background: linear-gradient(135deg, #2BC5BB, var(--gd-teal-dark)); color: #fff; font-size: 1.3rem;
  box-shadow: 3px 3px 0 var(--gd-teal-dark), 0 0 0 0 rgba(31, 169, 160, .45);
  animation: gd-dot-bounce 1.7s ease-in-out infinite; }
@keyframes gd-dot-bounce {
  0%, 100% { transform: translateY(0) rotate(45deg); box-shadow: 3px 3px 0 var(--gd-teal-dark), 0 0 0 0 rgba(31,169,160,.4); }
  50%      { transform: translateY(-4px) rotate(45deg); box-shadow: 3px 3px 0 var(--gd-teal-dark), 0 0 0 9px rgba(31,169,160,0); }
}
@media (prefers-reduced-motion: reduce) { .gd-dot--current { animation: none; } }
/* #2/#31 : chapitre VERROUILLÉ (après le ★) — losange éteint, cadenas, non cliquable */
.gd-dot--locked { width: 40px; height: 40px; min-width: 40px; background: #D5E2E9; border: none; color: var(--gd-muted);
  box-shadow: 3px 3px 0 #B9CFDA; opacity: .95; cursor: default; font-size: .85rem; }
.gd-dot--locked:hover { transform: rotate(45deg); }
.gd-dot--locked:active { transform: rotate(45deg); box-shadow: 3px 3px 0 #B9CFDA; }
/* #30 : pastille encre « TU ES ICI » sous le losange ★ (hors du bouton tourné) */
.gd-dot__here { position: absolute; top: calc(100% + 10px); left: 50%; transform: translateX(-50%);
  font-family: var(--gd-font); font-size: .58rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  color: #fff; background: var(--gd-ink-fixed); border: none; border-radius: 99px;
  padding: 3px 10px; white-space: nowrap; pointer-events: none; box-shadow: 0 2px 0 rgba(10, 32, 43, .6); }

/* badge "examen / certificat" en bas de carte */
.gd-finish { margin: 10px auto 0; max-width: 420px; text-align: center;
  background: linear-gradient(180deg, #FFE9A8, var(--gd-gold));
  border: none; border-radius: 20px; padding: 18px; box-shadow: 0 3px 0 var(--gd-gold-dark), 0 16px 30px rgba(200, 160, 20, .28); color: #5C4708; }
.gd-finish h3 { margin: 0 0 6px; font-family: var(--gd-font); color: #5C4708; }
/* variante « examen pas encore débloqué » : carte blanche posée */
.gd-finish--pending { background: var(--gd-card); box-shadow: 0 3px 0 var(--gd-line); color: var(--gd-ink-soft); }
.gd-finish--pending p { color: var(--gd-ink-soft); }

/* ---------- Barre « Reprendre » en bas de carte (maquette iso-resume) ---------- */
.gd-resume { display: flex; align-items: center; gap: 12px; margin: 6px 0 14px;
  background: var(--gd-card); border-radius: 16px; padding: 12px 16px;
  box-shadow: 0 3px 0 var(--gd-line), 0 8px 22px var(--gd-shadow-soft);
  position: relative; z-index: 30; flex-wrap: wrap; }
.gd-resume__icon { width: 38px; height: 38px; border-radius: 12px; background: var(--gd-lagoon); flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; font-size: 19px; }
.gd-resume__text { flex: 1; min-width: 170px; margin: 0; font-size: .84rem; font-weight: 700; color: var(--gd-ink-soft); }
.gd-resume__text b, .gd-resume__text strong { color: var(--gd-ink); }
.gd-resume .gd-btn { padding: 9px 16px; font-size: .86rem; flex-shrink: 0; }
.gd-resume--risk { box-shadow: 0 3px 0 var(--gd-gold-dark), 0 8px 22px rgba(200, 160, 20, .25); }
.gd-resume--risk .gd-resume__icon { background: #FBEEBF; }
/* desktop : la barre reste posée en bas de l'écran tant que la carte défile */
@media (min-width: 769px) {
  .gd-resume { position: sticky; bottom: 14px; }
}

/* #35 : sélecteur de cours en chips horizontales scrollables (l'active en encre pleine) */
.gd-courses { display: flex; align-items: center; gap: 7px; margin: 0 0 14px; overflow-x: auto;
  -webkit-overflow-scrolling: touch; scrollbar-width: none; padding: 2px; }
.gd-courses::-webkit-scrollbar { display: none; }
.gd-chip { flex-shrink: 0; border: none; background: var(--gd-card); color: var(--gd-muted);
  border-radius: 10px; padding: 8px 14px; font-family: var(--gd-font); font-size: .8rem; font-weight: 700; cursor: pointer;
  box-shadow: 0 2px 0 var(--gd-line); transition: transform .12s ease, color .12s ease; }
.gd-chip:hover { transform: translateY(-1px); color: var(--gd-ink); }
.gd-chip--active { background: var(--gd-ink-fixed); color: #fff; font-weight: 800; box-shadow: 0 2px 0 var(--gd-ink-fixed-dark); }
.gd-chip--active:hover { color: #fff; }
.gd-chip:focus-visible { outline: 2px solid var(--gd-gold); outline-offset: 1px; }

/* #27 : navire + sélecteur de cours fusionnés sur UNE ligne flex */
.gd-maphead { display: flex; align-items: center; gap: 8px; margin: 0 0 12px; min-width: 0; }
.gd-maphead .gd-shipid { flex: 1 1 auto; min-width: 0; width: auto; margin: 0; }
.gd-maphead .gd-shipid__txt { min-width: 0; }
.gd-maphead .gd-shipid__txt b { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gd-maphead .gd-courses { flex: 0 1 auto; max-width: 54%; margin: 0; }
@media (max-width: 560px) { .gd-maphead .gd-shipid__edit { display: none; } }

/* #4 : petit menu proposé sur un chapitre terminé (Revoir / Étape en cours) */
.gd-nodemenu { position: fixed; z-index: 9300; background: var(--gd-card); border: none; border-radius: 14px;
  box-shadow: 0 3px 0 var(--gd-line), 0 14px 34px rgba(0,0,0,.24); padding: 6px; display: flex; flex-direction: column; gap: 4px; min-width: 210px;
  animation: gd-pop-in .18s ease; }
.gd-nodemenu__item { text-align: left; border: none; background: var(--gd-lagoon); color: var(--gd-ink); font-family: var(--gd-font); font-weight: 700;
  font-size: .9rem; border-radius: 9px; padding: 11px 13px; cursor: pointer; }
.gd-nodemenu__item:hover { background: var(--gd-teal-soft); }
.gd-nodemenu__item--primary { background: var(--gd-teal); color: #fff; }
.gd-nodemenu__item--primary:hover { background: var(--gd-teal-dark); }

/* Bandeau d'identité du navire (cosmétiques rendus) */
.gd-shipid { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; cursor: pointer;
  background: var(--gd-card); border: none; border-radius: 14px; padding: 8px 12px; margin: 0 0 14px; font: inherit;
  box-shadow: 0 2px 0 var(--gd-line); transition: transform .12s ease; }
.gd-shipid:hover { transform: translateY(-1px); }
.gd-shipid__flag { width: 36px; height: 36px; border-radius: 9px; display: grid; place-items: center; font-size: 1.2rem; color: #fff; flex-shrink: 0; box-shadow: inset 0 0 0 2px rgba(255,255,255,.25); }
.gd-shipid__txt { flex: 1; line-height: 1.15; }
.gd-shipid__txt b { font-family: var(--gd-font); color: var(--gd-ink); font-size: .95rem; }
.gd-shipid__txt small { display: block; color: var(--gd-muted); font-size: .72rem; font-weight: 700; }
.gd-shipid__edit { opacity: .6; }

/* Bouton "précédent" + hint dans le lecteur */
.gd-player__back { position: absolute; left: 66px; bottom: 16px; width: 44px; height: 44px; border-radius: 12px;
  border: none; background: var(--gd-card); color: var(--gd-ink); font-size: 1rem; cursor: pointer; box-shadow: 0 3px 0 var(--gd-line); }
.gd-player__back:disabled { opacity: .35; cursor: not-allowed; box-shadow: none; }
.gd-player__hint { position: absolute; right: 16px; bottom: 22px; font-size: .76rem; color: var(--gd-ink-soft); max-width: 36%; text-align: right; }

/* Mini spinner (bouton Continuer pendant l'enregistrement) */
.gd-spin { display: inline-block; width: 18px; height: 18px; border: 3px solid rgba(255,255,255,.4); border-top-color: #fff; border-radius: 50%; animation: gd-spin .7s linear infinite; vertical-align: middle; }
@keyframes gd-spin { to { transform: rotate(360deg); } }

@media (max-width: 560px) {
  .gd-isle { width: 92%; }
  .gd-player__back { left: 56px; width: 40px; height: 40px; }
  .gd-player__hint { display: none; }
  /* chemin de losanges scrollable horizontal, cibles conservées */
  .gd-isle__nodes { gap: 26px; padding: 14px 12px 12px; }
  .gd-step + .gd-step::before { width: 46px; }
  .gd-dot { width: 42px; height: 42px; min-width: 42px; }
  .gd-dot--current { width: 50px; height: 50px; min-width: 50px; }
}
/* #28 : coupe les animations guidées (pop mascotte, pulse ★, drapeau, spinner) */
@media (prefers-reduced-motion: reduce) {
  .gd-isle__flag, .gd-dot--current, .merlin-fab, .gd-pop, .merlin-typing span,
  .gd-worldmap__route, .gd-quest__claim, .merlin-panel, .gd-stage-inner { animation: none; }
  .gd-dot, .gd-btn, .gd-player__close, .merlin-fab__hide { transition: none; }
  html { scroll-behavior: auto; }
}

/* ===================== Merlin : icônes header, saisie animée, bouton inline ===================== */
/* min-width 130px : le bloc titre garde sa place ; le groupe d'icônes (cibles
   44px imposées par quality.css) bascule ENTIER sous le titre, aligné à droite. */
.merlin-panel__head > div { flex: 1; min-width: 130px; }
.merlin-panel__icons { display: flex; align-items: center; gap: 4px; margin-left: auto; justify-content: flex-end; flex-wrap: wrap; }
.merlin-panel__icon { background: rgba(255,255,255,.16); border: none; color: #fff; width: 36px; height: 36px; border-radius: 50%; cursor: pointer; font-size: .85rem; flex-shrink: 0; padding: 0; }
.merlin-panel__icon:hover { background: rgba(255,255,255,.3); }
.merlin-typing { display: inline-flex; align-items: center; gap: 3px; }
.merlin-typing span { width: 7px; height: 7px; border-radius: 50%; background: var(--gd-muted); animation: merlin-blink 1.2s infinite both; }
.merlin-typing span:nth-child(2) { animation-delay: .2s; }
.merlin-typing span:nth-child(3) { animation-delay: .4s; }
@keyframes merlin-blink { 0%, 80%, 100% { opacity: .3; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }
.gd-ask-merlin { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 12px; background: var(--gd-lagoon); border: none; color: var(--gd-ink-mid); border-radius: 99px; padding: 7px 13px; font-family: var(--gd-font); font-weight: 700; font-size: .82rem; cursor: pointer; box-shadow: 0 2px 0 var(--gd-line); }
.gd-ask-merlin:hover { color: var(--gd-teal-dark); }

/* ===================== #3 Quêtes récompensées : bouton Réclamer ===================== */
.gd-quest__claim { flex-shrink: 0; border: none; border-radius: 99px; padding: 8px 14px; font-family: var(--gd-font); font-weight: 800;
  font-size: .8rem; cursor: pointer; color: #174A5C; background: var(--gd-gold);
  box-shadow: 0 3px 0 var(--gd-gold-dark); animation: gd-claim-pulse 1.6s ease-in-out infinite; }
.gd-quest__claim:hover { filter: brightness(1.04); }
.gd-quest__claim:active { transform: translateY(2px); box-shadow: 0 1px 0 var(--gd-gold-dark); }
.gd-quest__claim:disabled { opacity: .6; cursor: default; animation: none; box-shadow: none; }
.gd-quest__check--claimed { color: var(--gd-gold-text); }
.gd-quest--claimed { border-left-color: var(--gd-gold); background: #FFFDF3; }
@keyframes gd-claim-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } }

/* ===================== #31 Certificat : masquer les actions à l'impression ===================== */
@media print {
  .gd-noprint { display: none !important; }
  .gd-print-note { display: none !important; }
  .gd-cert { box-shadow: none !important; }
}

/* ===================== #26 / #28 / #13 Catalogue de badges (page profil) ===================== */
.lms-badges { display: flex; flex-direction: column; gap: 18px; }
.lms-badges__family-title { font-family: var(--gd-font); font-weight: 800; color: var(--gd-ink); font-size: .92rem; margin-bottom: 8px; }
.lms-badges__row { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 10px; }
.lms-badge { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center;
  border: 1px solid var(--gd-line-soft); border-radius: 14px; padding: 14px 8px 10px; background: var(--gd-card); min-height: 110px; }
.lms-badge--earned { border-color: var(--medal, var(--gd-gold)); background: #FFFDF6;
  box-shadow: 0 2px 8px rgba(242, 201, 76, .22); }
.lms-badge--locked { filter: grayscale(1); opacity: .62; }
.lms-badge__medal { position: absolute; top: 6px; right: 6px; width: 18px; height: 18px; border-radius: 50%;
  color: #fff; font-size: .62rem; font-weight: 900; line-height: 18px; box-shadow: 0 0 0 1px rgba(0,0,0,.08); }
.lms-badge__icon { font-size: 1.8rem; line-height: 1; }
.lms-badge__name { font-family: var(--gd-font); font-weight: 800; color: var(--gd-ink); font-size: .8rem; margin-top: 6px; }
.lms-badge__crit { color: var(--gd-muted); font-size: .68rem; margin-top: 3px; line-height: 1.25; }
.lms-badge__share { margin-top: 8px; border: 1px solid var(--gd-gold); background: #FFF7E6; color: #174A5C;
  border-radius: 99px; padding: 4px 10px; font-size: .68rem; font-weight: 800; cursor: pointer; }
.lms-badge__share:hover { background: var(--gd-gold); color: #174A5C; }
[data-theme="dark"] .lms-badge--earned { background: #2E2A18; }
[data-theme="dark"] .lms-badge__share { background: #2E2A18; color: var(--gd-gold); }
@media (max-width: 560px) {
  .lms-badges__row { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); }
}

/* ===================== #9 Aperçu live de la cabine ===================== */
.gd-cabprev { display: flex; align-items: center; gap: 12px; background: var(--gd-lagoon);
  border: none; border-radius: 14px; padding: 12px 14px; margin: 0 0 16px; box-shadow: 0 2px 0 var(--gd-line); }
.gd-cabprev__flag { width: 46px; height: 46px; border-radius: 11px; display: grid; place-items: center; font-size: 1.5rem;
  color: #fff; flex-shrink: 0; box-shadow: inset 0 0 0 2px rgba(255,255,255,.3); }
.gd-cabprev__txt { flex: 1; line-height: 1.2; min-width: 0; }
.gd-cabprev__txt b { font-family: var(--gd-font); color: var(--gd-ink); font-size: 1rem; }
.gd-cabprev__txt small { display: block; color: var(--gd-muted); font-weight: 700; font-size: .78rem; }
.gd-cabprev__tag { font-size: .66rem; font-weight: 800; color: var(--gd-gold-text); background: var(--gd-card); border: 1px solid var(--gd-gold);
  border-radius: 99px; padding: 3px 8px; text-transform: uppercase; letter-spacing: .04em; flex-shrink: 0; }

/* ===================== #32 : desktop ≥1024px — carte élargie, vrai serpentin ===================== */
@media (min-width: 1024px) {
  .gd-wrap--map { max-width: 980px; }
  .gd-wrap--map .gd-isle { max-width: 560px; width: 60%; }
  .gd-wrap--map .gd-isle--left { margin-left: 2%; }
  .gd-wrap--map .gd-isle--right { margin-right: 2%; }
  .gd-wrap--map .gd-isle__art { width: 160px; height: 126px; margin-top: -46px; }
  .gd-wrap--map .gd-isle__fallback { font-size: 5.2rem; }
  .gd-wrap--map .gd-worldmap { padding: 22px 18px 30px; }
  .gd-maphero { height: 320px; }
}

/* ===================== #96 : mini-skeleton de chargement (shimmer) ===================== */
.gd-skeleton { display: flex; flex-direction: column; gap: 10px; max-width: 420px; margin: 0 auto; padding: 48px 16px 40px; }
.gd-skeleton__bar { height: 14px; border-radius: 8px;
  background: linear-gradient(90deg, var(--gd-line-soft) 25%, var(--gd-lagoon) 42%, var(--gd-line-soft) 58%);
  background-size: 400% 100%; animation: gd-shimmer 1.25s ease-in-out infinite; }
.gd-skeleton__bar:nth-child(2) { width: 84%; }
.gd-skeleton__bar:nth-child(3) { width: 62%; }
@keyframes gd-shimmer { from { background-position: 100% 0; } to { background-position: 0% 0; } }
.gd-skeleton small { color: var(--gd-muted); font-size: .8rem; text-align: center; margin-top: 2px; }

/* ===================== #37 : « +XP » qui s'envole du bouton vers la topbar ===================== */
.gd-flyxp { position: fixed; z-index: 9700; pointer-events: none; opacity: 0;
  background: var(--gd-gold); color: #174A5C; font-family: var(--gd-font); font-weight: 800; font-size: .85rem;
  padding: 4px 10px; border-radius: 99px; box-shadow: 0 6px 16px rgba(212, 169, 40, .45);
  transform: translate(-50%, -50%);
  animation: gd-flyxp .9s cubic-bezier(.3,.7,.3,1) forwards; }
@keyframes gd-flyxp {
  0%   { opacity: 0; transform: translate(-50%, -50%) scale(.6); }
  18%  { opacity: 1; transform: translate(-50%, -50%) scale(1.12); }
  100% { opacity: 0; transform: translate(calc(-50% + var(--fx, 0px)), calc(-50% + var(--fy, -120px))) scale(.55); }
}

/* ===================== #39 : infobulle custom des nœuds (hover ≥600 ms / appui long) ===================== */
.gd-nodetip { position: fixed; z-index: 9300; max-width: 240px; background: var(--gd-ink-fixed); color: #fff;
  font-size: .78rem; font-weight: 700; padding: 6px 10px; border-radius: 8px;
  box-shadow: 0 8px 20px rgba(0,0,0,.3); pointer-events: none; animation: gd-fade .15s ease; }

/* ===================== #40 : « ⭐ » flottant → retour au nœud courant ===================== */
.gd-scrollstar { position: fixed; left: 16px; bottom: 20px; z-index: 8000; width: 44px; height: 44px;
  border-radius: 12px; border: none; background: var(--gd-teal); color: #fff;
  font-size: 1.05rem; line-height: 1; cursor: pointer; padding: 0;
  box-shadow: 0 3px 0 var(--gd-teal-dark), 0 8px 20px rgba(31, 169, 160, .4); display: none; place-items: center; }
.gd-scrollstar--on { display: grid; animation: gd-pop-in .25s ease; }
/* ≤768px : la pastille « Signaler un bug » (bug-reporter.css) occupe le même coin
   bas-gauche (left:14 bottom:14, 42px) — l'étoile passe au-dessus d'elle. */
@media (max-width: 768px) {
  .gd-scrollstar { bottom: 68px; }
}
/* masqué sous le lecteur plein écran (même logique que quality.css pour les autres flottants,
   quality.css n'étant pas modifiable ici) */
body:has(.gd-player) .gd-scrollstar { display: none !important; }

/* ===================== #36 : coffre des pouvoirs — « + N autres capacités… » ===================== */
.gd-caps__morebtn { display: block; margin: 12px auto 0; border: 1.5px dashed var(--gd-gold-dark); background: #FFFDF3;
  color: var(--gd-gold-text); border-radius: 99px; padding: 9px 16px; font-family: var(--gd-font); font-size: .82rem; font-weight: 800; cursor: pointer; }
.gd-caps__morebtn:hover { background: #FFF7DD; }
[data-theme="dark"] .gd-caps__morebtn { background: #2E2A18; }
[data-theme="dark"] .gd-caps__morebtn:hover { background: #3A3520; }

/* ===================== #46 : micro-transition de slide à chaque next/prev ===================== */
@keyframes gd-slide-fwd  { from { opacity: 0; transform: translateX(12px);  } to { opacity: 1; transform: none; } }
@keyframes gd-slide-back { from { opacity: 0; transform: translateX(-12px); } to { opacity: 1; transform: none; } }
.gd-stage--fwd  { animation: gd-slide-fwd .28s ease; }
.gd-stage--back { animation: gd-slide-back .28s ease; }

/* ===================== #51 : chips de démarrage Merlin (1er ouvert de la session) ===================== */
.merlin-chips { display: flex; gap: 6px; flex-wrap: wrap; padding: 8px 10px 0; background: var(--gd-card);
  border-top: 1px solid var(--gd-line-soft); flex-shrink: 0; }
.merlin-chip { border: none; background: var(--gd-lagoon); color: var(--gd-ink-mid); border-radius: 99px;
  padding: 6px 11px; font-family: var(--gd-font); font-size: .78rem; font-weight: 700; cursor: pointer; box-shadow: 0 2px 0 var(--gd-line); }
.merlin-chip:hover { color: var(--gd-teal-dark); }

/* ===================== #52 : bulles bot — étiquette « 🦜 Merlin » + bouton copier ===================== */
.merlin-msg__meta { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 4px; }
.merlin-msg__tag { font-size: .66rem; font-weight: 800; color: var(--gd-muted); letter-spacing: .02em; }
.merlin-msg__copy { border: none; background: transparent; cursor: pointer; font-size: .82rem; line-height: 1;
  opacity: .55; padding: 0 2px; }
.merlin-msg__copy:hover { opacity: 1; }

/* Reduced motion pour les nouveautés (#37/#38/#39/#40/#46/#96) — placé APRÈS
   les déclarations d'animation ci-dessus pour l'emporter (même spécificité). */
@media (prefers-reduced-motion: reduce) {
  .gd-stage--fwd, .gd-stage--back, .gd-flyxp, .gd-skeleton__bar,
  .gd-scrollstar--on, .gd-nodetip, .gd-worldmap__route, .gd-dot--current { animation: none; }
}

/* ===================== MODE SOMBRE — compléments =====================
   L'essentiel du sombre vient du REMAPPAGE des tokens en tête de fichier
   (lagon nuit #0F2430, cartes #16323F, encre claire). Ici : uniquement ce
   que les variables ne couvrent pas (ombres, dégradés, badges or). */
[data-theme="dark"] .gd-topbar { box-shadow: 0 6px 14px -8px rgba(0, 0, 0, .6); }
[data-theme="dark"] .gd-maphero { box-shadow: 0 14px 34px rgba(0, 0, 0, .5); }
[data-theme="dark"] .gd-maphero__title { background: rgba(22, 50, 63, .94); }
[data-theme="dark"] .gd-maphero__title h1 { color: #E4F2F8; }
[data-theme="dark"] .gd-maphero__title p { color: #9FBACC; }
[data-theme="dark"] .gd-maphero__locked { background: rgba(22, 50, 63, .9); color: #9FBACC; }
[data-theme="dark"] .gd-isle--done { background: linear-gradient(180deg, #2C2A16, #262112);
  box-shadow: 0 3px 0 #6B5410, 0 16px 30px rgba(0, 0, 0, .45); }
[data-theme="dark"] .gd-isle--done:hover { box-shadow: 0 6px 0 #6B5410, 0 22px 40px rgba(0, 0, 0, .5); }
[data-theme="dark"] .gd-isle--done .gd-isle__meta { color: #E7C25C !important; background: #3A3218 !important; }
[data-theme="dark"] .gd-dot--locked { background: #22394A; color: #63808F; box-shadow: 3px 3px 0 #17262F; }
[data-theme="dark"] .gd-dot--locked:active { box-shadow: 3px 3px 0 #17262F; }
[data-theme="dark"] .gd-dot--done { color: #4A3B06; }
[data-theme="dark"] .gd-dot__here { box-shadow: 0 2px 0 rgba(0, 0, 0, .55); }
[data-theme="dark"] .gd-finish { box-shadow: 0 3px 0 #8A6E14, 0 16px 30px rgba(0, 0, 0, .45); }
[data-theme="dark"] .gd-progress { background: rgba(255, 255, 255, .1); }
[data-theme="dark"] .gd-player__foot { box-shadow: 0 -8px 16px -12px rgba(0, 0, 0, .7); }
[data-theme="dark"] .gd-quest--claimed { background: #2E2A18; }
[data-theme="dark"] .gd-hero p { color: var(--gd-ink-soft); }
[data-theme="dark"] .gd-sandbox__out { color: var(--gd-ink); }

/* ===================== SKIN PAR DÉFAUT (classic) = ARCHIPEL =====================
   L'archipel est le style PAR DÉFAUT du mode aventure : le skin `classic`
   (défaut de l'app, assets/css/skins/classic.css) re-peignait le mode guidé
   en bleu corporate à spécificité (0,2,1). Ce bloc — chargé APRÈS le skin —
   ré-affirme l'archipel à spécificité égale ou supérieure, UNIQUEMENT pour
   `classic` : les autres skins gardent leur identité. */
html[data-skin="classic"] .gd-wrap { color: var(--gd-ink); }
html[data-skin="classic"] .gd-topbar { border: none; box-shadow: 0 6px 14px -8px rgba(23, 74, 92, .28); }
html[data-skin="classic"][data-theme="dark"] .gd-topbar { background: var(--gd-lagoon) !important; color: var(--gd-ink) !important;
  border: none; box-shadow: 0 6px 14px -8px rgba(0, 0, 0, .6); }
html[data-skin="classic"] .gd-isle__name { color: var(--gd-ink); font-weight: 800; }
html[data-skin="classic"] .gd-dot { background: var(--gd-card); color: var(--gd-ink-mid); box-shadow: 3px 3px 0 var(--gd-line); }
html[data-skin="classic"] .gd-dot--done { background: linear-gradient(135deg, #FFE9A8, var(--gd-gold)); color: #7A5E0E; box-shadow: 3px 3px 0 var(--gd-gold-dark); }
html[data-skin="classic"][data-theme="dark"] .gd-dot--done { color: #4A3B06; }
html[data-skin="classic"] .gd-dot--current { background: linear-gradient(135deg, #2BC5BB, var(--gd-teal-dark)); color: #fff;
  box-shadow: 3px 3px 0 var(--gd-teal-dark), 0 0 0 0 rgba(31, 169, 160, .45); }
html[data-skin="classic"] .gd-dot--locked { background: #D5E2E9; color: var(--gd-muted); box-shadow: 3px 3px 0 #B9CFDA; }
html[data-skin="classic"][data-theme="dark"] .gd-dot--locked { background: #22394A; color: #63808F; box-shadow: 3px 3px 0 #17262F; }
html[data-skin="classic"] .gd-shipid { background: var(--gd-card); border: none; border-radius: 14px; box-shadow: 0 2px 0 var(--gd-line); }
html[data-skin="classic"] .gd-shipid__txt b { color: var(--gd-ink); }
html[data-skin="classic"] .gd-player,
html[data-skin="classic"][data-theme="dark"] .gd-player { background: var(--gd-lagoon); }
html[data-skin="classic"] .gd-progress,
html[data-skin="classic"][data-theme="dark"] .gd-progress { background: rgba(255, 255, 255, .75); }
html[data-skin="classic"][data-theme="dark"] .gd-progress { background: rgba(255, 255, 255, .1); }
html[data-skin="classic"] .gd-player__top,
html[data-skin="classic"] .gd-player__foot { background: var(--gd-lagoon); border: none;
  backdrop-filter: none; -webkit-backdrop-filter: none; }
html[data-skin="classic"] .gd-player__top { box-shadow: none; }
html[data-skin="classic"] .gd-player__foot { box-shadow: 0 -8px 16px -12px rgba(23, 74, 92, .35); }
html[data-skin="classic"][data-theme="dark"] .gd-player__foot { box-shadow: 0 -8px 16px -12px rgba(0, 0, 0, .7); }
html[data-skin="classic"] .gd-player__close { border-radius: 12px !important; }
html[data-skin="classic"] .gd-player__back { background: var(--gd-card); border: none; color: var(--gd-ink); border-radius: 12px; }
html[data-skin="classic"] .gd-player__close:hover { transform: translateY(-1px); color: var(--gd-ink); }
html[data-skin="classic"] .gd-player__back:hover { border: none; color: var(--gd-teal-dark); }
html[data-skin="classic"] .gd-player__count { color: var(--gd-ink-mid); }
html[data-skin="classic"] .gd-player__hint { color: var(--gd-ink-soft); }
html[data-skin="classic"] .gd-btn { border-radius: 12px; font-weight: 800; }
html[data-skin="classic"] .gd-btn--gold { background: var(--gd-gold); color: #174A5C; border: none; box-shadow: 0 4px 0 var(--gd-gold-dark); }
html[data-skin="classic"] .gd-btn--gold:hover { background: var(--gd-gold); border: none; transform: translateY(-1px); }
html[data-skin="classic"] .gd-btn--gold:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--gd-gold-dark); }
html[data-skin="classic"] .gd-btn--ghost { background: var(--gd-card); color: var(--gd-ink-mid); border: none; box-shadow: 0 3px 0 var(--gd-line); }
html[data-skin="classic"] .gd-btn--ghost:hover { border: none; color: var(--gd-ink); }
html[data-skin="classic"] .gd-player .block-quiz { background: transparent; border: none; border-radius: 0; box-shadow: none; }
html[data-skin="classic"] .merlin-fab { background: var(--gd-ink-fixed); border: 3px solid var(--gd-gold); box-shadow: 0 6px 18px rgba(23,74,92,.35); }
html[data-skin="classic"] .merlin-fab:hover { background: var(--gd-ink-fixed-dark); }
html[data-skin="classic"] .merlin-panel { background: var(--gd-card); border: none; border-radius: 18px; box-shadow: 0 24px 60px rgba(0,0,0,.32); }
html[data-skin="classic"] .merlin-panel__head,
html[data-skin="classic"][data-theme="dark"] .merlin-panel__head { background: var(--gd-ink-fixed); color: #fff; border-bottom: none; }
html[data-skin="classic"] .merlin-msgs { background: var(--gd-lagoon); }
html[data-skin="classic"] .merlin-msg--bot { background: var(--gd-card); border: 1px solid var(--gd-line-soft); color: var(--gd-ink); }
html[data-skin="classic"] .merlin-msg--me { background: var(--gd-teal); color: #fff; }
html[data-skin="classic"] .merlin-input { background: var(--gd-card); border-color: var(--gd-line-soft); }
html[data-skin="classic"] .merlin-input textarea { background: var(--gd-card); border: 1px solid var(--gd-line); border-radius: 10px; color: var(--gd-ink); }
html[data-skin="classic"] .merlin-input textarea:focus { border-color: var(--gd-teal); box-shadow: 0 0 0 3px rgba(31, 169, 160, .18); outline: none; }
html[data-skin="classic"] .merlin-input button { background: var(--gd-gold); color: #174A5C; border-radius: 10px; }
html[data-skin="classic"] .merlin-input button:hover { background: var(--gd-gold); filter: brightness(1.05); }
@media (max-width: 560px) {
  html[data-skin="classic"] .merlin-panel { border-radius: 0; }
}

/* Quêtes du jour : DÉSACTIVÉES temporairement à la demande (06/07/2026).
   Réactivation = supprimer ce bloc. */
.gd-quests { display: none !important; }
