/* ═══════════════════════════════════════════════════════════
   MiniHaus — Tres Ríos, Cartago
   Dirección: editorial de montaña. Crema cálido, serif con
   carácter, acento terracota de cereza de café.
   ═══════════════════════════════════════════════════════════ */

:root{
  --bone:#F7F2E9;
  --bone-2:#F1EADC;
  --bone-3:#E7DCC7;
  --paper:#FCFAF4;
  --ink:#17201A;
  --ink-2:#2C362D;
  --soft:#57634F;
  --muted:#89927F;
  --clay:#A6512E;
  --clay-2:#C0693C;
  --moss:#57694E;
  --line:rgba(23,32,26,.13);
  --line-2:rgba(23,32,26,.07);
  --wa:#1E8C55;
  --wa-dark:#14663D;
  --shadow-s:0 1px 2px rgba(23,32,26,.05);
  --shadow-m:0 2px 4px rgba(23,32,26,.04),0 14px 34px -14px rgba(23,32,26,.22);
  --shadow-l:0 4px 8px rgba(23,32,26,.05),0 34px 70px -26px rgba(23,32,26,.30);

  --f-display:'Fraunces',Georgia,'Times New Roman',serif;
  --f-body:'Instrument Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --f-letter:'Newsreader',Georgia,serif;

  --wrap:1220px;
  --pad:clamp(1.15rem,4.5vw,3.25rem);
  --r-s:6px;
  --r-m:12px;
  --r-l:20px;

  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);

  color-scheme:light;
}

@media (prefers-color-scheme:dark){
  :root{
    --bone:#12160F;
    --bone-2:#171C14;
    --bone-3:#20261C;
    --paper:#1F2619;
    --ink:#EEE8D9;
    --ink-2:#DCD5C4;
    --soft:#AEB5A3;
    --muted:#8D9583;
    --clay:#D9835A;
    --clay-2:#E39A6F;
    --moss:#93A886;
    --line:rgba(238,232,217,.14);
    --line-2:rgba(238,232,217,.07);
    --shadow-s:0 1px 2px rgba(0,0,0,.4);
    --shadow-m:0 2px 4px rgba(0,0,0,.3),0 14px 34px -14px rgba(0,0,0,.65);
    --shadow-l:0 4px 8px rgba(0,0,0,.3),0 34px 70px -26px rgba(0,0,0,.8);
    color-scheme:dark;
  }
}

/* ── reset ───────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box}
*{margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:88px}
body{
  font-family:var(--f-body);
  font-size:clamp(1rem,.96rem + .2vw,1.09rem);
  line-height:1.65;
  color:var(--ink);
  background:var(--bone);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
img,svg,video{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
ul{list-style:none}
::selection{background:var(--clay);color:var(--bone)}
:focus-visible{outline:2px solid var(--clay);outline-offset:3px;border-radius:3px}

/* ── grano ───────────────────────────────────────────── */
.grain{
  position:fixed;inset:0;z-index:9999;pointer-events:none;
  opacity:.32;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}
@media (prefers-color-scheme:dark){.grain{mix-blend-mode:screen;opacity:.13}}

.skip{
  position:absolute;left:-9999px;top:0;z-index:10000;
  background:var(--ink);color:var(--bone);padding:.75rem 1.25rem;border-radius:0 0 var(--r-s) 0;
}
.skip:focus{left:0}

