/* Terrae Caravelli — Grand Historical Experience. Orchestration shell only. */

@view-transition { navigation: auto; }
::view-transition-old(root) { background: #0c100d; animation: terraeBridgeOut 380ms cubic-bezier(.4, 0, .2, 1) both; }
::view-transition-new(root) { background: #0c100d; animation: terraeBridgeIn 620ms cubic-bezier(.19, 1, .22, 1) both; }
@keyframes terraeBridgeOut { to { opacity: 0; } }
@keyframes terraeBridgeIn { from { opacity: 0; } }

html,
body {
  width: 100%;
  min-height: 100%;
  margin: 0;
  background: #080907;
}

body {
  overflow: hidden;
  color: var(--tc-craie, #e8e3d8);
  font-family: var(--cv-typo-current-ff, var(--tc-font-ui, "Inter", Arial, sans-serif));
  font-synthesis: var(--cv-typo-synthesis, none);
}

.terrae-experience,
.terrae-experience * { box-sizing: border-box; }

.terrae-experience [hidden] { display: none !important; }

.terrae-experience {
  position: relative;
  isolation: isolate;
  width: 100%;
  height: 100vh;
  height: 100svh;
  min-height: 460px;
  overflow: hidden;
  background:
    radial-gradient(ellipse at 48% 44%, rgba(17, 21, 16, .96), rgba(8, 9, 7, 1) 74%),
    #080907;
}

.terrae-experience__stage,
.terrae-experience__matter,
.terrae-experience__matter span,
.terrae-experience__veil,
.terrae-experience__veil-material,
.terrae-experience__final,
.terrae-experience__portal {
  position: absolute;
  inset: 0;
}

body[data-terrae-arrival="folco"] .terrae-experience__portal { visibility: hidden; }

.terrae-experience__stage {
  z-index: 1;
  overflow: hidden;
}

.terrae-experience__frame {
  position: absolute;
  z-index: 3;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  background: #080907;
}

.terrae-experience__matter {
  z-index: 0;
  overflow: hidden;
  background: #0c100d;
}

.terrae-experience__matter-earth {
  background:
    linear-gradient(108deg, rgba(8, 9, 7, .83), rgba(43, 33, 26, .36) 46%, rgba(16, 36, 29, .2) 68%, rgba(8, 9, 7, .86)),
    url("/assets/prologue-caravelli/terrae/03_PATTERNS/TC_Texture_Terre_1800.jpg") center / cover;
  filter: contrast(1.08) saturate(.58) brightness(.5);
  transform: scale(1.025);
}

.terrae-experience__matter-chalk {
  opacity: .13;
  background: url("/assets/prologue-caravelli/terrae/03_PATTERNS/TC_Texture_Craie_1800.jpg") center / cover;
  mix-blend-mode: screen;
}

.terrae-experience__matter > img {
  position: absolute;
  inset: -8%;
  width: 116%;
  height: 116%;
  object-fit: cover;
  opacity: .19;
  filter: brightness(.7) saturate(.65);
  mix-blend-mode: screen;
}

.terrae-experience__header {
  position: absolute;
  z-index: 9;
  top: max(25px, env(safe-area-inset-top));
  right: max(30px, env(safe-area-inset-right));
  left: max(30px, env(safe-area-inset-left));
  display: flex;
  justify-content: space-between;
  gap: 24px;
  padding-bottom: 13px;
  border-bottom: 1px solid rgba(232, 227, 216, .14);
  pointer-events: none;
}

.terrae-experience__header p,
.terrae-experience__header span {
  margin: 0;
  color: rgba(232, 227, 216, .72);
  font-size: var(--cv-typo-current-fs, 9px);
  font-weight: var(--cv-typo-current-fw, 500);
  line-height: var(--cv-typo-current-lh, 1.2);
  letter-spacing: var(--cv-typo-current-ls, .3em);
}

.terrae-experience__header span {
  color: rgba(142, 116, 88, .86);
  text-align: right;
}

.terrae-experience__progress {
  position: absolute;
  z-index: 9;
  top: 50%;
  left: max(23px, env(safe-area-inset-left));
  display: flex;
  align-items: center;
  gap: 18px;
  color: rgba(232, 227, 216, .34);
  font-size: var(--cv-typo-current-fs, 6px);
  font-style: var(--cv-typo-current-fst, normal);
  letter-spacing: var(--cv-typo-current-ls, .25em);
  pointer-events: none;
  transform: translate(-50%, -50%) rotate(-90deg);
}

.terrae-experience__progress::before {
  content: "";
  width: 34px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(142, 116, 88, .72));
}

.terrae-experience__progress b {
  color: rgba(142, 116, 88, .85);
  font-weight: var(--cv-typo-current-fw, 500);
}

/* ── Interface du récit (LOT D, 19/09/2026) : discrète, jamais invisible.
   Son · Pause / Reprendre · Revoir (à la fin) · Passer — cibles ≥ 44 px, fond propre à chaque commande
   (le contraste ne dépend plus de la scène qui passe dessous), focus visible, rien ne disparaît au repos. ── */
.terrae-experience__controls {
  position: absolute;
  z-index: 10;
  right: max(24px, env(safe-area-inset-right));
  bottom: max(22px, calc(env(safe-area-inset-bottom) + 14px));
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  transition: opacity 1100ms cubic-bezier(.2, .65, .2, 1) 500ms;
}

.terrae-experience__control {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 44px;
  min-height: 44px;
  margin: 0;
  padding: 0 calc(16px - .12em) 0 calc(16px + .12em);
  color: rgba(232, 227, 216, .92);
  /* fond plein, SANS backdrop-filter : posé au-dessus du canvas WebGL des tableaux I à IV (dans le même contexte isolé), un filtre d'arrière-plan
     faisait peindre au compositeur de Chrome une texture étrangère, agrandie, sur toute la scène (constaté le 19/09/2026, Chrome 153, Metal). */
  background: rgba(8, 9, 7, .74);
  border: 1px solid rgba(179, 154, 120, .3);
  border-radius: 2px;
  font: var(--cv-typo-current-font, 500 11px/1 var(--tc-font-ui, "Inter", Arial, sans-serif));
  letter-spacing: var(--cv-typo-current-ls, .24em);
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: color 420ms ease, border-color 420ms ease, background-color 420ms ease;
}

body[data-terrae-production] .terrae-experience__controls .terrae-experience__control {
  font-size: var(--cv-typo-current-fs, clamp(11px, .78vw, 12.5px)) !important;
  line-height: var(--cv-typo-current-lh, 1);
}

.terrae-experience__control:hover {
  color: #f4f0e8;
  background: rgba(8, 9, 7, .78);
  border-color: rgba(216, 198, 162, .62);
}

.terrae-experience__control:disabled {
  opacity: .5;
  cursor: default;
}

.terrae-experience__control:focus-visible,
.terrae-experience__portal a:focus-visible {
  outline: 2px solid #e8e3d8;
  outline-offset: 3px;
  box-shadow: 0 0 0 7px rgba(8, 9, 7, .86);
}

.terrae-experience__glyph {
  flex: none;
  width: 20px;
  height: 20px;
}

.terrae-experience__control--audio .terrae-experience__glyph { display: none; }
.terrae-experience__control--audio[aria-pressed="true"] .terrae-experience__glyph-mute,
.terrae-experience__control--audio[aria-pressed="false"] .terrae-experience__glyph-wave,
.terrae-experience__control--pause .terrae-experience__glyph-play,
.terrae-experience__control--pause[data-terrae-pause-state="paused"] .terrae-experience__glyph-pause { display: none; }
.terrae-experience__control--pause[data-terrae-pause-state="paused"] .terrae-experience__glyph-play { display: inline; }
.terrae-experience__control--pause { padding-left: 12px; }
.terrae-experience__control--pause[data-terrae-pause-state="paused"] { border-color: rgba(216, 198, 162, .72); }

/* Seuil de sortie : le récit est clos, l'interface se retire devant la matière de l'accueil. */
body[data-terrae-experience-state="finished"] .terrae-experience__controls,
body[data-terrae-experience-state="finished"] .terrae-experience__header,
body[data-terrae-experience-state="finished"] .terrae-experience__progress { opacity: 0; }

body:is(
  [data-terrae-scene="earth"],
  [data-terrae-scene="map"],
  [data-terrae-scene="roots"],
  [data-terrae-scene="seasons"],
  [data-terrae-scene="territories"]
) .terrae-experience__header,
body:is(
  [data-terrae-scene="earth"],
  [data-terrae-scene="map"],
  [data-terrae-scene="roots"],
  [data-terrae-scene="seasons"],
  [data-terrae-scene="territories"]
) .terrae-experience__progress {
  opacity: 0;
  visibility: hidden;
}

/* Hors récit (portail, seuil), « Le Salon privé » garde sa place : l'en-tête s'arrête avant lui au lieu de passer dessous. */
body[data-terrae-production]:is(
  [data-terrae-experience-state="loading"],
  [data-terrae-experience-state="ready"],
  [data-terrae-experience-state="finished"],
  [data-terrae-experience-state="destroyed"]
) .terrae-experience__header { right: max(206px, calc(env(safe-area-inset-right) + 206px)); }

.terrae-experience__veil {
  z-index: 7;
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  background: #0c100d;
  transition: opacity 760ms cubic-bezier(.2, .65, .2, 1);
}

.terrae-experience__veil-material {
  background:
    linear-gradient(112deg, rgba(8, 9, 7, .87), rgba(43, 33, 26, .38) 42%, rgba(142, 116, 88, .1) 55%, rgba(8, 9, 7, .9)),
    url("/assets/prologue-caravelli/terrae/03_PATTERNS/TC_Texture_Brume_1800.jpg") center / cover,
    url("/assets/prologue-caravelli/terrae/03_PATTERNS/TC_Texture_Terre_1800.jpg") center / cover;
  background-blend-mode: normal, soft-light, normal;
  filter: contrast(1.08) saturate(.58) brightness(.64);
}

.terrae-experience__veil > img {
  position: absolute;
  z-index: 2;
  top: 50%;
  left: 50%;
  width: 112%;
  height: auto;
  opacity: .72;
  filter: drop-shadow(0 0 18px rgba(142, 116, 88, .22));
  transform: translate(-50%, -50%);
}

.terrae-experience__veil > i {
  position: absolute;
  z-index: 3;
  top: 50%;
  right: -4%;
  left: -4%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(142, 116, 88, .2), rgba(232, 227, 216, .36), rgba(142, 116, 88, .2), transparent);
  box-shadow: 0 0 18px rgba(142, 116, 88, .13);
  transform: scaleX(.78);
  transition: transform 1100ms cubic-bezier(.2, .65, .2, 1);
}

.terrae-experience--transitioning .terrae-experience__veil { opacity: 1; }
.terrae-experience--transitioning .terrae-experience__veil > i { transform: scaleX(1); }
.terrae-experience--transitioning.terrae-experience--scene-ready .terrae-experience__veil { opacity: 0; }

body[data-terrae-transition="map-roots"] .terrae-experience__veil > i,
body[data-terrae-transition="roots-seasons"] .terrae-experience__veil > i {
  transform: rotate(-.45deg) scaleX(.96);
}

body[data-terrae-transition="seasons-territories"] .terrae-experience__veil-material,
body[data-terrae-transition="territories-manifest"] .terrae-experience__veil-material {
  filter: contrast(1.03) saturate(.42) brightness(.78);
}

.terrae-experience__portal {
  z-index: 8;
  display: grid;
  place-items: center;
  padding: 80px 28px;
  background:
    radial-gradient(ellipse at 50% 46%, rgba(17, 21, 16, .44), rgba(8, 9, 7, .84) 69%),
    rgba(8, 9, 7, .76);
  text-align: center;
}

.terrae-experience__portal-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: min(720px, 100%);
}

