:root {
  color-scheme: dark;
  --ink: #eee9d7;
  --muted: #b9b29f;
  --dim: #898371;
  --gold: #c7ad71;
  --line: rgba(231, 220, 187, .17);
  --panel: rgba(25, 24, 18, .82);
  --shadow: 0 24px 80px rgba(0, 0, 0, .42);
  --radius: 22px;
  font-family: Georgia, "Times New Roman", serif;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  min-height: 100%;
  background:
    radial-gradient(circle at 50% -10%, rgba(191, 157, 91, .17), transparent 34rem),
    linear-gradient(180deg, #1c1c15 0%, #11120f 100%);
  color: var(--ink);
}

body { min-height: 100vh; }

button, a { font: inherit; }

a { color: inherit; }

.app-shell,
.scene-stage {
  min-height: 100vh;
}

.world-frame {
  min-height: 100vh;
  position: relative;
  overflow: hidden;
}

.world-frame::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: .18;
  background-image:
    linear-gradient(rgba(255,255,255,.012) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.009) 1px, transparent 1px);
  background-size: 7px 7px;
  mask-image: radial-gradient(circle at center, black 20%, transparent 90%);
}

.site-mark {
  position: fixed;
  z-index: 10;
  top: 0;
  left: 0;
  right: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem 1.25rem;
  color: rgba(238, 233, 215, .66);
  letter-spacing: .14em;
  text-transform: uppercase;
  font-size: .69rem;
  pointer-events: none;
}

.site-mark__version {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .08em;
}

.world-content { min-height: 100vh; }

.portal-scene,
.placeholder-scene {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 5rem 1.25rem 3rem;
  position: relative;
}

.portal-glow {
  position: absolute;
  width: min(68vw, 42rem);
  aspect-ratio: 1;
  border-radius: 50%;
  background:
    radial-gradient(circle, rgba(201, 170, 106, .14), rgba(201, 170, 106, .04) 42%, transparent 69%);
  filter: blur(2px);
  transform: translateY(-7%);
  pointer-events: none;
}

.portal-card,
.placeholder-card {
  position: relative;
  width: min(100%, 48rem);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background:
    linear-gradient(145deg, rgba(255,255,255,.028), transparent 36%),
    var(--panel);
  box-shadow: var(--shadow);
  padding: clamp(1.5rem, 5vw, 4rem);
  backdrop-filter: blur(18px);
}

.portal-card { text-align: center; }

.eyebrow {
  color: var(--gold);
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .18em;
  margin: 0 0 1rem;
}

h1 {
  margin: 0;
  font-size: clamp(2.25rem, 7vw, 5.6rem);
  font-weight: 400;
  line-height: .98;
  letter-spacing: -.035em;
}

.placeholder-card h1 {
  font-size: clamp(2rem, 6vw, 4.4rem);
}

.lead,
.placeholder-card > p {
  color: var(--muted);
  font-size: clamp(1rem, 2vw, 1.22rem);
  line-height: 1.75;
  max-width: 39rem;
}

.lead { margin: 1.6rem auto 0; }

.principles {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .55rem;
  margin: 2rem 0;
}

.principles span,
.migration-seal {
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: .55rem .82rem;
  color: #d8d1bd;
  font-size: .72rem;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.portal-actions,
.placeholder-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .75rem;
  margin-top: 2rem;
}

.action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 3.15rem;
  padding: .78rem 1.15rem;
  border-radius: 999px;
  text-decoration: none;
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}

.action:hover { transform: translateY(-1px); }

.action--primary {
  background: var(--ink);
  color: #191913;
  border: 1px solid var(--ink);
}

.action--secondary {
  border: 1px solid rgba(238,233,215,.42);
  background: rgba(238,233,215,.04);
}

.action--ghost {
  color: var(--muted);
  border: 1px solid transparent;
}

.quiet-note {
  max-width: 34rem;
  margin: 1.5rem auto 0;
  color: var(--dim);
  font-size: .83rem;
  line-height: 1.55;
}

.migration-seal {
  display: inline-block;
  margin-top: 1rem;
  color: var(--gold);
}

.dev-panel {
  position: fixed;
  z-index: 999;
  right: 1rem;
  bottom: 1rem;
  width: min(25rem, calc(100vw - 2rem));
  max-height: 72vh;
  overflow: auto;
  border: 1px solid rgba(224, 204, 155, .25);
  border-radius: 14px;
  padding: .85rem;
  background: rgba(10, 10, 8, .94);
  box-shadow: 0 18px 50px rgba(0,0,0,.48);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: .72rem;
}

.dev-panel__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.dev-panel__head button {
  border: 0;
  background: transparent;
  color: var(--ink);
  font-size: 1.25rem;
  cursor: pointer;
}

.dev-panel dl { margin: .8rem 0; }

.dev-panel dl div {
  display: grid;
  grid-template-columns: 6rem 1fr;
  gap: .5rem;
  padding: .3rem 0;
  border-bottom: 1px solid rgba(255,255,255,.06);
}

.dev-panel dt { color: var(--dim); }
.dev-panel dd { margin: 0; overflow-wrap: anywhere; }

.dev-button {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: .6rem;
  background: rgba(255,255,255,.04);
  color: var(--ink);
  cursor: pointer;
}

.dev-output {
  white-space: pre-wrap;
  line-height: 1.55;
  color: #cfc8b4;
}

.noscript { padding: 3rem; }

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


.dev-link {
  display: block;
  margin-top: .55rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: .6rem;
  text-align: center;
  text-decoration: none;
  color: var(--ink);
  background: rgba(255,255,255,.025);
}

.test-page { min-height: 100vh; }
.test-console {
  width: min(100% - 2rem, 62rem);
  margin: 0 auto;
  padding: 7vh 0 5rem;
}
.test-console h1 { font-size: clamp(2.2rem, 7vw, 5rem); }
.test-console .lead { margin-left: 0; }
.test-toolbar { display:flex; flex-wrap:wrap; gap:.7rem; margin:1.5rem 0 2rem; }
.test-toolbar button { cursor:pointer; }
.test-results { display:grid; gap:.55rem; }
.test-summary,
.test-row {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(18,18,14,.72);
  padding: .8rem 1rem;
}
.test-summary { display:flex; justify-content:space-between; gap:1rem; color:var(--muted); }
.test-summary strong { color:var(--ink); }
.test-row { display:grid; grid-template-columns:1.6rem 1fr auto; gap:.7rem; align-items:start; }
.test-row strong { font-weight:500; }
.test-row small { display:block; margin-top:.25rem; color:#d7a9a0; }
.test-row time { color:var(--dim); font: .68rem/1.4 ui-monospace, monospace; }
.test-status { color:var(--gold); font-weight:700; }
.test-row--fail { border-color: rgba(210,112,92,.42); }
.test-summary--fail { border-color: rgba(210,112,92,.42); }


/* =========================================================
   VNEW.0.3 — Shell commun du Livre vivant
   ========================================================= */

.book-lab-scene {
  min-height: 100vh;
  padding: 6rem clamp(1rem, 4vw, 4rem) 4rem;
}

.book-lab__intro {
  width: min(100%, 72rem);
  margin: 0 auto 2.5rem;
  text-align: center;
}

.book-lab__intro h1 {
  font-size: clamp(2.6rem, 7vw, 6rem);
}

.book-lab__intro .lead {
  max-width: 48rem;
}

.book-lab__toolbar,
.book-lab__footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .65rem;
  margin-top: 1.5rem;
}

.book-lab__mount {
  width: min(100%, 74rem);
  margin: 0 auto;
}

.book-lab__event {
  width: min(100%, 58rem);
  margin: 1rem auto 0;
  min-height: 2rem;
  color: var(--dim);
  text-align: center;
  font: .76rem/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

.living-book-shell {
  --paper: #e8dfc8;
  --paper-2: #d9ceb3;
  --paper-ink: #272319;
  --paper-muted: #6c624f;
  --paper-line: rgba(74, 62, 38, .17);
  width: 100%;
}

.living-book-closed {
  display: grid;
  place-items: center;
  min-height: 21rem;
}

/* VNEW.0.50.1 — hidden doit toujours gagner sur les layouts explicites. */
.living-book-closed[hidden],
.living-book[hidden] {
  display: none !important;
}

.living-book-closed__button {
  width: min(17rem, 76vw);
  aspect-ratio: 1.46;
  border: 1px solid rgba(225, 207, 160, .26);
  border-radius: 5px 16px 16px 5px;
  background:
    linear-gradient(90deg, rgba(255,255,255,.08), transparent 5%, transparent 93%, rgba(0,0,0,.18)),
    linear-gradient(145deg, #5a4d34, #332b1d);
  color: #efe5c9;
  box-shadow:
    -8px 9px 0 #c7b992,
    -12px 13px 0 rgba(61, 50, 31, .85),
    0 32px 70px rgba(0,0,0,.42);
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: .13em;
  font-size: .78rem;
}

.living-book {
  position: relative;
  border-radius: 7px 20px 20px 7px;
  background: #50452f;
  padding: clamp(.55rem, 1.4vw, 1rem);
  box-shadow:
    0 34px 90px rgba(0,0,0,.5),
    inset 0 0 0 1px rgba(235,220,183,.14);
}

.living-book::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 4.5rem;
  bottom: 1rem;
  width: 1px;
  background: linear-gradient(180deg, transparent, rgba(63,49,27,.2) 8%, rgba(63,49,27,.31) 50%, transparent);
  pointer-events: none;
}

.living-book__header {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: flex-start;
  padding: .75rem .9rem 1rem;
  color: #eadfc4;
}

.living-book__header h2 {
  margin: .1rem 0 0;
  font-weight: 500;
  font-size: clamp(1.3rem, 3vw, 2rem);
}

.living-book__header p:not(.living-book__eyebrow) {
  margin: .35rem 0 0;
  color: rgba(234,223,196,.65);
  font-size: .82rem;
}

.living-book__eyebrow {
  margin: 0;
  color: #cbb47a;
  text-transform: uppercase;
  letter-spacing: .16em;
  font-size: .65rem;
}

.living-book__close {
  border: 0;
  background: transparent;
  color: rgba(239,229,201,.75);
  cursor: pointer;
  padding: .45rem;
  text-decoration: underline;
  text-decoration-color: rgba(239,229,201,.25);
  text-underline-offset: .25rem;
}

.living-book__spread {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 31rem;
  overflow: hidden;
  border-radius: 3px 12px 12px 3px;
  background: var(--paper);
  color: var(--paper-ink);
}

.living-book__page {
  min-width: 0;
  padding: clamp(1.35rem, 4vw, 3rem);
  background:
    radial-gradient(circle at 20% 10%, rgba(255,255,255,.42), transparent 22rem),
    linear-gradient(90deg, rgba(91,71,39,.035), transparent 8%, transparent 92%, rgba(91,71,39,.04)),
    var(--paper);
}

.living-book__page--left {
  border-right: 1px solid rgba(74,62,38,.13);
}

.living-book__page--right {
  background-color: var(--paper-2);
}

.living-book__intro {
  margin: 0 0 2.2rem;
  color: var(--paper-muted);
  font-style: italic;
  line-height: 1.65;
  max-width: 28rem;
}

.book-priority {
  border-top: 1px solid var(--paper-line);
  padding-top: 1.5rem;
}

.book-priority__eyebrow,
.living-book__section-title {
  margin: 0 0 .65rem;
  color: #847655;
  text-transform: uppercase;
  letter-spacing: .15em;
  font-size: .64rem;
  font-weight: 700;
}

.book-priority h3 {
  margin: 0;
  font-size: clamp(1.75rem, 4vw, 3.2rem);
  line-height: 1.04;
  font-weight: 500;
  letter-spacing: -.025em;
}

.book-priority > p:not(.book-priority__eyebrow) {
  color: var(--paper-muted);
  line-height: 1.6;
  max-width: 28rem;
}

.book-text-action {
  border: 0;
  border-bottom: 1px solid currentColor;
  background: transparent;
  padding: .45rem 0 .3rem;
  color: #3c3322;
  cursor: pointer;
  text-align: left;
  font-weight: 700;
}

.book-text-action:disabled {
  opacity: .35;
  cursor: not-allowed;
}

.book-chapters,
.book-library {
  display: grid;
  gap: .35rem;
}

.book-chapter,
.book-library__item {
  width: 100%;
  display: grid;
  align-items: center;
  border: 0;
  border-bottom: 1px solid var(--paper-line);
  background: transparent;
  color: var(--paper-ink);
  cursor: pointer;
  text-align: left;
}

.book-chapter {
  grid-template-columns: 2.6rem 1fr auto;
  gap: .6rem;
  padding: .9rem 0;
}

.book-chapter:disabled,
.book-library__item:disabled {
  cursor: not-allowed;
  opacity: .43;
}

.book-chapter__numeral {
  color: #8b7c59;
  font-size: .8rem;
  letter-spacing: .08em;
}

.book-chapter__copy strong,
.book-library__item strong {
  display: block;
  font-size: .88rem;
  letter-spacing: .07em;
}

.book-chapter__copy small,
.book-library__item small {
  display: block;
  margin-top: .16rem;
  color: var(--paper-muted);
  line-height: 1.35;
}

.book-chapter__status {
  justify-self: end;
  color: #81724f;
  font-size: .66rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}

.book-chapter--active {
  background: rgba(126, 103, 55, .055);
}

.book-chapter--ready .book-chapter__status {
  color: #705b2f;
  font-weight: 700;
}

.book-chapter--acquired .book-chapter__status {
  color: #5d684a;
}

.living-book__section-title--library {
  margin-top: 2rem;
}

.book-library__item {
  grid-template-columns: 1fr auto;
  gap: .8rem;
  padding: .75rem 0;
}

.book-library__action {
  color: #776748;
  font-size: .68rem;
  text-transform: uppercase;
  letter-spacing: .07em;
}

@media (max-width: 760px) {
  .living-book::after { display: none; }

  .living-book__spread {
    grid-template-columns: 1fr;
  }

  .living-book__page--left {
    border-right: 0;
    border-bottom: 1px solid rgba(74,62,38,.13);
  }

  .book-chapter {
    grid-template-columns: 2.2rem 1fr;
  }

  .book-chapter__status {
    grid-column: 2;
    justify-self: start;
    margin-top: .12rem;
  }
}


/* =========================================================
   VNEW.0.4 — Portail natif · Choisis ton chemin
   ========================================================= */

.portal-scene--migrated {
  position: relative;
  min-height: 100vh;
  display: grid;
  place-items: center;
  overflow: hidden;
  padding: clamp(4.5rem, 8vh, 7rem) 1rem 2rem;
}

.portal-scene__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  filter: saturate(.78) brightness(.74);
}

.portal-scene__veil {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 45%, rgba(20, 20, 14, .08), rgba(10, 11, 8, .52) 62%, rgba(7, 8, 7, .78) 100%),
    linear-gradient(180deg, rgba(8, 9, 7, .26), rgba(8, 9, 7, .56));
  backdrop-filter: blur(1.4px);
}

.portal-entry {
  position: relative;
  z-index: 2;
  width: min(100%, 58rem);
  max-height: calc(100vh - 7rem);
  overflow: auto;
  padding: clamp(1.15rem, 3vw, 2.1rem);
  border: 1px solid rgba(233, 206, 137, .32);
  border-radius: 24px;
  background:
    radial-gradient(circle at 50% 0%, rgba(151, 104, 38, .11), transparent 42%),
    linear-gradient(155deg, rgba(17, 17, 13, .84), rgba(10, 12, 10, .76));
  box-shadow: 0 30px 90px rgba(0, 0, 0, .48), inset 0 0 0 1px rgba(255,255,255,.025);
  backdrop-filter: blur(15px) saturate(.92);
}

.portal-entry__header {
  max-width: 48rem;
  margin: 0 auto 1.3rem;
  padding: .25rem 1rem;
  text-align: center;
}

.portal-entry__eyebrow {
  display: block;
  margin-bottom: .55rem;
  color: #d7b96d;
  font: 800 .68rem/1.2 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: .21em;
}

.portal-entry__header h1 {
  margin: 0;
  color: #fff0c8;
  font-size: clamp(2.45rem, 6vw, 4.7rem);
  font-weight: 500;
  line-height: .98;
  letter-spacing: .035em;
}

.portal-entry__header p {
  max-width: 42rem;
  margin: .9rem auto 0;
  color: rgba(249, 237, 207, .86);
  font-size: clamp(.98rem, 1.6vw, 1.18rem);
  font-style: italic;
  line-height: 1.5;
}

.portal-entry__header small {
  display: inline-block;
  margin-top: .7rem;
  color: rgba(224, 205, 154, .46);
  font: 700 .56rem/1.2 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: .12em;
}

.portal-entry__hero {
  display: grid;
  gap: .35rem;
  max-width: 49rem;
  margin: 0 auto .8rem;
}

.portal-entry__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .55rem;
  max-width: 49rem;
  margin: 0 auto;
}

.portal-path-card {
  display: grid;
  grid-template-columns: 3rem minmax(0, 1fr);
  gap: .8rem;
  align-items: start;
  width: 100%;
  min-height: 6.4rem;
  padding: .95rem 1rem;
  border: 1px solid rgba(229, 194, 107, .22);
  border-radius: 18px;
  background: linear-gradient(150deg, rgba(255,255,255,.035), rgba(8,12,13,.42));
  color: #f7e8be;
  text-align: left;
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}

.portal-path-card:hover,
.portal-path-card:focus-visible {
  outline: none;
  transform: translateY(-2px);
  border-color: rgba(244, 207, 111, .68);
  background: linear-gradient(150deg, rgba(115,82,32,.17), rgba(9,13,20,.52));
}

.portal-path-card--hero {
  min-height: 7.9rem;
  border-color: rgba(245, 210, 118, .66);
  background: linear-gradient(145deg, rgba(129,88,31,.27), rgba(13,17,22,.58));
  box-shadow: 0 16px 42px rgba(0,0,0,.22), inset 0 0 30px rgba(235,185,75,.035);
}

.portal-path-card.is-pending {
  opacity: .68;
}

.portal-path-icon {
  display: grid;
  place-items: center;
  width: 2.85rem;
  height: 2.85rem;
  border: 1px solid rgba(238, 201, 111, .3);
  border-radius: 50%;
  color: #edc86f;
  background: radial-gradient(circle, rgba(225,174,65,.1), rgba(15,20,24,.2));
  font-size: 1.2rem;
}

.portal-path-copy {
  display: grid;
  gap: .3rem;
  min-width: 0;
}

.portal-path-copy strong {
  color: #f8e8bd;
  font-size: .94rem;
  line-height: 1.2;
  letter-spacing: .035em;
}

.portal-path-copy small {
  color: rgba(240, 235, 222, .73);
  font: 500 .78rem/1.45 ui-sans-serif, system-ui, sans-serif;
}

.portal-path-copy em {
  margin-top: .18rem;
  color: rgba(220, 195, 130, .63);
  font: 650 .65rem/1.35 ui-sans-serif, system-ui, sans-serif;
  font-style: normal;
  letter-spacing: .035em;
}

.portal-entry__resume,
.portal-entry__message,
.portal-entry__freedom {
  max-width: 42rem;
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

.portal-entry__resume {
  margin-top: .1rem;
  margin-bottom: 0;
  color: rgba(236, 222, 188, .65);
  font: 600 .68rem/1.4 ui-sans-serif, system-ui, sans-serif;
}

.portal-entry__resume strong { color: rgba(248, 224, 167, .9); }

.portal-entry__message {
  min-height: 1.2rem;
  margin-top: .7rem;
  margin-bottom: 0;
  color: #dfc77f;
  font: 650 .7rem/1.4 ui-sans-serif, system-ui, sans-serif;
}

.portal-entry__freedom {
  margin-top: .55rem;
  margin-bottom: 0;
  color: rgba(231, 221, 197, .5);
  font: 600 .64rem/1.42 ui-sans-serif, system-ui, sans-serif;
}

@media (max-width: 760px) {
  .portal-scene--migrated {
    place-items: end center;
    padding: 4rem .4rem .4rem;
  }

  .portal-entry {
    width: 100%;
    max-height: calc(100vh - 4.4rem);
    padding: 1rem .8rem max(1.2rem, env(safe-area-inset-bottom));
    border-radius: 22px 22px 16px 16px;
  }

  .portal-entry__header {
    text-align: left;
    padding: .15rem .25rem;
  }

  .portal-entry__header h1 {
    font-size: clamp(2.15rem, 10vw, 3.35rem);
  }

  .portal-entry__header p {
    font-size: .92rem;
  }

  .portal-entry__grid {
    grid-template-columns: 1fr;
  }

  .portal-path-card,
  .portal-path-card--hero {
    min-height: 0;
    grid-template-columns: 2.55rem minmax(0,1fr);
    gap: .7rem;
    padding: .82rem;
  }

  .portal-path-icon {
    width: 2.45rem;
    height: 2.45rem;
    font-size: 1rem;
  }

  .portal-entry__freedom,
  .portal-entry__message,
  .portal-entry__resume {
    text-align: left;
    margin-left: .25rem;
    margin-right: .25rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .portal-path-card { transition: none !important; }
}


/* =========================================================
   VNEW.0.5 — Jardin I · entrée + Livre vivant
   ========================================================= */

.garden1-scene {
  min-height: 100vh;
  background: #11140d;
}

.garden1-stage {
  position: relative;
  width: 100%;
  min-height: 100vh;
  overflow: hidden;
  isolation: isolate;
}

.garden1-stage__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: opacity .55s ease;
  user-select: none;
  -webkit-user-drag: none;
}

.garden1-stage__image--sleep {
  opacity: 1;
}

.garden1-stage__image--awake {
  opacity: 0;
}

.garden1-scene.is-awake .garden1-stage__image--sleep {
  opacity: 0;
}

.garden1-scene.is-awake .garden1-stage__image--awake {
  opacity: 1;
}

.garden1-stage__shade {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(8,10,6,.28), transparent 20%, transparent 70%, rgba(8,10,6,.36)),
    linear-gradient(90deg, rgba(8,10,6,.18), transparent 32%, transparent 75%, rgba(8,10,6,.12));
}

.garden1-heading {
  position: absolute;
  z-index: 3;
  top: clamp(3.2rem, 7vh, 5.5rem);
  left: 50%;
  transform: translateX(-50%);
  display: grid;
  justify-items: center;
  gap: .35rem;
  color: rgba(247,241,220,.88);
  text-align: center;
  text-shadow: 0 2px 18px rgba(0,0,0,.48);
  pointer-events: none;
}

.garden1-heading span {
  font-size: .67rem;
  letter-spacing: .22em;
  color: rgba(239,220,171,.8);
}

.garden1-heading strong {
  font-size: clamp(.78rem, 1.5vw, 1rem);
  letter-spacing: .16em;
  font-weight: 500;
}

.garden1-book-hotspot {
  position: absolute;
  z-index: 4;
  left: 13.5%;
  top: 73%;
  width: 18%;
  height: 16%;
  min-width: 7rem;
  min-height: 4.4rem;
  border: 1px solid rgba(255,239,184,.18);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(249,221,136,.12), transparent 66%);
  color: #fff1c8;
  cursor: pointer;
  opacity: .82;
  transition: opacity .2s ease, transform .2s ease, box-shadow .2s ease;
}

.garden1-book-hotspot::before {
  content: "";
  position: absolute;
  inset: 18%;
  border-radius: 50%;
  border: 1px solid rgba(255,232,165,.28);
  box-shadow: 0 0 26px rgba(247,205,106,.14);
}

.garden1-book-hotspot span {
  position: absolute;
  left: 50%;
  bottom: -1.6rem;
  transform: translateX(-50%);
  white-space: nowrap;
  font-size: .63rem;
  letter-spacing: .13em;
  text-shadow: 0 2px 12px #000;
}

.garden1-book-hotspot:hover,
.garden1-book-hotspot:focus-visible {
  opacity: 1;
  transform: scale(1.025);
  box-shadow: 0 0 38px rgba(246,210,121,.12);
}

.garden1-scene.is-awake .garden1-book-hotspot {
  opacity: 0;
  pointer-events: none;
}

.garden1-back {
  position: absolute;
  z-index: 5;
  left: 1.25rem;
  bottom: 1.15rem;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px;
  background: rgba(10,12,8,.44);
  color: rgba(249,244,226,.82);
  padding: .58rem .82rem;
  backdrop-filter: blur(8px);
  cursor: pointer;
  font-size: .72rem;
}

.garden1-whisper {
  position: absolute;
  z-index: 3;
  left: 50%;
  bottom: 1.35rem;
  transform: translateX(-50%);
  margin: 0;
  width: min(34rem, calc(100% - 12rem));
  color: rgba(250,245,226,.66);
  text-align: center;
  text-shadow: 0 2px 16px rgba(0,0,0,.6);
  font-size: clamp(.72rem, 1.2vw, .88rem);
  font-style: italic;
  pointer-events: none;
}

.garden1-scene.is-awake .garden1-whisper {
  opacity: 0;
}

.garden1-book-layer {
  position: absolute;
  z-index: 8;
  inset: 0;
  display: grid;
  align-items: center;
  padding: clamp(4rem, 9vh, 6.5rem) clamp(1rem, 5vw, 5rem) 3.5rem;
  background: rgba(13,14,9,.22);
  backdrop-filter: blur(2px);
}

.garden1-book-layer[hidden] {
  display: none;
}

.garden1-book-layer .living-book-shell {
  width: min(100%, 72rem);
  margin: 0 auto;
}

.garden1-book-layer .living-book-closed {
  display: none !important;
}

.garden1-message {
  position: absolute;
  z-index: 10;
  left: 50%;
  bottom: 1.1rem;
  transform: translateX(-50%);
  margin: 0;
  width: min(54rem, calc(100% - 2rem));
  min-height: 1.5rem;
  color: rgba(251,242,215,.82);
  text-align: center;
  text-shadow: 0 2px 12px #000;
  font-size: .74rem;
  pointer-events: none;
}

@media (max-width: 760px) {
  .garden1-stage__image {
    object-position: 46% center;
  }

  .garden1-heading {
    top: 4rem;
    width: calc(100% - 4rem);
  }

  .garden1-book-hotspot {
    left: 5%;
    top: 69%;
    width: 34%;
    height: 18%;
  }

  .garden1-whisper {
    width: min(24rem, calc(100% - 7rem));
    bottom: 1.15rem;
    font-size: .68rem;
  }

  .garden1-book-layer {
    padding: 4.3rem .65rem 2.8rem;
    align-items: start;
    overflow: auto;
  }

  .garden1-message {
    position: fixed;
    bottom: .55rem;
    font-size: .68rem;
  }
}


/* =========================================================
   VNEW.0.6 — Jardin I · ASSOCIER
   ========================================================= */

.garden1-exercise-layer {
  position: absolute;
  z-index: 9;
  inset: 0;
  display: grid;
  place-items: center;
  padding: clamp(4.2rem, 8vh, 6.4rem) clamp(.8rem, 4vw, 3.5rem) 3rem;
  background: rgba(12, 14, 9, .36);
  backdrop-filter: blur(3px);
}

.garden1-exercise-layer[hidden] {
  display: none;
}

.association-panel {
  width: min(100%, 64rem);
  max-height: calc(100vh - 7rem);
  overflow: auto;
  padding: clamp(1.2rem, 3.6vw, 2.8rem);
  border: 1px solid rgba(238, 219, 168, .24);
  border-radius: 5px 18px 18px 5px;
  background:
    radial-gradient(circle at 18% 12%, rgba(255, 255, 255, .45), transparent 27rem),
    linear-gradient(90deg, rgba(91, 71, 39, .04), transparent 8%, transparent 92%, rgba(91, 71, 39, .05)),
    #e4dbc2;
  color: #292319;
  box-shadow:
    -7px 8px 0 rgba(196, 181, 143, .92),
    0 32px 90px rgba(0, 0, 0, .5);
}

.association-panel__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.2rem;
  border-bottom: 1px solid rgba(83, 68, 40, .16);
  padding-bottom: 1.15rem;
}

.association-panel__kicker {
  margin: 0 0 .45rem;
  color: #82704a;
  font-size: .66rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.association-panel h2 {
  margin: 0;
  max-width: 43rem;
  font-size: clamp(1.7rem, 4.5vw, 3.4rem);
  line-height: 1.03;
  font-weight: 500;
  letter-spacing: -.025em;
}

.association-panel__quit {
  border: 0;
  border-bottom: 1px solid rgba(60, 49, 29, .35);
  background: transparent;
  color: #685b42;
  cursor: pointer;
  padding: .2rem 0;
}

.association-panel__pair {
  min-height: 6.8rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(1rem, 4vw, 3rem);
  margin: clamp(1.5rem, 4vw, 3rem) 0 1.3rem;
  text-align: center;
}

.association-panel__pair strong {
  font-size: clamp(1.45rem, 4vw, 2.8rem);
  font-weight: 500;
  letter-spacing: .08em;
}

.association-panel__pair i {
  color: #917f57;
  font-size: 1.6rem;
}

.association-pair__hidden {
  color: #887a5d;
  letter-spacing: .14em;
  font-size: clamp(.72rem, 2vw, .95rem);
}

.association-panel__copy,
.association-panel__help,
.association-panel__note {
  max-width: 48rem;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.65;
}

.association-panel__copy {
  color: #514834;
  font-size: clamp(.92rem, 1.6vw, 1.04rem);
}

.association-panel__help {
  margin-top: 1rem;
  padding: .9rem 1rem;
  border-left: 2px solid rgba(121, 95, 47, .48);
  background: rgba(122, 99, 53, .06);
  color: #65583d;
}

.association-panel__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .65rem;
  max-width: 52rem;
  margin: 1.7rem auto 0;
}

.association-action {
  border: 1px solid rgba(70, 58, 34, .24);
  border-radius: 999px;
  background: transparent;
  color: #403622;
  padding: .7rem 1rem;
  cursor: pointer;
  font: inherit;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .055em;
  text-transform: uppercase;
}

.association-action:hover,
.association-action:focus-visible {
  border-color: rgba(70, 58, 34, .58);
}

.association-action:disabled {
  opacity: .32;
  cursor: not-allowed;
}

.association-action--primary {
  background: #403622;
  color: #f0e6ca;
  border-color: #403622;
}

.association-choice-grid,
.association-quality-grid {
  width: 100%;
  display: grid;
  gap: .7rem;
}

.association-choice-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.association-quality-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.association-choice-row {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .6rem;
}

.association-action--choice,
.association-action--quality {
  border-radius: 7px;
  min-height: 6.6rem;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
  display: grid;
  align-content: center;
  gap: .35rem;
}

.association-action--choice strong,
.association-action--quality strong {
  letter-spacing: .08em;
  font-size: .74rem;
}

.association-action--choice small,
.association-action--quality small {
  display: block;
  color: #6f634b;
  line-height: 1.45;
  font-size: .78rem;
  font-weight: 400;
}

.association-action.is-selected,
.association-action--choice.is-selected,
.association-action--quality.is-selected {
  background: rgba(74, 62, 38, .11);
  border-color: rgba(74, 62, 38, .56);
  box-shadow: inset 0 0 0 1px rgba(74, 62, 38, .16);
}

.association-panel__note {
  margin-top: 1.5rem;
  color: #81745b;
  text-align: center;
  font-size: .74rem;
  font-style: italic;
}

@media (max-width: 760px) {
  .garden1-exercise-layer {
    align-items: start;
    overflow: auto;
    padding: 4.4rem .55rem 1.4rem;
  }

  .association-panel {
    max-height: none;
    padding: 1.15rem;
  }

  .association-panel__header {
    gap: .6rem;
  }

  .association-choice-grid,
  .association-quality-grid {
    grid-template-columns: 1fr;
  }

  .association-action--choice,
  .association-action--quality {
    min-height: 4.8rem;
  }

  .association-panel__pair {
    min-height: 5rem;
    margin-top: 1.2rem;
  }
}


/* =========================================================
   VNEW.0.7 — Jardin I · TRANSFORMER
   ========================================================= */

.transformer-panel .association-panel__kicker {
  letter-spacing: .18em;
}

.transformer-panel .association-panel__pair strong:first-child {
  max-width: 18rem;
}

.transformer-panel .association-action--choice,
.transformer-panel .association-action--quality {
  min-height: 7rem;
}

@media (max-width: 760px) {
  .transformer-panel .association-action--choice,
  .transformer-panel .association-action--quality {
    min-height: 5rem;
  }
}


/* =========================================================
   VNEW.0.8 — Jardin I · IMAGINER
   ========================================================= */

.imagine-panel .association-panel__kicker {
  letter-spacing: .19em;
}

.imagine-panel .association-panel__pair {
  min-height: 5.8rem;
}

.imagine-quality-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
}

.imagine-repair-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .6rem;
}

.imagine-quality-grid .association-action,
.imagine-repair-grid .association-action {
  min-height: 5.8rem;
  border-radius: 7px;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
  display: grid;
  align-content: center;
  gap: .35rem;
}

.imagine-quality-grid .association-action strong {
  letter-spacing: .08em;
  font-size: .74rem;
}

.imagine-quality-grid .association-action small {
  display: block;
  color: #6f634b;
  line-height: 1.45;
  font-size: .78rem;
  font-weight: 400;
}

@media (max-width: 760px) {
  .imagine-quality-grid,
  .imagine-repair-grid {
    grid-template-columns: 1fr;
  }

  .imagine-quality-grid .association-action,
  .imagine-repair-grid .association-action {
    min-height: 4.7rem;
  }
}


/* =========================================================
   VNEW.0.9 — Jardin I · Miroir du rappel
   ========================================================= */

.mirror-panel {
  background:
    radial-gradient(circle at 50% 16%, rgba(255,255,255,.72), transparent 20rem),
    radial-gradient(circle at 50% 44%, rgba(181,196,186,.18), transparent 26rem),
    linear-gradient(90deg, rgba(87,73,48,.04), transparent 10%, transparent 90%, rgba(87,73,48,.05)),
    #e2dcc9;
}

.mirror-mark {
  width: clamp(4.8rem, 11vw, 7.2rem);
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  border: 1px solid rgba(79, 79, 67, .26);
  border-radius: 50%;
  color: rgba(70, 80, 73, .64);
  font-size: clamp(3.4rem, 9vw, 6rem);
  line-height: 1;
  box-shadow:
    inset 0 0 0 .45rem rgba(255,255,255,.18),
    0 0 42px rgba(191,207,197,.18);
}

.mirror-count-grid {
  width: min(100%, 28rem);
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: .6rem;
}

.mirror-diagnose-block {
  width: 100%;
  padding: 1rem 0;
  border-top: 1px solid rgba(78,66,42,.15);
}

.mirror-diagnose-block > strong,
.mirror-diagnose-block > small {
  display: block;
}

.mirror-diagnose-block > small {
  margin-top: .2rem;
  color: #7c6d52;
}

.mirror-diagnose-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: .45rem;
  margin-top: .7rem;
}

.mirror-diagnose-grid .association-action {
  border-radius: 7px;
}

@media (max-width: 760px) {
  .mirror-count-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .mirror-diagnose-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}


/* =========================================================
   VNEW.0.10 — Jardin I · Sortie / Passage vers l’Orangerie
   ========================================================= */

.garden1-exit-hotspot {
  position: absolute;
  z-index: 4;
  left: 25.5%;
  top: 38.8%;
  width: 15%;
  height: 17.5%;
  min-width: 6rem;
  min-height: 5rem;
  border: 1px solid rgba(239, 226, 184, .16);
  border-radius: 50%;
  background:
    radial-gradient(circle, rgba(232, 214, 161, .16), transparent 68%);
  color: rgba(249, 239, 205, .9);
  cursor: pointer;
  opacity: .88;
  transition:
    opacity .22s ease,
    transform .22s ease,
    box-shadow .22s ease;
}

.garden1-exit-hotspot[hidden] {
  display: none;
}

.garden1-exit-hotspot::before {
  content: "";
  position: absolute;
  inset: 14%;
  border-radius: 50%;
  border: 1px solid rgba(244, 227, 178, .28);
  box-shadow:
    0 0 28px rgba(230, 207, 144, .12),
    inset 0 0 18px rgba(246, 234, 197, .06);
}

.garden1-exit-hotspot span {
  position: absolute;
  left: 50%;
  bottom: -1.55rem;
  transform: translateX(-50%);
  font-size: .63rem;
  letter-spacing: .15em;
  white-space: nowrap;
  text-shadow: 0 2px 14px #000;
}

.garden1-exit-hotspot:hover,
.garden1-exit-hotspot:focus-visible {
  opacity: 1;
  transform: scale(1.025);
  box-shadow: 0 0 44px rgba(234, 214, 161, .14);
}

.garden1-scene.is-awake .garden1-exit-hotspot {
  opacity: .38;
}

.garden1-passage-layer {
  position: absolute;
  z-index: 20;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(12, 14, 9, .18);
  opacity: 0;
  pointer-events: none;
  transition: opacity .32s ease;
}

.garden1-passage-layer[hidden] {
  display: none;
}

.garden1-scene.is-passing .garden1-passage-layer {
  opacity: 1;
}

.garden1-scene.is-passing .garden1-stage__image {
  transform: scale(1.012);
  filter: brightness(.82);
}

.garden1-passage-layer__content {
  text-align: center;
  color: rgba(249, 242, 219, .92);
  text-shadow: 0 3px 22px rgba(0,0,0,.72);
}

.garden1-passage-layer__content span {
  display: block;
  margin-bottom: .55rem;
  color: rgba(224, 205, 158, .82);
  font-size: .64rem;
  letter-spacing: .18em;
}

.garden1-passage-layer__content strong {
  display: block;
  font-size: clamp(2rem, 5vw, 4rem);
  font-weight: 500;
}

.garden1-passage-layer__content p {
  margin: .65rem 0 0;
  font-style: italic;
  color: rgba(245, 237, 214, .72);
}

.orangery-threshold-scene {
  min-height: 100vh;
  background: #11130f;
}

.orangery-threshold-stage {
  position: relative;
  width: 100%;
  min-height: 100vh;
  overflow: hidden;
}

.orangery-threshold-stage__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  user-select: none;
  -webkit-user-drag: none;
}

.orangery-threshold-stage__shade {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(8,9,8,.28), transparent 22%, transparent 72%, rgba(8,9,8,.35)),
    linear-gradient(90deg, rgba(8,9,8,.16), transparent 35%, transparent 78%, rgba(8,9,8,.12));
}

.orangery-threshold-heading {
  position: absolute;
  z-index: 3;
  top: clamp(3.4rem, 7vh, 5.4rem);
  left: 50%;
  transform: translateX(-50%);
  display: grid;
  gap: .35rem;
  justify-items: center;
  width: min(90%, 42rem);
  color: rgba(245, 240, 223, .9);
  text-align: center;
  text-shadow: 0 2px 18px rgba(0,0,0,.55);
}

.orangery-threshold-heading span {
  color: rgba(218, 205, 174, .8);
  font-size: .66rem;
  letter-spacing: .19em;
}

.orangery-threshold-heading strong {
  font-size: clamp(.82rem, 1.6vw, 1.08rem);
  font-weight: 500;
  letter-spacing: .16em;
}

.orangery-threshold-maxim {
  position: absolute;
  z-index: 3;
  left: 50%;
  bottom: 1.35rem;
  transform: translateX(-50%);
  width: min(38rem, calc(100% - 11rem));
  margin: 0;
  color: rgba(244, 239, 224, .7);
  text-align: center;
  text-shadow: 0 2px 16px rgba(0,0,0,.7);
  font-size: clamp(.72rem, 1.2vw, .9rem);
  font-style: italic;
}

.orangery-threshold-note {
  position: absolute;
  z-index: 4;
  right: clamp(1rem, 4vw, 3rem);
  bottom: clamp(4.3rem, 9vh, 6.4rem);
  width: min(24rem, calc(100% - 2rem));
  padding: 1rem 1.15rem;
  border: 1px solid rgba(238, 228, 203, .16);
  border-radius: .8rem;
  background: rgba(14, 16, 14, .46);
  color: rgba(246, 240, 222, .83);
  backdrop-filter: blur(8px);
  box-shadow: 0 18px 42px rgba(0,0,0,.18);
}

.orangery-threshold-note p,
.orangery-threshold-note span,
.orangery-threshold-note strong {
  display: block;
}

.orangery-threshold-note p {
  margin: 0 0 .3rem;
  color: rgba(221, 209, 181, .76);
  font-size: .72rem;
}

.orangery-threshold-note strong {
  letter-spacing: .09em;
  font-size: .78rem;
}

.orangery-threshold-note span {
  margin-top: .35rem;
  color: rgba(238, 231, 213, .68);
  line-height: 1.45;
  font-size: .74rem;
}

.orangery-threshold-back {
  position: absolute;
  z-index: 5;
  left: 1.25rem;
  bottom: 1.15rem;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px;
  background: rgba(10,12,10,.46);
  color: rgba(249,244,226,.84);
  padding: .58rem .82rem;
  backdrop-filter: blur(8px);
  cursor: pointer;
  font-size: .72rem;
}

.orangery-book-sleep-label {
  position: absolute;
  z-index: 3;
  left: 4.7%;
  top: 84%;
  color: rgba(237, 228, 204, .62);
  font-size: .61rem;
  letter-spacing: .13em;
  text-shadow: 0 2px 12px rgba(0,0,0,.7);
}

@media (max-width: 760px) {
  .garden1-exit-hotspot {
    left: 18%;
    top: 37%;
    width: 27%;
    height: 16%;
  }

  .orangery-threshold-stage__image {
    object-position: 45% center;
  }

  .orangery-threshold-note {
    right: .8rem;
    left: .8rem;
    bottom: 4.2rem;
    width: auto;
  }

  .orangery-threshold-maxim {
    display: none;
  }

  .orangery-book-sleep-label {
    left: 4%;
    top: 82%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .garden1-passage-layer,
  .garden1-stage__image {
    transition: none !important;
  }
}


/* =========================================================
   VNEW.0.11 — Orangerie · entrée + Livre vivant
   ========================================================= */

.orangery-scene {
  min-height: 100vh;
  background: #11130f;
}

.orangery-stage {
  position: relative;
  width: 100%;
  min-height: 100vh;
  overflow: hidden;
}

.orangery-stage__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  user-select: none;
  -webkit-user-drag: none;
  transition:
    opacity .42s ease,
    filter .42s ease,
    transform .42s ease;
}

.orangery-stage__image--sleep {
  opacity: 1;
}

.orangery-stage__image--awake {
  opacity: 0;
  filter: saturate(1.08) brightness(1.035) contrast(1.015);
}

.orangery-scene.is-awake .orangery-stage__image--sleep {
  opacity: 0;
}

.orangery-scene.is-awake .orangery-stage__image--awake {
  opacity: 1;
}

.orangery-stage__shade {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(8,9,8,.24), transparent 22%, transparent 74%, rgba(8,9,8,.32)),
    linear-gradient(90deg, rgba(8,9,8,.12), transparent 36%, transparent 80%, rgba(8,9,8,.10));
}

.orangery-heading {
  position: absolute;
  z-index: 4;
  top: clamp(3.4rem, 7vh, 5.4rem);
  left: 50%;
  transform: translateX(-50%);
  display: grid;
  gap: .32rem;
  justify-items: center;
  width: min(92%, 44rem);
  color: rgba(245, 240, 223, .9);
  text-align: center;
  text-shadow: 0 2px 18px rgba(0,0,0,.58);
}

.orangery-heading span {
  color: rgba(218, 205, 174, .8);
  font-size: .64rem;
  letter-spacing: .18em;
}

.orangery-heading strong {
  font-size: clamp(.84rem, 1.7vw, 1.12rem);
  font-weight: 500;
  letter-spacing: .16em;
}

.orangery-book-hotspot {
  position: absolute;
  z-index: 5;
  left: 3%;
  top: 68%;
  width: 20%;
  height: 25%;
  min-width: 8rem;
  min-height: 7rem;
  border: 1px solid rgba(239, 226, 184, .12);
  border-radius: 50%;
  background:
    radial-gradient(circle, rgba(232, 214, 161, .10), transparent 68%);
  color: rgba(248, 239, 207, .88);
  cursor: pointer;
  transition:
    opacity .22s ease,
    transform .22s ease,
    box-shadow .22s ease;
}

.orangery-book-hotspot::before {
  content: "";
  position: absolute;
  inset: 15%;
  border-radius: 50%;
  border: 1px solid rgba(244, 227, 178, .20);
  box-shadow:
    0 0 28px rgba(230, 207, 144, .09),
    inset 0 0 18px rgba(246, 234, 197, .05);
}

.orangery-book-hotspot span {
  position: absolute;
  left: 50%;
  bottom: -1.35rem;
  transform: translateX(-50%);
  font-size: .61rem;
  letter-spacing: .14em;
  white-space: nowrap;
  text-shadow: 0 2px 14px #000;
}

.orangery-book-hotspot:hover,
.orangery-book-hotspot:focus-visible {
  transform: scale(1.025);
  box-shadow: 0 0 42px rgba(234, 214, 161, .12);
}

.orangery-book-hotspot:disabled {
  opacity: .2;
  cursor: not-allowed;
}

.orangery-scene.is-awake .orangery-book-hotspot {
  opacity: 0;
  pointer-events: none;
}

.orangery-back {
  position: absolute;
  z-index: 5;
  left: 1.25rem;
  bottom: 1.15rem;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px;
  background: rgba(10,12,10,.46);
  color: rgba(249,244,226,.84);
  padding: .58rem .82rem;
  backdrop-filter: blur(8px);
  cursor: pointer;
  font-size: .72rem;
}

.orangery-maxim {
  position: absolute;
  z-index: 4;
  left: 50%;
  bottom: 1.35rem;
  transform: translateX(-50%);
  width: min(38rem, calc(100% - 11rem));
  margin: 0;
  color: rgba(244, 239, 224, .72);
  text-align: center;
  text-shadow: 0 2px 16px rgba(0,0,0,.72);
  font-size: clamp(.72rem, 1.2vw, .9rem);
  font-style: italic;
}

.orangery-book-layer {
  position: absolute;
  z-index: 12;
  inset: 0;
  display: grid;
  place-items: center;
  padding: clamp(4rem, 7vh, 5.8rem) clamp(.7rem, 3vw, 2.4rem) 2rem;
  background: rgba(10, 12, 9, .28);
  backdrop-filter: blur(3px);
}

.orangery-book-layer[hidden] {
  display: none;
}

.orangery-book-layer .living-book-shell {
  width: min(100%, 70rem);
}

.orangery-message {
  position: absolute;
  z-index: 14;
  left: 50%;
  bottom: 4.2rem;
  transform: translateX(-50%);
  width: min(34rem, calc(100% - 2rem));
  margin: 0;
  color: rgba(248,241,219,.86);
  text-align: center;
  text-shadow: 0 2px 18px rgba(0,0,0,.8);
  font-size: .75rem;
  pointer-events: none;
}

@media (min-aspect-ratio: 2/1) and (min-width: 900px) {
  .orangery-stage__image {
    object-position: center 42%;
  }

  .orangery-heading {
    left: 27%;
    top: clamp(2.2rem, 6vh, 3.6rem);
    width: min(42vw, 34rem);
  }
}

@media (max-width: 760px) {
  .orangery-stage__image {
    object-position: 45% center;
  }

  .orangery-book-hotspot {
    left: .8rem;
    top: auto;
    bottom: 5.2rem;
    width: auto;
    height: auto;
    min-width: 0;
    min-height: 0;
    padding: .62rem .78rem;
    border-radius: 999px;
    background: rgba(12, 14, 11, .48);
    backdrop-filter: blur(8px);
  }

  .orangery-book-hotspot::before {
    display: none;
  }

  .orangery-book-hotspot span {
    position: static;
    display: block;
    transform: none;
    font-size: .59rem;
  }

  .orangery-maxim {
    display: none;
  }

  .orangery-book-layer {
    align-items: start;
    overflow: auto;
    padding: 4.2rem .5rem 1rem;
  }

  .orangery-message {
    bottom: 3.8rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .orangery-stage__image,
  .orangery-book-hotspot {
    transition: none !important;
  }
}


/* =========================================================
   VNEW.0.12 — Orangerie · RESSENTIR
   ========================================================= */

.orangery-exercise-layer {
  position: absolute;
  z-index: 13;
  inset: 0;
  display: grid;
  place-items: center;
  padding: clamp(4.2rem, 8vh, 6rem) clamp(.8rem, 4vw, 3.2rem) 2.7rem;
  background: rgba(10, 12, 9, .36);
  backdrop-filter: blur(3px);
}

.orangery-exercise-layer[hidden] {
  display: none;
}

.sensory-panel {
  width: min(100%, 66rem);
}

.sensory-panel .association-panel__pair {
  min-height: 5.5rem;
}

.sense-cue-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .55rem;
}

.sense-cue-card {
  min-height: 7.4rem;
  padding: .75rem .65rem;
  border: 1px solid rgba(70, 58, 34, .22);
  border-radius: 7px;
  background: rgba(255,255,255,.03);
  color: #403622;
  cursor: pointer;
  display: grid;
  align-content: center;
  gap: .3rem;
  text-align: left;
}

.sense-cue-card span {
  color: #897751;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .12em;
}

.sense-cue-card strong {
  font-size: .72rem;
  line-height: 1.35;
  letter-spacing: .04em;
}

.sense-cue-card small {
  color: #807259;
  font-size: .63rem;
}

.sense-cue-card.is-selected {
  background: rgba(74, 62, 38, .11);
  border-color: rgba(74, 62, 38, .58);
  box-shadow: inset 0 0 0 1px rgba(74, 62, 38, .14);
}

.sense-repair-block {
  width: 100%;
  padding: .9rem 0;
  border-top: 1px solid rgba(78, 66, 42, .15);
}

.sense-repair-block__head {
  display: flex;
  justify-content: space-between;
  gap: .7rem;
  align-items: baseline;
}

.sense-repair-block__head strong {
  font-size: .82rem;
}

.sense-repair-block__head small {
  color: #817258;
  font-size: .65rem;
  letter-spacing: .08em;
}

.sense-repair-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .45rem;
  margin-top: .65rem;
}

.sense-repair-grid .association-action {
  border-radius: 7px;
  min-height: 3.4rem;
}

@media (max-width: 900px) {
  .sense-cue-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .sense-cue-card:last-child {
    grid-column: 1 / -1;
  }
}

@media (max-width: 760px) {
  .orangery-exercise-layer {
    align-items: start;
    overflow: auto;
    padding: 4.2rem .5rem 1rem;
  }

  .sense-cue-grid {
    grid-template-columns: 1fr;
  }

  .sense-cue-card:last-child {
    grid-column: auto;
  }

  .sense-repair-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}


/* =========================================================
   VNEW.0.13 — Orangerie · RETROUVER
   ========================================================= */

.retrieve-panel .association-panel__kicker {
  letter-spacing: .18em;
}

.retrieve-diagnose-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .45rem;
  margin-top: .65rem;
}

.retrieve-diagnose-grid .association-action {
  min-height: 3.4rem;
  border-radius: 7px;
}

.garden1-retrieve-bridge {
  position: absolute;
  z-index: 40;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 1rem;
  background:
    radial-gradient(circle at 50% 40%, rgba(25, 31, 20, .18), rgba(8, 10, 7, .62));
  backdrop-filter: blur(2px);
}

.garden1-retrieve-bridge[hidden] {
  display: none;
}

.garden1-retrieve-card {
  width: min(34rem, 100%);
  padding: clamp(1.4rem, 4vw, 2.4rem);
  border: 1px solid rgba(238, 226, 193, .2);
  border-radius: 1rem;
  background: rgba(38, 39, 29, .84);
  color: rgba(248, 242, 220, .92);
  text-align: center;
  box-shadow: 0 28px 80px rgba(0,0,0,.32);
}

.garden1-retrieve-card span {
  display: block;
  margin-bottom: .75rem;
  color: rgba(224, 207, 160, .78);
  font-size: .65rem;
  letter-spacing: .16em;
}

.garden1-retrieve-card strong {
  display: block;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.7rem, 4vw, 2.7rem);
  font-weight: 500;
}

.garden1-retrieve-card p {
  margin: 1rem auto 1.3rem;
  max-width: 29rem;
  color: rgba(244, 237, 215, .76);
  line-height: 1.6;
}

.garden1-retrieve-card button {
  border: 1px solid rgba(244, 229, 184, .28);
  border-radius: 999px;
  background: rgba(244, 229, 184, .08);
  color: rgba(250, 243, 221, .94);
  padding: .7rem 1rem;
  cursor: pointer;
  letter-spacing: .09em;
  font-size: .7rem;
}

.garden1-scene.has-retrieve-bridge .garden1-book-hotspot,
.garden1-scene.has-retrieve-bridge .garden1-exit-hotspot,
.garden1-scene.has-retrieve-bridge .garden1-back {
  pointer-events: none;
}

@media (max-width: 760px) {
  .retrieve-diagnose-grid {
    grid-template-columns: 1fr;
  }
}


/* =========================================================
   VNEW.0.14 — Orangerie · TRANSFÉRER
   ========================================================= */

.transfer-panel .association-panel__kicker {
  letter-spacing: .18em;
}

.transfer-sense-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .5rem;
}

.transfer-sense-grid .association-action {
  min-height: 4.2rem;
  border-radius: 7px;
}

.transfer-quality-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem;
}

.transfer-quality-grid .association-action {
  min-height: 6.2rem;
  border-radius: 7px;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
  display: grid;
  align-content: center;
  gap: .32rem;
}

.transfer-quality-grid .association-action strong {
  font-size: .72rem;
  letter-spacing: .07em;
}

.transfer-quality-grid .association-action small {
  display: block;
  color: #74684e;
  line-height: 1.4;
  font-size: .75rem;
  font-weight: 400;
}

@media (max-width: 900px) {
  .transfer-sense-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .transfer-quality-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 760px) {
  .transfer-sense-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}


/* =========================================================
   VNEW.0.15 — Orangerie · Sortie / Passage vers Jardin II
   ========================================================= */

.orangery-exit-hotspot {
  position: absolute;
  z-index: 5;
  left: 69.3%;
  top: 16.5%;
  width: 15%;
  height: 45%;
  min-width: 6rem;
  min-height: 10rem;
  border: 1px solid rgba(232, 223, 192, .12);
  border-radius: 48%;
  background:
    radial-gradient(ellipse at center, rgba(222, 207, 155, .11), transparent 68%);
  color: rgba(247, 239, 209, .88);
  cursor: pointer;
  opacity: .84;
  transition: opacity .22s ease, transform .22s ease, box-shadow .22s ease;
}

.orangery-exit-hotspot[hidden] {
  display: none;
}

.orangery-exit-hotspot::before {
  content: "";
  position: absolute;
  inset: 8% 18%;
  border: 1px solid rgba(241, 225, 179, .2);
  border-radius: 48%;
  box-shadow: 0 0 38px rgba(230, 207, 144, .1);
}

.orangery-exit-hotspot span {
  position: absolute;
  left: 50%;
  bottom: -.2rem;
  transform: translateX(-50%);
  font-size: .62rem;
  letter-spacing: .15em;
  white-space: nowrap;
  text-shadow: 0 2px 14px #000;
}

.orangery-exit-hotspot:hover,
.orangery-exit-hotspot:focus-visible {
  opacity: 1;
  transform: scale(1.018);
  box-shadow: 0 0 46px rgba(231, 213, 158, .12);
}

.orangery-scene.is-awake .orangery-exit-hotspot {
  opacity: .3;
}

.orangery-passage-layer {
  position: absolute;
  z-index: 30;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(10, 12, 9, .18);
  opacity: 0;
  pointer-events: none;
  transition: opacity .32s ease;
}

.orangery-passage-layer[hidden] {
  display: none;
}

.orangery-scene.is-passing-to-garden2 .orangery-passage-layer {
  opacity: 1;
}

.orangery-scene.is-passing-to-garden2 .orangery-stage__image {
  transform: scale(1.012);
  filter: brightness(.82);
}

.orangery-passage-layer__content {
  max-width: 44rem;
  padding: 1rem;
  text-align: center;
  color: rgba(249, 242, 219, .92);
  text-shadow: 0 3px 22px rgba(0,0,0,.72);
}

.orangery-passage-layer__content span {
  display: block;
  margin-bottom: .55rem;
  color: rgba(224, 205, 158, .82);
  font-size: .64rem;
  letter-spacing: .18em;
}

.orangery-passage-layer__content strong {
  display: block;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.8rem, 4.4vw, 3.7rem);
  font-weight: 500;
}

.orangery-passage-layer__content p {
  margin: .65rem 0 0;
  font-style: italic;
  color: rgba(245, 237, 214, .72);
}

.garden2-threshold-scene {
  min-height: 100vh;
  background: #11130f;
}

.garden2-threshold-stage {
  position: relative;
  width: 100%;
  min-height: 100vh;
  overflow: hidden;
}

.garden2-threshold-stage__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  user-select: none;
  -webkit-user-drag: none;
}

.garden2-threshold-stage__shade {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(8,9,8,.26), transparent 23%, transparent 72%, rgba(8,9,8,.34)),
    linear-gradient(90deg, rgba(8,9,8,.15), transparent 36%, transparent 80%, rgba(8,9,8,.1));
}

.garden2-threshold-heading {
  position: absolute;
  z-index: 3;
  top: clamp(3.4rem, 7vh, 5.4rem);
  left: 50%;
  transform: translateX(-50%);
  display: grid;
  gap: .32rem;
  justify-items: center;
  width: min(92%, 46rem);
  color: rgba(245, 240, 223, .9);
  text-align: center;
  text-shadow: 0 2px 18px rgba(0,0,0,.58);
}

.garden2-threshold-heading span {
  color: rgba(218, 205, 174, .8);
  font-size: .64rem;
  letter-spacing: .18em;
}

.garden2-threshold-heading strong {
  font-size: clamp(.84rem, 1.7vw, 1.12rem);
  font-weight: 500;
  letter-spacing: .16em;
}

.garden2-threshold-maxim {
  position: absolute;
  z-index: 3;
  left: 50%;
  bottom: 1.35rem;
  transform: translateX(-50%);
  width: min(38rem, calc(100% - 11rem));
  margin: 0;
  color: rgba(244, 239, 224, .72);
  text-align: center;
  text-shadow: 0 2px 16px rgba(0,0,0,.72);
  font-size: clamp(.72rem, 1.2vw, .9rem);
  font-style: italic;
}

.garden2-threshold-note {
  position: absolute;
  z-index: 4;
  right: clamp(1rem, 4vw, 3rem);
  bottom: clamp(4.3rem, 9vh, 6.4rem);
  width: min(25rem, calc(100% - 2rem));
  padding: 1rem 1.15rem;
  border: 1px solid rgba(238, 228, 203, .16);
  border-radius: .8rem;
  background: rgba(14, 16, 14, .46);
  color: rgba(246, 240, 222, .83);
  backdrop-filter: blur(8px);
  box-shadow: 0 18px 42px rgba(0,0,0,.18);
}

.garden2-threshold-note p,
.garden2-threshold-note span,
.garden2-threshold-note strong {
  display: block;
}

.garden2-threshold-note p {
  margin: 0 0 .3rem;
  color: rgba(221, 209, 181, .76);
  font-size: .72rem;
}

.garden2-threshold-note strong {
  letter-spacing: .08em;
  font-size: .78rem;
}

.garden2-threshold-note span {
  margin-top: .35rem;
  color: rgba(238, 231, 213, .68);
  line-height: 1.45;
  font-size: .74rem;
}

.garden2-threshold-back {
  position: absolute;
  z-index: 5;
  left: 1.25rem;
  bottom: 1.15rem;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px;
  background: rgba(10,12,10,.46);
  color: rgba(249,244,226,.84);
  padding: .58rem .82rem;
  backdrop-filter: blur(8px);
  cursor: pointer;
  font-size: .72rem;
}

.garden2-book-sleep-label {
  position: absolute;
  z-index: 3;
  left: 3.4%;
  top: 86%;
  color: rgba(237, 228, 204, .62);
  font-size: .61rem;
  letter-spacing: .13em;
  text-shadow: 0 2px 12px rgba(0,0,0,.7);
}

@media (max-width: 760px) {
  .orangery-exit-hotspot {
    left: 65%;
    top: 18%;
    width: 28%;
    height: 41%;
  }

  .garden2-threshold-stage__image {
    object-position: 48% center;
  }

  .garden2-threshold-note {
    right: .8rem;
    left: .8rem;
    bottom: 4.2rem;
    width: auto;
  }

  .garden2-threshold-maxim {
    display: none;
  }

  .garden2-book-sleep-label {
    left: 2%;
    top: 84%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .orangery-passage-layer,
  .orangery-stage__image {
    transition: none !important;
  }
}


/* =========================================================
   VNEW.0.16 — Jardin II · entrée + Livre vivant
   ========================================================= */

.garden2-scene {
  min-height: 100vh;
  background: #11140f;
}

.garden2-stage {
  position: relative;
  width: 100%;
  min-height: 100vh;
  overflow: hidden;
}

.garden2-stage__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  user-select: none;
  -webkit-user-drag: none;
  transition: opacity .42s ease, filter .42s ease, transform .42s ease;
}

.garden2-stage__image--sleep { opacity: 1; }
.garden2-stage__image--awake { opacity: 0; filter: saturate(1.08) brightness(1.04) contrast(1.015); }
.garden2-scene.is-awake .garden2-stage__image--sleep { opacity: 0; }
.garden2-scene.is-awake .garden2-stage__image--awake { opacity: 1; }

.garden2-stage__shade {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(8,10,7,.24), transparent 22%, transparent 74%, rgba(8,10,7,.34)),
    linear-gradient(90deg, rgba(8,10,7,.12), transparent 36%, transparent 80%, rgba(8,10,7,.10));
}

.garden2-heading {
  position: absolute;
  z-index: 4;
  top: clamp(3.4rem, 7vh, 5.4rem);
  left: 50%;
  transform: translateX(-50%);
  display: grid;
  gap: .32rem;
  justify-items: center;
  width: min(92%, 44rem);
  color: rgba(245,240,223,.9);
  text-align: center;
  text-shadow: 0 2px 18px rgba(0,0,0,.58);
}

.garden2-heading span {
  color: rgba(218,205,174,.8);
  font-size: .64rem;
  letter-spacing: .18em;
}

.garden2-heading strong {
  font-size: clamp(.84rem, 1.7vw, 1.12rem);
  font-weight: 500;
  letter-spacing: .16em;
}

/* Cible historique V306 : x 1%, y 77%, w 16%, h 19%. */
.garden2-book-hotspot {
  position: absolute;
  z-index: 5;
  left: 1%;
  top: 77%;
  width: 16%;
  height: 19%;
  min-width: 7rem;
  min-height: 6rem;
  border: 1px solid rgba(239,226,184,.12);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(232,214,161,.10), transparent 68%);
  color: rgba(248,239,207,.88);
  cursor: pointer;
  transition: opacity .22s ease, transform .22s ease, box-shadow .22s ease;
}

.garden2-book-hotspot::before {
  content: "";
  position: absolute;
  inset: 15%;
  border-radius: 50%;
  border: 1px solid rgba(244,227,178,.20);
  box-shadow: 0 0 28px rgba(230,207,144,.09), inset 0 0 18px rgba(246,234,197,.05);
}

.garden2-book-hotspot span {
  position: absolute;
  left: 50%;
  bottom: -1.35rem;
  transform: translateX(-50%);
  font-size: .61rem;
  letter-spacing: .14em;
  white-space: nowrap;
  text-shadow: 0 2px 14px #000;
}

.garden2-book-hotspot:hover,
.garden2-book-hotspot:focus-visible {
  transform: scale(1.025);
  box-shadow: 0 0 42px rgba(234,214,161,.12);
}

.garden2-book-hotspot:disabled {
  opacity: .2;
  cursor: not-allowed;
}

.garden2-scene.is-awake .garden2-book-hotspot { opacity: 0; pointer-events: none; }

.garden2-back {
  position: absolute;
  z-index: 5;
  left: 1.25rem;
  bottom: 1.15rem;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px;
  background: rgba(10,12,10,.46);
  color: rgba(249,244,226,.84);
  padding: .58rem .82rem;
  backdrop-filter: blur(8px);
  cursor: pointer;
  font-size: .72rem;
}

.garden2-maxim {
  position: absolute;
  z-index: 4;
  left: 50%;
  bottom: 1.35rem;
  transform: translateX(-50%);
  width: min(38rem, calc(100% - 11rem));
  margin: 0;
  color: rgba(244,239,224,.72);
  text-align: center;
  text-shadow: 0 2px 16px rgba(0,0,0,.72);
  font-size: clamp(.72rem, 1.2vw, .9rem);
  font-style: italic;
}

.garden2-book-layer {
  position: absolute;
  z-index: 12;
  inset: 0;
  display: grid;
  place-items: center;
  padding: clamp(4rem, 7vh, 5.8rem) clamp(.7rem, 3vw, 2.4rem) 2rem;
  background: rgba(10,12,9,.28);
  backdrop-filter: blur(3px);
}

.garden2-book-layer[hidden] { display: none; }
.garden2-book-layer .living-book-shell { width: min(100%, 70rem); }

.garden2-message {
  position: absolute;
  z-index: 14;
  left: 50%;
  bottom: 4.2rem;
  transform: translateX(-50%);
  width: min(36rem, calc(100% - 2rem));
  margin: 0;
  color: rgba(248,241,219,.86);
  text-align: center;
  text-shadow: 0 2px 18px rgba(0,0,0,.8);
  font-size: .75rem;
  pointer-events: none;
}

@media (max-width: 760px) {
  .garden2-stage__image { object-position: center; }
  .garden2-book-hotspot {
    left: 0;
    top: 73%;
    width: 30%;
    height: 24%;
  }
  .garden2-maxim { display: none; }
  .garden2-book-layer {
    align-items: start;
    overflow: auto;
    padding: 4.2rem .5rem 1rem;
  }
  .garden2-message { bottom: 3.8rem; }
}

@media (prefers-reduced-motion: reduce) {
  .garden2-stage__image,
  .garden2-book-hotspot { transition: none !important; }
}


/* =========================================================
   VNEW.0.17 — Jardin II · ADRESSER
   ========================================================= */

.garden2-exercise-layer {
  position: absolute;
  z-index: 13;
  inset: 0;
  display: grid;
  place-items: center;
  padding: clamp(4.2rem, 8vh, 6rem) clamp(.8rem, 4vw, 3.2rem) 2.7rem;
  background: rgba(12, 14, 10, .34);
  backdrop-filter: blur(3px);
}

.garden2-exercise-layer[hidden] { display: none; }

.spatial-panel { width: min(100%, 70rem); }

.address-map {
  position: relative;
  width: min(100%, 57rem);
  margin: 1rem auto;
  aspect-ratio: 1792 / 1024;
  overflow: hidden;
  border: 1px solid rgba(71, 59, 37, .22);
  border-radius: .75rem;
  background: #4d523c;
  box-shadow: 0 12px 34px rgba(62, 50, 31, .12);
}

.address-map img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  user-select: none;
  -webkit-user-drag: none;
}

.address-map__locus {
  position: absolute;
  display: grid;
  place-items: center;
  border: 1px solid rgba(247, 224, 154, .88);
  border-radius: 999px;
  background: radial-gradient(circle, rgba(248, 229, 168, .28), rgba(248, 229, 168, .04));
  box-shadow: 0 0 0 .35rem rgba(248, 229, 168, .08), 0 0 2rem rgba(248, 229, 168, .34);
  cursor: pointer;
}

.address-map__locus i {
  width: .72rem;
  height: .72rem;
  border-radius: 50%;
  background: rgba(255, 240, 186, .96);
  box-shadow: 0 0 1rem rgba(255, 237, 177, .82);
}

.address-map__locus b {
  position: absolute;
  left: 50%;
  bottom: -1.45rem;
  transform: translateX(-50%);
  white-space: nowrap;
  padding: .22rem .42rem;
  border-radius: .25rem;
  background: rgba(30, 31, 23, .76);
  color: rgba(250, 242, 214, .96);
  font-size: .58rem;
  font-weight: 600;
  letter-spacing: .08em;
}

.address-map__plane {
  position: absolute;
  inset: 0;
  border: 0;
  background: transparent;
  cursor: crosshair;
}

.address-map__click {
  position: absolute;
  width: 1rem;
  height: 1rem;
  transform: translate(-50%, -50%);
  border: 2px solid rgba(255,255,255,.95);
  border-radius: 50%;
  box-shadow: 0 0 0 .24rem rgba(0,0,0,.22);
  pointer-events: none;
}

.address-map__click.is-direct { background: rgba(106, 150, 93, .95); }
.address-map__click.is-hesitated { background: rgba(197, 158, 77, .95); }
.address-map__click.is-absent { background: rgba(170, 91, 74, .95); }

.address-criteria-grid,
.address-diagnose-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem;
  margin: .8rem 0;
}

.address-criteria-grid .association-action,
.address-diagnose-grid .association-action {
  min-height: 6.4rem;
  border-radius: 7px;
  display: grid;
  align-content: center;
  gap: .28rem;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
}

.address-criteria-grid .association-action strong,
.address-diagnose-grid .association-action strong {
  font-size: .72rem;
  letter-spacing: .07em;
}

.address-criteria-grid .association-action small,
.address-diagnose-grid .association-action small {
  display: block;
  color: #74684e;
  line-height: 1.4;
  font-size: .74rem;
  font-weight: 400;
}

@media (max-width: 760px) {
  .garden2-exercise-layer {
    align-items: start;
    overflow: auto;
    padding: 4.2rem .5rem 1rem;
  }

  .address-criteria-grid,
  .address-diagnose-grid {
    grid-template-columns: 1fr;
  }

  .address-map__locus b { display: none; }
}


/* =========================================================
   VNEW.0.18 — Jardin II · RETROUVER
   ========================================================= */

.spatial-retrieve-panel .association-panel__kicker {
  letter-spacing: .18em;
}

.orangery-spatial-retrieve-bridge {
  position: absolute;
  z-index: 42;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 1rem;
  background: radial-gradient(circle at 50% 42%, rgba(38, 43, 28, .14), rgba(8, 10, 7, .62));
  backdrop-filter: blur(2px);
}

.orangery-spatial-retrieve-bridge[hidden] {
  display: none;
}

.orangery-spatial-retrieve-card {
  width: min(36rem, 100%);
  padding: clamp(1.4rem, 4vw, 2.45rem);
  border: 1px solid rgba(238, 226, 193, .2);
  border-radius: 1rem;
  background: rgba(39, 40, 29, .86);
  color: rgba(248, 242, 220, .92);
  text-align: center;
  box-shadow: 0 28px 80px rgba(0,0,0,.32);
}

.orangery-spatial-retrieve-card span {
  display: block;
  margin-bottom: .75rem;
  color: rgba(224, 207, 160, .78);
  font-size: .65rem;
  letter-spacing: .16em;
}

.orangery-spatial-retrieve-card strong {
  display: block;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.7rem, 4vw, 2.7rem);
  font-weight: 500;
}

.orangery-spatial-retrieve-card p {
  margin: 1rem auto 1.3rem;
  max-width: 31rem;
  color: rgba(244, 237, 215, .76);
  line-height: 1.6;
}

.orangery-spatial-retrieve-card button {
  border: 1px solid rgba(244, 229, 184, .28);
  border-radius: 999px;
  background: rgba(244, 229, 184, .08);
  color: rgba(250, 243, 221, .94);
  padding: .7rem 1rem;
  cursor: pointer;
  letter-spacing: .09em;
  font-size: .7rem;
}

.orangery-scene.has-spatial-retrieve-bridge .orangery-book-hotspot,
.orangery-scene.has-spatial-retrieve-bridge .orangery-exit-hotspot,
.orangery-scene.has-spatial-retrieve-bridge .orangery-back {
  pointer-events: none;
}


/* =========================================================
   VNEW.0.19 — Jardin II · PLACER
   ========================================================= */

.placer-panel {
  width: min(100%, 72rem);
}

.placer-route {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  margin: .8rem 0 1rem;
}

.placer-route > span {
  min-width: 7rem;
  padding: .6rem .7rem;
  border: 1px solid rgba(80, 67, 43, .15);
  border-radius: .55rem;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  column-gap: .5rem;
  row-gap: .1rem;
  color: rgba(70, 59, 38, .66);
}

.placer-route > span b {
  grid-row: 1 / 3;
  font-size: 1rem;
}

.placer-route > span small {
  font-size: .64rem;
  letter-spacing: .09em;
  font-weight: 700;
}

.placer-route > span em {
  font-size: .72rem;
  font-style: normal;
}

.placer-route > span.is-active {
  border-color: rgba(102, 82, 46, .48);
  background: rgba(96, 76, 41, .08);
  color: #4d4028;
}

.placer-route > span.is-done {
  color: #403723;
  background: rgba(81, 68, 43, .045);
}

.placer-route > i {
  color: rgba(76, 63, 39, .45);
  font-style: normal;
}

.placer-map {
  position: relative;
  width: min(100%, 58rem);
  margin: .9rem auto;
  aspect-ratio: 1792 / 1024;
  overflow: hidden;
  border: 1px solid rgba(71, 59, 37, .22);
  border-radius: .75rem;
  background: #4d523c;
  box-shadow: 0 12px 34px rgba(62, 50, 31, .12);
}

.placer-map img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  user-select: none;
  -webkit-user-drag: none;
}

.placer-map__locus {
  position: absolute;
  z-index: 2;
  display: grid;
  place-items: center;
  border: 1px solid rgba(247, 224, 154, .9);
  border-radius: 1rem;
  background: radial-gradient(circle, rgba(248, 229, 168, .25), rgba(248, 229, 168, .035));
  box-shadow:
    0 0 0 .28rem rgba(248, 229, 168, .07),
    0 0 1.8rem rgba(248, 229, 168, .28);
  cursor: pointer;
}

.placer-map__locus i {
  width: .72rem;
  height: .72rem;
  border-radius: 50%;
  background: rgba(255, 240, 186, .96);
  box-shadow: 0 0 1rem rgba(255, 237, 177, .82);
}

.placer-map__locus b {
  position: absolute;
  left: 50%;
  bottom: -.95rem;
  transform: translate(-50%, 100%);
  white-space: nowrap;
  padding: .2rem .38rem;
  border-radius: .25rem;
  background: rgba(30,31,23,.78);
  color: rgba(250,242,214,.96);
  font-size: .56rem;
  letter-spacing: .08em;
}

.placer-map__plane {
  position: absolute;
  z-index: 3;
  inset: 0;
  border: 0;
  background: transparent;
  cursor: crosshair;
}

.placer-map__click {
  position: absolute;
  z-index: 4;
  width: .95rem;
  height: .95rem;
  transform: translate(-50%, -50%);
  border: 2px solid rgba(255,255,255,.96);
  border-radius: 50%;
  box-shadow: 0 0 0 .22rem rgba(0,0,0,.22);
  pointer-events: none;
}

.placer-map__click.is-direct { background: rgba(106,150,93,.95); }
.placer-map__click.is-hesitated { background: rgba(197,158,77,.95); }
.placer-map__click.is-absent { background: rgba(170,91,74,.95); }

.placer-map__locus.is-direct { border-color: rgba(217,239,199,.92); }
.placer-map__locus.is-hesitated { border-color: rgba(242,217,143,.92); }
.placer-map__locus.is-absent { border-color: rgba(231,168,148,.92); }

.placer-quality-grid,
.placer-repair-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem;
  margin: .75rem 0;
}

.placer-quality-grid .association-action,
.placer-repair-grid .association-action {
  min-height: 6rem;
  border-radius: .5rem;
  display: grid;
  align-content: center;
  gap: .28rem;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
}

.placer-quality-grid .association-action strong,
.placer-repair-grid .association-action strong {
  font-size: .72rem;
  letter-spacing: .07em;
}

.placer-quality-grid .association-action small,
.placer-repair-grid .association-action small {
  display: block;
  color: #74684e;
  line-height: 1.4;
  font-size: .74rem;
  font-weight: 400;
}

@media (max-width: 900px) {
  .placer-route {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .placer-route > i {
    display: none;
  }

  .placer-route > span {
    min-width: 0;
  }
}

@media (max-width: 760px) {
  .placer-quality-grid,
  .placer-repair-grid {
    grid-template-columns: 1fr;
  }

  .placer-map__locus b {
    display: none;
  }
}


/* =========================================================
   VNEW.0.20 — Jardin II · Sortie / Courbe du Rappel
   ========================================================= */

.garden2-exit-hotspot {
  position: absolute;
  z-index: 5;
  min-width: 5rem;
  min-height: 8rem;
  border: 1px solid rgba(235,225,191,.13);
  border-radius: 48%;
  background: radial-gradient(ellipse at center, rgba(227,211,159,.12), transparent 68%);
  color: rgba(249,241,213,.9);
  cursor: pointer;
  opacity: .84;
  transition: opacity .22s ease, transform .22s ease, box-shadow .22s ease;
}

.garden2-exit-hotspot[hidden] { display: none; }

.garden2-exit-hotspot::before {
  content: "";
  position: absolute;
  inset: 8% 18%;
  border: 1px solid rgba(241,225,179,.2);
  border-radius: 48%;
  box-shadow: 0 0 38px rgba(230,207,144,.1);
}

.garden2-exit-hotspot span {
  position: absolute;
  left: 50%;
  bottom: -.2rem;
  transform: translateX(-50%);
  font-size: .6rem;
  letter-spacing: .13em;
  white-space: nowrap;
  text-shadow: 0 2px 14px #000;
}

.garden2-exit-hotspot:hover,
.garden2-exit-hotspot:focus-visible {
  opacity: 1;
  transform: scale(1.018);
  box-shadow: 0 0 46px rgba(231,213,158,.12);
}

.garden2-scene.is-awake .garden2-exit-hotspot { opacity: .28; }

.garden2-passage-layer {
  position: absolute;
  z-index: 31;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(9,11,8,.2);
  opacity: 0;
  pointer-events: none;
  transition: opacity .32s ease;
}

.garden2-passage-layer[hidden] { display: none; }

.garden2-scene.is-passing-to-recall-curve .garden2-passage-layer { opacity: 1; }

.garden2-scene.is-passing-to-recall-curve .garden2-stage__image {
  transform: scale(1.012);
  filter: brightness(.82);
}

.garden2-passage-layer__content {
  max-width: 45rem;
  padding: 1rem;
  text-align: center;
  color: rgba(249,242,219,.93);
  text-shadow: 0 3px 22px rgba(0,0,0,.72);
}

.garden2-passage-layer__content span {
  display: block;
  margin-bottom: .55rem;
  color: rgba(224,205,158,.84);
  font-size: .64rem;
  letter-spacing: .18em;
}

.garden2-passage-layer__content strong {
  display: block;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.8rem, 4.4vw, 3.65rem);
  font-weight: 500;
}

.garden2-passage-layer__content p {
  margin: .65rem 0 0;
  font-style: italic;
  color: rgba(245,237,214,.74);
}

.recall-curve-entry-scene {
  min-height: 100vh;
  background: #11120f;
}

.recall-curve-entry-stage {
  position: relative;
  min-height: 100vh;
  overflow: hidden;
}

.recall-curve-entry-stage__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  user-select: none;
  -webkit-user-drag: none;
}

.recall-curve-entry-stage__shade {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(8,9,7,.3), transparent 26%, transparent 68%, rgba(8,9,7,.42)),
    radial-gradient(circle at center, transparent 30%, rgba(7,8,6,.18) 100%);
}

.recall-curve-entry-heading {
  position: absolute;
  z-index: 3;
  top: clamp(3.4rem, 7vh, 5.2rem);
  left: 50%;
  transform: translateX(-50%);
  width: min(92%, 50rem);
  display: grid;
  gap: .32rem;
  justify-items: center;
  color: rgba(246,241,224,.92);
  text-align: center;
  text-shadow: 0 2px 18px rgba(0,0,0,.68);
}

.recall-curve-entry-heading span {
  color: rgba(221,208,175,.82);
  font-size: .64rem;
  letter-spacing: .18em;
}

.recall-curve-entry-heading strong {
  font-size: clamp(.86rem, 1.7vw, 1.15rem);
  font-weight: 500;
  letter-spacing: .16em;
}

.recall-curve-entry-card {
  position: absolute;
  z-index: 4;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -46%);
  width: min(37rem, calc(100% - 2rem));
  padding: clamp(1.3rem, 4vw, 2.2rem);
  border: 1px solid rgba(240,227,188,.16);
  border-radius: 1rem;
  background: rgba(31,33,26,.67);
  backdrop-filter: blur(8px);
  color: rgba(249,243,222,.92);
  text-align: center;
  box-shadow: 0 22px 70px rgba(0,0,0,.25);
}

.recall-curve-entry-card > span {
  display: block;
  color: rgba(221,204,158,.78);
  font-size: .63rem;
  letter-spacing: .16em;
}

.recall-curve-entry-card > strong {
  display: block;
  margin: .72rem 0 .8rem;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.7rem, 4vw, 3rem);
  font-weight: 500;
  line-height: 1.08;
}

.recall-curve-entry-card p {
  margin: 0 auto;
  max-width: 31rem;
  line-height: 1.62;
  color: rgba(245,237,216,.8);
}

.recall-curve-entry-card small {
  display: block;
  margin-top: 1rem;
  color: rgba(223,212,181,.62);
  line-height: 1.45;
}

.recall-curve-entry-back {
  position: absolute;
  z-index: 5;
  left: 1.25rem;
  bottom: 1.15rem;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px;
  background: rgba(10,12,10,.46);
  color: rgba(249,244,226,.84);
  padding: .58rem .82rem;
  backdrop-filter: blur(8px);
  cursor: pointer;
  font-size: .72rem;
}

.recall-curve-entry-maxim {
  position: absolute;
  z-index: 4;
  left: 50%;
  bottom: 1.35rem;
  transform: translateX(-50%);
  width: min(38rem, calc(100% - 11rem));
  margin: 0;
  color: rgba(244,239,224,.74);
  text-align: center;
  text-shadow: 0 2px 16px rgba(0,0,0,.72);
  font-size: clamp(.72rem, 1.2vw, .9rem);
  font-style: italic;
}

.recall-curve-entry-message {
  position: absolute;
  z-index: 6;
  right: 1rem;
  bottom: 1rem;
  max-width: 28rem;
  margin: 0;
  color: rgba(250,239,208,.88);
  font-size: .72rem;
  text-align: right;
  text-shadow: 0 2px 14px rgba(0,0,0,.8);
}

.recall-curve-entry-scene.is-locked .recall-curve-entry-card {
  opacity: .72;
}

@media (max-width: 760px) {
  .recall-curve-entry-maxim { display: none; }
  .recall-curve-entry-card { top: 48%; }
  .recall-curve-entry-message {
    left: 1rem;
    right: 1rem;
    bottom: 4.4rem;
    text-align: center;
  }
}

@media (prefers-reduced-motion: reduce) {
  .garden2-passage-layer,
  .garden2-stage__image {
    transition: none !important;
  }
}


/* =========================================================
   VNEW.0.21 — Courbe du Rappel · premier pont d’espacement
   ========================================================= */

.recall-curve-entry-start {
  margin-top: 1.15rem;
  border: 1px solid rgba(240,226,184,.28);
  border-radius: 999px;
  background: rgba(240,226,184,.1);
  color: rgba(250,244,224,.94);
  padding: .72rem 1rem;
  cursor: pointer;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .09em;
}

.recall-curve-entry-start:hover,
.recall-curve-entry-start:focus-visible {
  background: rgba(240,226,184,.16);
}

.recall-curve-entry-start:disabled {
  opacity: .42;
  cursor: not-allowed;
}

.recall-curve-exercise-layer {
  position: absolute;
  z-index: 18;
  inset: 0;
  display: grid;
  place-items: center;
  padding: clamp(4rem, 8vh, 6rem) clamp(.7rem, 4vw, 3rem) 2rem;
  background: rgba(9, 10, 8, .48);
  backdrop-filter: blur(5px);
}

.recall-curve-exercise-layer[hidden] {
  display: none;
}

.recall-curve-spacing-panel {
  width: min(100%, 68rem);
}

.spacing-cycle {
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: .55rem;
  margin: 1.1rem auto;
}

.spacing-cycle span {
  min-width: 8rem;
  padding: .75rem .85rem;
  border: 1px solid rgba(76, 62, 38, .16);
  border-radius: .55rem;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .55rem;
  align-items: center;
  color: rgba(72, 59, 37, .66);
}

.spacing-cycle span.is-active {
  border-color: rgba(102, 82, 46, .5);
  background: rgba(96, 76, 41, .08);
  color: #4d4028;
}

.spacing-cycle b {
  font-size: 1rem;
}

.spacing-cycle small {
  font-size: .66rem;
  letter-spacing: .11em;
  font-weight: 700;
}

.spacing-cycle i {
  align-self: center;
  color: rgba(76, 63, 39, .45);
  font-style: normal;
}

.spacing-rule-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .6rem;
  margin: 1rem 0;
}

.spacing-rule-grid article {
  min-height: 8.3rem;
  padding: .9rem;
  border: 1px solid rgba(74, 61, 38, .16);
  border-radius: .65rem;
  background: rgba(255,255,255,.025);
  display: grid;
  align-content: center;
  gap: .38rem;
}

.spacing-rule-grid article.is-highlighted {
  border-color: rgba(101, 80, 44, .58);
  background: rgba(101, 80, 44, .09);
  box-shadow: inset 0 0 0 1px rgba(101, 80, 44, .12);
}

.spacing-rule-grid span {
  color: #8a7650;
  font-size: .64rem;
  font-weight: 700;
  letter-spacing: .12em;
}

.spacing-rule-grid strong {
  font-size: .86rem;
  letter-spacing: .04em;
}

.spacing-rule-grid small {
  color: #746950;
  line-height: 1.45;
  font-size: .77rem;
}

.spacing-prompt {
  display: inline-block;
  margin-top: .45rem;
  color: #7b6d50;
  font-style: italic;
}

.spacing-choice-row {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem;
}

.spacing-choice-row .association-action {
  min-height: 3.8rem;
  border-radius: .5rem;
}

@media (max-width: 760px) {
  .recall-curve-exercise-layer {
    align-items: start;
    overflow: auto;
    padding: 4.2rem .45rem 1rem;
  }

  .spacing-cycle {
    display: grid;
    grid-template-columns: 1fr;
  }

  .spacing-cycle i {
    display: none;
  }

  .spacing-rule-grid,
  .spacing-choice-row {
    grid-template-columns: 1fr;
  }
}


/* =========================================================
   VNEW.0.22 — Courbe du Rappel · Priorité + Bibliothèque
   ========================================================= */

.recall-curve-entry-essential {
  margin-top: 1rem;
  padding: .75rem;
  border: 1px solid rgba(229, 209, 154, .2);
  border-radius: .7rem;
  background: rgba(255,255,255,.025);
}

.recall-curve-entry-essential > span {
  display: block;
  color: rgba(229, 207, 151, .76);
  font-size: .58rem;
  letter-spacing: .12em;
}

.recall-curve-entry-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .55rem;
  margin-top: .65rem;
}

.recall-curve-entry-actions .recall-curve-entry-start {
  margin-top: 0;
}

.recall-curve-entry-more {
  margin-top: .75rem;
  border-top: 1px solid rgba(229, 209, 154, .14);
  padding-top: .65rem;
}

.recall-curve-entry-more[hidden] { display: none; }

.recall-curve-entry-more > summary {
  width: fit-content;
  margin: 0 auto;
  color: rgba(238, 224, 190, .76);
  cursor: pointer;
  font-size: .62rem;
  letter-spacing: .1em;
}

.recall-curve-entry-more > p {
  max-width: 38rem;
  margin: .55rem auto 0;
  color: rgba(236, 228, 205, .63);
  font-size: .66rem;
  line-height: 1.45;
  text-align: center;
}

.recall-curve-entry-actions--secondary .recall-curve-entry-start {
  background: rgba(255,255,255,.025);
  border-color: rgba(229, 209, 154, .16);
  color: rgba(241, 232, 207, .78);
}

.recall-curve-entry-start--revision {
  background: rgba(181, 159, 102, .13);
}

.revision-panel {
  width: min(100%, 72rem);
}

.revision-ranking-rule {
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: .55rem;
  margin: 1rem 0;
}

.revision-ranking-rule > span {
  min-width: 10rem;
  padding: .8rem .9rem;
  border: 1px solid rgba(79, 65, 40, .16);
  border-radius: .6rem;
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: .55rem;
  row-gap: .12rem;
  align-items: center;
}

.revision-ranking-rule > span b {
  grid-row: 1 / 3;
  font-size: 1rem;
}

.revision-ranking-rule > span strong {
  font-size: .76rem;
  letter-spacing: .08em;
}

.revision-ranking-rule > span small {
  color: #74684e;
  font-size: .72rem;
}

.revision-ranking-rule > i {
  align-self: center;
  color: rgba(76, 63, 39, .45);
  font-style: normal;
}

.revision-priority-card {
  margin: .9rem 0;
  padding: 1rem 1.05rem;
  border: 1px solid rgba(78, 64, 39, .2);
  border-radius: .7rem;
  background: rgba(255,255,255,.025);
  display: grid;
  gap: .28rem;
}

.revision-priority-card > span {
  color: #8a7650;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .13em;
}

.revision-priority-card > strong {
  font-size: 1.05rem;
}

.revision-priority-card > p {
  margin: 0;
  color: #6f644d;
  line-height: 1.45;
}

.revision-priority-card > small {
  color: #8a7650;
  font-style: italic;
}

.revision-priority-card > b {
  margin-top: .35rem;
  font-size: .75rem;
  letter-spacing: .06em;
}

.revision-priority-card.is-absent {
  border-color: rgba(160, 86, 71, .42);
  background: rgba(160, 86, 71, .055);
}

.revision-priority-card.is-hesitated {
  border-color: rgba(185, 145, 65, .42);
  background: rgba(185, 145, 65, .055);
}

.revision-priority-card.is-direct {
  border-color: rgba(94, 132, 85, .38);
  background: rgba(94, 132, 85, .045);
}

.revision-candidate-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .6rem;
  margin: .9rem 0;
}

.revision-candidate-grid .association-action {
  min-height: 7.3rem;
  border-radius: .65rem;
  display: grid;
  align-content: center;
  gap: .3rem;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
}

.revision-candidate-grid .association-action span {
  color: #8a7650;
  font-size: .61rem;
  font-weight: 700;
  letter-spacing: .12em;
}

.revision-candidate-grid .association-action strong {
  font-size: .82rem;
}

.revision-candidate-grid .association-action small {
  color: #74684e;
  line-height: 1.4;
  font-size: .73rem;
}

.revision-library {
  display: grid;
  gap: .55rem;
  margin: 1rem 0;
}

.revision-library__item {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(12rem, .9fr) auto;
  align-items: center;
  gap: .8rem;
  padding: .8rem .9rem;
  border: 1px solid rgba(75, 61, 38, .14);
  border-radius: .6rem;
  background: rgba(255,255,255,.018);
}

.revision-library__item.is-priority {
  box-shadow: inset 3px 0 0 rgba(119, 92, 47, .55);
}

.revision-library__item.is-absent {
  border-color: rgba(160, 86, 71, .28);
}

.revision-library__item.is-hesitated {
  border-color: rgba(185, 145, 65, .28);
}

.revision-library__item.is-direct {
  border-color: rgba(94, 132, 85, .24);
}

.revision-library__item-main,
.revision-library__item-decision {
  display: grid;
  gap: .16rem;
}

.revision-library__item-main > span {
  color: #8a7650;
  font-size: .59rem;
  font-weight: 700;
  letter-spacing: .12em;
}

.revision-library__item-main > strong {
  font-size: .82rem;
}

.revision-library__item-main > small,
.revision-library__item-decision > small {
  color: #756a52;
  line-height: 1.35;
  font-size: .7rem;
}

.revision-library__item-main > em {
  color: #8a7650;
  font-size: .67rem;
}

.revision-library__item-decision > b {
  font-size: .7rem;
  letter-spacing: .05em;
}

.revision-library__item .association-action {
  min-height: 2.8rem;
  border-radius: .45rem;
  white-space: nowrap;
}

.revision-library.is-compact .revision-library__item {
  grid-template-columns: minmax(0, 1.4fr) minmax(11rem, .8fr);
}

@media (max-width: 900px) {
  .revision-ranking-rule {
    display: grid;
    grid-template-columns: 1fr;
  }

  .revision-ranking-rule > i {
    display: none;
  }

  .revision-candidate-grid {
    grid-template-columns: 1fr;
  }

  .revision-library__item,
  .revision-library.is-compact .revision-library__item {
    grid-template-columns: 1fr;
  }

  .revision-library__item .association-action {
    justify-self: start;
  }
}


/* VNEW.0.23 — Courbe du Rappel · échéance relative */
.recall-curve-entry-start--window{background:rgba(196,171,104,.16)}
.relative-window-panel{width:min(100%,70rem)}
.relative-window-timeline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;margin:1rem 0}
.relative-window-timeline article{padding:.85rem;border:1px solid rgba(75,61,38,.16);border-radius:.6rem;display:grid;gap:.25rem;text-align:center;background:rgba(255,255,255,.02)}
.relative-window-timeline article.is-reference{border-style:dashed}.relative-window-timeline article.is-highlighted{border-color:rgba(111,87,45,.62);background:rgba(111,87,45,.08)}
.relative-window-timeline article strong{font-size:.78rem;letter-spacing:.06em}.relative-window-timeline article small{color:#756a51;font-size:.72rem;line-height:1.4}.relative-window-timeline>p{grid-column:1/-1;text-align:center;color:#7b6c4c;font-size:.72rem}
.relative-window-note{padding:.75rem .85rem;border-left:3px solid rgba(111,87,45,.38);background:rgba(111,87,45,.04)}.relative-window-note strong{font-size:.72rem;letter-spacing:.08em}.relative-window-note p{margin:.28rem 0 0;color:#74684e;font-size:.76rem;line-height:1.45}
.relative-window-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;margin:.8rem 0}.relative-window-choice-grid.is-two{grid-template-columns:repeat(2,minmax(0,1fr))}.relative-window-choice-grid .association-action{min-height:5.2rem;display:grid;align-content:center;gap:.25rem;text-align:left;text-transform:none;letter-spacing:0}.relative-window-choice-grid .association-action strong{font-size:.74rem}.relative-window-choice-grid .association-action small{color:#756a51;font-size:.71rem;line-height:1.4}
.relative-window-rule-table{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;margin:1rem 0}.relative-window-rule-table span{padding:.75rem;border:1px solid rgba(75,61,38,.14);border-radius:.55rem;display:grid;gap:.2rem}.relative-window-rule-table b{color:#8a7650;font-size:.62rem;letter-spacing:.1em}.relative-window-rule-table strong{font-size:.78rem}
@media(max-width:760px){.relative-window-timeline,.relative-window-choice-grid,.relative-window-choice-grid.is-two,.relative-window-rule-table{grid-template-columns:1fr}}


/* =========================================================
   VNEW.0.24 — Courbe du Rappel · Premiers délais concrets
   ========================================================= */

.recall-curve-entry-start--delay {
  background: rgba(211, 182, 101, .18);
}

.concrete-delay-panel {
  width: min(100%, 70rem);
}

.concrete-delay-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .65rem;
  margin: 1rem 0;
}

.concrete-delay-strip article {
  min-height: 7.2rem;
  padding: .85rem;
  border: 1px solid rgba(75, 61, 38, .15);
  border-radius: .65rem;
  display: grid;
  align-content: center;
  gap: .28rem;
  text-align: center;
  background: rgba(255,255,255,.022);
}

.concrete-delay-strip article.is-highlighted {
  border-color: rgba(112, 86, 44, .62);
  background: rgba(112, 86, 44, .085);
  box-shadow: inset 0 0 0 1px rgba(112, 86, 44, .12);
}

.concrete-delay-strip article span {
  color: #8a7650;
  font-size: .61rem;
  font-weight: 700;
  letter-spacing: .11em;
}

.concrete-delay-strip article strong {
  font-size: 1rem;
  letter-spacing: .04em;
}

.concrete-delay-strip article small {
  color: #756a51;
  line-height: 1.4;
  font-size: .72rem;
}

.concrete-delay-strip > p {
  grid-column: 1 / -1;
  margin: 0;
  text-align: center;
  color: #786b50;
  font-size: .71rem;
  letter-spacing: .06em;
}

.concrete-delay-caution,
.concrete-delay-repair {
  margin: .8rem 0;
  padding: .85rem .95rem;
  border-left: 3px solid rgba(113, 87, 44, .4);
  background: rgba(113, 87, 44, .045);
}

.concrete-delay-caution strong,
.concrete-delay-repair strong {
  font-size: .72rem;
  letter-spacing: .08em;
}

.concrete-delay-caution p,
.concrete-delay-repair p {
  margin: .3rem 0 0;
  color: #74684e;
  line-height: 1.5;
  font-size: .78rem;
}

.concrete-delay-choice-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem;
  margin: .8rem 0;
}

.concrete-delay-choice-grid .association-action {
  min-height: 5.5rem;
  border-radius: .55rem;
  display: grid;
  align-content: center;
  gap: .25rem;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
}

.concrete-delay-choice-grid .association-action strong {
  font-size: .8rem;
  letter-spacing: .06em;
}

.concrete-delay-choice-grid .association-action small {
  color: #756a51;
  line-height: 1.4;
  font-size: .72rem;
}

.concrete-delay-rule-table {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .5rem;
  margin: 1rem 0;
}

.concrete-delay-rule-table span {
  min-height: 5.6rem;
  padding: .75rem;
  border: 1px solid rgba(75, 61, 38, .14);
  border-radius: .55rem;
  display: grid;
  align-content: center;
  gap: .2rem;
}

.concrete-delay-rule-table b {
  color: #8a7650;
  font-size: .61rem;
  letter-spacing: .1em;
}

.concrete-delay-rule-table strong {
  font-size: .76rem;
}

.concrete-delay-rule-table small {
  color: #756a51;
  font-size: .69rem;
}

@media (max-width: 800px) {
  .concrete-delay-strip,
  .concrete-delay-choice-grid,
  .concrete-delay-rule-table {
    grid-template-columns: 1fr;
  }
}


/* =========================================================
   VNEW.0.25 — Courbe du Rappel · Première échéance réelle locale
   ========================================================= */

.recall-curve-entry-start--local-due {
  background: rgba(222, 190, 104, .2);
}

.recall-curve-local-due {
  width: min(100%, 43rem);
  margin: 1rem auto 0;
}

.recall-curve-local-due[hidden] {
  display: none;
}

.recall-curve-local-due__card {
  padding: .9rem 1rem;
  border: 1px solid rgba(211, 181, 105, .34);
  border-radius: .7rem;
  background: rgba(21, 20, 14, .34);
  display: grid;
  gap: .24rem;
  text-align: left;
}

.recall-curve-local-due__card.is-due {
  border-color: rgba(232, 191, 94, .72);
  box-shadow: 0 0 1.4rem rgba(232, 191, 94, .14);
}

.recall-curve-local-due__card > span {
  color: rgba(230, 203, 132, .92);
  font-size: .61rem;
  font-weight: 700;
  letter-spacing: .12em;
}

.recall-curve-local-due__card > strong {
  color: rgba(250, 243, 221, .96);
  font-size: .92rem;
}

.recall-curve-local-due__card > p {
  margin: .08rem 0;
  color: rgba(246, 236, 205, .9);
  line-height: 1.4;
}

.recall-curve-local-due__card > small {
  color: rgba(218, 206, 174, .78);
  line-height: 1.4;
  font-size: .7rem;
}

.recall-curve-local-due__card > div {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin-top: .45rem;
}

.recall-curve-local-due__card button {
  border: 1px solid rgba(230, 209, 151, .24);
  border-radius: 999px;
  background: rgba(230, 209, 151, .08);
  color: rgba(250, 243, 221, .92);
  padding: .48rem .7rem;
  cursor: pointer;
  font-size: .61rem;
  letter-spacing: .07em;
}

.local-due-panel {
  width: min(100%, 68rem);
}

.local-due-flow {
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: .55rem;
  margin: 1rem 0;
}

.local-due-flow > span {
  min-width: 9rem;
  padding: .75rem .8rem;
  border: 1px solid rgba(75, 61, 38, .15);
  border-radius: .6rem;
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: .55rem;
  row-gap: .12rem;
  align-items: center;
}

.local-due-flow > span.is-active {
  border-color: rgba(112, 86, 44, .58);
  background: rgba(112, 86, 44, .08);
}

.local-due-flow > span b {
  grid-row: 1 / 3;
  font-size: 1rem;
}

.local-due-flow > span small {
  color: #8a7650;
  font-size: .61rem;
  letter-spacing: .1em;
}

.local-due-flow > span strong {
  font-size: .76rem;
}

.local-due-flow > i {
  align-self: center;
  color: rgba(76, 63, 39, .45);
  font-style: normal;
}

.local-due-preview {
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(84, 67, 39, .18);
  border-radius: .7rem;
  background: rgba(255,255,255,.025);
  display: grid;
  grid-template-columns: auto auto auto minmax(0, 1fr);
  gap: .55rem;
  align-items: center;
}

.local-due-preview.is-created {
  border-color: rgba(107, 86, 46, .5);
  background: rgba(107, 86, 46, .07);
}

.local-due-preview > span {
  grid-column: 1 / -1;
  color: #8a7650;
  font-size: .61rem;
  font-weight: 700;
  letter-spacing: .11em;
}

.local-due-preview > strong {
  font-size: .9rem;
}

.local-due-preview > i {
  font-style: normal;
  color: rgba(76,63,39,.45);
}

.local-due-preview > b {
  font-size: .9rem;
}

.local-due-preview > small {
  grid-column: 1 / -1;
  color: #756a51;
  font-size: .72rem;
}

@media (max-width: 760px) {
  .local-due-flow {
    display: grid;
    grid-template-columns: 1fr;
  }

  .local-due-flow > i {
    display: none;
  }

  .local-due-preview {
    grid-template-columns: 1fr;
  }

  .local-due-preview > span,
  .local-due-preview > small {
    grid-column: auto;
  }
}


/* =========================================================
   VNEW.0.26 — Révision due · exécution réelle
   ========================================================= */

.recall-curve-local-due__card.is-running {
  border-color: rgba(221, 179, 78, .74);
  background: rgba(118, 88, 30, .12);
  box-shadow: 0 0 1.6rem rgba(221, 179, 78, .12);
}

.recall-curve-local-due__card.is-completed {
  border-color: rgba(111, 151, 96, .48);
  background: rgba(87, 126, 77, .1);
}

.recall-curve-local-due__card.is-completed > span {
  color: rgba(190, 225, 174, .94);
}


/* =========================================================
   VNEW.0.27 — Replanification après révision
   ========================================================= */

.adaptive-replan-panel {
  width: min(100%, 70rem);
}

.adaptive-replan-compare {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: .65rem;
  align-items: stretch;
  margin: 1rem 0;
}

.adaptive-replan-compare > i {
  align-self: center;
  color: rgba(89, 70, 40, .46);
  font-style: normal;
}

.adaptive-replan-signal,
.adaptive-replan-priority,
.adaptive-replan-preview {
  border: 1px solid rgba(82, 65, 39, .17);
  border-radius: .65rem;
  background: rgba(255,255,255,.026);
}

.adaptive-replan-signal {
  min-height: 7rem;
  padding: .85rem;
  display: grid;
  align-content: center;
  gap: .25rem;
}

.adaptive-replan-signal > span,
.adaptive-replan-priority > span {
  color: #8a7650;
  font-size: .61rem;
  font-weight: 700;
  letter-spacing: .11em;
}

.adaptive-replan-signal > strong {
  font-size: .86rem;
}

.adaptive-replan-signal > b {
  font-size: .78rem;
  letter-spacing: .08em;
}

.adaptive-replan-signal > small {
  color: #756a51;
  font-size: .71rem;
}

.adaptive-replan-priority {
  margin: 1rem 0;
  padding: 1rem;
  display: grid;
  gap: .28rem;
  border-color: rgba(117, 90, 45, .45);
  background: rgba(117, 90, 45, .07);
}

.adaptive-replan-priority > strong {
  font-size: 1rem;
}

.adaptive-replan-priority > p {
  margin: 0;
  color: #74684e;
  line-height: 1.45;
}

.adaptive-replan-priority > b {
  margin-top: .25rem;
  font-size: .75rem;
  letter-spacing: .08em;
}

.adaptive-replan-preview {
  margin: 1rem 0;
  padding: 1rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto minmax(0, 1fr);
  gap: .55rem;
  align-items: center;
}

.adaptive-replan-preview.is-created {
  border-color: rgba(102, 136, 88, .46);
  background: rgba(84, 124, 74, .07);
}

.adaptive-replan-preview > span {
  grid-column: 1 / -1;
  color: #8a7650;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .08em;
}

.adaptive-replan-preview > strong {
  font-size: .86rem;
}

.adaptive-replan-preview > i {
  color: rgba(89, 70, 40, .46);
  font-style: normal;
}

.adaptive-replan-preview > b {
  font-size: .86rem;
}

@media (max-width: 760px) {
  .adaptive-replan-compare {
    grid-template-columns: 1fr;
  }

  .adaptive-replan-compare > i {
    display: none;
  }

  .adaptive-replan-preview {
    grid-template-columns: 1fr;
  }

  .adaptive-replan-preview > span {
    grid-column: auto;
  }
}


/* =========================================================
   VNEW.0.28 — Premiers paliers d’espacement adaptatifs
   ========================================================= */

.adaptive-spacing-ladder {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .5rem;
  margin: 1rem 0;
}

.adaptive-spacing-ladder article {
  position: relative;
  min-height: 5.4rem;
  padding: .75rem;
  border: 1px solid rgba(82, 65, 39, .14);
  border-radius: .55rem;
  background: rgba(255,255,255,.018);
  display: grid;
  align-content: center;
  gap: .2rem;
  text-align: center;
}

.adaptive-spacing-ladder article::after {
  content: "→";
  position: absolute;
  right: -.43rem;
  top: 50%;
  transform: translateY(-50%);
  color: rgba(91, 73, 44, .34);
  font-size: .7rem;
}

.adaptive-spacing-ladder article:last-child::after {
  display: none;
}

.adaptive-spacing-ladder article.is-previous {
  border-color: rgba(111, 91, 58, .4);
  background: rgba(111, 91, 58, .055);
}

.adaptive-spacing-ladder article.is-next {
  border-color: rgba(109, 143, 91, .62);
  background: rgba(84, 127, 74, .09);
  box-shadow: inset 0 0 0 1px rgba(109, 143, 91, .12);
}

.adaptive-spacing-ladder article > span {
  color: #8a7650;
  font-size: .57rem;
  font-weight: 700;
  letter-spacing: .09em;
}

.adaptive-spacing-ladder article > strong {
  font-size: .8rem;
  letter-spacing: .04em;
}

.adaptive-replan-priority > small {
  color: #756a51;
  font-size: .72rem;
  line-height: 1.45;
}

@media (max-width: 760px) {
  .adaptive-spacing-ladder {
    grid-template-columns: 1fr 1fr;
  }

  .adaptive-spacing-ladder article::after {
    display: none;
  }
}

@media (max-width: 460px) {
  .adaptive-spacing-ladder {
    grid-template-columns: 1fr;
  }
}


/* =========================================================
   VNEW.0.29 — Historique léger des révisions
   ========================================================= */

.recall-curve-entry-start--history {
  background: rgba(203, 183, 126, .12);
}

.review-history-panel {
  width: min(100%, 72rem);
}

.review-history-sources {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin: .9rem 0;
}

.review-history-sources button {
  min-width: 10rem;
  padding: .65rem .75rem;
  border: 1px solid rgba(77, 62, 38, .15);
  border-radius: .55rem;
  background: rgba(255,255,255,.02);
  display: grid;
  gap: .12rem;
  text-align: left;
  cursor: pointer;
}

.review-history-sources button.is-active {
  border-color: rgba(111, 88, 48, .56);
  background: rgba(111, 88, 48, .08);
}

.review-history-sources strong {
  font-size: .73rem;
}

.review-history-sources small {
  color: #766a52;
  font-size: .65rem;
}

.review-history-current {
  margin: .85rem 0;
  padding: .85rem .95rem;
  border-left: 3px solid rgba(111, 88, 48, .38);
  background: rgba(111, 88, 48, .04);
  display: grid;
  gap: .16rem;
}

.review-history-current > span {
  color: #8a7650;
  font-size: .6rem;
  font-weight: 700;
  letter-spacing: .11em;
}

.review-history-current > strong {
  font-size: .9rem;
}

.review-history-current > small {
  color: #756a51;
  font-size: .7rem;
}

.review-history-list {
  display: grid;
  gap: .55rem;
  margin: .9rem 0;
}

.review-history-cycle {
  padding: .8rem .9rem;
  border: 1px solid rgba(75, 61, 38, .14);
  border-radius: .6rem;
  background: rgba(255,255,255,.018);
}

.review-history-cycle > time {
  display: block;
  margin-bottom: .55rem;
  color: #8a7650;
  font-size: .64rem;
}

.review-history-cycle__flow {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1.35fr);
  align-items: center;
  gap: .45rem;
}

.review-history-cycle__flow > span {
  min-height: 4.1rem;
  padding: .55rem .6rem;
  border: 1px solid rgba(75, 61, 38, .11);
  border-radius: .5rem;
  display: grid;
  align-content: center;
  gap: .15rem;
}

.review-history-cycle__flow > span small {
  color: #8a7650;
  font-size: .55rem;
  font-weight: 700;
  letter-spacing: .08em;
}

.review-history-cycle__flow > span strong {
  font-size: .72rem;
}

.review-history-cycle__flow > i {
  color: rgba(86, 69, 43, .4);
  font-style: normal;
}

.review-history-cycle > p {
  margin: .55rem 0 0;
  color: #756a51;
  line-height: 1.4;
  font-size: .69rem;
}

@media (max-width: 760px) {
  .review-history-sources {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .review-history-cycle__flow {
    grid-template-columns: 1fr;
  }

  .review-history-cycle__flow > i {
    display: none;
  }
}

@media (max-width: 460px) {
  .review-history-sources {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   VNEW.0.31 — Priorité éclairée par la stabilité
   ========================================================= */

.revision-stability {
  margin-top: .45rem;
  padding: .62rem .72rem;
  border: 1px solid rgba(77, 63, 38, .15);
  border-radius: .55rem;
  background: rgba(255,255,255,.022);
  display: grid;
  gap: .15rem;
}

.revision-stability > span {
  color: #8a7650;
  font-size: .56rem;
  font-weight: 700;
  letter-spacing: .12em;
}

.revision-stability > strong {
  font-size: .72rem;
  letter-spacing: .07em;
}

.revision-stability > small {
  color: #756a51;
  font-size: .69rem;
  line-height: 1.45;
}

.revision-stability.is-fragile {
  border-color: rgba(160, 86, 71, .36);
  background: rgba(160, 86, 71, .055);
}

.revision-stability.is-consolidating {
  border-color: rgba(185, 145, 65, .33);
  background: rgba(185, 145, 65, .045);
}

.revision-stability.is-stable {
  border-color: rgba(94, 132, 85, .34);
  background: rgba(94, 132, 85, .045);
}

.revision-stability.is-compact {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  margin-top: .28rem;
  padding: .28rem .48rem;
  width: fit-content;
}

.revision-stability.is-compact > strong {
  font-size: .61rem;
}

.revision-priority-why {
  margin-top: .65rem;
  padding-top: .65rem;
  border-top: 1px solid rgba(78, 64, 39, .14);
  display: grid;
  gap: .2rem;
}

.revision-priority-why > span {
  color: #8a7650;
  font-size: .56rem;
  font-weight: 700;
  letter-spacing: .12em;
}

.revision-priority-why > strong {
  font-size: .82rem;
}

.revision-priority-why > p {
  margin: 0;
  color: #74684e;
  line-height: 1.45;
  font-size: .74rem;
}

.revision-priority-why > small {
  color: #8a7650;
  font-size: .67rem;
  font-style: italic;
}


/* =========================================================
   VNEW.0.32 — Courbe du Rappel · Reconstituer le Domaine
   ========================================================= */

.recall-curve-entry-start--domain {
  background: rgba(210, 190, 132, .14);
}

.domain-reconstruction-panel {
  width: min(100%, 72rem);
}

.domain-mental-pause {
  margin: 1rem 0;
  padding: 1.15rem;
  border: 1px solid rgba(99, 80, 48, .17);
  border-radius: .7rem;
  background: rgba(255,255,255,.022);
  text-align: center;
}

.domain-mental-pause strong {
  font-size: .92rem;
  letter-spacing: .08em;
}

.domain-mental-pause p {
  max-width: 38rem;
  margin: .55rem auto 0;
  color: #756a51;
  line-height: 1.55;
  font-size: .78rem;
}

.domain-route-sequence {
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: .45rem;
  margin: 1.05rem 0;
}

.domain-route-sequence > span {
  min-width: 8.5rem;
  min-height: 4.7rem;
  padding: .7rem .75rem;
  border: 1px dashed rgba(83, 66, 40, .24);
  border-radius: .58rem;
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: .5rem;
  align-items: center;
  background: rgba(255,255,255,.015);
}

.domain-route-sequence > span.is-filled {
  border-style: solid;
  border-color: rgba(108, 86, 47, .42);
  background: rgba(108, 86, 47, .055);
}

.domain-route-sequence.is-revealed > span {
  border-color: rgba(91, 131, 82, .42);
  background: rgba(91, 131, 82, .06);
}

.domain-route-sequence > span b {
  color: #8a7650;
  font-size: .67rem;
}

.domain-route-sequence > span strong {
  font-size: .76rem;
  letter-spacing: .06em;
}

.domain-route-sequence > i {
  align-self: center;
  color: rgba(78, 64, 38, .38);
  font-style: normal;
}

.domain-route-choices,
.domain-meaning-choices {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .55rem;
  margin: .8rem 0;
}

.domain-route-choices .association-action,
.domain-meaning-choices .association-action {
  min-height: 4.6rem;
  border-radius: .55rem;
}

.domain-meaning-place {
  margin: 1rem auto;
  max-width: 26rem;
  padding: 1rem;
  border: 1px solid rgba(104, 82, 44, .3);
  border-radius: .65rem;
  background: rgba(104, 82, 44, .05);
  display: grid;
  gap: .3rem;
  text-align: center;
}

.domain-meaning-place span {
  color: #8a7650;
  font-size: .64rem;
  font-weight: 700;
  letter-spacing: .12em;
}

.domain-meaning-place strong {
  font-size: 1.25rem;
  font-weight: 500;
}

.domain-learning-map {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .55rem;
  margin: 1rem 0;
}

.domain-learning-map article {
  min-height: 6.5rem;
  padding: .85rem .9rem;
  border: 1px solid rgba(80, 64, 39, .14);
  border-radius: .6rem;
  background: rgba(255,255,255,.018);
  display: grid;
  align-content: center;
  gap: .2rem;
}

.domain-learning-map article.is-highlighted {
  border-color: rgba(104, 135, 88, .52);
  background: rgba(88, 128, 78, .07);
}

.domain-learning-map article span {
  color: #8a7650;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .1em;
}

.domain-learning-map article strong {
  font-size: .79rem;
  letter-spacing: .04em;
}

.domain-learning-map article small {
  color: #756a51;
  line-height: 1.42;
  font-size: .71rem;
}

@media (max-width: 900px) {
  .domain-route-sequence {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .domain-route-sequence > i {
    display: none;
  }

  .domain-route-sequence > span {
    min-width: 0;
  }

  .domain-route-choices,
  .domain-meaning-choices {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 560px) {
  .domain-route-sequence,
  .domain-route-choices,
  .domain-meaning-choices,
  .domain-learning-map {
    grid-template-columns: 1fr;
  }
}


/* =========================================================
   VNEW.0.33 — Passage / Seuil du Palais
   ========================================================= */

.recall-curve-palace-exit {
  display: flex;
  align-items: center;
  justify-content: center;
  width: min(100%, 25rem);
  min-height: 2.9rem;
  margin: .85rem auto 0;
  border: 1px solid rgba(230, 211, 157, .52);
  border-radius: 999px;
  background: rgba(209, 177, 96, .16);
  color: rgba(250, 244, 224, .98);
  padding: .72rem 1rem;
  font-size: .66rem;
  font-weight: 750;
  letter-spacing: .1em;
  backdrop-filter: blur(8px);
  cursor: pointer;
  box-shadow: 0 .5rem 1.6rem rgba(0,0,0,.16);
}

.recall-curve-palace-exit[hidden] {
  display: none;
}

.palace-passage-scene,
.palace-antechamber-scene {
  position: relative;
  min-height: min(100svh, 60rem);
  overflow: hidden;
  color: rgba(247, 240, 220, .95);
  background: #171813;
}

.palace-passage-scene__world,
.palace-antechamber-scene__architecture {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.palace-passage-scene__master,
.palace-antechamber-scene__master {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  user-select: none;
  -webkit-user-drag: none;
}


.palace-passage-scene__world {
  background: #7f8469;
}

.palace-passage-scene__garden {
  position: absolute;
  inset: 0 38% 0 0;
  background:
    radial-gradient(circle at 10% 20%, rgba(98, 122, 75, .55), transparent 25%),
    radial-gradient(circle at 44% 54%, rgba(72, 105, 66, .42), transparent 32%),
    linear-gradient(100deg, rgba(22, 34, 25, .94), rgba(53, 72, 47, .6));
}

.palace-passage-scene__stone-wall {
  position: absolute;
  right: -4%;
  top: 0;
  width: 64%;
  height: 100%;
  background:
    repeating-linear-gradient(
      0deg,
      rgba(255,255,255,.025) 0,
      rgba(255,255,255,.025) 1px,
      transparent 1px,
      transparent 4rem
    ),
    repeating-linear-gradient(
      90deg,
      rgba(255,255,255,.018) 0,
      rgba(255,255,255,.018) 1px,
      transparent 1px,
      transparent 7rem
    ),
    linear-gradient(145deg, #b8aa8d, #8f836c 55%, #6f6555);
  box-shadow: inset 2rem 0 5rem rgba(35, 31, 24, .32);
  clip-path: polygon(18% 0, 100% 0, 100% 100%, 5% 100%);
}

.palace-passage-scene__arch {
  position: absolute;
  right: 13%;
  top: 12%;
  width: min(26vw, 20rem);
  aspect-ratio: .72;
  border: clamp(.8rem, 1.8vw, 1.5rem) solid rgba(215, 202, 170, .78);
  border-bottom: 0;
  border-radius: 48% 48% 0 0 / 32% 32% 0 0;
  box-shadow:
    inset 0 0 0 .35rem rgba(78, 67, 52, .22),
    0 1rem 3rem rgba(20, 18, 14, .34);
}

.palace-passage-scene__arch span {
  position: absolute;
  inset: 8% 8% 0;
  border-radius: 48% 48% 0 0 / 32% 32% 0 0;
  background:
    radial-gradient(circle at 50% 42%, rgba(255, 227, 159, .34), transparent 24%),
    linear-gradient(180deg, #34362f, #171914 70%);
}

.palace-passage-scene__path {
  position: absolute;
  left: 17%;
  bottom: -5%;
  width: 64%;
  height: 42%;
  background: linear-gradient(100deg, rgba(139, 126, 96, .32), rgba(209, 193, 151, .52));
  clip-path: polygon(0 100%, 22% 0, 68% 0, 100% 100%);
  filter: blur(.2px);
}

.palace-passage-scene__light {
  position: absolute;
  right: 6%;
  top: 5%;
  width: 44%;
  height: 82%;
  background: radial-gradient(ellipse at 50% 45%, rgba(244, 216, 151, .26), transparent 57%);
  mix-blend-mode: screen;
}

.palace-passage-scene__veil,
.palace-antechamber-scene__veil {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(16, 17, 14, .86), rgba(16, 17, 14, .28) 58%, rgba(16, 17, 14, .2)),
    linear-gradient(180deg, rgba(10, 11, 9, .08), rgba(10, 11, 9, .52));
}

.palace-passage-card,
.palace-threshold-card {
  position: relative;
  z-index: 3;
  width: min(92%, 44rem);
  margin: 0;
  padding: clamp(1.3rem, 3vw, 2.2rem);
  min-height: min(100svh, 60rem);
  display: grid;
  align-content: center;
  gap: .85rem;
}

.palace-passage-card {
  margin-left: clamp(.5rem, 5vw, 5rem);
}

.palace-passage-card h1,
.palace-threshold-card h1 {
  margin: 0;
  max-width: 16ch;
  font-size: clamp(2rem, 5vw, 4.5rem);
  line-height: .98;
  font-weight: 500;
  letter-spacing: -.035em;
}

.palace-passage-card > p:not(.eyebrow):not(.palace-passage-card__message),
.palace-threshold-card > p:not(.eyebrow):not(.palace-threshold-card__next) {
  max-width: 39rem;
  margin: 0;
  color: rgba(238, 230, 205, .82);
  line-height: 1.62;
}

.palace-passage-card__sequence {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr;
  align-items: center;
  gap: .5rem;
  max-width: 38rem;
  margin-top: .35rem;
}

.palace-passage-card__sequence span {
  min-height: 4.7rem;
  padding: .7rem;
  border: 1px solid rgba(230, 211, 157, .18);
  border-radius: .6rem;
  background: rgba(22, 21, 17, .32);
  display: grid;
  align-content: center;
  gap: .1rem;
}

.palace-passage-card__sequence small,
.palace-threshold-card__principles small,
.palace-threshold-card__hall-status small {
  color: rgba(220, 210, 181, .7);
  font-size: .67rem;
  line-height: 1.4;
}

.palace-passage-card__sequence strong {
  font-size: .72rem;
  letter-spacing: .07em;
}

.palace-passage-card__sequence i {
  color: rgba(231, 212, 160, .46);
  font-style: normal;
}

.palace-passage-card blockquote {
  max-width: 35rem;
  margin: .45rem 0;
  padding: .9rem 1rem;
  border-left: 2px solid rgba(231, 211, 158, .4);
  color: rgba(247, 239, 215, .9);
  font-size: clamp(.9rem, 1.6vw, 1.08rem);
  line-height: 1.55;
}

.palace-passage-card__locked,
.palace-threshold-card__hall-status {
  width: min(100%, 27rem);
  padding: .85rem 1rem;
  border: 1px solid rgba(225, 203, 145, .21);
  border-radius: .6rem;
  background: rgba(22, 21, 17, .38);
  display: grid;
  gap: .18rem;
}

.palace-passage-card__locked strong,
.palace-threshold-card__hall-status strong {
  letter-spacing: .09em;
}

.palace-passage-card__locked small {
  color: rgba(220, 210, 181, .72);
  font-size: .68rem;
}

.palace-passage-card__actions,
.palace-threshold-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  margin-top: .35rem;
}

.palace-passage-card__actions button,
.palace-threshold-card__actions button {
  border: 1px solid rgba(231, 213, 162, .28);
  border-radius: 999px;
  background: rgba(24, 23, 18, .42);
  color: rgba(248, 241, 220, .94);
  padding: .68rem .9rem;
  font-size: .63rem;
  letter-spacing: .09em;
  cursor: pointer;
}

.palace-passage-card__actions button.is-primary {
  background: rgba(220, 195, 128, .16);
  border-color: rgba(233, 211, 150, .5);
}

.palace-passage-card__message {
  min-height: 1.2rem;
  margin: 0;
  color: rgba(232, 216, 171, .78);
  font-size: .72rem;
}

/* Antichambre */

.palace-antechamber-scene {
  background: #d4c7a8;
  color: #3d3528;
}

.palace-antechamber-scene__architecture {
  background: #b8aa8b;
}

.palace-antechamber-scene__vault {
  position: absolute;
  left: 10%;
  right: 10%;
  top: -38%;
  height: 74%;
  border: clamp(1rem, 2vw, 2rem) solid rgba(106, 92, 70, .42);
  border-bottom: 0;
  border-radius: 50% 50% 0 0;
  box-shadow: inset 0 -1rem 4rem rgba(255, 239, 199, .14);
}

.palace-antechamber-scene__column {
  position: absolute;
  top: 12%;
  bottom: 0;
  width: clamp(4.5rem, 8vw, 8rem);
  background:
    repeating-linear-gradient(
      90deg,
      rgba(255,255,255,.06) 0,
      rgba(255,255,255,.06) .3rem,
      rgba(80, 70, 55, .035) .3rem,
      rgba(80, 70, 55, .035) .72rem
    ),
    linear-gradient(90deg, #9e9074, #c8b99a 50%, #8b7f67);
  box-shadow: 0 1rem 2.5rem rgba(63, 53, 40, .18);
}

.palace-antechamber-scene__column::before,
.palace-antechamber-scene__column::after {
  content: "";
  position: absolute;
  left: -14%;
  width: 128%;
  height: 7%;
  background: linear-gradient(90deg, #887b63, #c7b89a, #8b7d65);
  box-shadow: 0 .3rem .7rem rgba(62, 53, 42, .12);
}

.palace-antechamber-scene__column::before {
  top: -2%;
}

.palace-antechamber-scene__column::after {
  bottom: 0;
}

.palace-antechamber-scene__column.is-left {
  left: 9%;
}

.palace-antechamber-scene__column.is-right {
  right: 9%;
}

.palace-antechamber-scene__grand-door {
  position: absolute;
  left: 50%;
  top: 14%;
  transform: translateX(-50%);
  width: min(31vw, 24rem);
  height: 67%;
  border: clamp(.8rem, 1.5vw, 1.3rem) solid rgba(113, 95, 68, .52);
  border-bottom-width: 1.6rem;
  border-radius: 50% 50% .3rem .3rem / 24% 24% .3rem .3rem;
  background: linear-gradient(90deg, #4c4234, #71604a 48%, #453b30);
  box-shadow:
    inset 0 0 0 .3rem rgba(220, 193, 133, .16),
    0 2rem 4rem rgba(60, 49, 36, .25);
}

.palace-antechamber-scene__grand-door span {
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  width: 1px;
  background: rgba(219, 190, 128, .24);
}

.palace-antechamber-scene__mosaic {
  position: absolute;
  left: 17%;
  right: 17%;
  bottom: -9%;
  height: 42%;
  transform: perspective(36rem) rotateX(62deg);
  transform-origin: bottom;
  background:
    repeating-linear-gradient(45deg, rgba(80, 68, 49, .12) 0 .8rem, transparent .8rem 1.6rem),
    repeating-linear-gradient(-45deg, rgba(255,255,255,.08) 0 .8rem, transparent .8rem 1.6rem),
    linear-gradient(180deg, #b9aa8b, #94866e);
  border: 1px solid rgba(90, 77, 58, .2);
}

.palace-antechamber-scene__warm-light {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 20%, rgba(255, 226, 157, .35), transparent 28%),
    linear-gradient(90deg, rgba(72, 62, 48, .24), transparent 28%, transparent 72%, rgba(72, 62, 48, .24));
  mix-blend-mode: soft-light;
}

.palace-antechamber-scene__veil {
  background:
    linear-gradient(90deg, rgba(43, 36, 28, .68), rgba(43, 36, 28, .15) 60%, rgba(43, 36, 28, .28)),
    linear-gradient(180deg, rgba(255, 247, 222, .05), rgba(45, 38, 29, .26));
}

.palace-threshold-card {
  margin-left: clamp(.5rem, 5vw, 5rem);
  color: rgba(250, 244, 225, .96);
}

.palace-threshold-card__principles {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem;
  max-width: 43rem;
  margin-top: .2rem;
}

.palace-threshold-card__principles article {
  min-height: 7rem;
  padding: .8rem;
  border: 1px solid rgba(232, 214, 166, .2);
  border-radius: .6rem;
  background: rgba(32, 28, 22, .36);
  display: grid;
  align-content: center;
  gap: .18rem;
}

.palace-threshold-card__principles span {
  color: rgba(225, 199, 137, .82);
  font-size: .68rem;
}

.palace-threshold-card__principles strong {
  font-size: .72rem;
  letter-spacing: .07em;
}

.palace-threshold-card__hall-status {
  margin-top: .2rem;
}

.palace-threshold-card__hall-status > span {
  color: rgba(222, 201, 151, .72);
  font-size: .62rem;
  letter-spacing: .11em;
}

.palace-threshold-card__hall-status.is-locked {
  border-color: rgba(155, 104, 76, .35);
}

.palace-threshold-card__next {
  margin: .1rem 0 0;
  color: rgba(237, 224, 188, .8);
  font-size: .75rem;
  letter-spacing: .04em;
}

@media (max-width: 760px) {
  .recall-curve-palace-exit {
    right: 1rem;
    bottom: 4rem;
  }

  .palace-passage-card,
  .palace-threshold-card {
    width: 100%;
    margin-left: 0;
    padding: 1.1rem;
    align-content: end;
    padding-bottom: 5rem;
    background: linear-gradient(180deg, transparent 0%, rgba(18, 17, 14, .72) 42%, rgba(18, 17, 14, .92) 100%);
  }

  .palace-passage-card h1,
  .palace-threshold-card h1 {
    font-size: clamp(2rem, 11vw, 3.4rem);
  }

  .palace-passage-card__sequence,
  .palace-threshold-card__principles {
    grid-template-columns: 1fr;
  }

  .palace-passage-card__sequence i {
    display: none;
  }

  .palace-passage-scene__stone-wall {
    width: 80%;
    right: -20%;
  }

  .palace-passage-scene__arch {
    right: 9%;
    top: 10%;
    width: 44vw;
  }

  .palace-antechamber-scene__column.is-left {
    left: -2%;
  }

  .palace-antechamber-scene__column.is-right {
    right: -2%;
  }

  .palace-antechamber-scene__grand-door {
    width: 48vw;
  }
}


/* =========================================================
   VNEW.0.34 — Palais · Première route de loci
   ========================================================= */

.palace-antechamber-scene__niche {
  position: absolute;
  top: 31%;
  width: 13%;
  height: 25%;
  border: .55rem solid rgba(105, 91, 70, .34);
  border-bottom-width: .85rem;
  border-radius: 48% 48% .2rem .2rem / 34% 34% .2rem .2rem;
  background:
    radial-gradient(circle at 50% 45%, rgba(242, 216, 160, .11), transparent 35%),
    linear-gradient(180deg, rgba(82, 72, 58, .46), rgba(57, 50, 41, .66));
  box-shadow: inset 0 0 1.5rem rgba(28, 24, 19, .28);
}

.palace-antechamber-scene__niche.is-left {
  left: 22%;
}

.palace-antechamber-scene__niche.is-right {
  right: 22%;
}

.palace-antechamber-scene__keystone {
  position: absolute;
  left: 50%;
  top: 58%;
  bottom: auto;
  width: 2.4rem;
  height: 2.8rem;
  transform: translateX(-50%);
  background: linear-gradient(180deg, #c2b290, #8f8168);
  clip-path: polygon(14% 0, 86% 0, 100% 100%, 0 100%);
  box-shadow: 0 .35rem .8rem rgba(54, 44, 32, .16);
}

.palace-threshold-card__actions button.is-primary {
  background: rgba(215, 190, 126, .18);
  border-color: rgba(230, 205, 145, .52);
}

.palace-threshold-message {
  position: absolute;
  left: clamp(1rem, 5vw, 5rem);
  bottom: 1.1rem;
  z-index: 5;
  margin: 0;
  color: rgba(245, 233, 198, .78);
  font-size: .72rem;
}

.palace-route-layer {
  position: absolute;
  inset: 0;
  z-index: 12;
}

.palace-route-layer[hidden] {
  display: none;
}

.palace-route-map__surface {
  position: absolute;
  inset: 0;
  cursor: crosshair;
}

.palace-route-map__surface.is-blind .palace-route-marker {
  display: none;
}

.palace-route-markers {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.palace-route-marker {
  position: absolute;
  border: 1px solid rgba(247, 224, 160, .58);
  border-radius: .45rem;
  background: rgba(222, 194, 126, .09);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.04),
    0 0 1.2rem rgba(230, 198, 119, .08);
  display: grid;
  align-content: center;
  justify-items: center;
  gap: .12rem;
  color: rgba(255, 245, 215, .96);
  text-align: center;
  transition: opacity .18s ease, transform .18s ease;
}

.palace-route-marker.is-active {
  border-color: rgba(255, 222, 134, .92);
  background: rgba(223, 181, 83, .18);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.08),
    0 0 1.8rem rgba(235, 191, 89, .22);
}

.palace-route-marker.is-dimmed {
  opacity: .28;
}

.palace-route-marker b {
  font-size: .82rem;
  line-height: 1;
}

.palace-route-marker small {
  max-width: 90%;
  font-size: clamp(.48rem, .8vw, .63rem);
  line-height: 1.1;
  letter-spacing: .06em;
}

.palace-route-panel {
  position: absolute;
  left: clamp(.7rem, 3vw, 2.5rem);
  bottom: clamp(.7rem, 3vw, 2rem);
  width: min(48rem, calc(100% - 1.4rem));
  max-height: min(64vh, 38rem);
  overflow: auto;
  padding: 1rem 1.05rem;
  border: 1px solid rgba(233, 213, 159, .23);
  border-radius: .8rem;
  background:
    linear-gradient(180deg, rgba(27, 25, 20, .88), rgba(18, 17, 14, .94));
  box-shadow: 0 1.3rem 3rem rgba(10, 9, 7, .38);
  backdrop-filter: blur(12px);
  color: rgba(250, 244, 224, .96);
}

.palace-route-panel > header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: .8rem;
}

.palace-route-panel h2 {
  margin: .1rem 0 0;
  font-size: clamp(1.35rem, 2.8vw, 2.25rem);
  line-height: 1.04;
  font-weight: 500;
}

.palace-route-panel > header > button {
  flex: 0 0 auto;
  border: 1px solid rgba(233, 213, 159, .2);
  border-radius: 999px;
  background: rgba(255,255,255,.03);
  color: rgba(247, 239, 218, .88);
  padding: .48rem .65rem;
  cursor: pointer;
  font-size: .6rem;
  letter-spacing: .07em;
}

.palace-route-panel__copy,
.palace-route-panel__note {
  color: rgba(226, 216, 188, .8);
  line-height: 1.5;
}

.palace-route-panel__copy {
  margin: .65rem 0 .75rem;
  font-size: .8rem;
}

.palace-route-panel__note {
  margin: .65rem 0 0;
  font-size: .68rem;
}

.palace-route-panel__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin-top: .75rem;
}

.palace-route-action {
  border: 1px solid rgba(232, 213, 162, .25);
  border-radius: 999px;
  background: rgba(255,255,255,.035);
  color: rgba(250, 244, 223, .95);
  padding: .62rem .8rem;
  font-size: .62rem;
  letter-spacing: .075em;
  cursor: pointer;
}

.palace-route-action--primary {
  background: rgba(213, 181, 101, .17);
  border-color: rgba(233, 205, 139, .5);
}

.palace-route-principles {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .45rem;
}

.palace-route-principles > span {
  min-height: 5rem;
  padding: .65rem;
  border: 1px solid rgba(232, 211, 158, .15);
  border-radius: .55rem;
  background: rgba(255,255,255,.025);
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: .5rem;
  align-content: center;
}

.palace-route-principles b {
  grid-row: 1 / 3;
  color: rgba(229, 200, 133, .83);
  font-size: .78rem;
}

.palace-route-principles strong {
  font-size: .72rem;
  letter-spacing: .08em;
}

.palace-route-principles small {
  color: rgba(218, 207, 178, .7);
  font-size: .67rem;
}

.palace-route-list {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .42rem;
  padding: 0;
  margin: .2rem 0 0;
}

.palace-route-list li {
  min-height: 6.5rem;
  padding: .58rem;
  border: 1px solid rgba(231, 211, 159, .14);
  border-radius: .5rem;
  background: rgba(255,255,255,.02);
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: .42rem;
  align-content: start;
}

.palace-route-list li > span {
  color: rgba(228, 197, 127, .82);
  font-size: .67rem;
}

.palace-route-list strong {
  display: block;
  font-size: .67rem;
  letter-spacing: .055em;
}

.palace-route-list small {
  display: block;
  margin-top: .2rem;
  color: rgba(214, 203, 175, .66);
  font-size: .61rem;
  line-height: 1.34;
}

.palace-route-instruction,
.palace-route-blind-prompt,
.palace-route-feedback,
.palace-route-repair,
.palace-route-complete,
.palace-route-blind-intro {
  padding: .75rem .8rem;
  border: 1px solid rgba(232, 211, 159, .17);
  border-radius: .58rem;
  background: rgba(255,255,255,.025);
}

.palace-route-instruction,
.palace-route-blind-prompt {
  display: grid;
  gap: .16rem;
}

.palace-route-instruction span,
.palace-route-blind-prompt span {
  color: rgba(228, 198, 130, .82);
  font-size: .6rem;
  letter-spacing: .09em;
}

.palace-route-instruction strong {
  font-size: .86rem;
}

.palace-route-blind-prompt strong {
  font-size: 1.4rem;
}

.palace-route-instruction small,
.palace-route-blind-prompt small,
.palace-route-complete small {
  color: rgba(218, 207, 177, .68);
  font-size: .66rem;
}

.palace-route-feedback.is-direct {
  border-color: rgba(114, 157, 98, .4);
  background: rgba(91, 135, 77, .08);
}

.palace-route-feedback.is-weak,
.palace-route-repair {
  border-color: rgba(190, 152, 82, .42);
  background: rgba(174, 128, 55, .08);
}

.palace-route-feedback p,
.palace-route-repair p,
.palace-route-blind-intro p {
  margin: .28rem 0 0;
  color: rgba(218, 207, 177, .72);
  font-size: .69rem;
  line-height: 1.4;
}

.palace-route-blind-intro {
  text-align: center;
}

.palace-route-blind-intro strong {
  letter-spacing: .12em;
}

.palace-route-summary {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: .42rem;
  margin-top: .65rem;
}

.palace-route-summary > span {
  padding: .65rem;
  border: 1px solid rgba(231, 211, 159, .14);
  border-radius: .5rem;
  background: rgba(255,255,255,.02);
  display: grid;
  gap: .1rem;
}

.palace-route-summary small {
  color: rgba(218, 206, 175, .65);
  font-size: .58rem;
  letter-spacing: .08em;
}

.palace-route-summary strong {
  font-size: 1rem;
}

.palace-route-complete {
  display: grid;
  gap: .28rem;
  border-color: rgba(105, 150, 91, .4);
  background: rgba(86, 127, 75, .08);
}

.has-route-exercise .palace-antechamber-scene__veil {
  background:
    linear-gradient(180deg, rgba(24, 21, 17, .08), rgba(24, 21, 17, .28));
}

@media (max-width: 860px) {
  .palace-route-panel {
    max-height: 52vh;
  }

  .palace-route-list {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 620px) {
  .palace-route-panel {
    left: .55rem;
    bottom: .55rem;
    width: calc(100% - 1.1rem);
    max-height: 55vh;
    padding: .85rem;
  }

  .palace-route-principles,
  .palace-route-list,
  .palace-route-summary {
    grid-template-columns: 1fr;
  }

  .palace-route-marker small {
    display: none;
  }

  .palace-route-marker b {
    font-size: .72rem;
  }

  .palace-route-action {
    flex: 1 1 auto;
  }
}


/* =========================================================
   VNEW.0.35 — Palais · Premier placement de souvenirs
   ========================================================= */

.palace-place-layer {
  position: absolute;
  inset: 0;
  z-index: 13;
}

.palace-place-layer[hidden] {
  display: none;
}

.palace-place-map__surface {
  position: absolute;
  inset: 0;
  cursor: crosshair;
}

.palace-place-map__surface.is-blind .palace-route-marker {
  display: none;
}

.palace-place-panel {
  width: min(50rem, calc(100% - 1.4rem));
}

.palace-place-formula,
.palace-place-recall-formula {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr;
  gap: .45rem;
  align-items: stretch;
  margin: .4rem 0;
}

.palace-place-formula > span,
.palace-place-recall-formula > span {
  min-height: 4.5rem;
  padding: .62rem;
  border: 1px solid rgba(232, 211, 159, .15);
  border-radius: .52rem;
  background: rgba(255,255,255,.025);
  display: grid;
  align-content: center;
  gap: .12rem;
  text-align: center;
}

.palace-place-formula > span.is-result {
  border-color: rgba(108, 151, 93, .38);
  background: rgba(86, 128, 75, .07);
}

.palace-place-formula small {
  color: rgba(222, 204, 158, .7);
  font-size: .56rem;
  letter-spacing: .08em;
}

.palace-place-formula strong {
  font-size: .7rem;
  letter-spacing: .055em;
}

.palace-place-formula > i,
.palace-place-recall-formula > i {
  align-self: center;
  color: rgba(233, 211, 157, .48);
  font-style: normal;
}

.palace-place-series {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .42rem;
  margin: .35rem 0;
  padding: 0;
}

.palace-place-series li {
  min-height: 5.5rem;
  padding: .65rem;
  border: 1px solid rgba(232, 211, 159, .16);
  border-radius: .55rem;
  background: rgba(255,255,255,.025);
  display: grid;
  align-content: center;
  gap: .16rem;
  text-align: center;
}

.palace-place-series span {
  color: rgba(226, 197, 126, .75);
  font-size: .61rem;
}

.palace-place-series strong {
  font-size: .74rem;
  letter-spacing: .07em;
}

.palace-place-target,
.palace-place-installed,
.palace-place-repair {
  display: grid;
  grid-template-columns: auto 1fr auto auto 1fr;
  gap: .45rem;
  align-items: center;
  padding: .72rem .8rem;
  border: 1px solid rgba(232, 211, 159, .17);
  border-radius: .56rem;
  background: rgba(255,255,255,.024);
}

.palace-place-target span {
  color: rgba(224, 203, 153, .7);
  font-size: .56rem;
  letter-spacing: .08em;
}

.palace-place-target strong,
.palace-place-installed strong,
.palace-place-installed b,
.palace-place-repair strong,
.palace-place-repair b {
  font-size: .75rem;
  letter-spacing: .055em;
}

.palace-place-target i,
.palace-place-installed i,
.palace-place-repair i {
  color: rgba(231, 210, 157, .48);
  font-style: normal;
}

.palace-place-aid {
  margin-top: .55rem;
  padding: .7rem .78rem;
  border: 1px solid rgba(230, 207, 151, .14);
  border-radius: .55rem;
  background: rgba(255,255,255,.018);
}

.palace-place-aid span {
  color: rgba(226, 196, 124, .76);
  font-size: .57rem;
  font-weight: 700;
  letter-spacing: .1em;
}

.palace-place-aid p {
  margin: .28rem 0 0;
  color: rgba(226, 216, 187, .76);
  line-height: 1.45;
  font-size: .7rem;
}

.palace-place-aid.is-example {
  border-color: rgba(211, 184, 111, .28);
}

.palace-place-aid.is-verbs {
  border-style: dashed;
}

.palace-place-aid.is-question {
  border-color: rgba(126, 148, 96, .26);
}

.palace-place-aid.is-none {
  border-color: rgba(112, 151, 95, .3);
  background: rgba(84, 127, 73, .055);
}

.palace-place-error {
  margin-top: .5rem;
  padding: .58rem .68rem;
  border: 1px solid rgba(190, 132, 80, .38);
  border-radius: .5rem;
  background: rgba(157, 95, 50, .08);
  display: grid;
  gap: .12rem;
}

.palace-place-error strong {
  font-size: .68rem;
}

.palace-place-error small {
  color: rgba(232, 210, 180, .72);
  font-size: .64rem;
  line-height: 1.35;
}

.palace-place-quality-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: .42rem;
  margin-top: .55rem;
}

.palace-place-quality {
  min-height: 4.6rem;
  border: 1px solid rgba(232, 211, 159, .16);
  border-radius: .52rem;
  background: rgba(255,255,255,.02);
  color: rgba(248, 241, 220, .92);
  cursor: pointer;
  display: grid;
  align-content: center;
  gap: .12rem;
}

.palace-place-quality.is-active {
  border-color: rgba(108, 151, 92, .5);
  background: rgba(83, 126, 72, .08);
}

.palace-place-quality strong {
  font-size: .68rem;
  letter-spacing: .075em;
}

.palace-place-quality small {
  color: rgba(215, 203, 172, .65);
  font-size: .56rem;
  letter-spacing: .06em;
}

.palace-place-quality-help {
  margin: .45rem 0 0;
  color: rgba(218, 207, 178, .66);
  font-size: .63rem;
  line-height: 1.45;
}

.palace-place-interference,
.palace-place-recall-formula {
  padding: .72rem .8rem;
  border: 1px solid rgba(231, 211, 158, .16);
  border-radius: .55rem;
  background: rgba(255,255,255,.022);
}

.palace-place-interference {
  display: grid;
  gap: .25rem;
  text-align: center;
}

.palace-place-interference strong {
  font-size: .72rem;
  letter-spacing: .05em;
}

.palace-place-interference small {
  color: rgba(218, 206, 176, .66);
  font-size: .62rem;
}

.palace-place-recall-formula {
  grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr auto 1fr;
}

.palace-place-recall-formula span {
  min-height: auto;
  font-size: .68rem;
  letter-spacing: .06em;
}

.palace-place-memory-choices {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .4rem;
}

.palace-place-action {
  border: 1px solid rgba(232, 213, 162, .25);
  border-radius: 999px;
  background: rgba(255,255,255,.035);
  color: rgba(250, 244, 223, .95);
  padding: .62rem .8rem;
  font-size: .62rem;
  letter-spacing: .075em;
  cursor: pointer;
}

.palace-place-action--primary {
  background: rgba(213, 181, 101, .17);
  border-color: rgba(233, 205, 139, .5);
}

.palace-place-action--choice {
  min-height: 4.3rem;
  border-radius: .52rem;
  background: rgba(255,255,255,.025);
}

.palace-place-memory-result {
  padding: .7rem .78rem;
  border: 1px solid rgba(232, 211, 159, .16);
  border-radius: .55rem;
  background: rgba(255,255,255,.022);
}

.palace-place-memory-result.is-direct {
  border-color: rgba(108, 151, 92, .42);
  background: rgba(84, 128, 73, .07);
}

.palace-place-memory-result.is-weak {
  border-color: rgba(190, 132, 80, .4);
  background: rgba(157, 95, 50, .075);
}

.palace-place-memory-result p {
  margin: .28rem 0 0;
  color: rgba(220, 208, 178, .72);
  font-size: .68rem;
  line-height: 1.4;
}

.palace-place-repair {
  grid-template-columns: 1fr auto 1fr;
}

.palace-place-repair small {
  grid-column: 1 / -1;
  color: rgba(222, 206, 166, .68);
  font-size: .61rem;
  letter-spacing: .06em;
}

.palace-place-pairs {
  display: grid;
  gap: .38rem;
}

.palace-place-pairs article {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto minmax(0, 1fr);
  gap: .45rem;
  align-items: center;
  padding: .55rem .65rem;
  border: 1px solid rgba(230, 210, 157, .14);
  border-radius: .5rem;
  background: rgba(255,255,255,.018);
}

.palace-place-pairs span {
  color: rgba(225, 196, 124, .75);
  font-size: .61rem;
}

.palace-place-pairs strong,
.palace-place-pairs b {
  font-size: .68rem;
  letter-spacing: .05em;
}

.palace-place-pairs i {
  color: rgba(231, 210, 157, .44);
  font-style: normal;
}

.has-place-exercise .palace-antechamber-scene__veil {
  background:
    linear-gradient(180deg, rgba(24, 21, 17, .08), rgba(24, 21, 17, .3));
}

@media (max-width: 820px) {
  .palace-place-formula {
    grid-template-columns: 1fr;
  }

  .palace-place-formula > i {
    display: none;
  }

  .palace-place-series,
  .palace-place-memory-choices {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 620px) {
  .palace-place-quality-grid,
  .palace-place-series,
  .palace-place-memory-choices {
    grid-template-columns: 1fr;
  }

  .palace-place-recall-formula {
    grid-template-columns: 1fr;
  }

  .palace-place-recall-formula > i {
    display: none;
  }

  .palace-place-target,
  .palace-place-installed {
    grid-template-columns: 1fr;
  }

  .palace-place-target i,
  .palace-place-installed i {
    display: none;
  }

  .palace-place-pairs article {
    grid-template-columns: auto 1fr;
  }

  .palace-place-pairs article i {
    display: none;
  }
}


/* =========================================================
   VNEW.0.36 — Palais · Première série sans modèle
   ========================================================= */

.palace-autonomous-layer {
  position: absolute;
  inset: 0;
  z-index: 14;
}

.palace-autonomous-layer[hidden] {
  display: none;
}

.palace-autonomous-panel {
  width: min(52rem, calc(100% - 1.4rem));
}

.palace-autonomous-action {
  border: 1px solid rgba(232, 213, 162, .25);
  border-radius: 999px;
  background: rgba(255,255,255,.035);
  color: rgba(250, 244, 223, .95);
  padding: .62rem .8rem;
  font-size: .62rem;
  letter-spacing: .075em;
  cursor: pointer;
}

.palace-autonomous-action--primary {
  background: rgba(213, 181, 101, .17);
  border-color: rgba(233, 205, 139, .5);
}

.palace-autonomous-action--rating {
  min-height: 4rem;
  border-radius: .55rem;
  background: rgba(255,255,255,.025);
}

.palace-autonomous-rule {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  gap: .45rem;
  align-items: stretch;
  margin: .4rem 0;
}

.palace-autonomous-rule > span {
  min-height: 5rem;
  padding: .7rem;
  border: 1px solid rgba(232, 211, 159, .16);
  border-radius: .55rem;
  background: rgba(255,255,255,.024);
  display: grid;
  align-content: center;
  gap: .14rem;
  text-align: center;
}

.palace-autonomous-rule > span strong {
  font-size: .72rem;
  letter-spacing: .08em;
}

.palace-autonomous-rule > span small {
  color: rgba(220, 208, 178, .68);
  font-size: .64rem;
  line-height: 1.35;
}

.palace-autonomous-rule > i {
  align-self: center;
  color: rgba(231, 210, 157, .45);
  font-style: normal;
}

.palace-autonomous-series {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .42rem;
  margin: .4rem 0;
  padding: 0;
}

.palace-autonomous-series li {
  min-height: 5.5rem;
  padding: .65rem;
  border: 1px solid rgba(232, 211, 159, .16);
  border-radius: .55rem;
  background: rgba(255,255,255,.022);
  display: grid;
  align-content: center;
  gap: .16rem;
  text-align: center;
}

.palace-autonomous-series span {
  color: rgba(226, 197, 126, .75);
  font-size: .61rem;
}

.palace-autonomous-series strong {
  font-size: .74rem;
  letter-spacing: .07em;
}

.palace-autonomous-no-model,
.palace-autonomous-reminder,
.palace-autonomous-hidden-memory,
.palace-autonomous-reveal,
.palace-autonomous-repair-rule {
  margin-top: .55rem;
  padding: .72rem .8rem;
  border: 1px solid rgba(231, 211, 158, .16);
  border-radius: .56rem;
  background: rgba(255,255,255,.022);
}

.palace-autonomous-no-model {
  border-color: rgba(109, 150, 94, .33);
  background: rgba(82, 126, 72, .055);
}

.palace-autonomous-no-model span,
.palace-autonomous-hidden-memory span,
.palace-autonomous-reveal span {
  color: rgba(226, 197, 126, .78);
  font-size: .58rem;
  font-weight: 700;
  letter-spacing: .1em;
}

.palace-autonomous-no-model p,
.palace-autonomous-reminder small,
.palace-autonomous-repair-rule p {
  margin: .28rem 0 0;
  color: rgba(221, 210, 181, .72);
  line-height: 1.45;
  font-size: .68rem;
}

.palace-autonomous-reminder {
  display: grid;
  gap: .15rem;
}

.palace-autonomous-reminder strong {
  font-size: .72rem;
}

.palace-autonomous-hidden-memory,
.palace-autonomous-reveal {
  display: grid;
  justify-items: center;
  gap: .18rem;
  text-align: center;
}

.palace-autonomous-hidden-memory strong {
  font-size: 1.6rem;
  font-weight: 500;
}

.palace-autonomous-hidden-memory small {
  color: rgba(220, 208, 178, .67);
  font-size: .64rem;
}

.palace-autonomous-reveal {
  border-color: rgba(105, 151, 91, .38);
  background: rgba(82, 126, 72, .06);
}

.palace-autonomous-reveal strong {
  font-size: 1.1rem;
  letter-spacing: .08em;
}

.palace-autonomous-ratings {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: .42rem;
  margin-top: .55rem;
}

.palace-autonomous-diagnoses {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: .45rem;
}

.palace-autonomous-diagnoses button {
  min-height: 7rem;
  padding: .75rem;
  border: 1px solid rgba(231, 210, 157, .17);
  border-radius: .56rem;
  background: rgba(255,255,255,.022);
  color: rgba(248, 241, 220, .94);
  cursor: pointer;
  display: grid;
  align-content: center;
  gap: .18rem;
  text-align: left;
}

.palace-autonomous-diagnoses strong {
  color: rgba(230, 201, 133, .88);
  font-size: .7rem;
  letter-spacing: .08em;
}

.palace-autonomous-diagnoses small {
  color: rgba(219, 208, 180, .7);
  font-size: .65rem;
  line-height: 1.4;
}

.palace-autonomous-repair-rule {
  border-color: rgba(189, 146, 76, .38);
  background: rgba(158, 108, 53, .07);
}

.palace-autonomous-repair-rule strong {
  color: rgba(236, 203, 132, .9);
  font-size: .72rem;
  letter-spacing: .08em;
}

.palace-autonomous-summary {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: .42rem;
  margin-top: .65rem;
}

.palace-autonomous-summary > span {
  padding: .65rem;
  border: 1px solid rgba(231, 211, 159, .14);
  border-radius: .5rem;
  background: rgba(255,255,255,.02);
  display: grid;
  gap: .1rem;
}

.palace-autonomous-summary small {
  color: rgba(218, 206, 175, .65);
  font-size: .56rem;
  letter-spacing: .07em;
}

.palace-autonomous-summary strong {
  font-size: 1rem;
}

.has-autonomous-exercise .palace-antechamber-scene__veil {
  background:
    linear-gradient(180deg, rgba(24, 21, 17, .08), rgba(24, 21, 17, .3));
}

@media (max-width: 820px) {
  .palace-autonomous-series {
    grid-template-columns: 1fr 1fr;
  }

  .palace-autonomous-summary {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 620px) {
  .palace-autonomous-rule,
  .palace-autonomous-ratings,
  .palace-autonomous-diagnoses,
  .palace-autonomous-series,
  .palace-autonomous-summary {
    grid-template-columns: 1fr;
  }

  .palace-autonomous-rule > i {
    display: none;
  }

  .palace-autonomous-action {
    width: 100%;
  }
}


/* =========================================================
   VNEW.0.37 — Palais · Transférer une information réelle
   ========================================================= */

.palace-transfer-layer {
  position: absolute;
  inset: 0;
  z-index: 15;
}

.palace-transfer-layer[hidden] {
  display: none;
}

.palace-transfer-panel {
  width: min(54rem, calc(100% - 1.4rem));
}

.palace-transfer-action {
  border: 1px solid rgba(232, 213, 162, .25);
  border-radius: 999px;
  background: rgba(255,255,255,.035);
  color: rgba(250, 244, 223, .95);
  padding: .62rem .8rem;
  font-size: .62rem;
  letter-spacing: .075em;
  cursor: pointer;
}

.palace-transfer-action:disabled {
  opacity: .38;
  cursor: not-allowed;
}

.palace-transfer-action--primary {
  background: rgba(213, 181, 101, .17);
  border-color: rgba(233, 205, 139, .5);
}

.palace-transfer-action--rating {
  min-height: 4rem;
  border-radius: .55rem;
  background: rgba(255,255,255,.025);
}

.palace-transfer-boundary {
  padding: .82rem .9rem;
  border: 1px solid rgba(193, 147, 84, .34);
  border-radius: .62rem;
  background: rgba(163, 112, 54, .065);
  display: grid;
  gap: .28rem;
}

.palace-transfer-boundary strong {
  color: rgba(239, 208, 143, .94);
  font-size: .72rem;
  letter-spacing: .08em;
}

.palace-transfer-boundary p,
.palace-transfer-boundary small {
  margin: 0;
  color: rgba(225, 212, 180, .74);
  line-height: 1.45;
}

.palace-transfer-boundary p {
  font-size: .7rem;
}

.palace-transfer-boundary small {
  font-size: .64rem;
}

.palace-transfer-field {
  display: grid;
  gap: .28rem;
}

.palace-transfer-field > span {
  color: rgba(226, 198, 130, .78);
  font-size: .59rem;
  font-weight: 700;
  letter-spacing: .09em;
}

.palace-transfer-field textarea,
.palace-transfer-field input {
  width: 100%;
  border: 1px solid rgba(232, 211, 159, .2);
  border-radius: .58rem;
  background: rgba(15, 14, 12, .34);
  color: rgba(252, 247, 230, .96);
  padding: .72rem .78rem;
  font: inherit;
  font-size: .78rem;
  line-height: 1.45;
  outline: none;
}

.palace-transfer-field textarea:focus,
.palace-transfer-field input:focus {
  border-color: rgba(235, 207, 139, .56);
  box-shadow: 0 0 0 2px rgba(235, 207, 139, .08);
}

.palace-transfer-safety {
  width: 100%;
  margin-top: .5rem;
  padding: .72rem .78rem;
  border: 1px solid rgba(232, 211, 159, .17);
  border-radius: .58rem;
  background: rgba(255,255,255,.022);
  color: rgba(248, 241, 220, .93);
  cursor: pointer;
  display: grid;
  gap: .14rem;
  text-align: left;
}

.palace-transfer-safety.is-active {
  border-color: rgba(101, 151, 91, .46);
  background: rgba(78, 129, 69, .075);
}

.palace-transfer-safety strong {
  font-size: .68rem;
  letter-spacing: .07em;
}

.palace-transfer-safety small {
  color: rgba(219, 208, 180, .7);
  font-size: .63rem;
  line-height: 1.42;
}

.palace-transfer-private-preview,
.palace-transfer-reveal {
  margin: .35rem 0 .55rem;
  padding: .72rem .8rem;
  border: 1px solid rgba(230, 210, 157, .16);
  border-radius: .58rem;
  background: rgba(255,255,255,.022);
  display: grid;
  gap: .16rem;
}

.palace-transfer-private-preview > span,
.palace-transfer-reveal > span {
  color: rgba(227, 198, 129, .76);
  font-size: .56rem;
  font-weight: 700;
  letter-spacing: .09em;
}

.palace-transfer-private-preview > strong,
.palace-transfer-reveal > strong {
  overflow-wrap: anywhere;
  font-size: .82rem;
  line-height: 1.4;
}

.palace-transfer-reveal {
  border-color: rgba(100, 149, 90, .38);
  background: rgba(78, 125, 69, .065);
}

.palace-transfer-reveal small {
  color: rgba(218, 206, 176, .66);
  font-size: .63rem;
  overflow-wrap: anywhere;
}

.palace-transfer-transform-rule {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  gap: .42rem;
  align-items: stretch;
  margin-top: .55rem;
}

.palace-transfer-transform-rule > span {
  min-height: 4.8rem;
  padding: .62rem;
  border: 1px solid rgba(232, 211, 159, .14);
  border-radius: .54rem;
  background: rgba(255,255,255,.02);
  display: grid;
  align-content: center;
  gap: .13rem;
  text-align: center;
}

.palace-transfer-transform-rule > span strong {
  color: rgba(230, 199, 127, .85);
  font-size: .75rem;
}

.palace-transfer-transform-rule > span small {
  color: rgba(218, 207, 178, .68);
  font-size: .63rem;
  line-height: 1.35;
}

.palace-transfer-transform-rule > i {
  align-self: center;
  color: rgba(231, 210, 157, .44);
  font-style: normal;
}

.palace-transfer-locus-choices {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .42rem;
}

.palace-transfer-locus-choices button {
  min-height: 7.2rem;
  padding: .68rem;
  border: 1px solid rgba(231, 210, 157, .16);
  border-radius: .56rem;
  background: rgba(255,255,255,.022);
  color: rgba(248, 241, 220, .94);
  cursor: pointer;
  display: grid;
  align-content: start;
  gap: .15rem;
  text-align: left;
}

.palace-transfer-locus-choices button:hover,
.palace-transfer-locus-choices button:focus {
  border-color: rgba(234, 206, 137, .48);
  background: rgba(215, 181, 99, .06);
}

.palace-transfer-locus-choices span {
  color: rgba(229, 198, 124, .8);
  font-size: .61rem;
}

.palace-transfer-locus-choices strong {
  font-size: .66rem;
  letter-spacing: .055em;
}

.palace-transfer-locus-choices small {
  color: rgba(215, 204, 175, .66);
  font-size: .59rem;
  line-height: 1.32;
}

.palace-transfer-pair {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto minmax(0, 1fr);
  gap: .45rem;
  align-items: center;
  padding: .72rem .8rem;
  border: 1px solid rgba(232, 211, 159, .16);
  border-radius: .56rem;
  background: rgba(255,255,255,.022);
}

.palace-transfer-pair span {
  color: rgba(224, 202, 151, .7);
  font-size: .56rem;
  letter-spacing: .08em;
}

.palace-transfer-pair strong {
  overflow-wrap: anywhere;
  font-size: .72rem;
}

.palace-transfer-pair i {
  color: rgba(231, 210, 157, .45);
  font-style: normal;
}

.palace-transfer-diagnoses {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: .42rem;
}

.palace-transfer-diagnoses button {
  min-height: 7.4rem;
  padding: .72rem;
  border: 1px solid rgba(231, 210, 157, .16);
  border-radius: .56rem;
  background: rgba(255,255,255,.022);
  color: rgba(248, 241, 220, .94);
  cursor: pointer;
  display: grid;
  align-content: center;
  gap: .18rem;
  text-align: left;
}

.palace-transfer-diagnoses strong {
  color: rgba(230, 199, 127, .86);
  font-size: .69rem;
  letter-spacing: .075em;
}

.palace-transfer-diagnoses small {
  color: rgba(218, 207, 178, .68);
  font-size: .62rem;
  line-height: 1.4;
}

.palace-transfer-flow {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr;
  gap: .42rem;
  align-items: stretch;
  margin-bottom: .65rem;
}

.palace-transfer-flow > span {
  min-height: 4.5rem;
  padding: .62rem;
  border: 1px solid rgba(231, 210, 157, .15);
  border-radius: .54rem;
  background: rgba(255,255,255,.02);
  display: grid;
  align-content: center;
  gap: .12rem;
  text-align: center;
}

.palace-transfer-flow small {
  color: rgba(222, 204, 158, .68);
  font-size: .55rem;
  letter-spacing: .075em;
}

.palace-transfer-flow strong {
  font-size: .67rem;
  letter-spacing: .05em;
}

.palace-transfer-flow > i {
  align-self: center;
  color: rgba(231, 210, 157, .43);
  font-style: normal;
}

.has-transfer-exercise .palace-antechamber-scene__veil {
  background:
    linear-gradient(180deg, rgba(24, 21, 17, .08), rgba(24, 21, 17, .31));
}

@media (max-width: 900px) {
  .palace-transfer-locus-choices {
    grid-template-columns: 1fr 1fr;
  }

  .palace-transfer-diagnoses {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 620px) {
  .palace-transfer-transform-rule,
  .palace-transfer-locus-choices,
  .palace-transfer-diagnoses,
  .palace-transfer-flow {
    grid-template-columns: 1fr;
  }

  .palace-transfer-transform-rule > i,
  .palace-transfer-flow > i {
    display: none;
  }

  .palace-transfer-pair {
    grid-template-columns: 1fr;
  }

  .palace-transfer-pair i {
    display: none;
  }

  .palace-transfer-action {
    width: 100%;
  }
}


/* =========================================================
   VNEW.0.38 — Palais · Première mini-liste personnelle
   ========================================================= */

.palace-list-layer {
  position: absolute;
  inset: 0;
  z-index: 16;
}

.palace-list-layer[hidden] {
  display: none;
}

.palace-list-panel {
  width: min(54rem, calc(100% - 1.4rem));
}

.palace-list-action {
  border: 1px solid rgba(232, 213, 162, .25);
  border-radius: 999px;
  background: rgba(255,255,255,.035);
  color: rgba(250, 244, 223, .95);
  padding: .62rem .8rem;
  font-size: .62rem;
  letter-spacing: .075em;
  cursor: pointer;
}

.palace-list-action:disabled {
  opacity: .38;
  cursor: not-allowed;
}

.palace-list-action--primary {
  background: rgba(213, 181, 101, .17);
  border-color: rgba(233, 205, 139, .5);
}

.palace-list-action--rating {
  min-height: 4rem;
  border-radius: .55rem;
  background: rgba(255,255,255,.025);
}

.palace-list-inputs {
  display: grid;
  gap: .55rem;
}

.palace-list-route-rule {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  gap: .42rem;
  align-items: stretch;
  margin: .35rem 0 .65rem;
}

.palace-list-route-rule > span {
  min-height: 4.8rem;
  padding: .62rem;
  border: 1px solid rgba(231, 210, 157, .15);
  border-radius: .54rem;
  background: rgba(255,255,255,.02);
  display: grid;
  align-content: center;
  gap: .1rem;
  text-align: center;
}

.palace-list-route-rule small {
  color: rgba(226, 197, 126, .76);
  font-size: .58rem;
}

.palace-list-route-rule strong {
  font-size: .68rem;
  letter-spacing: .055em;
}

.palace-list-route-rule > i {
  align-self: center;
  color: rgba(231, 210, 157, .43);
  font-style: normal;
}

.has-list-exercise .palace-antechamber-scene__veil {
  background:
    linear-gradient(
      180deg,
      rgba(24, 21, 17, .08),
      rgba(24, 21, 17, .31)
    );
}

@media (max-width: 620px) {
  .palace-list-route-rule {
    grid-template-columns: 1fr;
  }

  .palace-list-route-rule > i {
    display: none;
  }

  .palace-list-action {
    width: 100%;
  }
}


/* =========================================================
   VNEW.0.39 — Palais · Rappel différé mini-liste
   ========================================================= */

.palace-delayed-layer {
  position: absolute;
  inset: 0;
  z-index: 17;
}

.palace-delayed-layer[hidden] {
  display: none;
}

.palace-delayed-panel {
  width: min(54rem, calc(100% - 1.4rem));
}

.has-delayed-exercise .palace-antechamber-scene__veil {
  background:
    linear-gradient(
      180deg,
      rgba(24, 21, 17, .08),
      rgba(24, 21, 17, .31)
    );
}


/* =========================================================
   VNEW.0.40 — Palais · Capacité 5 informations personnelles
   ========================================================= */

.palace-extended-layer {
  position: absolute;
  inset: 0;
  z-index: 18;
}

.palace-extended-layer[hidden] {
  display: none;
}

.palace-extended-panel {
  width: min(58rem, calc(100% - 1.4rem));
}

.palace-extended-inputs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .55rem;
}

.palace-extended-inputs > :last-child {
  grid-column: 1 / -1;
}

.palace-extended-route-rule {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr auto 1fr;
  gap: .32rem;
  align-items: stretch;
  margin: .35rem 0 .65rem;
}

.palace-extended-route-rule > span {
  min-height: 4.6rem;
  padding: .5rem .38rem;
  border: 1px solid rgba(231, 210, 157, .15);
  border-radius: .54rem;
  background: rgba(255,255,255,.02);
  display: grid;
  align-content: center;
  gap: .1rem;
  text-align: center;
}

.palace-extended-route-rule small {
  color: rgba(226, 197, 126, .76);
  font-size: .56rem;
}

.palace-extended-route-rule strong {
  font-size: .61rem;
  letter-spacing: .045em;
}

.palace-extended-route-rule > i {
  align-self: center;
  color: rgba(231, 210, 157, .43);
  font-style: normal;
}

.has-extended-exercise .palace-antechamber-scene__veil {
  background:
    linear-gradient(
      180deg,
      rgba(24, 21, 17, .08),
      rgba(24, 21, 17, .31)
    );
}

@media (max-width: 720px) {
  .palace-extended-inputs {
    grid-template-columns: 1fr;
  }

  .palace-extended-inputs > :last-child {
    grid-column: auto;
  }

  .palace-extended-route-rule {
    grid-template-columns: 1fr;
  }

  .palace-extended-route-rule > i {
    display: none;
  }
}


/* =========================================================
   VNEW.0.41 — Palais · Rappel différé de 5 informations
   ========================================================= */

.palace-extended-delayed-layer {
  position: absolute;
  inset: 0;
  z-index: 19;
}

.palace-extended-delayed-layer[hidden] {
  display: none;
}

.palace-extended-delayed-panel {
  width: min(58rem, calc(100% - 1.4rem));
}

.has-extended-delayed-exercise .palace-antechamber-scene__veil {
  background:
    linear-gradient(
      180deg,
      rgba(24, 21, 17, .08),
      rgba(24, 21, 17, .31)
    );
}


/* =========================================================
   VNEW.0.42 — Palais · Première route personnelle guidée
   ========================================================= */

.palace-personal-route-layer {
  position: absolute;
  inset: 0;
  z-index: 20;
  display: grid;
  place-items: center;
  padding: .7rem;
  overflow: auto;
}

.palace-personal-route-layer[hidden] {
  display: none;
}

.palace-personal-route-panel {
  position: relative;
  width: min(62rem, calc(100% - .2rem));
  max-height: calc(100vh - 1.4rem);
  overflow: auto;
  margin: auto;
}

.has-personal-route-exercise .palace-antechamber-scene__veil,
.has-personal-route-place-exercise .palace-antechamber-scene__veil,
.has-personal-route-delayed-exercise .palace-antechamber-scene__veil {
  background:
    linear-gradient(
      180deg,
      rgba(24, 21, 17, .12),
      rgba(24, 21, 17, .42)
    );
}

.palace-personal-route-strip {
  display: grid;
  grid-template-columns:
    minmax(0,1fr) auto
    minmax(0,1fr) auto
    minmax(0,1fr) auto
    minmax(0,1fr) auto
    minmax(0,1fr);
  align-items: stretch;
  gap: .3rem;
  margin: .5rem 0 .8rem;
}

.palace-personal-route-strip > span {
  min-width: 0;
  min-height: 4.5rem;
  display: grid;
  align-content: center;
  gap: .15rem;
  padding: .45rem .35rem;
  border: 1px solid rgba(231, 210, 157, .16);
  border-radius: .55rem;
  background: rgba(255,255,255,.025);
  text-align: center;
}

.palace-personal-route-strip > span.is-active {
  border-color: rgba(231, 210, 157, .52);
  background: rgba(231, 210, 157, .08);
}

.palace-personal-route-strip small {
  color: rgba(226, 197, 126, .76);
  font-size: .56rem;
  letter-spacing: .08em;
}

.palace-personal-route-strip strong {
  overflow-wrap: anywhere;
  font-size: .64rem;
  line-height: 1.2;
}

.palace-personal-route-strip > i {
  align-self: center;
  color: rgba(231, 210, 157, .4);
  font-style: normal;
}

.palace-personal-route-strip.is-hidden strong {
  font-size: 1rem;
  letter-spacing: .08em;
}

.palace-personal-route-principles,
.palace-personal-route-criteria {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: .55rem;
  margin: .7rem 0;
}

.palace-personal-route-principles > span,
.palace-personal-route-criteria > button,
.palace-personal-route-local-note {
  border: 1px solid rgba(231, 210, 157, .14);
  border-radius: .6rem;
  background: rgba(255,255,255,.02);
}

.palace-personal-route-principles > span {
  display: grid;
  gap: .25rem;
  padding: .65rem;
}

.palace-personal-route-principles strong,
.palace-personal-route-criteria strong,
.palace-personal-route-local-note strong {
  color: rgba(239, 217, 165, .92);
  font-size: .7rem;
  letter-spacing: .08em;
}

.palace-personal-route-principles small,
.palace-personal-route-criteria small,
.palace-personal-route-local-note small {
  color: rgba(244, 237, 222, .7);
  line-height: 1.45;
}

.palace-personal-route-criteria > button {
  min-height: 6.3rem;
  padding: .65rem;
  display: grid;
  align-content: center;
  gap: .3rem;
  color: inherit;
  text-align: left;
}

.palace-personal-route-criteria > button.is-active {
  border-color: rgba(231, 210, 157, .54);
  background: rgba(231, 210, 157, .09);
}

.palace-personal-route-local-note {
  margin: .6rem 0;
  padding: .65rem .75rem;
  display: grid;
  gap: .2rem;
}

@media (max-width: 760px) {
  .palace-personal-route-strip {
    grid-template-columns: 1fr;
  }

  .palace-personal-route-strip > i {
    display: none;
  }

  .palace-personal-route-principles,
  .palace-personal-route-criteria {
    grid-template-columns: 1fr;
  }

  .palace-personal-route-criteria > button {
    min-height: auto;
  }
}

/* =========================================================
   VNEW.0.49 — Palais · Sceau du Grand Hall
   ========================================================= */

.palace-threshold-card__hall-status.is-ready {
  border-color: rgba(226, 199, 126, .52);
  background:
    linear-gradient(135deg, rgba(221, 190, 112, .11), rgba(255,255,255,.02));
  box-shadow: inset 0 0 0 1px rgba(255, 233, 176, .04);
}

.palace-threshold-card__hall-status.is-ready strong {
  color: rgba(245, 220, 157, .98);
}

.grand-hall-readiness-layer {
  position: fixed;
  inset: 0;
  z-index: 24;
  overscroll-behavior: contain;
}

.grand-hall-readiness-panel {
  width: min(64rem, calc(100% - .2rem));
}

.has-grand-hall-readiness .palace-antechamber-scene__veil {
  background:
    radial-gradient(circle at 50% 30%, rgba(219, 188, 111, .08), transparent 28%),
    linear-gradient(180deg, rgba(24, 21, 17, .18), rgba(24, 21, 17, .48));
}

.grand-hall-access-path {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  align-items: center;
  gap: .4rem;
  margin: .55rem 0 .8rem;
}

.grand-hall-access-path span {
  min-width: 0;
  padding: .55rem .65rem;
  border: 1px solid rgba(231, 210, 157, .16);
  border-radius: .55rem;
  background: rgba(255,255,255,.022);
  color: rgba(241, 225, 184, .9);
  font-size: .61rem;
  letter-spacing: .06em;
  text-align: center;
}

.grand-hall-access-path i {
  color: rgba(229, 205, 145, .55);
  font-style: normal;
}

.grand-hall-readiness-summary {
  margin: .55rem 0 .8rem;
  padding: .8rem .9rem;
  border: 1px solid rgba(231, 210, 157, .18);
  border-radius: .65rem;
  background: rgba(255,255,255,.025);
  display: grid;
  gap: .16rem;
}

.grand-hall-readiness-summary > span {
  color: rgba(224, 197, 131, .72);
  font-size: .58rem;
  letter-spacing: .11em;
}

.grand-hall-readiness-summary > strong {
  color: rgba(240, 218, 165, .94);
  font-size: 1rem;
  letter-spacing: .1em;
}

.grand-hall-readiness-summary > small {
  color: rgba(244, 237, 222, .68);
}

.grand-hall-readiness-summary.is-ready {
  border-color: rgba(226, 199, 126, .5);
  background: rgba(218, 185, 103, .075);
}

.grand-hall-seals {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .55rem;
}

.grand-hall-seal {
  min-width: 0;
  padding: .78rem;
  border: 1px solid rgba(231, 210, 157, .14);
  border-radius: .65rem;
  background: rgba(255,255,255,.02);
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  gap: .25rem .6rem;
  align-items: start;
}

.grand-hall-seal > span {
  color: rgba(224, 195, 124, .66);
  font-size: .6rem;
  letter-spacing: .08em;
}

.grand-hall-seal > div {
  display: grid;
  gap: .15rem;
}

.grand-hall-seal strong {
  color: rgba(244, 224, 177, .94);
  font-size: .7rem;
  letter-spacing: .07em;
}

.grand-hall-seal small,
.grand-hall-seal p,
.grand-hall-readiness-rule p {
  color: rgba(244, 237, 222, .68);
  font-size: .64rem;
  line-height: 1.45;
}

.grand-hall-seal em {
  justify-self: end;
  color: rgba(224, 210, 174, .78);
  font-size: .56rem;
  font-style: normal;
  font-weight: 700;
  letter-spacing: .07em;
}

.grand-hall-seal p {
  grid-column: 2 / -1;
  margin: .15rem 0 0;
}

.grand-hall-seal.is-acquired {
  border-color: rgba(116, 163, 102, .38);
  background: rgba(83, 128, 73, .06);
}

.grand-hall-seal.is-acquired em {
  color: rgba(171, 213, 154, .92);
}

.grand-hall-seal.is-consolidate {
  border-color: rgba(221, 182, 101, .34);
  background: rgba(176, 131, 56, .055);
}

.grand-hall-seal.is-consolidate em {
  color: rgba(238, 204, 130, .9);
}

.grand-hall-seal.is-untested {
  opacity: .78;
}

.grand-hall-readiness-rule {
  margin-top: .65rem;
  padding: .72rem .8rem;
  border-left: 2px solid rgba(227, 202, 141, .35);
  background: rgba(255,255,255,.018);
}

.grand-hall-readiness-rule strong {
  color: rgba(239, 217, 165, .9);
  font-size: .64rem;
  letter-spacing: .08em;
}

.grand-hall-readiness-rule p {
  margin: .28rem 0 0;
}

@media (max-width: 760px) {
  .grand-hall-seals {
    grid-template-columns: 1fr;
  }

  .grand-hall-seal {
    grid-template-columns: auto minmax(0,1fr);
  }

  .grand-hall-seal em {
    grid-column: 2;
    justify-self: start;
  }

  .grand-hall-seal p {
    grid-column: 2;
  }
}

/* =========================================================
   VNEW.0.50 — Palais · Première ouverture du Grand Hall
   ========================================================= */

.palace-threshold-card__hall-status.is-open {
  border-color: rgba(234, 206, 132, .66);
  background:
    radial-gradient(circle at 50% 0%, rgba(244, 218, 151, .13), transparent 48%),
    linear-gradient(135deg, rgba(221, 190, 112, .12), rgba(255,255,255,.025));
}

.palace-threshold-card__hall-status.is-open strong {
  color: rgba(250, 229, 175, .98);
}

.grand-hall-readiness-actions {
  margin-top: .8rem;
  display: flex;
  justify-content: flex-end;
}

.grand-hall-readiness-actions button {
  border: 1px solid rgba(230, 205, 145, .34);
  border-radius: .55rem;
  background: rgba(220, 184, 96, .09);
  color: rgba(247, 232, 194, .96);
  padding: .72rem .95rem;
  font: inherit;
  font-size: .68rem;
  font-weight: 750;
  letter-spacing: .08em;
  cursor: pointer;
}

.palace-grand-hall-scene {
  position: relative;
  width: 100%;
  min-height: 100svh;
  overflow: hidden;
  isolation: isolate;
  background: #15130f;
}

.palace-grand-hall-scene__architecture,
.palace-grand-hall-scene__veil {
  position: absolute;
  inset: 0;
}

.palace-grand-hall-scene__architecture {
  overflow: hidden;
  background:
    radial-gradient(ellipse at 50% 17%, rgba(239, 217, 166, .19), transparent 17%),
    radial-gradient(ellipse at 50% 43%, rgba(181, 135, 61, .12), transparent 40%),
    linear-gradient(180deg, #2b261d 0%, #191711 49%, #0f0f0c 100%);
}

.palace-grand-hall-scene__dome {
  position: absolute;
  left: 8%;
  right: 8%;
  top: -31%;
  height: 70%;
  border: 2px solid rgba(217, 190, 126, .22);
  border-radius: 0 0 50% 50%;
  box-shadow:
    inset 0 -2rem 5rem rgba(217, 185, 108, .045),
    0 1.2rem 4rem rgba(0,0,0,.25);
}

.palace-grand-hall-scene__oculus {
  position: absolute;
  width: min(18vw, 13rem);
  aspect-ratio: 1;
  top: 8%;
  left: 50%;
  transform: translateX(-50%);
  border: 1px solid rgba(242, 220, 166, .38);
  border-radius: 50%;
  background:
    radial-gradient(circle, rgba(249, 232, 188, .28), rgba(196, 157, 82, .08) 42%, rgba(20,18,13,.18) 72%);
  box-shadow: 0 0 5rem rgba(232, 196, 110, .16);
}

.palace-grand-hall-scene__gallery {
  position: absolute;
  top: 23%;
  bottom: 16%;
  width: 29%;
  border-top: 1px solid rgba(226, 203, 150, .18);
  border-bottom: 1px solid rgba(226, 203, 150, .12);
  background:
    repeating-linear-gradient(90deg, transparent 0 15%, rgba(214, 185, 116, .11) 15.5% 16.4%, transparent 17% 31%),
    linear-gradient(180deg, rgba(255,255,255,.02), rgba(0,0,0,.1));
}

.palace-grand-hall-scene__gallery.is-left {
  left: 0;
  clip-path: polygon(0 8%, 100% 0, 100% 100%, 0 88%);
}

.palace-grand-hall-scene__gallery.is-right {
  right: 0;
  transform: scaleX(-1);
  clip-path: polygon(0 8%, 100% 0, 100% 100%, 0 88%);
}

.palace-grand-hall-scene__columns {
  position: absolute;
  top: 16%;
  bottom: 8%;
  width: 17%;
  opacity: .92;
  background:
    repeating-linear-gradient(90deg,
      transparent 0 16%,
      rgba(209, 183, 122, .16) 16% 19%,
      rgba(38, 34, 26, .76) 19% 25%,
      rgba(226, 199, 135, .22) 25% 28%,
      transparent 28% 45%);
}

.palace-grand-hall-scene__columns.is-left { left: 11%; }
.palace-grand-hall-scene__columns.is-right { right: 11%; transform: scaleX(-1); }

.palace-grand-hall-scene__floor {
  position: absolute;
  left: -12%;
  right: -12%;
  bottom: -29%;
  height: 65%;
  transform: perspective(42rem) rotateX(61deg);
  transform-origin: 50% 100%;
  background:
    linear-gradient(90deg, transparent 49.7%, rgba(221, 197, 139, .16) 50%, transparent 50.3%),
    repeating-radial-gradient(ellipse at 50% 100%, rgba(221, 197, 139, .12) 0 .08rem, transparent .1rem 3.8rem),
    linear-gradient(180deg, rgba(92, 79, 55, .18), rgba(20,19,15,.62));
  border-top: 1px solid rgba(230, 209, 159, .13);
}

.palace-grand-hall-scene__medallion {
  position: absolute;
  width: min(38vw, 28rem);
  aspect-ratio: 2.1 / 1;
  left: 50%;
  bottom: 6%;
  transform: translateX(-50%) perspective(30rem) rotateX(58deg);
  border: 1px solid rgba(231, 207, 150, .26);
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: rgba(232, 211, 164, .36);
  background: radial-gradient(ellipse, rgba(222, 191, 117, .06), transparent 65%);
  letter-spacing: .18em;
  font-size: clamp(.58rem, 1vw, .82rem);
}

.palace-grand-hall-scene__light {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 50% 25%, rgba(244, 220, 160, .11), transparent 32%),
    linear-gradient(90deg, rgba(0,0,0,.34), transparent 28% 72%, rgba(0,0,0,.34));
}

.palace-grand-hall-scene__veil {
  z-index: 1;
  background: linear-gradient(180deg, rgba(12,11,9,.12), rgba(10,10,8,.38));
  transition: opacity .7s ease;
}

.palace-grand-hall-scene.is-discovered .palace-grand-hall-scene__veil {
  opacity: .18;
}

.palace-grand-hall-card,
.palace-grand-hall-presence {
  position: relative;
  z-index: 3;
}

.palace-grand-hall-card {
  width: min(48rem, calc(100% - 2rem));
  margin: clamp(4rem, 10vh, 7.2rem) auto 2rem;
  padding: clamp(1rem, 2vw, 1.4rem);
  border: 1px solid rgba(232, 210, 158, .2);
  border-radius: .8rem;
  background: rgba(19, 18, 14, .78);
  box-shadow: 0 1.2rem 4rem rgba(0,0,0,.32);
  backdrop-filter: blur(.5rem);
}

.palace-grand-hall-card h1 {
  margin: .25rem 0 .65rem;
  color: rgba(247, 231, 194, .98);
  font-size: clamp(1.45rem, 3.2vw, 2.45rem);
  font-weight: 520;
}

.palace-grand-hall-card > p:not(.eyebrow):not(.palace-grand-hall-card__message) {
  color: rgba(244, 238, 223, .76);
  line-height: 1.65;
}

.palace-grand-hall-card__orientation {
  margin: 1rem 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem;
}

.palace-grand-hall-card__orientation article {
  padding: .75rem;
  border: 1px solid rgba(232, 207, 150, .14);
  border-radius: .65rem;
  background: rgba(255,255,255,.018);
  display: grid;
  gap: .18rem;
}

.palace-grand-hall-card__orientation span,
.palace-grand-hall-card__orientation small {
  color: rgba(226, 207, 163, .62);
  font-size: .62rem;
}

.palace-grand-hall-card__orientation strong {
  color: rgba(241, 221, 174, .94);
  font-size: .72rem;
  letter-spacing: .08em;
}

.palace-grand-hall-card blockquote {
  margin: 1rem 0;
  padding: .8rem 1rem;
  border-left: 2px solid rgba(226, 199, 126, .38);
  color: rgba(239, 226, 196, .76);
  font-style: italic;
}

.palace-grand-hall-card__locked {
  margin: 1rem 0;
  padding: .8rem;
  border: 1px solid rgba(220, 185, 110, .18);
  border-radius: .65rem;
  display: grid;
  gap: .2rem;
}

.palace-grand-hall-card__locked strong { color: rgba(237, 212, 154, .9); }
.palace-grand-hall-card__locked small { color: rgba(242, 234, 217, .62); }

.palace-grand-hall-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  margin-top: 1rem;
}

.palace-grand-hall-card__actions button,
.palace-grand-hall-presence button {
  border: 1px solid rgba(230, 205, 145, .25);
  border-radius: .55rem;
  background: rgba(255,255,255,.025);
  color: rgba(241, 229, 201, .92);
  padding: .72rem .9rem;
  font: inherit;
  font-size: .66rem;
  font-weight: 720;
  letter-spacing: .07em;
  cursor: pointer;
}

.palace-grand-hall-card__actions button.is-primary {
  border-color: rgba(232, 203, 133, .42);
  background: rgba(211, 174, 83, .1);
}

.palace-grand-hall-card__message { min-height: 1rem; }

.palace-grand-hall-presence {
  position: absolute;
  left: clamp(.8rem, 3vw, 2rem);
  bottom: clamp(.8rem, 3vw, 2rem);
  width: min(22rem, calc(100% - 1.6rem));
  padding: .8rem .9rem;
  border: 1px solid rgba(231, 207, 149, .16);
  border-radius: .65rem;
  background: rgba(15, 14, 11, .58);
  backdrop-filter: blur(.4rem);
  display: grid;
  gap: .18rem;
}

.palace-grand-hall-presence[hidden] { display: none; }
.palace-grand-hall-presence span { color: rgba(220, 193, 128, .7); font-size: .58rem; letter-spacing: .12em; }
.palace-grand-hall-presence strong { color: rgba(245, 224, 175, .96); letter-spacing: .1em; }
.palace-grand-hall-presence small { color: rgba(241, 234, 217, .68); margin-bottom: .45rem; }
.palace-grand-hall-presence button { justify-self: start; }

@media (prefers-reduced-motion: reduce) {
  .palace-grand-hall-scene__veil { transition: none; }
}

@media (max-width: 760px) {
  .grand-hall-readiness-actions { justify-content: stretch; }
  .grand-hall-readiness-actions button { width: 100%; }
  .palace-grand-hall-card { margin-top: 1rem; }
  .palace-grand-hall-card__orientation { grid-template-columns: 1fr; }
  .palace-grand-hall-scene__gallery { width: 38%; }
  .palace-grand-hall-scene__columns { width: 24%; }
  .palace-grand-hall-scene__medallion { width: 62vw; }
}

/* VNEW.0.50.1 — QA physique mobile : cibles tactiles sans toucher aux hotspots spatiaux. */
@media (max-width: 760px), (pointer: coarse) {
  .living-book__close,
  .book-text-action,
  .book-chapter,
  .book-library__item,
  .association-panel__quit,
  .palace-route-panel > header > button,
  .palace-threshold-card__actions button,
  .palace-passage-card__actions button,
  .grand-hall-readiness-actions button,
  .recall-curve-entry-actions--secondary .recall-curve-entry-start {
    min-height: 44px;
  }

  .grand-hall-access-path {
    grid-template-columns: 1fr;
  }

  .grand-hall-access-path i {
    transform: rotate(90deg);
    justify-self: center;
  }

  .recall-curve-entry-more > summary {
    min-height: 44px;
    display: flex;
    align-items: center;
  }

  .recall-curve-palace-exit {
    width: 100%;
    min-height: 48px;
  }
}

/* VNEW.0.50.1 — Antichambre: garder le Grand Hall lisible quand les 4 conditions sont prêtes. */
.palace-antechamber-scene.is-grand-hall-ready:not(.show-palace-history)
  .palace-threshold-card__next:not([data-grand-hall-readiness-status]) {
  display: none !important;
}

.palace-antechamber-scene.is-grand-hall-ready:not(.show-palace-history)
  .palace-threshold-card__actions > button:not([data-threshold-back]):not([data-grand-hall-readiness-start]):not([data-palace-history-toggle]) {
  display: none !important;
}

.palace-antechamber-scene.is-grand-hall-ready [data-grand-hall-readiness-status] {
  display: block !important;
}

.palace-antechamber-scene [data-palace-history-toggle] {
  border-style: dashed;
  opacity: 0.86;
}

/* VNEW.0.50.2 — Touch Polish: actions avancées Courbe >= 44 px sur mobile/coarse pointer. */

/* =========================================================
   VNEW.0.51 — Grand Hall · Orientation & première carte
   ========================================================= */

.palace-grand-hall-presence__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
}

.palace-grand-hall-presence__actions .is-primary {
  border-color: rgba(232, 203, 133, .42);
  background: rgba(211, 174, 83, .1);
}

.grand-hall-map-layer {
  position: fixed;
  inset: 0;
  z-index: 80;
  overflow: auto;
  padding: clamp(.65rem, 2.5vw, 1.5rem);
  background:
    radial-gradient(circle at 50% 14%, rgba(217, 180, 97, .13), transparent 34%),
    rgba(7, 7, 6, .88);
  backdrop-filter: blur(.55rem);
}

.grand-hall-map-layer[hidden] {
  display: none !important;
}

.grand-hall-map-panel {
  width: min(62rem, 100%);
  min-height: calc(100svh - clamp(1.3rem, 5vw, 3rem));
  margin: 0 auto;
  padding: clamp(.9rem, 2vw, 1.35rem);
  border: 1px solid rgba(229, 204, 144, .2);
  border-radius: .85rem;
  background:
    linear-gradient(180deg, rgba(31, 28, 21, .96), rgba(15, 14, 11, .97));
  box-shadow: 0 1.4rem 5rem rgba(0,0,0,.44);
  display: grid;
  grid-template-rows: auto 1fr auto auto;
  gap: 1rem;
}

.grand-hall-map-panel__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
}

.grand-hall-map-panel__header h2 {
  margin: .18rem 0 .35rem;
  color: rgba(248, 231, 190, .98);
  font-size: clamp(1.25rem, 2.6vw, 2rem);
  font-weight: 520;
}

.grand-hall-map-panel__header p:not(.eyebrow) {
  max-width: 48rem;
  margin: 0;
  color: rgba(241, 234, 216, .7);
  line-height: 1.55;
}

.grand-hall-map-panel__header > button,
.grand-hall-map-panel__footer > button {
  flex: 0 0 auto;
  min-height: 44px;
  border: 1px solid rgba(231, 205, 143, .28);
  border-radius: .55rem;
  background: rgba(255,255,255,.025);
  color: rgba(243, 230, 200, .94);
  padding: .68rem .9rem;
  font: inherit;
  font-size: .66rem;
  font-weight: 760;
  letter-spacing: .075em;
  cursor: pointer;
}

.grand-hall-map-panel__footer > button.is-primary {
  border-color: rgba(232, 203, 133, .45);
  background: rgba(211, 174, 83, .11);
}

.grand-hall-map-panel__footer > button:disabled {
  opacity: .42;
  cursor: default;
}

.grand-hall-map {
  position: relative;
  min-height: 27rem;
  border: 1px solid rgba(227, 202, 143, .13);
  border-radius: .8rem;
  overflow: hidden;
  background:
    radial-gradient(circle at 50% 50%, rgba(220, 183, 96, .12), transparent 24%),
    linear-gradient(90deg, transparent 49.8%, rgba(225, 201, 145, .08) 50%, transparent 50.2%),
    linear-gradient(180deg, rgba(255,255,255,.012), rgba(0,0,0,.11));
}

.grand-hall-map__axis {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(90deg, transparent 13%, rgba(226, 198, 132, .14) 13.2% 13.35%, transparent 13.55% 86.4%, rgba(226, 198, 132, .14) 86.6% 86.75%, transparent 86.95%),
    linear-gradient(180deg, transparent 16%, rgba(226, 198, 132, .12) 16.2% 16.35%, transparent 16.55% 83.4%, rgba(226, 198, 132, .08) 83.6% 83.75%, transparent 83.95%);
  opacity: .8;
}

.grand-hall-map__center {
  position: absolute;
  left: 50%;
  top: 50%;
  width: min(13rem, 31%);
  aspect-ratio: 1.75 / 1;
  transform: translate(-50%, -50%);
  border: 1px solid rgba(237, 210, 145, .38);
  border-radius: 50%;
  background:
    radial-gradient(ellipse, rgba(222, 187, 104, .12), rgba(13, 12, 9, .82) 68%);
  box-shadow: 0 0 3rem rgba(217, 176, 79, .1);
  display: grid;
  place-content: center;
  gap: .12rem;
  text-align: center;
}

.grand-hall-map__center span {
  color: rgba(218, 190, 126, .6);
  font-size: .54rem;
  letter-spacing: .12em;
}

.grand-hall-map__center strong {
  color: rgba(246, 224, 173, .97);
  font-size: .78rem;
  letter-spacing: .08em;
}

.grand-hall-map__center small {
  max-width: 10.5rem;
  color: rgba(239, 231, 212, .56);
  font-size: .56rem;
  line-height: 1.35;
}

.grand-hall-map__zone {
  position: absolute;
  width: min(16rem, 28%);
  min-height: 7.6rem;
  border: 1px solid rgba(228, 202, 141, .17);
  border-radius: .7rem;
  background: rgba(19, 18, 14, .86);
  color: inherit;
  padding: .75rem;
  text-align: left;
  display: grid;
  align-content: center;
  gap: .18rem;
  cursor: pointer;
  transition: border-color .2s ease, background .2s ease, transform .2s ease;
}

.grand-hall-map__zone:hover,
.grand-hall-map__zone:focus-visible {
  border-color: rgba(235, 207, 139, .48);
  background: rgba(53, 46, 31, .88);
}

.grand-hall-map__zone.is-visited {
  border-color: rgba(230, 202, 133, .52);
  background:
    radial-gradient(circle at 15% 12%, rgba(235, 204, 128, .09), transparent 44%),
    rgba(35, 31, 23, .9);
}

.grand-hall-map__zone.is-routes {
  left: 5%;
  top: 50%;
  transform: translateY(-50%);
}

.grand-hall-map__zone.is-zones {
  left: 50%;
  top: 5%;
  transform: translateX(-50%);
}

.grand-hall-map__zone.is-personal-palaces {
  right: 5%;
  top: 50%;
  transform: translateY(-50%);
}

.grand-hall-map__zone span {
  color: rgba(214, 184, 115, .65);
  font-size: .56rem;
  letter-spacing: .12em;
}

.grand-hall-map__zone strong {
  color: rgba(242, 221, 173, .96);
  font-size: .7rem;
  letter-spacing: .065em;
}

.grand-hall-map__zone small {
  color: rgba(240, 232, 214, .62);
  font-size: .61rem;
  line-height: 1.4;
}

.grand-hall-map__zone em {
  margin-top: .2rem;
  color: rgba(216, 188, 124, .58);
  font-size: .52rem;
  font-style: normal;
  letter-spacing: .09em;
}

.grand-hall-map-detail {
  min-height: 7.4rem;
  padding: .85rem 1rem;
  border: 1px solid rgba(228, 203, 145, .14);
  border-radius: .7rem;
  background: rgba(255,255,255,.018);
  display: grid;
  align-content: center;
  gap: .18rem;
}

.grand-hall-map-detail > span,
.grand-hall-map-detail > small {
  color: rgba(215, 187, 121, .62);
  font-size: .56rem;
  letter-spacing: .08em;
}

.grand-hall-map-detail > strong {
  color: rgba(245, 226, 182, .96);
  font-size: .82rem;
}

.grand-hall-map-detail > p {
  margin: .15rem 0;
  color: rgba(241, 234, 217, .68);
  font-size: .72rem;
  line-height: 1.5;
}

.grand-hall-map-panel__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.grand-hall-map-progress {
  display: grid;
  gap: .12rem;
}

.grand-hall-map-progress span {
  color: rgba(239, 216, 161, .9);
  font-size: .63rem;
  font-weight: 760;
  letter-spacing: .08em;
}

.grand-hall-map-progress small {
  color: rgba(241, 233, 215, .56);
  font-size: .6rem;
}

@media (max-width: 760px) {
  .palace-grand-hall-presence__actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .palace-grand-hall-presence__actions button {
    width: 100%;
    min-height: 44px;
  }

  .grand-hall-map-layer {
    padding: .5rem;
  }

  .grand-hall-map-panel {
    min-height: calc(100svh - 1rem);
    padding: .75rem;
  }

  .grand-hall-map-panel__header {
    display: grid;
    grid-template-columns: 1fr;
  }

  .grand-hall-map-panel__header > button {
    justify-self: stretch;
    width: 100%;
  }

  .grand-hall-map {
    min-height: auto;
    padding: .7rem;
    display: grid;
    gap: .55rem;
    background:
      linear-gradient(180deg, rgba(255,255,255,.012), rgba(0,0,0,.11));
  }

  .grand-hall-map__axis {
    display: none;
  }

  .grand-hall-map__center,
  .grand-hall-map__zone,
  .grand-hall-map__zone.is-routes,
  .grand-hall-map__zone.is-zones,
  .grand-hall-map__zone.is-personal-palaces {
    position: relative;
    inset: auto;
    width: 100%;
    min-height: 44px;
    aspect-ratio: auto;
    transform: none;
  }

  .grand-hall-map__center {
    order: -1;
    border-radius: .7rem;
    padding: .75rem;
  }

  .grand-hall-map__center small {
    max-width: none;
  }

  .grand-hall-map__zone {
    min-height: 6.8rem;
  }

  .grand-hall-map-panel__footer {
    align-items: stretch;
    display: grid;
    grid-template-columns: 1fr;
  }

  .grand-hall-map-panel__footer > button {
    width: 100%;
    min-height: 46px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .grand-hall-map__zone {
    transition: none;
  }
}

/* VNEW.0.51 — la carte immersive masque le bandeau global pour éviter tout chevauchement mobile. */
.site-mark[hidden] {
  display: none !important;
}

/* ============================================================
   VNEW.0.52 — GRAND HALL · GALERIE DES ROUTES
   Première direction active : principe d'extension 5 -> 7.
   ============================================================ */
.grand-hall-map__zone.is-open {
  border-color: rgba(224, 194, 120, .72);
  box-shadow: 0 0 0 1px rgba(224, 194, 120, .12), 0 0 28px rgba(203, 164, 82, .14);
}
.grand-hall-map__zone.is-open em {
  color: rgba(247, 221, 151, .96);
}
.grand-hall-map-detail__enter {
  margin-top: .8rem;
  min-height: 44px;
  padding: .68rem 1rem;
  border: 1px solid rgba(226, 196, 124, .64);
  border-radius: .8rem;
  background: rgba(211, 173, 88, .14);
  color: rgba(250, 232, 187, .98);
  font: inherit;
  letter-spacing: .08em;
  cursor: pointer;
}

.palace-routes-gallery-scene {
  position: relative;
  min-height: 100dvh;
  overflow: hidden;
  isolation: isolate;
  color: rgba(244, 237, 218, .94);
  background:
    radial-gradient(circle at 50% 20%, rgba(205, 173, 101, .16), transparent 26%),
    linear-gradient(180deg, #1b1a14 0%, #11110d 72%, #0b0b08 100%);
}
.palace-routes-gallery-scene__architecture {
  position: absolute;
  inset: 0;
  z-index: -2;
  overflow: hidden;
}
.palace-routes-gallery-scene__vault {
  position: absolute;
  left: 8%;
  right: 8%;
  top: 6%;
  height: 58%;
  border: 1px solid rgba(213, 183, 114, .22);
  border-bottom: 0;
  border-radius: 50% 50% 0 0 / 32% 32% 0 0;
  background:
    repeating-linear-gradient(90deg, transparent 0 8%, rgba(223, 194, 125, .055) 8% 8.2%),
    linear-gradient(180deg, rgba(118, 101, 69, .09), transparent 58%);
  box-shadow: inset 0 0 90px rgba(0, 0, 0, .48);
}
.palace-routes-gallery-scene__path {
  position: absolute;
  left: 14%;
  right: 14%;
  bottom: -16%;
  height: 62%;
  transform: perspective(680px) rotateX(62deg);
  transform-origin: bottom center;
  border: 1px solid rgba(214, 184, 115, .16);
  background:
    linear-gradient(90deg, transparent 49.7%, rgba(229, 200, 131, .22) 50%, transparent 50.3%),
    repeating-linear-gradient(0deg, rgba(226, 196, 127, .04) 0 1px, transparent 1px 48px),
    linear-gradient(180deg, rgba(178, 145, 78, .09), rgba(15, 15, 11, .38));
}
.palace-routes-gallery-scene__markers {
  position: absolute;
  left: 12%;
  right: 12%;
  bottom: 16%;
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  align-items: end;
  gap: .75rem;
  opacity: .66;
}
.palace-routes-gallery-scene__markers i {
  display: grid;
  place-items: center;
  height: calc(32px + var(--n) * 3px);
  border-left: 1px solid rgba(229, 199, 129, .28);
  font-style: normal;
}
.palace-routes-gallery-scene__markers span {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border: 1px solid rgba(232, 202, 132, .42);
  border-radius: 50%;
  background: rgba(20, 19, 14, .7);
  color: rgba(239, 217, 166, .82);
  font-size: .72rem;
}
.palace-routes-gallery-scene__markers i:nth-child(n+6) span {
  border-style: dashed;
  color: rgba(247, 222, 155, .96);
  box-shadow: 0 0 18px rgba(211, 172, 85, .16);
}
.palace-routes-gallery-card {
  width: min(720px, calc(100% - 2rem));
  margin: clamp(4.5rem, 11vh, 7.5rem) auto 2rem;
  padding: clamp(1.2rem, 3vw, 2rem);
  border: 1px solid rgba(222, 194, 127, .28);
  border-radius: 1.15rem;
  background: linear-gradient(180deg, rgba(25, 24, 18, .91), rgba(14, 14, 10, .94));
  box-shadow: 0 24px 80px rgba(0, 0, 0, .38);
  backdrop-filter: blur(10px);
}
.palace-routes-gallery-card h1,
.palace-routes-gallery-panel h2 {
  margin: .3rem 0 .7rem;
  color: rgba(249, 231, 186, .98);
  font-weight: 500;
}
.palace-routes-gallery-card > p:not(.eyebrow):not(.palace-routes-gallery-card__status),
.palace-routes-gallery-panel__copy,
.palace-routes-gallery-panel__note {
  color: rgba(240, 233, 215, .72);
  line-height: 1.65;
}
.palace-routes-gallery-card__rule {
  display: grid;
  gap: .22rem;
  margin: 1.1rem 0;
  padding: .9rem 1rem;
  border-left: 2px solid rgba(220, 185, 104, .62);
  background: rgba(214, 176, 91, .07);
}
.palace-routes-gallery-card__rule span,
.routes-gallery-summary span,
.routes-gallery-recall-cue span,
.routes-gallery-reveal span {
  color: rgba(214, 186, 119, .72);
  font-size: .68rem;
  letter-spacing: .12em;
}
.palace-routes-gallery-card__rule strong { color: rgba(247, 222, 160, .94); letter-spacing: .08em; }
.palace-routes-gallery-card__rule small { color: rgba(238, 231, 214, .62); }
.palace-routes-gallery-card__actions,
.palace-routes-gallery-panel__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin-top: 1.15rem;
}
.palace-routes-gallery-card button,
.palace-routes-gallery-panel button {
  min-height: 44px;
  padding: .68rem .95rem;
  border: 1px solid rgba(213, 184, 116, .38);
  border-radius: .8rem;
  background: rgba(20, 19, 14, .74);
  color: rgba(244, 234, 211, .9);
  font: inherit;
  letter-spacing: .06em;
  cursor: pointer;
}
.palace-routes-gallery-card button.is-primary,
.palace-routes-gallery-panel button.is-primary {
  border-color: rgba(229, 198, 126, .65);
  background: rgba(210, 170, 78, .15);
  color: rgba(251, 231, 181, .98);
}
.palace-routes-gallery-card button:disabled,
.palace-routes-gallery-panel button:disabled {
  cursor: default;
  opacity: .42;
}
.palace-routes-gallery-card__status {
  margin-top: .8rem;
  color: rgba(215, 191, 132, .78);
  font-size: .76rem;
  letter-spacing: .06em;
}
.palace-routes-gallery-layer {
  position: fixed;
  inset: 0;
  z-index: 90;
  overflow: auto;
  padding: max(1rem, env(safe-area-inset-top)) 1rem max(1rem, env(safe-area-inset-bottom));
  background: rgba(8, 8, 6, .86);
  backdrop-filter: blur(13px);
}
.palace-routes-gallery-layer[hidden] { display: none; }
.palace-routes-gallery-panel {
  width: min(840px, 100%);
  margin: 2vh auto;
  padding: clamp(1rem, 3vw, 1.7rem);
  border: 1px solid rgba(222, 193, 123, .34);
  border-radius: 1rem;
  background: linear-gradient(180deg, rgba(27, 25, 19, .98), rgba(13, 13, 10, .99));
  box-shadow: 0 20px 80px rgba(0, 0, 0, .5);
}
.palace-routes-gallery-panel > header {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 1rem;
}
.routes-gallery-base-route,
.routes-gallery-full-route {
  list-style: none;
  margin: 1rem 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .55rem;
}
.routes-gallery-base-route li,
.routes-gallery-full-route li {
  min-width: 0;
  display: grid;
  gap: .25rem;
  padding: .7rem;
  border: 1px solid rgba(215, 186, 116, .22);
  border-radius: .75rem;
  background: rgba(255, 255, 255, .025);
}
.routes-gallery-base-route li span,
.routes-gallery-full-route li span {
  color: rgba(211, 184, 119, .68);
  font-size: .7rem;
}
.routes-gallery-base-route li strong,
.routes-gallery-full-route li strong {
  overflow-wrap: anywhere;
  color: rgba(242, 232, 210, .9);
  font-size: .9rem;
}
.routes-gallery-full-route { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.routes-gallery-full-route li.is-new {
  border-color: rgba(231, 198, 121, .55);
  background: rgba(216, 174, 80, .08);
}
.routes-gallery-full-route li em {
  color: rgba(225, 196, 128, .7);
  font-size: .6rem;
  font-style: normal;
  letter-spacing: .1em;
}
.routes-gallery-principles,
.routes-gallery-repair,
.routes-gallery-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .7rem;
  margin: 1rem 0;
}
.routes-gallery-principles article,
.routes-gallery-repair article,
.routes-gallery-summary article {
  padding: .9rem;
  border: 1px solid rgba(216, 186, 115, .22);
  border-radius: .8rem;
  background: rgba(255, 255, 255, .025);
}
.routes-gallery-principles span,
.routes-gallery-repair strong {
  color: rgba(245, 220, 160, .92);
  font-size: .76rem;
  letter-spacing: .08em;
}
.routes-gallery-principles p,
.routes-gallery-repair p { margin: .4rem 0 0; color: rgba(237, 230, 212, .68); line-height: 1.5; }
.routes-gallery-candidates {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .7rem;
  margin: 1rem 0;
}
.routes-gallery-candidates label { display: grid; gap: .4rem; }
.routes-gallery-candidates label > span { color: rgba(219, 190, 120, .76); font-size: .72rem; letter-spacing: .08em; }
.routes-gallery-candidates input {
  min-height: 46px;
  padding: .7rem .8rem;
  border: 1px solid rgba(216, 187, 117, .34);
  border-radius: .72rem;
  outline: none;
  background: rgba(5, 5, 4, .48);
  color: rgba(248, 238, 216, .95);
  font: inherit;
}
.routes-gallery-candidates input:focus { border-color: rgba(235, 204, 132, .72); box-shadow: 0 0 0 2px rgba(224, 191, 112, .09); }
.routes-gallery-safety {
  width: 100%;
  display: flex;
  align-items: center;
  gap: .7rem;
  text-align: left;
}
.routes-gallery-safety > span {
  flex: 0 0 26px;
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border: 1px solid rgba(222, 191, 117, .45);
  border-radius: .4rem;
}
.routes-gallery-safety.is-checked { border-color: rgba(231, 200, 126, .7); }
.routes-gallery-issues { margin: .75rem 0 0; color: rgba(229, 187, 151, .82); }
.routes-gallery-ready { color: rgba(198, 218, 172, .78); }
.routes-gallery-recall-cue,
.routes-gallery-reveal,
.routes-gallery-complete {
  display: grid;
  place-items: center;
  gap: .45rem;
  min-height: 140px;
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(218, 188, 117, .25);
  border-radius: .9rem;
  background: radial-gradient(circle, rgba(220, 180, 86, .08), transparent 68%);
  text-align: center;
}
.routes-gallery-recall-cue strong { font-size: 2.6rem; color: rgba(241, 216, 155, .9); }
.routes-gallery-reveal strong,
.routes-gallery-complete strong { color: rgba(247, 225, 170, .96); }
.routes-gallery-complete small { color: rgba(238, 230, 211, .66); }
.routes-gallery-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.routes-gallery-summary article { display: grid; gap: .3rem; }
.routes-gallery-summary strong { color: rgba(246, 225, 172, .92); }

@media (max-width: 720px) {
  .palace-routes-gallery-card { margin-top: 4rem; width: calc(100% - 1rem); }
  .palace-routes-gallery-panel { margin: 0 auto; }
  .palace-routes-gallery-panel > header { align-items: center; }
  .palace-routes-gallery-panel > header button { flex: 0 0 auto; }
  .routes-gallery-base-route,
  .routes-gallery-full-route { grid-template-columns: 1fr; }
  .routes-gallery-full-route li { grid-template-columns: 2rem 1fr auto; align-items: center; }
  .routes-gallery-principles,
  .routes-gallery-repair,
  .routes-gallery-summary,
  .routes-gallery-candidates { grid-template-columns: 1fr; }
  .palace-routes-gallery-card__actions,
  .palace-routes-gallery-panel__actions { flex-direction: column; }
  .palace-routes-gallery-card__actions button,
  .palace-routes-gallery-panel__actions button { width: 100%; min-height: 48px; }
  .palace-routes-gallery-scene__markers { left: 4%; right: 4%; gap: .2rem; }
  .palace-routes-gallery-scene__markers span { width: 26px; height: 26px; font-size: .64rem; }
}

/* ============================================================
   VNEW.0.53 — ROUTES · EXTENSION STABLE 1 -> 7
   Les loci 6/7 deviennent persistants seulement après validation.
   ============================================================ */
.palace-routes-gallery-scene.has-stable-seven .palace-routes-gallery-scene__markers i:nth-child(n+6) span,
.palace-routes-gallery-scene__markers i.is-stable span {
  border-style: solid;
  border-color: rgba(239, 207, 129, .78);
  background: rgba(206, 166, 74, .12);
  box-shadow: 0 0 22px rgba(218, 178, 88, .22);
}
.routes-gallery-stable-rule {
  display: grid;
  gap: .35rem;
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(224, 193, 119, .3);
  border-left: 3px solid rgba(230, 198, 122, .72);
  border-radius: .75rem;
  background: rgba(214, 174, 80, .06);
}
.routes-gallery-stable-rule strong {
  color: rgba(249, 227, 172, .96);
  letter-spacing: .08em;
}
.routes-gallery-stable-rule span {
  color: rgba(239, 231, 211, .7);
  line-height: 1.55;
}
.routes-gallery-stable-criteria {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .7rem;
  margin: 1rem 0;
}
.routes-gallery-stable-criteria > button {
  min-height: 112px;
  display: grid;
  align-content: start;
  gap: .45rem;
  text-align: left;
  background: rgba(255, 255, 255, .025);
}
.routes-gallery-stable-criteria > button strong {
  color: rgba(244, 219, 158, .9);
  letter-spacing: .08em;
}
.routes-gallery-stable-criteria > button small {
  color: rgba(237, 229, 209, .66);
  line-height: 1.45;
}
.routes-gallery-stable-criteria > button.is-active {
  border-color: rgba(232, 199, 122, .74);
  background: rgba(215, 175, 82, .13);
  box-shadow: inset 0 0 0 1px rgba(238, 204, 126, .08);
}
.routes-gallery-full-route li.is-new.is-stable {
  border-style: solid;
  border-color: rgba(234, 201, 123, .7);
  background: rgba(218, 176, 82, .12);
}
@media (max-width: 720px) {
  .routes-gallery-stable-criteria {
    grid-template-columns: 1fr;
  }
  .routes-gallery-stable-criteria > button {
    min-height: 72px;
  }
}

/* VNEW.0.55 — rappel différé 6/7 : diagnostic tactile lisible. */
.routes-gallery-diagnoses {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 14px;
}
.routes-gallery-diagnoses button {
  min-height: 48px;
  display: grid;
  gap: 4px;
  align-content: center;
  text-align: left;
}
.routes-gallery-diagnoses button small {
  opacity: .72;
  line-height: 1.25;
}
@media (max-width: 560px) {
  .routes-gallery-diagnoses { grid-template-columns: 1fr; }
}

/* =========================================================
   VNEW.0.56 — MON PARCOURS · centre personnel léger
   ========================================================= */

.journey-hub[hidden],
.journey-hub__panel[hidden],
.journey-hub__backdrop[hidden],
.journey-hub [hidden] {
  display: none !important;
}

.journey-hub {
  position: relative;
  z-index: 880;
}

.journey-hub__trigger {
  position: fixed;
  z-index: 882;
  right: max(1rem, env(safe-area-inset-right));
  bottom: max(1rem, env(safe-area-inset-bottom));
  width: 3.35rem;
  height: 3.35rem;
  display: grid;
  place-items: center;
  border: 1px solid rgba(224, 204, 155, .38);
  border-radius: 50%;
  background:
    radial-gradient(circle at 35% 28%, rgba(238, 226, 190, .16), transparent 38%),
    rgba(21, 20, 15, .91);
  color: var(--ink);
  box-shadow: 0 12px 32px rgba(0,0,0,.38), inset 0 0 0 1px rgba(255,255,255,.025);
  cursor: pointer;
  font-size: 1.55rem;
  line-height: 1;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.journey-hub__trigger:hover,
.journey-hub__trigger:focus-visible {
  transform: translateY(-1px);
  border-color: rgba(224, 204, 155, .72);
  box-shadow: 0 15px 38px rgba(0,0,0,.44), 0 0 24px rgba(199,173,113,.10);
}

.journey-hub__trigger.has-ready-recalls {
  border-color: rgba(214, 188, 126, .78);
  box-shadow: 0 14px 36px rgba(0,0,0,.42), 0 0 28px rgba(199,173,113,.16);
}

.journey-hub__trigger b {
  position: absolute;
  top: -.24rem;
  right: -.2rem;
  min-width: 1.3rem;
  height: 1.3rem;
  padding: 0 .3rem;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 999px;
  background: #d4b978;
  color: #191913;
  font: 700 .7rem/1 ui-sans-serif, system-ui, sans-serif;
}

.journey-hub__backdrop {
  position: fixed;
  z-index: 883;
  inset: 0;
  background: rgba(5, 5, 4, .54);
  backdrop-filter: blur(4px);
}

.journey-hub__panel {
  position: fixed;
  z-index: 884;
  right: max(1rem, env(safe-area-inset-right));
  bottom: max(1rem, env(safe-area-inset-bottom));
  width: min(30rem, calc(100vw - 2rem));
  max-height: min(80dvh, 47rem);
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid rgba(224, 204, 155, .28);
  border-radius: 22px;
  background:
    linear-gradient(145deg, rgba(255,255,255,.035), transparent 28%),
    rgba(18, 18, 14, .97);
  color: var(--ink);
  box-shadow: 0 28px 90px rgba(0,0,0,.62);
}

.journey-hub__head {
  position: sticky;
  z-index: 2;
  top: 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.2rem 1.2rem 1rem;
  border-bottom: 1px solid rgba(231,220,187,.10);
  background: rgba(18,18,14,.97);
}

.journey-hub__head p,
.journey-hub__section-title span {
  margin: 0;
  color: var(--gold);
  font-size: .68rem;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.journey-hub__head h2 {
  margin: .35rem 0 0;
  font-size: clamp(1.35rem, 4vw, 1.7rem);
  font-weight: 400;
  line-height: 1.15;
}

.journey-hub__close {
  flex: 0 0 auto;
  width: 2.75rem;
  height: 2.75rem;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: rgba(255,255,255,.025);
  color: var(--ink);
  cursor: pointer;
  font-size: 1.35rem;
}

.journey-hub__body {
  display: grid;
  gap: 1rem;
  padding: 1rem 1.2rem calc(1.2rem + env(safe-area-inset-bottom));
}

.journey-hub__section {
  display: grid;
  gap: .6rem;
}

.journey-hub__section + .journey-hub__section {
  padding-top: .25rem;
}

.journey-hub__section-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.journey-hub__section-title strong {
  min-width: 1.55rem;
  height: 1.55rem;
  display: grid;
  place-items: center;
  border: 1px solid rgba(199,173,113,.28);
  border-radius: 999px;
  color: #e0c98f;
  font-size: .74rem;
}

.journey-hub__recalls {
  display: grid;
  gap: .55rem;
}

.journey-hub__recall,
.journey-hub__simple-card,
.journey-hub__empty {
  border: 1px solid rgba(231,220,187,.13);
  border-radius: 15px;
  background: rgba(255,255,255,.025);
  padding: .9rem;
}

.journey-hub__recall,
.journey-hub__simple-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: .75rem;
}

.journey-hub__recall div,
.journey-hub__simple-card div,
.journey-hub__empty {
  min-width: 0;
}

.journey-hub__recall strong,
.journey-hub__simple-card strong,
.journey-hub__empty strong {
  display: block;
  font-weight: 400;
  font-size: .98rem;
  line-height: 1.3;
}

.journey-hub__recall small,
.journey-hub__simple-card small,
.journey-hub__empty small {
  display: block;
  margin-top: .28rem;
  color: var(--muted);
  font-size: .77rem;
  line-height: 1.45;
}

.journey-hub__status {
  display: inline-block;
  margin-bottom: .35rem;
  color: #e0c98f;
  font-size: .62rem;
  letter-spacing: .14em;
}

.journey-hub__recall button,
.journey-hub__simple-card button {
  min-height: 2.75rem;
  padding: .62rem .8rem;
  border: 1px solid rgba(238,233,215,.28);
  border-radius: 999px;
  background: rgba(238,233,215,.05);
  color: var(--ink);
  cursor: pointer;
  font-size: .69rem;
  letter-spacing: .06em;
  white-space: nowrap;
}

.journey-hub__recall button:hover,
.journey-hub__simple-card button:hover {
  border-color: rgba(238,233,215,.52);
  background: rgba(238,233,215,.09);
}

.journey-hub__note {
  margin: .1rem .1rem 0;
  color: var(--dim);
  font-size: .7rem;
  line-height: 1.5;
}

.journey-hub-open body {
  overflow: hidden;
}

@media (max-width: 560px), (pointer: coarse) {
  .journey-hub__trigger {
    width: 3.5rem;
    height: 3.5rem;
  }

  .journey-hub__panel {
    right: .6rem;
    bottom: max(.6rem, env(safe-area-inset-bottom));
    width: calc(100vw - 1.2rem);
    max-height: min(82dvh, 48rem);
    border-radius: 20px;
  }

  .journey-hub__close,
  .journey-hub__recall button,
  .journey-hub__simple-card button {
    min-height: 48px;
  }

  .journey-hub__recall,
  .journey-hub__simple-card {
    grid-template-columns: 1fr;
  }

  .journey-hub__recall button,
  .journey-hub__simple-card button {
    width: 100%;
  }
}

/* =========================================================
   VNEW.0.57 — enchaînement direct des rappels
   ========================================================= */
.journey-hub__chain[hidden] {
  display: none !important;
}

.journey-hub__chain {
  position: fixed;
  z-index: 886;
  left: 50%;
  bottom: max(1rem, env(safe-area-inset-bottom));
  width: min(31rem, calc(100vw - 2rem));
  transform: translateX(-50%);
  display: grid;
  gap: .55rem;
  padding: 1rem 1.05rem;
  border: 1px solid rgba(224, 204, 155, .34);
  border-radius: 18px;
  background: rgba(18, 18, 14, .97);
  color: var(--ink);
  box-shadow: 0 22px 70px rgba(0,0,0,.58);
}

.journey-hub__chain > span {
  color: var(--gold);
  font-size: .66rem;
  letter-spacing: .15em;
}

.journey-hub__chain > strong {
  font-weight: 400;
  font-size: 1.05rem;
}

.journey-hub__chain > small {
  color: var(--muted);
  line-height: 1.45;
}

.journey-hub__chain > div {
  display: flex;
  gap: .55rem;
  margin-top: .25rem;
}

.journey-hub__chain button {
  min-height: 44px;
  padding: .62rem .85rem;
  border: 1px solid rgba(238,233,215,.28);
  border-radius: 999px;
  background: rgba(238,233,215,.05);
  color: var(--ink);
  cursor: pointer;
  font-size: .7rem;
  letter-spacing: .06em;
}

.journey-hub__chain button.is-primary {
  border-color: rgba(214,188,126,.58);
  background: rgba(214,188,126,.12);
}

@media (max-width: 560px), (pointer: coarse) {
  .journey-hub__chain {
    bottom: max(.6rem, env(safe-area-inset-bottom));
    width: calc(100vw - 1.2rem);
  }

  .journey-hub__chain > div {
    display: grid;
  }

  .journey-hub__chain button {
    min-height: 48px;
    width: 100%;
  }
}

/* =========================================================
   VNEW.0.58 — MON PARCOURS · prochain rappel calme
   ========================================================= */

.journey-hub__trigger.has-upcoming-recall:not(.has-ready-recalls) {
  border-color: rgba(224, 204, 155, .5);
  box-shadow: 0 13px 34px rgba(0,0,0,.4), 0 0 20px rgba(199,173,113,.08);
}

.journey-hub__upcoming {
  min-width: 0;
  padding: .9rem;
  border: 1px solid rgba(224, 204, 155, .17);
  border-radius: 15px;
  background:
    linear-gradient(135deg, rgba(224,204,155,.035), transparent 55%),
    rgba(255,255,255,.018);
}

.journey-hub__upcoming strong {
  display: block;
  font-weight: 400;
  font-size: .98rem;
  line-height: 1.3;
}

.journey-hub__upcoming small {
  display: block;
  margin-top: .28rem;
  color: var(--muted);
  font-size: .77rem;
  line-height: 1.45;
}

.journey-hub__calm-note {
  margin: -.05rem .1rem 0;
  color: var(--dim);
  font-size: .68rem;
  line-height: 1.45;
}

/* VNEW.0.63 — SÉANCE GUIDÉE · ROTATION INTELLIGENTE */
.guided-10[hidden] {
  display: none !important;
}

.guided-10 {
  position: fixed;
  inset: 0;
  z-index: 1280;
  display: grid;
  place-items: center;
  padding: clamp(14px, 3vw, 32px);
}

.guided-10__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(7, 11, 9, 0.76);
  backdrop-filter: blur(8px);
}

.guided-10__panel {
  position: relative;
  width: min(680px, 100%);
  max-height: min(760px, calc(100dvh - 28px));
  overflow: auto;
  border: 1px solid rgba(221, 204, 164, 0.28);
  border-radius: 24px;
  background:
    linear-gradient(180deg, rgba(34, 39, 31, 0.98), rgba(17, 22, 18, 0.985));
  box-shadow: 0 28px 90px rgba(0, 0, 0, 0.48);
  color: #f2ead8;
}

.guided-10__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding: 22px 24px 18px;
  border-bottom: 1px solid rgba(221, 204, 164, 0.12);
}

.guided-10__head p,
.guided-10__step {
  margin: 0;
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  color: rgba(230, 214, 176, 0.72);
}

.guided-10__head span {
  display: block;
  margin-top: 7px;
  font-size: 0.78rem;
  color: rgba(242, 234, 216, 0.56);
}

.guided-10__pause {
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border: 1px solid rgba(221, 204, 164, 0.18);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.035);
  color: rgba(242, 234, 216, 0.8);
  font-size: 1.4rem;
  cursor: pointer;
}

.guided-10__content {
  padding: clamp(24px, 5vw, 42px);
}

.guided-10__content h2 {
  margin: 10px 0 12px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.55rem, 4vw, 2.25rem);
  line-height: 1.1;
  font-weight: 500;
}

.guided-10__copy,
.guided-10__hint {
  color: rgba(242, 234, 216, 0.72);
  line-height: 1.65;
}

.guided-10__body {
  margin: 28px 0;
}

.guided-10__principles,
.guided-10__summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.guided-10__principles span,
.guided-10__summary span {
  min-height: 88px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 7px;
  padding: 14px;
  border: 1px solid rgba(221, 204, 164, 0.16);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.025);
  text-align: center;
  font-size: 0.78rem;
  line-height: 1.35;
  color: rgba(242, 234, 216, 0.68);
}

.guided-10__principles b,
.guided-10__summary b {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.35rem;
  font-weight: 500;
  color: #ead9ae;
}

.guided-10__pair {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: clamp(12px, 4vw, 28px);
  min-height: 128px;
  padding: 20px;
  border: 1px solid rgba(221, 204, 164, 0.2);
  border-radius: 20px;
  background: radial-gradient(circle at 50% 45%, rgba(209, 183, 119, 0.1), transparent 68%);
  text-align: center;
}

.guided-10__pair strong {
  font-size: clamp(1.05rem, 4vw, 1.5rem);
  letter-spacing: 0.06em;
}

.guided-10__pair i {
  color: rgba(230, 214, 176, 0.56);
  font-style: normal;
  font-size: 1.35rem;
}

.guided-10__pair .is-hidden-word {
  color: rgba(230, 214, 176, 0.44);
  font-size: 2.1rem;
}

.guided-10__break-mark {
  display: grid;
  place-items: center;
  min-height: 112px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 2.4rem;
  letter-spacing: 0.28em;
  color: rgba(230, 214, 176, 0.58);
}

.guided-10__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
}

.guided-10__actions button {
  min-height: 44px;
  padding: 11px 16px;
  border: 1px solid rgba(221, 204, 164, 0.22);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.035);
  color: rgba(242, 234, 216, 0.84);
  font: inherit;
  font-size: 0.76rem;
  letter-spacing: 0.05em;
  cursor: pointer;
}

.guided-10__actions button.is-primary {
  border-color: rgba(230, 202, 139, 0.46);
  background: rgba(222, 193, 129, 0.13);
  color: #f3e5c4;
}

.guided-10__actions button:hover,
.guided-10__actions button:focus-visible,
.guided-10__pause:hover,
.guided-10__pause:focus-visible {
  border-color: rgba(230, 202, 139, 0.62);
  outline: none;
}

.guided-10__footer {
  padding: 14px 24px 18px;
  border-top: 1px solid rgba(221, 204, 164, 0.1);
  color: rgba(242, 234, 216, 0.48);
  font-size: 0.72rem;
  line-height: 1.5;
  text-align: center;
}

.guided-10-open body {
  overflow: hidden;
}

.journey-hub__guided-card {
  border-color: rgba(205, 182, 126, 0.22);
}

@media (max-width: 620px) {
  .guided-10 {
    padding: 8px;
  }

  .guided-10__panel {
    max-height: calc(100dvh - 16px);
    border-radius: 18px;
  }

  .guided-10__head {
    padding: 18px;
  }

  .guided-10__content {
    padding: 24px 18px;
  }

  .guided-10__principles,
  .guided-10__summary {
    grid-template-columns: 1fr;
  }

  .guided-10__principles span,
  .guided-10__summary span {
    min-height: 64px;
  }

  .guided-10__actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .guided-10__actions button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .guided-10 *,
  .guided-10 *::before,
  .guided-10 *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}

/* VNEW.0.63 — SÉANCE GUIDÉE · RÉPARATION CIBLÉE */
.guided-10__repair-note {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  min-height: 112px;
  padding: 20px;
  border: 1px solid rgba(221, 204, 164, 0.18);
  border-radius: 20px;
  background: radial-gradient(circle at 50% 45%, rgba(209, 183, 119, 0.09), transparent 68%);
  text-align: center;
}

.guided-10__repair-note strong {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 2rem;
  font-weight: 500;
  color: #ead9ae;
}

.guided-10__repair-note span {
  color: rgba(242, 234, 216, 0.72);
  line-height: 1.45;
}

.guided-10__repair-cues {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 12px;
}

.guided-10__repair-cues span {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 42px;
  padding: 8px 10px;
  border: 1px solid rgba(221, 204, 164, 0.12);
  border-radius: 12px;
  color: rgba(242, 234, 216, 0.62);
  font-size: 0.68rem;
  letter-spacing: 0.06em;
}

.guided-10__repair-cues b {
  color: #ead9ae;
  font-weight: 500;
}

.guided-10__repair-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(221, 204, 164, 0.1);
}

.guided-10__repair-summary small {
  grid-column: 1 / -1;
  color: rgba(230, 214, 176, 0.58);
  font-size: 0.66rem;
  letter-spacing: 0.14em;
  text-align: center;
}

.guided-10__repair-summary span {
  min-height: 58px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 4px;
  padding: 10px 8px;
  border: 1px solid rgba(221, 204, 164, 0.12);
  border-radius: 12px;
  color: rgba(242, 234, 216, 0.64);
  font-size: 0.72rem;
  text-align: center;
}

.guided-10__repair-summary b {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.15rem;
  font-weight: 500;
  color: #ead9ae;
}

@media (max-width: 620px) {
  .guided-10__repair-cues,
  .guided-10__repair-summary {
    grid-template-columns: 1fr;
  }

  .guided-10__repair-summary small {
    grid-column: auto;
  }
}

/* VNEW.0.65 — SÉANCE GUIDÉE 20 MIN · DEUX BLOCS & RAPPEL MÉLANGÉ */
.journey-hub__guided-stack {
  display: grid;
  gap: .55rem;
}

.journey-hub__guided-card--20 {
  border-color: rgba(205, 182, 126, 0.3);
  background:
    linear-gradient(135deg, rgba(205, 182, 126, 0.035), transparent 58%),
    rgba(255,255,255,.025);
}

.guided-20-open body {
  overflow: hidden;
}

.guided-20__blocks {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 10px;
}

.guided-20__blocks span {
  display: grid;
  gap: 5px;
  min-height: 74px;
  place-items: center;
  align-content: center;
  padding: 12px;
  border: 1px solid rgba(221, 204, 164, 0.14);
  border-radius: 14px;
  background: rgba(255,255,255,.02);
  color: rgba(242, 234, 216, 0.64);
  font-size: .72rem;
  line-height: 1.4;
  text-align: center;
}

.guided-20__blocks b {
  color: #ead9ae;
  font-size: .7rem;
  letter-spacing: .12em;
  font-weight: 500;
}

@media (max-width: 620px) {
  .guided-20__blocks {
    grid-template-columns: 1fr;
  }
}

/* VNEW.0.65 — BILAN D’INTERFÉRENCE INTELLIGENT */
.guided-20__reading {
  display: grid;
  gap: 0.55rem;
  margin-top: 1rem;
  padding: 1rem 1.05rem;
  border: 1px solid rgba(210, 184, 126, 0.2);
  border-radius: 14px;
  background: rgba(18, 17, 15, 0.44);
}

.guided-20__reading small {
  font-size: 0.68rem;
  letter-spacing: 0.14em;
  color: rgba(216, 194, 146, 0.72);
}

.guided-20__reading > strong {
  font-size: 0.9rem;
  letter-spacing: 0.055em;
  color: rgba(246, 235, 210, 0.96);
}

.guided-20__reading p {
  margin: 0;
  line-height: 1.55;
  color: rgba(242, 234, 216, 0.72);
}

.guided-20__direction-note {
  display: grid;
  gap: 0.25rem;
  padding-top: 0.7rem;
  border-top: 1px solid rgba(210, 184, 126, 0.12);
}

.guided-20__direction-note b {
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  color: rgba(216, 194, 146, 0.82);
}


/* VNEW.0.66 — SÉANCE GUIDÉE 30 MIN · CONSOLIDATION DIFFÉRÉE */
.journey-hub__guided-card--30 {
  border-color: rgba(205, 182, 126, 0.36);
  background:
    linear-gradient(135deg, rgba(205, 182, 126, 0.055), transparent 62%),
    rgba(255,255,255,.028);
}

.guided-30-open body {
  overflow: hidden;
}

.guided-30__delay {
  min-height: 112px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: .7rem;
  padding: 18px;
  border: 1px solid rgba(221, 204, 164, 0.16);
  border-radius: 18px;
  background: radial-gradient(circle at 50% 45%, rgba(209, 183, 119, 0.08), transparent 68%);
  color: rgba(230, 214, 176, 0.58);
}

.guided-30__delay span,
.guided-30__delay strong {
  min-width: 2.3rem;
  text-align: center;
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 500;
  color: #ead9ae;
}

.guided-30__delay i {
  font-style: normal;
  letter-spacing: .18em;
}

.guided-30__blocks {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 10px;
}

.guided-30__blocks span {
  display: grid;
  gap: 5px;
  min-height: 92px;
  place-items: center;
  align-content: center;
  padding: 12px;
  border: 1px solid rgba(221, 204, 164, 0.14);
  border-radius: 14px;
  background: rgba(255,255,255,.02);
  color: rgba(242, 234, 216, 0.64);
  font-size: .7rem;
  line-height: 1.4;
  text-align: center;
}

.guided-30__blocks b {
  color: #ead9ae;
  font-size: .7rem;
  letter-spacing: .12em;
  font-weight: 500;
}

.guided-30__blocks small {
  color: rgba(230, 214, 176, 0.5);
  font-size: .62rem;
}

@media (max-width: 620px) {
  .guided-30__blocks {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   VNEW.0.67 — SÉANCES GUIDÉES · ENTRÉE COMPACTE 10 / 20 / 30
   ========================================================= */
.journey-hub__guided-entry {
  border-color: rgba(205, 182, 126, 0.3);
  background:
    linear-gradient(135deg, rgba(205, 182, 126, 0.045), transparent 62%),
    rgba(255,255,255,.025);
}

.journey-hub__guided-entry.has-active {
  border-color: rgba(219, 194, 133, 0.46);
  box-shadow: inset 0 0 0 1px rgba(219, 194, 133, 0.035);
}

.journey-hub__guided-kicker {
  display: block;
  margin-bottom: .3rem;
  color: #d9be7c;
  font-size: .61rem;
  letter-spacing: .14em;
}

.journey-hub__guided-entry-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .45rem;
}

.journey-hub__simple-card .journey-hub__guided-entry-actions button.is-primary,
.journey-hub__guided-option button.is-primary {
  border-color: rgba(224, 196, 128, .52);
  background: rgba(222, 193, 129, .12);
  color: #f1dfb8;
}

.journey-hub__guided-picker {
  display: grid;
  gap: .55rem;
  padding: .7rem;
  border: 1px solid rgba(221, 204, 164, .16);
  border-radius: 15px;
  background: rgba(8, 8, 7, .24);
}

.journey-hub__guided-picker-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .15rem .15rem .3rem .25rem;
}

.journey-hub__guided-picker-head > div {
  min-width: 0;
}

.journey-hub__guided-picker-head span {
  display: block;
  color: #d9be7c;
  font-size: .62rem;
  letter-spacing: .14em;
}

.journey-hub__guided-picker-head small {
  display: block;
  margin-top: .22rem;
  color: var(--dim);
  font-size: .69rem;
  line-height: 1.35;
}

.journey-hub__guided-picker-head > button {
  flex: 0 0 auto;
  width: 2.2rem;
  height: 2.2rem;
  border: 1px solid rgba(238,233,215,.2);
  border-radius: 50%;
  background: rgba(255,255,255,.02);
  color: var(--muted);
  cursor: pointer;
  font: inherit;
  font-size: 1rem;
}

.journey-hub__guided-options {
  display: grid;
  gap: .45rem;
}

.journey-hub__guided-option {
  display: grid;
  grid-template-columns: 3rem minmax(0, 1fr) auto;
  align-items: center;
  gap: .65rem;
  min-width: 0;
  padding: .68rem;
  border: 1px solid rgba(231,220,187,.11);
  border-radius: 13px;
  background: rgba(255,255,255,.018);
}

.journey-hub__guided-option.is-active {
  border-color: rgba(219, 194, 133, .4);
  background: rgba(216, 185, 111, .055);
}

.journey-hub__guided-duration {
  width: 3rem;
  height: 3rem;
  display: grid;
  place-items: center;
  align-content: center;
  border: 1px solid rgba(221, 204, 164, .17);
  border-radius: 50%;
  line-height: 1;
}

.journey-hub__guided-duration strong {
  color: #ead9ae;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1rem;
  font-weight: 500;
}

.journey-hub__guided-duration span {
  margin-top: .15rem;
  color: var(--dim);
  font-size: .48rem;
  letter-spacing: .09em;
}

.journey-hub__guided-option-copy {
  min-width: 0;
}

.journey-hub__guided-option-copy strong {
  display: block;
  color: var(--ink);
  font-size: .84rem;
  font-weight: 400;
  line-height: 1.25;
}

.journey-hub__guided-option-copy small {
  display: block;
  margin-top: .2rem;
  color: var(--muted);
  font-size: .69rem;
  line-height: 1.35;
}

.journey-hub__guided-option > button {
  min-height: 2.6rem;
  padding: .55rem .7rem;
  border: 1px solid rgba(238,233,215,.25);
  border-radius: 999px;
  background: rgba(238,233,215,.04);
  color: var(--ink);
  cursor: pointer;
  font: inherit;
  font-size: .64rem;
  letter-spacing: .055em;
  white-space: nowrap;
}

.journey-hub__guided-option > button:hover,
.journey-hub__guided-option > button:focus-visible,
.journey-hub__guided-picker-head > button:hover,
.journey-hub__guided-picker-head > button:focus-visible {
  border-color: rgba(238,233,215,.48);
  outline: none;
}

@media (max-width: 560px), (pointer: coarse) {
  .journey-hub__guided-entry-actions {
    display: grid;
    grid-template-columns: 1fr;
    width: 100%;
  }

  .journey-hub__guided-option {
    grid-template-columns: 2.8rem minmax(0, 1fr);
  }

  .journey-hub__guided-duration {
    width: 2.8rem;
    height: 2.8rem;
  }

  .journey-hub__guided-option > button {
    grid-column: 1 / -1;
    width: 100%;
    min-height: 46px;
  }
}

/* =========================================================
   VNEW.0.68 — CONCENTRATION DOUCE · outil transversal
   ========================================================= */
.focus-tool[hidden],
.focus-tool__panel[hidden],
.focus-tool__backdrop[hidden],
.focus-tool [hidden] {
  display: none !important;
}

.focus-tool {
  position: relative;
  z-index: 890;
}

.focus-tool__trigger {
  position: fixed;
  z-index: 892;
  left: max(1rem, env(safe-area-inset-left));
  bottom: max(1rem, env(safe-area-inset-bottom));
  min-height: 3.35rem;
  display: inline-flex;
  align-items: center;
  gap: .72rem;
  padding: .56rem .9rem .56rem .62rem;
  border: 1px solid rgba(224, 204, 155, .32);
  border-radius: 999px;
  background:
    linear-gradient(135deg, rgba(238,226,190,.075), transparent 55%),
    rgba(21, 20, 15, .91);
  color: var(--ink);
  box-shadow: 0 12px 32px rgba(0,0,0,.38), inset 0 0 0 1px rgba(255,255,255,.02);
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

.focus-tool__trigger:hover,
.focus-tool__trigger:focus-visible {
  transform: translateY(-1px);
  border-color: rgba(224, 204, 155, .64);
  box-shadow: 0 15px 38px rgba(0,0,0,.44), 0 0 24px rgba(199,173,113,.08);
}

.focus-tool__trigger-icon {
  flex: 0 0 auto;
  width: 2.15rem;
  height: 2.15rem;
  display: grid;
  place-items: center;
  border: 1px solid rgba(224,204,155,.23);
  border-radius: 50%;
  color: #dfc98f;
  font: 400 1.35rem/1 Georgia, serif;
}

.focus-tool__trigger-copy {
  min-width: 0;
  display: grid;
  gap: .12rem;
  text-align: left;
}

.focus-tool__trigger-copy b {
  color: rgba(238,233,215,.88);
  font: 500 .67rem/1.1 Georgia, serif;
  letter-spacing: .12em;
}

.focus-tool__trigger-copy small {
  color: var(--dim);
  font: 600 .58rem/1.2 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: .08em;
}

.focus-tool__trigger.is-active {
  border-color: rgba(214,188,126,.52);
  background:
    radial-gradient(circle at 18% 45%, rgba(214,188,126,.11), transparent 35%),
    rgba(21, 20, 15, .94);
}

.focus-tool__trigger.is-active .focus-tool__trigger-icon {
  box-shadow: inset 0 0 0 1px rgba(214,188,126,.08), 0 0 17px rgba(199,173,113,.08);
}

.focus-tool__trigger.is-paused {
  opacity: .88;
}

.focus-tool__trigger.is-due {
  border-color: rgba(223,195,128,.86);
  box-shadow: 0 14px 36px rgba(0,0,0,.44), 0 0 0 5px rgba(199,173,113,.055), 0 0 30px rgba(199,173,113,.16);
  animation: focus-tool-soft-pulse 2.8s ease-in-out infinite;
}

@keyframes focus-tool-soft-pulse {
  0%, 100% { box-shadow: 0 14px 36px rgba(0,0,0,.44), 0 0 0 4px rgba(199,173,113,.035), 0 0 22px rgba(199,173,113,.10); }
  50% { box-shadow: 0 14px 36px rgba(0,0,0,.44), 0 0 0 8px rgba(199,173,113,.07), 0 0 34px rgba(199,173,113,.18); }
}

.focus-tool__backdrop {
  position: fixed;
  z-index: 893;
  inset: 0;
  background: rgba(5,5,4,.46);
  backdrop-filter: blur(3px);
}

.focus-tool__panel {
  position: fixed;
  z-index: 894;
  left: max(1rem, env(safe-area-inset-left));
  bottom: max(1rem, env(safe-area-inset-bottom));
  width: min(29rem, calc(100vw - 2rem));
  max-height: min(82dvh, 48rem);
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid rgba(224,204,155,.28);
  border-radius: 22px;
  background:
    linear-gradient(145deg, rgba(255,255,255,.035), transparent 28%),
    rgba(18,18,14,.975);
  color: var(--ink);
  box-shadow: 0 28px 90px rgba(0,0,0,.62);
}

.focus-tool__head {
  position: sticky;
  z-index: 2;
  top: 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.15rem 1.2rem 1rem;
  border-bottom: 1px solid rgba(231,220,187,.10);
  background: rgba(18,18,14,.975);
}

.focus-tool__head p,
.focus-tool__label,
.focus-tool__advice > span,
.focus-tool__state-card > span {
  margin: 0;
  color: var(--gold);
  font-size: .66rem;
  letter-spacing: .15em;
  text-transform: uppercase;
}

.focus-tool__head h2 {
  margin: .35rem 0 0;
  font-size: clamp(1.35rem, 4vw, 1.7rem);
  font-weight: 400;
  line-height: 1.15;
}

.focus-tool__close {
  flex: 0 0 auto;
  width: 2.75rem;
  height: 2.75rem;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: rgba(255,255,255,.025);
  color: var(--ink);
  cursor: pointer;
  font-size: 1.35rem;
}

.focus-tool__body {
  display: grid;
  gap: 1rem;
  padding: 1rem 1.2rem calc(1.2rem + env(safe-area-inset-bottom));
}

.focus-tool__intro p,
.focus-tool__mode-copy,
.focus-tool__fineprint,
.focus-tool__state-card p,
.focus-tool__advice p {
  margin: 0;
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.55;
}

.focus-tool__section {
  display: grid;
  gap: .62rem;
}

.focus-tool__durations {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .45rem;
}

.focus-tool__durations button {
  min-height: 4.25rem;
  display: grid;
  place-items: center;
  align-content: center;
  gap: .16rem;
  border: 1px solid rgba(231,220,187,.14);
  border-radius: 14px;
  background: rgba(255,255,255,.025);
  color: var(--ink);
  cursor: pointer;
}

.focus-tool__durations button strong {
  font-size: 1.28rem;
  font-weight: 400;
  color: #ead9ae;
}

.focus-tool__durations button span {
  color: var(--dim);
  font: 600 .58rem/1 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: .1em;
}

.focus-tool__durations button.is-selected,
.focus-tool__modes button.is-selected {
  border-color: rgba(214,188,126,.58);
  background: rgba(214,188,126,.09);
  box-shadow: inset 0 0 0 1px rgba(214,188,126,.035);
}

.focus-tool__modes {
  display: grid;
  gap: .48rem;
}

.focus-tool__modes button {
  min-height: 4rem;
  display: grid;
  gap: .28rem;
  padding: .78rem .88rem;
  border: 1px solid rgba(231,220,187,.14);
  border-radius: 14px;
  background: rgba(255,255,255,.022);
  color: var(--ink);
  cursor: pointer;
  text-align: left;
}

.focus-tool__modes button strong {
  font-size: .76rem;
  font-weight: 500;
  letter-spacing: .045em;
}

.focus-tool__modes button small {
  color: var(--muted);
  font-size: .72rem;
  line-height: 1.4;
}

.focus-tool__advice,
.focus-tool__state-card {
  display: grid;
  gap: .42rem;
  padding: .92rem;
  border: 1px solid rgba(224,204,155,.16);
  border-radius: 15px;
  background:
    linear-gradient(135deg, rgba(224,204,155,.035), transparent 60%),
    rgba(255,255,255,.018);
}

.focus-tool__advice strong,
.focus-tool__state-card strong {
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.3;
}

.focus-tool__state-card > strong {
  font-size: clamp(1.35rem, 5vw, 1.8rem);
  color: #ead9ae;
}

.focus-tool__state-card.is-due {
  border-color: rgba(214,188,126,.38);
  background:
    radial-gradient(circle at 15% 10%, rgba(214,188,126,.08), transparent 42%),
    rgba(255,255,255,.02);
}

.focus-tool__primary,
.focus-tool__actions button,
.focus-tool__actions + button,
.focus-tool__body > button[data-focus-finish] {
  min-height: 2.9rem;
  padding: .68rem .92rem;
  border: 1px solid rgba(238,233,215,.28);
  border-radius: 999px;
  background: rgba(238,233,215,.05);
  color: var(--ink);
  cursor: pointer;
  font-size: .7rem;
  letter-spacing: .07em;
}

.focus-tool__primary,
.focus-tool__actions button.focus-tool__primary {
  border-color: rgba(214,188,126,.58);
  background: rgba(214,188,126,.12);
}

.focus-tool__actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .5rem;
}

.focus-tool__fineprint {
  color: var(--dim);
  font-size: .68rem;
}

.focus-tool-open body {
  overflow: hidden;
}

@media (max-width: 560px), (pointer: coarse) {
  .focus-tool__trigger {
    left: max(.6rem, env(safe-area-inset-left));
    bottom: max(.6rem, env(safe-area-inset-bottom));
    min-height: 3.5rem;
    padding-right: .78rem;
  }

  .focus-tool__trigger-icon {
    width: 2.2rem;
    height: 2.2rem;
  }

  .focus-tool__panel {
    left: .6rem;
    bottom: max(.6rem, env(safe-area-inset-bottom));
    width: calc(100vw - 1.2rem);
    max-height: min(84dvh, 49rem);
    border-radius: 20px;
  }

  .focus-tool__close,
  .focus-tool__primary,
  .focus-tool__actions button,
  .focus-tool__durations button,
  .focus-tool__modes button {
    min-height: 48px;
  }

  .focus-tool__durations {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .focus-tool__actions {
    grid-template-columns: 1fr;
  }

  .focus-tool__actions button,
  .focus-tool__primary {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .focus-tool__trigger,
  .focus-tool__trigger.is-due {
    transition: none;
    animation: none;
  }
}

/* =========================================================
   VNEW.0.69–0.70 — GRAND HALL · CARTOTHÈQUE DES ZONES
   Première carte : 7 loci inchangés, 2 zones continues.
   ========================================================= */
.palace-zones-scene {
  position: relative;
  min-height: 100dvh;
  overflow: hidden;
  isolation: isolate;
  color: rgba(244, 237, 218, .94);
  background:
    radial-gradient(circle at 50% 18%, rgba(180, 155, 101, .17), transparent 28%),
    linear-gradient(180deg, #191913 0%, #10100d 72%, #090a08 100%);
}
.palace-zones-scene__architecture {
  position: absolute;
  inset: 0;
  z-index: -2;
  overflow: hidden;
}
.palace-zones-scene__vault {
  position: absolute;
  left: 10%;
  right: 10%;
  top: 5%;
  height: 50%;
  border: 1px solid rgba(214, 188, 126, .18);
  border-bottom: 0;
  border-radius: 48% 48% 0 0 / 34% 34% 0 0;
  background:
    repeating-linear-gradient(90deg, transparent 0 11%, rgba(220, 193, 130, .045) 11% 11.25%),
    linear-gradient(180deg, rgba(115, 100, 71, .08), transparent 62%);
  box-shadow: inset 0 0 90px rgba(0,0,0,.52);
}
.palace-zones-scene__cabinet {
  position: absolute;
  top: 20%;
  bottom: 7%;
  width: 20%;
  border: 1px solid rgba(205, 179, 119, .12);
  background:
    repeating-linear-gradient(0deg, rgba(215, 189, 126, .06) 0 1px, transparent 1px 44px),
    repeating-linear-gradient(90deg, transparent 0 46%, rgba(215, 189, 126, .055) 46% 47%, transparent 47% 100%),
    rgba(24, 23, 18, .24);
  opacity: .75;
}
.palace-zones-scene__cabinet.is-left { left: 3%; transform: perspective(600px) rotateY(12deg); transform-origin: left; }
.palace-zones-scene__cabinet.is-right { right: 3%; transform: perspective(600px) rotateY(-12deg); transform-origin: right; }
.palace-zones-scene__table {
  position: absolute;
  left: 24%;
  right: 24%;
  bottom: -5%;
  height: 30%;
  transform: perspective(680px) rotateX(65deg);
  transform-origin: bottom;
  border: 1px solid rgba(220, 193, 126, .14);
  background:
    linear-gradient(90deg, transparent 49.8%, rgba(226, 197, 128, .13) 50%, transparent 50.2%),
    rgba(118, 93, 50, .05);
}
.palace-zones-scene__map-lines {
  position: absolute;
  left: 31%;
  right: 31%;
  bottom: 10%;
  height: 13%;
  border-top: 1px solid rgba(231, 202, 134, .14);
  border-bottom: 1px solid rgba(231, 202, 134, .08);
  background: repeating-linear-gradient(90deg, transparent 0 14%, rgba(231, 202, 134, .09) 14% 14.4%);
  opacity: .62;
}
.palace-zones-card {
  width: min(760px, calc(100% - 2rem));
  margin: clamp(4.5rem, 10vh, 7rem) auto 2rem;
  padding: clamp(1.2rem, 3vw, 2rem);
  border: 1px solid rgba(220, 193, 129, .29);
  border-radius: 1.15rem;
  background: linear-gradient(180deg, rgba(24, 24, 18, .92), rgba(13, 13, 10, .95));
  box-shadow: 0 24px 82px rgba(0,0,0,.4);
  backdrop-filter: blur(10px);
}
.palace-zones-card h1,
.palace-zones-panel h2 {
  margin: .3rem 0 .7rem;
  color: rgba(249, 231, 188, .98);
  font-weight: 500;
}
.palace-zones-card > p:not(.eyebrow):not(.palace-zones-card__status),
.palace-zones-panel__copy,
.palace-zones-panel__note {
  color: rgba(240, 233, 215, .72);
  line-height: 1.65;
}
.palace-zones-card__principle,
.zones-rule {
  display: grid;
  gap: .24rem;
  margin: 1rem 0;
  padding: .9rem 1rem;
  border-left: 2px solid rgba(214, 181, 105, .62);
  background: rgba(203, 168, 87, .065);
}
.palace-zones-card__principle span,
.zones-rule span,
.zones-summary span {
  color: rgba(216, 188, 121, .74);
  font-size: .66rem;
  letter-spacing: .12em;
}
.palace-zones-card__principle strong,
.zones-rule strong { color: rgba(248, 225, 168, .95); letter-spacing: .07em; }
.palace-zones-card__principle small,
.zones-rule small { color: rgba(238, 231, 214, .64); line-height: 1.45; }
.palace-zones-card__actions,
.palace-zones-panel__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin-top: 1.15rem;
}
.palace-zones-card button,
.palace-zones-panel button {
  min-height: 44px;
  padding: .68rem .95rem;
  border: 1px solid rgba(213, 184, 116, .38);
  border-radius: .8rem;
  background: rgba(20, 19, 14, .74);
  color: rgba(244, 234, 211, .9);
  font: inherit;
  letter-spacing: .055em;
  cursor: pointer;
}
.palace-zones-card button.is-primary,
.palace-zones-panel button.is-primary {
  border-color: rgba(228, 197, 127, .66);
  background: rgba(203, 166, 81, .15);
  color: rgba(251, 231, 181, .98);
}
.palace-zones-card button:disabled,
.palace-zones-panel button:disabled { cursor: default; opacity: .42; }
.palace-zones-card__status {
  margin-top: .85rem;
  color: rgba(218, 192, 132, .8);
  font-size: .75rem;
  letter-spacing: .06em;
}
.palace-zones-layer {
  position: fixed;
  inset: 0;
  z-index: 90;
  overflow: auto;
  padding: max(1rem, env(safe-area-inset-top)) 1rem max(1rem, env(safe-area-inset-bottom));
  background: rgba(8, 8, 6, .87);
  backdrop-filter: blur(13px);
}
.palace-zones-layer[hidden] { display: none; }
.palace-zones-panel {
  width: min(880px, 100%);
  margin: 2vh auto;
  padding: clamp(1rem, 3vw, 1.7rem);
  border: 1px solid rgba(222, 194, 126, .34);
  border-radius: 1rem;
  background: linear-gradient(180deg, rgba(27, 26, 20, .98), rgba(13, 13, 10, .99));
  box-shadow: 0 20px 80px rgba(0,0,0,.52);
}
.palace-zones-panel > header {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 1rem;
}
.zones-route-strip {
  list-style: none;
  margin: 1rem 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: .5rem;
}
.zones-route-strip li {
  position: relative;
  min-width: 0;
  display: grid;
  gap: .22rem;
  padding: .7rem .55rem;
  border: 1px solid rgba(213, 185, 118, .2);
  border-radius: .72rem;
  background: rgba(255,255,255,.023);
}
.zones-route-strip li.is-boundary-end { border-right-color: rgba(237, 204, 127, .8); box-shadow: 8px 0 0 -7px rgba(237, 204, 127, .75); }
.zones-route-strip span { color: rgba(213, 186, 122, .7); font-size: .68rem; }
.zones-route-strip strong { color: rgba(243, 232, 210, .9); font-size: .82rem; overflow-wrap: anywhere; }
.zones-route-strip em { color: rgba(235, 202, 126, .76); font-size: .54rem; font-style: normal; letter-spacing: .08em; }
.zones-boundary-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
  margin: 1rem 0;
}
.zones-boundary-grid button {
  min-height: 116px;
  display: grid;
  align-content: center;
  gap: .28rem;
  text-align: left;
}
.zones-boundary-grid button span { color: rgba(214, 187, 122, .7); font-size: .64rem; letter-spacing: .1em; }
.zones-boundary-grid button strong { color: rgba(247, 225, 171, .94); }
.zones-boundary-grid button small { color: rgba(238, 230, 211, .64); line-height: 1.4; }
.zones-boundary-grid button.is-selected { border-color: rgba(236, 202, 126, .76); background: rgba(211, 174, 86, .13); box-shadow: inset 0 0 0 1px rgba(238, 205, 128, .08); }
.zones-two-map {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: stretch;
  gap: .65rem;
  margin: 1rem 0;
}
.zones-two-map > i { align-self: center; color: rgba(218, 190, 124, .5); font-style: normal; }
.zones-two-map article {
  padding: .9rem;
  border: 1px solid rgba(218, 189, 121, .24);
  border-radius: .85rem;
  background: rgba(255,255,255,.024);
}
.zones-two-map article > span { color: rgba(222, 193, 126, .78); font-size: .68rem; letter-spacing: .12em; }
.zones-two-map article > strong { display: block; margin: .25rem 0 .7rem; color: rgba(246, 225, 173, .94); font-size: .82rem; }
.zones-two-map ol { list-style: none; margin: 0; padding: 0; display: grid; gap: .42rem; }
.zones-two-map li { display: grid; grid-template-columns: 1.7rem minmax(0,1fr); gap: .5rem; align-items: center; color: rgba(240, 232, 212, .82); }
.zones-two-map li b { display: grid; place-items: center; width: 1.55rem; height: 1.55rem; border: 1px solid rgba(217, 188, 120, .32); border-radius: 50%; color: rgba(230, 204, 143, .82); font-size: .66rem; }
.zones-memory-quote {
  margin: 1rem 0;
  padding: .85rem 1rem;
  border-left: 2px solid rgba(215, 184, 111, .5);
  color: rgba(240, 230, 207, .72);
  font-style: italic;
  line-height: 1.55;
}
.zones-test-options {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .65rem;
  margin: 1rem 0;
}
.zones-test-options button {
  min-height: 78px;
  display: grid;
  place-items: center;
  text-align: center;
  font-size: .86rem;
  overflow-wrap: anywhere;
}
.zones-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .65rem;
  margin: 1rem 0;
}
.zones-summary article {
  display: grid;
  gap: .28rem;
  padding: .85rem;
  border: 1px solid rgba(217, 188, 120, .22);
  border-radius: .75rem;
  background: rgba(255,255,255,.022);
}
.zones-summary strong { color: rgba(247, 226, 174, .94); }
.zones-complete {
  display: grid;
  place-items: center;
  gap: .45rem;
  min-height: 140px;
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(221, 191, 120, .27);
  border-radius: .9rem;
  background: radial-gradient(circle, rgba(212, 174, 83, .08), transparent 68%);
  text-align: center;
}
.zones-complete strong { color: rgba(248, 226, 171, .96); }
.zones-complete small { color: rgba(238, 230, 211, .66); }

@media (max-width: 760px) {
  .palace-zones-card { width: calc(100% - 1rem); margin-top: 4rem; }
  .palace-zones-panel { margin: 0 auto; }
  .palace-zones-panel > header { align-items: center; }
  .palace-zones-panel > header button { flex: 0 0 auto; }
  .zones-route-strip { grid-template-columns: 1fr; }
  .zones-route-strip li { grid-template-columns: 2rem minmax(0,1fr) auto; align-items: center; }
  .zones-route-strip li.is-boundary-end { box-shadow: 0 8px 0 -7px rgba(237, 204, 127, .72); }
  .zones-boundary-grid,
  .zones-test-options,
  .zones-summary { grid-template-columns: 1fr; }
  .zones-two-map { grid-template-columns: 1fr; }
  .zones-two-map > i { display: none; }
  .palace-zones-card__actions,
  .palace-zones-panel__actions { flex-direction: column; }
  .palace-zones-card__actions button,
  .palace-zones-panel__actions button { width: 100%; min-height: 48px; }
  .palace-zones-scene__cabinet { width: 27%; opacity: .45; }
}

/* =========================================================
   VNEW.0.70 — ZONES · ADRESSAGE HIÉRARCHIQUE
   ZONE → LOCUS → IMAGE → INFORMATION, sans nouveau locus.
   ========================================================= */
.palace-zones-lessons {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
  align-items: stretch;
  gap: .65rem;
  margin: 1rem 0;
}
.palace-zones-lessons > i {
  align-self: center;
  color: rgba(218, 190, 124, .42);
  font-style: normal;
}
.palace-zones-lessons article {
  display: grid;
  gap: .24rem;
  padding: .82rem .9rem;
  border: 1px solid rgba(215, 187, 118, .19);
  border-radius: .8rem;
  background: rgba(255,255,255,.018);
}
.palace-zones-lessons article.is-current {
  border-color: rgba(231, 198, 123, .5);
  background: rgba(205, 169, 83, .085);
}
.palace-zones-lessons article.is-acquired {
  border-color: rgba(183, 199, 145, .3);
  background: rgba(143, 164, 108, .055);
}
.palace-zones-lessons article.is-locked { opacity: .48; }
.palace-zones-lessons span,
.zones-address-inputs label > span,
.zones-address-transform > span,
.zones-address-transform label > small,
.zones-address-recall-zone span {
  color: rgba(218, 190, 124, .72);
  font-size: .64rem;
  letter-spacing: .1em;
}
.palace-zones-lessons strong { color: rgba(247, 226, 174, .94); }
.palace-zones-lessons small { color: rgba(238, 230, 211, .62); line-height: 1.4; }
.palace-zones-address-panel { width: min(920px, 100%); }
.zones-address-chain {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);
  align-items: stretch;
  gap: .45rem;
  margin: 1rem 0;
}
.zones-address-chain > i {
  align-self: center;
  color: rgba(219, 191, 124, .45);
  font-style: normal;
}
.zones-address-chain article {
  min-width: 0;
  display: grid;
  gap: .22rem;
  padding: .72rem;
  border: 1px solid rgba(216, 187, 118, .2);
  border-radius: .72rem;
  background: rgba(255,255,255,.02);
}
.zones-address-chain article > span {
  display: grid;
  place-items: center;
  width: 1.45rem;
  height: 1.45rem;
  border: 1px solid rgba(219, 190, 122, .28);
  border-radius: 50%;
  color: rgba(229, 202, 141, .8);
  font-size: .62rem;
}
.zones-address-chain article > small { color: rgba(215, 187, 121, .65); font-size: .58rem; letter-spacing: .09em; }
.zones-address-chain article > strong { color: rgba(245, 231, 199, .9); font-size: .78rem; overflow-wrap: anywhere; }
.zones-address-inputs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: .7rem;
  margin: 1rem 0;
}
.zones-address-inputs label,
.zones-address-transform label {
  display: grid;
  gap: .45rem;
}
.zones-address-inputs input,
.zones-address-transform input {
  width: 100%;
  min-height: 46px;
  padding: .72rem .8rem;
  border: 1px solid rgba(216, 187, 118, .28);
  border-radius: .7rem;
  outline: none;
  background: rgba(8, 8, 6, .58);
  color: rgba(247, 238, 216, .94);
  font: inherit;
}
.zones-address-inputs input:focus,
.zones-address-transform input:focus {
  border-color: rgba(235, 202, 126, .62);
  box-shadow: 0 0 0 2px rgba(220, 183, 96, .08);
}
.zones-address-safety {
  width: 100%;
  display: grid;
  gap: .3rem;
  text-align: left;
}
.zones-address-safety strong { color: rgba(242, 222, 172, .9); }
.zones-address-safety small { color: rgba(238, 230, 211, .62); line-height: 1.45; }
.zones-address-safety.is-selected { border-color: rgba(183, 199, 145, .42); background: rgba(143, 164, 108, .07); }
.zones-address-loci {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: .55rem;
  margin: 1rem 0;
}
.zones-address-loci button {
  min-height: 82px;
  display: grid;
  align-content: center;
  gap: .28rem;
  text-align: left;
}
.zones-address-loci button > span { color: rgba(218, 190, 124, .7); font-size: .62rem; letter-spacing: .08em; }
.zones-address-loci button > strong { color: rgba(244, 231, 199, .9); overflow-wrap: anywhere; }
.zones-address-loci button.is-selected { border-color: rgba(235, 202, 126, .72); background: rgba(210, 174, 84, .12); }
.zones-address-transform {
  display: grid;
  gap: .4rem;
  margin: 1rem 0;
  padding: .9rem;
  border: 1px solid rgba(216, 187, 118, .2);
  border-radius: .8rem;
  background: rgba(255,255,255,.02);
}
.zones-address-transform > strong { color: rgba(247, 227, 179, .95); }
.zones-address-transform label { margin-top: .35rem; }
.zones-address-quality,
.zones-address-ratings {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: .6rem;
  margin: 1rem 0;
}
.zones-address-quality button,
.zones-address-ratings button {
  min-height: 92px;
  display: grid;
  align-content: center;
  gap: .28rem;
  text-align: left;
}
.zones-address-quality button strong,
.zones-address-ratings button strong { color: rgba(247, 226, 174, .94); }
.zones-address-quality button small,
.zones-address-ratings button small { color: rgba(238, 230, 211, .62); line-height: 1.4; }
.zones-address-quality button.is-selected { border-color: rgba(182, 202, 148, .46); background: rgba(143, 164, 108, .07); }
.zones-address-detach {
  min-height: 170px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: .35rem;
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(218, 189, 120, .2);
  border-radius: .85rem;
  background: radial-gradient(circle, rgba(210, 174, 84, .055), transparent 68%);
  text-align: center;
}
.zones-address-detach strong { color: rgba(247, 226, 174, .94); letter-spacing: .06em; }
.zones-address-detach span,
.zones-address-detach small { color: rgba(238, 230, 211, .58); }
.zones-address-recall-zone {
  display: grid;
  place-items: center;
  gap: .3rem;
  min-height: 92px;
  margin: 1rem 0;
  border: 1px solid rgba(226, 194, 120, .27);
  border-radius: .8rem;
  background: rgba(203, 168, 87, .055);
}
.zones-address-recall-zone strong { color: rgba(249, 229, 181, .98); font-size: 1.05rem; letter-spacing: .08em; }
.zones-address-repair-map {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin: 1rem 0;
}
.zones-address-repair-map span {
  padding: .55rem .7rem;
  border: 1px solid rgba(215, 187, 119, .18);
  border-radius: .65rem;
  color: rgba(239, 231, 211, .7);
}
.zones-address-repair-map span.is-target {
  border-color: rgba(236, 202, 126, .68);
  background: rgba(210, 174, 84, .1);
  color: rgba(249, 229, 181, .96);
}

@media (max-width: 760px) {
  .palace-zones-lessons,
  .zones-address-chain,
  .zones-address-inputs,
  .zones-address-quality,
  .zones-address-ratings { grid-template-columns: 1fr; }
  .palace-zones-lessons > i,
  .zones-address-chain > i { display: none; }
  .zones-address-loci { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .zones-address-chain article { grid-template-columns: 1.8rem 4.3rem minmax(0,1fr); align-items: center; }
  .zones-address-chain article > span { grid-row: 1; }
  .zones-address-chain article > small { grid-column: 2; }
  .zones-address-chain article > strong { grid-column: 3; }
}

/* =========================================================
   VNEW.0.71 — ZONES · ADRESSES PROCHES
   Trois traces dans une même zone, loci distincts, test de collision.
   ========================================================= */
.palace-zones-lessons {
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);
}
.palace-zones-nearby-panel { width: min(920px, 100%); }
.zones-nearby-zone-grid,
.zones-nearby-inputs,
.zones-nearby-loci,
.zones-nearby-map,
.zones-nearby-summary {
  display: grid;
  gap: .65rem;
  margin: 1rem 0;
}
.zones-nearby-zone-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
.zones-nearby-inputs,
.zones-nearby-loci,
.zones-nearby-map { grid-template-columns: repeat(3, minmax(0,1fr)); }
.zones-nearby-zone-grid button,
.zones-nearby-loci button,
.zones-nearby-map article {
  min-height: 88px;
  display: grid;
  align-content: center;
  gap: .26rem;
  padding: .78rem .85rem;
  border: 1px solid rgba(215, 187, 118, .2);
  border-radius: .78rem;
  background: rgba(255,255,255,.018);
  text-align: left;
}
.zones-nearby-zone-grid button.is-selected,
.zones-nearby-loci button.is-selected,
.zones-nearby-map article.is-target {
  border-color: rgba(231, 198, 123, .58);
  background: rgba(205, 169, 83, .09);
}
.zones-nearby-loci button.is-used {
  opacity: .44;
  border-style: dashed;
}
.zones-nearby-zone-grid span,
.zones-nearby-loci span,
.zones-nearby-map span,
.zones-nearby-inputs span,
.zones-nearby-recall span,
.zones-nearby-reveal span,
.zones-nearby-cue span {
  color: rgba(218, 190, 124, .72);
  font-size: .64rem;
  letter-spacing: .1em;
}
.zones-nearby-zone-grid strong,
.zones-nearby-loci strong,
.zones-nearby-map strong,
.zones-nearby-recall strong,
.zones-nearby-reveal strong,
.zones-nearby-cue strong { color: rgba(247, 226, 174, .95); }
.zones-nearby-zone-grid small,
.zones-nearby-loci small { color: rgba(238, 230, 211, .6); line-height: 1.42; }
.zones-nearby-inputs label {
  display: grid;
  gap: .38rem;
}
.zones-nearby-inputs input {
  width: 100%;
  min-height: 48px;
  padding: .72rem .8rem;
  border: 1px solid rgba(218, 189, 120, .24);
  border-radius: .68rem;
  background: rgba(10, 12, 10, .52);
  color: rgba(247, 240, 223, .95);
}
.zones-nearby-address {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem;
  margin: 1rem 0;
  padding: .78rem .9rem;
  border: 1px solid rgba(218, 189, 120, .2);
  border-radius: .76rem;
  background: rgba(203, 168, 87, .045);
}
.zones-nearby-address span { color: rgba(218, 190, 124, .72); letter-spacing: .08em; }
.zones-nearby-address strong { color: rgba(247, 226, 174, .95); }
.zones-nearby-address em { color: rgba(235, 229, 214, .75); font-style: normal; }
.zones-nearby-address i { color: rgba(218, 190, 124, .38); font-style: normal; }
.zones-nearby-recall,
.zones-nearby-reveal,
.zones-nearby-cue {
  min-height: 112px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: .35rem;
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(226, 194, 120, .26);
  border-radius: .82rem;
  background: radial-gradient(circle, rgba(210, 174, 84, .07), transparent 72%);
  text-align: center;
}
.zones-nearby-reveal i { color: rgba(218, 190, 124, .45); font-style: normal; }
.zones-nearby-reveal em { color: rgba(239, 232, 215, .82); font-style: normal; }

@media (max-width: 760px) {
  .palace-zones-lessons,
  .zones-nearby-zone-grid,
  .zones-nearby-inputs,
  .zones-nearby-loci,
  .zones-nearby-map { grid-template-columns: 1fr; }
  .palace-zones-lessons > i { display: none; }
  .zones-nearby-address { display: grid; grid-template-columns: 1fr; }
  .zones-nearby-address i { display: none; }
}

/* =========================================================
   VNEW.0.72 — ZONES · NAVIGATION CROISÉE
   Deux souvenirs par zone, rappel croisé zone → locus → image → information.
   ========================================================= */
.palace-zones-lessons {
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);
}
.palace-zones-cross-panel { width: min(920px, 100%); }
.zones-cross-inputs,
.zones-cross-loci,
.zones-cross-zone-pick,
.zones-cross-map,
.zones-cross-summary {
  display: grid;
  gap: .65rem;
  margin: 1rem 0;
}
.zones-cross-inputs,
.zones-cross-map { grid-template-columns: repeat(2, minmax(0,1fr)); }
.zones-cross-loci { grid-template-columns: repeat(2, minmax(0,1fr)); }
.zones-cross-zone-pick { grid-template-columns: repeat(2, minmax(0,1fr)); }
.zones-cross-inputs label {
  display: grid;
  gap: .38rem;
}
.zones-cross-inputs span,
.zones-cross-loci span,
.zones-cross-zone-pick span,
.zones-cross-principle span,
.zones-cross-trace span,
.zones-cross-reveal span {
  color: rgba(218, 190, 124, .72);
  font-size: .64rem;
  letter-spacing: .1em;
}
.zones-cross-inputs input {
  width: 100%;
  min-height: 48px;
  padding: .72rem .8rem;
  border: 1px solid rgba(218, 189, 120, .24);
  border-radius: .68rem;
  background: rgba(10, 12, 10, .52);
  color: rgba(247, 240, 223, .95);
}
.zones-cross-loci button,
.zones-cross-zone-pick button {
  min-height: 88px;
  display: grid;
  align-content: center;
  gap: .26rem;
  padding: .78rem .85rem;
  border: 1px solid rgba(215, 187, 118, .2);
  border-radius: .78rem;
  background: rgba(255,255,255,.018);
  text-align: left;
}
.zones-cross-loci button.is-selected,
.zones-cross-zone-pick button:hover,
.zones-cross-zone-pick button:focus-visible {
  border-color: rgba(231, 198, 123, .58);
  background: rgba(205, 169, 83, .09);
}
.zones-cross-loci button.is-used {
  opacity: .44;
  border-style: dashed;
}
.zones-cross-loci strong,
.zones-cross-zone-pick strong,
.zones-cross-principle strong,
.zones-cross-trace strong,
.zones-cross-reveal strong {
  color: rgba(247, 226, 174, .95);
}
.zones-cross-loci small,
.zones-cross-zone-pick small,
.zones-cross-principle small,
.zones-cross-trace small {
  color: rgba(238, 230, 211, .6);
  line-height: 1.42;
}
.zones-cross-principle,
.zones-cross-trace,
.zones-cross-reveal,
.zones-cross-repair,
.zones-cross-breadcrumb {
  margin: 1rem 0;
  padding: .9rem 1rem;
  border: 1px solid rgba(218, 189, 120, .2);
  border-radius: .8rem;
  background: rgba(203, 168, 87, .045);
}
.zones-cross-principle,
.zones-cross-trace,
.zones-cross-reveal {
  min-height: 108px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: .34rem;
  text-align: center;
}
.zones-cross-trace strong { font-size: clamp(1.65rem, 5vw, 2.45rem); letter-spacing: .1em; }
.zones-cross-address,
.zones-cross-breadcrumb,
.zones-cross-repair {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .48rem;
}
.zones-cross-address {
  min-height: 100%;
  padding: .72rem .8rem;
  border: 1px solid rgba(218, 189, 120, .18);
  border-radius: .72rem;
  background: rgba(255,255,255,.015);
}
.zones-cross-address b { color: rgba(247, 226, 174, .95); }
.zones-cross-address span,
.zones-cross-breadcrumb span,
.zones-cross-repair span { color: rgba(218, 190, 124, .72); letter-spacing: .07em; }
.zones-cross-address strong,
.zones-cross-breadcrumb strong,
.zones-cross-repair strong { color: rgba(244, 231, 198, .9); }
.zones-cross-address em,
.zones-cross-breadcrumb em,
.zones-cross-repair em { color: rgba(239, 232, 215, .78); font-style: normal; }
.zones-cross-address small,
.zones-cross-breadcrumb small { color: rgba(235, 229, 214, .7); }
.zones-cross-address i,
.zones-cross-breadcrumb i,
.zones-cross-repair i,
.zones-cross-reveal i { color: rgba(218, 190, 124, .4); font-style: normal; }
.zones-cross-map article { min-width: 0; }
.zones-cross-summary { grid-template-columns: repeat(4, minmax(0,1fr)); }
.zones-cross-repairs {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem 1rem;
  margin: .65rem 0 1rem;
  color: rgba(235, 229, 214, .66);
  font-size: .78rem;
}
.zones-cross-repairs strong { color: rgba(247, 226, 174, .92); }

@media (max-width: 760px) {
  .palace-zones-lessons,
  .zones-cross-inputs,
  .zones-cross-loci,
  .zones-cross-zone-pick,
  .zones-cross-map,
  .zones-cross-summary { grid-template-columns: 1fr; }
  .palace-zones-lessons > i { display: none; }
  .zones-cross-address,
  .zones-cross-breadcrumb,
  .zones-cross-repair { display: grid; grid-template-columns: 1fr; }
  .zones-cross-address i,
  .zones-cross-breadcrumb i,
  .zones-cross-repair i { display: none; }
}

/* ==========================================================
   VNEW.0.73 — PALAIS PERSONNELS · qualification d’espace
   ========================================================== */
.palace-personal-scene {
  position: relative;
  min-height: 100dvh;
  overflow: hidden;
  display: grid;
  place-items: center;
  padding: clamp(5.5rem, 9vh, 8rem) 1rem 3rem;
  background:
    radial-gradient(circle at 50% 22%, rgba(223, 190, 122, .10), transparent 34%),
    linear-gradient(180deg, #1b1a15 0%, #12120f 68%, #0c0d0b 100%);
  color: #eee6d3;
}

.palace-personal-scene__architecture,
.palace-personal-scene__veil {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.palace-personal-scene__architecture { opacity: .82; }
.palace-personal-scene__arch {
  position: absolute;
  width: min(76vw, 850px);
  height: min(58vh, 570px);
  left: 50%;
  top: 8%;
  transform: translateX(-50%);
  border: 1px solid rgba(220, 194, 136, .17);
  border-bottom: 0;
  border-radius: 50% 50% 0 0 / 34% 34% 0 0;
  box-shadow: inset 0 0 90px rgba(201, 166, 96, .035);
}

.palace-personal-scene__table {
  position: absolute;
  width: min(54vw, 620px);
  height: 18%;
  left: 50%;
  bottom: 7%;
  transform: translateX(-50%) perspective(500px) rotateX(62deg);
  border: 1px solid rgba(211, 181, 119, .13);
  background: linear-gradient(180deg, rgba(128, 103, 65, .12), rgba(40, 34, 24, .05));
  box-shadow: 0 -20px 80px rgba(231, 195, 121, .03);
}

.palace-personal-scene__plans {
  position: absolute;
  width: min(42vw, 500px);
  height: 22%;
  left: 50%;
  bottom: 12%;
  transform: translateX(-50%) rotate(-2deg);
  opacity: .24;
  background:
    linear-gradient(90deg, transparent 49%, rgba(218, 188, 128, .22) 50%, transparent 51%),
    linear-gradient(0deg, transparent 49%, rgba(218, 188, 128, .16) 50%, transparent 51%);
  background-size: 58px 58px;
  border: 1px solid rgba(218, 188, 128, .14);
}

.palace-personal-scene__light {
  position: absolute;
  inset: -20% 15% 18%;
  background: radial-gradient(ellipse at center, rgba(236, 209, 153, .10), transparent 64%);
  filter: blur(14px);
}

.palace-personal-scene__veil {
  background: linear-gradient(180deg, rgba(8, 9, 8, .16), rgba(8, 9, 8, .54));
}

.palace-personal-card {
  position: relative;
  z-index: 2;
  width: min(880px, calc(100vw - 2rem));
  padding: clamp(1.35rem, 3.5vw, 2.5rem);
  border: 1px solid rgba(220, 191, 126, .22);
  border-radius: 20px;
  background: linear-gradient(180deg, rgba(28, 27, 22, .94), rgba(16, 17, 14, .95));
  box-shadow: 0 28px 90px rgba(0, 0, 0, .34), inset 0 1px rgba(255,255,255,.025);
  backdrop-filter: blur(10px);
}

.palace-personal-card h1,
.palace-personal-panel h2 {
  margin: .4rem 0 .85rem;
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 500;
  color: rgba(248, 230, 188, .97);
}

.palace-personal-card h1 { font-size: clamp(2rem, 5vw, 3.8rem); line-height: 1.02; }
.palace-personal-card > p:not(.eyebrow):not(.palace-personal-card__status) {
  max-width: 62rem;
  color: rgba(238, 230, 211, .72);
  line-height: 1.65;
}

.palace-personal-lessons {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  align-items: stretch;
  gap: .65rem;
  margin: 1.5rem 0;
}

.palace-personal-lessons > i {
  align-self: center;
  width: 22px;
  height: 1px;
  background: rgba(217, 188, 125, .18);
}

.palace-personal-lessons article {
  min-width: 0;
  padding: .9rem;
  border-radius: 13px;
  border: 1px solid rgba(221, 194, 135, .13);
  background: rgba(255,255,255,.018);
}

.palace-personal-lessons article.is-current {
  border-color: rgba(222, 188, 115, .42);
  background: rgba(214, 178, 103, .065);
}
.palace-personal-lessons article.is-acquired { border-color: rgba(163, 198, 139, .30); }
.palace-personal-lessons article.is-locked { opacity: .45; }
.palace-personal-lessons span,
.palace-personal-lessons small { display: block; font-size: .67rem; letter-spacing: .08em; color: rgba(235, 224, 200, .54); }
.palace-personal-lessons strong { display: block; margin: .35rem 0; font-size: .88rem; letter-spacing: .07em; color: rgba(248, 229, 184, .93); }
.palace-personal-lessons small { line-height: 1.4; }

.palace-personal-card__principles {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin: 1.1rem 0 1.35rem;
}
.palace-personal-card__principles span {
  padding: .38rem .62rem;
  border-radius: 999px;
  border: 1px solid rgba(217, 188, 125, .16);
  color: rgba(239, 224, 191, .62);
  font-size: .62rem;
  letter-spacing: .11em;
}

.palace-personal-card__actions,
.palace-personal-panel__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .7rem;
  margin-top: 1.25rem;
}

.palace-personal-card button,
.palace-personal-panel button {
  appearance: none;
  border: 1px solid rgba(224, 197, 139, .22);
  border-radius: 999px;
  padding: .72rem 1rem;
  background: rgba(255,255,255,.025);
  color: rgba(245, 233, 207, .88);
  font: inherit;
  font-size: .72rem;
  letter-spacing: .075em;
  cursor: pointer;
}
.palace-personal-card button:hover,
.palace-personal-card button:focus-visible,
.palace-personal-panel button:hover,
.palace-personal-panel button:focus-visible {
  border-color: rgba(230, 198, 127, .52);
  background: rgba(222, 185, 108, .08);
  outline: none;
}
.palace-personal-card button.is-primary,
.palace-personal-panel button.is-primary,
.palace-personal-choice-grid button.is-selected {
  border-color: rgba(225, 190, 117, .50);
  background: linear-gradient(180deg, rgba(216, 177, 99, .18), rgba(144, 110, 54, .10));
  color: rgba(255, 238, 198, .98);
}
.palace-personal-panel button:disabled { opacity: .38; cursor: default; }

.palace-personal-card__status {
  margin: 1rem 0 0;
  color: rgba(176, 207, 151, .72);
  font-size: .68rem;
  letter-spacing: .08em;
}

.palace-personal-layer {
  position: fixed;
  z-index: 80;
  inset: 0;
  overflow: auto;
  display: grid;
  place-items: center;
  padding: max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
  background: rgba(8, 9, 8, .82);
  backdrop-filter: blur(14px);
}
.palace-personal-layer[hidden] { display: none; }

.palace-personal-panel {
  width: min(900px, 100%);
  max-height: min(900px, calc(100dvh - 2rem));
  overflow: auto;
  padding: clamp(1.1rem, 3.5vw, 2.1rem);
  border: 1px solid rgba(220, 191, 126, .25);
  border-radius: 19px;
  background: linear-gradient(180deg, rgba(27, 26, 21, .99), rgba(15, 16, 13, .99));
  box-shadow: 0 28px 100px rgba(0,0,0,.5);
}

.palace-personal-panel__header {
  display: flex;
  gap: 1rem;
  justify-content: space-between;
  align-items: flex-start;
  padding-bottom: 1rem;
  border-bottom: 1px solid rgba(220, 191, 126, .10);
}
.palace-personal-panel__header h2 { font-size: clamp(1.65rem, 4vw, 2.8rem); }
.palace-personal-panel__copy { color: rgba(239, 230, 209, .72); line-height: 1.62; }
.palace-personal-panel__body { margin-top: 1.15rem; }
.palace-personal-panel__note { min-height: 1.15rem; color: rgba(225, 212, 183, .50); font-size: .72rem; line-height: 1.5; }

.palace-personal-principle,
.palace-personal-calm-note,
.palace-personal-repair,
.palace-personal-privacy {
  padding: 1rem 1.05rem;
  border: 1px solid rgba(220, 191, 126, .14);
  border-radius: 13px;
  background: rgba(255,255,255,.018);
}
.palace-personal-principle strong,
.palace-personal-calm-note strong,
.palace-personal-repair strong,
.palace-personal-privacy strong { color: rgba(247, 227, 181, .93); }
.palace-personal-principle p,
.palace-personal-calm-note span,
.palace-personal-repair p,
.palace-personal-privacy p { color: rgba(236, 226, 204, .64); line-height: 1.55; }

.palace-personal-chain {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .5rem;
  margin-top: .85rem;
}
.palace-personal-chain span {
  padding: .65rem .5rem;
  text-align: center;
  border: 1px solid rgba(218, 187, 123, .14);
  border-radius: 10px;
  color: rgba(241, 224, 188, .68);
  font-size: .64rem;
  letter-spacing: .08em;
}

.palace-personal-route-list {
  list-style: none;
  padding: 0;
  margin: 0 0 .85rem;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .45rem;
}
.palace-personal-route-list li {
  display: flex;
  align-items: center;
  gap: .7rem;
  min-width: 0;
  padding: .7rem .8rem;
  border-radius: 11px;
  border: 1px solid rgba(218, 187, 123, .10);
  background: rgba(255,255,255,.016);
}
.palace-personal-route-list li span {
  flex: 0 0 1.7rem;
  display: grid;
  place-items: center;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 50%;
  border: 1px solid rgba(219, 188, 122, .22);
  color: rgba(232, 205, 148, .82);
  font-size: .7rem;
}
.palace-personal-route-list li strong {
  overflow: hidden;
  text-overflow: ellipsis;
  color: rgba(241, 230, 206, .82);
  font-size: .78rem;
  letter-spacing: .04em;
}

.palace-personal-criterion > p { color: rgba(238, 228, 207, .68); line-height: 1.62; }
.palace-personal-choice-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
  margin-top: 1rem;
}
.palace-personal-choice-grid button {
  min-height: 112px;
  border-radius: 14px;
  padding: 1rem;
  text-align: left;
}
.palace-personal-choice-grid button strong,
.palace-personal-choice-grid button small { display: block; }
.palace-personal-choice-grid button strong { color: rgba(249, 230, 186, .96); }
.palace-personal-choice-grid button small { margin-top: .4rem; color: rgba(237, 227, 204, .58); line-height: 1.45; letter-spacing: .02em; }

.palace-personal-repair span {
  display: block;
  margin-bottom: .45rem;
  color: rgba(218, 186, 118, .66);
  font-size: .63rem;
  letter-spacing: .12em;
}
.palace-personal-repair strong { display: block; font-size: 1rem; line-height: 1.45; }

.palace-personal-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
  margin-bottom: .75rem;
}
.palace-personal-summary article {
  padding: 1rem;
  border: 1px solid rgba(219, 189, 126, .14);
  border-radius: 13px;
  background: rgba(255,255,255,.018);
}
.palace-personal-summary span,
.palace-personal-summary strong { display: block; }
.palace-personal-summary span { color: rgba(235, 220, 188, .54); font-size: .65rem; letter-spacing: .1em; }
.palace-personal-summary strong { margin-top: .35rem; color: rgba(248, 229, 185, .95); font-size: 1.35rem; }

@media (max-width: 720px) {
  .palace-personal-scene { padding: 5.1rem .5rem 1.2rem; align-items: start; }
  .palace-personal-card { width: min(374px, calc(100vw - 1rem)); padding: 1.05rem; border-radius: 16px; }
  .palace-personal-card h1 { font-size: clamp(1.8rem, 9vw, 2.6rem); }
  .palace-personal-lessons { grid-template-columns: 1fr; gap: .45rem; }
  .palace-personal-lessons > i { display: none; }
  .palace-personal-card__actions,
  .palace-personal-panel__actions { display: grid; grid-template-columns: 1fr; }
  .palace-personal-card__actions button,
  .palace-personal-panel__actions button { width: 100%; min-height: 44px; }
  .palace-personal-layer { align-items: start; padding: .5rem; }
  .palace-personal-panel { width: min(374px, calc(100vw - 1rem)); max-height: calc(100dvh - 1rem); padding: 1rem; border-radius: 15px; }
  .palace-personal-panel__header { gap: .65rem; }
  .palace-personal-panel__header > button { flex: 0 0 auto; padding-inline: .7rem; }
  .palace-personal-chain { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .palace-personal-route-list { grid-template-columns: 1fr; }
  .palace-personal-choice-grid { grid-template-columns: 1fr; }
  .palace-personal-choice-grid button { min-height: 92px; width: 100%; }
  .palace-personal-summary { grid-template-columns: 1fr; }
}

/* ==========================================================
   VNEW.0.74 — PALAIS PERSONNELS · structure du palais
   ========================================================== */
.palace-personal-structure-rule-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .55rem;
  margin-top: .9rem;
}
.palace-personal-structure-rule-grid article {
  min-height: 92px;
  padding: .85rem;
  border: 1px solid rgba(220, 191, 126, .14);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
}
.palace-personal-structure-rule-grid span,
.palace-personal-structure-rule-grid strong,
.palace-personal-structure-rule-grid small { display: block; }
.palace-personal-structure-rule-grid span {
  color: rgba(217, 183, 113, .58);
  font-size: .62rem;
  letter-spacing: .11em;
}
.palace-personal-structure-rule-grid strong {
  margin: .32rem 0;
  color: rgba(248, 229, 185, .93);
  font-size: .76rem;
  letter-spacing: .07em;
}
.palace-personal-structure-rule-grid small {
  color: rgba(236, 225, 202, .55);
  line-height: 1.35;
}

.palace-personal-structure-map {
  display: grid;
  gap: .65rem;
  margin-bottom: .9rem;
}
.palace-personal-structure-map__entry,
.palace-personal-structure-map__future,
.palace-personal-structure-boundary,
.palace-personal-structure-zone {
  border: 1px solid rgba(221, 190, 126, .14);
  border-radius: 13px;
  background: rgba(255,255,255,.018);
}
.palace-personal-structure-map__entry,
.palace-personal-structure-map__future {
  padding: .8rem .9rem;
}
.palace-personal-structure-map__entry span,
.palace-personal-structure-map__future span,
.palace-personal-structure-map__future small {
  display: block;
  color: rgba(233, 215, 177, .55);
  font-size: .63rem;
  letter-spacing: .1em;
}
.palace-personal-structure-map__entry strong,
.palace-personal-structure-map__future strong {
  display: block;
  margin-top: .28rem;
  color: rgba(249, 230, 187, .95);
  font-size: .92rem;
}
.palace-personal-structure-map__future small {
  margin-top: .3rem;
  letter-spacing: .02em;
  line-height: 1.45;
}
.palace-personal-structure-zone { padding: .85rem; }
.palace-personal-structure-zone > header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: .7rem;
  margin-bottom: .65rem;
}
.palace-personal-structure-zone > header span {
  color: rgba(247, 226, 181, .90);
  font-size: .72rem;
  letter-spacing: .1em;
}
.palace-personal-structure-zone > header small {
  color: rgba(235, 221, 192, .48);
  font-size: .64rem;
}
.palace-personal-structure-rail {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .45rem;
}
.palace-personal-structure-rail > span {
  min-width: 0;
  min-height: 74px;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: .2rem;
  padding: .55rem;
  border: 1px solid rgba(219, 188, 124, .11);
  border-radius: 10px;
  background: rgba(255,255,255,.015);
  text-align: center;
}
.palace-personal-structure-rail > span.is-entry {
  border-color: rgba(167, 199, 142, .34);
  background: rgba(117, 154, 92, .055);
}
.palace-personal-structure-rail > span.is-exit {
  border-color: rgba(220, 186, 116, .34);
  background: rgba(204, 164, 82, .055);
}
.palace-personal-structure-rail b {
  color: rgba(223, 191, 125, .85);
  font-size: .76rem;
}
.palace-personal-structure-rail small {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  color: rgba(242, 229, 201, .72);
  font-size: .66rem;
  line-height: 1.3;
}
.palace-personal-structure-boundary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .6rem;
  padding: .55rem .75rem;
  border-style: dashed;
}
.palace-personal-structure-boundary span {
  color: rgba(231, 213, 176, .48);
  font-size: .61rem;
  letter-spacing: .1em;
}
.palace-personal-structure-boundary strong {
  color: rgba(247, 225, 181, .90);
  font-size: .76rem;
}

.palace-personal-structure-options {
  display: grid;
  grid-template-columns: 1fr;
  gap: .65rem;
}
.palace-personal-structure-options button {
  width: 100%;
  min-height: 58px;
  border-radius: 13px;
  text-align: left;
  padding: .8rem 1rem;
  line-height: 1.4;
}
.palace-personal-structure-repair {
  padding: 1rem 1.05rem;
  border: 1px solid rgba(220, 191, 126, .18);
  border-radius: 13px;
  background: rgba(213, 176, 100, .045);
}
.palace-personal-structure-repair span,
.palace-personal-structure-repair strong { display: block; }
.palace-personal-structure-repair span {
  margin-bottom: .45rem;
  color: rgba(220, 186, 116, .60);
  font-size: .62rem;
  letter-spacing: .11em;
}
.palace-personal-structure-repair strong {
  color: rgba(248, 229, 186, .96);
  font-size: 1rem;
}
.palace-personal-structure-repair p {
  margin-bottom: 0;
  color: rgba(237, 226, 202, .66);
  line-height: 1.58;
}
.palace-personal-structure-summary {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .45rem .8rem;
  margin: 0 0 .75rem;
  padding: .9rem 1rem;
  border: 1px solid rgba(220, 191, 126, .13);
  border-radius: 13px;
  background: rgba(255,255,255,.016);
}
.palace-personal-structure-summary span {
  color: rgba(235, 219, 186, .52);
  font-size: .62rem;
  letter-spacing: .09em;
}
.palace-personal-structure-summary strong {
  color: rgba(245, 229, 195, .84);
  font-size: .72rem;
  letter-spacing: .05em;
}

@media (max-width: 720px) {
  .palace-personal-structure-rule-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .palace-personal-structure-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .palace-personal-structure-zone > header { align-items: flex-start; flex-direction: column; gap: .15rem; }
  .palace-personal-structure-summary { grid-template-columns: 1fr; gap: .18rem; }
  .palace-personal-structure-summary strong { margin-bottom: .45rem; }
}

/* ========================================================================
   VNEW.0.75 — PALAIS PERSONNELS · support visuel optionnel
   ======================================================================== */
.palace-personal-visual-map {
  margin: 1rem 0;
  padding: .9rem;
  border: 1px solid rgba(218, 186, 119, .18);
  border-radius: 14px;
  background: rgba(13, 17, 16, .55);
}

.palace-personal-visual-map__rail {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  align-items: stretch;
  gap: .38rem;
}

.palace-personal-visual-map__rail > span {
  min-width: 0;
  padding: .55rem .25rem;
  border: 1px solid rgba(230, 205, 152, .16);
  border-radius: 10px;
  text-align: center;
  background: rgba(255, 255, 255, .025);
}

.palace-personal-visual-map__rail > span.is-entry,
.palace-personal-visual-map__rail > span.is-exit {
  border-color: rgba(216, 182, 111, .38);
  background: rgba(191, 151, 80, .08);
}

.palace-personal-visual-map__rail b,
.palace-personal-visual-map__rail small {
  display: block;
}

.palace-personal-visual-map__rail b {
  color: rgba(249, 230, 187, .94);
  font-size: .92rem;
}

.palace-personal-visual-map__rail small {
  margin-top: .25rem;
  color: rgba(232, 220, 197, .48);
  font-size: .54rem;
  letter-spacing: .04em;
}

.palace-personal-visual-map__rail > i {
  width: 2px;
  justify-self: center;
  border-radius: 99px;
  background: linear-gradient(to bottom, transparent, rgba(218, 181, 106, .72), transparent);
}

.palace-personal-visual-map > small {
  display: block;
  margin-top: .7rem;
  color: rgba(233, 220, 196, .48);
  line-height: 1.45;
}

.palace-personal-visual-rules,
.palace-personal-visual-checklist {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .55rem;
  margin-top: 1rem;
}

.palace-personal-visual-rules article,
.palace-personal-visual-checklist > span {
  min-width: 0;
  padding: .75rem;
  border: 1px solid rgba(226, 201, 151, .14);
  border-radius: 12px;
  background: rgba(255, 255, 255, .022);
}

.palace-personal-visual-rules span,
.palace-personal-visual-rules strong,
.palace-personal-visual-rules small,
.palace-personal-visual-checklist b,
.palace-personal-visual-checklist small {
  display: block;
}

.palace-personal-visual-rules span {
  color: rgba(217, 181, 109, .70);
  font-size: .62rem;
  letter-spacing: .12em;
}

.palace-personal-visual-rules strong,
.palace-personal-visual-checklist b {
  margin-top: .25rem;
  color: rgba(248, 229, 184, .94);
  font-size: .76rem;
  letter-spacing: .06em;
}

.palace-personal-visual-rules small,
.palace-personal-visual-checklist small {
  margin-top: .3rem;
  color: rgba(235, 223, 199, .54);
  line-height: 1.4;
}

.palace-personal-visual-question > span,
.palace-personal-visual-summary > span {
  display: block;
  margin-bottom: .65rem;
  color: rgba(227, 202, 150, .64);
  font-size: .65rem;
  letter-spacing: .1em;
}

.palace-personal-visual-mode-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
}

.palace-personal-visual-mode-grid button {
  min-height: 134px;
  padding: 1rem;
  text-align: left;
}

.palace-personal-visual-mode-grid span,
.palace-personal-visual-mode-grid strong,
.palace-personal-visual-mode-grid small {
  display: block;
}

.palace-personal-visual-mode-grid span {
  color: rgba(218, 183, 111, .72);
  font-size: .63rem;
  letter-spacing: .09em;
}

.palace-personal-visual-mode-grid strong {
  margin-top: .45rem;
  color: rgba(249, 230, 186, .96);
  font-size: .95rem;
  line-height: 1.35;
}

.palace-personal-visual-mode-grid small {
  margin-top: .5rem;
  color: rgba(236, 225, 203, .56);
  line-height: 1.45;
}

.palace-personal-visual-without {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  margin: .4rem 0 1rem;
}

.palace-personal-visual-without span {
  padding: .55rem .72rem;
  border: 1px solid rgba(223, 195, 139, .16);
  border-radius: 999px;
  color: rgba(246, 226, 184, .88);
  background: rgba(255,255,255,.02);
  font-size: .68rem;
  letter-spacing: .05em;
}

.palace-personal-visual-without i {
  color: rgba(218, 183, 111, .54);
  font-style: normal;
}

.palace-personal-visual-summary {
  margin-top: 1rem;
  padding: .9rem;
  border: 1px solid rgba(217, 184, 117, .18);
  border-radius: 14px;
  background: rgba(187, 144, 67, .05);
}

.palace-personal-visual-summary strong,
.palace-personal-visual-summary small {
  display: block;
}

.palace-personal-visual-summary strong {
  color: rgba(249, 230, 185, .96);
  letter-spacing: .06em;
}

.palace-personal-visual-summary small {
  margin-top: .45rem;
  color: rgba(234, 223, 199, .54);
  line-height: 1.45;
}

@media (max-width: 640px) {
  .palace-personal-visual-map__rail {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .palace-personal-visual-map__rail > i {
    width: 100%;
    height: 2px;
    grid-column: 1 / -1;
    background: linear-gradient(to right, transparent, rgba(218, 181, 106, .72), transparent);
  }

  .palace-personal-visual-rules,
  .palace-personal-visual-checklist,
  .palace-personal-visual-mode-grid {
    grid-template-columns: 1fr;
  }

  .palace-personal-visual-mode-grid button {
    min-height: 0;
  }
}


/* ==========================================================
   VNEW.0.76 — PALAIS PERSONNELS · image locale éphémère
   ========================================================== */
.palace-personal-local-rules {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .55rem;
  margin-top: .9rem;
}
.palace-personal-local-rules article {
  min-height: 96px;
  padding: .85rem;
  border: 1px solid rgba(220, 191, 126, .14);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
}
.palace-personal-local-rules span,
.palace-personal-local-rules strong,
.palace-personal-local-rules small { display: block; }
.palace-personal-local-rules span {
  color: rgba(217, 183, 113, .58);
  font-size: .61rem;
  letter-spacing: .11em;
}
.palace-personal-local-rules strong {
  margin: .32rem 0;
  color: rgba(248, 229, 185, .93);
  font-size: .73rem;
  letter-spacing: .055em;
}
.palace-personal-local-rules small {
  color: rgba(236, 225, 202, .55);
  line-height: 1.38;
}

.palace-personal-local-drop,
.palace-personal-local-mask-card,
.palace-personal-local-repair,
.palace-personal-local-summary {
  border: 1px solid rgba(220, 191, 126, .15);
  border-radius: 13px;
  background: rgba(255,255,255,.018);
}
.palace-personal-local-drop,
.palace-personal-local-mask-card {
  padding: 1.15rem;
  text-align: center;
}
.palace-personal-local-drop span,
.palace-personal-local-drop strong,
.palace-personal-local-drop small,
.palace-personal-local-mask-card span,
.palace-personal-local-mask-card strong,
.palace-personal-local-mask-card small { display: block; }
.palace-personal-local-drop span,
.palace-personal-local-mask-card span {
  color: rgba(220, 187, 119, .62);
  font-size: .62rem;
  letter-spacing: .12em;
}
.palace-personal-local-drop strong,
.palace-personal-local-mask-card strong {
  margin: .4rem 0;
  color: rgba(249, 230, 186, .95);
  font-size: .95rem;
}
.palace-personal-local-drop small,
.palace-personal-local-mask-card small {
  color: rgba(237, 225, 201, .56);
  line-height: 1.45;
}

.palace-personal-local-error {
  margin-top: .75rem;
  padding: .75rem .9rem;
  border: 1px solid rgba(214, 145, 119, .28);
  border-radius: 11px;
  background: rgba(154, 74, 53, .09);
  color: rgba(247, 210, 193, .85);
  font-size: .78rem;
  line-height: 1.5;
}

.palace-personal-local-preview {
  overflow: hidden;
  margin-bottom: .85rem;
  border: 1px solid rgba(220, 191, 126, .16);
  border-radius: 14px;
  background: rgba(4,5,4,.48);
}
.palace-personal-local-preview img {
  display: block;
  width: 100%;
  max-height: min(46vh, 420px);
  object-fit: contain;
  background: #0c0d0b;
}
.palace-personal-local-preview > small {
  display: block;
  padding: .7rem .85rem;
  color: rgba(236, 224, 198, .52);
  font-size: .66rem;
  line-height: 1.45;
}
.palace-personal-local-preview__missing {
  min-height: 180px;
  display: grid;
  place-items: center;
  color: rgba(237, 224, 195, .48);
  font-size: .7rem;
  letter-spacing: .1em;
}

.palace-personal-local-repair {
  margin-top: .75rem;
  padding: .85rem .95rem;
  background: rgba(213, 176, 100, .045);
}
.palace-personal-local-repair strong,
.palace-personal-local-repair p { display: block; }
.palace-personal-local-repair strong {
  color: rgba(248, 229, 186, .94);
  font-size: .78rem;
  letter-spacing: .07em;
}
.palace-personal-local-repair p {
  margin: .42rem 0 0;
  color: rgba(237, 226, 202, .64);
  line-height: 1.55;
}

.palace-personal-local-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .45rem;
  padding: .8rem;
  margin-bottom: .8rem;
}
.palace-personal-local-summary span {
  padding: .7rem;
  border: 1px solid rgba(164, 198, 141, .16);
  border-radius: 10px;
  background: rgba(112, 151, 90, .035);
  color: rgba(222, 237, 210, .72);
  font-size: .64rem;
  letter-spacing: .075em;
  text-align: center;
}

.palace-personal-principle code {
  padding: .08rem .28rem;
  border-radius: 5px;
  background: rgba(255,255,255,.045);
  color: rgba(249, 230, 186, .88);
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: .78em;
}

@media (max-width: 720px) {
  .palace-personal-local-rules,
  .palace-personal-local-summary { grid-template-columns: 1fr; }
  .palace-personal-local-preview img { max-height: 38vh; }
  .palace-personal-local-drop,
  .palace-personal-local-mask-card { padding: .95rem; }
}

/* ==========================================================
   VNEW.0.76.1 — EXPLORER LE DOMAINE · VISITE LIBRE SÛRE
   ========================================================== */
.safe-visit-banner {
  position: fixed;
  z-index: 1200;
  left: max(10px, env(safe-area-inset-left));
  right: max(10px, env(safe-area-inset-right));
  top: max(10px, env(safe-area-inset-top));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .8rem;
  max-width: 1040px;
  margin: 0 auto;
  padding: .62rem .72rem .62rem .85rem;
  border: 1px solid rgba(222, 190, 119, .24);
  border-radius: 14px;
  background: rgba(18, 18, 14, .93);
  box-shadow: 0 16px 45px rgba(0, 0, 0, .34);
  backdrop-filter: blur(14px);
}
.safe-visit-banner > div:first-child { min-width: 0; }
.safe-visit-banner strong,
.safe-visit-banner span { display: block; }
.safe-visit-banner strong {
  color: rgba(247, 224, 174, .96);
  font-size: .65rem;
  letter-spacing: .13em;
}
.safe-visit-banner span {
  margin-top: .18rem;
  color: rgba(238, 229, 207, .62);
  font-size: .7rem;
  line-height: 1.35;
}
.safe-visit-banner__actions {
  display: flex;
  flex: 0 0 auto;
  gap: .42rem;
}
.safe-visit-banner button {
  min-height: 36px;
  padding: .45rem .65rem;
  border: 1px solid rgba(222, 190, 119, .2);
  border-radius: 9px;
  background: rgba(222, 190, 119, .055);
  color: rgba(242, 226, 193, .82);
  font-size: .59rem;
  letter-spacing: .075em;
}

.domain-explorer-scene {
  position: relative;
  min-height: 100dvh;
  display: grid;
  place-items: center;
  overflow: hidden;
  padding: 7.2rem 1rem 3rem;
  background:
    radial-gradient(circle at 50% 15%, rgba(196, 165, 98, .09), transparent 34%),
    linear-gradient(180deg, #171711 0%, #0e0f0d 100%);
}
.domain-explorer-scene__veil {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(255,255,255,.014) 1px, transparent 1px),
    linear-gradient(rgba(255,255,255,.01) 1px, transparent 1px);
  background-size: 54px 54px;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.75), transparent 86%);
}
.domain-explorer-card {
  position: relative;
  z-index: 1;
  width: min(980px, calc(100vw - 2rem));
  max-height: calc(100dvh - 9rem);
  overflow-y: auto;
  padding: clamp(1.15rem, 3vw, 2rem);
  border: 1px solid rgba(220, 188, 116, .18);
  border-radius: 20px;
  background: rgba(19, 19, 15, .88);
  box-shadow: 0 28px 90px rgba(0,0,0,.36);
  backdrop-filter: blur(10px);
}
.domain-explorer-card > h1 {
  margin: .35rem 0 .7rem;
  color: rgba(249, 233, 197, .97);
  font-size: clamp(1.45rem, 4vw, 2.35rem);
  font-weight: 500;
}
.domain-explorer-card > p:not(.eyebrow) {
  max-width: 760px;
  margin: 0;
  color: rgba(235, 226, 204, .67);
  line-height: 1.6;
}
.domain-explorer-safety {
  display: grid;
  gap: .28rem;
  margin: 1rem 0 1.15rem;
  padding: .85rem .95rem;
  border: 1px solid rgba(147, 187, 124, .2);
  border-radius: 13px;
  background: rgba(117, 151, 91, .055);
}
.domain-explorer-safety strong {
  color: rgba(217, 236, 202, .88);
  font-size: .66rem;
  letter-spacing: .11em;
}
.domain-explorer-safety span {
  color: rgba(226, 235, 214, .61);
  font-size: .74rem;
  line-height: 1.45;
}
.domain-explorer-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .62rem;
}
.domain-explorer-place {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 168px;
  padding: .9rem;
  border: 1px solid rgba(218, 187, 120, .14);
  border-radius: 14px;
  background: rgba(255,255,255,.018);
}
.domain-explorer-place.is-featured {
  border-color: rgba(220, 183, 101, .32);
  background: rgba(188, 147, 70, .065);
}
.domain-explorer-place > span {
  color: rgba(218, 187, 120, .56);
  font-size: .58rem;
  letter-spacing: .11em;
}
.domain-explorer-place > strong {
  margin: .38rem 0 .28rem;
  color: rgba(248, 231, 193, .93);
  font-size: .88rem;
}
.domain-explorer-place > small {
  flex: 1;
  color: rgba(234, 225, 204, .55);
  font-size: .7rem;
  line-height: 1.45;
}
.domain-explorer-place > button,
.domain-explorer-card__actions button {
  margin-top: .75rem;
  min-height: 40px;
  border: 1px solid rgba(220, 188, 116, .18);
  border-radius: 10px;
  background: rgba(220, 188, 116, .04);
  color: rgba(242, 227, 195, .8);
  font-size: .62rem;
  letter-spacing: .075em;
}
.domain-explorer-place > button.is-primary {
  border-color: rgba(224, 187, 106, .34);
  background: rgba(199, 158, 79, .12);
  color: rgba(251, 232, 187, .96);
}
.domain-explorer-card__actions {
  display: flex;
  justify-content: center;
  margin-top: 1rem;
}
.domain-explorer-card__actions button { padding-inline: 1rem; }

@media (max-width: 760px) {
  .safe-visit-banner {
    align-items: stretch;
    flex-direction: column;
    padding: .6rem .65rem;
  }
  .safe-visit-banner__actions { width: 100%; }
  .safe-visit-banner__actions button { flex: 1; }
  .domain-explorer-scene { padding: 8.9rem .5rem 1.2rem; }
  .domain-explorer-card {
    width: calc(100vw - 1rem);
    max-height: calc(100dvh - 10.1rem);
    border-radius: 16px;
    padding: 1rem;
  }
  .domain-explorer-grid { grid-template-columns: 1fr; }
  .domain-explorer-place { min-height: 0; }
}
.world-frame.is-safe-visit .site-mark {
  display: none !important;
}


/* ==========================================================
   VNEW.0.77 — PALAIS PERSONNELS · loci cliquables temporaires
   ========================================================== */
.palace-personal-clickable-photo {
  position: relative;
  width: 100%;
  overflow: hidden;
  margin-bottom: .85rem;
  border: 1px solid rgba(220, 191, 126, .18);
  border-radius: 14px;
  background: rgba(4,5,4,.52);
  touch-action: manipulation;
  user-select: none;
}
.palace-personal-clickable-photo.is-placing { cursor: crosshair; }
.palace-personal-clickable-photo > img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  background: #0b0c0a;
  pointer-events: none;
}
.palace-personal-clickable-overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.palace-personal-clickable-marker {
  position: absolute;
  z-index: 2;
  width: 40px;
  height: 40px;
  min-width: 40px !important;
  min-height: 40px !important;
  padding: 0 !important;
  border: 1px solid rgba(255, 229, 168, .86) !important;
  border-radius: 50% !important;
  transform: translate(-50%, -50%);
  display: grid;
  place-items: center;
  background: rgba(23, 21, 16, .84) !important;
  box-shadow: 0 0 0 4px rgba(213, 178, 103, .13), 0 6px 18px rgba(0,0,0,.34);
  color: rgba(255, 238, 197, .98) !important;
  font-size: .72rem !important;
  font-weight: 700;
  line-height: 1;
  pointer-events: none;
}
.palace-personal-clickable-marker.is-interactive {
  pointer-events: auto;
  cursor: pointer;
}
.palace-personal-clickable-marker.is-interactive:hover,
.palace-personal-clickable-marker.is-interactive:focus-visible {
  border-color: rgba(255, 237, 190, 1) !important;
  box-shadow: 0 0 0 6px rgba(221, 185, 108, .18), 0 8px 22px rgba(0,0,0,.42);
}
.palace-personal-clickable-marker.is-repair {
  width: 46px;
  height: 46px;
  min-width: 46px !important;
  min-height: 46px !important;
  background: rgba(105, 75, 29, .93) !important;
  box-shadow: 0 0 0 7px rgba(230, 190, 107, .22), 0 0 26px rgba(229, 190, 109, .26);
}
.palace-personal-clickable-current {
  margin-top: .75rem;
  padding: .85rem .95rem;
  border: 1px solid rgba(220, 191, 126, .15);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
  text-align: center;
}
.palace-personal-clickable-current span,
.palace-personal-clickable-current strong,
.palace-personal-clickable-current small { display: block; }
.palace-personal-clickable-current span {
  color: rgba(219, 184, 113, .60);
  font-size: .62rem;
  letter-spacing: .105em;
}
.palace-personal-clickable-current strong {
  margin: .36rem 0;
  color: rgba(249, 231, 188, .96);
  font-size: .96rem;
  letter-spacing: .035em;
}
.palace-personal-clickable-current small {
  color: rgba(236, 225, 202, .57);
  font-size: .69rem;
  line-height: 1.45;
}
.palace-personal-clickable-current.is-test {
  border-color: rgba(221, 187, 116, .25);
  background: rgba(210, 174, 99, .035);
}

@media (max-width: 960px) and (min-width: 721px) {
  .palace-personal-lessons {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
  .palace-personal-lessons > i { display: none; }
}

@media (max-width: 720px) {
  .palace-personal-clickable-marker {
    width: 44px;
    height: 44px;
    min-width: 44px !important;
    min-height: 44px !important;
  }
  .palace-personal-clickable-marker.is-repair {
    width: 48px;
    height: 48px;
    min-width: 48px !important;
    min-height: 48px !important;
  }
}

/* ==========================================================
   VNEW.0.78 — PALAIS PERSONNELS · sauvegarde locale contrôlée
   ========================================================== */
.palace-personal-storage-consent {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
  margin: .8rem 0;
}
.palace-personal-storage-consent article {
  padding: .9rem;
  border: 1px solid rgba(220, 191, 126, .15);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
}
.palace-personal-storage-consent span,
.palace-personal-storage-consent strong,
.palace-personal-storage-consent small { display: block; }
.palace-personal-storage-consent span {
  color: rgba(219, 184, 113, .60);
  font-size: .61rem;
  letter-spacing: .105em;
}
.palace-personal-storage-consent strong {
  margin: .4rem 0;
  color: rgba(249, 231, 188, .96);
  font-size: .9rem;
  line-height: 1.4;
}
.palace-personal-storage-consent small {
  color: rgba(236, 225, 202, .56);
  font-size: .68rem;
  line-height: 1.45;
}
.palace-personal-privacy.is-visit-simulation {
  border-color: rgba(151, 185, 212, .22);
  background: rgba(88, 123, 149, .06);
}
.palace-personal-saved-map {
  margin-top: 1rem;
  padding: .85rem .9rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .8rem;
  border: 1px solid rgba(163, 198, 139, .22);
  border-radius: 13px;
  background: rgba(112, 148, 91, .045);
}
.palace-personal-saved-map.is-stale {
  border-color: rgba(218, 174, 100, .26);
  background: rgba(157, 104, 49, .055);
}
.palace-personal-saved-map span,
.palace-personal-saved-map strong,
.palace-personal-saved-map small { display: block; }
.palace-personal-saved-map span {
  color: rgba(219, 184, 113, .62);
  font-size: .61rem;
  letter-spacing: .11em;
}
.palace-personal-saved-map strong {
  margin: .28rem 0;
  color: rgba(247, 229, 187, .95);
  font-size: .86rem;
}
.palace-personal-saved-map small {
  color: rgba(236, 225, 202, .55);
  font-size: .66rem;
}
.palace-personal-saved-map button {
  flex: 0 0 auto;
  min-height: 40px;
}
.palace-personal-delete-confirm {
  margin-top: .75rem;
  padding: .9rem;
  border: 1px solid rgba(210, 127, 105, .27);
  border-radius: 12px;
  background: rgba(135, 62, 45, .08);
}
.palace-personal-delete-confirm strong,
.palace-personal-delete-confirm p { display: block; }
.palace-personal-delete-confirm strong {
  color: rgba(255, 220, 204, .94);
  font-size: .9rem;
}
.palace-personal-delete-confirm p {
  margin: .45rem 0 0;
  color: rgba(242, 221, 211, .62);
  font-size: .7rem;
  line-height: 1.5;
}
.palace-personal-panel__actions .is-danger {
  border-color: rgba(218, 132, 110, .42) !important;
  background: rgba(145, 62, 44, .16) !important;
  color: rgba(255, 224, 211, .96) !important;
}

/* Six fiches : grille plus lisible, sans connecteurs décoratifs. */
.palace-personal-lessons {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.palace-personal-lessons > i { display: none; }

@media (max-width: 960px) and (min-width: 721px) {
  .palace-personal-lessons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
  .palace-personal-lessons { grid-template-columns: 1fr; }
  .palace-personal-storage-consent { grid-template-columns: 1fr; }
  .palace-personal-saved-map {
    align-items: stretch;
    flex-direction: column;
  }
  .palace-personal-saved-map button { width: 100%; min-height: 44px; }
}


/* ==========================================================
   VNEW.0.78.1 — CORRECTIONS PHYSIQUES & MOBILE
   Tests réels : superpositions, cibles tactiles, loci et safe areas.
   ========================================================== */

/* Les deux outils globaux ne se concurrencent jamais lorsqu'un panneau est ouvert. */
.journey-hub-open .focus-tool__trigger,
.focus-tool-open .journey-hub__trigger,
.palace-personal-modal-open .focus-tool__trigger,
.palace-personal-modal-open .journey-hub__trigger {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* Une fiche du Palais a sa propre indication de visite : le grand bandeau se retire. */
.palace-personal-modal-open .safe-visit-banner {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

.palace-personal-visit-chip {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  margin-bottom: .35rem;
  padding: .28rem .52rem;
  border: 1px solid rgba(147, 187, 124, .24);
  border-radius: 999px;
  background: rgba(117, 151, 91, .07);
  color: rgba(217, 236, 202, .84);
  font-size: .58rem;
  letter-spacing: .11em;
}

/* Cibles tactiles : minimum cohérent avec le reste de l'interface mobile. */
.safe-visit-banner button,
.domain-explorer-place > button,
.domain-explorer-card__actions button {
  min-height: 44px;
}

@media (max-width: 720px), (pointer: coarse) {
  .safe-visit-banner button,
  .domain-explorer-place > button,
  .domain-explorer-card__actions button {
    min-height: 44px;
  }

  /* Gouttière basse pour que les outils flottants ne recouvrent jamais la fin d'une page longue. */
  .palace-personal-scene {
    padding-bottom: calc(5.75rem + env(safe-area-inset-bottom));
  }

  .domain-explorer-card {
    padding-bottom: calc(5.25rem + env(safe-area-inset-bottom));
    scroll-padding-bottom: calc(5.25rem + env(safe-area-inset-bottom));
  }

  .palace-personal-panel {
    scroll-padding-top: .75rem;
    scroll-padding-bottom: calc(1.25rem + env(safe-area-inset-bottom));
  }
}

/* Sur mobile, le bandeau de visite appartient au flux : aucune scène ne démarre dessous. */
@media (max-width: 720px) {
  .safe-visit-banner {
    position: relative;
    top: auto;
    left: auto;
    right: auto;
    width: calc(100% - 1rem);
    max-width: none;
    margin: max(.5rem, env(safe-area-inset-top)) auto 0;
  }

  .domain-explorer-scene {
    padding-top: 1rem;
  }
}

@media (max-width: 720px), (pointer: coarse) {
  .palace-personal-panel__header > button {
    min-height: 44px;
  }
}

/* ==========================================================
   VNEW.0.79 — PALAIS PERSONNELS · premier usage réel
   ========================================================== */
.palace-personal-use-flow {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr) auto);
  align-items: stretch;
  gap: .5rem;
  margin: 1rem 0;
}
.palace-personal-use-flow > span {
  min-width: 0;
  padding: .8rem;
  border: 1px solid rgba(220, 191, 126, .14);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
  display: grid;
  gap: .22rem;
  align-content: center;
}
.palace-personal-use-flow > span b,
.palace-personal-use-flow > span strong,
.palace-personal-use-flow > span small { display: block; }
.palace-personal-use-flow > span b {
  color: rgba(219, 184, 113, .58);
  font-size: .62rem;
  letter-spacing: .1em;
}
.palace-personal-use-flow > span strong {
  color: rgba(249, 231, 188, .95);
  font-size: .76rem;
  letter-spacing: .05em;
}
.palace-personal-use-flow > span small {
  color: rgba(236, 225, 202, .55);
  font-size: .67rem;
  line-height: 1.4;
}
.palace-personal-use-flow > i {
  align-self: center;
  color: rgba(219, 184, 113, .33);
  font-style: normal;
}
.palace-personal-use-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
  margin: .9rem 0;
}
.palace-personal-use-fields label {
  display: grid;
  gap: .38rem;
}
.palace-personal-use-fields label > span {
  color: rgba(219, 184, 113, .65);
  font-size: .62rem;
  letter-spacing: .095em;
}
.palace-personal-use-fields input {
  width: 100%;
  min-height: 46px;
  padding: .72rem .78rem;
  border: 1px solid rgba(220, 191, 126, .18);
  border-radius: 11px;
  background: rgba(255,255,255,.025);
  color: rgba(249, 237, 211, .93);
  font: inherit;
  font-size: .82rem;
  outline: none;
}
.palace-personal-use-fields input:focus {
  border-color: rgba(229, 193, 118, .5);
  box-shadow: 0 0 0 3px rgba(217, 179, 99, .08);
}
.palace-personal-use-recall-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .6rem;
  margin-top: .85rem;
}
.palace-personal-use-recall-grid button {
  min-height: 78px;
  border-radius: 12px !important;
  display: grid;
  align-content: center;
  gap: .22rem;
  text-align: left;
}
.palace-personal-use-recall-grid strong,
.palace-personal-use-recall-grid small { display: block; }
.palace-personal-use-recall-grid strong {
  color: rgba(248, 231, 191, .95);
  font-size: .78rem;
}
.palace-personal-use-recall-grid small {
  color: rgba(236, 225, 202, .55);
  font-size: .67rem;
  line-height: 1.42;
  letter-spacing: 0;
}
.palace-personal-use-mental-address {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
  gap: .65rem;
  align-items: center;
  margin: .9rem 0;
  padding: 1rem;
  border: 1px solid rgba(220, 191, 126, .15);
  border-radius: 13px;
  background: rgba(255,255,255,.018);
}
.palace-personal-use-mental-address > span,
.palace-personal-use-mental-address > strong { display: block; }
.palace-personal-use-mental-address > span {
  color: rgba(219, 184, 113, .6);
  font-size: .61rem;
  letter-spacing: .1em;
}
.palace-personal-use-mental-address > strong {
  color: rgba(249, 231, 188, .95);
  font-size: .86rem;
}
.palace-personal-use-mental-address > i {
  color: rgba(219,184,113,.34);
  font-style: normal;
}
.palace-personal-use-compare {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
  gap: .7rem;
  align-items: stretch;
  margin: 1rem 0;
}
.palace-personal-use-compare article {
  padding: .95rem;
  border: 1px solid rgba(220,191,126,.15);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
}
.palace-personal-use-compare span,
.palace-personal-use-compare strong,
.palace-personal-use-compare small { display: block; }
.palace-personal-use-compare span {
  color: rgba(219,184,113,.6);
  font-size: .61rem;
  letter-spacing: .1em;
}
.palace-personal-use-compare strong {
  margin: .35rem 0;
  color: rgba(249,231,188,.96);
  font-size: 1rem;
}
.palace-personal-use-compare small {
  color: rgba(236,225,202,.56);
  font-size: .69rem;
}
.palace-personal-use-compare > i {
  align-self: center;
  color: rgba(219,184,113,.34);
  font-style: normal;
}

@media (max-width: 720px) {
  .palace-personal-use-flow,
  .palace-personal-use-fields,
  .palace-personal-use-recall-grid,
  .palace-personal-use-mental-address,
  .palace-personal-use-compare {
    grid-template-columns: 1fr;
  }
  .palace-personal-use-flow > i,
  .palace-personal-use-mental-address > i,
  .palace-personal-use-compare > i { display: none; }
  .palace-personal-use-recall-grid button { min-height: 68px; }
}

/* ==========================================================
   VNEW.0.80 — PALAIS PERSONNELS · réparation ciblée sans photo
   ========================================================== */
.palace-personal-repair-address {
  display: grid;
  gap: .28rem;
  margin: .9rem 0;
  padding: .95rem 1rem;
  border: 1px solid rgba(220,191,126,.16);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
}
.palace-personal-repair-address span,
.palace-personal-repair-trace span {
  color: rgba(219,184,113,.62);
  font-size: .61rem;
  letter-spacing: .1em;
}
.palace-personal-repair-address strong,
.palace-personal-repair-trace strong {
  color: rgba(249,231,188,.96);
}
.palace-personal-repair-address small {
  color: rgba(236,225,202,.54);
  font-size: .68rem;
}
.palace-personal-repair-trace {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
  gap: .65rem;
  align-items: stretch;
  margin: .9rem 0;
}
.palace-personal-repair-trace article {
  min-width: 0;
  padding: .95rem;
  border: 1px solid rgba(220,191,126,.15);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
}
.palace-personal-repair-trace span,
.palace-personal-repair-trace strong { display: block; }
.palace-personal-repair-trace strong {
  margin-top: .35rem;
  font-size: .86rem;
  line-height: 1.45;
  overflow-wrap: anywhere;
}
.palace-personal-repair-trace > i {
  align-self: center;
  color: rgba(219,184,113,.34);
  font-style: normal;
}
@media (max-width: 720px) {
  .palace-personal-repair-trace { grid-template-columns: 1fr; }
  .palace-personal-repair-trace > i { display: none; }
}

/* ==========================================================
   VNEW.0.81 — PALAIS PERSONNELS · adresses autonomes
   ========================================================== */
.palace-personal-clickable-marker.is-selected {
  border-color: rgba(239, 205, 126, .82);
  background: rgba(163, 125, 54, .9);
  color: #fff5d8;
  box-shadow: 0 0 0 4px rgba(232, 194, 111, .13), 0 5px 18px rgba(0,0,0,.32);
}
.palace-personal-autonomous-selected {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .65rem;
  margin: .9rem 0;
}
.palace-personal-autonomous-selected article {
  min-width: 0;
  padding: .82rem .9rem;
  border: 1px solid rgba(220,191,126,.13);
  border-radius: 12px;
  background: rgba(255,255,255,.015);
  display: grid;
  gap: .28rem;
}
.palace-personal-autonomous-selected article.is-filled {
  border-color: rgba(220,191,126,.3);
  background: rgba(179,138,65,.055);
}
.palace-personal-autonomous-selected span,
.palace-personal-autonomous-trace-call span {
  color: rgba(219,184,113,.62);
  font-size: .61rem;
  letter-spacing: .1em;
}
.palace-personal-autonomous-selected strong {
  color: rgba(249,231,188,.95);
  font-size: .79rem;
  line-height: 1.4;
  overflow-wrap: anywhere;
}
.palace-personal-autonomous-trace-call {
  display: grid;
  justify-items: center;
  gap: .3rem;
  margin: .9rem 0 1rem;
  padding: 1rem;
  border: 1px solid rgba(220,191,126,.16);
  border-radius: 13px;
  background: rgba(255,255,255,.018);
  text-align: center;
}
.palace-personal-autonomous-trace-call strong {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  border: 1px solid rgba(232,198,124,.42);
  background: rgba(173,129,54,.12);
  color: rgba(255,237,194,.98);
  font-size: 1.15rem;
}
.palace-personal-autonomous-trace-call small {
  color: rgba(236,225,202,.54);
  font-size: .67rem;
}
.palace-personal-autonomous-address-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .55rem;
}
.palace-personal-autonomous-address-grid button {
  min-height: 62px;
  display: grid;
  grid-template-columns: 30px minmax(0,1fr);
  gap: .55rem;
  align-items: center;
  text-align: left;
  border-radius: 11px !important;
}
.palace-personal-autonomous-address-grid button span {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px solid rgba(220,191,126,.25);
  color: rgba(235,204,137,.83);
  font-size: .7rem;
}
.palace-personal-autonomous-address-grid button strong {
  min-width: 0;
  color: rgba(247,231,196,.9);
  font-size: .75rem;
  overflow-wrap: anywhere;
}

@media (max-width: 720px) {
  .palace-personal-autonomous-selected,
  .palace-personal-autonomous-address-grid {
    grid-template-columns: 1fr;
  }
  .palace-personal-autonomous-address-grid button { min-height: 56px; }
}

/* VNEW.0.82 — PALAIS PERSONNELS · FICHE X · autonomie progressive */
.palace-personal-progressive-load {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .7rem;
  margin: .85rem 0;
}

.palace-personal-progressive-load button {
  min-height: 118px;
  padding: .85rem .7rem;
  border: 1px solid rgba(210, 179, 113, .22);
  border-radius: 16px;
  background: rgba(26, 24, 19, .72);
  color: rgba(244, 232, 205, .92);
  text-align: center;
  cursor: pointer;
}

.palace-personal-progressive-load button:hover,
.palace-personal-progressive-load button:focus-visible {
  border-color: rgba(224, 190, 116, .52);
  background: rgba(44, 38, 27, .88);
}

.palace-personal-progressive-load button > span,
.palace-personal-progressive-load button > strong,
.palace-personal-progressive-load button > small {
  display: block;
}

.palace-personal-progressive-load button > span {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.8rem;
  line-height: 1;
  color: rgba(239, 204, 132, .96);
}

.palace-personal-progressive-load button > strong {
  margin-top: .42rem;
  font-size: .76rem;
  letter-spacing: .13em;
}

.palace-personal-progressive-load button > small {
  margin-top: .45rem;
  font-size: .68rem;
  line-height: 1.45;
  color: rgba(230, 219, 195, .63);
}

.palace-personal-progressive-selected {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(115px, 1fr));
  gap: .5rem;
  margin-top: .75rem;
}

.palace-personal-progressive-selected article {
  min-height: 66px;
  padding: .65rem .7rem;
  border: 1px solid rgba(218, 187, 121, .16);
  border-radius: 12px;
  background: rgba(20, 19, 16, .55);
}

.palace-personal-progressive-selected article.is-filled {
  border-color: rgba(190, 212, 157, .30);
  background: rgba(32, 40, 28, .44);
}

.palace-personal-progressive-selected span,
.palace-personal-progressive-selected strong {
  display: block;
}

.palace-personal-progressive-selected span {
  font-size: .64rem;
  letter-spacing: .11em;
  color: rgba(229, 213, 181, .52);
}

.palace-personal-progressive-selected strong {
  margin-top: .28rem;
  font-size: .76rem;
  line-height: 1.35;
  color: rgba(248, 233, 200, .90);
}

@media (max-width: 720px) {
  .palace-personal-progressive-load {
    grid-template-columns: 1fr;
  }
  .palace-personal-progressive-load button {
    min-height: 76px;
    text-align: left;
    padding: .72rem .85rem;
  }
  .palace-personal-progressive-load button > span {
    float: left;
    width: 46px;
    margin-right: .75rem;
    font-size: 1.55rem;
    text-align: center;
  }
  .palace-personal-progressive-selected {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 360px) {
  .palace-personal-progressive-selected {
    grid-template-columns: 1fr;
  }
}

/* VNEW.0.83 — PALAIS PERSONNELS · FICHE XI · autonomie sans carte */
.palace-personal-mental-number-grid button.is-selected {
  border-color: rgba(196, 218, 158, .52) !important;
  background: rgba(40, 52, 31, .72) !important;
  box-shadow: inset 0 0 0 1px rgba(196, 218, 158, .12);
}
.palace-personal-mental-number-grid button.is-selected span {
  border-color: rgba(202, 224, 166, .48);
  color: rgba(231, 244, 205, .96);
  background: rgba(105, 132, 75, .20);
}
.palace-personal-mental-number-grid button.is-selected strong {
  color: rgba(232, 244, 211, .94);
}


/* VNEW.0.84 — PALAIS PERSONNELS · FICHE XII · seuil d’agrandissement */


/* VNEW.0.85 — PALAIS PERSONNELS · FICHE XIII · première extension stable 8→9 */


/* VNEW.0.86 — PALAIS PERSONNELS · FICHE XIV · stabilisation différée 8→9 */
.palace-personal-delayed-segment {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin: 16px 0;
}
.palace-personal-delayed-segment span {
  display: grid;
  place-items: center;
  min-height: 70px;
  border: 1px solid rgba(203, 188, 145, .22);
  border-radius: 14px;
  background: rgba(16, 17, 13, .42);
  color: rgba(229, 219, 189, .92);
  font-size: clamp(1rem, 2.8vw, 1.4rem);
  letter-spacing: .12em;
}
.palace-personal-delayed-segment i {
  display: none;
}
@media (max-width: 560px) {
  .palace-personal-delayed-segment { grid-template-columns: 1fr; }
  .palace-personal-delayed-segment span { min-height: 56px; }
}


/* VNEW.0.87 — PALAIS PERSONNELS · FICHE XV · premier usage réel du Palais 1→9 */
.palace-personal-mental-number-grid button.is-extension {
  border-style: dashed;
}

.palace-personal-mental-number-grid button.is-extension.is-selected {
  border-style: solid;
}

/* VNEW.0.88 — PALAIS PERSONNELS · FICHE XVI · charge étendue à 5 traces sur le Palais 1→9 */


/* VNEW.0.89 — PALAIS PERSONNELS · FICHE XVII · charge élevée à 7 traces sur 1→9 · loci 8 et 9 obligatoires */

/* VNEW.0.90 — FICHE XVIII réutilise les composants du Palais : consolidation différée 7 traces, capsule RAM éphémère. */

/* VNEW.0.91 — FICHE XIX : premier remplissage complet 9/9 du Palais 1→9, sans nouveau locus. */

/* VNEW.0.92 — FICHE XX : consolidation différée du 9/9, sans nouveau locus ni persistance des associations. */

/* VNEW.0.93 — FICHE XXI : autonomie complète 1→9 · charge libre 3 / 5 / 7 / 9. */
/* VNEW.0.94 — outil permanent : Utiliser mon Palais · 3 / 5 / 7 / 9 · sans écriture de progression. */
.palace-personal-expanded-autonomy-load {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

@media (max-width: 880px) {
  .palace-personal-expanded-autonomy-load {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .palace-personal-expanded-autonomy-load {
    grid-template-columns: 1fr;
  }
}


/* VNEW.0.95 — Grand Hall · accès direct à l’outil permanent Utiliser mon Palais. */
.palace-grand-hall-card__personal-tool {
  margin-top: 1rem;
  padding: .85rem .9rem;
  border: 1px solid rgba(202, 218, 159, .22);
  border-radius: .7rem;
  background: rgba(36, 45, 29, .24);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: .8rem;
}
.palace-grand-hall-card__personal-tool div {
  display: grid;
  gap: .16rem;
}
.palace-grand-hall-card__personal-tool span {
  color: rgba(203, 221, 164, .76);
  font-size: .58rem;
  font-weight: 760;
  letter-spacing: .11em;
}
.palace-grand-hall-card__personal-tool strong {
  color: rgba(239, 242, 218, .95);
  font-size: .84rem;
}
.palace-grand-hall-card__personal-tool small {
  color: rgba(235, 232, 211, .66);
  line-height: 1.45;
}
.palace-grand-hall-card__personal-tool button {
  min-height: 44px;
  border: 1px solid rgba(202, 218, 159, .38);
  border-radius: .55rem;
  background: rgba(77, 95, 55, .2);
  color: rgba(239, 242, 218, .96);
  padding: .72rem .9rem;
  font: inherit;
  font-size: .66rem;
  font-weight: 760;
  letter-spacing: .07em;
  cursor: pointer;
  white-space: nowrap;
}
.grand-hall-personal-practice-link {
  border-color: rgba(202, 218, 159, .3) !important;
  background: rgba(77, 95, 55, .16) !important;
}
@media (max-width: 620px) {
  .palace-grand-hall-card__personal-tool {
    grid-template-columns: 1fr;
  }
  .palace-grand-hall-card__personal-tool button {
    width: 100%;
  }
}

/* VNEW.0.96 — Mode libre : sortie contextuelle au bouton TERMINER, sans nouveau style ni nouvelle progression. */

/* VNEW.0.97 — Atelier autonome · interface après maîtrise. */
.palace-personal-autonomous-home {
  margin: 1.5rem 0 .35rem;
  padding: clamp(1rem, 2.6vw, 1.45rem);
  border: 1px solid rgba(184, 211, 148, .24);
  border-radius: 18px;
  background:
    radial-gradient(circle at 82% 12%, rgba(174, 204, 137, .08), transparent 32%),
    linear-gradient(180deg, rgba(45, 56, 35, .22), rgba(25, 29, 22, .18));
}
.palace-personal-autonomous-home__head {
  display: grid;
  gap: .3rem;
  max-width: 48rem;
}
.palace-personal-autonomous-home__head > span,
.palace-personal-guided-path__intro > span {
  color: rgba(193, 218, 158, .78);
  font-size: .62rem;
  font-weight: 760;
  letter-spacing: .12em;
}
.palace-personal-autonomous-home__head > strong {
  color: rgba(242, 239, 213, .97);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.35rem, 3.5vw, 2rem);
  font-weight: 500;
}
.palace-personal-autonomous-home__head > p,
.palace-personal-guided-path__intro > p {
  margin: .15rem 0 0;
  color: rgba(235, 232, 211, .7);
  line-height: 1.6;
}
.palace-personal-autonomous-home__facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .7rem;
  margin-top: 1rem;
}
.palace-personal-autonomous-home__facts article {
  padding: .82rem .9rem;
  border: 1px solid rgba(205, 220, 173, .13);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
}
.palace-personal-autonomous-home__facts span,
.palace-personal-autonomous-home__facts strong,
.palace-personal-autonomous-home__facts small {
  display: block;
}
.palace-personal-autonomous-home__facts span {
  color: rgba(203, 218, 171, .56);
  font-size: .58rem;
  letter-spacing: .11em;
}
.palace-personal-autonomous-home__facts strong {
  margin: .28rem 0 .18rem;
  color: rgba(244, 239, 211, .94);
  font-size: .96rem;
  letter-spacing: .055em;
}
.palace-personal-autonomous-home__facts small {
  color: rgba(232, 229, 207, .58);
  font-size: .68rem;
  line-height: 1.4;
}
.palace-personal-autonomous-home__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .7rem;
  margin-top: 1rem;
}
.palace-personal-autonomous-home__note {
  display: block;
  margin-top: .72rem;
  color: rgba(213, 221, 190, .52);
  font-size: .64rem;
  line-height: 1.5;
}
.palace-personal-guided-path {
  margin-top: 1.15rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(222, 193, 132, .13);
}
.palace-personal-guided-path[hidden] { display: none !important; }
.palace-personal-guided-path__intro {
  display: grid;
  gap: .2rem;
  padding: .15rem 0 .2rem;
}
.palace-personal-guided-path__intro > span { color: rgba(223, 195, 135, .66); }

@media (max-width: 720px) {
  .palace-personal-autonomous-home__facts { grid-template-columns: 1fr; }
  .palace-personal-autonomous-home__actions { display: grid; grid-template-columns: 1fr; }
  .palace-personal-autonomous-home__actions button { width: 100%; min-height: 44px; }
}

/* VNEW.0.98 — Bilan de maîtrise du Palais · lecture seule, non gamifié. */
.palace-personal-mastery {
  margin-top: 1rem;
  padding: .9rem;
  border: 1px solid rgba(206, 219, 177, .13);
  border-radius: 14px;
  background: rgba(11, 14, 10, .17);
}
.palace-personal-mastery__head {
  display: grid;
  gap: .25rem;
  margin-bottom: .75rem;
}
.palace-personal-mastery__head > span {
  color: rgba(201, 218, 171, .7);
  font-size: .6rem;
  font-weight: 760;
  letter-spacing: .115em;
}
.palace-personal-mastery__head > p {
  margin: 0;
  max-width: 48rem;
  color: rgba(235, 232, 211, .62);
  font-size: .71rem;
  line-height: 1.55;
}
.palace-personal-mastery__rows {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .55rem;
}
.palace-personal-mastery__rows article {
  min-width: 0;
  padding: .72rem .75rem;
  border-top: 1px solid rgba(205, 220, 173, .11);
  background: rgba(255,255,255,.008);
}
.palace-personal-mastery__rows span,
.palace-personal-mastery__rows strong,
.palace-personal-mastery__rows small {
  display: block;
}
.palace-personal-mastery__rows span {
  min-height: 2.35em;
  color: rgba(205, 218, 177, .5);
  font-size: .55rem;
  line-height: 1.35;
  letter-spacing: .09em;
}
.palace-personal-mastery__rows strong {
  margin: .3rem 0 .18rem;
  color: rgba(242, 239, 215, .92);
  font-family: Georgia, "Times New Roman", serif;
  font-size: .91rem;
  font-weight: 500;
  line-height: 1.25;
}
.palace-personal-mastery__rows small {
  color: rgba(230, 228, 207, .52);
  font-size: .62rem;
  line-height: 1.4;
}
.palace-personal-mastery__foot {
  display: block;
  margin-top: .72rem;
  color: rgba(213, 221, 190, .48);
  font-size: .61rem;
  line-height: 1.5;
}
@media (max-width: 1040px) {
  .palace-personal-mastery__rows { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .palace-personal-mastery__rows article:last-child { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
  .palace-personal-mastery { padding: .8rem; }
  .palace-personal-mastery__rows { grid-template-columns: 1fr; }
  .palace-personal-mastery__rows article:last-child { grid-column: auto; }
  .palace-personal-mastery__rows span { min-height: 0; }
}


/* VNEW.0.100 — Palais personnel · premier cycle terminé. Jalon dérivé, sans nouvel acquis. */
.palace-personal-cycle-complete {
  margin-top: .9rem;
  padding: .72rem .82rem;
  border-left: 2px solid rgba(204, 221, 166, .42);
  background: linear-gradient(90deg, rgba(75, 91, 57, .14), rgba(75, 91, 57, 0));
  display: grid;
  gap: .18rem;
}
.palace-personal-cycle-complete span,
.palace-personal-cycle-complete strong,
.palace-personal-cycle-complete small { display: block; }
.palace-personal-cycle-complete span {
  color: rgba(197, 216, 163, .62);
  font-size: .56rem;
  font-weight: 760;
  letter-spacing: .12em;
}
.palace-personal-cycle-complete strong {
  color: rgba(242, 239, 213, .94);
  font-family: Georgia, "Times New Roman", serif;
  font-size: .9rem;
  font-weight: 500;
  letter-spacing: .055em;
}
.palace-personal-cycle-complete small {
  color: rgba(232, 229, 207, .58);
  font-size: .65rem;
  line-height: 1.45;
}
.palace-grand-hall-card__personal-tool.is-cycle-complete {
  border-color: rgba(202, 218, 159, .3);
  box-shadow: inset 0 1px 0 rgba(235, 240, 214, .025);
}


/* =========================================================
   VNEW.0.118 — Grand Hall · direction unique PALAIS + Quartier des Palais
   ========================================================= */

.grand-hall-palace-link {
  border-color: rgba(213, 184, 111, .45) !important;
  background: rgba(213, 184, 111, .07) !important;
  color: rgba(246, 226, 178, .96) !important;
}

.palaces-quarter-scene {
  position: relative;
  min-height: min(100svh, 60rem);
  overflow: hidden;
  color: rgba(247, 240, 220, .96);
  background: #171713;
}

.palaces-quarter-scene__architecture,
.palaces-quarter-scene__veil {
  position: absolute;
  inset: 0;
}

.palaces-quarter-scene__architecture {
  background:
    radial-gradient(circle at 50% 18%, rgba(230, 207, 146, .18), transparent 24%),
    linear-gradient(180deg, #2c2c25, #171713 78%);
}

.palaces-quarter-scene__arch {
  position: absolute;
  top: 15%;
  width: 22%;
  height: 54%;
  border: clamp(.55rem, 1.15vw, 1rem) solid rgba(185, 171, 137, .55);
  border-bottom: 0;
  border-radius: 48% 48% 0 0 / 28% 28% 0 0;
  box-shadow: inset 0 0 3rem rgba(0,0,0,.28), 0 1.5rem 3rem rgba(0,0,0,.22);
}

.palaces-quarter-scene__arch::after {
  content: "";
  position: absolute;
  inset: 8% 8% 0;
  border-radius: inherit;
  background: linear-gradient(180deg, rgba(111, 102, 82, .28), rgba(17, 18, 15, .86));
}

.palaces-quarter-scene__arch.is-left { left: 8%; }
.palaces-quarter-scene__arch.is-center { left: 39%; }
.palaces-quarter-scene__arch.is-right { right: 8%; }

.palaces-quarter-scene__floor {
  position: absolute;
  left: -10%;
  right: -10%;
  bottom: -20%;
  height: 55%;
  transform: perspective(38rem) rotateX(64deg);
  background:
    repeating-linear-gradient(90deg, rgba(226, 207, 159, .08) 0 1px, transparent 1px 7rem),
    repeating-linear-gradient(0deg, rgba(226, 207, 159, .06) 0 1px, transparent 1px 5rem),
    linear-gradient(180deg, rgba(128, 116, 91, .24), rgba(37, 35, 29, .64));
}

.palaces-quarter-scene__light {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 50% 35%, rgba(239, 214, 148, .13), transparent 50%);
  mix-blend-mode: screen;
}

.palaces-quarter-scene__veil {
  background: linear-gradient(90deg, rgba(13,14,11,.92), rgba(13,14,11,.55) 54%, rgba(13,14,11,.82));
}

.palaces-quarter-card {
  position: relative;
  z-index: 2;
  width: min(92%, 62rem);
  min-height: min(100svh, 60rem);
  margin: 0 auto;
  padding: clamp(1.4rem, 4vw, 3rem) 0;
  display: grid;
  align-content: center;
  gap: .9rem;
}

.palaces-quarter-card h1 {
  margin: 0;
  max-width: 15ch;
  font-size: clamp(2rem, 5vw, 4rem);
  line-height: .98;
  font-weight: 500;
}

.palaces-quarter-card > p:not(.eyebrow) {
  max-width: 46rem;
  margin: 0;
  color: rgba(240, 232, 213, .72);
  line-height: 1.65;
}

.palaces-quarter-status {
  width: min(100%, 44rem);
  padding: .8rem .95rem;
  border: 1px solid rgba(215, 187, 117, .25);
  border-radius: .7rem;
  background: rgba(30, 28, 22, .68);
  display: grid;
  gap: .18rem;
}

.palaces-quarter-status span,
.palaces-quarter-branch__copy > span {
  color: rgba(216, 190, 126, .78);
  font-size: .58rem;
  font-weight: 750;
  letter-spacing: .14em;
}

.palaces-quarter-status strong { font-size: .82rem; letter-spacing: .08em; }
.palaces-quarter-status small { color: rgba(240, 232, 213, .6); line-height: 1.45; }

.palaces-quarter-branches {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .7rem;
}

.palaces-quarter-branch {
  min-height: 15rem;
  padding: 1rem;
  border: 1px solid rgba(225, 207, 161, .17);
  border-radius: .8rem;
  background: rgba(22, 21, 17, .78);
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: .65rem;
  box-shadow: 0 .8rem 2rem rgba(0,0,0,.16);
}

.palaces-quarter-branch.is-open {
  border-color: rgba(219, 190, 117, .36);
  background: rgba(48, 42, 29, .66);
}

.palaces-quarter-branch__index span {
  display: inline-grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  border: 1px solid rgba(214, 187, 117, .34);
  border-radius: 50%;
  color: rgba(237, 213, 156, .92);
  font-size: .7rem;
}

.palaces-quarter-branch__copy { display: grid; align-content: start; gap: .35rem; }
.palaces-quarter-branch__copy strong { font-size: 1rem; letter-spacing: .04em; }
.palaces-quarter-branch__copy p { margin: 0; color: rgba(241, 233, 214, .72); line-height: 1.5; font-size: .76rem; }
.palaces-quarter-branch__copy small { color: rgba(241, 233, 214, .54); line-height: 1.45; font-size: .68rem; }

.palaces-quarter-branch button,
.palaces-quarter-card__actions button {
  min-height: 2.85rem;
  padding: .65rem .8rem;
  border: 1px solid rgba(222, 198, 139, .32);
  border-radius: 999px;
  background: rgba(222, 198, 139, .08);
  color: rgba(248, 235, 203, .94);
  font: inherit;
  font-size: .62rem;
  font-weight: 750;
  letter-spacing: .09em;
  cursor: pointer;
}

.palaces-quarter-branch button[disabled] {
  opacity: .46;
  cursor: default;
}

.palaces-quarter-card blockquote {
  margin: .2rem 0;
  max-width: 42rem;
  padding-left: .9rem;
  border-left: 1px solid rgba(220, 194, 130, .35);
  color: rgba(239, 224, 188, .72);
  font-style: italic;
}

.palaces-quarter-card__actions { display: flex; flex-wrap: wrap; gap: .55rem; }

@media (max-width: 760px) {
  .palaces-quarter-branches { grid-template-columns: 1fr; }
  .palaces-quarter-branch { min-height: 0; }
  .palaces-quarter-scene__arch { opacity: .55; width: 31%; }
  .palaces-quarter-scene__arch.is-left { left: 1%; }
  .palaces-quarter-scene__arch.is-center { left: 34.5%; }
  .palaces-quarter-scene__arch.is-right { right: 1%; }
}

@media (prefers-reduced-motion: reduce) {
  .palaces-quarter-scene *,
  .palaces-quarter-scene *::before,
  .palaces-quarter-scene *::after {
    scroll-behavior: auto !important;
    transition: none !important;
    animation: none !important;
  }
}

/* =========================================================
   VNEW.0.120 — Observatoire du Rappel · rôle visible G7
   ========================================================= */

.recall-observatory-map {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .45rem;
  margin-top: .9rem;
}

.recall-observatory-map article {
  min-width: 0;
  padding: .58rem .5rem;
  border: 1px solid rgba(229, 209, 154, .14);
  border-radius: .6rem;
  background: rgba(255,255,255,.02);
}

.recall-observatory-map article > span,
.recall-observatory-tool-group > span,
.recall-observatory-bridge > span {
  display: block;
  color: rgba(229, 207, 151, .76);
  font-size: .56rem;
  font-weight: 700;
  letter-spacing: .11em;
}

.recall-observatory-map article > small {
  margin-top: .34rem;
  color: rgba(236, 228, 205, .61);
  font-size: .59rem;
  line-height: 1.35;
}

.recall-observatory-section {
  margin-top: .72rem;
}

.recall-observatory-bridge {
  margin-top: .6rem;
  padding-top: .58rem;
  border-top: 1px solid rgba(229, 209, 154, .12);
}

.recall-observatory-bridge[hidden] {
  display: none;
}

.recall-observatory-bridge .recall-curve-entry-start {
  margin-top: .5rem;
}

.recall-observatory-tool-group {
  margin-top: .65rem;
  padding-top: .55rem;
  border-top: 1px solid rgba(229, 209, 154, .1);
}

.recall-observatory-tool-group:first-of-type {
  margin-top: .55rem;
}

@media (max-width: 760px) {
  .recall-curve-entry-card {
    max-height: calc(100dvh - 9rem);
    overflow-y: auto;
    overscroll-behavior: contain;
  }

  .recall-observatory-map {
    gap: .32rem;
  }

  .recall-observatory-map article {
    padding: .48rem .34rem;
  }

  .recall-observatory-map article > span {
    font-size: .5rem;
    letter-spacing: .07em;
  }

  .recall-observatory-map article > small {
    font-size: .54rem;
  }
}

@media (max-width: 460px) {
  .recall-observatory-map article > small {
    display: none;
  }
}


/* =========================================================
   VNEW.0.126.6.1 — intégration temporaire des 3 masters B0
   Test PC / mobile / 4G avant libération de la production B1.
   ========================================================= */

.garden1-stage__image,
.recall-curve-entry-stage__image,
.palace-grand-hall-scene__master {
  object-fit: cover;
  object-position: 50% 50%;
}

.garden1-stage__image--awake {
  filter: saturate(1.055) brightness(1.025) contrast(1.015);
}

.garden1-stage__shade {
  background:
    linear-gradient(180deg, rgba(8,10,6,.34), transparent 23%, transparent 66%, rgba(8,10,6,.44)),
    linear-gradient(90deg, rgba(8,10,6,.22), transparent 34%, transparent 68%, rgba(8,10,6,.18));
}

.recall-curve-entry-stage__shade {
  background:
    linear-gradient(180deg, rgba(8,9,7,.34), transparent 27%, transparent 64%, rgba(8,9,7,.46)),
    radial-gradient(circle at 50% 48%, transparent 24%, rgba(7,8,6,.22) 100%);
}

.palace-grand-hall-scene__master {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  user-select: none;
  -webkit-user-drag: none;
}

.palace-grand-hall-scene__dome,
.palace-grand-hall-scene__oculus,
.palace-grand-hall-scene__gallery,
.palace-grand-hall-scene__columns,
.palace-grand-hall-scene__floor,
.palace-grand-hall-scene__medallion {
  opacity: 0;
  pointer-events: none;
}

.palace-grand-hall-scene__light {
  background:
    linear-gradient(180deg, rgba(12,10,7,.22), rgba(11,10,8,.05) 28%, rgba(10,9,7,.18) 68%, rgba(8,8,7,.52)),
    linear-gradient(90deg, rgba(0,0,0,.25), transparent 26% 74%, rgba(0,0,0,.25));
}

.palace-grand-hall-scene__veil {
  background: linear-gradient(180deg, rgba(12,11,9,.16), rgba(10,10,8,.44));
}

@media (max-width: 760px) {
  .garden1-stage__image,
  .recall-curve-entry-stage__image,
  .palace-grand-hall-scene__master {
    object-position: 50% 50%;
  }

  .recall-curve-entry-stage__shade {
    background:
      linear-gradient(180deg, rgba(8,9,7,.42), rgba(8,9,7,.08) 25%, rgba(8,9,7,.14) 58%, rgba(8,9,7,.58)),
      radial-gradient(circle at 50% 48%, transparent 18%, rgba(7,8,6,.28) 100%);
  }

  .palace-grand-hall-scene__veil {
    background: linear-gradient(180deg, rgba(11,10,8,.22), rgba(9,9,7,.52));
  }
}


/* VNEW.0.127.9.1 — Gardens responsive sharpness patch.
   <picture> remains layout-neutral so existing stage geometry and loci do not move. */
.garden1-stage__picture,
.garden2-stage__picture {
  display: contents;
}

/* =========================================================
   VNEW.0.127.9.3 — MOBILE PHYSICAL QA FIXES
   Responsive/UI only. No visual master or loci geometry move.
   ========================================================= */

@media (max-width: 760px) {
  /* Jardin I: avoid bottom collision and make the Book action autonomous
     when the physical book is outside the portrait crop. */
  .garden1-whisper {
    display: none;
  }

  .garden1-book-hotspot,
  .garden2-book-hotspot {
    left: .8rem;
    top: auto;
    bottom: 4.7rem;
    width: auto;
    height: auto;
    min-width: 0;
    min-height: 0;
    padding: .62rem .78rem;
    border-radius: 999px;
    background: rgba(12, 14, 11, .50);
    backdrop-filter: blur(8px);
  }

  .garden1-book-hotspot::before,
  .garden2-book-hotspot::before {
    display: none;
  }

  .garden1-book-hotspot span,
  .garden2-book-hotspot span {
    position: static;
    display: block;
    transform: none;
    font-size: .59rem;
    letter-spacing: .11em;
  }

  .garden1-back,
  .garden2-back {
    bottom: .7rem;
  }

  /* Palace scenes: fixed visual viewport + scrollable content. This keeps
     the background stable while guaranteeing a true high safe-zone and
     access to every action on 360×800-class phones. */
  .palace-passage-scene,
  .palace-antechamber-scene {
    height: 100svh;
    min-height: 100svh;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  .palace-passage-card,
  .palace-threshold-card {
    box-sizing: border-box;
    width: 100%;
    min-height: 100svh;
    margin-left: 0;
    padding: 4.35rem 1rem 4rem;
    align-content: start;
    gap: .7rem;
    background:
      linear-gradient(180deg, rgba(18,17,14,.30) 0%, rgba(18,17,14,.64) 30%, rgba(18,17,14,.92) 100%);
  }

  .palace-passage-card h1,
  .palace-threshold-card h1 {
    font-size: clamp(1.9rem, 10vw, 3rem);
    max-width: 18ch;
  }

  .palace-passage-card > p:not(.eyebrow):not(.palace-passage-card__message),
  .palace-threshold-card > p:not(.eyebrow):not(.palace-threshold-card__next) {
    font-size: .91rem;
    line-height: 1.46;
  }

  /* Passage: keep the three-step sequence readable without turning it into
     three tall stacked cards. */
  .palace-passage-card__sequence {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .38rem;
  }

  .palace-passage-card__sequence span {
    min-height: 3.55rem;
    padding: .5rem .35rem;
  }

  .palace-passage-card__sequence strong {
    font-size: .64rem;
  }

  .palace-passage-card blockquote {
    margin: .25rem 0;
    padding: .65rem .75rem;
    font-size: .88rem;
  }

  /* Antichambre: compact the three principles while preserving their full
     wording and touch/readability. */
  .palace-threshold-card__principles {
    grid-template-columns: 1fr;
    gap: .4rem;
  }

  .palace-threshold-card__principles article {
    min-height: 0;
    padding: .52rem .62rem;
    grid-template-columns: 1.35rem minmax(0, 1fr);
    grid-template-rows: auto auto;
    column-gap: .5rem;
    row-gap: .08rem;
    align-items: center;
  }

  .palace-threshold-card__principles article > span {
    grid-column: 1;
    grid-row: 1 / span 2;
    font-size: .7rem;
  }

  .palace-threshold-card__principles article > strong,
  .palace-threshold-card__principles article > small {
    grid-column: 2;
  }

  .palace-threshold-card__principles article > strong {
    font-size: .67rem;
  }

  .palace-threshold-card__principles article > small {
    font-size: .62rem;
    line-height: 1.28;
  }

  .palace-threshold-card__hall-status {
    padding: .62rem .72rem;
    gap: .12rem;
  }

  .palace-threshold-card__hall-status small {
    font-size: .62rem;
    line-height: 1.3;
  }

  .palace-threshold-card__next {
    font-size: .68rem;
  }

  .palace-passage-card__actions,
  .palace-threshold-card__actions {
    gap: .45rem;
  }

  .palace-passage-card__actions button,
  .palace-threshold-card__actions button {
    flex: 1 1 12rem;
    min-height: 44px;
    padding: .72rem .82rem;
  }
}

@media (max-width: 380px) {
  .site-mark {
    padding: .58rem .68rem;
    font-size: .53rem;
  }

  .site-mark__title {
    letter-spacing: .1em;
  }

  .palace-passage-card,
  .palace-threshold-card {
    padding-top: 3.9rem;
    padding-inline: .82rem;
  }

  .palace-passage-card h1,
  .palace-threshold-card h1 {
    font-size: clamp(1.75rem, 9.8vw, 2.55rem);
  }
}

/* Phone landscape: prioritize orientation and touch controls. Long prose is
   still accessible by vertical scroll, but decorative maxims do not compete
   with the usable viewport. */
@media (orientation: landscape) and (max-height: 500px) and (max-width: 900px) {
  .site-mark {
    justify-content: flex-end;
    padding: .38rem .58rem;
    font-size: .5rem;
  }

  .site-mark__title {
    display: none;
  }

  .garden1-heading,
  .orangery-heading,
  .garden2-heading {
    top: 1.9rem;
  }

  .garden1-whisper,
  .orangery-maxim,
  .garden2-maxim {
    display: none;
  }

  .garden1-back,
  .orangery-back,
  .garden2-back {
    bottom: .55rem;
  }

  .garden1-book-hotspot,
  .orangery-book-hotspot,
  .garden2-book-hotspot {
    left: .6rem;
    top: auto;
    bottom: 2.95rem;
    width: auto;
    height: auto;
    min-width: 0;
    min-height: 0;
    padding: .52rem .68rem;
    border-radius: 999px;
    background: rgba(12,14,11,.52);
    backdrop-filter: blur(8px);
  }

  .garden1-book-hotspot::before,
  .orangery-book-hotspot::before,
  .garden2-book-hotspot::before {
    display: none;
  }

  .garden1-book-hotspot span,
  .orangery-book-hotspot span,
  .garden2-book-hotspot span {
    position: static;
    display: block;
    transform: none;
    font-size: .55rem;
  }

  .palace-passage-card,
  .palace-threshold-card {
    min-height: auto;
    padding: 2.5rem .9rem 1rem;
    gap: .5rem;
  }

  .palace-passage-card h1,
  .palace-threshold-card h1 {
    font-size: 1.7rem;
  }

  .palace-passage-card > p:not(.eyebrow):not(.palace-passage-card__message),
  .palace-threshold-card > p:not(.eyebrow):not(.palace-threshold-card__next) {
    font-size: .82rem;
    line-height: 1.36;
  }

  .palace-passage-card__sequence span {
    min-height: 3rem;
  }

  .palace-passage-card blockquote {
    font-size: .8rem;
    line-height: 1.35;
  }

  .palace-threshold-card__principles article {
    padding-block: .42rem;
  }
}

@media (orientation: landscape) and (max-height: 500px) and (max-width: 900px) {
  .palace-threshold-card {
    padding-top: 1.8rem;
    gap: .32rem;
  }

  .palace-threshold-card__principles {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .35rem;
  }

  .palace-threshold-card__principles article {
    min-height: 3.7rem;
    padding: .4rem .48rem;
    display: grid;
    grid-template-columns: auto;
    grid-template-rows: auto auto auto;
    gap: .04rem;
    align-content: center;
  }

  .palace-threshold-card__principles article > span,
  .palace-threshold-card__principles article > strong,
  .palace-threshold-card__principles article > small {
    grid-column: auto;
    grid-row: auto;
  }

  .palace-threshold-card__principles article > span {
    font-size: .58rem;
  }

  .palace-threshold-card__principles article > strong {
    font-size: .62rem;
  }

  .palace-threshold-card__principles article > small {
    font-size: .54rem;
    line-height: 1.2;
  }

  .palace-threshold-card__hall-status {
    padding: .4rem .55rem;
  }

  .palace-threshold-card__next {
    font-size: .62rem;
    margin: 0;
  }

  .palace-threshold-card__actions button {
    min-height: 36px;
    padding: .48rem .68rem;
  }
}

/* =========================================================
   VNEW.0.127.9.4 — MOBILE BOOK / OVERLAY CENTERING FIX
   Mobile-first interaction QA. CSS/UI only: no visual master,
   scene composition or Garden des Repères loci geometry move.
   ========================================================= */

/* Touch devices can be wider than 760px when rotated. Keep every Living Book
   centered horizontally and make the layer a real scroll container regardless
   of orientation. `safe center` centers short content, but falls back toward
   the start when content is taller than the available viewport. */
@media (pointer: coarse), (max-width: 760px) {
  .garden1-book-layer,
  .orangery-book-layer,
  .garden2-book-layer {
    justify-items: center;
    align-items: safe center;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding-top: max(4rem, calc(env(safe-area-inset-top) + .75rem));
    padding-right: max(.5rem, env(safe-area-inset-right));
    padding-bottom: max(1rem, calc(env(safe-area-inset-bottom) + .75rem));
    padding-left: max(.5rem, env(safe-area-inset-left));
    scroll-padding-top: max(.75rem, env(safe-area-inset-top));
    scroll-padding-bottom: max(1rem, env(safe-area-inset-bottom));
  }

  .garden1-book-layer .living-book-shell,
  .orangery-book-layer .living-book-shell,
  .garden2-book-layer .living-book-shell {
    width: min(100%, 70rem);
    max-width: 100%;
    margin-inline: auto;
  }

  .garden1-book-layer .living-book,
  .orangery-book-layer .living-book,
  .garden2-book-layer .living-book {
    width: 100%;
    max-width: 100%;
  }

  /* Exercise layers use the same smart centering rule: if a short panel fits,
     it is centered in the usable viewport; if it is too tall it starts at the
     safe top edge and remains fully scrollable. */
  .garden1-exercise-layer,
  .orangery-exercise-layer,
  .garden2-exercise-layer {
    justify-items: center;
    align-items: safe center;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    scroll-padding-top: max(.75rem, env(safe-area-inset-top));
    scroll-padding-bottom: max(1rem, env(safe-area-inset-bottom));
  }

  .garden1-exercise-layer > *,
  .orangery-exercise-layer > *,
  .garden2-exercise-layer > * {
    max-width: 100%;
    margin-inline: auto;
  }

  /* Bottom-sheet tools stay bottom-anchored intentionally, but are now
     mathematically centered between the safe left/right gutters. */
  .journey-hub__panel,
  .focus-tool__panel {
    left: max(.6rem, env(safe-area-inset-left));
    right: max(.6rem, env(safe-area-inset-right));
    width: auto;
  }

  /* The personal-palace overlay already owns its own inner scroll. Center it
     when it fits instead of pinning every short panel to the top. */
  .palace-personal-layer {
    justify-items: center;
    align-items: safe center;
  }
}

/* Landscape phones are the case that escaped the old max-width rule.
   Keep the book header reachable, reduce decorative padding, and let the
   overlay itself scroll all the way to the final chapter/action. */
@media (pointer: coarse) and (orientation: landscape) and (max-height: 600px) {
  .garden1-book-layer,
  .orangery-book-layer,
  .garden2-book-layer {
    align-items: start;
    padding-top: max(.55rem, env(safe-area-inset-top));
    padding-bottom: max(.7rem, env(safe-area-inset-bottom));
  }

  .garden1-book-layer .living-book,
  .orangery-book-layer .living-book,
  .garden2-book-layer .living-book {
    border-radius: 12px;
  }

  .garden1-book-layer .living-book__header,
  .orangery-book-layer .living-book__header,
  .garden2-book-layer .living-book__header {
    position: sticky;
    z-index: 3;
    top: 0;
    padding-block: .55rem .65rem;
    background: rgba(80,69,47,.97);
  }

  .garden1-book-layer .living-book__close,
  .orangery-book-layer .living-book__close,
  .garden2-book-layer .living-book__close {
    min-width: 48px;
    min-height: 44px;
  }

  .garden1-exercise-layer,
  .orangery-exercise-layer,
  .garden2-exercise-layer {
    align-items: safe center;
    padding-top: max(.55rem, env(safe-area-inset-top));
    padding-bottom: max(.65rem, env(safe-area-inset-bottom));
  }
}

/* Jardin I used an older z-index (8), below the global site mark (10).
   Bring its open Book to the same overlay plane as the later Books so the
   landscape close action cannot be covered by the global mark. */
.garden1-book-layer {
  z-index: 12;
}

/* =========================================================
   VNEW.0.127.9.5 — MOBILE ACCESSIBILITY STRESS FIX
   Large-text / very narrow mobile hardening only.
   ========================================================= */

/* At 320–380 CSS px, especially with OS/browser text enlarged, the two-column
   Library row can clip the trailing action label. Stack it instead of shrinking
   the typography or widening the Book. */
@media (pointer: coarse) and (max-width: 380px) {
  .book-library__item {
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
    gap: .32rem;
  }

  .book-library__item > span:first-child,
  .book-library__action {
    min-width: 0;
    max-width: 100%;
  }

  .book-library__action {
    justify-self: start;
    white-space: normal;
    overflow-wrap: anywhere;
    text-align: left;
  }
}

/* Keep the sticky Journey header fully opaque on touch/mobile so enlarged text
   never reveals scrolled cards behind the title area. */
@media (pointer: coarse), (max-width: 560px) {
  .journey-hub__head {
    background: rgb(18, 18, 14);
  }
}

/* =========================================================
   VNEW.0.127.9.6.1 — MOBILE VIEWPORT ZERO-SCROLL FIX
   Unifies the mobile shell around the dynamic visual viewport.
   Layout-only: no image, object-position or loci geometry change.
   ========================================================= */

:root {
  --aom-viewport-height: 100vh;
}

@supports (height: 100dvh) {
  :root {
    --aom-viewport-height: 100dvh;
  }
}

@media (max-width: 900px), (pointer: coarse) {
  /* Android browser chrome can make legacy 100vh a few pixels taller than the
     visible viewport. The page itself therefore becomes a fixed viewport shell;
     scenes/panels that genuinely need scrolling own that scroll internally. */
  html,
  body {
    width: 100%;
    height: var(--aom-viewport-height);
    min-height: var(--aom-viewport-height);
    overflow: hidden;
    overscroll-behavior: none;
  }

  .app-shell,
  .scene-stage,
  .world-frame,
  .world-content {
    width: 100%;
    height: 100%;
    min-height: 0;
  }

  .app-shell,
  .scene-stage,
  .world-frame,
  .world-content {
    overflow: hidden;
  }

  /* Full-screen scene roots inherit the shell's exact dynamic height instead
     of independently asking for 100vh / 100svh / 100dvh. */
  .portal-scene--migrated,
  .domain-explorer-scene,
  .garden1-scene,
  .orangery-scene,
  .garden2-scene,
  .recall-curve-entry-scene,
  .palace-passage-scene,
  .palace-antechamber-scene,
  .palace-grand-hall-scene,
  .palace-routes-gallery-scene,
  .palace-zones-scene,
  .palace-personal-scene,
  .palaces-quarter-scene {
    height: 100%;
    min-height: 100%;
  }

  .garden1-stage,
  .orangery-stage,
  .garden2-stage,
  .recall-curve-entry-stage {
    height: 100%;
    min-height: 100%;
  }

  /* These rooms can legitimately contain more text than a short viewport.
     Keep the document locked while moving that overflow to the room itself. */
  .palace-grand-hall-scene,
  .palace-routes-gallery-scene,
  .palace-zones-scene,
  .palace-personal-scene,
  .palaces-quarter-scene {
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  /* Existing inner-scroll rooms keep their current behaviour but use the shell
     height as the single source of truth. */
  .palace-passage-scene,
  .palace-antechamber-scene {
    height: 100%;
    min-height: 100%;
  }

  .palace-passage-card,
  .palace-threshold-card {
    min-height: 100%;
  }

  .portal-entry {
    max-height: calc(var(--aom-viewport-height) - 7rem);
  }

  .recall-curve-entry-card {
    max-height: calc(var(--aom-viewport-height) - 9rem);
  }

  .palace-personal-panel {
    max-height: calc(var(--aom-viewport-height) - 1rem);
  }

  /* Visit mode adds a banner as a sibling of the world frame. Turn the app
     shell into two rows so the banner no longer adds document height. */
  .app-shell:has(> .safe-visit-banner) {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    align-content: stretch;
    overflow: hidden;
  }

  .app-shell:has(> .safe-visit-banner) > .safe-visit-banner {
    margin-top: max(.35rem, env(safe-area-inset-top));
    margin-bottom: .25rem;
  }

  .app-shell:has(> .safe-visit-banner) > .world-frame {
    min-height: 0;
    height: 100%;
  }

  .world-frame.is-safe-visit .domain-explorer-scene {
    padding-top: 1rem;
  }

  .world-frame.is-safe-visit .domain-explorer-card {
    max-height: calc(100% - 1rem);
  }
}

/* Low-height landscape: keep overflow inside the room rather than on the
   document, and give the Grand Hall eyebrow a little more breathing room. */
@media (pointer: coarse) and (orientation: landscape) and (max-height: 500px) {
  .domain-explorer-scene,
  .palace-grand-hall-scene,
  .palaces-quarter-scene {
    height: 100%;
    min-height: 100%;
  }

  .domain-explorer-card,
  .palace-grand-hall-card,
  .palaces-quarter-card {
    max-height: calc(100% - .75rem);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  .palace-grand-hall-card {
    margin-top: 2.15rem;
    margin-bottom: .55rem;
  }
}

@media (pointer: coarse) and (max-width: 430px) {
  .palace-grand-hall-card {
    margin-top: 2.55rem;
  }
}

/* VNEW.0.127.9.6.1 · landscape fit refinement: account for card margins so
   the room itself stays fixed while the card owns any necessary scrolling. */
@media (pointer: coarse) and (orientation: landscape) and (max-height: 500px) {
  .palace-grand-hall-card {
    max-height: calc(100% - 3.15rem);
  }

  .palaces-quarter-card {
    min-height: 0;
    max-height: calc(100% - .75rem);
    margin-block: .375rem;
  }
}


/* ============================================================
   VNEW.0.128.1.4 — B2 · GALERIE DES ROUTES · MASTER FINAL
   Visual integration only. Existing exercises/state/IDs unchanged.
   ============================================================ */
.palace-routes-gallery-scene {
  background: #15130f;
}

.palace-routes-gallery-scene__architecture {
  z-index: 0;
  pointer-events: none;
}

.palace-routes-gallery-scene__media,
.palace-routes-gallery-scene__media > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.palace-routes-gallery-scene__media {
  display: block;
  z-index: 0;
  overflow: hidden;
}

.palace-routes-gallery-scene__media > img {
  display: block;
  object-fit: cover;
  object-position: center center;
}

.palace-routes-gallery-scene__visual-veil {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(90deg, rgba(8, 8, 6, .66) 0%, rgba(8, 8, 6, .30) 31%, rgba(8, 8, 6, .04) 49%, rgba(8, 8, 6, .06) 69%, rgba(8, 8, 6, .28) 100%),
    linear-gradient(180deg, rgba(8, 8, 6, .20) 0%, transparent 34%, rgba(8, 8, 6, .13) 100%);
}

.palace-routes-gallery-scene__vault,
.palace-routes-gallery-scene__path {
  display: none;
}

.palace-routes-gallery-scene__markers {
  z-index: 2;
  opacity: .54;
  bottom: 7.5%;
  left: 33%;
  right: 33%;
  gap: .32rem;
}

.palace-routes-gallery-scene__markers i {
  height: calc(23px + var(--n) * 2px);
  border-left-color: rgba(239, 210, 144, .20);
}

.palace-routes-gallery-scene__markers span {
  width: 26px;
  height: 26px;
  border-color: rgba(235, 205, 134, .44);
  background: rgba(13, 12, 9, .70);
  box-shadow: 0 5px 18px rgba(0, 0, 0, .20);
}

.palace-routes-gallery-card {
  position: relative;
  z-index: 3;
  width: min(520px, 30vw);
  max-height: calc(100% - clamp(8rem, 18vh, 11rem));
  margin: clamp(6.8rem, 13vh, 8.8rem) auto 1.5rem clamp(1.3rem, 4.8vw, 5.7rem);
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  border-color: rgba(224, 195, 127, .34);
  background: linear-gradient(180deg, rgba(19, 18, 14, .82), rgba(10, 10, 8, .88));
  box-shadow: 0 22px 78px rgba(0, 0, 0, .38);
  backdrop-filter: blur(9px) saturate(.92);
}

.palace-routes-gallery-layer {
  z-index: 110;
}

/* Preserve the master’s central mnemonic silhouette on mobile:
   background stays centered; the functional card becomes the scrollable UI. */
@media (max-width: 900px), (pointer: coarse) {
  .palace-routes-gallery-scene__media > img {
    object-position: center center;
  }

  .palace-routes-gallery-scene__visual-veil {
    background:
      linear-gradient(180deg, rgba(7, 7, 5, .12) 0 24%, rgba(7, 7, 5, .24) 45%, rgba(7, 7, 5, .68) 100%);
  }

  .palace-routes-gallery-card {
    width: calc(100% - 1rem);
    max-height: 62%;
    margin: 30vh auto max(.5rem, env(safe-area-inset-bottom));
    padding: 1rem;
    background: linear-gradient(180deg, rgba(18, 17, 13, .87), rgba(9, 9, 7, .94));
  }

  .palace-routes-gallery-scene__markers {
    left: 34%;
    right: 34%;
    bottom: 3.5%;
    opacity: .42;
  }

  .palace-routes-gallery-scene__markers span {
    width: 22px;
    height: 22px;
    font-size: .58rem;
  }
}

@media (pointer: coarse) and (orientation: landscape) and (max-height: 500px) {
  .palace-routes-gallery-card {
    width: min(520px, 56vw);
    max-height: calc(100% - 1rem);
    margin: .5rem auto .5rem max(.5rem, env(safe-area-inset-left));
  }

  .palace-routes-gallery-scene__markers {
    left: 38%;
    right: 22%;
    bottom: 2%;
  }
}


/* ============================================================
   VNEW.0.128.2.4 — B2 · CARTOTHÈQUE DES ZONES · MASTER FINAL
   Visual integration only. Existing zones exercises/state/IDs unchanged.
   ============================================================ */
.palace-zones-scene { background:#15130f; }
.palace-zones-scene__architecture { z-index:0; pointer-events:none; }
.palace-zones-scene__media,
.palace-zones-scene__media > img { position:absolute; inset:0; width:100%; height:100%; }
.palace-zones-scene__media { display:block; z-index:0; overflow:hidden; }
.palace-zones-scene__media > img { display:block; object-fit:cover; object-position:center center; }
.palace-zones-scene__visual-veil { position:absolute; inset:0; z-index:1; background:linear-gradient(90deg,rgba(8,8,6,.68) 0%,rgba(8,8,6,.27) 29%,rgba(8,8,6,.02) 48%,rgba(8,8,6,.06) 70%,rgba(8,8,6,.31) 100%),linear-gradient(180deg,rgba(8,8,6,.18),transparent 38%,rgba(8,8,6,.12)); }
.palace-zones-scene__vault,.palace-zones-scene__cabinet,.palace-zones-scene__table,.palace-zones-scene__map-lines { display:none; }
.palace-zones-card { position:relative; z-index:3; width:min(540px,31vw); max-height:calc(100% - clamp(8rem,18vh,11rem)); margin:clamp(6.5rem,12vh,8.6rem) auto 1.5rem clamp(1.2rem,4.4vw,5.2rem); overflow:auto; overscroll-behavior:contain; scrollbar-width:thin; background:linear-gradient(180deg,rgba(20,19,15,.83),rgba(10,10,8,.90)); border-color:rgba(224,195,127,.34); box-shadow:0 22px 78px rgba(0,0,0,.38); backdrop-filter:blur(9px) saturate(.92); }
.palace-zones-layer { z-index:110; }
@media (max-width:900px), (pointer:coarse) {
  .palace-zones-scene__media > img { object-position:center center; }
  .palace-zones-scene__visual-veil { background:linear-gradient(180deg,rgba(7,7,5,.09) 0 27%,rgba(7,7,5,.18) 43%,rgba(7,7,5,.70) 100%); }
  .palace-zones-card { width:calc(100% - 1rem); max-height:60%; margin:32vh auto max(.5rem,env(safe-area-inset-bottom)); padding:1rem; background:linear-gradient(180deg,rgba(18,17,13,.88),rgba(9,9,7,.95)); }
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:500px) {
  .palace-zones-card { width:min(540px,58vw); max-height:calc(100% - 1rem); margin:.5rem auto .5rem max(.5rem,env(safe-area-inset-left)); }
}


/* ============================================================
   VNEW.0.128.3.5 — B2 · ATELIER DU PALAIS PERSONNEL · MASTER FINAL
   Visual integration only. Existing exercises/state/IDs remain unchanged.
   ============================================================ */
.palace-personal-scene {
  box-sizing: border-box;
  background: #17140f;
}

.palace-personal-scene__architecture {
  z-index: 0;
  opacity: 1;
  pointer-events: none;
}

.palace-personal-scene__media,
.palace-personal-scene__media > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.palace-personal-scene__media {
  display: block;
  z-index: 0;
  overflow: hidden;
}

.palace-personal-scene__media > img {
  display: block;
  object-fit: cover;
  object-position: center center;
}

.palace-personal-scene__arch,
.palace-personal-scene__table,
.palace-personal-scene__plans,
.palace-personal-scene__light {
  display: none;
}

.palace-personal-scene__veil {
  z-index: 1;
  background:
    linear-gradient(90deg,
      rgba(8, 8, 6, .64) 0%,
      rgba(8, 8, 6, .26) 28%,
      rgba(8, 8, 6, .02) 43%,
      rgba(8, 8, 6, .02) 64%,
      rgba(8, 8, 6, .22) 75%,
      rgba(8, 8, 6, .48) 100%),
    linear-gradient(180deg,
      rgba(8, 8, 6, .15) 0%,
      rgba(8, 8, 6, .02) 31%,
      rgba(8, 8, 6, .12) 100%);
}

.palace-personal-card {
  z-index: 3;
  width: min(545px, 31vw);
  max-height: calc(100% - clamp(7.5rem, 17vh, 10.5rem));
  margin: clamp(6.2rem, 11.5vh, 8.2rem) auto 1.25rem clamp(1.1rem, 4.2vw, 5rem);
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  padding: clamp(1.1rem, 2vw, 1.65rem);
  border-color: rgba(220, 191, 126, .31);
  background: linear-gradient(180deg, rgba(20, 19, 15, .83), rgba(10, 10, 8, .91));
  box-shadow: 0 24px 82px rgba(0,0,0,.38);
  backdrop-filter: blur(9px) saturate(.92);
}

.palace-personal-layer {
  z-index: 115;
}

@media (max-width: 900px), (pointer: coarse) {
  .palace-personal-scene__media > img {
    object-position: center center;
  }

  .palace-personal-scene__veil {
    background:
      linear-gradient(180deg,
        rgba(7,7,5,.08) 0 27%,
        rgba(7,7,5,.12) 40%,
        rgba(7,7,5,.74) 100%);
  }

  .palace-personal-card {
    width: calc(100% - 1rem);
    max-height: 44%;
    margin: 0 auto auto;
    padding: 1rem;
    border-radius: 16px;
    background: linear-gradient(180deg, rgba(18,17,13,.88), rgba(9,9,7,.96));
  }
}

@media (pointer: coarse) and (orientation: landscape) and (max-height: 500px) {
  .palace-personal-card {
    width: min(545px, 58vw);
    max-height: calc(100% - 1rem);
    margin: .5rem auto .5rem max(.5rem, env(safe-area-inset-left));
  }

  .palace-personal-scene__veil {
    background:
      linear-gradient(90deg, rgba(7,7,5,.72) 0 60%, rgba(7,7,5,.10) 79%, transparent 100%);
  }
}

/* Low-height desktop / ultrawide: keep the scene itself fullscreen and move
   any extra content into the Atelier card instead of the document. */
@media (min-width: 901px) and (max-height: 700px) {
  .palace-personal-scene {
    height: 100dvh;
    min-height: 100dvh;
    overflow: hidden;
  }

  .palace-personal-card {
    max-height: calc(100% - 5.5rem);
    margin: 4.75rem auto .5rem clamp(1.1rem, 3vw, 3rem);
  }
}

/* ============================================================
   VNEW.0.129.1 — PALAIS PERSONNEL · SQUELETTE CONSTRUIRE / EXPLORER
   One room · 3–7 loci · responsive master-anchored coordinates.
   ============================================================ */
.personal-palace-prototype-home {
  margin: 1.15rem 0 1.35rem;
  padding: 1rem;
  border: 1px solid rgba(224, 193, 128, .28);
  border-radius: 16px;
  background: linear-gradient(180deg, rgba(178, 139, 69, .10), rgba(255, 255, 255, .018));
  box-shadow: inset 0 1px rgba(255,255,255,.025);
}

.personal-palace-prototype-home__head > span,
.personal-palace-prototype-home__facts span,
.personal-palace-prototype-inspector label > span,
.personal-palace-prototype-inspector__persistence > span,
.personal-palace-prototype-toolbar__title > span,
.personal-palace-prototype-explorebar span {
  display: block;
  color: rgba(231, 207, 157, .62);
  font-size: .62rem;
  letter-spacing: .11em;
}

.personal-palace-prototype-home__head > strong {
  display: block;
  margin: .32rem 0 .42rem;
  color: rgba(250, 232, 190, .97);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.08rem;
  font-weight: 500;
  letter-spacing: .035em;
}

.personal-palace-prototype-home__head > p {
  margin: 0;
  color: rgba(239, 230, 209, .68);
  font-size: .78rem;
  line-height: 1.55;
}

.personal-palace-prototype-home__facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem;
  margin-top: .85rem;
}

.personal-palace-prototype-home__facts article {
  min-width: 0;
  padding: .62rem .68rem;
  border: 1px solid rgba(222, 193, 132, .12);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
}

.personal-palace-prototype-home__facts strong,
.personal-palace-prototype-home__facts small { display: block; }
.personal-palace-prototype-home__facts strong {
  margin: .2rem 0 .08rem;
  color: rgba(247, 229, 188, .92);
  font-size: .92rem;
}
.personal-palace-prototype-home__facts small {
  color: rgba(235, 224, 200, .50);
  font-size: .62rem;
}

.personal-palace-prototype-home__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  margin-top: .8rem;
}

.personal-palace-prototype-home__status {
  display: block;
  margin-top: .65rem;
  color: rgba(210, 203, 185, .58);
  font-size: .66rem;
  line-height: 1.45;
}

.personal-palace-prototype-layer {
  position: absolute;
  z-index: 120;
  inset: 0;
  overflow: hidden;
  color: #f0e7d2;
  isolation: isolate;
}
.personal-palace-prototype-layer[hidden] { display: none; }

.is-personal-palace-prototype-open > .palace-personal-scene__veil {
  background:
    linear-gradient(180deg, rgba(8,8,6,.20) 0%, rgba(8,8,6,.02) 28%, rgba(8,8,6,.03) 72%, rgba(8,8,6,.32) 100%);
}

.personal-palace-prototype-stage {
  position: absolute;
  inset: 0;
  overflow: hidden;
  touch-action: manipulation;
  cursor: crosshair;
}

.personal-palace-prototype-layer[data-mode="explore"] .personal-palace-prototype-stage {
  cursor: default;
}

.personal-palace-prototype-markers {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.personal-palace-prototype-marker {
  position: absolute;
  z-index: 4;
  width: 46px;
  height: 46px;
  transform: translate(-50%, -50%);
  padding: 0;
  border: 1px solid rgba(238, 204, 128, .72);
  border-radius: 999px;
  background: radial-gradient(circle, rgba(28, 23, 14, .92) 0 42%, rgba(132, 97, 40, .54) 44% 66%, rgba(17,15,11,.82) 68% 100%);
  color: rgba(255, 237, 190, .98);
  box-shadow: 0 8px 28px rgba(0,0,0,.36), 0 0 0 5px rgba(221, 180, 91, .06);
  font: inherit;
  pointer-events: auto;
  cursor: pointer;
  transition: transform 140ms ease, border-color 140ms ease, box-shadow 140ms ease, background 140ms ease;
}

.personal-palace-prototype-marker:hover,
.personal-palace-prototype-marker:focus-visible,
.personal-palace-prototype-marker.is-selected {
  outline: none;
  border-color: rgba(255, 224, 151, .98);
  box-shadow: 0 8px 32px rgba(0,0,0,.42), 0 0 0 7px rgba(232, 190, 102, .15);
}
.personal-palace-prototype-marker.is-current {
  transform: translate(-50%, -50%) scale(1.14);
  border-color: rgba(255, 230, 166, 1);
  box-shadow: 0 9px 36px rgba(0,0,0,.42), 0 0 0 10px rgba(231, 190, 100, .18);
}
.personal-palace-prototype-marker.is-route-test-complete {
  border-color: rgba(174, 210, 143, .90);
  box-shadow: 0 8px 28px rgba(0,0,0,.36), 0 0 0 6px rgba(158, 197, 129, .13);
}

.personal-palace-prototype-marker__number {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .02em;
}
.personal-palace-prototype-marker__dot {
  position: absolute;
  width: 5px;
  height: 5px;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  border-radius: 999px;
  background: rgba(255, 233, 181, .94);
  opacity: 0;
}
.personal-palace-prototype-markers.is-route-test .personal-palace-prototype-marker__number { opacity: 0; }
.personal-palace-prototype-markers.is-route-test .personal-palace-prototype-marker__dot { opacity: 1; }
.personal-palace-prototype-marker.is-route-test-complete .personal-palace-prototype-marker__number { opacity: 1; }
.personal-palace-prototype-marker.is-route-test-complete .personal-palace-prototype-marker__dot { opacity: 0; }

.personal-palace-prototype-toolbar {
  position: absolute;
  z-index: 8;
  top: max(.65rem, env(safe-area-inset-top));
  left: max(.65rem, env(safe-area-inset-left));
  right: max(.65rem, env(safe-area-inset-right));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .8rem;
  padding: .66rem .75rem;
  border: 1px solid rgba(224, 195, 135, .24);
  border-radius: 15px;
  background: rgba(14, 14, 11, .82);
  box-shadow: 0 14px 46px rgba(0,0,0,.28);
  backdrop-filter: blur(12px) saturate(.9);
  cursor: default;
}

.personal-palace-prototype-toolbar__title strong,
.personal-palace-prototype-toolbar__title small { display: block; }
.personal-palace-prototype-toolbar__title strong {
  margin-top: .16rem;
  color: rgba(250, 232, 191, .98);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.02rem;
  font-weight: 500;
}
.personal-palace-prototype-toolbar__title small {
  margin-top: .08rem;
  color: rgba(235, 224, 200, .54);
  font-size: .63rem;
}
.personal-palace-prototype-toolbar__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: .38rem;
}

.personal-palace-prototype-layer button {
  appearance: none;
  min-height: 40px;
  border: 1px solid rgba(224, 197, 139, .24);
  border-radius: 999px;
  padding: .55rem .72rem;
  background: rgba(255,255,255,.035);
  color: rgba(245, 233, 207, .90);
  font: inherit;
  font-size: .64rem;
  letter-spacing: .07em;
  cursor: pointer;
}
.personal-palace-prototype-layer button:hover,
.personal-palace-prototype-layer button:focus-visible {
  outline: none;
  border-color: rgba(235, 205, 141, .62);
  background: rgba(218, 179, 102, .10);
}
.personal-palace-prototype-layer button:disabled { opacity: .36; cursor: default; }
.personal-palace-prototype-layer button.is-primary {
  border-color: rgba(232, 195, 116, .58);
  background: rgba(187, 141, 61, .17);
}
.personal-palace-prototype-layer button.is-danger-soft {
  border-color: rgba(207, 142, 124, .23);
  color: rgba(235, 202, 190, .76);
}

.personal-palace-prototype-inspector {
  position: absolute;
  z-index: 8;
  left: max(.7rem, env(safe-area-inset-left));
  bottom: max(.7rem, env(safe-area-inset-bottom));
  width: min(680px, calc(100% - 1.4rem));
  max-height: 25vh;
  overflow: auto;
  padding: .72rem;
  border: 1px solid rgba(224, 195, 135, .22);
  border-radius: 15px;
  background: rgba(13, 13, 10, .84);
  box-shadow: 0 14px 46px rgba(0,0,0,.30);
  backdrop-filter: blur(12px) saturate(.88);
  cursor: default;
  overscroll-behavior: contain;
}

.personal-palace-prototype-inspector__status {
  color: rgba(242, 232, 210, .76);
  font-size: .7rem;
  line-height: 1.45;
}
.personal-palace-prototype-inspector__status[data-kind="success"] { color: rgba(195, 225, 170, .86); }
.personal-palace-prototype-inspector__status[data-kind="warning"] { color: rgba(245, 205, 141, .88); }
.personal-palace-prototype-inspector__status[data-kind="action"],
.personal-palace-prototype-inspector__status[data-kind="test"] { color: rgba(238, 216, 169, .92); }

.personal-palace-prototype-inspector__selection {
  display: grid;
  grid-template-columns: minmax(150px, 1fr) auto;
  gap: .6rem;
  align-items: end;
  margin-top: .62rem;
  padding-top: .62rem;
  border-top: 1px solid rgba(224, 195, 135, .10);
}
.personal-palace-prototype-inspector__selection[hidden] { display: none; }
.personal-palace-prototype-inspector label { min-width: 0; }
.personal-palace-prototype-inspector input {
  box-sizing: border-box;
  width: 100%;
  min-height: 40px;
  margin-top: .28rem;
  border: 1px solid rgba(224, 197, 139, .20);
  border-radius: 10px;
  padding: .55rem .65rem;
  background: rgba(255,255,255,.035);
  color: rgba(250, 237, 208, .96);
  font: inherit;
  font-size: .76rem;
}
.personal-palace-prototype-inspector input:focus {
  outline: none;
  border-color: rgba(235, 205, 141, .58);
}
.personal-palace-prototype-inspector__buttons {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: .35rem;
}

.personal-palace-prototype-inspector__persistence {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .3rem .5rem;
  margin-top: .62rem;
  padding-top: .62rem;
  border-top: 1px solid rgba(224, 195, 135, .10);
}
.personal-palace-prototype-inspector__persistence strong {
  color: rgba(244, 226, 184, .86);
  font-size: .68rem;
  letter-spacing: .05em;
}
.personal-palace-prototype-inspector__persistence small {
  flex: 1 1 260px;
  color: rgba(230, 220, 198, .48);
  font-size: .62rem;
  line-height: 1.4;
}
.personal-palace-prototype-inspector__persistence button { margin-left: auto; }

.personal-palace-prototype-explorebar {
  position: absolute;
  z-index: 8;
  left: 50%;
  bottom: max(.7rem, env(safe-area-inset-bottom));
  transform: translateX(-50%);
  width: min(760px, calc(100% - 1.4rem));
  display: grid;
  grid-template-columns: auto minmax(130px, 1fr) auto auto auto;
  align-items: center;
  gap: .45rem;
  padding: .62rem;
  border: 1px solid rgba(224, 195, 135, .24);
  border-radius: 16px;
  background: rgba(13, 13, 10, .84);
  box-shadow: 0 14px 46px rgba(0,0,0,.30);
  backdrop-filter: blur(12px) saturate(.88);
  cursor: default;
}
.personal-palace-prototype-explorebar[hidden] { display: none; }
.personal-palace-prototype-explorebar > div {
  min-width: 0;
  text-align: center;
}
.personal-palace-prototype-explorebar strong {
  display: block;
  overflow: hidden;
  margin-top: .1rem;
  color: rgba(248, 231, 190, .96);
  font-family: Georgia, "Times New Roman", serif;
  font-size: .92rem;
  font-weight: 500;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 760px) {
  .personal-palace-prototype-home__facts { grid-template-columns: 1fr 1fr 1fr; }
  .personal-palace-prototype-home__actions > button { flex: 1 1 145px; }

  .personal-palace-prototype-toolbar {
    align-items: stretch;
    flex-direction: column;
    padding: .58rem;
  }
  .personal-palace-prototype-toolbar__title strong { font-size: .9rem; }
  .personal-palace-prototype-toolbar__actions {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .3rem;
  }
  .personal-palace-prototype-toolbar__actions button {
    min-height: 38px;
    padding: .45rem .32rem;
    font-size: .56rem;
    letter-spacing: .035em;
  }

  .personal-palace-prototype-marker {
    width: 48px;
    height: 48px;
  }

  .personal-palace-prototype-inspector {
    max-height: 27vh;
    padding: .6rem;
  }
  .personal-palace-prototype-inspector__selection { grid-template-columns: 1fr; }
  .personal-palace-prototype-inspector__buttons { justify-content: flex-start; }
  .personal-palace-prototype-inspector__buttons button { flex: 1 1 42%; }
  .personal-palace-prototype-inspector__persistence button { width: 100%; margin-left: 0; }

  .personal-palace-prototype-explorebar {
    grid-template-columns: 1fr 1.25fr 1fr;
    gap: .32rem;
  }
  .personal-palace-prototype-explorebar > button:nth-of-type(3),
  .personal-palace-prototype-explorebar > button:nth-of-type(4) {
    grid-row: 2;
  }
  .personal-palace-prototype-explorebar > button:nth-of-type(3) { grid-column: 1 / 3; }
  .personal-palace-prototype-explorebar > button:nth-of-type(4) { grid-column: 3; }
  .personal-palace-prototype-explorebar button { min-height: 42px; padding: .5rem .35rem; font-size: .57rem; }
}

@media (max-width: 380px) {
  .personal-palace-prototype-home__facts { grid-template-columns: 1fr; }
  .personal-palace-prototype-toolbar__actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .personal-palace-prototype-toolbar__title small { display: none; }
  .personal-palace-prototype-inspector { max-height: 29vh; }
}

@media (min-width: 901px) and (max-height: 700px) {
  .personal-palace-prototype-inspector {
    width: min(620px, 36vw);
  }
}

@media (orientation: landscape) and (max-height: 500px) {
  .personal-palace-prototype-toolbar {
    left: max(.45rem, env(safe-area-inset-left));
    right: auto;
    width: min(760px, calc(100% - 1rem));
    padding: .45rem .55rem;
  }
  .personal-palace-prototype-toolbar__title small { display: none; }
  .personal-palace-prototype-inspector {
    left: max(.5rem, env(safe-area-inset-left));
    right: auto;
    bottom: max(.5rem, env(safe-area-inset-bottom));
    width: min(300px, 34vw);
    max-height: 48vh;
  }
  .personal-palace-prototype-explorebar {
    width: min(720px, calc(100% - 1rem));
    bottom: max(.45rem, env(safe-area-inset-bottom));
  }
}

@media (prefers-reduced-motion: reduce) {
  .personal-palace-prototype-marker { transition: none; }
}

html.is-personal-palace-builder-active,
html.is-personal-palace-builder-active body {
  overflow: hidden;
  overscroll-behavior: none;
}

.personal-palace-prototype-layer[data-mode="explore"] .personal-palace-prototype-toolbar {
  right: auto;
  width: min(360px, calc(100% - 1.3rem));
}
.personal-palace-prototype-layer[data-mode="explore"] .personal-palace-prototype-toolbar__actions {
  display: none;
}
.personal-palace-prototype-layer[data-mode="explore"] .personal-palace-prototype-marker:not(.is-current) {
  border-color: rgba(230, 203, 145, .38);
  background: rgba(23, 20, 14, .30);
  box-shadow: none;
}


/* ============================================================
   VNEW.0.129.1.2 — PC PALACE ZERO-DOCUMENT-SCROLL
   Physical PC regression fix reported in Cartothèque des Zones.
   Scope: B2 rooms only. No image, state, exercise or loci change.

   Contract:
   - the room owns exactly one visual viewport on desktop;
   - long pedagogical content scrolls INSIDE its card;
   - the master image / mnemonic address never moves with document scroll.
   ============================================================ */
@media (min-width: 901px) {
  .palace-routes-gallery-scene,
  .palace-zones-scene,
  .palace-personal-scene {
    height: var(--aom-viewport-height);
    min-height: var(--aom-viewport-height);
    max-height: var(--aom-viewport-height);
    overflow: hidden;
  }

  /* These three cards already own overflow:auto.
     Once the parent has a definite height, their existing %-based
     max-height becomes a real viewport constraint instead of allowing
     the whole document to grow. */
  .palace-routes-gallery-card,
  .palace-zones-card,
  .palace-personal-card {
    min-height: 0;
  }
}


/* ============================================================
   VNEW.0.130.3 — PLAN DU DOMAINE · RESPONSIVE + HOTSPOTS
   Exact clean master. Mobile contract: NO_CROP_GEOMETRY.
   Overview = contain; exploration = controlled native pan.
   ============================================================ */
.domain-map-scene {
  position: relative;
  height: var(--aom-viewport-height);
  min-height: var(--aom-viewport-height);
  max-height: var(--aom-viewport-height);
  overflow: hidden;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  place-items: stretch;
  gap: .65rem;
  padding: clamp(5rem, 9vh, 6.4rem) clamp(.65rem, 2vw, 1.4rem) .75rem;
  background: #0e1110;
}
.domain-map-header,
.domain-map-footer {
  position: relative;
  z-index: 5;
  width: min(1600px, 100%);
  margin-inline: auto;
}
.domain-map-header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
  padding: .7rem .85rem;
  border: 1px solid rgba(222,190,119,.17);
  border-radius: 14px;
  background: rgba(14,16,13,.88);
  box-shadow: 0 12px 36px rgba(0,0,0,.24);
  backdrop-filter: blur(10px);
}
.domain-map-header h1 { margin: .15rem 0 .22rem; color: rgba(250,233,195,.97); font-size: clamp(1.25rem,2.4vw,2rem); font-weight: 500; }
.domain-map-header p:not(.eyebrow) { margin: 0; max-width: 720px; color: rgba(238,229,207,.64); font-size: .76rem; line-height: 1.45; }
.domain-map-header__actions { display: flex; gap: .45rem; flex: 0 0 auto; }
.domain-map-header__actions button,
.domain-map-exit {
  min-height: 38px;
  padding: .55rem .75rem;
  border: 1px solid rgba(222,190,119,.23);
  border-radius: 10px;
  background: rgba(222,190,119,.055);
  color: rgba(246,229,194,.88);
  font-size: .61rem;
  letter-spacing: .075em;
}
.domain-map-zoom { min-width: 38px; padding-inline: .5rem !important; font-size: .95rem !important; }
.domain-map-zoom-label { align-self: center; min-width: 42px; color: rgba(245,228,194,.70); font-size: .58rem; text-align: center; }
.domain-map-zoom:disabled { opacity: .35; cursor: default; }

.domain-map-shell {
  position: relative;
  min-height: 0;
  width: min(1600px, 100%);
  margin-inline: auto;
  overflow: hidden;
  border: 1px solid rgba(221,188,115,.23);
  border-radius: 17px;
  background: #0a0d0d;
  box-shadow: 0 22px 65px rgba(0,0,0,.34);
}
.domain-map-viewport {
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow: hidden;
  display: grid;
  container-type: size;
  place-items: center;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(221,188,115,.35) transparent;
}
.domain-map-canvas {
  position: relative;
  width: min(100%, calc(100cqh * 16 / 9));
  max-width: 1600px;
  aspect-ratio: 16 / 9;
  flex: 0 0 auto;
}
.domain-map-picture,
.domain-map-picture > img,
.domain-map-overlay { position: absolute; inset: 0; width: 100%; height: 100%; }
.domain-map-picture { display: block; }
.domain-map-picture > img { display: block; object-fit: contain; object-position: center; }
.domain-map-overlay { pointer-events: none; }
.domain-map-hotspot {
  position: absolute;
  z-index: 4;
  left: calc(var(--map-x) * 100%);
  top: calc(var(--map-y) * 100%);
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  gap: .42rem;
  max-width: 190px;
  min-width: 0;
  padding: .28rem .38rem;
  border: 0;
  border-radius: 999px;
  background: rgba(10,12,10,.82);
  box-shadow: 0 5px 18px rgba(0,0,0,.34);
  color: #f4e4bf;
  pointer-events: auto;
  cursor: pointer;
  text-align: left;
  backdrop-filter: blur(7px);
}
.domain-map-hotspot:hover,
.domain-map-hotspot:focus-visible { z-index: 8; outline: 2px solid rgba(255,225,158,.9); outline-offset: 3px; }
.domain-map-hotspot__dot {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  border: 2px solid rgba(255,239,199,.88);
  border-radius: 50%;
  background: rgba(185,160,106,.35);
  box-shadow: 0 0 0 4px rgba(20,18,13,.42);
}
.domain-map-hotspot.is-current .domain-map-hotspot__dot { background: #d9a941; box-shadow: 0 0 0 5px rgba(217,169,65,.22),0 0 18px rgba(217,169,65,.45); }
.domain-map-hotspot.is-discovered .domain-map-hotspot__dot { background: #789864; }
.domain-map-hotspot.is-future .domain-map-hotspot__dot { background: #7b766b; opacity: .8; }
.domain-map-hotspot__label { display: grid; min-width: 0; }
.domain-map-hotspot__label small { color: rgba(226,196,130,.68); font-size: .48rem; line-height: 1.1; letter-spacing: .08em; white-space: nowrap; }
.domain-map-hotspot__label strong { color: rgba(250,235,201,.96); font-size: .63rem; line-height: 1.18; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.domain-map-hotspot__label em { color: rgba(236,229,211,.58); font-size: .47rem; line-height: 1.15; font-style: normal; letter-spacing: .06em; }
.domain-map-sector {
  position: absolute;
  z-index: 2;
  padding: .28rem .55rem;
  border: 1px solid rgba(242,222,177,.22);
  border-radius: 8px;
  background: rgba(15,16,13,.60);
  color: rgba(249,230,188,.76);
  font-size: .54rem;
  letter-spacing: .12em;
  backdrop-filter: blur(5px);
}
.domain-map-sector--gardens { left: 15%; top: 24%; }
.domain-map-sector--threshold { left: 40%; top: 37%; }
.domain-map-sector--palace { left: 55%; top: 13%; }
.domain-map-sector--quarter { right: 5%; top: 23%; }
.domain-map-footer {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: .8rem;
  padding: .55rem .7rem;
  border: 1px solid rgba(222,190,119,.14);
  border-radius: 13px;
  background: rgba(14,16,13,.88);
}
.domain-map-legend { display: flex; flex-wrap: wrap; gap: .5rem .75rem; }
.domain-map-legend span { display: flex; align-items: center; gap: .28rem; color: rgba(236,226,205,.64); font-size: .55rem; letter-spacing: .055em; }
.domain-map-legend i { width: 9px; height: 9px; border: 1px solid rgba(255,239,199,.68); border-radius: 50%; }
.domain-map-legend i.is-current { background: #d9a941; }
.domain-map-legend i.is-discovered { background: #789864; }
.domain-map-legend i.is-future { background: #7b766b; }
.domain-map-current { min-width: 0; text-align: center; }
.domain-map-current span,.domain-map-current strong,.domain-map-current small { display: block; }
.domain-map-current span { color: rgba(216,184,113,.58); font-size: .49rem; letter-spacing: .11em; }
.domain-map-current strong { margin: .12rem 0; color: rgba(249,232,195,.92); font-size: .7rem; }
.domain-map-current small { color: rgba(235,226,206,.53); font-size: .55rem; }
.domain-map-shell[data-mode="pan"] .domain-map-viewport {
  overflow: auto;
  display: block;
  touch-action: pan-x pan-y;
  cursor: grab;
}
.domain-map-shell[data-mode="pan"] .domain-map-viewport:active { cursor: grabbing; }
.domain-map-shell[data-mode="pan"] .domain-map-canvas { max-width: none; height: auto; }
.domain-map-shell[data-mode="pan"] .domain-map-picture > img { object-fit: fill; }

@media (min-width: 761px) {
  .domain-map-header__actions [data-map-pan] { display: none; }
  .domain-map-hotspot.is-featured { border: 1px solid rgba(225,187,102,.30); }
}

@media (max-width: 760px) {
  .domain-map-scene {
    gap: .45rem;
    padding: 8.7rem .42rem max(.42rem,env(safe-area-inset-bottom));
  }
  .domain-map-header { align-items: stretch; flex-direction: column; gap: .55rem; padding: .68rem .72rem; }
  .domain-map-header h1 { font-size: 1.28rem; }
  .domain-map-header p:not(.eyebrow) { font-size: .68rem; line-height: 1.38; }
  .domain-map-header__actions { width: 100%; }
  .domain-map-header__actions button { flex: 1; }
  .domain-map-shell { border-radius: 13px; }
  .domain-map-viewport { overflow: hidden; }
  .domain-map-canvas { width: min(100%, calc(100cqh * 16 / 9)); max-width: none; }
  .domain-map-hotspot { padding: 0; background: transparent; box-shadow: none; backdrop-filter: none; }
  .domain-map-hotspot__dot { width: 22px; height: 22px; flex-basis: 22px; box-shadow: 0 0 0 4px rgba(10,12,10,.65); }
  .domain-map-hotspot__label,
  .domain-map-sector { display: none; }
  .domain-map-shell[data-mode="pan"] .domain-map-hotspot { padding: .3rem .38rem; background: rgba(10,12,10,.88); box-shadow: 0 5px 18px rgba(0,0,0,.36); backdrop-filter: blur(7px); }
  .domain-map-shell[data-mode="pan"] .domain-map-hotspot__label { display: grid; }
  .domain-map-shell[data-mode="pan"] .domain-map-sector { display: block; }
  .domain-map-footer { grid-template-columns: 1fr auto; gap: .45rem; padding: .5rem .55rem; }
  .domain-map-legend { grid-column: 1 / -1; justify-content: center; gap: .35rem .65rem; }
  .domain-map-current { text-align: left; }
  .domain-map-current small { display: none; }
  .domain-map-exit { min-height: 34px; padding: .45rem .58rem; }
}

@media (pointer: coarse) and (orientation: landscape) and (max-height: 500px) {
  .domain-map-scene { padding-top: .45rem; grid-template-rows: auto minmax(0,1fr); }
  .domain-map-header { position: absolute; z-index: 8; left: .45rem; top: 4.4rem; width: min(390px,46vw); background: rgba(12,14,11,.90); }
  .domain-map-header p:not(.eyebrow) { display: none; }
  .domain-map-footer { position: absolute; z-index: 8; right: .45rem; bottom: .45rem; width: min(440px,52vw); }
  .domain-map-shell { grid-row: 1 / -1; height: 100%; }
  .domain-map-header__actions [data-map-pan] { display: inline-flex; }
}


/* ============================================================
   VNEW.0.130.3.3 — PLAN DU DOMAINE · DUAL MASTER PC / MOBILE
   Desktop = exact horizontal master. Portrait mobile = exact vertical master.
   Same topology, dedicated hotspot coordinates per composition.
   ============================================================ */
.domain-map-scene::before {
  content: "";
  position: absolute;
  inset: -24px;
  z-index: 0;
  background: url("../assets/domain-map/v130383-pc/domain-map-pc-1536.webp") center / cover no-repeat;
  filter: blur(22px) saturate(.78) brightness(.42);
  transform: scale(1.045);
  opacity: .76;
  pointer-events: none;
}
.domain-map-scene::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background: radial-gradient(circle at 50% 48%, rgba(10,12,10,.02) 25%, rgba(8,10,9,.34) 76%, rgba(7,9,8,.70) 100%);
  pointer-events: none;
}
.domain-map-header, .domain-map-shell, .domain-map-footer { z-index: 2; }
.domain-map-header, .domain-map-footer, .domain-map-shell { width: min(1800px, 96vw); }
.domain-map-shell {
  border-color: rgba(230,201,137,.18);
  background: rgba(7,10,9,.34);
  box-shadow: 0 24px 84px rgba(0,0,0,.30);
}
.domain-map-hotspot {
  left: calc(var(--map-x-desktop) * 100%);
  top: calc(var(--map-y-desktop) * 100%);
}

@media (min-width: 761px) {
  .domain-map-scene { padding-inline: 1vw; }
  .domain-map-canvas { max-width: 1800px; }
}

@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene::before {
    background-image: url("../assets/domain-map/v13033-mobile/domain-map-mobile-720.webp");
    filter: blur(20px) saturate(.76) brightness(.40);
  }
  .domain-map-hotspot {
    left: calc(var(--map-x-mobile) * 100%);
    top: calc(var(--map-y-mobile) * 100%);
  }
  .domain-map-canvas {
    width: min(100%, calc(100cqh * 9 / 16));
    aspect-ratio: 9 / 16;
  }
  .domain-map-picture > img { object-fit: contain; }
  .domain-map-shell[data-mode="pan"] .domain-map-canvas { aspect-ratio: 9 / 16; }
  .domain-map-shell[data-mode="pan"] .domain-map-picture > img { object-fit: fill; }
  .domain-map-hotspot__dot {
    width: 24px;
    height: 24px;
    flex-basis: 24px;
  }
  .domain-map-shell[data-mode="overview"] .domain-map-hotspot.is-current .domain-map-hotspot__dot {
    box-shadow: 0 0 0 6px rgba(217,169,65,.20), 0 0 24px rgba(217,169,65,.55);
  }
}


/* ============================================================
   VNEW.0.130.3.4 — PLAN DU DOMAINE · IMMERSION FULL-BLEED PC / MOBILE
   Layout-only pass. Masters, hotspot coordinates, routes and state are unchanged.
   The sharp map stays contain/centered; every ratio remainder is filled by a
   blurred cover extension of the SAME active master, never a black gutter.
   ============================================================ */
.domain-map-scene {
  display: block;
  padding: 0;
  gap: 0;
  isolation: isolate;
  background: #0b0f0e;
}

/* Full viewport stage. Header/footer float ABOVE the map instead of consuming
   vertical rows and shrinking the sharp master. */
.domain-map-shell {
  position: absolute;
  inset: .35rem;
  z-index: 1;
  width: auto;
  height: auto;
  margin: 0;
  border: 0;
  border-radius: 20px;
  overflow: hidden;
  isolation: isolate;
  background: transparent;
  box-shadow: 0 26px 90px rgba(0,0,0,.28);
}

/* Important: this is the layer that removes the apparent black side bands.
   It is decorative only and uses the same desktop master as the sharp map. */
.domain-map-shell::before {
  content: "";
  position: absolute;
  inset: -28px;
  z-index: 0;
  background: url("../assets/domain-map/v130383-pc/domain-map-pc-1536.webp") center / cover no-repeat;
  filter: blur(24px) saturate(.86) brightness(.56);
  transform: scale(1.055);
  opacity: .98;
  pointer-events: none;
}
.domain-map-shell::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    linear-gradient(180deg, rgba(7,10,9,.10) 0%, rgba(7,10,9,.00) 24%, rgba(7,10,9,.02) 72%, rgba(7,10,9,.22) 100%),
    radial-gradient(circle at 50% 48%, rgba(255,255,255,.00) 36%, rgba(7,10,9,.16) 100%);
  pointer-events: none;
}

.domain-map-viewport {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  background: transparent;
}

/* The exact sharp master now uses the maximum possible stage HEIGHT.
   This makes it much larger than before while preserving every map address. */
.domain-map-canvas {
  width: auto;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 16 / 9;
}
.domain-map-picture > img {
  object-fit: contain;
  object-position: center center;
}

/* Floating, lighter web chrome. */
.domain-map-header {
  position: absolute;
  z-index: 10;
  top: .7rem;
  left: 50%;
  transform: translateX(-50%);
  width: min(1080px, calc(100% - 1.7rem));
  margin: 0;
  padding: .58rem .72rem;
  border-color: rgba(230,201,137,.25);
  background: rgba(11,13,11,.73);
  box-shadow: 0 12px 38px rgba(0,0,0,.25);
  backdrop-filter: blur(12px) saturate(.88);
}
.domain-map-header h1 {
  font-size: clamp(1.05rem, 1.8vw, 1.55rem);
}
.domain-map-header p:not(.eyebrow) {
  max-width: 640px;
  font-size: .69rem;
}

.domain-map-footer {
  position: absolute;
  z-index: 10;
  left: 50%;
  bottom: .7rem;
  transform: translateX(-50%);
  width: min(1120px, calc(100% - 1.7rem));
  margin: 0;
  padding: .42rem .58rem;
  border-color: rgba(230,201,137,.20);
  background: rgba(11,13,11,.72);
  box-shadow: 0 12px 38px rgba(0,0,0,.24);
  backdrop-filter: blur(12px) saturate(.88);
}

/* The old scene-wide blur remains useful behind the rounded full-bleed stage,
   but it is softened so the user perceives one continuous landscape. */
.domain-map-scene::before {
  filter: blur(26px) saturate(.86) brightness(.50);
  opacity: .92;
}
.domain-map-scene::after {
  background: radial-gradient(circle at 50% 48%, rgba(7,9,8,.00) 38%, rgba(7,9,8,.34) 100%);
}

@media (min-width: 761px) {
  .domain-map-scene {
    padding: 0;
  }
  .domain-map-shell {
    inset: .35rem;
  }
}

/* Portrait mobile: use the dedicated 9:16 master as the FULL visual stage.
   The shell background uses the SAME mobile master in cover mode, so the very
   narrow remainder at each side becomes landscape rather than a dark band. */
@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-shell {
    inset: .25rem;
    border-radius: 16px;
  }
  .domain-map-shell::before {
    background-image: url("../assets/domain-map/v13033-mobile/domain-map-mobile-720.webp");
    filter: blur(20px) saturate(.88) brightness(.56);
    transform: scale(1.06);
  }
  .domain-map-canvas {
    width: auto;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    aspect-ratio: 9 / 16;
  }

  .domain-map-header {
    top: .45rem;
    width: calc(100% - .8rem);
    padding: .52rem .58rem;
    gap: .42rem;
    background: rgba(10,12,10,.70);
  }
  .domain-map-header h1 {
    margin: .08rem 0;
    font-size: 1.05rem;
  }
  .domain-map-header p:not(.eyebrow) {
    display: none;
  }
  .domain-map-header .eyebrow {
    font-size: .62rem;
  }
  .domain-map-header__actions button {
    min-height: 34px;
    padding: .42rem .55rem;
  }

  /* The safe-visit banner already exposes QUITTER LA VISITE on mobile.
     Removing the second footer gives the map the remaining screen height. */
  .domain-map-footer {
    display: none;
  }

  .domain-map-hotspot__dot {
    width: 25px;
    height: 25px;
    flex-basis: 25px;
  }
}

/* Landscape touch devices retain the dedicated compact floating controls. */
@media (pointer: coarse) and (orientation: landscape) and (max-height: 500px) {
  .domain-map-shell {
    inset: .25rem;
  }
  .domain-map-header {
    left: .5rem;
    top: .5rem;
    transform: none;
    width: min(390px, 46vw);
  }
  .domain-map-footer {
    display: grid;
    left: auto;
    right: .5rem;
    bottom: .5rem;
    transform: none;
    width: min(440px, 52vw);
  }
}

/* ============================================================
   VNEW.0.130.3.5 — PLAN DU DOMAINE · CLEAN UI / IMMERSION MINIMALE
   UI-only pass. Masters, routes, state and hotspot coordinates are frozen.
   Rule: the Domaine is seen before the interface.
   ============================================================ */

/* The map is a full scene, not a web card. */
.domain-map-scene--clean {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  min-height: 100%;
  max-height: 100%;
  padding: 0 !important;
  overflow: hidden;
  background: #0b0f0e;
}

/* In safe visit the site mark is already unnecessary; this also protects the
   clean map if it is ever rendered outside the normal visit wrapper. */
.is-domain-map-frame .site-mark {
  display: none !important;
}

/* The compact map banner floats over the scene instead of consuming a layout row. */
.app-shell:has(> .safe-visit-banner.is-domain-map-visit) {
  display: block !important;
  width: 100%;
  height: var(--aom-viewport-height);
  overflow: hidden;
}
.app-shell:has(> .safe-visit-banner.is-domain-map-visit) > .world-frame {
  width: 100%;
  height: 100%;
  min-height: 0;
}
.safe-visit-banner.is-domain-map-visit {
  position: fixed;
  z-index: 1400;
  top: max(.55rem, env(safe-area-inset-top));
  right: max(.55rem, env(safe-area-inset-right));
  left: auto;
  width: auto;
  max-width: none;
  margin: 0;
  padding: .34rem .36rem .34rem .62rem;
  flex-direction: row;
  align-items: center;
  gap: .55rem;
  border-color: rgba(226,196,130,.20);
  border-radius: 999px;
  background: rgba(10,12,10,.67);
  box-shadow: 0 8px 28px rgba(0,0,0,.22);
  backdrop-filter: blur(12px) saturate(.86);
}
.safe-visit-banner.is-domain-map-visit strong {
  margin: 0;
  color: rgba(245,226,184,.83);
  font-size: .56rem;
  line-height: 1;
  letter-spacing: .14em;
  white-space: nowrap;
}
.safe-visit-banner.is-domain-map-visit .safe-visit-banner__actions {
  width: auto;
  gap: 0;
}
.safe-visit-banner.is-domain-map-visit button {
  min-height: 32px;
  padding: .38rem .58rem;
  border-radius: 999px;
  background: rgba(223,191,121,.07);
  font-size: .54rem;
  letter-spacing: .08em;
}

/* Full-bleed stage: no card inset, radius or shadow. Ratio remainder continues
   to use the existing same-master blurred cover layer from V0.130.3.4. */
.domain-map-scene--clean .domain-map-shell {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.domain-map-scene--clean .domain-map-viewport {
  width: 100%;
  height: 100%;
  overflow: hidden;
  display: grid;
  place-items: center;
  background: transparent;
}
.domain-map-scene--clean .domain-map-canvas {
  position: relative;
  width: auto;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 16 / 9;
}
.domain-map-scene--clean .domain-map-picture > img {
  object-fit: contain;
  object-position: center;
}

/* Hotspots become annotations rather than menu buttons. The 44px minimum
   hit-area remains, while the visible chrome is deliberately restrained. */
.domain-map-scene--clean .domain-map-hotspot {
  left: calc(var(--map-x-desktop) * 100%);
  top: calc(var(--map-y-desktop) * 100%);
  min-width: 44px;
  min-height: 44px;
  max-width: 165px;
  padding: .22rem .34rem;
  gap: .28rem;
  border: 0;
  border-radius: 999px;
  background: rgba(8,10,9,.58);
  box-shadow: 0 3px 13px rgba(0,0,0,.20);
  backdrop-filter: blur(5px) saturate(.82);
}
.domain-map-scene--clean .domain-map-hotspot.is-featured {
  border: 0;
}
.domain-map-scene--clean .domain-map-hotspot__dot {
  width: 14px;
  height: 14px;
  flex: 0 0 14px;
  border-width: 1px;
  box-shadow: 0 0 0 3px rgba(15,14,11,.38);
}
.domain-map-scene--clean .domain-map-hotspot__label {
  display: flex;
  align-items: baseline;
  gap: .28rem;
  min-width: 0;
}
.domain-map-scene--clean .domain-map-hotspot__label strong {
  max-width: 122px;
  color: rgba(249,235,204,.91);
  font-size: .58rem;
  line-height: 1.08;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-shadow: 0 1px 3px rgba(0,0,0,.7);
}
.domain-map-scene--clean .domain-map-hotspot__label em {
  color: rgba(245,201,103,.92);
  font-size: .43rem;
  line-height: 1;
  font-style: normal;
  letter-spacing: .10em;
  white-space: nowrap;
}
.domain-map-scene--clean .domain-map-hotspot:hover,
.domain-map-scene--clean .domain-map-hotspot:focus-visible {
  z-index: 12;
  background: rgba(8,10,9,.78);
  outline: 1px solid rgba(255,225,158,.78);
  outline-offset: 2px;
}

/* Dedicated mobile master. Labels remain visible but short; no separate zoom,
   legend, footer or sector labels are needed. */
@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-canvas {
    width: auto;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    aspect-ratio: 9 / 16;
  }
  .domain-map-scene--clean .domain-map-hotspot {
    left: calc(var(--map-x-mobile) * 100%);
    top: calc(var(--map-y-mobile) * 100%);
    min-width: 44px;
    min-height: 44px;
    max-width: 126px;
    padding: .18rem .28rem;
    gap: .22rem;
    background: rgba(8,10,9,.52);
  }
  .domain-map-scene--clean .domain-map-hotspot__dot {
    width: 16px;
    height: 16px;
    flex-basis: 16px;
  }
  .domain-map-scene--clean .domain-map-hotspot__label {
    display: flex;
  }
  .domain-map-scene--clean .domain-map-hotspot__label strong {
    max-width: 88px;
    font-size: .52rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label em {
    font-size: .40rem;
  }
  .safe-visit-banner.is-domain-map-visit {
    top: max(.4rem, env(safe-area-inset-top));
    right: max(.4rem, env(safe-area-inset-right));
    padding: .28rem .30rem .28rem .50rem;
    gap: .42rem;
  }
  .safe-visit-banner.is-domain-map-visit button {
    min-height: 34px;
    padding-inline: .52rem;
  }
}

/* Keep the clean contract in phone landscape as well. */
@media (pointer: coarse) and (orientation: landscape) and (max-height: 500px) {
  .domain-map-scene--clean .domain-map-shell {
    inset: 0;
  }
  .safe-visit-banner.is-domain-map-visit {
    top: max(.3rem, env(safe-area-inset-top));
    right: max(.3rem, env(safe-area-inset-right));
  }
}

/* ============================================================
   VNEW.0.130.3.6.1 — PLAN DU DOMAINE · PC HEIGHT FIX + CADRE PATINÉ
   Corrects the desktop-only collapse introduced when the clean map switched
   from an explicit viewport height to height:100% inside .world-content,
   whose height is only explicit in the mobile viewport hardening rules.
   Visual addition: a restrained, irregular cartographic edge. It is an
   annotation layer only: no crop, no topology or hotspot geometry change.
   ============================================================ */

/* Desktop-safe height chain. Keep the map independent from percentage-height
   ambiguity while preserving the exact dynamic viewport contract on mobile. */
.is-domain-map-frame {
  height: var(--aom-viewport-height);
  min-height: var(--aom-viewport-height);
  max-height: var(--aom-viewport-height);
}
.is-domain-map-frame .world-content {
  width: 100%;
  height: 100%;
  min-height: 0;
}
.is-domain-map-frame .domain-map-scene--clean {
  width: 100%;
  height: 100%;
  min-height: 0;
  max-height: 100%;
}

/* Discreet "old map" treatment: patinated rather than medieval parchment.
   The SVG is transparent and only draws imperfect, worn lines near the edge. */
.domain-map-scene--clean .domain-map-viewport::after {
  content: "";
  position: absolute;
  z-index: 20;
  inset: clamp(.45rem, .85vw, .9rem);
  pointer-events: none;
  background: url("../assets/domain-map/domain-map-frame-patina.svg") center / 100% 100% no-repeat;
  opacity: .72;
  filter: drop-shadow(0 1px 1px rgba(0,0,0,.28));
  box-shadow:
    inset 0 0 0 1px rgba(239,216,157,.055),
    inset 0 0 26px rgba(13,10,6,.11);
}

@media (max-width: 760px) and (orientation: portrait) {
  /* Mobile remains cleaner: the picture is already information-dense. */
  .domain-map-scene--clean .domain-map-viewport::after {
    inset: .34rem;
    opacity: .54;
    filter: none;
    box-shadow: inset 0 0 0 1px rgba(239,216,157,.04);
  }
}

@media (prefers-reduced-motion: reduce) {
  .domain-map-scene--clean .domain-map-viewport::after { filter: none; }
}


/* ============================================================
   VNEW.0.130.3.7.1 — DOMAINE EXPLORER · VIEILLE CARTE LÉGÈRE — SAFE PASS
   Recovery pass rebuilt strictly from the physically validated V0.130.3.6.1.
   No new DOM nodes, no new runtime assets, no image filter and no hotspot move.
   The aged-map feeling is produced only by lightweight CSS overlays while the
   already validated patinated SVG frame from V0.130.3.6.1 is reused unchanged.
   ============================================================ */

/* Warm atlas veil: deliberately faint and rendered above the scene image but
   below interactive hotspot annotations. It avoids large GPU image filters. */
.domain-map-scene--clean .domain-map-viewport::before {
  content: "";
  position: absolute;
  z-index: 2;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 51% 47%, rgba(255,248,228,0) 0 48%, rgba(222,191,123,.018) 70%, rgba(69,47,20,.065) 100%),
    linear-gradient(113deg, rgba(244,222,171,.030), rgba(255,250,235,0) 30% 72%, rgba(126,88,38,.030));
  box-shadow:
    inset 0 0 clamp(30px, 4vw, 70px) rgba(26,18,8,.095),
    inset 0 0 0 1px rgba(245,225,178,.028);
}

/* Refine the existing validated frame without adding another file. */
.domain-map-scene--clean .domain-map-viewport::after {
  opacity: .79;
  box-shadow:
    inset 0 0 0 1px rgba(239,216,157,.075),
    inset 0 0 0 3px rgba(81,58,26,.028),
    inset 0 0 30px rgba(13,10,6,.12);
}

/* Keep every hotspot above the warm atlas veil. */
.domain-map-scene--clean .domain-map-overlay {
  z-index: 5;
}

/* Mobile remains intentionally cleaner and brighter. */
@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-viewport::before {
    background:
      radial-gradient(ellipse at 50% 46%, rgba(255,248,228,0) 0 58%, rgba(219,185,112,.012) 78%, rgba(68,46,19,.040) 100%),
      linear-gradient(118deg, rgba(242,217,163,.015), rgba(255,250,235,0) 34% 78%, rgba(122,85,36,.016));
    box-shadow:
      inset 0 0 28px rgba(26,18,8,.060),
      inset 0 0 0 1px rgba(245,225,178,.018);
  }
  .domain-map-scene--clean .domain-map-viewport::after {
    opacity: .60;
    box-shadow: inset 0 0 0 1px rgba(239,216,157,.045);
  }
}

@media (pointer: coarse) and (orientation: landscape) and (max-height: 500px) {
  .domain-map-scene--clean .domain-map-viewport::before {
    opacity: .72;
  }
}

@media (prefers-reduced-motion: reduce) {
  .domain-map-scene--clean .domain-map-viewport::before,
  .domain-map-scene--clean .domain-map-viewport::after {
    filter: none;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4 — DOMAINE EXPLORER · INTÉGRATION MASTER CARTE PC
   Desktop-only master swap + hotspot recalibration.
   Source artwork: VNEW.0.130.3.8.3 validated provisional master (1774×887).
   Portrait mobile master, mobile hotspot coordinates, routes and state are frozen.
   ============================================================ */

/* The new PC artwork already contains its parchment edge, patina, sun and
   cartographic ornaments. Do not stack the previous synthetic frame/veil over it. */
.domain-map-scene--clean .domain-map-viewport::before,
.domain-map-scene--clean .domain-map-viewport::after {
  content: none;
}

/* Match the real source ratio exactly: no stretch, no crop, no geometry drift. */
.domain-map-scene--clean .domain-map-canvas {
  width: min(100%, calc(100cqh * 1774 / 887));
  height: auto;
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1774 / 887;
}

/* Ratio remainder on wide/tall screens is filled only with a softened copy of
   the SAME active PC master. The sharp parchment itself always stays contain. */
.domain-map-scene::before,
.domain-map-shell::before {
  background-image: url("../assets/domain-map/v130383-pc/domain-map-pc-1536.webp");
}
.domain-map-shell::before {
  filter: blur(26px) saturate(.70) brightness(.42);
}
.domain-map-scene::before {
  filter: blur(28px) saturate(.68) brightness(.38);
}

/* Portrait phone remains exactly on the previously validated dedicated master,
   including its lighter synthetic frame treatment and its existing coordinates. */
@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-canvas {
    width: auto;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    aspect-ratio: 9 / 16;
  }
  .domain-map-scene::before,
  .domain-map-shell::before {
    background-image: url("../assets/domain-map/v13033-mobile/domain-map-mobile-720.webp");
  }
  .domain-map-scene--clean .domain-map-viewport::before,
  .domain-map-scene--clean .domain-map-viewport::after {
    content: "";
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.1 — DOMAINE EXPLORER · MICRO-CALIBRATION HOTSPOTS PC + RESPIRATION UI
   UI-only refinement. The map artwork and hotspot topology stay frozen.
   Goal: no light-like hover on the map, softer cartographic markers and a
   lighter visit banner that feels placed on the parchment rather than above it.
   ============================================================ */

/* The map itself must remain visually stable on hover. Only the annotation
   reacts, and it does so by becoming slightly denser, never brighter. */
.domain-map-scene--clean .domain-map-hotspot {
  max-width: 160px;
  padding: .20rem .34rem;
  gap: .30rem;
  border: 1px solid rgba(218,188,130,.22);
  background: rgba(22,18,14,.52);
  box-shadow: 0 2px 10px rgba(0,0,0,.16);
  color: rgba(247,235,210,.90);
  backdrop-filter: blur(3px) saturate(.78);
  transition:
    background-color .16s ease,
    border-color .16s ease,
    box-shadow .16s ease,
    opacity .16s ease;
}
.domain-map-scene--clean .domain-map-hotspot__dot {
  width: 14px;
  height: 14px;
  flex: 0 0 14px;
  border: 1px solid rgba(248,235,201,.78);
  background: rgba(176,149,99,.28);
  box-shadow: 0 0 0 2px rgba(18,15,12,.24);
}
.domain-map-scene--clean .domain-map-hotspot.is-current .domain-map-hotspot__dot {
  background: #d3a446;
  box-shadow: 0 0 0 3px rgba(211,164,70,.14);
}
.domain-map-scene--clean .domain-map-hotspot.is-discovered .domain-map-hotspot__dot {
  background: #7a9466;
}
.domain-map-scene--clean .domain-map-hotspot.is-future .domain-map-hotspot__dot {
  background: #7b7469;
  opacity: .76;
}
.domain-map-scene--clean .domain-map-hotspot__label strong {
  color: rgba(247,236,212,.90);
}
.domain-map-scene--clean .domain-map-hotspot__label em {
  color: rgba(236,198,105,.78);
}
.domain-map-scene--clean .domain-map-hotspot:hover {
  z-index: 12;
  background: rgba(22,18,14,.62);
  border-color: rgba(218,188,130,.34);
  box-shadow: 0 4px 12px rgba(0,0,0,.18);
  outline: none;
}
.domain-map-scene--clean .domain-map-hotspot:focus-visible {
  z-index: 12;
  background: rgba(22,18,14,.64);
  border-color: rgba(236,205,142,.50);
  box-shadow: 0 4px 14px rgba(0,0,0,.20);
  outline: 1px solid rgba(236,205,142,.48);
  outline-offset: 2px;
}

/* Slightly quieter visit badge, with a bit more breathing room from the edge. */
.safe-visit-banner.is-domain-map-visit {
  top: max(.72rem, env(safe-area-inset-top));
  right: max(.72rem, env(safe-area-inset-right));
  padding: .30rem .34rem .30rem .56rem;
  gap: .48rem;
  border-color: rgba(226,196,130,.16);
  background: rgba(14,12,10,.52);
  box-shadow: 0 6px 18px rgba(0,0,0,.16);
  backdrop-filter: blur(10px) saturate(.82);
}
.safe-visit-banner.is-domain-map-visit strong {
  color: rgba(245,226,184,.76);
}
.safe-visit-banner.is-domain-map-visit button {
  min-height: 31px;
  padding: .36rem .56rem;
  border-color: rgba(223,191,121,.16);
  background: rgba(223,191,121,.045);
  color: rgba(243,226,191,.74);
  box-shadow: none;
}
.safe-visit-banner.is-domain-map-visit button:hover,
.safe-visit-banner.is-domain-map-visit button:focus-visible {
  background: rgba(223,191,121,.072);
  border-color: rgba(223,191,121,.24);
}

@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-hotspot {
    max-width: 120px;
    padding: .16rem .24rem;
    gap: .20rem;
    background: rgba(22,18,14,.48);
    border-color: rgba(218,188,130,.18);
  }
  .domain-map-scene--clean .domain-map-hotspot:hover,
  .domain-map-scene--clean .domain-map-hotspot:focus-visible {
    background: rgba(22,18,14,.56);
  }
  .safe-visit-banner.is-domain-map-visit {
    top: max(.48rem, env(safe-area-inset-top));
    right: max(.48rem, env(safe-area-inset-right));
    padding: .26rem .28rem .26rem .46rem;
    gap: .38rem;
  }
  .safe-visit-banner.is-domain-map-visit strong {
    color: rgba(245,226,184,.80);
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.2 — DOMAINE EXPLORER · REPÈRES CARTOGRAPHIQUES GRAVÉS
   Style-only refinement. Hotspots become quieter atlas annotations: less web-UI,
   more engraved cartographic markers, while preserving readability and hit area.
   ============================================================ */

/* Engraved cartouche markers for the clean map stage. */
.domain-map-scene--clean .domain-map-hotspot {
  position: absolute;
  max-width: 154px;
  min-height: 40px;
  padding: .18rem .32rem;
  gap: .28rem;
  border: 1px solid rgba(104, 77, 43, .52);
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(66, 50, 31, .22), rgba(22, 17, 12, .30));
  box-shadow:
    inset 0 0 0 1px rgba(233, 216, 177, .08),
    0 1px 5px rgba(0,0,0,.12);
  color: rgba(245, 235, 212, .88);
  backdrop-filter: blur(2px) saturate(.72);
}
.domain-map-scene--clean .domain-map-hotspot::after {
  content: "";
  position: absolute;
  inset: 2px;
  border: 1px solid rgba(227, 208, 165, .06);
  border-radius: 10px;
  pointer-events: none;
}
.domain-map-scene--clean .domain-map-hotspot__dot {
  width: 13px;
  height: 13px;
  flex: 0 0 13px;
  border: 1px solid rgba(246, 231, 194, .70);
  background: rgba(164, 140, 95, .22);
  box-shadow: 0 0 0 2px rgba(19, 15, 11, .18);
}
.domain-map-scene--clean .domain-map-hotspot.is-current .domain-map-hotspot__dot {
  background: rgba(209, 163, 67, .88);
  border-color: rgba(248, 228, 171, .84);
  box-shadow: 0 0 0 2px rgba(209, 163, 67, .16);
}
.domain-map-scene--clean .domain-map-hotspot.is-discovered .domain-map-hotspot__dot {
  background: rgba(120, 148, 102, .86);
  border-color: rgba(221, 232, 205, .72);
}
.domain-map-scene--clean .domain-map-hotspot.is-future .domain-map-hotspot__dot {
  background: rgba(118, 113, 104, .72);
  border-color: rgba(226, 216, 197, .52);
  opacity: .78;
}
.domain-map-scene--clean .domain-map-hotspot__label {
  gap: .20rem;
}
.domain-map-scene--clean .domain-map-hotspot__label strong {
  max-width: 116px;
  color: rgba(246, 236, 214, .88);
  font-size: .56rem;
  font-weight: 600;
  line-height: 1.06;
  letter-spacing: .015em;
  text-shadow: none;
}
.domain-map-scene--clean .domain-map-hotspot__label em {
  color: rgba(229, 192, 106, .70);
  font-size: .41rem;
  letter-spacing: .09em;
}

/* Hover should not read as a light effect on the map; the cartouche only gains
   a touch of density and sharper engraving. */
.domain-map-scene--clean .domain-map-hotspot:hover {
  z-index: 12;
  background:
    linear-gradient(180deg, rgba(68, 52, 33, .28), rgba(24, 18, 13, .36));
  border-color: rgba(122, 92, 54, .58);
  box-shadow:
    inset 0 0 0 1px rgba(233, 216, 177, .10),
    0 2px 7px rgba(0,0,0,.14);
  outline: none;
}
.domain-map-scene--clean .domain-map-hotspot:hover::after {
  border-color: rgba(227, 208, 165, .10);
}
.domain-map-scene--clean .domain-map-hotspot:focus-visible {
  z-index: 12;
  background:
    linear-gradient(180deg, rgba(72, 55, 35, .30), rgba(26, 20, 15, .38));
  border-color: rgba(166, 129, 75, .66);
  box-shadow:
    inset 0 0 0 1px rgba(235, 219, 181, .12),
    0 2px 8px rgba(0,0,0,.16);
  outline: 1px solid rgba(210, 173, 103, .38);
  outline-offset: 2px;
}

/* Visit banner: still readable, but closer to a cartographic plaque. */
.safe-visit-banner.is-domain-map-visit {
  padding: .28rem .32rem .28rem .52rem;
  border-color: rgba(132, 102, 60, .34);
  border-radius: 16px;
  background:
    linear-gradient(180deg, rgba(44, 33, 22, .50), rgba(20, 15, 11, .44));
  box-shadow:
    inset 0 0 0 1px rgba(232, 215, 175, .06),
    0 6px 16px rgba(0,0,0,.15);
  backdrop-filter: blur(8px) saturate(.80);
}
.safe-visit-banner.is-domain-map-visit strong {
  color: rgba(245, 226, 184, .74);
  letter-spacing: .15em;
}
.safe-visit-banner.is-domain-map-visit button {
  min-height: 30px;
  padding: .34rem .54rem;
  border-color: rgba(128, 100, 59, .34);
  border-radius: 12px;
  background: rgba(209, 173, 101, .04);
  color: rgba(243, 226, 191, .72);
}
.safe-visit-banner.is-domain-map-visit button:hover,
.safe-visit-banner.is-domain-map-visit button:focus-visible {
  background: rgba(209, 173, 101, .065);
  border-color: rgba(154, 121, 72, .44);
}

@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-hotspot {
    max-width: 118px;
    min-height: 38px;
    padding: .14rem .22rem;
    gap: .18rem;
    border-radius: 11px;
    background: linear-gradient(180deg, rgba(66, 50, 31, .20), rgba(22, 17, 12, .28));
  }
  .domain-map-scene--clean .domain-map-hotspot__dot {
    width: 14px;
    height: 14px;
    flex-basis: 14px;
  }
  .domain-map-scene--clean .domain-map-hotspot__label strong {
    max-width: 84px;
    font-size: .50rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label em {
    font-size: .39rem;
  }
  .safe-visit-banner.is-domain-map-visit {
    border-radius: 14px;
    padding: .24rem .26rem .24rem .42rem;
  }
  .safe-visit-banner.is-domain-map-visit button {
    border-radius: 11px;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.2.1 — DOMAINE EXPLORER · GRAVURE FINALE
   Lisibilité + cohérence atlas. Final polish only: artwork, routes, state,
   hit areas and hotspot coordinates remain frozen.
   ============================================================ */

/* Slightly denser ink/paper contrast without returning to a web-button look. */
.domain-map-scene--clean .domain-map-hotspot {
  border-color: rgba(111, 82, 46, .58);
  background:
    linear-gradient(180deg, rgba(68, 52, 33, .27), rgba(23, 18, 13, .35));
  box-shadow:
    inset 0 0 0 1px rgba(233, 216, 177, .10),
    0 1px 5px rgba(0,0,0,.12);
}
.domain-map-scene--clean .domain-map-hotspot::after {
  border-color: rgba(227, 208, 165, .10);
}
.domain-map-scene--clean .domain-map-hotspot__dot {
  border-color: rgba(246, 231, 194, .76);
}
.domain-map-scene--clean .domain-map-hotspot__label strong {
  color: rgba(248, 239, 219, .96);
  font-size: .57rem;
  font-weight: 600;
  letter-spacing: .018em;
  text-shadow: 0 1px 0 rgba(28, 20, 13, .22);
}
.domain-map-scene--clean .domain-map-hotspot__label em {
  color: rgba(235, 198, 112, .78);
}

/* Hover remains non-luminous: only a tiny increase in ink density. */
.domain-map-scene--clean .domain-map-hotspot:hover {
  background:
    linear-gradient(180deg, rgba(71, 54, 35, .31), rgba(25, 19, 14, .39));
  border-color: rgba(126, 95, 56, .62);
  box-shadow:
    inset 0 0 0 1px rgba(233, 216, 177, .12),
    0 2px 7px rgba(0,0,0,.14);
}
.domain-map-scene--clean .domain-map-hotspot:hover::after {
  border-color: rgba(227, 208, 165, .13);
}
.domain-map-scene--clean .domain-map-hotspot:focus-visible {
  background:
    linear-gradient(180deg, rgba(73, 56, 36, .33), rgba(27, 20, 15, .41));
  border-color: rgba(166, 129, 75, .68);
  outline-color: rgba(210, 173, 103, .42);
}

/* Make the visit plaque use the same engraved language as map labels. */
.safe-visit-banner.is-domain-map-visit {
  border-color: rgba(126, 94, 54, .38);
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(57, 43, 28, .50), rgba(23, 17, 12, .46));
  box-shadow:
    inset 0 0 0 1px rgba(232, 215, 175, .09),
    0 5px 14px rgba(0,0,0,.14);
}
.safe-visit-banner.is-domain-map-visit strong {
  color: rgba(247, 231, 197, .82);
  text-shadow: 0 1px 0 rgba(28, 20, 13, .18);
}
.safe-visit-banner.is-domain-map-visit button {
  border-color: rgba(137, 104, 62, .38);
  border-radius: 10px;
  background: rgba(209, 173, 101, .055);
  color: rgba(246, 232, 204, .80);
}
.safe-visit-banner.is-domain-map-visit button:hover,
.safe-visit-banner.is-domain-map-visit button:focus-visible {
  background: rgba(209, 173, 101, .075);
  border-color: rgba(156, 122, 72, .46);
}

@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-hotspot {
    background:
      linear-gradient(180deg, rgba(68, 52, 33, .24), rgba(23, 18, 13, .32));
    border-color: rgba(111, 82, 46, .52);
  }
  .domain-map-scene--clean .domain-map-hotspot__label strong {
    font-size: .51rem;
    color: rgba(248, 239, 219, .95);
  }
  .safe-visit-banner.is-domain-map-visit {
    border-radius: 11px;
  }
  .safe-visit-banner.is-domain-map-visit button {
    border-radius: 9px;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.3 — DOMAINE EXPLORER · CARTOUCHES PRINCIPAUX
   Option B validated: the circular UI dot is removed. The engraved room name
   becomes the visible control by itself. Artwork, positions, routes and state
   remain unchanged. Touch/click hit areas stay generous and accessible.
   ============================================================ */

/* Name = button. No auxiliary circular marker. */
.domain-map-scene--clean .domain-map-hotspot {
  min-width: 0;
  min-height: 42px;
  max-width: 184px;
  padding: .32rem .54rem;
  gap: 0;
  justify-content: center;
  border-radius: 11px;
  background:
    linear-gradient(180deg, rgba(68, 52, 33, .27), rgba(23, 18, 13, .35));
  border-color: rgba(111, 82, 46, .58);
  box-shadow:
    inset 0 0 0 1px rgba(233, 216, 177, .10),
    0 1px 5px rgba(0,0,0,.12);
}

/* Defensive rule for stale HTML/service-worker mixtures during an update. */
.domain-map-scene--clean .domain-map-hotspot__dot {
  display: none !important;
}

.domain-map-scene--clean .domain-map-hotspot__label {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: .30rem;
  min-width: 0;
  width: 100%;
}
.domain-map-scene--clean .domain-map-hotspot__label strong {
  max-width: 158px;
  color: rgba(249, 240, 221, .97);
  font-size: .72rem;
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: .025em;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-shadow: 0 1px 0 rgba(28, 20, 13, .20);
}
.domain-map-scene--clean .domain-map-hotspot__label em {
  flex: 0 0 auto;
  color: rgba(236, 199, 111, .78);
  font-size: .43rem;
  line-height: 1;
  letter-spacing: .10em;
}

/* Keep the atlas behavior: denser ink, never a light/glow effect. */
.domain-map-scene--clean .domain-map-hotspot:hover {
  background:
    linear-gradient(180deg, rgba(71, 54, 35, .31), rgba(25, 19, 14, .39));
  border-color: rgba(126, 95, 56, .62);
  box-shadow:
    inset 0 0 0 1px rgba(233, 216, 177, .12),
    0 2px 7px rgba(0,0,0,.14);
  outline: none;
}
.domain-map-scene--clean .domain-map-hotspot:focus-visible {
  background:
    linear-gradient(180deg, rgba(73, 56, 36, .33), rgba(27, 20, 15, .41));
  border-color: rgba(166, 129, 75, .68);
  outline: 1px solid rgba(210, 173, 103, .42);
  outline-offset: 2px;
}

/* Mobile: same visual grammar, but preserve a comfortable touch target. */
@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-hotspot {
    min-width: 44px;
    min-height: 44px;
    max-width: 142px;
    padding: .28rem .44rem;
    border-radius: 10px;
  }
  .domain-map-scene--clean .domain-map-hotspot__label {
    display: flex;
    gap: .24rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label strong {
    max-width: 112px;
    font-size: .62rem;
    letter-spacing: .018em;
  }
  .domain-map-scene--clean .domain-map-hotspot__label em {
    font-size: .40rem;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.3.1 — DOMAINE EXPLORER · TYPOGRAPHIE ATLAS + CARTOUCHES TRANSLUCIDES
   Final typography pass for the main cartouches: names slightly larger,
   atlas-like serif flavor, discreet Roman indexes and more translucent plaques.
   ============================================================ */

.domain-map-scene--clean .domain-map-hotspot {
  min-height: 44px;
  max-width: 196px;
  padding: .34rem .58rem;
  border-radius: 11px;
  background: linear-gradient(180deg, rgba(70, 54, 34, .16), rgba(22, 17, 12, .24));
  border-color: rgba(112, 85, 51, .42);
  box-shadow:
    inset 0 0 0 1px rgba(236, 220, 184, .07),
    0 1px 4px rgba(0,0,0,.09);
  backdrop-filter: blur(2px) saturate(.72);
}
.domain-map-scene--clean .domain-map-hotspot__label {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: .36rem;
}
.domain-map-scene--clean .domain-map-hotspot__label small {
  flex: 0 0 auto;
  color: rgba(226, 189, 105, .76);
  font-size: .48rem;
  line-height: 1;
  letter-spacing: .10em;
  font-variant: small-caps;
}
.domain-map-scene--clean .domain-map-hotspot__label strong {
  max-width: 164px;
  color: rgba(250, 242, 224, .98);
  font-family: Georgia, "Times New Roman", Times, serif;
  font-size: .82rem;
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: .01em;
  font-variant: small-caps;
  text-align: center;
  text-shadow: 0 1px 0 rgba(30, 22, 15, .16);
}
.domain-map-scene--clean .domain-map-hotspot__label em {
  color: rgba(236, 199, 111, .82);
  font-size: .45rem;
  line-height: 1;
  letter-spacing: .10em;
}
.domain-map-scene--clean .domain-map-hotspot:hover {
  background: linear-gradient(180deg, rgba(72, 56, 36, .22), rgba(24, 19, 14, .29));
  border-color: rgba(126, 98, 59, .50);
  box-shadow:
    inset 0 0 0 1px rgba(236, 220, 184, .10),
    0 2px 6px rgba(0,0,0,.11);
}
.domain-map-scene--clean .domain-map-hotspot:focus-visible {
  background: linear-gradient(180deg, rgba(74, 58, 38, .24), rgba(26, 20, 15, .31));
  border-color: rgba(166, 129, 75, .58);
  outline: 1px solid rgba(210, 173, 103, .32);
  outline-offset: 2px;
}

.safe-visit-banner.is-domain-map-visit {
  background: linear-gradient(180deg, rgba(44, 33, 22, .40), rgba(20, 15, 11, .34));
  border-color: rgba(132, 102, 60, .26);
  box-shadow:
    inset 0 0 0 1px rgba(232, 215, 175, .05),
    0 4px 12px rgba(0,0,0,.12);
}
.safe-visit-banner.is-domain-map-visit button {
  background: rgba(209, 173, 101, .03);
  border-color: rgba(128, 100, 59, .24);
}

@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-hotspot {
    min-height: 44px;
    max-width: 150px;
    padding: .30rem .48rem;
    background: linear-gradient(180deg, rgba(70, 54, 34, .14), rgba(22, 17, 12, .22));
  }
  .domain-map-scene--clean .domain-map-hotspot__label {
    gap: .28rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label small {
    font-size: .44rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label strong {
    max-width: 120px;
    font-size: .69rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label em {
    font-size: .42rem;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.3.2 — DOMAINE EXPLORER · AFFINEMENT ATLAS + RECALAGE CENTRÉ
   Final atlas refinement: softer Roman indexes, more translucent cartouches,
   slightly calmer plaque edges, and centered visual placement adjustments.
   ============================================================ */

.domain-map-scene--clean .domain-map-hotspot {
  min-height: 42px;
  max-width: 194px;
  padding: .32rem .54rem;
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(73, 57, 36, .10), rgba(22, 17, 12, .18));
  border-color: rgba(104, 79, 48, .28);
  box-shadow:
    inset 0 0 0 1px rgba(236, 220, 184, .05),
    0 1px 3px rgba(0,0,0,.07);
  backdrop-filter: blur(1.8px) saturate(.74);
}
.domain-map-scene--clean .domain-map-hotspot::after {
  border-color: rgba(230, 211, 170, .045);
}
.domain-map-scene--clean .domain-map-hotspot__label {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: .28rem;
}
.domain-map-scene--clean .domain-map-hotspot__label small {
  flex: 0 0 auto;
  min-width: .7rem;
  color: rgba(208, 168, 87, .48);
  font-size: .38rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .08em;
  font-variant: small-caps;
  text-align: right;
  transform: translateY(-1px);
}
.domain-map-scene--clean .domain-map-hotspot__label strong {
  max-width: 166px;
  color: rgba(250, 243, 227, .96);
  font-family: Georgia, "Times New Roman", Times, serif;
  font-size: .84rem;
  font-weight: 600;
  line-height: 1.06;
  letter-spacing: .005em;
  font-variant: small-caps;
  text-align: center;
  text-shadow: 0 1px 0 rgba(24, 18, 13, .12);
}
.domain-map-scene--clean .domain-map-hotspot__label em {
  color: rgba(230, 193, 108, .78);
  font-size: .42rem;
  line-height: 1;
  letter-spacing: .08em;
}
.domain-map-scene--clean .domain-map-hotspot:hover {
  background: linear-gradient(180deg, rgba(75, 59, 38, .14), rgba(24, 19, 14, .22));
  border-color: rgba(112, 86, 52, .36);
  box-shadow:
    inset 0 0 0 1px rgba(236, 220, 184, .07),
    0 2px 4px rgba(0,0,0,.09);
}
.domain-map-scene--clean .domain-map-hotspot:focus-visible {
  background: linear-gradient(180deg, rgba(77, 61, 40, .16), rgba(26, 20, 15, .24));
  border-color: rgba(142, 109, 64, .42);
  outline: 1px solid rgba(197, 159, 92, .26);
  outline-offset: 2px;
}

.safe-visit-banner.is-domain-map-visit {
  background: linear-gradient(180deg, rgba(44, 33, 22, .34), rgba(20, 15, 11, .28));
  border-color: rgba(132, 102, 60, .20);
  box-shadow:
    inset 0 0 0 1px rgba(232, 215, 175, .04),
    0 4px 10px rgba(0,0,0,.10);
}
.safe-visit-banner.is-domain-map-visit strong {
  color: rgba(245, 226, 184, .70);
}
.safe-visit-banner.is-domain-map-visit button {
  background: rgba(209, 173, 101, .02);
  border-color: rgba(128, 100, 59, .18);
  color: rgba(243, 226, 191, .68);
}
.safe-visit-banner.is-domain-map-visit button:hover,
.safe-visit-banner.is-domain-map-visit button:focus-visible {
  background: rgba(209, 173, 101, .04);
  border-color: rgba(146, 114, 68, .24);
}

@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-hotspot {
    max-width: 150px;
    min-height: 42px;
    padding: .28rem .44rem;
    background: linear-gradient(180deg, rgba(73, 57, 36, .12), rgba(22, 17, 12, .20));
  }
  .domain-map-scene--clean .domain-map-hotspot__label {
    gap: .22rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label small {
    min-width: .58rem;
    font-size: .34rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label strong {
    max-width: 122px;
    font-size: .71rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label em {
    font-size: .39rem;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.3.3 — DOMAINE EXPLORER · ENCRE ATLAS + RECENTRAGE FINAL
   Final refinement: darker Roman indexes, title visually centered in the
   cartouche, and plaques made lighter and more translucent.
   ============================================================ */

.domain-map-scene--clean .domain-map-hotspot {
  min-height: 41px;
  max-width: 196px;
  padding: .30rem .50rem;
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(71, 56, 37, .07), rgba(20, 15, 10, .14));
  border-color: rgba(100, 76, 46, .22);
  box-shadow:
    inset 0 0 0 1px rgba(236, 220, 184, .035),
    0 1px 2px rgba(0,0,0,.05);
  backdrop-filter: blur(1.45px) saturate(.72);
}
.domain-map-scene--clean .domain-map-hotspot::after {
  border-color: rgba(230, 211, 170, .032);
}
.domain-map-scene--clean .domain-map-hotspot__label {
  position: relative;
  display: block;
  min-width: 0;
  text-align: center;
  padding-left: .88rem;
  padding-right: .20rem;
}
.domain-map-scene--clean .domain-map-hotspot__label small {
  position: absolute;
  left: .02rem;
  top: 50%;
  min-width: .78rem;
  color: rgba(52, 41, 28, .86);
  font-size: .50rem;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .06em;
  font-variant: small-caps;
  text-align: right;
  transform: translateY(-54%);
}
.domain-map-scene--clean .domain-map-hotspot__label strong {
  display: block;
  max-width: 170px;
  margin: 0 auto;
  color: rgba(251, 244, 230, .99);
  font-family: Georgia, "Times New Roman", Times, serif;
  font-size: .85rem;
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: .003em;
  font-variant: small-caps;
  text-align: center;
  text-shadow: 0 1px 0 rgba(23, 17, 12, .10);
}
.domain-map-scene--clean .domain-map-hotspot__label em {
  position: absolute;
  right: .02rem;
  top: 50%;
  transform: translateY(-50%);
  color: rgba(109, 78, 29, .84);
  font-size: .40rem;
  line-height: 1;
  letter-spacing: .08em;
}
.domain-map-scene--clean .domain-map-hotspot:hover {
  background: linear-gradient(180deg, rgba(73, 58, 38, .10), rgba(21, 16, 11, .18));
  border-color: rgba(106, 81, 49, .28);
  box-shadow:
    inset 0 0 0 1px rgba(236, 220, 184, .05),
    0 1px 3px rgba(0,0,0,.06);
}
.domain-map-scene--clean .domain-map-hotspot:focus-visible {
  background: linear-gradient(180deg, rgba(76, 60, 40, .12), rgba(23, 18, 13, .20));
  border-color: rgba(125, 95, 56, .32);
  outline: 1px solid rgba(184, 149, 86, .22);
  outline-offset: 2px;
}

.safe-visit-banner.is-domain-map-visit {
  background: linear-gradient(180deg, rgba(42, 32, 21, .30), rgba(19, 14, 10, .24));
  border-color: rgba(130, 100, 58, .16);
  box-shadow:
    inset 0 0 0 1px rgba(232, 215, 175, .03),
    0 3px 8px rgba(0,0,0,.08);
}
.safe-visit-banner.is-domain-map-visit strong {
  color: rgba(243, 224, 182, .68);
}
.safe-visit-banner.is-domain-map-visit button {
  background: rgba(209, 173, 101, .015);
  border-color: rgba(128, 100, 59, .14);
  color: rgba(241, 223, 190, .64);
}
.safe-visit-banner.is-domain-map-visit button:hover,
.safe-visit-banner.is-domain-map-visit button:focus-visible {
  background: rgba(209, 173, 101, .03);
  border-color: rgba(140, 109, 66, .20);
}

@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-hotspot {
    max-width: 152px;
    min-height: 41px;
    padding: .26rem .40rem;
    background: linear-gradient(180deg, rgba(71, 56, 37, .08), rgba(20, 15, 10, .16));
  }
  .domain-map-scene--clean .domain-map-hotspot__label {
    padding-left: .72rem;
    padding-right: .16rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label small {
    min-width: .62rem;
    font-size: .42rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label strong {
    max-width: 124px;
    font-size: .72rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label em {
    font-size: .36rem;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.3.4 — DOMAINE EXPLORER · INDEX ROMAINS LISIBLES + MICRO-ALIGNEMENT FINAL
   Make Roman indexes clearly legible, keep cartouches airy, and refine centering.
   ============================================================ */

.domain-map-scene--clean .domain-map-hotspot {
  min-height: 41px;
  max-width: 200px;
  padding: .30rem .48rem;
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(68, 54, 35, .05), rgba(18, 14, 10, .11));
  border-color: rgba(98, 76, 46, .18);
  box-shadow:
    inset 0 0 0 1px rgba(236, 220, 184, .025),
    0 1px 2px rgba(0,0,0,.04);
  backdrop-filter: blur(1.35px) saturate(.72);
}
.domain-map-scene--clean .domain-map-hotspot::after {
  border-color: rgba(230, 211, 170, .026);
}
.domain-map-scene--clean .domain-map-hotspot__label {
  position: relative;
  display: block;
  min-width: 0;
  text-align: center;
  padding-left: 1.18rem;
  padding-right: .22rem;
}
.domain-map-scene--clean .domain-map-hotspot__label small {
  position: absolute;
  left: .05rem;
  top: 50%;
  min-width: .98rem;
  color: rgba(33, 26, 18, .94);
  font-size: .66rem;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .04em;
  font-variant: small-caps;
  text-align: right;
  text-shadow: 0 1px 0 rgba(247, 235, 208, .08);
  transform: translateY(-52%);
}
.domain-map-scene--clean .domain-map-hotspot__label strong {
  display: block;
  max-width: 170px;
  margin: 0 auto;
  color: rgba(252, 245, 232, .99);
  font-family: Georgia, "Times New Roman", Times, serif;
  font-size: .85rem;
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: .003em;
  font-variant: small-caps;
  text-align: center;
  text-shadow: 0 1px 0 rgba(23, 17, 12, .08);
}
.domain-map-scene--clean .domain-map-hotspot__label em {
  position: absolute;
  right: .02rem;
  top: 50%;
  transform: translateY(-50%);
  color: rgba(96, 70, 29, .80);
  font-size: .38rem;
  line-height: 1;
  letter-spacing: .08em;
}
.domain-map-scene--clean .domain-map-hotspot:hover {
  background: linear-gradient(180deg, rgba(70, 56, 36, .08), rgba(20, 15, 10, .15));
  border-color: rgba(104, 80, 48, .22);
  box-shadow:
    inset 0 0 0 1px rgba(236, 220, 184, .04),
    0 1px 3px rgba(0,0,0,.05);
}
.domain-map-scene--clean .domain-map-hotspot:focus-visible {
  background: linear-gradient(180deg, rgba(74, 58, 38, .10), rgba(22, 17, 12, .17));
  border-color: rgba(121, 93, 55, .28);
  outline: 1px solid rgba(184, 149, 86, .20);
  outline-offset: 2px;
}

@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-hotspot {
    max-width: 154px;
    min-height: 41px;
    padding: .26rem .38rem;
    background: linear-gradient(180deg, rgba(68, 54, 35, .06), rgba(18, 14, 10, .13));
  }
  .domain-map-scene--clean .domain-map-hotspot__label {
    padding-left: .96rem;
    padding-right: .16rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label small {
    min-width: .80rem;
    font-size: .54rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label strong {
    max-width: 124px;
    font-size: .72rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label em {
    font-size: .34rem;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.3.5 — DOMAINE EXPLORER · INDEX ROMAINS IVOIRE LISIBLES
   Roman indexes become clearly readable with warm ivory ink while staying
   secondary to place names and consistent with the atlas style.
   ============================================================ */

.domain-map-scene--clean .domain-map-hotspot__label {
  padding-left: 1.28rem;
  padding-right: .20rem;
}
.domain-map-scene--clean .domain-map-hotspot__label small {
  left: .06rem;
  min-width: 1.04rem;
  color: rgba(245, 234, 205, .96);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .03em;
  text-shadow:
    0 1px 0 rgba(26, 19, 13, .38),
    0 0 2px rgba(26, 19, 13, .16);
  transform: translateY(-52%);
}
.domain-map-scene--clean .domain-map-hotspot__label strong {
  max-width: 168px;
}

@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-hotspot__label {
    padding-left: 1.06rem;
    padding-right: .14rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label small {
    min-width: .88rem;
    font-size: .62rem;
  }
}


/* ============================================================
   VNEW.0.130.3.8.4.4 — DOMAINE EXPLORER · QA FINALE PC + GEL
   VISUAL FREEZE: desktop map master, cartouche styling, Roman indexes and
   desktop hotspot coordinates are frozen from VNEW.0.130.3.8.4.3.5.
   No visual delta in this release. Future PC changes require an explicit thaw.
   ============================================================ */

/* ============================================================
   VNEW.0.130.3.8.4.4.1 — DOMAINE EXPLORER · POST-QA MICRO RECALAGE PC
   Re-opened after QA for the final desktop-only text alignment corrections.
   ============================================================ */

/* Slightly more breathing room between Roman index and place name. */
.domain-map-scene--clean .domain-map-hotspot__label {
  padding-left: 1.36rem;
  padding-right: .18rem;
}
.domain-map-scene--clean .domain-map-hotspot__label small {
  left: .08rem;
  min-width: 1.12rem;
  font-size: .80rem;
}

/* Targeted desktop refinements for the remaining imperfect cartouches. */
@media (min-width: 761px) {
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="palace-grand-hall"] .domain-map-hotspot__label {
    padding-left: 1.52rem;
  }
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="palace-grand-hall"] .domain-map-hotspot__label small {
    min-width: 1.20rem;
    left: .10rem;
  }
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="portal"] .domain-map-hotspot__label {
    padding-left: 1.30rem;
  }
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="palace-zones-cartotheque"] .domain-map-hotspot__label,
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="palace-personal-workshop"] .domain-map-hotspot__label,
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="palace-routes-gallery"] .domain-map-hotspot__label,
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="palace-antechamber"] .domain-map-hotspot__label {
    padding-left: 1.40rem;
  }
}

@media (max-width: 760px) and (orientation: portrait) {
  .domain-map-scene--clean .domain-map-hotspot__label {
    padding-left: 1.10rem;
    padding-right: .14rem;
  }
  .domain-map-scene--clean .domain-map-hotspot__label small {
    min-width: .92rem;
    font-size: .64rem;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.4.2 — DOMAINE EXPLORER · ESPACEMENT INDEX FINAL + GEL DÉFINITIF PC
   Final desktop typography geometry: the Roman index owns a fixed left reserve,
   the room name is centered independently, and the right reserve mirrors it.
   No desktop hotspot coordinate or master-artwork change in this release.
   ============================================================ */

@media (min-width: 761px) {
  /* Symmetric side reserves keep every room name centered in its cartouche,
     regardless of Roman-index width (I, III, VIII, XI...). */
  .domain-map-scene--clean .domain-map-hotspot__label {
    position: relative;
    display: block;
    width: 100%;
    box-sizing: border-box;
    padding-left: 1.78rem;
    padding-right: 1.78rem;
    text-align: center;
  }

  .domain-map-scene--clean .domain-map-hotspot__label small {
    position: absolute;
    left: .14rem;
    top: 50%;
    width: 1.28rem;
    min-width: 1.28rem;
    color: rgba(245, 234, 205, .96);
    font-size: .78rem;
    font-weight: 700;
    line-height: 1;
    letter-spacing: .02em;
    text-align: right;
    transform: translateY(-52%);
  }

  .domain-map-scene--clean .domain-map-hotspot__label strong {
    display: block;
    width: max-content;
    max-width: 170px;
    margin: 0 auto;
    text-align: center;
  }

  /* Current-position note occupies the mirrored right reserve without pushing
     the room name off its visual centre. */
  .domain-map-scene--clean .domain-map-hotspot__label em {
    position: absolute;
    right: .14rem;
    top: 50%;
    width: 1.28rem;
    text-align: left;
    transform: translateY(-50%);
  }

  /* Long Roman numerals receive a tiny extra optical gap while preserving the
     exact cartouche centre and all frozen map coordinates. */
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="palace-grand-hall"] .domain-map-hotspot__label,
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="palace-antechamber"] .domain-map-hotspot__label {
    padding-left: 1.88rem;
    padding-right: 1.88rem;
  }
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="palace-grand-hall"] .domain-map-hotspot__label small,
  .domain-map-scene--clean .domain-map-hotspot[data-map-place="palace-antechamber"] .domain-map-hotspot__label small {
    width: 1.34rem;
    min-width: 1.34rem;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.5 — INTERFACE IMMERSIVE ALLÉGÉE
   Temporary visual simplification: Concentration / Mon parcours become
   keyboard-only, safe-visit chrome disappears, and room headings are centered.
   ============================================================ */

/* Keyboard-only tools for now. Their panels remain mounted and accessible via
   Alt+Shift+C (Concentration) and Alt+Shift+P (Mon parcours). */
.focus-tool__trigger,
.journey-hub__trigger {
  display: none !important;
}

/* Safe Visit keeps its isolated progression model but no longer adds visible
   browser-like chrome over the artwork. Defensive CSS also protects against a
   transient old-JS/new-CSS service-worker mix during deployment. */
.safe-visit-banner {
  display: none !important;
}
.app-shell:has(> .safe-visit-banner) {
  display: block !important;
  width: 100%;
  height: var(--aom-viewport-height);
  overflow: hidden;
}
.app-shell:has(> .safe-visit-banner) > .world-frame {
  width: 100%;
  height: 100%;
  min-height: 0;
}

/* Re-center the canonical room names. This deliberately overrides the old
   ultra-wide Orangerie offset (27%) so all immersive garden rooms share the
   same visual axis. */
@media (min-width: 761px) {
  .garden1-heading,
  .orangery-heading,
  .garden2-heading,
  .recall-curve-entry-heading {
    left: 50% !important;
    right: auto !important;
    top: clamp(3.25rem, 6.3vh, 4.8rem) !important;
    width: min(88vw, 48rem) !important;
    transform: translateX(-50%) !important;
    justify-items: center !important;
    text-align: center !important;
  }

  .garden1-heading span,
  .orangery-heading span,
  .garden2-heading span,
  .recall-curve-entry-heading span {
    text-align: center;
    line-height: 1.2;
  }

  .garden1-heading strong,
  .orangery-heading strong,
  .garden2-heading strong,
  .recall-curve-entry-heading strong {
    display: block;
    text-align: center;
    line-height: 1.08;
  }
}

@media (max-width: 760px) {
  .garden1-heading,
  .orangery-heading,
  .garden2-heading,
  .recall-curve-entry-heading {
    left: 50% !important;
    width: min(90vw, 32rem) !important;
    transform: translateX(-50%) !important;
    justify-items: center !important;
    text-align: center !important;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.6 — QA PHYSIQUE PC · SALLES + LIVRES + AJUSTEMENTS VISUELS
   Verified at desktop viewport sizes. Fixes the 60rem palace height cap,
   improves large-room panel fit, and gives the three Living Book hotspots a
   clearer, calmer cartographic label while keeping their generous hit areas.
   ============================================================ */

/* --- PC full-height correction: no black strip below Passage / Antichambre. --- */
@media (min-width: 901px) and (pointer: fine) {
  .palace-passage-scene,
  .palace-antechamber-scene {
    height: var(--aom-viewport-height);
    min-height: var(--aom-viewport-height);
  }
  .palace-passage-card,
  .palace-threshold-card {
    min-height: 100%;
  }
}

/* --- Living Book markers: keep the large invisible target, make the visible
   label feel anchored to the physical book rather than floating below it. --- */
@media (min-width: 761px) {
  .garden1-book-hotspot,
  .orangery-book-hotspot,
  .garden2-book-hotspot {
    border-color: rgba(239, 226, 184, .07);
    background: radial-gradient(circle, rgba(232, 214, 161, .055), transparent 70%);
  }
  .garden1-book-hotspot::before,
  .orangery-book-hotspot::before,
  .garden2-book-hotspot::before {
    border-color: rgba(244, 227, 178, .12);
    box-shadow: 0 0 22px rgba(230, 207, 144, .05);
  }
  .garden1-book-hotspot span,
  .orangery-book-hotspot span,
  .garden2-book-hotspot span {
    left: 50%;
    bottom: .42rem;
    transform: translateX(-50%);
    padding: .42rem .68rem;
    border: 1px solid rgba(229, 208, 157, .22);
    border-radius: 999px;
    background: rgba(25, 21, 15, .42);
    color: rgba(250, 239, 210, .94);
    box-shadow: 0 5px 16px rgba(0,0,0,.12);
    backdrop-filter: blur(6px) saturate(.82);
    font-size: .64rem;
    letter-spacing: .115em;
    text-shadow: 0 1px 4px rgba(0,0,0,.58);
  }
  .garden1-book-hotspot:hover span,
  .garden1-book-hotspot:focus-visible span,
  .orangery-book-hotspot:hover span,
  .orangery-book-hotspot:focus-visible span,
  .garden2-book-hotspot:hover span,
  .garden2-book-hotspot:focus-visible span {
    background: rgba(30, 25, 18, .52);
    border-color: rgba(236, 215, 164, .34);
  }
}

/* Back controls use one visual baseline across the three garden rooms. */
.garden1-back,
.orangery-back,
.garden2-back,
.recall-curve-entry-back {
  min-height: 36px;
  padding: .55rem .82rem;
  border-color: rgba(240, 224, 184, .18);
  background: rgba(18, 16, 12, .44);
  color: rgba(249, 241, 220, .88);
  box-shadow: 0 4px 14px rgba(0,0,0,.12);
  backdrop-filter: blur(7px) saturate(.84);
}

/* Observatoire: slightly cleaner glass and more legible inner hierarchy. */
@media (min-width: 901px) {
  .recall-curve-entry-card {
    width: min(36rem, calc(100% - 2rem));
    padding: clamp(1.25rem, 2.2vw, 1.8rem);
    border-color: rgba(235, 216, 168, .20);
    background: linear-gradient(180deg, rgba(28, 27, 22, .60), rgba(17, 17, 14, .66));
    box-shadow: 0 18px 58px rgba(0,0,0,.23);
    backdrop-filter: blur(10px) saturate(.82);
  }
  .recall-curve-entry-card > strong { color: rgba(250, 241, 216, .96); }
  .recall-curve-entry-card p { color: rgba(246, 238, 215, .86); }
}

/* B2 rooms: use more of a 1080p desktop before asking the user to scroll.
   Scrolling remains internal for long pedagogical content. */
@media (min-width: 901px) and (pointer: fine) {
  .palace-routes-gallery-card {
    width: min(540px, 31vw);
    max-height: calc(100% - 5.25rem);
    margin: 4.25rem auto 1rem clamp(1.4rem, 4.4vw, 5.2rem);
    scrollbar-gutter: stable;
  }
  .palace-zones-card {
    width: min(570px, 33vw);
    max-height: calc(100% - 4.5rem);
    margin: 3.5rem auto 1rem clamp(1.4rem, 3.8vw, 4.6rem);
    scrollbar-gutter: stable;
  }
  .palace-personal-card {
    width: min(610px, 34vw);
    max-height: calc(100% - 4.5rem);
    margin: 3.5rem auto 1rem clamp(1.4rem, 3.8vw, 4.6rem);
    scrollbar-gutter: stable;
  }

  /* Compact only the navigation/actions, not the pedagogical content. */
  .palace-zones-card__actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .5rem;
  }
  .palace-zones-card__actions button {
    width: 100%;
    min-height: 42px;
    padding: .62rem .72rem;
    text-align: center;
  }
  .palace-personal-card__actions,
  .personal-palace-prototype-home__actions {
    justify-content: flex-start;
    gap: .52rem;
  }
}

/* Low desktop heights: room cards should remain usable and visually anchored. */
@media (min-width: 901px) and (max-height: 820px) {
  .palace-routes-gallery-card,
  .palace-zones-card,
  .palace-personal-card {
    max-height: calc(100% - 2rem);
    margin-top: 1rem;
    margin-bottom: 1rem;
  }
  .palace-zones-card h1,
  .palace-personal-card h1 {
    font-size: clamp(2rem, 3.6vw, 3rem);
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.6.1 — QA PHYSIQUE PC · LOW-HEIGHT / LAPTOP FIT
   Second physical-browser pass after 1920×1080, 1760×947 and 1366×768 tests.
   ============================================================ */

/* The Portal must expose all four choices on a common 1366×768 laptop without
   making the last card look accidentally cut. */
@media (min-width: 761px) and (max-height: 820px) {
  .portal-scene--migrated {
    padding: 2.4rem 1rem 1rem;
  }
  .portal-entry {
    max-height: calc(var(--aom-viewport-height) - 3rem);
    padding: .9rem 1.05rem;
  }
  .portal-entry__header {
    margin-bottom: .65rem;
    padding-block: .05rem;
  }
  .portal-entry__eyebrow {
    margin-bottom: .28rem;
    font-size: .60rem;
  }
  .portal-entry__header h1 {
    font-size: clamp(2.55rem, 5vw, 3.55rem);
    line-height: .94;
  }
  .portal-entry__header p {
    margin-top: .48rem;
    font-size: .92rem;
    line-height: 1.35;
  }
  .portal-entry__header small {
    margin-top: .36rem;
    font-size: .50rem;
  }
  .portal-entry__hero { margin-bottom: .48rem; }
  .portal-entry__grid { gap: .42rem; }
  .portal-path-card {
    min-height: 5.15rem;
    padding: .68rem .78rem;
    border-radius: 15px;
  }
  .portal-path-card--hero { min-height: 5.8rem; }
  .portal-path-icon {
    width: 2.45rem;
    height: 2.45rem;
  }
  .portal-path-copy { gap: .18rem; }
  .portal-path-copy strong { font-size: .84rem; }
  .portal-path-copy small { font-size: .70rem; line-height: 1.30; }
  .portal-path-copy em { font-size: .59rem; line-height: 1.25; }
  .portal-entry__freedom { margin-top: .30rem; font-size: .58rem; }
}

/* 1366–1500px desktop widths: keep the B2 panels wide enough for their
   headings and route cards, instead of forcing excessive word-by-word wraps. */
@media (min-width: 901px) and (max-width: 1500px) {
  .palace-routes-gallery-card {
    width: min(550px, 41vw);
  }
  .palace-zones-card {
    width: min(590px, 43vw);
  }
  .palace-personal-card {
    width: min(610px, 43vw);
  }
  .palace-routes-gallery-card h1 {
    font-size: clamp(2.6rem, 4.8vw, 4rem);
    line-height: .98;
  }
  .palace-zones-card h1,
  .palace-personal-card h1 {
    font-size: clamp(2.4rem, 4.1vw, 3.35rem);
    line-height: 1;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.6.2 — QA PHYSIQUE PC · TITRES + LIVRES AFFINÉS
   Fine desktop polish after physical testing: move the Living Book cue onto the
   actual prop in Jardin I, harmonize the two other book cues, and give the
   room titles a little more presence without reintroducing heavy UI panels.
   ============================================================ */

/* Stronger but still elegant room-name treatment for the immersive rooms. */
@media (min-width: 761px) {
  .garden1-heading,
  .orangery-heading,
  .garden2-heading,
  .recall-curve-entry-heading {
    top: clamp(2.25rem, 5.2vh, 3.65rem) !important;
    gap: .22rem !important;
    padding: .28rem 1rem .34rem;
    border-radius: 18px;
    background: linear-gradient(180deg, rgba(12,14,13,.06), rgba(12,14,13,.14));
    box-shadow: 0 10px 30px rgba(0,0,0,.06);
    backdrop-filter: blur(1px);
  }

  .garden1-heading span,
  .orangery-heading span,
  .garden2-heading span,
  .recall-curve-entry-heading span {
    font-size: .72rem !important;
    letter-spacing: .24em !important;
    color: rgba(241, 227, 188, .95) !important;
    text-shadow: 0 1px 0 rgba(0,0,0,.25), 0 1px 10px rgba(0,0,0,.28);
  }

  .garden1-heading strong,
  .orangery-heading strong,
  .garden2-heading strong,
  .recall-curve-entry-heading strong {
    font-size: clamp(1.20rem, 2vw, 1.55rem) !important;
    letter-spacing: .12em !important;
    color: rgba(252, 246, 230, .98) !important;
    text-shadow: 0 1px 0 rgba(0,0,0,.25), 0 4px 18px rgba(0,0,0,.34);
  }
}

@media (max-width: 760px) {
  .garden1-heading,
  .orangery-heading,
  .garden2-heading,
  .recall-curve-entry-heading {
    top: 2.45rem !important;
    gap: .2rem !important;
  }
  .garden1-heading strong,
  .orangery-heading strong,
  .garden2-heading strong,
  .recall-curve-entry-heading strong {
    font-size: clamp(1rem, 4.7vw, 1.28rem) !important;
    letter-spacing: .10em !important;
  }
}

/* Living Book cues: make them sit on the physical prop instead of floating on
   the floor. Keep generous hit areas, but anchor the visible label to the prop. */
@media (min-width: 761px) {
  .garden1-book-hotspot {
    left: 1.2%;
    top: 58.2%;
    width: 18.2%;
    height: 17.8%;
    min-width: 9.25rem;
    min-height: 7.2rem;
  }
  .garden1-book-hotspot::before,
  .orangery-book-hotspot::before,
  .garden2-book-hotspot::before {
    inset: 20%;
  }
  .garden1-book-hotspot span,
  .orangery-book-hotspot span,
  .garden2-book-hotspot span {
    bottom: .9rem;
    padding: .34rem .62rem;
    font-size: .62rem;
    letter-spacing: .11em;
    background: rgba(22, 18, 14, .34);
    border-color: rgba(232, 212, 164, .16);
    box-shadow: 0 3px 12px rgba(0,0,0,.08);
  }

  .orangery-book-hotspot {
    left: 1.4%;
    top: 66.1%;
    width: 18.6%;
    height: 19.5%;
    min-width: 9rem;
    min-height: 6.8rem;
  }

  .garden2-book-hotspot {
    left: 1.0%;
    top: 73.8%;
    width: 15.6%;
    height: 14.8%;
    min-width: 8.4rem;
    min-height: 5.8rem;
  }
}

/* Slightly calmer back controls so they align visually with the refined titles. */
@media (min-width: 761px) {
  .garden1-back,
  .orangery-back,
  .garden2-back,
  .recall-curve-entry-back {
    left: 1.4rem;
    bottom: 1.05rem;
    padding: .54rem .9rem;
    background: rgba(22, 18, 14, .40);
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.7.3.4 — QA PHYSIQUE PC · LIVRES SANS LIBELLÉ + RETOURS MASQUÉS
   - Hide temporary back pills from immersive rooms.
   - Keep keyboard-only return via Alt+R.
   - Remove visible 'OUVRIR LE LIVRE' labels and replace them with a subtle
     manuscript-like luminous cue anchored to the book prop.
   - Tighten heading presence / centering for the immersive rooms.
   ============================================================ */

:root {
  --atlas-book-glow: rgba(238, 219, 164, .82);
  --atlas-book-core: rgba(255, 241, 201, .95);
}

/* Temporary hide of on-screen back buttons: keyboard shortcut handles returns. */
.garden1-back,
.orangery-back,
.garden2-back,
.recall-curve-entry-back {
  display: none !important;
}

/* No visible text near the book hotspots for now. */
.garden1-book-hotspot span,
.orangery-book-hotspot span,
.garden2-book-hotspot span {
  display: none !important;
}

/* More object-like book cues: less UI, more subtle discovered interaction. */
.garden1-book-hotspot,
.orangery-book-hotspot,
.garden2-book-hotspot {
  border: none !important;
  background: transparent !important;
  border-radius: 999px !important;
  box-shadow: none !important;
  opacity: 1 !important;
  overflow: visible;
}

.garden1-book-hotspot::before,
.orangery-book-hotspot::before,
.garden2-book-hotspot::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: clamp(1.2rem, 2.5vw, 1.7rem);
  height: clamp(1.2rem, 2.5vw, 1.7rem);
  transform: translate(-50%, -50%);
  border-radius: 999px;
  border: 1px solid rgba(246, 232, 194, .42);
  background:
    radial-gradient(circle, rgba(255, 248, 223, .72) 0%, rgba(241, 225, 176, .22) 38%, rgba(241, 225, 176, 0) 72%);
  box-shadow:
    0 0 0 1px rgba(71, 51, 19, .20) inset,
    0 0 12px rgba(253, 240, 198, .28),
    0 0 28px rgba(232, 208, 147, .18);
  animation: atlas-book-pulse 3.6s ease-in-out infinite;
}

.garden1-book-hotspot::after,
.orangery-book-hotspot::after,
.garden2-book-hotspot::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: clamp(2.3rem, 5vw, 3.2rem);
  height: clamp(2.3rem, 5vw, 3.2rem);
  transform: translate(-50%, -50%);
  border-radius: 999px;
  border: 1px solid rgba(241, 224, 178, .18);
  opacity: .9;
  animation: atlas-book-ring 3.6s ease-out infinite;
}

.garden1-book-hotspot:hover::before,
.garden1-book-hotspot:focus-visible::before,
.orangery-book-hotspot:hover::before,
.orangery-book-hotspot:focus-visible::before,
.garden2-book-hotspot:hover::before,
.garden2-book-hotspot:focus-visible::before {
  width: clamp(1.35rem, 2.9vw, 1.95rem);
  height: clamp(1.35rem, 2.9vw, 1.95rem);
  box-shadow:
    0 0 0 1px rgba(89, 68, 31, .22) inset,
    0 0 18px rgba(255, 242, 207, .38),
    0 0 34px rgba(236, 212, 154, .26);
}

.garden1-book-hotspot:hover::after,
.garden1-book-hotspot:focus-visible::after,
.orangery-book-hotspot:hover::after,
.orangery-book-hotspot:focus-visible::after,
.garden2-book-hotspot:hover::after,
.garden2-book-hotspot:focus-visible::after {
  border-color: rgba(248, 234, 192, .30);
}

@keyframes atlas-book-pulse {
  0%, 100% {
    opacity: .72;
    transform: translate(-50%, -50%) scale(.96);
  }
  50% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.06);
  }
}

@keyframes atlas-book-ring {
  0% {
    opacity: .0;
    transform: translate(-50%, -50%) scale(.78);
  }
  18% {
    opacity: .8;
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(1.18);
  }
}

/* Fine positioning of the visible cue on the actual props while keeping a comfortable hit area. */
@media (min-width: 761px) {
  .garden1-book-hotspot {
    left: 6.9% !important;
    top: 70.4% !important;
    width: 12.2% !important;
    height: 14.2% !important;
    min-width: 7.5rem;
    min-height: 5.5rem;
  }
  .garden1-book-hotspot::before,
  .garden1-book-hotspot::after {
    left: 77%;
    top: 30%;
  }

  .orangery-book-hotspot {
    left: 5.8% !important;
    top: 68.6% !important;
    width: 14.4% !important;
    height: 15.6% !important;
    min-width: 8rem;
    min-height: 6rem;
  }
  .orangery-book-hotspot::before,
  .orangery-book-hotspot::after {
    left: 74%;
    top: 31%;
  }

  .garden2-book-hotspot {
    left: 4.8% !important;
    top: 75.2% !important;
    width: 12.8% !important;
    height: 12.8% !important;
    min-width: 7.2rem;
    min-height: 5.2rem;
  }
  .garden2-book-hotspot::before,
  .garden2-book-hotspot::after {
    left: 76%;
    top: 34%;
  }

  .garden1-heading,
  .orangery-heading,
  .garden2-heading,
  .recall-curve-entry-heading {
    left: 50% !important;
    top: clamp(2.0rem, 5vh, 3.2rem) !important;
    transform: translateX(-50%) !important;
    width: min(48rem, calc(100% - 8rem));
    text-align: center;
    justify-items: center;
    padding: .32rem 1.15rem .42rem;
  }

  .garden1-heading span,
  .orangery-heading span,
  .garden2-heading span,
  .recall-curve-entry-heading span {
    font-size: .74rem !important;
    letter-spacing: .26em !important;
  }

  .garden1-heading strong,
  .orangery-heading strong,
  .garden2-heading strong,
  .recall-curve-entry-heading strong {
    font-size: clamp(1.28rem, 2.15vw, 1.72rem) !important;
    letter-spacing: .13em !important;
  }

  .garden1-whisper,
  .orangery-maxim,
  .garden2-maxim,
  .recall-curve-entry-maxim {
    bottom: .9rem !important;
  }
}

@media (max-width: 760px) {
  .garden1-book-hotspot,
  .orangery-book-hotspot,
  .garden2-book-hotspot {
    min-width: 6rem;
    min-height: 4.2rem;
  }

  .garden1-heading,
  .orangery-heading,
  .garden2-heading,
  .recall-curve-entry-heading {
    width: calc(100% - 3rem);
    top: 2.3rem !important;
    padding-inline: .8rem;
  }

  .garden1-heading strong,
  .orangery-heading strong,
  .garden2-heading strong,
  .recall-curve-entry-heading strong {
    font-size: clamp(1.02rem, 4.6vw, 1.28rem) !important;
  }
}
.orangery-book-hotspot:disabled,
.garden2-book-hotspot:disabled {
  opacity: .24 !important;
}

/* VNEW.0.130.3.8.4.7.3.4 — calibration keyboard mode + tighter desktop book anchors */
@media (min-width: 761px) {
  .garden1-book-hotspot {
    left: 2.2% !important;
    top: 66.8% !important;
    width: 16.5% !important;
    height: 18.8% !important;
    min-width: 8.75rem;
    min-height: 6.25rem;
  }

  .garden1-book-hotspot::before,
  .garden1-book-hotspot::after {
    left: 31%;
    top: 62%;
  }

  .orangery-book-hotspot {
    left: 2.4% !important;
    top: 62.6% !important;
    width: 18.8% !important;
    height: 22.4% !important;
    min-width: 9rem;
    min-height: 6.7rem;
  }

  .orangery-book-hotspot::before,
  .orangery-book-hotspot::after {
    left: 45%;
    top: 68%;
  }

  .garden2-book-hotspot {
    left: 1.1% !important;
    top: 74.2% !important;
    width: 16.6% !important;
    height: 17.6% !important;
    min-width: 8rem;
    min-height: 5.8rem;
  }

  .garden2-book-hotspot::before,
  .garden2-book-hotspot::after {
    left: 27%;
    top: 70%;
  }
}

html.aom-calibration-mode .world-frame button:not([hidden]),
html.aom-calibration-mode .world-frame [role="button"]:not([hidden]),
html.aom-calibration-mode .world-frame [data-nav],
html.aom-calibration-mode .world-frame [data-map-place] {
  outline: 2px dashed rgba(248, 222, 160, .82) !important;
  outline-offset: 2px;
  box-shadow: 0 0 0 1px rgba(48, 30, 6, .24), 0 0 28px rgba(244, 210, 126, .18) !important;
}

html.aom-calibration-mode .garden1-book-hotspot,
html.aom-calibration-mode .orangery-book-hotspot,
html.aom-calibration-mode .garden2-book-hotspot,
html.aom-calibration-mode .garden1-exit-hotspot,
html.aom-calibration-mode .orangery-exit-hotspot,
html.aom-calibration-mode .garden2-exit-hotspot,
html.aom-calibration-mode .domain-map-hotspot {
  background: rgba(201, 152, 57, .14) !important;
}

html.aom-calibration-mode .garden1-book-hotspot span,
html.aom-calibration-mode .orangery-book-hotspot span,
html.aom-calibration-mode .garden2-book-hotspot span {
  display: block !important;
  position: absolute;
  left: 50%;
  top: calc(100% + .4rem);
  transform: translateX(-50%);
  padding: .2rem .5rem;
  border-radius: 999px;
  background: rgba(18, 15, 10, .82);
  color: #fff4d6;
  font-size: .66rem;
  letter-spacing: .12em;
  white-space: nowrap;
  text-shadow: none;
  box-shadow: 0 8px 22px rgba(0, 0, 0, .25);
}

html.aom-calibration-mode .garden1-book-hotspot::before,
html.aom-calibration-mode .orangery-book-hotspot::before,
html.aom-calibration-mode .garden2-book-hotspot::before {
  width: clamp(1.55rem, 3vw, 2.05rem);
  height: clamp(1.55rem, 3vw, 2.05rem);
  border-color: rgba(255, 242, 214, .95);
  box-shadow:
    0 0 0 1px rgba(71, 51, 19, .28) inset,
    0 0 18px rgba(253, 240, 198, .54),
    0 0 34px rgba(232, 208, 147, .34);
}

html.aom-calibration-mode .garden1-book-hotspot::after,
html.aom-calibration-mode .orangery-book-hotspot::after,
html.aom-calibration-mode .garden2-book-hotspot::after {
  width: clamp(3rem, 6vw, 4rem);
  height: clamp(3rem, 6vw, 4rem);
  border-color: rgba(255, 236, 188, .54);
  opacity: 1;
}

html.aom-calibration-mode body::after {
  content: "CALIBRATION ACTIVE · Alt+C pour masquer · ← / → pour changer de salle";
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 9999;
  padding: .55rem .85rem;
  border-radius: 999px;
  background: rgba(14, 11, 8, .88);
  color: #fff2d1;
  font-size: .72rem;
  letter-spacing: .08em;
  box-shadow: 0 12px 36px rgba(0, 0, 0, .28);
  pointer-events: none;
}

/* VNEW.0.130.3.8.4.7.3.4 — salle chrome allégé + maximes renforcées */
.world-frame:has(.garden1-scene) .site-mark,
.world-frame:has(.orangery-scene) .site-mark,
.world-frame:has(.garden2-scene) .site-mark,
.world-frame:has(.recall-curve-entry-scene) .site-mark,
.world-frame:has(.palace-passage-scene) .site-mark,
.world-frame:has(.palace-antechamber-scene) .site-mark,
.world-frame:has(.palace-grand-hall-scene) .site-mark,
.world-frame:has(.palace-routes-gallery-scene) .site-mark,
.world-frame:has(.palace-zones-scene) .site-mark,
.world-frame:has(.palace-personal-scene) .site-mark {
  display: none !important;
}

.garden1-whisper,
.orangery-maxim,
.garden2-maxim,
.recall-curve-entry-maxim {
  width: min(52rem, calc(100% - 7.5rem)) !important;
  bottom: 1rem !important;
  color: rgba(251, 246, 231, .88) !important;
  text-shadow:
    0 2px 16px rgba(0,0,0,.66),
    0 0 1px rgba(72, 46, 9, .24);
  font-size: clamp(.92rem, 1.55vw, 1.18rem) !important;
  line-height: 1.34 !important;
  letter-spacing: .012em;
}

@media (max-width: 760px) {
  .garden1-whisper,
  .orangery-maxim,
  .garden2-maxim,
  .recall-curve-entry-maxim {
    width: min(94vw, 32rem) !important;
    bottom: .72rem !important;
    font-size: clamp(.86rem, 3.15vw, 1rem) !important;
    line-height: 1.3 !important;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.7.3.4 — HARMONISATION DIÉGÉTIQUE DES INTERACTIONS PC
   Book/exit interactions are anchored to believable objects/paths. Normal
   mode stays almost text-free; Alt+C reveals QA geometry and destinations.
   ============================================================ */

/* --- Shared normal-mode rule: clickable geometry stays generous, visible cue stays tiny. --- */
.garden1-book-hotspot span,
.orangery-book-hotspot span,
.garden2-book-hotspot span,
.garden1-exit-hotspot span,
.orangery-exit-hotspot span,
.garden2-exit-hotspot span {
  display: none !important;
}

.garden1-book-hotspot,
.orangery-book-hotspot,
.garden2-book-hotspot,
.garden1-exit-hotspot,
.orangery-exit-hotspot,
.garden2-exit-hotspot {
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  overflow: visible;
}

/* --- BOOKS · per-master calibration --- */
@media (min-width: 761px) {
  /* Jardin des Associations · actual open book on the left stone bench. */
  .garden1-book-hotspot {
    left: 5.0% !important;
    top: 58.8% !important;
    width: 10.5% !important;
    height: 11.5% !important;
    min-width: 7.2rem;
    min-height: 5.2rem;
  }
  .garden1-book-hotspot::before,
  .garden1-book-hotspot::after {
    left: 50% !important;
    top: 52% !important;
  }

  /* Orangerie · large open Living Book on its dedicated lectern. */
  .orangery-book-hotspot {
    left: 5.5% !important;
    top: 61.0% !important;
    width: 19.0% !important;
    height: 20.5% !important;
    min-width: 9.4rem;
    min-height: 7.0rem;
  }
  .orangery-book-hotspot::before,
  .orangery-book-hotspot::after {
    left: 50% !important;
    top: 52% !important;
  }

  /* Jardin des Repères · small book stack intentionally retained; QA note BOOK VISUAL WEAK. */
  .garden2-book-hotspot {
    left: 0.0% !important;
    top: 69.0% !important;
    width: 13.0% !important;
    height: 20.0% !important;
    min-width: 7.6rem;
    min-height: 6.0rem;
  }
  .garden2-book-hotspot::before,
  .garden2-book-hotspot::after {
    left: 40% !important;
    top: 50% !important;
  }
}

/* Tiny diegetic book cue: a breathing ivory glint, not a UI circle. */
.garden1-book-hotspot::before,
.orangery-book-hotspot::before,
.garden2-book-hotspot::before {
  width: clamp(.85rem, 1.5vw, 1.15rem) !important;
  height: clamp(.85rem, 1.5vw, 1.15rem) !important;
  border: 1px solid rgba(255, 242, 207, .38) !important;
  background: radial-gradient(circle, rgba(255, 247, 221, .72), rgba(242, 223, 169, .18) 46%, transparent 72%) !important;
  box-shadow: 0 0 12px rgba(255, 240, 196, .22), 0 0 24px rgba(228, 201, 136, .10) !important;
  animation: atlas-book-pulse 3.8s ease-in-out infinite !important;
}

.garden1-book-hotspot::after,
.orangery-book-hotspot::after,
.garden2-book-hotspot::after {
  width: clamp(1.55rem, 2.8vw, 2.1rem) !important;
  height: clamp(1.55rem, 2.8vw, 2.1rem) !important;
  border: 1px solid rgba(244, 226, 181, .12) !important;
  animation: atlas-book-ring 4.2s ease-out infinite !important;
}

/* --- NEXT / EXIT · attach navigation to visible architectural continuity. --- */
@media (min-width: 761px) {
  /* Jardin I → Orangerie: central steps / pavilion axis, no longer the left flower pot. */
  .garden1-exit-hotspot {
    left: 45.0% !important;
    top: 46.0% !important;
    width: 10.0% !important;
    height: 17.0% !important;
    min-width: 7.2rem;
    min-height: 6.0rem;
  }

  /* Orangerie → Jardin II: center perspective beyond the fountain. */
  .orangery-exit-hotspot {
    left: 46.0% !important;
    top: 45.0% !important;
    width: 8.0% !important;
    height: 18.0% !important;
    min-width: 6.8rem;
    min-height: 7.0rem;
  }
}

/* Exit cue is a faint path/threshold breath, not a labelled button. */
.garden1-exit-hotspot::before,
.orangery-exit-hotspot::before,
.garden2-exit-hotspot::before {
  inset: 22% 31% !important;
  border-radius: 50% !important;
  border: 1px solid rgba(246, 232, 192, .11) !important;
  background: radial-gradient(ellipse, rgba(249, 231, 181, .10), transparent 68%) !important;
  box-shadow: 0 0 24px rgba(233, 211, 156, .06) !important;
  opacity: .42;
  animation: aom-threshold-breathe 4.8s ease-in-out infinite;
}

.garden1-exit-hotspot:hover::before,
.garden1-exit-hotspot:focus-visible::before,
.orangery-exit-hotspot:hover::before,
.orangery-exit-hotspot:focus-visible::before,
.garden2-exit-hotspot:hover::before,
.garden2-exit-hotspot:focus-visible::before {
  border-color: rgba(248, 234, 194, .26) !important;
  background: radial-gradient(ellipse, rgba(252, 237, 198, .16), transparent 68%) !important;
  box-shadow: 0 0 32px rgba(240, 219, 166, .12) !important;
  opacity: .8;
}

@keyframes aom-threshold-breathe {
  0%,100% { opacity: .24; transform: scale(.96); }
  50% { opacity: .52; transform: scale(1.03); }
}

/* --- CALIBRATION · Alt+C --- */
html.aom-calibration-mode .garden1-book-hotspot,
html.aom-calibration-mode .orangery-book-hotspot,
html.aom-calibration-mode .garden2-book-hotspot,
html.aom-calibration-mode .garden1-exit-hotspot,
html.aom-calibration-mode .orangery-exit-hotspot,
html.aom-calibration-mode .garden2-exit-hotspot {
  outline: 2px dashed rgba(255, 221, 142, .92) !important;
  outline-offset: -2px !important;
  background:
    radial-gradient(circle at center, rgba(255,242,202,.17) 0 3px, transparent 4px),
    rgba(201, 152, 57, .09) !important;
  box-shadow: inset 0 0 0 1px rgba(54, 35, 9, .30), 0 0 22px rgba(244, 210, 126, .14) !important;
}

/* Hidden progression exits become visible as non-interactive QA geometry in calibration. */
html.aom-calibration-mode .garden1-exit-hotspot[hidden],
html.aom-calibration-mode .orangery-exit-hotspot[hidden],
html.aom-calibration-mode .garden2-exit-hotspot[hidden] {
  display: block !important;
  pointer-events: none !important;
  opacity: .72 !important;
}

html.aom-calibration-mode .garden1-book-hotspot span,
html.aom-calibration-mode .orangery-book-hotspot span,
html.aom-calibration-mode .garden2-book-hotspot span,
html.aom-calibration-mode .garden1-exit-hotspot span,
html.aom-calibration-mode .orangery-exit-hotspot span,
html.aom-calibration-mode .garden2-exit-hotspot span {
  display: block !important;
  position: absolute;
  left: 50% !important;
  top: calc(100% + .42rem) !important;
  bottom: auto !important;
  transform: translateX(-50%) !important;
  padding: .28rem .54rem !important;
  border: 1px solid rgba(244, 217, 151, .34);
  border-radius: 999px;
  background: rgba(18, 14, 9, .90) !important;
  color: rgba(255, 242, 210, .98) !important;
  font-size: .64rem !important;
  font-weight: 700;
  letter-spacing: .08em !important;
  line-height: 1 !important;
  white-space: nowrap;
  text-shadow: none !important;
  box-shadow: 0 8px 22px rgba(0,0,0,.28);
}

/* Calibration brightens the exact visual cue center without changing the hit area. */
html.aom-calibration-mode .garden1-book-hotspot::before,
html.aom-calibration-mode .orangery-book-hotspot::before,
html.aom-calibration-mode .garden2-book-hotspot::before,
html.aom-calibration-mode .garden1-exit-hotspot::before,
html.aom-calibration-mode .orangery-exit-hotspot::before,
html.aom-calibration-mode .garden2-exit-hotspot::before {
  border-color: rgba(255, 241, 202, .88) !important;
  opacity: 1 !important;
  box-shadow: 0 0 18px rgba(255, 236, 184, .48), 0 0 34px rgba(234, 205, 139, .28) !important;
}

/* VNEW.0.130.3.8.4.7.3.4 — calibration exits are QA-navigation controls, not inert geometry. */
html.aom-calibration-mode .garden1-exit-hotspot[hidden],
html.aom-calibration-mode .orangery-exit-hotspot[hidden],
html.aom-calibration-mode .garden2-exit-hotspot[hidden] {
  display: block !important;
  pointer-events: auto !important;
  cursor: pointer !important;
  opacity: .92 !important;
}

/* ============================================================
   VNEW.0.130.3.8.4.7.3.4 — ORANGERIE · NOUVEAU MASTER + RECALAGE LIVRE / NEXT
   Candidate master quasi final: no central fountain/barrier, clear axial path.
   ============================================================ */
@media (min-width: 761px) {
  .orangery-book-hotspot {
    left: 6.2% !important;
    top: 60.5% !important;
    width: 20.3% !important;
    height: 21.5% !important;
    min-width: 10rem;
    min-height: 7rem;
  }

  .orangery-book-hotspot::before,
  .orangery-book-hotspot::after {
    left: 52% !important;
    top: 43% !important;
  }

  .orangery-exit-hotspot {
    left: 44.0% !important;
    top: 52.0% !important;
    width: 12.0% !important;
    height: 26.0% !important;
    min-width: 8rem;
    min-height: 10rem;
  }

  .orangery-exit-hotspot::before {
    inset: 14% 30% !important;
    border-radius: 45% !important;
  }
}

@media (max-width: 760px) and (orientation: portrait) {
  .orangery-book-hotspot {
    left: 5.0% !important;
    top: 63.5% !important;
    width: 31% !important;
    height: 20% !important;
  }

  .orangery-book-hotspot::before,
  .orangery-book-hotspot::after {
    left: 54% !important;
    top: 45% !important;
  }

  .orangery-exit-hotspot {
    left: 39% !important;
    top: 50% !important;
    width: 22% !important;
    height: 25% !important;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.7.3.4 — JARDIN DES REPÈRES · MASTER CANDIDAT + QA PC
   Orientation 3/4 canonique: Observatoire prioritaire, Palais latéral.
   ============================================================ */
@media (min-width: 761px) {
  .garden2-book-hotspot {
    left: .8% !important;
    top: 59.5% !important;
    width: 27.5% !important;
    height: 35.0% !important;
    min-width: 12rem;
    min-height: 10.5rem;
  }

  .garden2-book-hotspot::before,
  .garden2-book-hotspot::after {
    left: 49% !important;
    top: 54% !important;
  }

  .garden2-exit-hotspot {
    min-width: 8rem;
    min-height: 9rem;
  }

  .garden2-exit-hotspot::before {
    inset: 13% 28% !important;
    border-radius: 48% !important;
  }
}

@media (max-width: 760px) and (orientation: portrait) {
  .garden2-book-hotspot {
    left: 0% !important;
    top: 62% !important;
    width: 42% !important;
    height: 29% !important;
  }

  .garden2-book-hotspot::before,
  .garden2-book-hotspot::after {
    left: 49% !important;
    top: 52% !important;
  }

  .garden2-exit-hotspot {
    left: 45% !important;
    top: 48% !important;
    width: 24% !important;
    height: 25% !important;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.7.3.5 — JARDIN DES REPÈRES
   Micro-calibration finale BOOK / NEXT + QA PC.
   Master visuel inchangé : seules les géométries interactives sont affinées.
   ============================================================ */
@media (min-width: 761px) {
  /* BOOK · zone resserrée sur le Livre + pupitre, sans englober inutilement
     la lanterne et les zones mortes du coin inférieur gauche. */
  .garden2-book-hotspot {
    left: 2.8% !important;
    top: 61.5% !important;
    width: 27.5% !important;
    height: 31.5% !important;
    min-width: 11.2rem;
    min-height: 9.4rem;
  }

  .garden2-book-hotspot::before,
  .garden2-book-hotspot::after {
    left: 50% !important;
    top: 49% !important;
  }

  /* NEXT · même axe X, remonté vers le seuil réel de l'Observatoire. */
  .garden2-exit-hotspot {
    min-width: 8rem;
    min-height: 8.2rem;
  }

  .garden2-exit-hotspot::before {
    inset: 12% 27% !important;
    border-radius: 48% !important;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.8.1 — JARDIN DES ASSOCIATIONS
   Nouveau master candidat : continuité directe vers l’Orangerie gelée.
   Micro-calibration BOOK / NEXT + QA PC.
   ============================================================ */
@media (min-width: 761px) {
  /* Grand Livre visible au premier plan gauche : cible confortable mais
     centrée sur les pages et le pupitre, sans absorber l’armillaire. */
  .garden1-book-hotspot {
    left: 0% !important;
    top: 56.0% !important;
    width: 28.0% !important;
    height: 31.0% !important;
    min-width: 13rem;
    min-height: 10rem;
  }

  .garden1-book-hotspot::before,
  .garden1-book-hotspot::after {
    left: 50% !important;
    top: 50% !important;
  }

  /* Jardin I → Orangerie : la cible suit désormais la verrière visible
     et ses marches, pour que la continuité spatiale soit évidente. */
  .garden1-exit-hotspot {
    left: 49.0% !important;
    top: 28.0% !important;
    width: 12.0% !important;
    height: 25.0% !important;
    min-width: 7.5rem;
    min-height: 8.5rem;
  }

  .garden1-exit-hotspot::before {
    inset: 10% 27% !important;
    border-radius: 46% !important;
  }
}

@media (max-width: 760px) and (orientation: portrait) {
  .garden1-book-hotspot {
    left: 0% !important;
    top: 64% !important;
    width: 39% !important;
    height: 24% !important;
  }

  .garden1-book-hotspot::before,
  .garden1-book-hotspot::after {
    left: 50% !important;
    top: 45% !important;
  }

  .garden1-exit-hotspot {
    left: 43% !important;
    top: 31% !important;
    width: 24% !important;
    height: 27% !important;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.8.3.4 — ASSOCIER · prototype spatial intégré
   Livre -> paire -> projection -> effacement -> rappel -> retour Livre
   ============================================================ */
.garden1-exercise-layer.is-spatial-associate {
  padding: 0;
  place-items: stretch;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(8, 11, 8, .10), rgba(8, 11, 8, .18));
  backdrop-filter: none;
}

.spatial-associate {
  position: absolute;
  inset: 0;
  overflow: hidden;
  color: #fff8df;
  isolation: isolate;
}

.spatial-associate::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  background:
    radial-gradient(circle at 52% 57%, rgba(232, 190, 92, .08), transparent 28%),
    linear-gradient(180deg, rgba(2, 4, 3, .08), rgba(2, 4, 3, .20));
  opacity: .9;
}

.spatial-associate--recall::before,
.spatial-associate--result-ok::before,
.spatial-associate--result-later::before {
  background: linear-gradient(180deg, rgba(4, 6, 5, .20), rgba(4, 6, 5, .38));
}

.spatial-associate__content {
  position: absolute;
  inset: 0;
}

.spatial-associate__quit {
  position: absolute;
  z-index: 8;
  top: clamp(.8rem, 2.2vh, 1.5rem);
  right: clamp(.8rem, 1.8vw, 1.4rem);
  border: 1px solid rgba(240, 222, 168, .34);
  border-radius: 999px;
  padding: .55rem .82rem;
  background: rgba(15, 14, 10, .48);
  color: rgba(255, 244, 213, .86);
  backdrop-filter: blur(8px);
  cursor: pointer;
  font: inherit;
  font-size: .68rem;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.spatial-associate__quit:hover,
.spatial-associate__quit:focus-visible {
  background: rgba(15, 14, 10, .68);
  border-color: rgba(244, 216, 142, .68);
}

.spatial-associate__pair {
  position: absolute;
  z-index: 5;
  left: 50%;
  top: 29%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  gap: clamp(.9rem, 2.6vw, 2.4rem);
  white-space: nowrap;
  text-align: center;
  text-shadow: 0 2px 16px rgba(0,0,0,.78), 0 0 32px rgba(0,0,0,.48);
  animation: spatialPairIn .55s ease both;
}

.spatial-associate__pair strong {
  font-size: clamp(1.55rem, 3.2vw, 3.2rem);
  font-weight: 500;
  letter-spacing: .09em;
}

.spatial-associate__pair i {
  font-size: clamp(1.4rem, 2.5vw, 2.4rem);
  color: #efd48f;
  font-style: normal;
}

.spatial-associate__scene-copy,
.spatial-associate__repair-copy {
  position: absolute;
  z-index: 6;
  left: 50%;
  transform: translateX(-50%);
  margin: 0;
  width: min(88vw, 48rem);
  text-align: center;
  text-shadow: 0 2px 14px rgba(0,0,0,.82);
}

.spatial-associate__scene-copy {
  top: 35.5%;
  font-size: clamp(.95rem, 1.55vw, 1.35rem);
  font-style: italic;
}

.spatial-associate__repair-copy {
  top: 41%;
  font-size: clamp(.72rem, 1.1vw, .92rem);
  letter-spacing: .035em;
  color: #f1ddb0;
}

.spatial-associate__projection {
  position: absolute;
  z-index: 3;
  left: 53%;
  top: 61%;
  width: min(46vw, 47rem);
  transform: translate(-50%, -50%) scale(.96);
  opacity: 0;
  filter: saturate(.92) contrast(1.03) drop-shadow(0 16px 28px rgba(0,0,0,.24));
  -webkit-mask-image: radial-gradient(ellipse at center, #000 45%, rgba(0,0,0,.92) 58%, transparent 81%);
  mask-image: radial-gradient(ellipse at center, #000 45%, rgba(0,0,0,.92) 58%, transparent 81%);
  pointer-events: none;
}

.spatial-associate__projection img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 44%;
}

.spatial-associate--forming .spatial-associate__projection {
  opacity: .46;
  transform: translate(-50%, -50%) scale(.92);
  animation: spatialProjectionForm 1.45s ease both;
}

.spatial-associate--active .spatial-associate__projection,
.spatial-associate--repair .spatial-associate__projection {
  opacity: .88;
  transform: translate(-50%, -50%) scale(1);
  animation: spatialProjectionBreathe 4.4s ease-in-out infinite alternate;
}

.spatial-associate--repair .spatial-associate__projection {
  filter: saturate(1.05) contrast(1.05) drop-shadow(0 0 22px rgba(237, 187, 81, .28));
}

.spatial-associate--fade .spatial-associate__projection {
  animation: spatialProjectionFade .9s ease forwards;
}

.spatial-associate__book-signal {
  position: absolute;
  z-index: 4;
  left: 13%;
  top: 72%;
  width: clamp(7rem, 18vw, 18rem);
  aspect-ratio: 1.55;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(243, 200, 97, .40), rgba(243, 200, 97, .10) 45%, transparent 72%);
  filter: blur(1px);
  animation: spatialBookWake .65s ease both;
  pointer-events: none;
}

.spatial-associate__book-trail {
  position: absolute;
  z-index: 2;
  left: 18%;
  top: 68%;
  width: 31%;
  height: 2px;
  transform: rotate(-15deg);
  transform-origin: left center;
  background: linear-gradient(90deg, rgba(242,195,86,.82), rgba(242,195,86,.18), transparent);
  box-shadow: 0 0 14px rgba(242,195,86,.38);
  opacity: .72;
  animation: spatialTrail 1.2s ease both;
}

.spatial-associate__center-copy {
  position: absolute;
  z-index: 6;
  left: 50%;
  top: 46%;
  transform: translate(-50%, -50%);
  display: grid;
  gap: .5rem;
  width: min(88vw, 36rem);
  text-align: center;
  text-shadow: 0 2px 18px rgba(0,0,0,.8);
}

.spatial-associate__center-copy span,
.spatial-associate__recall > span {
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .22em;
  color: #e8cf8f;
}

.spatial-associate__center-copy strong {
  font-size: clamp(1.25rem, 2.5vw, 2.2rem);
  font-weight: 500;
}

.spatial-associate__recall,
.spatial-associate__result {
  position: absolute;
  z-index: 6;
  left: 50%;
  top: 55%;
  transform: translate(-50%, -50%);
  width: min(88vw, 37rem);
  padding: clamp(1.2rem, 3vw, 2rem);
  border: 1px solid rgba(237, 213, 153, .26);
  border-radius: 1.25rem;
  background: rgba(13, 14, 11, .54);
  box-shadow: 0 20px 70px rgba(0,0,0,.28);
  backdrop-filter: blur(10px);
  text-align: center;
  animation: spatialRecallIn .45s ease both;
}

.spatial-associate__recall h2,
.spatial-associate__result h2 {
  margin: .4rem 0 .55rem;
  font-size: clamp(1.6rem, 3.2vw, 2.8rem);
  font-weight: 500;
}

.spatial-associate__recall p,
.spatial-associate__result p {
  margin: 0 auto;
  max-width: 31rem;
  color: rgba(255,244,215,.82);
  line-height: 1.55;
}

.spatial-associate__recall-actions {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: .7rem;
  margin-top: 1.35rem;
}

.spatial-associate__button {
  min-width: 9.2rem;
  border: 1px solid rgba(239, 216, 159, .42);
  border-radius: 999px;
  padding: .72rem 1.08rem;
  background: rgba(18, 19, 15, .58);
  color: #fff4d8;
  cursor: pointer;
  font: inherit;
  font-size: .78rem;
  letter-spacing: .03em;
}

.spatial-associate__button:hover,
.spatial-associate__button:focus-visible {
  border-color: rgba(248, 226, 169, .82);
  background: rgba(31, 31, 23, .72);
}

.spatial-associate__button--primary {
  background: rgba(32, 91, 78, .78);
  border-color: rgba(126, 220, 195, .72);
}

.spatial-associate__seal {
  display: grid;
  place-items: center;
  width: 3.2rem;
  height: 3.2rem;
  margin: 0 auto .6rem;
  border: 1px solid rgba(215, 187, 110, .72);
  border-radius: 50%;
  color: #f2dda3;
  font-size: 1.25rem;
  box-shadow: inset 0 0 0 5px rgba(215,187,110,.08);
}

.spatial-associate__seal--later {
  opacity: .65;
}

.spatial-associate__result .spatial-associate__button {
  margin-top: 1.25rem;
}

.spatial-associate__whisper {
  position: absolute;
  z-index: 5;
  left: 50%;
  bottom: clamp(.7rem, 2vh, 1.4rem);
  transform: translateX(-50%);
  margin: 0;
  width: min(80vw, 34rem);
  color: rgba(255, 244, 215, .72);
  text-align: center;
  font-size: clamp(.68rem, 1vw, .82rem);
  font-style: italic;
  text-shadow: 0 1px 8px rgba(0,0,0,.78);
}

@keyframes spatialPairIn {
  from { opacity: 0; transform: translate(-50%, -44%) scale(.96); }
  to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

@keyframes spatialProjectionForm {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.84); filter: blur(7px) saturate(.8); }
  100% { opacity: .82; transform: translate(-50%, -50%) scale(1); filter: blur(0) saturate(.95); }
}

@keyframes spatialProjectionBreathe {
  from { transform: translate(-50%, -50%) scale(.995); }
  to { transform: translate(-50%, -50%) scale(1.015); }
}

@keyframes spatialProjectionFade {
  from { opacity: .82; transform: translate(-50%, -50%) scale(1); filter: blur(0); }
  to { opacity: 0; transform: translate(-50%, -50%) scale(1.035); filter: blur(7px); }
}

@keyframes spatialBookWake {
  from { opacity: 0; transform: translate(-50%, -50%) scale(.72); }
  55% { opacity: 1; }
  to { opacity: .78; transform: translate(-50%, -50%) scale(1); }
}

@keyframes spatialTrail {
  from { opacity: 0; transform: rotate(-15deg) scaleX(.05); }
  to { opacity: .72; transform: rotate(-15deg) scaleX(1); }
}

@keyframes spatialRecallIn {
  from { opacity: 0; transform: translate(-50%, -46%) scale(.98); }
  to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

@media (max-width: 760px) {
  .garden1-exercise-layer.is-spatial-associate {
    overflow: hidden;
    padding: 0;
  }

  .spatial-associate__pair {
    top: 25%;
    gap: .7rem;
  }

  .spatial-associate__pair strong {
    font-size: clamp(1.05rem, 6vw, 1.8rem);
  }

  .spatial-associate__scene-copy {
    top: 31%;
    font-size: .9rem;
  }

  .spatial-associate__projection {
    left: 53%;
    top: 57%;
    width: min(86vw, 34rem);
  }

  .spatial-associate__book-signal {
    left: 18%;
    top: 73%;
    width: 32vw;
  }

  .spatial-associate__book-trail {
    left: 19%;
    top: 68%;
    width: 26%;
  }

  .spatial-associate__recall,
  .spatial-associate__result {
    top: 52%;
    width: min(92vw, 32rem);
  }

  .spatial-associate__quit {
    top: .55rem;
    right: .55rem;
    font-size: .6rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .spatial-associate *,
  .spatial-associate *::before,
  .spatial-associate *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}


/* ============================================================
   VNEW.0.130.3.8.4.8.3.5.4 — LIVRE VIVANT CANONIQUE
   Assets transparents ferme / active / ouvert + integration test Jardin I.
   Le master de salle reste inchange : le livre canonique est une couche independante.
   ============================================================ */
.garden1-canonical-book {
  position: absolute;
  z-index: 3;
  left: -1.5%;
  bottom: 10.2%;
  width: min(29.2vw, 35rem);
  aspect-ratio: 651 / 441;
  pointer-events: none;
  user-select: none;
  filter: drop-shadow(0 12px 22px rgba(0,0,0,.18));
  opacity: .98;
}

.garden1-canonical-book__state {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: left bottom;
  transition: opacity .28s ease, transform .34s ease, filter .34s ease;
  transform-origin: 42% 74%;
}

.garden1-canonical-book__state--closed {
  opacity: 1;
  transform: scale(.985);
}

.garden1-canonical-book__state--active {
  opacity: 0;
  transform: scale(.97);
  filter: saturate(.94) brightness(.96);
}

.garden1-book-hotspot:hover + .garden1-canonical-book .garden1-canonical-book__state--closed,
.garden1-book-hotspot:focus-visible + .garden1-canonical-book .garden1-canonical-book__state--closed,
.garden1-scene.is-awake .garden1-canonical-book__state--closed {
  opacity: 0;
  transform: scale(1.01);
}

.garden1-book-hotspot:hover + .garden1-canonical-book .garden1-canonical-book__state--active,
.garden1-book-hotspot:focus-visible + .garden1-canonical-book .garden1-canonical-book__state--active,
.garden1-scene.is-awake .garden1-canonical-book__state--active {
  opacity: .93;
  transform: scale(1);
  filter: saturate(.92) brightness(.94) drop-shadow(0 0 12px rgba(238,196,98,.16));
}

/* Spatial prototype: the canonical book sits above the exercise layer. */
.spatial-associate__canonical-book {
  position: absolute;
  z-index: 4;
  left: -1.4%;
  bottom: 10.0%;
  width: min(29.4vw, 35.2rem);
  pointer-events: none;
  user-select: none;
  transform-origin: 40% 78%;
  animation: spatialCanonicalBookIn .42s ease both;
}

.spatial-associate__canonical-book img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 14px 24px rgba(0,0,0,.20));
}

.spatial-associate__canonical-book--active {
  width: min(29.6vw, 35.5rem);
  opacity: .92;
}

.spatial-associate__canonical-book--active img {
  filter: saturate(.90) brightness(.93) drop-shadow(0 0 13px rgba(237,191,84,.15));
}

.spatial-associate__canonical-book--open {
  left: -1.0%;
  bottom: 11.4%;
  width: min(32.3vw, 38.5rem);
  opacity: .96;
}

.spatial-associate__canonical-book--open img {
  filter: saturate(.94) brightness(.95) drop-shadow(0 16px 26px rgba(0,0,0,.20));
}

.spatial-associate__canonical-book--closed {
  opacity: .96;
}

.spatial-associate__book-signal {
  opacity: .34;
}

@keyframes spatialCanonicalBookIn {
  from { opacity: 0; transform: translateY(.35rem) scale(.97); }
  to { transform: translateY(0) scale(1); }
}

@media (max-width: 760px) {
  .garden1-canonical-book {
    left: -3%;
    bottom: 7.5%;
    width: min(48vw, 21rem);
  }

  .spatial-associate__canonical-book,
  .spatial-associate__canonical-book--active {
    left: -3%;
    bottom: 7%;
    width: min(48vw, 21rem);
  }

  .spatial-associate__canonical-book--open {
    left: -4%;
    bottom: 7%;
    width: min(55vw, 24rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  .garden1-canonical-book__state,
  .spatial-associate__canonical-book {
    transition: none !important;
    animation: none !important;
  }
}


/* The canonical asset now provides the visible affordance in Jardin I. */
html:not(.aom-calibration-mode) .garden1-book-hotspot::before {
  opacity: .18 !important;
  animation: none !important;
}
html:not(.aom-calibration-mode) .garden1-book-hotspot::after {
  opacity: .10 !important;
  animation: none !important;
}
html:not(.aom-calibration-mode) .garden1-book-hotspot:hover::before,
html:not(.aom-calibration-mode) .garden1-book-hotspot:focus-visible::before {
  opacity: .42 !important;
}

/* ============================================================
   VNEW.0.130.3.8.4.8.3.5.6 — ASSOCIER · ETAT ACTION
   Nouvelle image d'action : la bougie mord réellement le glaçon.
   Projection statique -> ACTION -> effacement -> rappel actif.
   ============================================================ */
.spatial-associate--action .spatial-associate__projection,
.spatial-associate--repair .spatial-associate__projection--action {
  left: 53%;
  top: 60.5%;
  width: min(50vw, 52rem);
  opacity: .94;
  transform: translate(-50%, -50%) scale(1);
  filter: saturate(.94) brightness(.94) contrast(1.02) drop-shadow(0 18px 30px rgba(0,0,0,.24));
  -webkit-mask-image: radial-gradient(ellipse at center, #000 52%, rgba(0,0,0,.96) 68%, transparent 92%);
  mask-image: radial-gradient(ellipse at center, #000 52%, rgba(0,0,0,.96) 68%, transparent 92%);
  animation: spatialActionIn .55s ease both, spatialActionHold 2.1s .55s ease-in-out both;
}

.spatial-associate--action .spatial-associate__projection img,
.spatial-associate--repair .spatial-associate__projection--action img {
  border-radius: 0;
}

.spatial-associate--action .spatial-associate__pair,
.spatial-associate--repair .spatial-associate__pair {
  opacity: .74;
  transform: translate(-50%, -50%) scale(.94);
}

.spatial-associate--action .spatial-associate__scene-copy {
  top: 35%;
  color: rgba(255,248,223,.93);
}

@keyframes spatialActionIn {
  from { opacity: 0; transform: translate(-50%, -50%) scale(.92); filter: blur(5px) saturate(.86) brightness(.88); }
  to { opacity: .94; transform: translate(-50%, -50%) scale(1); filter: blur(0) saturate(.94) brightness(.94); }
}

@keyframes spatialActionHold {
  from { transform: translate(-50%, -50%) scale(1); }
  to { transform: translate(-50%, -50%) scale(1.012); }
}

@media (max-width: 760px) {
  .spatial-associate--action .spatial-associate__projection,
  .spatial-associate--repair .spatial-associate__projection--action {
    left: 53%;
    top: 58%;
    width: min(92vw, 38rem);
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.8.3.5.7 — QA VIDEO · POLISSAGE UX
   Continuité physique du Livre, transition projection -> ACTION,
   rappel actif sans obstruction du locus et réparation hiérarchisée.
   ============================================================ */

/* Le Livre du prototype devient un deck persistant : les 3 états restent
   superposés et se croisent par opacité au lieu d'être remplacés brutalement. */
.spatial-associate__canonical-book {
  aspect-ratio: 1.42;
  height: auto;
  opacity: 1;
  animation: none;
  filter: drop-shadow(0 12px 22px rgba(0,0,0,.16));
}

.spatial-associate__canonical-book-state {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: left bottom;
  opacity: 0;
  transform-origin: left bottom;
  transition:
    opacity .48s ease,
    transform .52s cubic-bezier(.22,.72,.28,1),
    filter .48s ease;
  will-change: opacity, transform;
  pointer-events: none;
}

.spatial-associate__canonical-book-state--closed {
  transform: scale(.985);
  filter: saturate(.94) brightness(.96);
}

.spatial-associate__canonical-book-state--active {
  transform: scale(1.01);
  filter: saturate(.92) brightness(.95) drop-shadow(0 0 10px rgba(238,196,98,.13));
}

.spatial-associate__canonical-book-state--open {
  transform: scale(1.10);
  filter: saturate(.94) brightness(.95) drop-shadow(0 13px 22px rgba(0,0,0,.16));
}

.spatial-associate__canonical-book--closed .spatial-associate__canonical-book-state--closed,
.spatial-associate__canonical-book--active .spatial-associate__canonical-book-state--active,
.spatial-associate__canonical-book--open .spatial-associate__canonical-book-state--open {
  opacity: .97;
}

/* PC : livre environ 10 % plus petit, légèrement plus haut et plus à droite.
   Le point d'ancrage gauche/bas est désormais commun aux trois états. */
@media (min-width: 761px) {
  .garden1-canonical-book {
    left: .65%;
    bottom: 12.2%;
    width: min(26.4vw, 31.7rem);
  }

  .garden1-book-hotspot {
    left: 14.7%;
    top: 70.8%;
    width: 15.8%;
    height: 14.2%;
  }

  .spatial-associate__canonical-book,
  .spatial-associate__canonical-book--closed,
  .spatial-associate__canonical-book--active,
  .spatial-associate__canonical-book--open {
    left: .7%;
    bottom: 12.0%;
    width: min(26.7vw, 32rem);
  }

  /* Le panneau historique du Livre reste fonctionnel mais cesse d'écraser
     la scène : moins large, moins opaque et plus proche d'un objet diégétique. */
  .garden1-book-layer {
    padding: clamp(4.2rem, 8vh, 5.5rem) clamp(2rem, 8vw, 8rem) 3rem;
    background: rgba(13,14,9,.13);
    backdrop-filter: blur(1px);
  }

  .garden1-book-layer .living-book-shell {
    width: min(88vw, 60rem);
  }

  .garden1-book-layer .living-book {
    padding: .46rem;
    box-shadow: 0 24px 66px rgba(0,0,0,.38), inset 0 0 0 1px rgba(235,220,183,.12);
  }

  .garden1-book-layer .living-book__header {
    padding: .5rem .7rem .68rem;
  }

  .garden1-book-layer .living-book__header h2 {
    font-size: clamp(1.1rem, 2vw, 1.5rem);
  }

  .garden1-book-layer .living-book__spread {
    min-height: 24rem;
  }

  .garden1-book-layer .living-book__page {
    padding: clamp(1rem, 2.5vw, 1.85rem);
  }

  .garden1-book-layer .book-priority h3 {
    font-size: clamp(1.45rem, 2.9vw, 2.35rem);
  }
}

/* ACTION : vraie transition visuelle. Le dernier état statique reste sous
   l'image d'action pendant ~0,5 s et s'efface pendant que la morsure apparaît. */
.spatial-associate--action .spatial-associate__projection--action-base {
  left: 53%;
  top: 61%;
  width: min(46vw, 47rem);
  opacity: .88;
  transform: translate(-50%, -50%) scale(1);
  filter: saturate(.92) contrast(1.03) drop-shadow(0 16px 28px rgba(0,0,0,.20));
  animation: spatialActionBaseOut .50s ease forwards;
}

.spatial-associate--action .spatial-associate__projection--action {
  left: 53%;
  top: 61%;
  width: min(47vw, 48.2rem);
  opacity: 0;
  transform: translate(-50%, -50%) scale(.985);
  animation: spatialActionCrossInHold 3.30s cubic-bezier(.22,.72,.28,1) both;
}

.spatial-associate--repair .spatial-associate__projection--action {
  left: 53%;
  top: 61%;
  width: min(47vw, 48.2rem);
  opacity: 0;
  animation: spatialRepairActionInHold 3.18s ease both;
}

@keyframes spatialActionBaseOut {
  0% { opacity: .88; transform: translate(-50%, -50%) scale(1); filter: blur(0); }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(1.015); filter: blur(3px); }
}

@keyframes spatialActionCrossInHold {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.985); filter: blur(3px) saturate(.88) brightness(.91); }
  15% { opacity: .94; transform: translate(-50%, -50%) scale(1); filter: blur(0) saturate(.94) brightness(.94); }
  82% { opacity: .94; transform: translate(-50%, -50%) scale(1.006); filter: blur(0) saturate(.94) brightness(.94); }
  100% { opacity: .94; transform: translate(-50%, -50%) scale(1.012); filter: blur(0) saturate(.94) brightness(.94); }
}

@keyframes spatialRepairActionInHold {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.98); filter: blur(3px) saturate(.90); }
  16% { opacity: .94; transform: translate(-50%, -50%) scale(1); filter: blur(0) saturate(.96); }
  100% { opacity: .94; transform: translate(-50%, -50%) scale(1.01); filter: blur(0) saturate(.96); }
}

/* Rappel : le locus central reste entièrement disponible au regard.
   L'interface remonte dans la zone de texte utilisée avant l'apparition. */
.spatial-associate--recall .spatial-associate__recall {
  top: 31.5%;
  width: min(80vw, 34rem);
  padding: .78rem 1.05rem .9rem;
  border-color: rgba(237,213,153,.20);
  background: rgba(13,14,11,.35);
  box-shadow: 0 12px 38px rgba(0,0,0,.20);
  backdrop-filter: blur(5px);
}

.spatial-associate--recall .spatial-associate__recall h2 {
  margin: .25rem 0 .3rem;
  font-size: clamp(1.35rem, 2.35vw, 2rem);
}

.spatial-associate--recall .spatial-associate__recall p {
  max-width: 28rem;
  font-size: clamp(.72rem, .95vw, .86rem);
  line-height: 1.42;
}

.spatial-associate--recall .spatial-associate__recall-actions {
  margin-top: .7rem;
  gap: .55rem;
}

.spatial-associate--recall .spatial-associate__button {
  min-width: 8.5rem;
  padding: .6rem .95rem;
}

/* Réparation : l'information nouvelle devient prioritaire. */
.spatial-associate--repair .spatial-associate__pair {
  top: 25.8%;
  opacity: .46;
  transform: translate(-50%, -50%) scale(.82);
}

.spatial-associate--repair .spatial-associate__scene-copy {
  top: 30.7%;
  color: #f5dfa1;
  font-size: clamp(1.2rem, 2.15vw, 1.9rem);
  font-style: normal;
  font-weight: 700;
  letter-spacing: .10em;
}

.spatial-associate--repair .spatial-associate__repair-copy {
  top: 36.2%;
  font-size: clamp(.72rem, 1vw, .88rem);
}

@media (max-width: 760px) {
  .spatial-associate__canonical-book,
  .spatial-associate__canonical-book--closed,
  .spatial-associate__canonical-book--active {
    left: 0;
    bottom: 8.5%;
    width: min(43vw, 19rem);
  }

  .spatial-associate__canonical-book--open {
    left: 0;
    bottom: 8.5%;
    width: min(43vw, 19rem);
  }

  .spatial-associate--action .spatial-associate__projection--action-base,
  .spatial-associate--action .spatial-associate__projection--action,
  .spatial-associate--repair .spatial-associate__projection--action {
    left: 53%;
    top: 58%;
    width: min(88vw, 36rem);
  }

  .spatial-associate--recall .spatial-associate__recall {
    top: 31%;
    width: min(92vw, 30rem);
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.8.3.5.8 — FINITION ASSOCIER
   Échelle ACTION resserrée, hiérarchie FAIS AGIR renforcée,
   rappel actif allégé sans obstruction du locus.
   ============================================================ */

/* ACTION : environ -9 % face à la V3.5.7, même centre que la projection.
   Le fond de crossfade conserve sa géométrie pour donner une transition
   continue, tandis que l'image de morsure s'installe légèrement plus petite. */
.spatial-associate--action .spatial-associate__projection--action,
.spatial-associate--repair .spatial-associate__projection--action {
  left: 53%;
  top: 61%;
  width: min(42.8vw, 43.9rem);
}

.spatial-associate--action .spatial-associate__projection--action {
  transform: translate(-50%, -50%) scale(.99);
}

@keyframes spatialActionCrossInHold {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.97); filter: blur(3px) saturate(.88) brightness(.91); }
  15% { opacity: .94; transform: translate(-50%, -50%) scale(.99); filter: blur(0) saturate(.94) brightness(.94); }
  82% { opacity: .94; transform: translate(-50%, -50%) scale(.996); filter: blur(0) saturate(.94) brightness(.94); }
  100% { opacity: .94; transform: translate(-50%, -50%) scale(1); filter: blur(0) saturate(.94) brightness(.94); }
}

@keyframes spatialRepairActionInHold {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.96); filter: blur(3px) saturate(.90); }
  16% { opacity: .94; transform: translate(-50%, -50%) scale(.985); filter: blur(0) saturate(.96); }
  100% { opacity: .94; transform: translate(-50%, -50%) scale(.995); filter: blur(0) saturate(.96); }
}

/* Réparation : la paire est une référence secondaire, FAIS AGIR est l'ordre
   perceptif principal. */
.spatial-associate--repair .spatial-associate__pair {
  top: 25.6%;
  opacity: .39;
  transform: translate(-50%, -50%) scale(.75);
}

.spatial-associate--repair .spatial-associate__pair strong {
  font-size: clamp(1.12rem, 2.38vw, 2.38rem);
  letter-spacing: .075em;
}

.spatial-associate--repair .spatial-associate__pair i {
  font-size: clamp(1.02rem, 1.85vw, 1.8rem);
}

.spatial-associate--repair .spatial-associate__scene-copy {
  top: 30.3%;
  font-size: clamp(1.32rem, 2.38vw, 2.08rem);
  font-weight: 750;
  letter-spacing: .105em;
  text-shadow: 0 2px 16px rgba(0,0,0,.86), 0 0 24px rgba(232,188,84,.22);
}

.spatial-associate--repair .spatial-associate__repair-copy {
  top: 36.0%;
  font-size: clamp(.70rem, .94vw, .84rem);
  color: rgba(255,243,207,.88);
}

/* Rappel : ~15 % plus compact, voile plus léger, locus encore plus libre. */
.spatial-associate--recall .spatial-associate__recall {
  top: 30.8%;
  width: min(76vw, 29rem);
  padding: .66rem .90rem .76rem;
  border-color: rgba(237,213,153,.16);
  background: rgba(13,14,11,.27);
  box-shadow: 0 10px 30px rgba(0,0,0,.16);
  backdrop-filter: blur(3.5px);
}

.spatial-associate--recall .spatial-associate__recall > span {
  font-size: .62rem;
  letter-spacing: .19em;
}

.spatial-associate--recall .spatial-associate__recall h2 {
  margin: .18rem 0 .24rem;
  font-size: clamp(1.18rem, 2.05vw, 1.72rem);
}

.spatial-associate--recall .spatial-associate__recall p {
  max-width: 24rem;
  font-size: clamp(.68rem, .86vw, .80rem);
  line-height: 1.36;
  color: rgba(255,244,215,.76);
}

.spatial-associate--recall .spatial-associate__recall-actions {
  margin-top: .55rem;
  gap: .45rem;
}

.spatial-associate--recall .spatial-associate__button {
  min-width: 7.4rem;
  padding: .52rem .82rem;
  font-size: .72rem;
}

@media (max-width: 760px) {
  .spatial-associate--action .spatial-associate__projection--action,
  .spatial-associate--repair .spatial-associate__projection--action {
    left: 53%;
    top: 58%;
    width: min(82vw, 33rem);
  }

  .spatial-associate--recall .spatial-associate__recall {
    top: 29.5%;
    width: min(88vw, 27rem);
    padding: .62rem .82rem .72rem;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.8.3.5.9 — CORRECTIF RUNTIME ACTION
   Préchargement/fallback gérés en JS ; ici on supprime le temps mort,
   conserve l'ACTION pendant son effacement et neutralise le double Livre.
   ============================================================ */

/* Le Livre canonique masque désormais les résidus du Livre baked sans
   modifier le master gelé : un voile local floute seulement l'arrière-plan
   immédiatement sous l'asset indépendant. */
.garden1-canonical-book::before,
.spatial-associate__canonical-book::before {
  content: "";
  position: absolute;
  z-index: 0;
  left: -4%;
  bottom: -3%;
  width: 82%;
  height: 72%;
  border-radius: 48% 42% 36% 50%;
  background: rgba(25, 23, 16, .045);
  -webkit-backdrop-filter: blur(7px) saturate(.82) brightness(.94);
  backdrop-filter: blur(7px) saturate(.82) brightness(.94);
  -webkit-mask-image: radial-gradient(ellipse at 37% 60%, #000 0 48%, rgba(0,0,0,.86) 64%, transparent 88%);
  mask-image: radial-gradient(ellipse at 37% 60%, #000 0 48%, rgba(0,0,0,.86) 64%, transparent 88%);
  pointer-events: none;
}

.garden1-canonical-book__state,
.spatial-associate__canonical-book-state {
  z-index: 1;
}

/* L'état FADE garde maintenant l'image ACTION qui vient d'être mémorisée,
   au lieu de revenir fugitivement à la projection statique. */
.spatial-associate--fade .spatial-associate__projection--fade-action {
  left: 53%;
  top: 61%;
  width: min(42.8vw, 43.9rem);
  opacity: .94;
  transform: translate(-50%, -50%) scale(1);
  filter: saturate(.94) brightness(.94) contrast(1.02) drop-shadow(0 18px 30px rgba(0,0,0,.22));
  -webkit-mask-image: radial-gradient(ellipse at center, #000 52%, rgba(0,0,0,.96) 68%, transparent 92%);
  mask-image: radial-gradient(ellipse at center, #000 52%, rgba(0,0,0,.96) 68%, transparent 92%);
  animation: spatialActionFinalFade .72s ease forwards;
}

.spatial-associate--fade .spatial-associate__pair,
.spatial-associate--fade .spatial-associate__scene-copy,
.spatial-associate--fade .spatial-associate__book-trail {
  animation: spatialActionCopyFade .40s ease forwards;
}

@keyframes spatialActionFinalFade {
  0% {
    opacity: .94;
    transform: translate(-50%, -50%) scale(1);
    filter: blur(0) saturate(.94) brightness(.94);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(1.012);
    filter: blur(3px) saturate(.86) brightness(.90);
  }
}

@keyframes spatialActionCopyFade {
  from { opacity: 1; }
  to { opacity: 0; }
}

@media (max-width: 760px) {
  .garden1-canonical-book::before,
  .spatial-associate__canonical-book::before {
    left: -5%;
    bottom: -2%;
    width: 88%;
    height: 72%;
    -webkit-backdrop-filter: blur(5px) saturate(.84) brightness(.95);
    backdrop-filter: blur(5px) saturate(.84) brightness(.95);
  }

  .spatial-associate--fade .spatial-associate__projection--fade-action {
    left: 53%;
    top: 58%;
    width: min(88vw, 36rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  .spatial-associate--fade .spatial-associate__projection--fade-action,
  .spatial-associate--fade .spatial-associate__pair,
  .spatial-associate--fade .spatial-associate__scene-copy,
  .spatial-associate--fade .spatial-associate__book-trail {
    animation-duration: .01ms !important;
  }
}


/* ============================================================
   VNEW.0.130.3.8.4.8.3.5.10 — CORRECTIF À REVOIR + DOUBLE LIVRE
   Le fond Garden I est désormais une dérivée sans Livre baked.
   Aucun blur de neutralisation n'est donc nécessaire : l'asset canonique
   est le seul Livre visible et reçoit seulement une ombre d'ancrage douce.
   ============================================================ */
.garden1-canonical-book::before,
.spatial-associate__canonical-book::before {
  display: none !important;
  content: none !important;
}

.garden1-canonical-book::after,
.spatial-associate__canonical-book::after {
  content: "";
  position: absolute;
  z-index: 0;
  left: 10%;
  bottom: 2%;
  width: 68%;
  height: 19%;
  border-radius: 50%;
  background: radial-gradient(ellipse at center, rgba(25,18,9,.34) 0 28%, rgba(25,18,9,.16) 52%, transparent 76%);
  filter: blur(8px);
  pointer-events: none;
}

.garden1-canonical-book__state,
.spatial-associate__canonical-book-state {
  position: relative;
  z-index: 1;
}

/* La réparation reste lisible assez longtemps pour être réellement encodée. */
.spatial-associate--repair .spatial-associate__projection--action {
  animation-duration: 3.65s;
}

@media (prefers-reduced-motion: reduce) {
  .spatial-associate--repair .spatial-associate__projection--action {
    animation: none !important;
    opacity: .94 !important;
    transform: translate(-50%, -50%) scale(.995) !important;
    filter: saturate(.96) !important;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.8.3.5.12 — HOTFIX LIVRE VIVANT UNIQUE
   Réparation du bloc CSS V3.5.11 + exclusivité stricte closed / active / open.
   Un seul conteneur, un seul état rendu à la fois, ancrage PC bas-gauche.
   ============================================================ */

/* Garde-fou cache ancien : aucune ancienne copie du prototype ne doit s'afficher. */
.spatial-associate__canonical-book,
.spatial-associate__canonical-book--closed,
.spatial-associate__canonical-book--active,
.spatial-associate__canonical-book--open {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Conteneur unique du Livre vivant. */
.garden1-canonical-book {
  position: absolute !important;
  z-index: 6 !important;
  left: 1.35% !important;
  right: auto !important;
  top: auto !important;
  bottom: 11.6% !important;
  width: min(24.8vw, 29.8rem) !important;
  height: auto !important;
  aspect-ratio: 1.42;
  opacity: 1 !important;
  visibility: visible !important;
  filter: drop-shadow(0 12px 22px rgba(0,0,0,.17));
  transform: none !important;
  animation: none !important;
  pointer-events: none;
  overflow: visible;
}

/* Les trois assets partagent strictement le même cadre. */
.garden1-canonical-book .garden1-canonical-book__state {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
  object-position: left bottom !important;
  transform-origin: left bottom !important;
  pointer-events: none !important;
  user-select: none !important;
}

/* Exclusivité matérielle : tout état non sélectionné est retiré du rendu. */
.garden1-canonical-book .garden1-canonical-book__state[hidden] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
}

.garden1-canonical-book .garden1-canonical-book__state:not([hidden]) {
  display: block !important;
  visibility: visible !important;
  opacity: .98 !important;
}

.garden1-canonical-book__state--closed {
  transform: scale(.985);
  filter: saturate(.94) brightness(.96);
}

.garden1-canonical-book__state--active {
  transform: scale(1.005);
  filter: saturate(.93) brightness(.96) drop-shadow(0 0 9px rgba(238,196,98,.12));
}

.garden1-canonical-book__state--open {
  transform: scale(1.025);
  filter: saturate(.95) brightness(.97) drop-shadow(0 13px 22px rgba(0,0,0,.15));
}

/* Neutralise définitivement les anciens comportements hover/is-awake basés sur l'opacité. */
.garden1-book-hotspot:hover + .garden1-canonical-book .garden1-canonical-book__state,
.garden1-book-hotspot:focus-visible + .garden1-canonical-book .garden1-canonical-book__state,
.garden1-scene.is-awake .garden1-canonical-book__state {
  animation: none !important;
}

@media (max-width: 760px) {
  .garden1-canonical-book {
    left: 1.2% !important;
    bottom: 8.4% !important;
    width: min(45vw, 20rem) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .garden1-canonical-book .garden1-canonical-book__state {
    transition: none !important;
    animation: none !important;
  }
}


/* ============================================================
   VNEW.0.130.3.8.4.8.3.6 — LE LIVRE DU JARDIN DANS SES PAGES
   Le Livre canonique reste l'unique objet visuel. Lorsqu'il est lu,
   il s'ouvre au centre du Jardin et l'ancienne fenêtre devient un
   contenu d'encre directement posé sur ses deux pages.
   ============================================================ */

/* Le Livre unique quitte son ancrage bas-gauche uniquement pendant la lecture. */
.garden1-scene.is-book-reading .garden1-canonical-book {
  left: 50% !important;
  right: auto !important;
  top: auto !important;
  bottom: 8.2% !important;
  width: min(66vw, 72rem) !important;
  aspect-ratio: 1.692 !important;
  transform: translateX(-50%) !important;
  transform-origin: 50% 100% !important;
  z-index: 7 !important;
  filter: drop-shadow(0 24px 48px rgba(0,0,0,.30)) !important;
  transition:
    left .52s cubic-bezier(.22,.7,.2,1),
    bottom .52s cubic-bezier(.22,.7,.2,1),
    width .52s cubic-bezier(.22,.7,.2,1),
    filter .52s ease !important;
}

.garden1-scene.is-book-reading .garden1-canonical-book__state--open:not([hidden]) {
  opacity: 1 !important;
  transform: none !important;
  filter: saturate(.90) brightness(.94) !important;
}

.garden1-scene.is-book-reading .garden1-heading {
  opacity: .34;
  transition: opacity .35s ease;
}

.garden1-scene.is-book-reading .garden1-book-hotspot {
  pointer-events: none;
}

/* Plus de grande fenêtre sombre : seulement une très légère mise au calme du lieu. */
.garden1-book-layer {
  z-index: 8;
  display: block;
  padding: 0 !important;
  background:
    radial-gradient(circle at 50% 65%, rgba(8,9,6,.015) 0 34%, rgba(8,9,6,.14) 72%, rgba(8,9,6,.22) 100%) !important;
  backdrop-filter: none !important;
}

.garden1-book-layer[hidden] {
  display: none !important;
}

/* La coquille HTML épouse uniquement la zone utile des pages du vrai Livre. */
.garden1-book-layer .living-book-shell--garden-pages {
  position: absolute;
  left: 50%;
  bottom: 19.2%;
  width: min(48.5vw, 52.5rem);
  height: min(40vh, 26rem);
  margin: 0;
  transform: translateX(-50%);
  z-index: 9;
  color: #30281a;
}

.garden1-book-layer .living-book-shell--garden-pages .living-book-closed {
  display: none !important;
}

.garden1-book-layer .living-book-shell--garden-pages .living-book {
  position: relative;
  width: 100%;
  height: 100%;
  padding: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: #30281a;
  overflow: visible;
}

.garden1-book-layer .living-book-shell--garden-pages .living-book::after {
  display: none;
}

/* L'identité du Livre devient une petite inscription d'encre, pas une barre UI. */
.garden1-book-layer .living-book-shell--garden-pages .living-book__header {
  position: relative;
  z-index: 3;
  min-height: 2.65rem;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 0 .2rem .35rem;
  color: #4d3d22;
  text-align: center;
  pointer-events: none;
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__header > div {
  max-width: 62%;
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__eyebrow {
  margin: 0;
  color: #8f6e34;
  font-size: clamp(.46rem, .52vw, .58rem);
  letter-spacing: .18em;
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__header h2 {
  margin: .05rem 0 0;
  color: #46371f;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(.92rem, 1.25vw, 1.28rem);
  font-weight: 500;
  letter-spacing: .035em;
  text-shadow: 0 1px rgba(255,255,255,.42);
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__header p:not(.living-book__eyebrow) {
  display: none;
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__close {
  position: absolute;
  right: 1.4%;
  top: .05rem;
  z-index: 5;
  padding: .25rem .42rem;
  border: 0;
  border-bottom: 1px solid rgba(97,72,34,.35);
  background: rgba(246,236,209,.58);
  color: #5d4828;
  font-size: clamp(.55rem, .63vw, .68rem);
  letter-spacing: .04em;
  text-decoration: none;
  pointer-events: auto;
  cursor: pointer;
}

/* Deux vraies zones de pages : elles masquent les illustrations d'exemple
   de l'asset ouvert tout en conservant la reliure, le volume et le halo. */
.garden1-book-layer .living-book-shell--garden-pages .living-book__spread {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4.7%;
  width: 100%;
  height: calc(100% - 2.65rem);
  min-height: 0;
  overflow: visible;
  border-radius: 0;
  background: transparent;
  color: #30281a;
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__page {
  position: relative;
  min-width: 0;
  min-height: 0;
  padding: clamp(.72rem, 1.15vw, 1.18rem) clamp(.82rem, 1.28vw, 1.32rem);
  border: 1px solid rgba(145,111,56,.28);
  background:
    radial-gradient(circle at 50% 10%, rgba(255,252,237,.74), transparent 42%),
    linear-gradient(180deg, rgba(247,239,217,.965), rgba(237,224,193,.955));
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.30),
    inset 0 -16px 28px rgba(119,88,41,.035);
  color: #322819;
  overflow: auto;
  scrollbar-width: none;
  overscroll-behavior: contain;
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__page::-webkit-scrollbar {
  display: none;
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__page--left {
  border-right: 1px solid rgba(130,94,44,.20);
  border-radius: 10% 2% 4% 8% / 4% 2% 7% 5%;
  clip-path: polygon(2% 2%, 98% 0, 99% 96%, 5% 100%);
  transform: rotate(-.28deg);
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__page--right {
  border-radius: 2% 10% 8% 4% / 2% 4% 5% 7%;
  clip-path: polygon(2% 0, 98% 2%, 95% 100%, 1% 96%);
  transform: rotate(.28deg);
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__intro {
  margin: 0 0 .72rem;
  max-width: none;
  color: #776543;
  font-size: clamp(.58rem, .70vw, .73rem);
  line-height: 1.42;
}

.garden1-book-layer .living-book-shell--garden-pages .book-priority {
  padding-top: .72rem;
  border-top: 1px solid rgba(123,92,43,.22);
}

.garden1-book-layer .living-book-shell--garden-pages .book-priority__eyebrow,
.garden1-book-layer .living-book-shell--garden-pages .living-book__section-title {
  margin: 0 0 .36rem;
  color: #8d713c;
  font-size: clamp(.48rem, .54vw, .59rem);
  letter-spacing: .15em;
}

.garden1-book-layer .living-book-shell--garden-pages .book-priority h3 {
  margin: 0;
  color: #3e311d;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1rem, 1.52vw, 1.55rem);
  line-height: 1.08;
  font-weight: 500;
}

.garden1-book-layer .living-book-shell--garden-pages .book-priority > p:not(.book-priority__eyebrow) {
  margin: .46rem 0 .62rem;
  max-width: none;
  color: #6d5c3e;
  font-size: clamp(.60rem, .71vw, .74rem);
  line-height: 1.42;
}

.garden1-book-layer .living-book-shell--garden-pages .book-text-action {
  padding: .22rem 0 .16rem;
  color: #5d4521;
  font-size: clamp(.61rem, .70vw, .73rem);
  letter-spacing: .035em;
}

.garden1-book-layer .living-book-shell--garden-pages .book-chapters,
.garden1-book-layer .living-book-shell--garden-pages .book-library {
  gap: .08rem;
}

.garden1-book-layer .living-book-shell--garden-pages .book-chapter {
  grid-template-columns: 1.55rem 1fr auto;
  gap: .34rem;
  padding: .43rem .06rem;
  border-bottom-color: rgba(122,89,39,.18);
}

.garden1-book-layer .living-book-shell--garden-pages .book-chapter__numeral {
  color: #8b713f;
  font-size: clamp(.56rem, .62vw, .65rem);
}

.garden1-book-layer .living-book-shell--garden-pages .book-chapter__copy strong,
.garden1-book-layer .living-book-shell--garden-pages .book-library__item strong {
  color: #3d301d;
  font-size: clamp(.62rem, .70vw, .74rem);
  letter-spacing: .055em;
}

.garden1-book-layer .living-book-shell--garden-pages .book-chapter__copy small,
.garden1-book-layer .living-book-shell--garden-pages .book-library__item small {
  margin-top: .08rem;
  color: #786746;
  font-size: clamp(.50rem, .56vw, .60rem);
  line-height: 1.25;
}

.garden1-book-layer .living-book-shell--garden-pages .book-chapter__status,
.garden1-book-layer .living-book-shell--garden-pages .book-library__action {
  color: #846b39;
  font-size: clamp(.46rem, .50vw, .55rem);
}

.garden1-book-layer .living-book-shell--garden-pages .living-book__section-title--library {
  margin-top: .72rem;
}

.garden1-book-layer .living-book-shell--garden-pages .book-library__item {
  gap: .45rem;
  padding: .36rem .05rem;
}

/* PC plus compact / petits laptops : on garde les pages lisibles sans
   redevenir une fenêtre rectangulaire plein écran. */
@media (min-width: 761px) and (max-width: 1500px) {
  .garden1-scene.is-book-reading .garden1-canonical-book {
    bottom: 7.4% !important;
    width: min(70vw, 61rem) !important;
  }

  .garden1-book-layer .living-book-shell--garden-pages {
    bottom: 18.2%;
    width: min(51vw, 45rem);
    height: min(41vh, 22.5rem);
  }
}

/* Mobile reste volontairement simple : la lecture s'empile, mais garde
   l'identité du Livre. Le QA mobile sera traité séparément. */
@media (max-width: 760px) {
  .garden1-scene.is-book-reading .garden1-canonical-book {
    left: 50% !important;
    bottom: 25% !important;
    width: min(96vw, 42rem) !important;
    aspect-ratio: 1.692 !important;
    transform: translateX(-50%) !important;
  }

  .garden1-book-layer .living-book-shell--garden-pages {
    left: 50%;
    bottom: 27.5%;
    width: min(75vw, 31rem);
    height: min(36vh, 20rem);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__spread {
    grid-template-columns: 1fr 1fr;
    gap: 3.8%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page {
    padding: .55rem .6rem;
  }

  .garden1-book-layer .living-book-shell--garden-pages .book-chapter {
    grid-template-columns: 1.25rem 1fr;
  }

  .garden1-book-layer .living-book-shell--garden-pages .book-chapter__status {
    grid-column: 2;
    justify-self: start;
  }
}

@media (prefers-reduced-motion: reduce) {
  .garden1-scene.is-book-reading .garden1-canonical-book {
    transition: none !important;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.8.3.6.1 — LIVRE DU JARDIN · PAGES INTÉGRÉES
   Fermeture diégétique + micro-finition ASSOCIER (QA PC).
   Objectif : faire disparaître l'effet "deux panneaux HTML" et donner
   l'impression que l'encre appartient réellement aux pages du Livre.
   ============================================================ */

@media (min-width: 761px) {
  /* Lecture : Livre légèrement plus compact et remonté pour rendre du Jardin. */
  .garden1-scene.is-book-reading .garden1-canonical-book {
    bottom: 10.1% !important;
    width: min(62vw, 67.5rem) !important;
  }

  /* La couche de texte suit la nouvelle géométrie du Livre. */
  .garden1-book-layer .living-book-shell--garden-pages {
    bottom: 21.0%;
    width: min(45.8vw, 49rem);
    height: min(37.5vh, 24.5rem);
  }

  /* Une seule identité : l'eyebrow "Livre vivant" disparaît. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__eyebrow {
    display: none !important;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__header {
    min-height: 2.15rem;
    padding: 0 .2rem .15rem;
    transform: translateY(-.42rem);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__header h2 {
    margin: 0;
    font-size: clamp(.88rem, 1.05vw, 1.10rem);
    letter-spacing: .045em;
    color: rgba(71,54,29,.92);
    text-shadow: 0 1px rgba(255,255,255,.42), 0 0 12px rgba(255,244,205,.20);
  }

  /* Fermeture diégétique : un petit médaillon doré sur le coin de page. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__close {
    right: 1.2%;
    top: -.28rem;
    width: 1.72rem;
    height: 1.72rem;
    padding: 0;
    display: grid;
    place-items: center;
    border: 1px solid rgba(126,92,36,.42);
    border-radius: 50%;
    background:
      radial-gradient(circle at 35% 30%, rgba(255,250,223,.84), rgba(219,188,120,.52) 46%, rgba(116,82,29,.30) 100%);
    color: #60481f;
    box-shadow: 0 2px 8px rgba(73,48,17,.15), inset 0 0 0 2px rgba(255,246,211,.30);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 1.08rem;
    line-height: 1;
    text-shadow: 0 1px rgba(255,255,255,.55);
    transform: rotate(2deg);
    opacity: .88;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__close:hover,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__close:focus-visible {
    opacity: 1;
    border-color: rgba(126,92,36,.68);
    box-shadow: 0 2px 10px rgba(73,48,17,.20), 0 0 0 2px rgba(235,208,140,.18);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__spread {
    height: calc(100% - 1.7rem);
    gap: 4.35%;
    perspective: 1100px;
  }

  /* Les pages ne sont plus des cartes opaques : voile de parchemin doux,
     sans bord rectangulaire, avec masque progressif sur les contours. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page {
    padding: clamp(.70rem, 1.02vw, 1.02rem) clamp(.76rem, 1.10vw, 1.12rem);
    border: 0 !important;
    border-radius: 0 !important;
    background:
      radial-gradient(ellipse at 48% 42%, rgba(249,242,218,.84) 0 36%, rgba(246,236,205,.72) 58%, rgba(239,224,190,.46) 78%, rgba(239,224,190,.12) 96%),
      linear-gradient(180deg, rgba(255,251,232,.42), rgba(232,212,173,.26));
    box-shadow: none !important;
    overflow: auto;
    -webkit-mask-image: radial-gradient(ellipse at 50% 50%, #000 0 74%, rgba(0,0,0,.92) 84%, rgba(0,0,0,.48) 94%, transparent 100%);
    mask-image: radial-gradient(ellipse at 50% 50%, #000 0 74%, rgba(0,0,0,.92) 84%, rgba(0,0,0,.48) 94%, transparent 100%);
    filter: drop-shadow(0 1px 0 rgba(255,255,255,.20));
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--left {
    clip-path: polygon(2% 2%, 98.5% 0, 99% 95.5%, 5% 100%);
    transform: rotate(-.42deg) perspective(1000px) rotateY(1.4deg);
    transform-origin: 100% 50%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right {
    clip-path: polygon(1.5% 0, 98% 2%, 95% 100%, 1% 95.5%);
    transform: rotate(.42deg) perspective(1000px) rotateY(-1.4deg);
    transform-origin: 0 50%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__intro {
    margin-bottom: .58rem;
    color: rgba(91,75,47,.78);
    font-size: clamp(.56rem, .64vw, .69rem);
  }

  .garden1-book-layer .living-book-shell--garden-pages .book-priority {
    padding-top: .58rem;
    border-top-color: rgba(123,92,43,.15);
  }

  .garden1-book-layer .living-book-shell--garden-pages .book-chapter {
    padding-top: .38rem;
    padding-bottom: .38rem;
    border-bottom-color: rgba(122,89,39,.12);
    background: transparent !important;
  }

  /* FORMING plus court : la silhouette existe dès les premières images. */
  .spatial-associate--forming .spatial-associate__projection {
    opacity: .28;
    filter: blur(3.5px) saturate(.88);
    animation: spatialProjectionFormQuick .55s ease-out both;
  }

  @keyframes spatialProjectionFormQuick {
    0% {
      opacity: .24;
      transform: translate(-50%, -50%) scale(.93);
      filter: blur(4px) saturate(.84) brightness(.92);
    }
    100% {
      opacity: .82;
      transform: translate(-50%, -50%) scale(1);
      filter: blur(0) saturate(.95) brightness(.98);
    }
  }

  /* ACTION : l'image mentale devient l'information principale. */
  .spatial-associate--action .spatial-associate__pair {
    opacity: .72;
    transform: translate(-50%, -50%) scale(.94);
    transition: opacity .6s ease, transform .6s ease;
  }

  /* Rappel : encore plus discret et légèrement remonté. */
  .spatial-associate--recall .spatial-associate__recall {
    top: 27.6%;
    width: min(69vw, 26.3rem);
    padding: .60rem .82rem .69rem;
    border-color: rgba(237,213,153,.13);
    background: rgba(13,14,11,.22);
    box-shadow: 0 8px 25px rgba(0,0,0,.13);
    backdrop-filter: blur(2.8px);
  }

  .spatial-associate--recall .spatial-associate__recall h2 {
    font-size: clamp(1.12rem, 1.82vw, 1.55rem);
  }

  .spatial-associate--recall .spatial-associate__recall p {
    max-width: 22rem;
    color: rgba(255,244,215,.72);
  }

  /* Résultat : présence courte, pas une grande modale de fin. */
  .spatial-associate--result-ok .spatial-associate__result,
  .spatial-associate--result-later .spatial-associate__result {
    width: min(70vw, 31.8rem);
    padding: clamp(.92rem, 2vw, 1.34rem);
    border-color: rgba(237,213,153,.17);
    background: rgba(13,14,11,.34);
    box-shadow: 0 14px 44px rgba(0,0,0,.19);
    backdrop-filter: blur(5px);
  }

  .spatial-associate--result-ok .spatial-associate__result h2,
  .spatial-associate--result-later .spatial-associate__result h2 {
    font-size: clamp(1.34rem, 2.35vw, 2rem);
    margin: .30rem 0 .38rem;
  }

  .spatial-associate--result-ok .spatial-associate__seal,
  .spatial-associate--result-later .spatial-associate__seal {
    width: 2.65rem;
    height: 2.65rem;
    margin-bottom: .42rem;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.8.3.6.2 — FINITION PC LIVRE + RAPPEL SPATIAL
   QA PC 1920×1080 : contraste des pages, titre mieux séparé de la
   pliure, fermeture plus repérable, ACTION hiérarchisée et rappel
   moins sombre. Les règles mobile existantes restent inchangées.
   ============================================================ */
@media (min-width: 761px) {
  /* Titre : un peu plus haut, plus lisible face à la lumière de la pliure. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__header {
    transform: translateY(-1.18rem);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__header h2 {
    color: rgba(58, 43, 22, .98);
    text-shadow:
      0 1px rgba(255,255,255,.55),
      0 0 9px rgba(255,247,217,.22),
      0 1px 2px rgba(72,48,20,.10);
  }

  /* Page droite : +10–15 % de contraste perçu, sans réintroduire de panneau. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right {
    color: #2d2317;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right .living-book__section-title,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right .book-chapter__numeral {
    color: rgba(105, 78, 36, .96);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right .book-chapter__copy strong,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right .book-library__item strong {
    color: rgba(49, 37, 21, .98);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right .book-chapter__copy small,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right .book-library__item small {
    color: rgba(82, 64, 39, .91);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right .book-chapter__status,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right .book-library__action {
    color: rgba(103, 77, 34, .92);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right .book-chapter:disabled,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right .book-library__item:disabled {
    opacity: .50;
  }

  /* Fermeture diégétique : aspect presque identique, cible et présence +~10 %. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__close {
    right: .9%;
    top: -.42rem;
    width: 1.90rem;
    height: 1.90rem;
    font-size: 1.16rem;
    opacity: .94;
  }

  /* ACTION : la morsure devient le souvenir dominant. */
  .spatial-associate--action .spatial-associate__pair {
    opacity: .63;
    transform: translate(-50%, -50%) scale(.92);
  }

  /* Réparation : FAIS AGIR et l'impact priment clairement sur la paire. */
  .spatial-associate--repair .spatial-associate__pair {
    opacity: .31;
    transform: translate(-50%, -50%) scale(.66);
  }

  /* Rappel spatial : on garde davantage de détails du locus visible. */
  .spatial-associate--recall::before {
    background: linear-gradient(180deg, rgba(4,6,5,.12), rgba(4,6,5,.25));
    opacity: .78;
  }

  .spatial-associate--recall .spatial-associate__recall {
    top: 25.6%;
    width: min(66vw, 25.0rem);
    background: rgba(13,14,11,.19);
    border-color: rgba(237,213,153,.11);
    box-shadow: 0 7px 22px rgba(0,0,0,.10);
    backdrop-filter: blur(2.2px);
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.8.3.7.3.2 — PAGE TURN B · PROTOTYPE CANONIQUE RÉEL
   PC pilot: blank canonical book master + native page ink + 540 ms
   physical page-turn illusion. Mobile keeps the stable V3.6.2 layout.
   ============================================================ */

/* Safe fallback outside the PC pilot: the new structural wrappers must not
   disturb the existing mobile / other-book presentations. */
.living-book-shell--garden-pages .living-book__master-art,
.living-book-shell--garden-pages .living-book__turn-sheet,
.living-book-shell--garden-pages .living-book__pager {
  display: none;
}

.living-book-shell--garden-pages .living-book__spread-viewport {
  display: contents;
}

@media (min-width: 761px) {
  /* During reading, the old three-state scene asset is no longer a second
     visual book. The blank master rendered by LivingBook is the sole book. */
  .garden1-scene.is-book-reading .garden1-canonical-book {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }

  .garden1-book-layer {
    background:
      radial-gradient(circle at 50% 50%, rgba(8,9,6,.00) 0 42%, rgba(8,9,6,.08) 73%, rgba(8,9,6,.18) 100%) !important;
  }

  /* One isolated transparent master, centered in the actual Garden. */
  .garden1-book-layer .living-book-shell--garden-pages {
    left: 50% !important;
    top: 50% !important;
    right: auto !important;
    bottom: auto !important;
    width: min(76vw, 76rem) !important;
    height: auto !important;
    aspect-ratio: 3 / 2;
    transform: translate(-50%, -47%) !important;
    color: #342718;
    z-index: 9;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book {
    position: relative;
    width: 100%;
    height: 100%;
    aspect-ratio: 3 / 2;
    overflow: visible;
    isolation: isolate;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__master-art {
    display: block;
    position: absolute;
    z-index: 0;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    pointer-events: none;
    user-select: none;
    filter: drop-shadow(0 26px 48px rgba(0,0,0,.30));
  }

  /* The identity is now ink on the upper-left page, never on the bright fold. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__header {
    position: absolute;
    z-index: 6;
    left: 15.6%;
    top: 12.6%;
    width: 31.5%;
    min-height: 0;
    display: block;
    padding: 0;
    transform: rotate(-.42deg) !important;
    text-align: center;
    pointer-events: none;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__header > div {
    max-width: none;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__eyebrow,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__header p:not(.living-book__eyebrow) {
    display: none !important;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__header h2 {
    margin: 0;
    color: rgba(71,50,24,.95);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(.90rem, 1.18vw, 1.24rem);
    font-weight: 500;
    line-height: 1.08;
    letter-spacing: .045em;
    text-shadow: 0 1px rgba(255,255,255,.48);
  }

  /* Small gold medallion in the upper-right leather/page corner. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__close {
    position: absolute;
    z-index: 12;
    top: 10.1%;
    right: 6.7%;
    width: clamp(1.76rem, 2.15vw, 2.18rem);
    height: clamp(1.76rem, 2.15vw, 2.18rem);
    display: grid;
    place-items: center;
    padding: 0;
    border: 1px solid rgba(116,80,28,.56);
    border-radius: 50%;
    background:
      radial-gradient(circle at 34% 28%, rgba(255,249,219,.96), rgba(219,178,88,.76) 46%, rgba(106,68,20,.76) 100%);
    color: #4c3518;
    box-shadow:
      0 3px 8px rgba(56,34,10,.20),
      inset 0 0 0 2px rgba(255,241,184,.26);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 1.16rem;
    line-height: 1;
    opacity: .96;
    transform: none !important;
    pointer-events: auto;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__close:hover,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__close:focus-visible {
    opacity: 1;
    transform: scale(1.035) !important;
    box-shadow:
      0 4px 10px rgba(56,34,10,.24),
      0 0 0 3px rgba(224,189,111,.16),
      inset 0 0 0 2px rgba(255,241,184,.34);
  }

  /* Content is real HTML ink directly over the blank parchment. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__spread-viewport {
    display: block;
    position: absolute;
    z-index: 4;
    left: 10.2%;
    top: 20.1%;
    width: 79.7%;
    height: 47.8%;
    perspective: 1500px;
    overflow: visible;
    pointer-events: auto;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__spread {
    position: absolute;
    inset: 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 6.15%;
    width: 100%;
    height: 100%;
    min-height: 0;
    background: transparent;
    overflow: visible;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page {
    min-width: 0;
    min-height: 0;
    padding: clamp(.62rem, .88vw, .94rem) clamp(.66rem, .94vw, 1.02rem);
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    color: #382a18;
    overflow: auto;
    -webkit-mask-image: none !important;
    mask-image: none !important;
    filter: none !important;
    scrollbar-width: none;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page::-webkit-scrollbar {
    display: none;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--left {
    clip-path: polygon(2% 1%, 99% 0, 98.8% 96%, 5% 99%);
    transform: perspective(1100px) rotateY(1.2deg) rotate(-.34deg) !important;
    transform-origin: 100% 50%;
    padding-right: clamp(.78rem, 1.12vw, 1.20rem);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right {
    clip-path: polygon(1% 0, 98% 1%, 95% 99%, 1.2% 96%);
    transform: perspective(1100px) rotateY(-1.2deg) rotate(.34deg) !important;
    transform-origin: 0 50%;
    padding-left: clamp(.78rem, 1.12vw, 1.20rem);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__intro {
    margin: 0 0 .56rem;
    color: rgba(92,71,42,.80);
    font-size: clamp(.55rem, .65vw, .70rem);
    line-height: 1.40;
  }

  .garden1-book-layer .living-book-shell--garden-pages .book-priority {
    padding-top: .54rem;
    border-top: 1px solid rgba(135,98,42,.20);
  }

  .garden1-book-layer .living-book-shell--garden-pages .book-priority h3 {
    font-size: clamp(.98rem, 1.42vw, 1.46rem);
    color: rgba(57,40,20,.97);
  }

  .garden1-book-layer .living-book-shell--garden-pages .book-priority > p:not(.book-priority__eyebrow) {
    font-size: clamp(.58rem, .68vw, .73rem);
    color: rgba(90,67,37,.88);
  }

  .garden1-book-layer .living-book-shell--garden-pages .book-text-action {
    font-size: clamp(.59rem, .69vw, .74rem);
  }

  .garden1-book-layer .living-book-shell--garden-pages .book-chapter {
    padding: .36rem .04rem;
    background: transparent !important;
  }

  /* Second spread: useful but deliberately calm, so the prototype tests a
     real multi-page book without creating another dashboard. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__quiet-page {
    margin-top: 1.05rem;
    max-width: 90%;
    color: rgba(78,58,32,.82);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(.64rem, .78vw, .82rem);
    line-height: 1.48;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__quiet-page strong {
    display: block;
    margin-bottom: .45rem;
    color: rgba(54,39,22,.96);
    font-size: 1.10em;
    font-weight: 500;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__manifest {
    display: grid;
    gap: .54rem;
    margin-top: .70rem;
    color: rgba(73,53,28,.87);
    font-size: clamp(.58rem, .69vw, .74rem);
    line-height: 1.38;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__manifest p {
    display: grid;
    grid-template-columns: 1.25rem 1fr;
    gap: 0 .30rem;
    margin: 0;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__manifest p span {
    grid-row: 1 / 3;
    color: rgba(143,101,42,.90);
    font-family: Georgia, "Times New Roman", serif;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__manifest p strong {
    color: rgba(53,38,20,.96);
    font-family: Georgia, "Times New Roman", serif;
    font-weight: 500;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__manifest blockquote {
    margin: .36rem .2rem 0;
    padding-top: .50rem;
    border-top: 1px solid rgba(139,98,39,.20);
    color: rgba(86,62,31,.78);
    font-family: Georgia, "Times New Roman", serif;
    font-style: italic;
  }

  /* Canonical B navigation: page edge arrows + tiny spread counter. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__pager {
    display: block;
    position: absolute;
    z-index: 11;
    inset: 0;
    pointer-events: none;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn {
    position: absolute;
    top: 48%;
    width: clamp(2.05rem, 2.7vw, 2.75rem);
    height: clamp(2.05rem, 2.7vw, 2.75rem);
    display: grid;
    place-items: center;
    padding: 0;
    border: 1px solid rgba(180,132,53,.30);
    border-radius: 50%;
    background: rgba(29,44,57,.42);
    color: rgba(244,211,133,.92);
    box-shadow: 0 4px 14px rgba(0,0,0,.16), inset 0 0 0 1px rgba(255,231,168,.09);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(1.28rem, 1.75vw, 1.75rem);
    line-height: 1;
    cursor: pointer;
    pointer-events: auto;
    transform: translateY(-50%);
    transition: opacity .18s ease, transform .18s ease, background .18s ease;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn--prev {
    left: 3.75%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn--next {
    right: 3.75%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn:hover:not(:disabled),
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn:focus-visible:not(:disabled) {
    background: rgba(33,50,65,.64);
    transform: translateY(-50%) scale(1.05);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn:disabled {
    opacity: .14;
    cursor: default;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-index {
    position: absolute;
    left: 50%;
    bottom: 18.0%;
    transform: translateX(-50%);
    color: rgba(104,73,30,.66);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(.50rem, .58vw, .62rem);
    letter-spacing: .12em;
    pointer-events: none;
  }

  /* The turning sheet is a real temporary page layer. At the midpoint the DOM
     spread swaps underneath it, so old/new text are never both exposed. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-sheet {
    display: block;
    position: absolute;
    z-index: 9;
    top: 0;
    width: 46.9%;
    height: 100%;
    transform-style: preserve-3d;
    pointer-events: none;
    visibility: hidden;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face {
    position: absolute;
    inset: 0;
    overflow: hidden;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    border: 1px solid rgba(142,101,43,.14);
    background:
      radial-gradient(ellipse at 46% 38%, rgba(255,249,226,.98), rgba(243,225,188,.98) 72%, rgba(218,190,143,.96) 100%);
    box-shadow:
      inset 0 0 24px rgba(119,78,24,.07),
      0 7px 20px rgba(60,38,12,.12);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face--front {
    transform: rotateY(0deg);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face--back {
    transform: rotateY(180deg);
    background:
      linear-gradient(90deg, rgba(210,179,128,.94), rgba(250,239,210,.98) 20%, rgba(242,222,183,.98) 100%);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face-copy {
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    padding: clamp(.62rem, .88vw, .94rem) clamp(.66rem, .94vw, 1.02rem) !important;
    clip-path: none !important;
    transform: none !important;
    background: transparent !important;
    overflow: hidden !important;
    filter: none !important;
    -webkit-mask-image: none !important;
    mask-image: none !important;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-watermark {
    position: absolute;
    left: 50%;
    top: 49%;
    transform: translate(-50%, -50%);
    color: rgba(157,111,43,.20);
    font-size: 1.05rem;
  }

  .garden1-book-layer .living-book-shell--garden-pages.is-turning-next .living-book__turn-sheet {
    left: 53.1%;
    visibility: visible;
    transform-origin: 0% 50%;
    animation: livingBookCanonicalTurnNext .54s cubic-bezier(.34,.07,.18,.98) both;
  }

  .garden1-book-layer .living-book-shell--garden-pages.is-turning-prev .living-book__turn-sheet {
    left: 0;
    visibility: visible;
    transform-origin: 100% 50%;
    animation: livingBookCanonicalTurnPrev .54s cubic-bezier(.34,.07,.18,.98) both;
  }

  .garden1-book-layer .living-book-shell--garden-pages.is-turning-next .living-book__spread,
  .garden1-book-layer .living-book-shell--garden-pages.is-turning-prev .living-book__spread {
    pointer-events: none;
  }

  @keyframes livingBookCanonicalTurnNext {
    0% {
      transform: perspective(1500px) rotateY(0deg) scaleX(1);
      filter: brightness(1);
    }
    32% {
      transform: perspective(1500px) rotateY(-52deg) translateX(-1.2%) scaleX(.985);
      filter: brightness(.98);
    }
    50% {
      transform: perspective(1500px) rotateY(-91deg) translateX(-2.2%) scaleX(.95);
      filter: brightness(.88);
    }
    68% {
      transform: perspective(1500px) rotateY(-126deg) translateX(-1.2%) scaleX(.98);
      filter: brightness(.95);
    }
    100% {
      transform: perspective(1500px) rotateY(-180deg) scaleX(1);
      filter: brightness(1);
    }
  }

  @keyframes livingBookCanonicalTurnPrev {
    0% {
      transform: perspective(1500px) rotateY(0deg) scaleX(1);
      filter: brightness(1);
    }
    32% {
      transform: perspective(1500px) rotateY(52deg) translateX(1.2%) scaleX(.985);
      filter: brightness(.98);
    }
    50% {
      transform: perspective(1500px) rotateY(91deg) translateX(2.2%) scaleX(.95);
      filter: brightness(.88);
    }
    68% {
      transform: perspective(1500px) rotateY(126deg) translateX(1.2%) scaleX(.98);
      filter: brightness(.95);
    }
    100% {
      transform: perspective(1500px) rotateY(180deg) scaleX(1);
      filter: brightness(1);
    }
  }
}

@media (min-width: 761px) and (max-width: 1500px) {
  .garden1-book-layer .living-book-shell--garden-pages {
    width: min(82vw, 64rem) !important;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__spread-viewport {
    top: 20.4%;
    height: 47.0%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .book-chapter__copy small,
  .garden1-book-layer .living-book-shell--garden-pages .book-library__item small {
    font-size: clamp(.48rem, .58vw, .61rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-sheet {
    animation: none !important;
  }
}


/* ============================================================
   VNEW.0.130.3.8.4.8.3.7.3.2.1 — UNIFICATION CANONIQUE
   Ancienne triplette closed/active/open retirée du runtime.
   Un seul master transparent sert de repère de scène et de Livre lu.
   Les contenus de pages vivent dans des safe-zones internes explicites.
   La navigation Page Turn reste visible au premier regard.
   ============================================================ */

/* Tombstone anti-cache : un fragment HTML/CSS antérieur ne doit jamais
   réintroduire l'ancienne triplette de Livres. */
.garden1-canonical-book,
.garden1-canonical-book__state,
.garden1-canonical-book--closed,
.garden1-canonical-book--active,
.garden1-canonical-book--open,
.spatial-associate__canonical-book,
.spatial-associate__canonical-book-state {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Repère diégétique unique hors lecture : le même master vierge que celui
   utilisé dans LivingBook. Aucune variante fermé/actif/ouvert ne subsiste. */
.garden1-canonical-master-anchor {
  position: absolute;
  z-index: 5;
  left: .7%;
  bottom: 9.1%;
  width: min(27.2vw, 31.5rem);
  aspect-ratio: 3 / 2;
  pointer-events: none;
  user-select: none;
  transform-origin: 16% 82%;
  transition:
    opacity .28s ease,
    transform .34s cubic-bezier(.22,.7,.2,1),
    filter .28s ease;
}

.garden1-canonical-master-anchor img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: left bottom;
  filter:
    saturate(.90)
    brightness(.94)
    drop-shadow(0 12px 22px rgba(0,0,0,.20));
}

.garden1-book-hotspot:hover ~ .garden1-canonical-master-anchor,
.garden1-book-hotspot:focus-visible ~ .garden1-canonical-master-anchor {
  transform: translateY(-.6%) scale(1.018);
  filter: drop-shadow(0 0 16px rgba(232,194,102,.10));
}

.garden1-scene.is-book-reading .garden1-canonical-master-anchor,
.garden1-scene.is-awake .garden1-canonical-master-anchor {
  opacity: 0;
  visibility: hidden;
  transform: scale(.97);
}

/* Le hotspot reste seulement une surface d'ouverture : aucun ancien
   libellé de calibration n'est exposé à l'utilisateur final. */
.garden1-book-hotspot span {
  display: none !important;
}

@media (min-width: 761px) {
  /* Safe-zone réelle des deux pages : le viewport couvre le papier, puis
     chaque page crée sa propre marge interne, renforcée côté reliure. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__spread-viewport {
    left: 10.45%;
    top: 20.45%;
    width: 79.05%;
    height: 47.15%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__spread {
    gap: 7.15%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page {
    position: relative;
    padding: 0 !important;
    overflow: hidden;
    overscroll-behavior: contain;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-safe {
    position: absolute;
    top: 4.5%;
    bottom: 5.0%;
    box-sizing: border-box;
    overflow: auto;
    overscroll-behavior: contain;
    scrollbar-width: none;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-safe::-webkit-scrollbar {
    display: none;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--left > .living-book__page-safe {
    left: 6.0%;
    right: 12.7%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right > .living-book__page-safe {
    left: 12.7%;
    right: 6.0%;
  }

  /* Le clone de la feuille tournante garde exactement la même safe-zone. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face-copy {
    position: relative;
    padding: 0 !important;
  }

  /* Navigation visible : petits onglets de bord plutôt que chevrons flottants
     trop discrets. Le bouton disponible domine, le bouton bloqué reste lisible. */
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn {
    top: 49.2%;
    width: auto;
    min-width: clamp(3.55rem, 4.55vw, 4.85rem);
    height: clamp(2.18rem, 2.72vw, 2.72rem);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: clamp(.22rem, .35vw, .38rem);
    padding: 0 clamp(.52rem, .68vw, .72rem);
    border: 1px solid rgba(177,128,49,.48);
    border-radius: 999px;
    background:
      linear-gradient(180deg, rgba(39,54,65,.80), rgba(24,35,44,.78));
    color: rgba(251,224,153,.98);
    box-shadow:
      0 6px 18px rgba(0,0,0,.24),
      inset 0 0 0 1px rgba(255,231,168,.13);
    text-shadow: 0 1px 4px rgba(0,0,0,.45);
    opacity: .96;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn--prev {
    left: 1.45%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn--next {
    right: 1.45%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn-label {
    font-family: system-ui, sans-serif;
    font-size: clamp(.48rem, .55vw, .59rem);
    font-weight: 650;
    letter-spacing: .055em;
    text-transform: uppercase;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn-chevron {
    display: block;
    margin-top: -.08em;
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(1.18rem, 1.48vw, 1.52rem);
    line-height: .8;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn:hover:not(:disabled),
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn:focus-visible:not(:disabled) {
    background:
      linear-gradient(180deg, rgba(48,67,81,.94), rgba(28,43,54,.90));
    border-color: rgba(218,170,81,.70);
    transform: translateY(-50%) scale(1.035);
    box-shadow:
      0 7px 21px rgba(0,0,0,.28),
      0 0 0 3px rgba(222,182,96,.12),
      inset 0 0 0 1px rgba(255,235,178,.18);
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn:disabled {
    opacity: .30;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-index {
    bottom: 17.2%;
    padding: .28rem .56rem .26rem;
    border: 1px solid rgba(133,94,36,.18);
    border-radius: 999px;
    background: rgba(239,221,184,.34);
    color: rgba(91,61,25,.74);
    font-size: clamp(.46rem, .54vw, .58rem);
    letter-spacing: .08em;
    white-space: nowrap;
  }
}

@media (min-width: 761px) and (max-width: 1500px) {
  .garden1-book-layer .living-book-shell--garden-pages .living-book__spread-viewport {
    left: 10.25%;
    width: 79.45%;
    height: 46.6%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--left > .living-book__page-safe {
    left: 6.3%;
    right: 13.4%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page--right > .living-book__page-safe {
    left: 13.4%;
    right: 6.3%;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-turn {
    min-width: 3.5rem;
    padding-inline: .48rem;
  }
}

@media (max-width: 760px) {
  /* Mobile reste volontairement sur la présentation stable : seul l'ancien
     triplet d'assets est remplacé par le master unique. */
  .garden1-canonical-master-anchor {
    left: -2%;
    bottom: 7.0%;
    width: min(51vw, 21rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  .garden1-canonical-master-anchor {
    transition: none !important;
  }
}


/* ============================================================
   VNEW.0.130.3.8.4.8.3.7.3.2.1.1 — PAGE TURN ALIGNMENT REPAIR
   Les surfaces visibles des pages deviennent des panneaux DOM cohérents
   avec la feuille tournante. Le feuillet source disparaît pendant la
   rotation pour éviter l’impression de tourner les anciennes pages.
   ============================================================ */

@media (min-width: 761px) {
  .garden1-book-layer .living-book-shell--garden-pages .living-book__page,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face-copy,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face--back {
    position: relative;
    border: 1px solid rgba(168, 121, 49, .16) !important;
    background:
      radial-gradient(ellipse at 42% 34%, rgba(255, 250, 234, .985), rgba(249, 238, 214, .988) 58%, rgba(235, 216, 183, .988) 83%, rgba(220, 194, 149, .982) 100%) !important;
    box-shadow:
      inset 0 0 0 1px rgba(255,255,255,.18),
      inset 0 0 1.25rem rgba(132, 92, 34, .08),
      0 .2rem .5rem rgba(70, 43, 13, .05) !important;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page::before,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face-copy::before,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face--back::before {
    content: "";
    position: absolute;
    inset: 4.2% 4.3% 4.8% 4.3%;
    border: 1px solid rgba(173, 126, 52, .34);
    box-shadow: inset 0 0 0 1px rgba(248, 233, 196, .52);
    pointer-events: none;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page::after,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face-copy::after,
  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face--back::after {
    content: "✦";
    position: absolute;
    top: 3.0%;
    left: 50%;
    transform: translateX(-50%);
    color: rgba(173, 126, 52, .48);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(.56rem, .78vw, .78rem);
    line-height: 1;
    pointer-events: none;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page-safe {
    z-index: 1;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face {
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face--back {
    overflow: hidden;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__turn-face-copy {
    border: 0 !important;
  }

  .garden1-book-layer .living-book-shell--garden-pages .living-book__page.is-turn-source {
    opacity: 0 !important;
  }
}

/* ============================================================
   VNEW.0.130.3.8.4.8.3.7.3.2.1.2 — BOOK ENTRY STATE HOTFIX
   Calm Garden = one CLOSED scene book. Reading = one OPEN canonical master.
   Never display both at the same time.
   ============================================================ */
.garden1-canonical-master-anchor {
  aspect-ratio: 651 / 441;
}

.garden1-scene:not(.is-book-reading):not(.is-awake) .garden1-canonical-master-anchor {
  opacity: 1;
  visibility: visible;
}

.garden1-scene.is-book-reading .garden1-canonical-master-anchor {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}