/* ── layout ──────────────────────────────────────────── */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad)}
.sec{padding-block:clamp(4.5rem,10vw,8.5rem);position:relative}
.sec--alt{background:var(--bone-2)}
.sec--dark{background:var(--ink);color:var(--bone)}
.sec--dark .kicker{color:var(--clay-2)}
.sec--dark .sec__lede{color:rgba(247,242,233,.74)}
.sec--dark .sec__lede strong{color:#F7F2E9}
@media (prefers-color-scheme:dark){
  /* --bone ya es oscuro acá, así que el color se toma de --ink (que es claro). */
  .sec--dark{background:#0B0E09;color:var(--ink)}
  .sec--dark .sec__lede{color:var(--soft)}
  .sec--dark .sec__lede strong{color:var(--ink)}
}

/* ── tipografía ──────────────────────────────────────── */
.display{
  font-family:var(--f-display);
  font-size:clamp(2.85rem,8.2vw,5.9rem);
  font-weight:500;
  font-variation-settings:'opsz' 120,'SOFT' 30;
  line-height:.94;
  letter-spacing:-.032em;
  text-wrap:balance;
}
.display em{font-style:italic;color:var(--clay);font-weight:400}
.display--sm{font-size:clamp(2.3rem,6vw,4.2rem)}

.h2{
  font-family:var(--f-display);
  font-size:clamp(1.95rem,4.4vw,3.35rem);
  font-weight:500;
  font-variation-settings:'opsz' 72,'SOFT' 20;
  line-height:1.03;
  letter-spacing:-.024em;
  text-wrap:balance;
}
.h3{
  font-family:var(--f-display);
  font-size:clamp(1.28rem,2vw,1.62rem);
  font-weight:600;
  line-height:1.2;
  letter-spacing:-.012em;
}

.kicker{
  font-size:.7rem;
  font-weight:600;
  letter-spacing:.19em;
  text-transform:uppercase;
  color:var(--clay);
  margin-bottom:1.15rem;
}
.eyebrow{
  display:inline-flex;align-items:center;gap:.6rem;
  font-size:.73rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;
  color:var(--soft);margin-bottom:1.6rem;
}
.eyebrow__dot{
  width:6px;height:6px;border-radius:50%;background:var(--clay);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--clay) 18%,transparent);
}
.lede{
  font-size:clamp(1.06rem,1.6vw,1.24rem);
  line-height:1.62;color:var(--soft);max-width:46ch;
}
.sec__lede{font-size:clamp(1.02rem,1.3vw,1.14rem);color:var(--soft);max-width:56ch}
.sec__lede+.sec__lede{margin-top:1.1rem}
.sec__lede--center{margin-inline:auto}
.sec__lede--right{max-width:40ch}
.sec__lede strong{color:var(--ink);font-weight:600}

.sec__head{margin-bottom:clamp(2.5rem,5vw,4.25rem)}
.sec__head .h2{margin-bottom:1.5rem}
.h2+.sec__lede{margin-top:1.5rem}
.sec__head--center{text-align:center}
.sec__head--row{display:grid;gap:2rem;align-items:end}
@media (min-width:900px){
  .sec__head--row{grid-template-columns:1.15fr .85fr;gap:clamp(2rem,5vw,5rem)}
  .sec__head--row .h2{margin-bottom:0}
}