.terrae-experience__portal img {
  width: clamp(92px, 10vw, 142px);
  height: auto;
  opacity: .78;
  filter: saturate(.65) drop-shadow(0 22px 50px rgba(8, 9, 7, .55));
}

.terrae-experience__portal p {
  margin: 27px 0 0;
  color: rgba(142, 116, 88, .9);
  font-size: var(--cv-typo-current-fs, 8px);
  font-weight: var(--cv-typo-current-fw, 500);
  letter-spacing: var(--cv-typo-current-ls, .35em);
}

.terrae-experience__portal :is(h1,h2) {
  margin: 18px 0 0;
  color: rgba(232, 227, 216, .9);
  font-family: var(--cv-typo-current-ff, "Bodoni Moda", Didot, serif);
  font-size: var(--cv-typo-current-fs, clamp(42px, 6.1vw, 88px));
  font-weight: var(--cv-typo-current-fw, 500);
  line-height: var(--cv-typo-current-lh, .95);
  letter-spacing: var(--cv-typo-current-ls, .145em);
  text-shadow: 0 18px 50px rgba(8, 9, 7, .48);
}

.terrae-experience__portal span {
  margin-top: 17px;
  color: rgba(232, 227, 216, .64);
  font-family: var(--cv-typo-current-ff, "Cormorant Garamond", Georgia, serif);
  font-size: var(--cv-typo-current-fs, clamp(18px, 1.55vw, 23px));
  letter-spacing: var(--cv-typo-current-ls, .025em);
}

.terrae-experience__portal a {
  position: relative;
  min-height: 48px;
  margin-top: 39px;
  padding: 0 4px;
  color: rgba(232, 227, 216, .82);
  font-size: var(--cv-typo-current-fs, 9px);
  font-weight: var(--cv-typo-current-fw, 500);
  line-height: var(--cv-typo-current-lh, 48px);
  letter-spacing: var(--cv-typo-current-ls, .31em);
  text-decoration: none;
}

.terrae-experience__portal a::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 4px;
  left: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(142, 116, 88, .78), transparent);
  transform: scaleX(.72);
  transition: transform 600ms cubic-bezier(.2, .65, .2, 1);
}

.terrae-experience__portal a:hover::after,
.terrae-experience__portal a:focus-visible::after { transform: scaleX(1); }

.terrae-experience__portal small {
  margin-top: 14px;
  color: rgba(232, 227, 216, .34);
  font-size: var(--cv-typo-current-fs, 7px);
  line-height: var(--cv-typo-current-lh, 1.5);
  letter-spacing: var(--cv-typo-current-ls, .16em);
}


