/* Laberinto del Pacífico · page layer. Engine stays untouched. */
:root {
  --sc-canvas:     #0f1a15;   /* cloud-forest night green */
  --sc-surface:    #17241d;
  --sc-ink:        #eef0e6;   /* bone */
  --sc-ink-soft:   #b3bfae;   /* moss-tinted */
  --sc-accent:     #f2925a;   /* sunset ember, their red roofs */
  --sc-accent-ink: #1c0f08;
  --sc-font-display: "Outfit", system-ui, sans-serif;
  --sc-font-text:    "Geist", system-ui, sans-serif;
  --lp-cloud: #eef1ef;
  --lp-forest-ink: #13221b;
  --lp-ember-deep: #a8441a;  /* the same hue on light grounds */
  --lp-r: 14px;
}
html { background: var(--sc-canvas); overflow-x: clip; }
body { overflow-x: clip; }
img { display: block; }
.lp-skip { position: absolute; left: 1rem; top: -4rem; z-index: 60; background: var(--sc-accent); color: var(--sc-accent-ink); padding: .6rem 1rem; border-radius: 999px; }
.lp-skip:focus { top: 1rem; }

/* ---------------------------------------------------------------- type */
.lp-h2 { font-size: clamp(2.1rem, 1.3rem + 2.8vw, 4.1rem); line-height: 1.02; letter-spacing: -0.025em; font-weight: 500; text-wrap: balance; margin: 0; }
.lp-h2--xl { font-size: clamp(3rem, 1.6rem + 5.4vw, 7.2rem); letter-spacing: -0.035em; }
.lp-h3 { font-family: var(--sc-font-display); font-weight: 500; font-size: clamp(1.7rem, 1.2rem + 1.6vw, 2.7rem); letter-spacing: -0.02em; line-height: 1.05; margin: 0; }
.lp-h3--sm { font-size: clamp(1.25rem, 1rem + .8vw, 1.6rem); margin-top: var(--sc-7); }
.lp-quiet { font-size: .92em; opacity: .85; }