/* ── botones ─────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  font-size:.94rem;font-weight:600;letter-spacing:-.005em;
  padding:.95rem 1.6rem;border-radius:999px;
  transition:transform .35s var(--ease-out),box-shadow .35s var(--ease-out),background .25s;
  will-change:transform;
}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0)}
.btn--wa{background:var(--wa);color:#fff;box-shadow:0 2px 6px rgba(30,140,85,.24),0 12px 26px -10px rgba(30,140,85,.5)}
.btn--wa:hover{background:#1a7a4a;box-shadow:0 4px 10px rgba(30,140,85,.28),0 20px 38px -12px rgba(30,140,85,.55)}
.btn--ghost{border:1px solid var(--line);color:var(--ink);background:transparent}
.btn--ghost:hover{border-color:var(--ink);background:color-mix(in srgb,var(--ink) 4%,transparent)}
.btn--sm{padding:.62rem 1.15rem;font-size:.86rem}
.btn--lg{padding:1.15rem 2.15rem;font-size:1.06rem}
.ico-wa{width:1.15em;height:1.15em;flex:none}
.btn--lg .ico-wa{width:1.3em;height:1.3em}

.link-wa{
  display:inline-flex;align-items:center;gap:.45rem;
  font-weight:600;font-size:.95rem;color:var(--clay);
  border-bottom:1px solid color-mix(in srgb,var(--clay) 35%,transparent);
  padding-bottom:2px;transition:gap .3s var(--ease-out),border-color .3s;
}
.link-wa:hover{gap:.75rem;border-color:var(--clay)}

/* ── nav ─────────────────────────────────────────────── */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  background:color-mix(in srgb,var(--bone) 82%,transparent);
  backdrop-filter:blur(16px) saturate(1.6);
  -webkit-backdrop-filter:blur(16px) saturate(1.6);
  border-bottom:1px solid transparent;
  transition:border-color .4s,background .4s,box-shadow .4s;
}
.nav.is-stuck{border-bottom-color:var(--line-2);box-shadow:0 1px 26px -8px rgba(23,32,26,.16)}
.nav__in{
  max-width:var(--wrap);margin-inline:auto;padding:.85rem var(--pad);
  display:flex;align-items:center;gap:1.5rem;
}
.brand{display:inline-flex;align-items:center;gap:.55rem;flex:none}
.brand__mark{width:26px;height:26px;color:var(--clay)}
.brand__word{
  font-family:var(--f-display);font-size:1.22rem;font-weight:600;
  letter-spacing:-.022em;font-variation-settings:'opsz' 40;
}
.nav__links{display:none;gap:1.9rem;margin-left:auto;font-size:.9rem;font-weight:500;color:var(--soft)}
.nav__links a{position:relative;padding-block:.25rem;transition:color .25s}
.nav__links a::after{
  content:'';position:absolute;left:0;right:100%;bottom:0;height:1px;
  background:var(--clay);transition:right .35s var(--ease-out);
}
.nav__links a:hover{color:var(--ink)}
.nav__links a:hover::after{right:0}
.nav__cta{display:none;flex:none}
@media (min-width:1000px){
  .nav__links{display:flex}
  .nav__cta{display:inline-flex}
}

.burger{
  margin-left:auto;width:42px;height:42px;display:grid;place-content:center;gap:5px;flex:none;
  border-radius:50%;transition:background .25s;
}
.burger:hover{background:color-mix(in srgb,var(--ink) 6%,transparent)}
.burger span{display:block;width:19px;height:1.6px;background:var(--ink);border-radius:2px;transition:transform .35s var(--ease-out),opacity .2s}
.burger[aria-expanded="true"] span:first-child{transform:translateY(3.3px) rotate(45deg)}
.burger[aria-expanded="true"] span:last-child{transform:translateY(-3.3px) rotate(-45deg)}
@media (min-width:1000px){.burger{display:none}}

.menu{
  display:flex;flex-direction:column;
  padding:.5rem var(--pad) 1.5rem;
  border-top:1px solid var(--line-2);
  background:var(--bone);
}
.menu[hidden]{display:none}
@media (min-width:1000px){.menu{display:none}}
.menu a{
  font-family:var(--f-display);font-size:1.35rem;font-weight:500;
  padding:.7rem 0;border-bottom:1px solid var(--line-2);
}
.menu a:last-child{border-bottom:0}