/* ══════════════════════════════════════════════════════════════════════════
   FINALES (LOT D, 19/09/2026) — VI « manifest », VII « maison ».
   Dramaturgie : retenue → révélation → ancrage. Une seule ligne d'or (l'horizon), des titres qui montent
   derrière leur propre masque, rien ne se pose plus sur rien. Fontes : uniquement les trois faces chargées
   (« Bodoni Moda », « Cormorant Garamond », « Inter » = InstrumentSans). Or retenu : Bronzo Secco → reflets Craie.
   ══════════════════════════════════════════════════════════════════════════ */
.terrae-experience__final {
  --terrae-or: #8e7458;
  --terrae-or-clair: #b8a07e;
  --terrae-or-reflet: #d8c6a2;
  --terrae-craie: #e8e3d8;
  --terrae-lent: cubic-bezier(.22, .61, .2, 1);
  z-index: 4;
  overflow: hidden;
  background:
    radial-gradient(ellipse at 50% 47%, rgba(43, 33, 26, .16), rgba(8, 9, 7, .72) 72%),
    transparent;
}

.terrae-experience__final :is(h1, h2, p, strong, span) {
  word-break: normal;
  overflow-wrap: normal;
  -webkit-hyphens: manual;
  hyphens: manual;
}

.terrae-experience__header,
.terrae-experience__progress { transition: opacity 900ms ease; }

/* Révélation par masque : le mot monte derrière sa propre fenêtre (texte intact, lisible d'un trait par les lecteurs d'écran). */
.terrae-experience__rise {
  display: block;
  overflow: hidden;
  margin: -.09em -.12em -.12em;
  padding: .09em .12em .12em;
}

.terrae-experience__rise > span {
  display: block;
  transform: translate3d(0, 124%, 0);
  transition: transform 1900ms var(--terrae-lent);
}

/* ── VI · Manifeste ── l'horizon se trace, le nom se lève au-dessus, la parole se pose dessous. */
.terrae-experience__final-line {
  position: absolute;
  top: 53%;
  right: 0;
  left: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent 3%, rgba(142, 116, 88, .2) 20%, rgba(184, 160, 126, .58) 50%, rgba(142, 116, 88, .2) 80%, transparent 97%);
  box-shadow: 0 0 22px rgba(142, 116, 88, .16);
  transform: scaleX(0);
  transition: transform 3000ms var(--terrae-lent);
}

.terrae-experience__final-line::after {
  content: "";
  position: absolute;
  top: -1px;
  left: 50%;
  width: clamp(110px, 13vw, 220px);
  height: 3px;
  background: linear-gradient(90deg, transparent, rgba(216, 198, 162, .95) 50%, transparent);
  border-radius: 2px;
  box-shadow: 0 0 20px rgba(216, 198, 162, .38);
  opacity: 0;
  transform: translateX(-50%) scaleX(0);
  transition: transform 2000ms var(--terrae-lent) 700ms, opacity 1200ms ease 700ms;
}