/* ---------------------------------------------------------------- buttons */
.lp-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5em;
  min-height: 48px; padding: 0 1.5rem; border-radius: 999px; white-space: nowrap;
  font: 500 1rem/1 var(--sc-font-text); letter-spacing: .01em; text-decoration: none;
  background: var(--sc-accent); color: var(--sc-accent-ink); border: 1px solid transparent; cursor: pointer;
  box-shadow: 0 10px 28px -12px color-mix(in oklab, var(--sc-accent) 70%, #000);
  transition: transform 140ms var(--sc-ease-out), background-color 160ms var(--sc-ease-out), box-shadow 160ms var(--sc-ease-out);
}
@media (hover: hover) and (pointer: fine) { .lp-btn:hover { background: color-mix(in oklab, var(--sc-accent) 88%, #fff); } }
.lp-btn:active { transform: scale(.97); }
.lp-btn:focus-visible, .lp-walk__btn:focus-visible, .lp-pick:focus-visible, .lp-casas__tabs button:focus-visible, .lp-lang:focus-visible, .lp-mast a:focus-visible {
  outline: 2px solid var(--sc-accent); outline-offset: 3px;
}
.lp-btn--ghost { background: color-mix(in oklab, var(--sc-canvas) 40%, transparent); color: var(--sc-ink); border-color: color-mix(in oklab, var(--sc-ink) 40%, transparent); box-shadow: none; backdrop-filter: blur(6px); }
@media (hover: hover) and (pointer: fine) { .lp-btn--ghost:hover { background: var(--sc-ink); color: var(--lp-forest-ink); } }

/* ---------------------------------------------------------------- masthead (static, scrolls away) */
.lp-mast {
  position: absolute; z-index: 40; inset: 0 0 auto 0;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: clamp(.9rem, 2.2vw, 1.6rem) var(--sc-gutter);
}
.lp-mast__mark { display: flex; align-items: center; gap: .75rem; color: var(--sc-ink); text-decoration: none; }
.lp-logo { width: 28px; height: 46px; background: url(assets/mark.png) center/contain no-repeat; flex: none; filter: drop-shadow(0 1px 6px rgba(10,20,30,.35)); }
.lp-mast__name { font: 600 1.05rem/1 var(--sc-font-display); letter-spacing: -.01em; text-shadow: 0 1px 12px rgba(10,22,40,.4); }
.lp-mast__nav { display: flex; align-items: center; gap: clamp(.6rem, 1.8vw, 1.6rem); }
.lp-mast__nav > a:not(.lp-btn) { color: var(--sc-ink); text-decoration: none; font-size: .95rem; text-shadow: 0 1px 10px rgba(10,22,40,.5); }
@media (hover: hover) and (pointer: fine) { .lp-mast__nav > a:not(.lp-btn):hover { text-decoration: underline; text-underline-offset: 5px; } }
.lp-lang { background: none; border: 1px solid color-mix(in oklab, var(--sc-ink) 45%, transparent); color: var(--sc-ink); border-radius: 999px; min-width: 44px; min-height: 36px; font: 500 .8rem/1 var(--sc-font-text); letter-spacing: .08em; cursor: pointer; }
.lp-mast .lp-btn { min-height: 40px; padding: 0 1.1rem; }
@media (max-width: 860px) {
  .lp-mast__nav > a:not(.lp-btn) { display: none; }
  .lp-mast__name { font-size: .95rem; }
}
@media (max-width: 400px) { .lp-mast__name { max-width: 9.5rem; line-height: 1.1; } }

/* ---------------------------------------------------------------- the walk (signature chrome) */
.lp-walk { position: fixed; z-index: 45; left: var(--sc-gutter); bottom: clamp(1rem, 3vh, 2rem); color: var(--sc-ink); }
.lp-walk__btn {
  display: flex; align-items: center; gap: .7rem; padding: .45rem 1rem .45rem .45rem; border-radius: 999px;
  border: 1px solid color-mix(in oklab, currentColor 22%, transparent);
  background: color-mix(in oklab, var(--sc-canvas) 62%, transparent); color: inherit; backdrop-filter: blur(10px) saturate(1.2);
  box-shadow: 0 12px 30px -16px rgba(0,0,0,.6), var(--sc-edge); cursor: pointer; text-align: left;
  transition: background-color 400ms var(--sc-ease-out), color 400ms var(--sc-ease-out);
}
.lp-walk__glyph { width: 52px; height: 52px; flex: none; overflow: visible; }
.lp-walk__glyph path { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.lw-all { stroke: color-mix(in oklab, currentColor 26%, transparent); stroke-width: 2.4; }
.lw-in  { stroke: var(--sc-accent); stroke-width: 3.6; }
.lw-out { stroke: currentColor; stroke-width: 3.6; opacity: .95; }
.lw-dot { fill: currentColor; }
.lp-walk__txt { display: grid; gap: 2px; }
.lp-walk__where { font: 500 .98rem/1.1 var(--sc-font-display); }
.lp-walk__hint { font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; opacity: .7; }
.lp-walk__list {
  position: absolute; left: 0; bottom: calc(100% + .6rem); margin: 0; padding: .5rem; list-style: none; min-width: 15rem;
  background: color-mix(in oklab, var(--sc-canvas) 92%, transparent); backdrop-filter: blur(12px);
  border: 1px solid color-mix(in oklab, currentColor 18%, transparent); border-radius: 16px; box-shadow: var(--sc-e3);
}
.lp-walk__list a { display: flex; align-items: center; min-height: 44px; padding: 0 .9rem; border-radius: 10px; color: inherit; text-decoration: none; }
.lp-walk__list a[aria-current="true"] { color: var(--sc-accent); }
@media (hover: hover) and (pointer: fine) { .lp-walk__list a:hover { background: color-mix(in oklab, currentColor 8%, transparent); } }
.lp-walk.is-light { color: var(--lp-forest-ink); }
.lp-walk.is-light .lp-walk__btn { background: color-mix(in oklab, var(--lp-cloud) 70%, transparent); }
.lp-walk.is-light .lw-in { stroke: var(--lp-ember-deep); }
.lp-walk.is-light .lp-walk__list { background: color-mix(in oklab, var(--lp-cloud) 95%, transparent); }
@media (max-width: 860px) {
  .lp-walk { left: auto; right: .75rem; bottom: .75rem; }
  .lp-walk__btn { padding: .35rem; }
  .lp-walk__txt { display: none; }
  .lp-walk__glyph { width: 46px; height: 46px; }
  .lp-walk__list { left: auto; right: 0; }
}

/* ================================================================= 1 · LLEGADA */
.lp-hero__stage { background: #5aa0d6; }
.lp-hero__sky { position: absolute; inset: 0; background: linear-gradient(180deg, #52a0d6 0%, #6fade0 22%, #81b6e3 40%, #a9c7dd 60%, #c8d6dc 100%); }
.lp-plane { position: absolute; inset: -4% -3%; pointer-events: none; will-change: transform; }
.lp-plane img { position: absolute; left: 0; width: 100%; max-width: none; }
.lp-plane img { top: 0; height: 100%; object-fit: cover; object-position: 54% 50%; }
.lp-plane--near { z-index: 3; transform-origin: 54% 100%; }
.lp-plane--mist {
  z-index: 4; inset: auto -20% -30% -20%; height: 75%;
  background: url(assets/mist.webp) center top / 100% 100% no-repeat;
  opacity: .0; filter: blur(2px);
}
.lp-hero__floor { position: absolute; inset: auto 0 0 0; height: 32%; z-index: 5; background: linear-gradient(to top, var(--sc-canvas) 0%, color-mix(in oklab, var(--sc-canvas) 70%, transparent) 30%, transparent 100%); opacity: 0; pointer-events: none; }
.lp-hero__shade { position: absolute; z-index: 2; left: -10%; top: 14%; width: 80%; height: 52%; pointer-events: none; background: radial-gradient(closest-side, rgba(6,20,26,.5), rgba(6,20,26,.22) 60%, transparent); will-change: transform, opacity; }
.lp-hero__title { position: absolute; z-index: 2; left: var(--sc-gutter); right: var(--sc-gutter); bottom: 42%; will-change: transform, opacity; }
.lp-hero__place { margin: 0 0 .9rem; font: 500 .82rem/1 var(--sc-font-text); letter-spacing: .16em; text-transform: uppercase; color: var(--sc-ink); text-shadow: 0 1px 2px rgba(4,14,20,.7), 0 0 14px rgba(4,14,20,.6), 0 0 28px rgba(4,14,20,.45); }
.lp-hero__h1 {
  margin: 0; font: 400 clamp(3.4rem, 1rem + min(8.4vw, 15vh), 10.6rem)/.88 var(--sc-font-display); letter-spacing: -.045em;
  color: #f6f4ec; text-shadow: 0 2px 30px rgba(5, 18, 26, .35); max-width: 11ch;
}
.lp-hero__h1 span { display: block; }
.lp-hero__h1 span + span { padding-left: .9em; }
.lp-hero__lede { position: absolute; z-index: 6; right: var(--sc-gutter); bottom: clamp(2rem, 9vh, 6rem); max-width: 25rem; display: grid; gap: 1.2rem; justify-items: start; }
.lp-hero__lede p { margin: 0; font-size: 1.08rem; line-height: 1.55; color: var(--sc-ink); text-shadow: 0 1px 18px rgba(4, 14, 10, .9); }
.lp-hero__lede::before { content: ""; position: absolute; inset: -40% -30% -30% -40%; z-index: -1; background: radial-gradient(closest-side, rgba(10,22,16,.62), transparent); pointer-events: none; }
@media (max-width: 1200px) and (min-width: 861px) { .lp-hero__lede { max-width: 20rem; } }
@media (max-width: 860px) {
  .lp-plane { inset: -3% -6%; }
  .lp-hero__title { top: 30%; bottom: auto; display: flex; flex-direction: column; }
  .lp-hero__shade { left: -40%; width: 180%; top: 16%; height: 46%; }
  .lp-hero__place { order: 2; margin: 1rem 0 0; }
  .lp-hero__h1 { font-size: clamp(3.1rem, 15vw, 4.6rem); max-width: none; }
  .lp-hero__h1 span + span { padding-left: 0; }
  .lp-hero__lede { left: var(--sc-gutter); right: var(--sc-gutter); bottom: auto; top: 47%; gap: .9rem; }
  .lp-hero__lede::before { inset: -30% -20%; }
  .lp-hero__lede p { font-size: 1rem; }
}
@media (max-width: 860px) {
  .lp-short .lp-hero__title { top: 23.5%; }
  .lp-short .lp-hero__lede { gap: .9rem; }
}

/* ================================================================= 2 · BOSQUE */
.lp-bosque [data-sc-stage] { display: flex; align-items: center; }
.lp-rail { align-items: center; gap: clamp(1.2rem, 3vw, 3rem); padding-inline: var(--sc-gutter); }
.lp-rail__lead { flex: 0 0 min(30rem, 82vw); display: grid; gap: 1.2rem; align-content: center; }
.lp-note { flex: 0 0 auto; margin: 0; width: clamp(15rem, 23vw, 22rem); display: grid; grid-template-columns: minmax(0, 1fr); gap: .8rem; }
.lp-note--low { transform: translateY(9vh); }
.lp-note--wide { width: clamp(18rem, 30vw, 28rem); }
.lp-note__img { position: relative; overflow: clip; border-radius: var(--lp-r); height: min(58vh, 32rem); box-shadow: var(--sc-e2); background: var(--sc-surface); }
.lp-note__img img { position: absolute; left: -5%; top: 0; width: 110%; height: 100%; max-width: none; object-fit: cover; }
.lp-note figcaption { display: grid; grid-template-columns: 1fr auto; gap: .2rem .8rem; font-size: .92rem; color: var(--sc-ink-soft); }
.lp-note figcaption b { font: 500 1.15rem/1.15 var(--sc-font-display); color: var(--sc-ink); }
.lp-note figcaption span { grid-column: 1 / -1; line-height: 1.45; }
.lp-note figcaption i { font-style: normal; grid-column: 2; grid-row: 1; align-self: center; font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--sc-accent); }
@media (max-width: 860px) {
  .lp-note { width: 70vw; }
  .lp-note--wide { width: 78vw; }
  .lp-note--low { transform: translateY(4vh); }
  .lp-note__img { height: 52svh; }
  .lp-short .lp-note__img { height: 46svh; }
}

/* ================================================================= 3 · HUERTO (trail-anchored) */
.lp-huerto { padding-block: clamp(5rem, 14vh, 10rem); }
.lp-huerto__grid { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(0,1fr); gap: clamp(2rem, 6vw, 6rem); align-items: center; }
.lp-huerto__mosaic { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(0,1fr); grid-template-rows: auto auto; gap: clamp(.6rem, 1.2vw, 1rem); }
.lp-huerto__mosaic figure { margin: 0; overflow: clip; border-radius: var(--lp-r); box-shadow: var(--sc-e2); }
.lp-huerto__mosaic img { width: 100%; height: 100%; object-fit: cover; }
.lp-huerto__mosaic .m1 { grid-row: 1 / span 2; aspect-ratio: 3 / 4.3; }
.lp-huerto__mosaic .m2 { aspect-ratio: 1; margin-top: 18%; }
.lp-huerto__mosaic .m3 { aspect-ratio: 4 / 3.4; }
.lp-huerto__copy { max-width: 34rem; }
.lp-huerto .sc-label { color: var(--sc-accent); }
@media (max-width: 860px) {
  .lp-huerto__grid { grid-template-columns: minmax(0,1fr); }
  .lp-huerto__copy { order: -1; }
}

/* ================================================================= 4 · CASAS (pinned, alternating wipes) */
.lp-casas__stage { padding: clamp(5rem, 11vh, 7rem) var(--sc-gutter) clamp(1.5rem, 4vh, 3rem); display: grid; grid-template-rows: auto 1fr auto; gap: clamp(1rem, 2.4vh, 2rem); }
.lp-casas__head { display: flex; justify-content: space-between; align-items: end; gap: 2rem; flex-wrap: wrap; position: relative; z-index: 4; }
.lp-casas__head .lp-h2 { max-width: 14ch; }
.lp-casas__tabs { display: flex; gap: .4rem; padding: .3rem; border-radius: 999px; background: color-mix(in oklab, var(--sc-ink) 7%, transparent); border: 1px solid var(--sc-hairline); }
.lp-casas__tabs button { min-height: 44px; padding: 0 1.1rem; border-radius: 999px; border: 0; background: none; color: var(--sc-ink-soft); font: 500 .92rem/1 var(--sc-font-text); cursor: pointer; transition: background-color 160ms var(--sc-ease-out), color 160ms var(--sc-ease-out); }
.lp-casas__tabs button[aria-selected="true"] { background: var(--sc-ink); color: var(--lp-forest-ink); }
.lp-house { grid-row: 2; grid-column: 1; position: relative; display: grid; grid-template-columns: minmax(18rem, .8fr) 1.35fr; gap: clamp(1.5rem, 4vw, 4rem); align-items: stretch; min-height: 0; background: var(--sc-canvas); will-change: clip-path; }
.lp-house__ext { grid-column: 2; grid-row: 1; position: relative; overflow: clip; border-radius: var(--lp-r); box-shadow: var(--sc-e3); min-height: 0; }
.lp-house__ext img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform: scale(calc(1.12 - var(--lp-hp, 0) * .1)); }
.lp-house__int { position: absolute; z-index: 2; right: calc(100% - 46%); bottom: -1.2rem; width: clamp(9rem, 17vw, 16rem); aspect-ratio: 4 / 3; overflow: clip; border-radius: calc(var(--lp-r) - 4px); box-shadow: var(--sc-e3), 0 0 0 4px var(--sc-canvas); transform: translate3d(0, calc((1 - var(--lp-hp, 0)) * 40px), 0); }
.lp-house__int img { width: 100%; height: 100%; object-fit: cover; }
.lp-house__copy { grid-column: 1; grid-row: 1; display: flex; flex-direction: column; gap: 1rem; justify-content: center; min-height: 0; padding-bottom: 3rem; }
.lp-house__say { margin: 0; color: var(--sc-ink); font-size: 1.1rem; line-height: 1.45; max-width: 26ch; }
.lp-spec { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: .55rem 1.2rem; font-size: .95rem; border-top: 1px solid var(--sc-hairline); padding-top: 1rem; max-width: 30rem; }
.lp-spec dt { color: var(--sc-ink-soft); font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; padding-top: .2em; }
.lp-spec dd { margin: 0; color: var(--sc-ink); line-height: 1.4; }
.lp-pick { align-self: flex-start; min-height: 44px; padding: 0 1.2rem; border-radius: 999px; border: 1px solid color-mix(in oklab, var(--sc-accent) 70%, transparent); background: none; color: var(--sc-accent); font: 500 .95rem/1 var(--sc-font-text); cursor: pointer; transition: background-color 150ms var(--sc-ease-out), color 150ms var(--sc-ease-out), transform 120ms var(--sc-ease-out); }
.lp-pick:active { transform: scale(.97); }
.lp-pick[aria-pressed="true"] { background: var(--sc-accent); color: var(--sc-accent-ink); }
@media (hover: hover) and (pointer: fine) { .lp-pick:hover { background: color-mix(in oklab, var(--sc-accent) 16%, transparent); } }
.lp-casas__all { margin: 0; font-size: .9rem; color: var(--sc-ink-soft); position: relative; z-index: 4; }
/* the reversal: odd houses mirror the layout */
.lp-house[data-i="1"] { grid-template-columns: 1.35fr minmax(18rem, .8fr); }
.lp-house[data-i="1"] .lp-house__ext { grid-column: 1; }
.lp-house[data-i="1"] .lp-house__copy { grid-column: 2; }
.lp-house[data-i="1"] .lp-house__int { right: auto; left: calc(100% - 46%); }
@media (max-width: 860px) {
  .lp-casas__stage { padding-top: 4.2rem; gap: .8rem; }
  .lp-casas__head { display: grid; gap: .8rem; }
  .lp-casas__head .lp-h2 { font-size: 1.85rem; max-width: none; }
  .lp-casas__tabs { overflow-x: auto; scrollbar-width: none; }
  .lp-casas__tabs button { padding: 0 .85rem; font-size: .86rem; flex: none; }
  .lp-house, .lp-house[data-i="1"] { grid-template-columns: 1fr; grid-template-rows: minmax(0, 1fr) auto; gap: .9rem; }
  .lp-house .lp-house__ext, .lp-house[data-i="1"] .lp-house__ext { grid-column: 1; grid-row: 1; min-height: 9rem; }
  .lp-house .lp-house__copy, .lp-house[data-i="1"] .lp-house__copy { grid-column: 1; grid-row: 2; padding-bottom: 0; gap: .6rem; }
  .lp-house__int, .lp-house[data-i="1"] .lp-house__int { left: auto; right: .6rem; top: .6rem; bottom: auto; width: 7.5rem; }
  .lp-house__say { font-size: .98rem; }
  .lp-spec { font-size: .86rem; gap: .35rem .9rem; padding-top: .6rem; }
  .lp-spec dt:nth-of-type(n+4), .lp-spec dd:nth-of-type(n+4) { display: none; }
  .lp-casas__all { display: none; }
}
.lp-short .lp-spec dt:nth-of-type(n+3), .lp-short .lp-spec dd:nth-of-type(n+3) { display: none; }
.lp-short .lp-house__say { display: none; }

/* ================================================================= 5 · FUEGO */
.lp-fuego { padding-block: clamp(5rem, 14vh, 9rem) clamp(6rem, 16vh, 10rem); }
.lp-fuego__grid { display: grid; grid-template-columns: minmax(0,1.15fr) minmax(0,1fr); gap: clamp(2rem, 6vw, 6rem); align-items: center; }
.lp-fuego__collage { position: relative; aspect-ratio: 5 / 4.4; }
.lp-fuego__collage figure { margin: 0; position: absolute; overflow: clip; border-radius: var(--lp-r); box-shadow: var(--sc-e3); }
.lp-fuego__collage img { width: 100%; height: 100%; object-fit: cover; }
.lp-fuego__back { inset: 0 18% 22% 0; }
.lp-fuego__front { inset: 40% 0 -4% 34%; box-shadow: var(--sc-e3), 0 0 0 5px var(--sc-canvas) !important; }
.lp-fuego__copy { max-width: 32rem; }
.lp-fuego .lp-h2 { color: #f6e6d6; }
@media (max-width: 860px) {
  .lp-fuego__grid { grid-template-columns: minmax(0,1fr); }
  .lp-fuego__collage { aspect-ratio: 1 / 1.05; }
}

/* ================================================================= 6 · SENDERO */
.lp-sendero__stage { background: var(--sc-canvas); }
.lp-sendero__win { position: absolute; top: 9vh; bottom: 9vh; right: calc(var(--sc-gutter) + 4vw); aspect-ratio: 9 / 16; overflow: clip; border-radius: 20px; box-shadow: var(--sc-e3); background: #222; transform-origin: 50% 50%; will-change: transform; }
.lp-sendero__win video, .lp-sendero__win .sc-stage__poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.lp-sendero__scrim { display: none; }
.lp-sendero__copy { position: absolute; z-index: 3; left: var(--sc-gutter); top: 50%; translate: 0 -50%; max-width: 31rem; display: grid; gap: 1.2rem; }
.lp-whiteout { position: absolute; inset: 0; z-index: 8; pointer-events: none; background: var(--lp-cloud); opacity: 0; }
.lp-whiteout__mist { position: absolute; inset: -20%; background: url(assets/mist.webp) center / cover no-repeat; opacity: .8; mix-blend-mode: multiply; }
@media (max-width: 860px) {
  .lp-sendero__win { inset: 0; aspect-ratio: auto; border-radius: 0; }
  .lp-sendero__scrim { display: block; --sc-scrim-a: 88%; }
  .lp-sendero__scrim { background: linear-gradient(to top, color-mix(in oklab, var(--sc-canvas) 92%, transparent) 0%, color-mix(in oklab, var(--sc-canvas) 70%, transparent) 30%, transparent 62%); }
  .lp-sendero__copy { top: auto; bottom: 5.2rem; translate: none; right: var(--sc-gutter); }
}

/* ================================================================= 7 · CENTRO (peak) */
.lp-centro__stage { background: var(--lp-cloud); color: var(--lp-forest-ink); }
.lp-centro__view { position: absolute; inset: 0; clip-path: circle(var(--lp-r0, 40px) at 50% 50%); will-change: clip-path; }
.lp-centro__view img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 55% 52%; transform: translate3d(var(--lp-sx, 0px), 0, 0) scale(var(--lp-zoom, 1.1)); transform-origin: 55% 52%; }
.lp-centro__mist { position: absolute; left: -30%; right: -30%; height: 46%; bottom: -8%; background: url(assets/mist.webp) center / 100% 100% no-repeat; opacity: .55; pointer-events: none; will-change: transform; }
.lp-centro__mist--b { bottom: -18%; height: 52%; opacity: .7; filter: blur(3px); }
.lp-centro__scrim { position: absolute; inset: 0; background: linear-gradient(105deg, rgba(14,10,20,.66) 0%, rgba(14,10,20,.38) 30%, transparent 58%); opacity: var(--lp-copy, 0); }
.lp-centro__maze { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.lp-centro__maze path { fill: none; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.lc-path { stroke: color-mix(in oklab, var(--lp-forest-ink) 30%, transparent); stroke-width: 1.6; }
.lc-walk { stroke: var(--lp-ember-deep); stroke-width: 2.6; }
.lp-centro__arrive { position: absolute; left: 50%; bottom: 7vh; translate: -50% 0; margin: 0; font: 500 .8rem/1 var(--sc-font-text); letter-spacing: .18em; text-transform: uppercase; color: var(--lp-forest-ink); white-space: nowrap; }
.lp-centro__copy { position: absolute; z-index: 3; left: var(--sc-gutter); top: 50%; translate: 0 -50%; max-width: 36rem; display: grid; gap: 1.4rem; color: #fbf3ea; opacity: var(--lp-copy, 0); transform: translate3d(0, calc((1 - var(--lp-copy, 0)) * 24px), 0); }
.lp-centro__copy .sc-body { color: #f1e4d8; font-size: 1.12rem; text-shadow: 0 1px 16px rgba(20,10,12,.6); }
.lp-centro__copy .lp-h2 { text-shadow: 0 2px 26px rgba(30,10,8,.35); }
@media (max-width: 860px) {
  .lp-centro__view img { object-position: 50% 40%; transform-origin: 50% 40%; }
  .lp-centro__copy { top: auto; bottom: 6rem; translate: none; right: var(--sc-gutter); }
  .lp-centro__scrim { background: linear-gradient(to top, rgba(14,10,20,.74) 0%, rgba(14,10,20,.42) 34%, transparent 62%); }
}

/* ================================================================= 8 · NOCHE */
.lp-noche { padding-block: clamp(5rem, 14vh, 9rem); --sc-ink: #eceaf6; --sc-ink-soft: #b4b4cf; color: var(--sc-ink); }
.lp-noche__grid { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,.9fr); grid-template-areas: "copy sky" "art sky"; gap: clamp(1.5rem, 3vw, 3rem) clamp(2rem, 5vw, 5rem); align-items: start; position: relative; }
.lp-noche__grid figure { margin: 0; overflow: clip; border-radius: var(--lp-r); box-shadow: var(--sc-e3); }
.lp-noche__grid img { width: 100%; height: 100%; object-fit: cover; }
.lp-noche__sky { grid-area: sky; aspect-ratio: 9 / 14; }
.lp-noche__copy { grid-area: copy; max-width: 34rem; }
.lp-noche__art { grid-area: art; aspect-ratio: 4 / 3; }
.lp-noche__sky { align-self: stretch; aspect-ratio: auto; min-height: 36rem; }
.lp-noche__fire { position: absolute !important; z-index: 2; right: calc(45% - 8rem); bottom: -3rem; width: clamp(10rem, 17vw, 16rem); aspect-ratio: 4 / 5; box-shadow: var(--sc-e3), 0 0 0 5px var(--sc-canvas) !important; }
@media (max-width: 860px) {
  .lp-noche__grid { grid-template-columns: minmax(0,1fr) minmax(0,1fr); grid-template-areas: "copy copy" "sky art"; }
  .lp-noche__sky { min-height: 0; aspect-ratio: 9 / 14; }
  .lp-noche__art { aspect-ratio: 3 / 4; }
  .lp-noche__fire { right: auto; left: 46%; bottom: -2rem; width: 42vw; }
}

/* ================================================================= 9 · PUERTA (dawn, light ground) */
.lp-puerta { --sc-ink: #13221b; --sc-ink-soft: #445448; --sc-accent: #a8441a; --sc-accent-ink: #fff7f0; color: var(--sc-ink); }
.lp-puerta__stage { background: var(--lp-cloud); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: 1fr auto; }
.lp-puerta__photo { grid-column: 2; grid-row: 1 / -1; position: relative; overflow: clip; -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 22%); mask-image: linear-gradient(90deg, transparent 0%, #000 22%); }
.lp-puerta__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 60% 50%; }
.lp-puerta__cafe { position: absolute; z-index: 2; right: calc(var(--sc-gutter) + 6vw); bottom: 14vh; width: clamp(9rem, 14vw, 13rem); aspect-ratio: 9 / 14; margin: 0; overflow: clip; border-radius: var(--lp-r); box-shadow: 0 30px 60px -24px rgba(10,30,20,.55), 0 0 0 5px var(--lp-cloud); }
.lp-puerta__cafe img { width: 100%; height: 100%; object-fit: cover; }
.lp-puerta__inner { grid-column: 1; grid-row: 1; align-self: center; padding: 6rem var(--sc-gutter) 1rem; display: grid; gap: 1.4rem; max-width: 40rem; position: relative; z-index: 3; }
.lp-puerta .lp-h2 { font-size: clamp(1.9rem, 1.2rem + 2.2vw, 3.3rem); }
.lp-book { display: grid; gap: 1rem; }
.lp-book fieldset { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.lp-book legend, .lp-field > span { font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--sc-ink-soft); margin-bottom: .45rem; padding: 0; }
.lp-book__houses label { position: relative; }
.lp-book__houses input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.lp-book__houses label > span { display: inline-flex; align-items: center; gap: .45em; min-height: 44px; padding: 0 1rem; border-radius: 999px; border: 1px solid color-mix(in oklab, var(--sc-ink) 25%, transparent); font-size: .95rem; background: #fff6; transition: background-color 150ms var(--sc-ease-out), color 150ms var(--sc-ease-out); }
.lp-book__houses small { font-size: .78em; color: var(--sc-ink-soft); }
.lp-book__houses input:checked + span { background: var(--sc-ink); color: var(--lp-cloud); border-color: var(--sc-ink); }
.lp-book__houses input:checked + span small { color: color-mix(in oklab, var(--lp-cloud) 75%, transparent); }
.lp-book__houses input:focus-visible + span { outline: 2px solid var(--sc-accent); outline-offset: 3px; }
.lp-book__row { display: grid; grid-template-columns: 1fr 1fr auto; gap: .8rem; }
.lp-field { display: grid; }
.lp-field input { min-height: 46px; border-radius: 12px; border: 1px solid color-mix(in oklab, var(--sc-ink) 25%, transparent); background: #fffc; padding: 0 .8rem; font: 500 1rem var(--sc-font-text); color: var(--sc-ink); }
.lp-field input:focus-visible { outline: 2px solid var(--sc-accent); outline-offset: 2px; }
.lp-step__ctl { display: flex; align-items: center; min-height: 46px; border-radius: 12px; border: 1px solid color-mix(in oklab, var(--sc-ink) 25%, transparent); background: #fffc; }
.lp-step__ctl button { width: 44px; height: 44px; border: 0; background: none; font: 500 1.2rem/1 var(--sc-font-text); color: var(--sc-ink); cursor: pointer; border-radius: 10px; }
.lp-step__ctl button:disabled { opacity: .3; cursor: default; }
.lp-step__ctl button:focus-visible { outline: 2px solid var(--sc-accent); }
.lp-step__ctl output { min-width: 2ch; text-align: center; font-variant-numeric: tabular-nums; font-weight: 600; }
.lp-check { display: flex; gap: .6rem; align-items: center; font-size: .95rem; min-height: 32px; }
.lp-check input { width: 20px; height: 20px; accent-color: var(--sc-ink); }
.lp-book__note { margin: 0; min-height: 1.4em; font-size: .9rem; color: var(--sc-ink-soft); }
.lp-book__note.is-warn { color: var(--sc-accent); }
.lp-book__go { display: flex; flex-wrap: wrap; gap: .7rem; }
.lp-btn--solid { background: var(--sc-ink); color: var(--lp-cloud); box-shadow: 0 14px 30px -16px rgba(10,30,20,.7); }
@media (hover: hover) and (pointer: fine) { .lp-btn--solid:hover { background: var(--sc-accent); color: var(--sc-accent-ink); } }
.lp-btn--line { background: transparent; color: var(--sc-ink); border-color: color-mix(in oklab, var(--sc-ink) 35%, transparent); box-shadow: none; }
@media (hover: hover) and (pointer: fine) { .lp-btn--line:hover { background: #fff8; } }
.lp-puerta__how { margin: 0; font-size: .86rem; line-height: 1.55; color: var(--sc-ink-soft); max-width: 36rem; }
.lp-foot { grid-column: 1 / -1; grid-row: 2; position: relative; z-index: 3; display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1.4rem; padding: .9rem var(--sc-gutter) 1.1rem; font-size: .82rem; color: var(--sc-ink-soft); background: color-mix(in oklab, var(--lp-cloud) 86%, transparent); border-top: 1px solid color-mix(in oklab, var(--sc-ink) 12%, transparent); }
.lp-foot a { color: var(--sc-ink); text-underline-offset: 3px; }
.lp-logo--ink { width: 18px; height: 30px; filter: invert(1) brightness(.25); }
@media (max-width: 1100px) { .lp-puerta__cafe { display: none; } }
@media (max-width: 860px) {
  /* phones: the gate is the last screen, so it may grow past one viewport instead of clipping its footer */
  .lp-puerta { height: auto !important; }
  .lp-puerta .lp-puerta__stage { position: relative; height: auto; min-height: 100svh; overflow: visible; }
  .lp-puerta__stage { grid-template-columns: minmax(0,1fr); grid-template-rows: 22svh auto auto; }
  .lp-puerta__photo { grid-column: 1; grid-row: 1; -webkit-mask-image: linear-gradient(to bottom, #000 55%, transparent); mask-image: linear-gradient(to bottom, #000 55%, transparent); }
  .lp-puerta__inner { grid-row: 2; padding: .2rem var(--sc-gutter) .6rem; gap: .9rem; align-self: start; }
  .lp-puerta .lp-h2 { font-size: 1.6rem; }
  .lp-book { gap: .7rem; }
  .lp-book__row { grid-template-columns: 1fr 1fr; }
  .lp-step { grid-column: 1 / -1; }
  .lp-step { display: flex; align-items: center; justify-content: space-between; }
  .lp-step > span { margin: 0; }
  .lp-book__houses label > span { padding: 0 .8rem; font-size: .88rem; }
  .lp-puerta__how { display: none; }
  .lp-foot { grid-row: 3; font-size: .76rem; gap: .3rem 1rem; padding-bottom: 4.4rem; }
  .lp-foot > span:not(.lp-logo) { flex-basis: 100%; order: -1; }
  .lp-foot .lp-logo { display: none; }
}
.lp-short .lp-puerta__stage { grid-template-rows: 16svh auto auto; }
.lp-short .lp-book__houses small { display: none; }
.lp-short .lp-check { font-size: .86rem; }

/* ---------------------------------------------------------------- reduced motion */
@media (prefers-reduced-motion: reduce) {
  .lp-plane, .lp-hero__title, .lp-centro__mist, .lp-note__img img { transform: none !important; }
  .lp-centro__view { clip-path: none !important; }
  .lp-centro__maze, .lp-centro__arrive { display: none; }
  .lp-centro__copy, .lp-centro__scrim { opacity: 1 !important; transform: none !important; }
  .lp-whiteout { display: none; }
  .lp-house { clip-path: none !important; position: relative; }
}