/* ── hero ────────────────────────────────────────────── */
.hero{position:relative;padding-top:clamp(6.5rem,14vw,9.5rem);padding-bottom:clamp(3rem,7vw,5.5rem);overflow:hidden}
.hero__glow{
  position:absolute;inset:-25% -10% auto -25%;height:85%;pointer-events:none;z-index:0;
  background:
    radial-gradient(52% 62% at 22% 28%,color-mix(in srgb,var(--clay) 13%,transparent),transparent 70%),
    radial-gradient(48% 55% at 82% 12%,color-mix(in srgb,var(--moss) 16%,transparent),transparent 72%);
  filter:blur(24px);
}
.hero__in{
  position:relative;z-index:1;
  max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad);
  display:grid;gap:clamp(2.5rem,5vw,4rem);align-items:center;
}
@media (min-width:940px){
  .hero__in{grid-template-columns:1.06fr .94fr;gap:clamp(2.5rem,5vw,4.5rem)}
}
.hero__text{max-width:42rem}
.hero .display{margin-bottom:1.75rem}
.hero__cta{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2.25rem}
@media (max-width:560px){
  /* Botones a todo lo ancho: mejor área de toque en celular. */
  .hero__cta{flex-direction:column;align-items:stretch}
  .hero__cta .btn{width:100%}
}
.hero__note{margin-top:1.35rem;font-size:.86rem;color:var(--muted)}

.hero__fig{position:relative}
.hero__fig .ph{
  border-radius:var(--r-l);overflow:hidden;box-shadow:var(--shadow-l);
  border:1px solid var(--line-2);
}
.hero__cap{
  display:flex;align-items:baseline;gap:.7rem;
  margin-top:1rem;font-size:.8rem;color:var(--muted);letter-spacing:.01em;
}
.hero__cap-k{
  font-family:var(--f-display);font-size:.92rem;font-weight:600;color:var(--clay);
  font-variant-numeric:tabular-nums;
}
.hero__edge{
  display:none;position:absolute;right:calc(var(--pad) * .34);top:52%;
  transform:rotate(90deg);transform-origin:right center;
  font-size:.66rem;letter-spacing:.32em;text-transform:uppercase;color:var(--muted);
  white-space:nowrap;pointer-events:none;
}
@media (min-width:1340px){.hero__edge{display:block}}

/* ── ticker ──────────────────────────────────────────── */
.ticker{
  overflow:hidden;border-block:1px solid var(--line-2);
  background:var(--bone-2);padding-block:.85rem;
}
.ticker__track{
  display:flex;align-items:center;gap:1.4rem;width:max-content;
  animation:slide 46s linear infinite;
}
.ticker__track span{
  font-size:.76rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  color:var(--soft);white-space:nowrap;
}
.ticker__track i{font-style:normal;font-size:.5rem;color:var(--clay);opacity:.7}
@keyframes slide{to{transform:translateX(-50%)}}

/* ── cuartos ─────────────────────────────────────────── */
.rooms{display:grid;gap:clamp(1.75rem,3.5vw,2.75rem)}
@media (min-width:820px){.rooms{grid-template-columns:1fr 1fr}}
.room{
  background:var(--paper);border:1px solid var(--line-2);border-radius:var(--r-l);
  overflow:hidden;box-shadow:var(--shadow-m);
  transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out);
}
.room:hover{transform:translateY(-5px);box-shadow:var(--shadow-l)}
.room__img{aspect-ratio:1/1;overflow:hidden}
.room__img img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease-out)}
.room:hover .room__img img{transform:scale(1.045)}
.room__body{padding:clamp(1.5rem,3vw,2.2rem)}
.room__tag{
  font-size:.66rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--clay);margin-bottom:.7rem;
}
.room__body .h3{margin-bottom:.75rem}
.room__body>p{color:var(--soft);font-size:.98rem;margin-bottom:1.35rem}
.ticks{display:grid;gap:.6rem;margin-bottom:1.75rem}
.ticks li{
  position:relative;padding-left:1.65rem;font-size:.94rem;color:var(--ink-2);
}
.ticks li::before{
  content:'';position:absolute;left:0;top:.52em;
  width:.72rem;height:.4rem;border-left:1.8px solid var(--clay);border-bottom:1.8px solid var(--clay);
  transform:rotate(-45deg);
}