/* sous l'horizon, la terre : le motif topographique officiel (déjà chargé par la page), en strates de bronze qui se lèvent à peine */
.terrae-experience__manifest::after {
  content: "";
  position: absolute;
  z-index: 0;
  inset: 53% -6% -4%;
  background: url("/assets/prologue-caravelli/terrae/03_PATTERNS/TC_Topographic_Lines_Bronze.svg") 50% 0 / 118% auto repeat-y;
  -webkit-mask-image: linear-gradient(180deg, transparent 0, rgba(0, 0, 0, .28) 34%, #000 78%, rgba(0, 0, 0, .7) 100%), linear-gradient(90deg, transparent 2%, #000 30%, #000 70%, transparent 98%);
  mask-image: linear-gradient(180deg, transparent 0, rgba(0, 0, 0, .28) 34%, #000 78%, rgba(0, 0, 0, .7) 100%), linear-gradient(90deg, transparent 2%, #000 30%, #000 70%, transparent 98%);
  -webkit-mask-composite: source-in;
  mask-composite: intersect;
  opacity: 0;
  pointer-events: none;
  transform: translate3d(1.6%, 14px, 0);
  transition: opacity 3200ms ease, transform 11000ms var(--terrae-lent);
}

body:is([data-terrae-final-phase="earth"], [data-terrae-final-phase="identity"], [data-terrae-final-phase="thesis"]) .terrae-experience__manifest::after {
  opacity: .62;
  transform: none;
}

.terrae-experience__manifest .terrae-lighting--final {
  transform: translate3d(0, 3%, 0);
  transform-origin: 50% 53%;
  transition: opacity 2600ms var(--terrae-lent), transform 9000ms var(--terrae-lent);
}

.terrae-experience__manifest-copy {
  position: absolute;
  inset: 0 8%;
  text-align: center;
}

.terrae-experience__manifest-upper,
.terrae-experience__manifest-lower {
  position: absolute;
  right: 0;
  left: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.terrae-experience__manifest-upper { bottom: calc(47% + clamp(24px, 5.2vh, 54px)); }
.terrae-experience__manifest-lower { top: calc(53% + clamp(24px, 5.2vh, 54px)); gap: clamp(14px, 2.6vh, 28px); }

.terrae-experience__manifest-copy :is(p, h1) { margin: 0; }

.terrae-experience__manifest-earth {
  margin-bottom: clamp(16px, 3.4vh, 34px) !important;
  padding-left: .5em;
  color: var(--terrae-or-clair);
  font-size: var(--cv-typo-current-fs, clamp(11px, .82vw, 13px));
  font-weight: var(--cv-typo-current-fw, 500);
  line-height: var(--cv-typo-current-lh, 1.2);
  letter-spacing: var(--cv-typo-current-ls, .95em);
  opacity: 0;
  transition: opacity 1800ms ease, letter-spacing 2800ms var(--terrae-lent);
}

.terrae-experience__manifest h1,
.terrae-experience__revelation :is(h1,h2) {
  color: rgba(232, 227, 216, .95);
  font-family: var(--cv-typo-current-ff, "Bodoni Moda", Didot, serif);
  font-weight: var(--cv-typo-current-fw, 500);
  text-rendering: optimizeLegibility;
  text-wrap: balance;
}

.terrae-experience__manifest h1 {
  padding-left: .15em;
  font-size: var(--cv-typo-current-fs, clamp(40px, min(8vw, 14.5vh), 132px));
  line-height: var(--cv-typo-current-lh, .98);
  letter-spacing: var(--cv-typo-current-ls, .15em);
  text-shadow: 0 2px 40px rgba(232, 227, 216, .08), 0 24px 60px rgba(8, 9, 7, .55);
}

.terrae-experience__manifest h1 .terrae-experience__rise:nth-child(2) > span { transition-delay: 260ms; }

.terrae-experience__manifest-identity,
.terrae-experience__manifest-thesis {
  font-family: var(--cv-typo-current-ff, "Cormorant Garamond", Georgia, serif);
  font-weight: var(--cv-typo-current-fw, 400);
  opacity: 0;
  transform: translate3d(0, 12px, 0);
  transition: opacity 1700ms ease, transform 2200ms var(--terrae-lent);
}

.terrae-experience__manifest-identity {
  color: rgba(232, 227, 216, .94);
  font-size: var(--cv-typo-current-fs, clamp(23px, min(2.7vw, 5vh), 42px));
  line-height: var(--cv-typo-current-lh, 1.16);
  letter-spacing: var(--cv-typo-current-ls, .035em);
  white-space: nowrap;
}

.terrae-experience__manifest-thesis {
  max-width: min(25em, 100%);
  color: rgba(232, 227, 216, .82);
  font-size: var(--cv-typo-current-fs, clamp(19px, min(1.85vw, 3.6vh), 29px));
  line-height: var(--cv-typo-current-lh, 1.34);
  letter-spacing: var(--cv-typo-current-ls, .018em);
  text-wrap: balance;
}

body[data-terrae-final-phase] .terrae-experience__manifest .terrae-experience__final-line { transform: scaleX(1); }

body:is([data-terrae-final-phase="earth"], [data-terrae-final-phase="identity"], [data-terrae-final-phase="thesis"]) .terrae-experience__manifest-earth {
  letter-spacing: var(--cv-typo-current-ls, .5em);
  opacity: 1;
}

body:is([data-terrae-final-phase="identity"], [data-terrae-final-phase="thesis"]) .terrae-experience__manifest .terrae-experience__rise > span { transform: none; }
body:is([data-terrae-final-phase="identity"], [data-terrae-final-phase="thesis"]) .terrae-experience__manifest .terrae-lighting--final { opacity: .78; transform: translate3d(0, 3%, 0) scale(1.08); }

body:is([data-terrae-final-phase="identity"], [data-terrae-final-phase="thesis"]) .terrae-experience__manifest .terrae-experience__final-line::after {
  opacity: 1;
  transform: translateX(-50%) scaleX(1);
}

body:is([data-terrae-final-phase="identity"], [data-terrae-final-phase="thesis"]) .terrae-experience__manifest-identity {
  opacity: 1;
  transform: none;
  transition-delay: 1500ms, 1500ms;
}

body[data-terrae-final-phase="thesis"] .terrae-experience__manifest-identity { transition-delay: 0ms, 0ms; }

body[data-terrae-final-phase="thesis"] .terrae-experience__manifest-thesis {
  opacity: 1;
  transform: none;
  transition-delay: 200ms, 200ms;
}

/* ── VII · Maison ── trois trajectoires (une strate, une crête, un réseau), chacune son temps ; elles montent
   vers un même point ; le signe officiel y naît par masque ; le nom de la Maison s'ancre dessous. ── */
.terrae-experience__maison {
  background:
    radial-gradient(ellipse at 50% 40%, rgba(16, 36, 29, .3), rgba(8, 9, 7, .84) 70%),
    transparent;
}

/* La figure d'origine (six courbes, cercle et point au centre de l'écran) reste le secours tant que les trajectoires
   ne sont pas tracées ; dès qu'elles le sont, elle se retire : plus rien ne traverse les noms. */
body[data-terrae-production][data-terrae-trajectories="ready"] .terrae-experience__convergence { display: none; }

body[data-terrae-production][data-terrae-trajectories="ready"] .terrae-experience__maison::before {
  background: radial-gradient(circle at var(--terrae-node-x, 50%) var(--terrae-node-y, 38%), rgba(244, 240, 232, .2), rgba(142, 116, 88, .12) 22%, rgba(16, 36, 29, .06) 48%, transparent 70%);
}

body[data-terrae-production][data-terrae-trajectories="ready"] .terrae-experience__maison .terrae-lighting--final { display: none; }

body[data-terrae-production] .terrae-experience__maison .terrae-lighting--final {
  transform: translate3d(0, -15%, 0);
  transform-origin: 50% 50%;
  transition: opacity 2400ms var(--terrae-lent), transform 6000ms var(--terrae-lent);
}

.terrae-experience__trajectories {
  position: absolute;
  z-index: 1;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
  filter: drop-shadow(0 0 6px rgba(184, 160, 126, .3));
  transition: opacity 1400ms ease;
}

.terrae-experience__trajectory { opacity: 0; transition: opacity 1200ms ease; }

.terrae-experience__trajectory path {
  fill: none;
  stroke-linecap: butt;
  stroke-linejoin: round;
  stroke-dasharray: 1 1;
  stroke-dashoffset: 1;
  transition: stroke-dashoffset 3000ms var(--terrae-lent);
}

.terrae-experience__trajectory-line { stroke-width: 1.4; }
.terrae-experience__trajectory-echo { stroke-width: .9; opacity: .68; }
.terrae-experience__trajectory-twig { stroke-width: .9; opacity: .7; }
.terrae-experience__trajectory-bud { opacity: 0; transition: opacity 900ms ease; }

.terrae-experience__trajectory path.terrae-experience__trajectory-spark {
  stroke: #f4f0e8;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-dasharray: .06 1;
  stroke-dashoffset: -.58;
  opacity: 0;
  transition: none;
}

@keyframes terraeTrajectorySpark {
  0% { stroke-dashoffset: -.58; opacity: 0; }
  14% { opacity: .95; }
  82% { opacity: .95; }
  100% { stroke-dashoffset: -.94; opacity: 0; }
}

.terrae-experience__node-halo { opacity: 0; transition: opacity 2200ms ease; }

.terrae-experience__node-ring {
  fill: none;
  stroke: rgba(244, 240, 232, .5);
  stroke-width: 1;
  opacity: 0;
  transform: scale(.15);
  transform-box: fill-box;
  transform-origin: center;
  transition: transform 2400ms var(--terrae-lent), opacity 1400ms ease;
}

.terrae-experience__node-dot {
  fill: #e8e3d8;
  opacity: 0;
  transition: opacity 900ms ease;
}

/* chaque branche trace les deux tiers de sa route pendant son temps */
body[data-terrae-final-phase="stone"] .terrae-experience__trajectory--stone,
body[data-terrae-final-phase="earth"] :is(.terrae-experience__trajectory--stone, .terrae-experience__trajectory--earth),
body:is([data-terrae-final-phase="human"], [data-terrae-final-phase="convergence"], [data-terrae-final-phase="reveal"]) .terrae-experience__trajectory { opacity: 1; }

body[data-terrae-final-phase="stone"] .terrae-experience__trajectory--stone path:not(.terrae-experience__trajectory-spark, .terrae-experience__trajectory-twig--late),
body[data-terrae-final-phase="earth"] :is(.terrae-experience__trajectory--stone, .terrae-experience__trajectory--earth) path:not(.terrae-experience__trajectory-spark, .terrae-experience__trajectory-twig--late),
body[data-terrae-final-phase="human"] .terrae-experience__trajectory path:not(.terrae-experience__trajectory-spark, .terrae-experience__trajectory-twig--late) { stroke-dashoffset: .38; }

body[data-terrae-final-phase="stone"] .terrae-experience__trajectory--stone path.terrae-experience__trajectory-twig:not(.terrae-experience__trajectory-twig--late),
body[data-terrae-final-phase="earth"] :is(.terrae-experience__trajectory--stone, .terrae-experience__trajectory--earth) path.terrae-experience__trajectory-twig:not(.terrae-experience__trajectory-twig--late),
body[data-terrae-final-phase="human"] .terrae-experience__trajectory path.terrae-experience__trajectory-twig:not(.terrae-experience__trajectory-twig--late) {
  stroke-dashoffset: 0;
  transition-duration: 1500ms;
  transition-delay: calc(var(--terrae-t, 0) * 4200ms);
}

body:is([data-terrae-final-phase="stone"], [data-terrae-final-phase="earth"], [data-terrae-final-phase="human"], [data-terrae-final-phase="convergence"]) .terrae-experience__trajectory-bud:not(.terrae-experience__trajectory-bud--late) {
  opacity: .9;
  transition-delay: calc(var(--terrae-t, 0) * 4200ms + 900ms);
}

/* puis les trois lignes achèvent ensemble leur route jusqu'au point */
body[data-terrae-final-phase="convergence"] .terrae-experience__trajectory path:not(.terrae-experience__trajectory-spark) {
  stroke-dashoffset: 0;
  transition-duration: 2300ms;
}

body[data-terrae-final-phase="convergence"] .terrae-experience__trajectory-bud--late { opacity: .9; transition-delay: 1200ms; }
body[data-terrae-final-phase="convergence"] .terrae-experience__trajectory path.terrae-experience__trajectory-spark { animation: terraeTrajectorySpark 2100ms var(--terrae-lent) 150ms 1 both; }
body[data-terrae-final-phase="convergence"] .terrae-experience__node-halo { opacity: 1; transition-delay: 900ms; }
body[data-terrae-final-phase="convergence"] .terrae-experience__node-ring { opacity: .8; transform: scale(1); transition-delay: 1500ms; }
body[data-terrae-final-phase="convergence"] .terrae-experience__node-dot { opacity: 1; transition-delay: 1900ms; }

/* enfin le point les reprend : elles se retirent en lui, le signe s'ouvre à leur place */
body[data-terrae-final-phase="reveal"] .terrae-experience__trajectory path:not(.terrae-experience__trajectory-spark, .terrae-experience__trajectory-twig) {
  stroke-dashoffset: -1;
  transition-duration: 1350ms;
  transition-timing-function: cubic-bezier(.5, 0, .3, 1);
}

body[data-terrae-final-phase="reveal"] .terrae-experience__trajectory path.terrae-experience__trajectory-twig { stroke-dashoffset: 0; opacity: 0; transition: opacity 600ms ease; }
body[data-terrae-final-phase="reveal"] .terrae-experience__trajectory-bud { opacity: 0; transition-delay: 0ms; transition-duration: 500ms; }
body[data-terrae-final-phase="reveal"] .terrae-experience__node-halo { opacity: .55; }
body[data-terrae-final-phase="reveal"] .terrae-experience__node-ring { opacity: 0; transform: scale(3.6); transition-duration: 2600ms, 2200ms; transition-delay: 500ms; }
body[data-terrae-final-phase="reveal"] .terrae-experience__node-dot { opacity: 0; transition-delay: 1300ms; }
body[data-terrae-final-phase="reveal"] .terrae-experience__trajectories { opacity: 0; transition-delay: 1500ms; }

/* les trois branches : un triptyque, des mots fixes et horizontaux, chacun à sa place, jamais l'un sur l'autre */
.terrae-experience__dimensions {
  position: absolute;
  z-index: 2;
  right: 5%;
  bottom: clamp(92px, 15.5vh, 156px);
  left: 5%;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  column-gap: 3%;
  align-items: start;
  text-align: center;
  transition: opacity 1100ms ease;
}

.terrae-experience__dimension {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 0;
  transition: opacity 1500ms ease;
}

.terrae-experience__dimension > p {
  margin: 0 0 clamp(11px, 1.9vh, 18px);
  padding-left: .44em;
  color: var(--terrae-or-clair);
  font-size: var(--cv-typo-current-fs, clamp(11px, .8vw, 12.5px));
  font-weight: var(--cv-typo-current-fw, 500);
  line-height: var(--cv-typo-current-lh, 1.2);
  letter-spacing: var(--cv-typo-current-ls, .8em);
  opacity: 0;
  transition: opacity 1500ms ease 900ms, letter-spacing 2400ms var(--terrae-lent) 900ms;   /* la route se trace d'abord : aucun texte ne précède l'événement qu'il décrit */
}

.terrae-experience__dimension h2 {
  max-width: 10.4em;
  margin: 0;
  padding-left: .13em;
  color: rgba(232, 227, 216, .95);
  font-family: var(--cv-typo-current-ff, "Bodoni Moda", Didot, serif);
  font-size: var(--cv-typo-current-fs, clamp(24px, min(2.85vw, 5.6vh), 46px));
  font-weight: var(--cv-typo-current-fw, 500);
  line-height: var(--cv-typo-current-lh, 1.1);
  letter-spacing: var(--cv-typo-current-ls, .13em);
  text-wrap: balance;
  text-shadow: 0 14px 40px rgba(8, 9, 7, .6);
}

.terrae-experience__dimension h2 .terrae-experience__rise > span { transition-delay: 1200ms; }

.terrae-experience__dimension-motto {
  display: block;
  margin-top: clamp(11px, 1.9vh, 18px);
  color: rgba(232, 227, 216, .84);
  font-family: var(--cv-typo-current-ff, "Cormorant Garamond", Georgia, serif);
  font-size: var(--cv-typo-current-fs, clamp(18px, min(1.7vw, 3.4vh), 25px));
  line-height: var(--cv-typo-current-lh, 1.2);
  letter-spacing: var(--cv-typo-current-ls, .02em);
  opacity: 0;
  transform: translate3d(0, 8px, 0);
  transition: opacity 1300ms ease 1900ms, transform 1700ms var(--terrae-lent) 1900ms;
}

body[data-terrae-final-phase="stone"] .terrae-experience__dimension--stone,
body[data-terrae-final-phase="earth"] :is(.terrae-experience__dimension--stone, .terrae-experience__dimension--earth),
body:is([data-terrae-final-phase="human"], [data-terrae-final-phase="convergence"], [data-terrae-final-phase="reveal"]) .terrae-experience__dimension { --terrae-present: 1; }


/* une branche est « présente » à partir de son temps (variable héritée par ses trois lignes de texte) */
.terrae-experience__dimension > p { opacity: var(--terrae-present, 0); letter-spacing: var(--cv-typo-current-ls, calc(.8em - var(--terrae-present, 0) * .36em)); }
.terrae-experience__dimension h2 .terrae-experience__rise > span { transform: translate3d(0, calc((1 - var(--terrae-present, 0)) * 124%), 0); }
.terrae-experience__dimension-motto { opacity: var(--terrae-present, 0); transform: translate3d(0, calc((1 - var(--terrae-present, 0)) * 8px), 0); }

/* la branche dont le temps est passé reste lisible, un ton en retrait ; à la convergence, les trois reviennent à égalité */
body[data-terrae-final-phase="earth"] .terrae-experience__dimension--stone,
body[data-terrae-final-phase="human"] :is(.terrae-experience__dimension--stone, .terrae-experience__dimension--earth) { opacity: .74; }
body[data-terrae-final-phase="reveal"] .terrae-experience__dimensions { opacity: 0; }

/* ── Révélation : le grand monogramme, réservé à cet instant. Le SVG officiel sert de masque (proportions intactes) ;
   un second masque, radial, l'ouvre depuis le point de convergence ; le métal reçoit une seule lumière, une seule fois. ── */
.terrae-experience__revelation {
  position: absolute;
  z-index: 2;
  inset: 0 6%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding-bottom: clamp(18px, 5vh, 56px);
  text-align: center;
  pointer-events: none;
}

.terrae-experience__sign-frame {
  position: relative;
  flex: none;
  width: clamp(124px, min(23vw, 36vh), 344px);
  aspect-ratio: 1;
  margin-bottom: clamp(2px, 1.4vh, 16px);
}

.terrae-experience__sign-halo {
  position: absolute;
  inset: -62%;
  background: radial-gradient(circle closest-side, rgba(232, 227, 216, .16), rgba(142, 116, 88, .1) 38%, transparent 72%);
  opacity: 0;
  transform: scale(.4);
  transition: opacity 2600ms ease 500ms, transform 4200ms var(--terrae-lent) 500ms;
}

.terrae-experience__sign {
  position: absolute;
  inset: 0;
  filter: drop-shadow(0 1px 0 rgba(8, 6, 4, .85)) drop-shadow(0 12px 22px rgba(0, 0, 0, .6)) drop-shadow(0 0 30px rgba(142, 116, 88, .22));
}

.terrae-experience__sign > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity 2400ms ease 700ms;
}

.terrae-experience__sign > span { position: absolute; inset: 0; display: none; }

body[data-terrae-final-phase="reveal"] .terrae-experience__sign > img { opacity: .92; }

@supports ((-webkit-mask-image: url("")) or (mask-image: url(""))) {
  .terrae-experience__sign > img { display: none; }

  .terrae-experience__sign {
    -webkit-mask-image: radial-gradient(circle closest-side, #000 58%, transparent 100%);
    mask-image: radial-gradient(circle closest-side, #000 58%, transparent 100%);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: 50% 50%;
    mask-position: 50% 50%;
    -webkit-mask-size: 0% 0%;
    mask-size: 0% 0%;
    transition: -webkit-mask-size 2700ms cubic-bezier(.3, .05, .2, 1) 1000ms, mask-size 2700ms cubic-bezier(.3, .05, .2, 1) 1000ms;
  }

  .terrae-experience__sign > span {
    display: block;
    -webkit-mask: url("/assets/prologue-caravelli/terrae/02_LOGOS/SVG/TC_Monogram_Craie.svg") 50% 50% / contain no-repeat;
    mask: url("/assets/prologue-caravelli/terrae/02_LOGOS/SVG/TC_Monogram_Craie.svg") 50% 50% / contain no-repeat;
  }

  .terrae-experience__sign-relief {
    background: rgba(244, 240, 232, .62);
    transform: translate(-.7px, -.9px);
  }

  .terrae-experience__sign-metal {
    background: linear-gradient(172deg, #d6c4a0 0%, #ab906a 20%, #8e7458 46%, #6d573e 68%, #9a8160 86%, #c8b28c 100%);
  }

  .terrae-experience__sign-light {
    background: linear-gradient(104deg, transparent 40%, rgba(232, 227, 216, 0) 43%, rgba(244, 240, 232, .96) 50%, rgba(232, 227, 216, 0) 57%, transparent 60%) 90% 0 / 300% 100% no-repeat;
    opacity: 0;
  }

  body[data-terrae-final-phase="reveal"] .terrae-experience__sign {
    -webkit-mask-size: 360% 360%;
    mask-size: 360% 360%;
  }

  body[data-terrae-final-phase="reveal"] .terrae-experience__sign-light { animation: terraeSignSweep 2600ms cubic-bezier(.4, 0, .2, 1) 3000ms 1 both; }
}

@keyframes terraeSignSweep {
  0% { background-position: 90% 0; opacity: 0; }
  12% { opacity: 1; }
  86% { opacity: 1; }
  100% { background-position: 10% 0; opacity: 0; }
}

body[data-terrae-final-phase="reveal"] .terrae-experience__sign-halo { opacity: 1; transform: scale(1); }
body[data-terrae-production][data-terrae-final-phase="reveal"] .terrae-experience__maison .terrae-lighting--final { transform: translate3d(0, -15%, 0) scale(1.14); }

.terrae-experience__revelation :is(h1,h2) {
  margin: 0;
  padding-left: .15em;
  font-size: var(--cv-typo-current-fs, clamp(34px, min(5.9vw, 11vh), 100px));
  line-height: var(--cv-typo-current-lh, 1);
  letter-spacing: var(--cv-typo-current-ls, .15em);
  text-shadow: 0 3px 34px rgba(232, 227, 216, .075), 0 22px 56px rgba(8, 9, 7, .6);
}

.terrae-experience__revelation :is(h1,h2) .terrae-experience__rise > span { transition-duration: 2100ms; }
body[data-terrae-final-phase="reveal"] .terrae-experience__revelation :is(h1,h2) .terrae-experience__rise > span { transform: none; transition-delay: 2400ms; }

.terrae-experience__places {
  margin: clamp(16px, 3.4vh, 34px) 0 0;
  padding-left: .42em;
  color: var(--terrae-or-clair);
  font-weight: var(--cv-typo-current-fw, 500);
  line-height: var(--cv-typo-current-lh, 1.2);
  letter-spacing: var(--cv-typo-current-ls, .7em);
  white-space: nowrap;
  opacity: 0;
  transition: opacity 1600ms ease, letter-spacing 2600ms var(--terrae-lent);
}

body[data-terrae-production] .terrae-experience__revelation .terrae-experience__places { font-size: var(--cv-typo-current-fs, clamp(11px, .82vw, 13px)) !important; }

.terrae-experience__revelation-rule {
  display: block;
  width: clamp(54px, 5.4vw, 92px);
  height: 1px;
  margin-top: clamp(14px, 2.8vh, 28px);
  background: linear-gradient(90deg, transparent, var(--terrae-or-reflet), transparent);
  transform: scaleX(0);
  transition: transform 1700ms var(--terrae-lent);
}

.terrae-experience__revelation strong {
  margin-top: clamp(13px, 2.6vh, 26px);
  color: rgba(232, 227, 216, .86);
  font-family: var(--cv-typo-current-ff, "Cormorant Garamond", Georgia, serif);
  font-size: var(--cv-typo-current-fs, clamp(20px, min(1.95vw, 3.8vh), 30px));
  font-weight: var(--cv-typo-current-fw, 400);
  line-height: var(--cv-typo-current-lh, 1.2);
  letter-spacing: var(--cv-typo-current-ls, .035em);
  opacity: 0;
  transform: translate3d(0, 10px, 0);
  transition: opacity 1700ms ease, transform 2100ms var(--terrae-lent);
}

body[data-terrae-final-phase="reveal"] .terrae-experience__places { letter-spacing: var(--cv-typo-current-ls, .42em); opacity: 1; transition-delay: 3600ms; }
body[data-terrae-final-phase="reveal"] .terrae-experience__revelation-rule { transform: scaleX(1); transition-delay: 4200ms; }
body[data-terrae-final-phase="reveal"] .terrae-experience__revelation strong { opacity: 1; transform: none; transition-delay: 4600ms; }

/* Pause : les gestes en cours se figent avec le récit. */
body[data-terrae-experience-state="paused"] .terrae-experience__final *,
body[data-terrae-experience-state="paused"] .terrae-experience__final *::after { animation-play-state: paused; }

/* ══════════════════════════════════════════════════════════════════════════
   SERVICES PARTAGÉS PENDANT LE RÉCIT (LOT D) — état LOCAL à Terrae, réversible, présentation seule.
   Le panneau météo reste dans la page, au clavier comme au pointeur ; il se replie (et « Le Salon privé » s'efface, voir plus bas)
   seulement tant que le récit joue (entering · transition · playing · paused · degraded) et reprennent leur
   présentation normale au portail et au seuil. Jamais touchés : un panneau météo que le visiteur a ouvert
   (.cv-atmo-control--expanded), un élément qui porte le focus, le Salon ouvert (aria-expanded="true").
   Aucun fichier du service n'est modifié ; aucune logique, aucun appel réseau n'est concerné.
   ══════════════════════════════════════════════════════════════════════════ */
body[data-terrae-production]:is(
  [data-terrae-experience-state="entering"],
  [data-terrae-experience-state="transition"],
  [data-terrae-experience-state="playing"],
  [data-terrae-experience-state="paused"],
  [data-terrae-experience-state="degraded"]
) #cv-atmosphere-control:not(.cv-atmo-control--expanded):not(:focus-within) {
  grid-template-columns: 44px;
  width: 44px;
  padding: 1px;
  opacity: .78;
}

/* l'instrument replié reste atteignable au clavier : réduit à un point (pas de display:none), il se redéploie dès qu'il reçoit le focus */
body[data-terrae-production]:is(
  [data-terrae-experience-state="entering"],
  [data-terrae-experience-state="transition"],
  [data-terrae-experience-state="playing"],
  [data-terrae-experience-state="paused"],
  [data-terrae-experience-state="degraded"]
) #cv-atmosphere-control:not(.cv-atmo-control--expanded):not(:focus-within):not(.cv-atmo-control--settled) .cv-atmo-instrument {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
}

/* « Le Salon privé » — arbitrage du propriétaire (19/09/2026) : aucun carré d'interface. Pendant le récit, le lanceur s'efface entièrement ;
   il revient tel quel, à sa place, au seuil de sortie et au portail. Présentation seule : le service, son fichier et son état ne sont pas touchés ;
   un Salon que le visiteur a ouvert (aria-expanded="true") n'est jamais masqué. */
body[data-terrae-production]:is(
  [data-terrae-experience-state="entering"],
  [data-terrae-experience-state="transition"],
  [data-terrae-experience-state="playing"],
  [data-terrae-experience-state="paused"],
  [data-terrae-experience-state="degraded"]
) #cv-salon-launcher:not([aria-expanded="true"]) {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 500ms ease, visibility 0s linear 500ms;
}

/* ── Portrait et petits écrans ── */
@media (max-width: 700px), (max-aspect-ratio: 1/1) {
  .terrae-experience__dimensions {
    right: 7%;
    bottom: clamp(84px, 12.5vh, 130px);
    left: 7%;
    grid-template-columns: minmax(0, 1fr);
    row-gap: clamp(20px, 4.4vh, 44px);
  }

  .terrae-experience__dimension h2 {
    max-width: none;
    font-size: var(--cv-typo-current-fs, clamp(19px, min(5.5vw, 3.4vh), 30px));
    letter-spacing: var(--cv-typo-current-ls, .085em);
    padding-left: .085em;
  }

  .terrae-experience__dimension > p { margin-bottom: 9px; }
  .terrae-experience__dimension-motto { margin-top: 8px; font-size: var(--cv-typo-current-fs, clamp(17px, min(4.6vw, 2.7vh), 23px)); }
  .terrae-experience__revelation { padding-bottom: clamp(40px, 9vh, 90px); }
  .terrae-experience__sign-frame { width: clamp(150px, min(50vw, 26vh), 250px); }
}

@media (max-width: 700px) {
  .terrae-experience__header {
    top: max(20px, env(safe-area-inset-top));
    right: max(18px, env(safe-area-inset-right));
    left: max(18px, env(safe-area-inset-left));
  }

  .terrae-experience__header p,
  .terrae-experience__header span { font-size: var(--cv-typo-current-fs, 7px); letter-spacing: var(--cv-typo-current-ls, .24em); }
  .terrae-experience__header span { max-width: 145px; }
  .terrae-experience__progress { display: none; }

  body[data-terrae-production]:is([data-terrae-experience-state="loading"], [data-terrae-experience-state="ready"], [data-terrae-experience-state="finished"], [data-terrae-experience-state="destroyed"]) .terrae-experience__header {
    right: max(150px, calc(env(safe-area-inset-right) + 150px));
  }

  /* une seule ligne de commandes, au bord bas : Son et Pause en pictogrammes (nom accessible complet), Revoir et Passer en toutes lettres */
  .terrae-experience__controls {
    right: max(14px, env(safe-area-inset-right));
    bottom: max(8px, calc(env(safe-area-inset-bottom) + 4px));
    left: max(14px, env(safe-area-inset-left));
    justify-content: flex-start;
    gap: 6px;
  }

  .terrae-experience__control { padding: 0 calc(12px - .08em) 0 calc(12px + .08em); letter-spacing: var(--cv-typo-current-ls, .16em); }
  body[data-terrae-production] .terrae-experience__controls .terrae-experience__control { font-size: var(--cv-typo-current-fs, 10.5px) !important; }
  .terrae-experience__control--audio .terrae-experience__glyph { display: block; }
  .terrae-experience__control--audio,
  .terrae-experience__control--pause { width: 44px; padding: 0; }

  .terrae-experience__control--audio .terrae-experience__control-label,
  .terrae-experience__control--pause .terrae-experience__control-label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }

  .terrae-experience__control--replay { margin-left: auto; }
  .terrae-experience__control--replay[hidden] + .terrae-experience__control--skip { margin-left: auto; }

  /* les libellés d'état des scènes I et IV vivaient dans la bande des commandes : ils passent juste au-dessus */
  body[data-terrae-production] .terrae-reveal__status,
  body[data-terrae-production] .terrae-season__cycle { bottom: max(58px, calc(env(safe-area-inset-bottom) + 54px)); }

  .terrae-experience__portal { padding: 74px 22px 82px; }
  .terrae-experience__portal p { max-width: 300px; font-size: var(--cv-typo-current-fs, 6px); line-height: var(--cv-typo-current-lh, 1.6); }
  .terrae-experience__portal :is(h1,h2) { max-width: 350px; font-size: var(--cv-typo-current-fs, clamp(39px, 12vw, 52px)); letter-spacing: var(--cv-typo-current-ls, .105em); }
  .terrae-experience__portal span { font-size: var(--cv-typo-current-fs, 18px); }
  .terrae-experience__portal a { margin-top: 31px; font-size: var(--cv-typo-current-fs, 7px); }

  .terrae-experience__manifest-copy { inset: 0 7%; }
  .terrae-experience__manifest h1 { font-size: var(--cv-typo-current-fs, clamp(35px, min(11.4vw, 8vh), 56px)); letter-spacing: var(--cv-typo-current-ls, .11em); padding-left: .11em; }
  .terrae-experience__manifest-earth { letter-spacing: var(--cv-typo-current-ls, .8em); }
  .terrae-experience__manifest-identity { font-size: var(--cv-typo-current-fs, clamp(22px, 6.2vw, 28px)); white-space: normal; text-wrap: balance; }
  .terrae-experience__manifest-thesis { max-width: 19.5em; font-size: var(--cv-typo-current-fs, clamp(18px, 4.9vw, 22px)); }
  .terrae-experience__revelation :is(h1,h2) { font-size: var(--cv-typo-current-fs, clamp(33px, min(10.6vw, 7.4vh), 50px)); letter-spacing: var(--cv-typo-current-ls, .11em); padding-left: .11em; line-height: var(--cv-typo-current-lh, 1.04); }
  .terrae-experience__places { letter-spacing: var(--cv-typo-current-ls, .5em); }
  body[data-terrae-final-phase="reveal"] .terrae-experience__places { letter-spacing: var(--cv-typo-current-ls, .3em); }
  body[data-terrae-production] .terrae-experience__revelation .terrae-experience__places { font-size: var(--cv-typo-current-fs, 10.5px) !important; }

}

@media (max-width: 350px) {
  .terrae-experience__control { padding: 0 9px; letter-spacing: var(--cv-typo-current-ls, .07em); }
  .terrae-experience__controls { gap: 4px; }
}

/* paysage bas (téléphone couché) : le triptyque et le signe se serrent sans jamais se toucher */
@media (max-height: 480px) and (min-aspect-ratio: 1/1) {
  /* la hauteur plancher de 460 px poussait le bas de la scène — et toutes les commandes — sous l'écran d'un téléphone couché */
  .terrae-experience { min-height: 300px; }
  .terrae-experience__controls { bottom: max(8px, calc(env(safe-area-inset-bottom) + 4px)); }
  .terrae-experience__manifest-upper { bottom: calc(47% + 14px); }
  .terrae-experience__manifest-lower { top: calc(53% + 12px); gap: 6px; }
  .terrae-experience__manifest-earth { margin-bottom: 8px !important; }
  .terrae-experience__manifest h1 { font-size: var(--cv-typo-current-fs, clamp(30px, 12vh, 56px)); }
  .terrae-experience__manifest-identity { font-size: var(--cv-typo-current-fs, clamp(19px, 5.6vh, 26px)); }
  .terrae-experience__manifest-thesis { font-size: var(--cv-typo-current-fs, clamp(15px, 4.4vh, 19px)); max-width: 30em; }
  .terrae-experience__dimensions { bottom: 58px; }
  .terrae-experience__dimension h2 { font-size: var(--cv-typo-current-fs, clamp(18px, 5.4vh, 26px)); }
  .terrae-experience__dimension-motto { font-size: var(--cv-typo-current-fs, clamp(15px, 4.4vh, 19px)); }
  .terrae-experience__revelation :is(h1,h2) { font-size: var(--cv-typo-current-fs, clamp(28px, 10vh, 46px)); }
  .terrae-experience__revelation strong { font-size: var(--cv-typo-current-fs, clamp(16px, 4.8vh, 20px)); }
  .terrae-experience__dimension > p { margin-bottom: 6px; }
  .terrae-experience__dimension-motto { margin-top: 6px; }
  .terrae-experience__sign-frame { width: clamp(84px, 30vh, 130px); margin-bottom: 10px; }
  .terrae-experience__revelation { padding-bottom: 34px; }
  .terrae-experience__places { margin-top: 10px; }
  .terrae-experience__revelation-rule { margin-top: 8px; }
  .terrae-experience__revelation strong { margin-top: 8px; }
}

/* ── Mouvement réduit : des compositions fixes, entières, lisibles ; aucun tracé, aucun balayage, aucune dérive. ── */
@media (prefers-reduced-motion: reduce) {
  .terrae-experience *,
  .terrae-experience *::before,
  .terrae-experience *::after {
    animation-duration: 200ms !important;
    animation-delay: 0ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 200ms !important;
    transition-delay: 0ms !important;
    scroll-behavior: auto !important;
  }

  .terrae-experience__matter-earth,
  .terrae-experience__veil > i { transform: none; }

  .terrae-experience__rise > span,
  .terrae-experience__dimension h2 .terrae-experience__rise > span,
  .terrae-experience__manifest-identity,
  .terrae-experience__manifest-thesis,
  .terrae-experience__dimension-motto,
  .terrae-experience__revelation strong,
  .terrae-experience__sign-halo,
  .terrae-experience__manifest::after,
  .terrae-experience__manifest .terrae-lighting--final,
  body[data-terrae-production] .terrae-experience__maison .terrae-lighting--final,
  body[data-terrae-final-phase="reveal"] .terrae-experience__maison .terrae-lighting--final { transform: none !important; }

  .terrae-experience__revelation :is(h1,h2) .terrae-experience__rise > span { opacity: 0; }
  body[data-terrae-final-phase="reveal"] .terrae-experience__revelation :is(h1,h2) .terrae-experience__rise > span { opacity: 1; }
  .terrae-experience__manifest .terrae-experience__rise > span { opacity: 0; }
  body:is([data-terrae-final-phase="identity"], [data-terrae-final-phase="thesis"]) .terrae-experience__manifest .terrae-experience__rise > span { opacity: 1; }
  .terrae-experience__dimension h2 .terrae-experience__rise > span { opacity: var(--terrae-present, 0); }

  .terrae-experience__manifest-earth,
  body:is([data-terrae-final-phase="earth"], [data-terrae-final-phase="identity"], [data-terrae-final-phase="thesis"]) .terrae-experience__manifest-earth { letter-spacing: var(--cv-typo-current-ls, .5em); }
  .terrae-experience__dimension > p { letter-spacing: var(--cv-typo-current-ls, .44em); }
  .terrae-experience__places,
  body[data-terrae-final-phase="reveal"] .terrae-experience__places { letter-spacing: var(--cv-typo-current-ls, .42em); }

  .terrae-experience__final-line { transform: scaleX(1); }
  .terrae-experience__final-line::after { transform: translateX(-50%) scaleX(1); }
  .terrae-experience__revelation-rule { transform: scaleX(1); opacity: 0; }
  body[data-terrae-final-phase="reveal"] .terrae-experience__revelation-rule { opacity: 1; }

  /* trajectoires : posées entières dès le temps de leur branche, puis retirées d'un bloc à la révélation */
  .terrae-experience__trajectory path:not(.terrae-experience__trajectory-spark) { stroke-dashoffset: 0 !important; }
  .terrae-experience__trajectory path.terrae-experience__trajectory-spark { display: none; }
  .terrae-experience__node-ring,
  body[data-terrae-final-phase="reveal"] .terrae-experience__node-ring { transform: scale(1); }
  body[data-terrae-final-phase="reveal"] .terrae-experience__trajectories { opacity: 0; }

  /* signe : présent d'un bloc, métal posé, sans balayage */
  .terrae-experience__sign { -webkit-mask-size: 360% 360% !important; mask-size: 360% 360% !important; opacity: 0; }
  body[data-terrae-final-phase="reveal"] .terrae-experience__sign { opacity: 1; }
  .terrae-experience__sign-light { display: none !important; }
}