/* ── features ────────────────────────────────────────── */
.feats{display:grid;gap:1px;background:var(--line-2);border:1px solid var(--line-2);border-radius:var(--r-l);overflow:hidden}
@media (min-width:640px){.feats{grid-template-columns:1fr 1fr}}
@media (min-width:1000px){.feats{grid-template-columns:repeat(4,1fr)}}
.feat{
  background:var(--bone-2);padding:clamp(1.5rem,2.6vw,2rem);
  transition:background .4s var(--ease);
}
.feat:hover{background:var(--paper)}
.feat svg{
  width:26px;height:26px;margin-bottom:1.1rem;color:var(--clay);
  fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;
}
.feat h3{font-family:var(--f-display);font-size:1.06rem;font-weight:600;margin-bottom:.5rem;letter-spacing:-.01em}
.feat p{font-size:.9rem;line-height:1.58;color:var(--soft)}

/* ── galería ─────────────────────────────────────────── */
.gal{display:grid;gap:clamp(.6rem,1.3vw,1.05rem);grid-auto-rows:58vw}
@media (min-width:760px){
  .gal{grid-template-columns:repeat(12,1fr);grid-auto-rows:clamp(210px,25vw,340px)}
  .gal__i--a{grid-column:span 7}
  .gal__i--b{grid-column:span 5}
  .gal__i--c{grid-column:span 5}
  .gal__i--d{grid-column:span 7}
}
.gal__i{
  position:relative;overflow:hidden;border-radius:var(--r-m);
  border:1px solid var(--line-2);background:var(--bone-3);
  cursor:zoom-in;display:block;width:100%;
}
.gal__i img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease-out),filter .5s}
.gal__i:hover img{transform:scale(1.055)}
.gal__cap{
  position:absolute;left:.85rem;bottom:.85rem;z-index:2;
  font-size:.72rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;
  color:#fff;padding:.4rem .8rem;border-radius:999px;
  background:rgba(18,24,18,.5);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  opacity:0;transform:translateY(6px);transition:opacity .35s var(--ease-out),transform .35s var(--ease-out);
}
.gal__i:hover .gal__cap,.gal__i:focus-visible .gal__cap{opacity:1;transform:translateY(0)}
@media (hover:none){.gal__cap{opacity:1;transform:none}}

/* ── entorno + video ─────────────────────────────────── */
.ent{display:grid;gap:clamp(2.5rem,5vw,4.5rem);align-items:center}
@media (min-width:920px){.ent{grid-template-columns:1.1fr .9fr}}
/* Distancias verificadas. En km a propósito: los tiempos sobre la
   Florencio del Castillo son impredecibles y prometerlos sale caro. */
.dist{margin-top:clamp(3rem,6vw,5rem);padding-top:clamp(2rem,4vw,3rem);border-top:1px solid rgba(247,242,233,.16)}
@media (prefers-color-scheme:dark){.dist{border-top-color:var(--line)}}
.dist__title{
  font-family:var(--f-display);font-size:1.15rem;font-weight:600;letter-spacing:-.01em;
  margin-bottom:1.5rem;
}
.dist__list{display:grid;gap:0 clamp(1.5rem,4vw,3.5rem)}
@media (min-width:620px){.dist__list{grid-template-columns:1fr 1fr}}
@media (min-width:1040px){.dist__list{grid-template-columns:repeat(4,1fr)}}
.dist__list li{
  display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;
  padding:.72rem 0;border-bottom:1px solid rgba(247,242,233,.11);
  font-size:.92rem;
}
@media (prefers-color-scheme:dark){.dist__list li{border-bottom-color:var(--line-2)}}
.dist__list span{color:rgba(247,242,233,.72)}
.dist__list b{
  font-family:var(--f-display);font-weight:600;font-size:1rem;color:var(--clay-2);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
@media (prefers-color-scheme:dark){.dist__list span{color:var(--soft)}}
.dist__note{
  margin-top:1.6rem;max-width:62ch;font-size:.84rem;line-height:1.6;
  color:rgba(247,242,233,.45);
}
@media (prefers-color-scheme:dark){.dist__note{color:var(--muted)}}

.tour{position:relative;max-width:330px;margin-inline:auto;width:100%}
.tour__frame{
  position:relative;aspect-ratio:480/848;border-radius:var(--r-l);overflow:hidden;
  box-shadow:var(--shadow-l);border:1px solid rgba(247,242,233,.14);background:#0b0e09;
}
.tour__frame video,.tour__frame img{width:100%;height:100%;object-fit:cover}
.tour__play{
  position:absolute;inset:0;z-index:2;display:grid;place-content:center;
  background:linear-gradient(180deg,rgba(11,14,9,.1),rgba(11,14,9,.55));
  transition:opacity .4s var(--ease),background .4s;
}
.tour__play:hover{background:linear-gradient(180deg,rgba(11,14,9,.05),rgba(11,14,9,.42))}
.tour__play.is-hidden{opacity:0;pointer-events:none}
.tour__disc{
  width:66px;height:66px;border-radius:50%;display:grid;place-content:center;
  background:rgba(255,255,255,.94);box-shadow:0 8px 30px -6px rgba(0,0,0,.5);
  transition:transform .4s var(--ease-out);
}
.tour__play:hover .tour__disc{transform:scale(1.08)}
.tour__disc svg{width:22px;height:22px;fill:var(--ink);margin-left:3px}
.tour__cap{
  margin-top:.95rem;text-align:center;font-size:.79rem;color:rgba(247,242,233,.6);
  letter-spacing:.02em;
}
@media (prefers-color-scheme:dark){.tour__cap{color:var(--muted)}}

/* ── carta / historias ───────────────────────────────── */
.sec--story{background:var(--bone-2);position:relative;overflow:hidden}
.sec--story::before{
  content:'';position:absolute;inset:auto -20% -40% -20%;height:70%;pointer-events:none;
  background:radial-gradient(50% 60% at 50% 100%,color-mix(in srgb,var(--clay) 9%,transparent),transparent 70%);
}
.letter{
  position:relative;max-width:44rem;margin-inline:auto;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:3px;
  padding:clamp(2rem,5.5vw,4.25rem) clamp(1.4rem,5vw,4rem);
  box-shadow:var(--shadow-l);
}
.letter::before{
  content:'';position:absolute;inset:7px;border:1px solid var(--line-2);border-radius:1px;pointer-events:none;
}
.letter__stamp{
  position:absolute;top:-16px;right:clamp(1.2rem,4vw,3rem);
  display:grid;place-items:center;gap:1px;
  width:82px;height:82px;border-radius:50%;
  border:1.5px dashed color-mix(in srgb,var(--clay) 55%,transparent);
  background:var(--paper);
  transform:rotate(-9deg);
  color:var(--clay);
}
.letter__stamp span{font-size:.5rem;letter-spacing:.14em;text-transform:uppercase;opacity:.85}
.letter__stamp strong{font-family:var(--f-display);font-size:1.05rem;font-weight:600;line-height:1}
.letter__meta{
  font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
  margin-bottom:2.25rem;
}
.letter__body{font-family:var(--f-letter);font-size:clamp(1.06rem,1.35vw,1.19rem);line-height:1.78;color:var(--ink-2)}
.letter__body p+p{margin-top:1.3rem}
.letter__salute{font-size:1.12em;font-style:italic;color:var(--ink);margin-bottom:1.6rem!important}
.letter__body .drop::first-letter{
  float:left;font-family:var(--f-display);font-size:3.5em;line-height:.82;
  font-weight:500;color:var(--clay);margin:.06em .12em 0 0;
}
.letter__close{margin-top:2rem!important;font-style:italic;color:var(--soft)}
.letter__sign{
  font-family:var(--f-display);font-style:italic;font-size:1.85rem;font-weight:400;
  color:var(--clay);margin-top:.35rem!important;letter-spacing:-.01em;
}
.letter__foot{
  margin-top:2.5rem;text-align:center;font-size:.92rem;color:var(--muted);position:relative;
}
.letter__foot a{color:var(--clay);font-weight:600;border-bottom:1px solid color-mix(in srgb,var(--clay) 35%,transparent)}
.letter__foot a:hover{border-color:var(--clay)}

/* ── cta ─────────────────────────────────────────────── */
.cta{
  background:var(--ink);color:var(--bone);
  padding-block:clamp(4.5rem,10vw,8rem);text-align:center;position:relative;overflow:hidden;
}
@media (prefers-color-scheme:dark){.cta{background:#0B0E09;color:var(--ink)}}
.cta::after{
  content:'';position:absolute;inset:auto -10% -55% -10%;height:100%;pointer-events:none;
  background:radial-gradient(45% 55% at 50% 100%,color-mix(in srgb,var(--clay) 26%,transparent),transparent 72%);
}
.cta__in{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center}
.cta .kicker{color:var(--clay-2)}
.cta .display{margin-bottom:1.5rem}
.cta__lede{font-size:clamp(1.02rem,1.4vw,1.16rem);color:rgba(247,242,233,.72);max-width:44ch;margin-bottom:2.5rem}
.cta__note{margin-top:1.25rem;font-size:.83rem;color:rgba(247,242,233,.42)}
@media (prefers-color-scheme:dark){
  .cta__lede{color:var(--soft)}
  .cta__note{color:var(--muted)}
}

/* ── footer ──────────────────────────────────────────── */
.foot{background:var(--bone-2);border-top:1px solid var(--line-2);padding-top:clamp(3rem,6vw,4.5rem)}
.foot__in{display:grid;gap:2.5rem;padding-bottom:3rem}
@media (min-width:780px){.foot__in{grid-template-columns:1.2fr 1fr 1fr;gap:3rem}}
.foot__brand{display:flex;flex-direction:column;gap:.5rem}
.foot__brand .brand__mark{width:28px;height:28px;color:var(--clay)}
.foot__brand p{font-size:.88rem;line-height:1.75;color:var(--muted);margin-top:.4rem}
.foot__nav{display:flex;flex-direction:column;gap:.6rem;font-size:.9rem;color:var(--soft)}
.foot__nav a{transition:color .25s}
.foot__nav a:hover{color:var(--clay)}
.foot__wa p{font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:.55rem}
.foot__wa a{
  font-family:var(--f-display);font-size:clamp(1.3rem,2.4vw,1.65rem);font-weight:600;
  letter-spacing:-.02em;color:var(--ink);transition:color .25s;
}
.foot__wa a:hover{color:var(--clay)}
.foot__legal{
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;
  max-width:var(--wrap);margin-inline:auto;padding:1.4rem var(--pad);
  border-top:1px solid var(--line-2);font-size:.78rem;color:var(--muted);
}
/* El botón flotante ocupa todo el ancho en celular: le dejamos aire abajo. */
@media (max-width:560px){.foot__legal{padding-bottom:6rem}}

/* ── fab whatsapp ────────────────────────────────────── */
.fab{
  position:fixed;right:clamp(.9rem,2.5vw,1.75rem);bottom:clamp(.9rem,2.5vw,1.75rem);z-index:90;
  display:inline-flex;align-items:center;gap:.6rem;
  background:var(--wa);color:#fff;font-weight:600;font-size:.94rem;
  padding:.92rem 1.35rem;border-radius:999px;
  box-shadow:0 4px 12px rgba(30,140,85,.3),0 18px 40px -12px rgba(30,140,85,.6);
  opacity:0;transform:translateY(16px) scale(.94);pointer-events:none;
  transition:opacity .5s var(--ease-out),transform .5s var(--ease-out),background .25s;
}
.fab.is-on{opacity:1;transform:none;pointer-events:auto}
.fab:hover{background:#1a7a4a}
.fab .ico-wa{width:1.35em;height:1.35em}
@media (max-width:560px){
  .fab{left:clamp(.9rem,2.5vw,1.75rem);justify-content:center;padding:1.02rem}
}

/* ── lightbox ────────────────────────────────────────── */
.lb{
  border:0;padding:0;max-width:100vw;max-height:100vh;width:100vw;height:100dvh;
  background:transparent;overflow:hidden;
}
.lb::backdrop{background:rgba(11,14,9,.93);backdrop-filter:blur(6px)}
.lb[open]{display:grid;place-items:center}
.lb__img{
  max-width:min(94vw,1400px);max-height:84dvh;width:auto;height:auto;
  border-radius:var(--r-m);box-shadow:0 40px 100px -20px rgba(0,0,0,.8);
  animation:pop .45s var(--ease-out);
}
@keyframes pop{from{opacity:0;transform:scale(.965)}to{opacity:1;transform:none}}
.lb__cap{
  position:absolute;bottom:max(1.5rem,env(safe-area-inset-bottom));left:0;right:0;
  text-align:center;color:rgba(255,255,255,.7);font-size:.85rem;letter-spacing:.05em;
}
.lb__x{
  position:absolute;top:1rem;right:1.25rem;z-index:3;
  width:46px;height:46px;border-radius:50%;font-size:1.7rem;line-height:1;
  color:#fff;background:rgba(255,255,255,.11);transition:background .25s;
}
.lb__x:hover{background:rgba(255,255,255,.22)}
.lb__nav{
  position:absolute;top:50%;transform:translateY(-50%);z-index:3;
  width:52px;height:52px;border-radius:50%;font-size:2rem;line-height:1;
  color:#fff;background:rgba(255,255,255,.11);transition:background .25s;
}
.lb__nav:hover{background:rgba(255,255,255,.22)}
.lb__nav--prev{left:clamp(.5rem,2vw,1.5rem)}
.lb__nav--next{right:clamp(.5rem,2vw,1.5rem)}

/* ── placeholders si falta una foto ──────────────────── */
.ph{position:relative;background:var(--bone-3);overflow:hidden}
.ph.is-missing img{display:none}
.ph.is-missing::after{
  content:attr(data-ph);position:absolute;inset:0;
  display:grid;place-content:center;text-align:center;padding:1rem;
  font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
  background:
    repeating-linear-gradient(45deg,transparent,transparent 9px,color-mix(in srgb,var(--muted) 9%,transparent) 9px,color-mix(in srgb,var(--muted) 9%,transparent) 18px),
    var(--bone-3);
}
.ph--45{aspect-ratio:4/5}
.ph--32{aspect-ratio:3/2}
.ph--hero{aspect-ratio:1200/1280}
.ph img{width:100%;height:100%;object-fit:cover}

/* ── reveal ──────────────────────────────────────────────
   Solo se esconde si hay JS. Sin JS todo se ve de una,
   en vez de quedar la página en blanco. */
.reveal{transition:opacity .85s var(--ease-out),transform .85s var(--ease-out)}
.js .reveal{opacity:0;transform:translateY(22px)}
.js .reveal.is-in{opacity:1;transform:none}
.reveal[data-d="1"]{transition-delay:.09s}
.reveal[data-d="2"]{transition-delay:.18s}
.reveal[data-d="3"]{transition-delay:.27s}
.reveal[data-d="4"]{transition-delay:.36s}
.reveal[data-d="5"]{transition-delay:.45s}
.reveal[data-d="6"]{transition-delay:.54s}
.reveal[data-d="7"]{transition-delay:.63s}

/* ── reduced motion ──────────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}
  .js .reveal{opacity:1;transform:none}
  .ticker__track{animation:none}
}

/* ── print ───────────────────────────────────────────── */
@media print{
  .nav,.fab,.ticker,.lb,.grain,.tour{display:none!important}
  body{background:#fff;color:#000}
  .js .reveal{opacity:1;transform:none}
}
