@font-face{font-family:"Cormorant Garamond";src:url(fonts/cormorant-garamond-latin.woff2) format("woff2");font-weight:300 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Cormorant Garamond";src:url(fonts/cormorant-garamond-italic-latin.woff2) format("woff2");font-weight:500;font-style:italic;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Jost";src:url(fonts/jost-latin.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Cormorant Garamond Fallback";src:local("Georgia"), local("Times New Roman");size-adjust:86%;ascent-override:105%;descent-override:32%;line-gap-override:0%}
@font-face{font-family:"Jost Fallback";src:local("Segoe UI"), local("Arial"), local("Roboto");size-adjust:97%;ascent-override:108%;descent-override:36%;line-gap-override:0%}
:root{
  color-scheme:only light;
  --fondo:#FBF6F0; --fondo-rgb:251 246 240;
  --fondo-alt:#F5ECE4; --fondo-alt-rgb:245 236 228;
  --superficie:#FFFCF8; --superficie-rgb:255 252 248;
  --rosa:#F0D8D2; --rosa-rgb:240 216 210;
  --rosa-medio:#E4BDB4; --rosa-medio-rgb:228 189 180;
  --rosa-hondo:#C9958B; --rosa-hondo-rgb:201 149 139;
  --champan:#EAD8BC; --champan-rgb:234 216 188;
  --lila:#E6DAE6; --lila-rgb:230 218 230;
  --texto:#3B2A25; --texto-rgb:59 42 37;
  --texto-suave:#6E5751; --texto-suave-rgb:110 87 81;
  --rosa-texto:#9A5D55; --rosa-texto-rgb:154 93 85;
  --oro:#B8935A; --oro-rgb:184 147 90;
  --oro-texto:#7A5B28; --oro-texto-rgb:122 91 40;
  --oro-claro:#D9BF8C; --oro-claro-rgb:217 191 140;
  --oscuro:#2E201C; --oscuro-rgb:46 32 28;
  --oscuro-2:#3B2B26; --oscuro-2-rgb:59 43 38;
  --sobre-oscuro:#F6EDE6; --sobre-oscuro-rgb:246 237 230;
  --linea:#E8DAD0; --linea-rgb:232 218 208;
  --exito:#5E8A68; --exito-rgb:94 138 104;
  --error:#A33B32; --error-rgb:163 59 50;
  --estudio-fondo:#0F172A; --estudio-fondo-rgb:15 23 42;
  --estudio-texto:#F8FAFC; --estudio-texto-rgb:248 250 252;
  --estudio-acento:#D42E24; --estudio-acento-rgb:212 46 36;
  --font-titulos:"Cormorant Garamond","Cormorant Garamond Fallback",Georgia, 'Times New Roman', serif;
  --font-texto:"Jost","Jost Fallback",'Segoe UI', system-ui, -apple-system, Roboto, sans-serif;
  --radio:22px;
  --radio-sm:14px;
  --ancho-max:1440px;
}
/* ==========================================================================
   Estilos. Colores, fuentes y medidas: variables de arriba (se generan
   desde contenido.json). Aquí solo var(--…), ningún color escrito a mano.
   Las tramas (--pat-*) son máscaras en blanco y negro: el color lo pone la variable.
   ========================================================================== */

:root{
  --hdr-h:64px;
  --gut:clamp(20px, 4.6vw, 80px);
  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --sombra-1:0 1px 2px rgb(var(--texto-rgb) / .05), 0 12px 32px -16px rgb(var(--texto-rgb) / .18);
  --sombra-2:0 2px 6px rgb(var(--texto-rgb) / .06), 0 22px 48px -20px rgb(var(--texto-rgb) / .3);
  --sombra-3:0 6px 14px rgb(var(--texto-rgb) / .07), 0 36px 70px -24px rgb(var(--texto-rgb) / .38);
  --grano:url(grano.webp);
  --pat-escamas:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='22'%3E%3Cpath d='M0 22a22 22 0 0 1 44 0M-22 11a22 22 0 0 1 44 0M22 11a22 22 0 0 1 44 0' fill='none' stroke='black' stroke-width='1'/%3E%3C/svg%3E");
  --pat-lineas:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath d='M-3 15L15 -3M-3 3L3 -3M9 15L15 9' stroke='black' stroke-width='.8'/%3E%3C/svg%3E");
  --pat-puntos:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Ccircle cx='8' cy='8' r='1.1'/%3E%3C/svg%3E");
  --pat-arcos:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='44'%3E%3Cpath d='M5 44V20a13 13 0 0 1 26 0v24' fill='none' stroke='black' stroke-width='1'/%3E%3C/svg%3E");
  interpolate-size:allow-keywords;
}
@media (min-width:1080px){ :root{ --hdr-h:78px; } }

/* ---------- Base ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; text-size-adjust:100%; scroll-padding-top:calc(var(--hdr-h) + 16px); }
html.ss{ scroll-behavior:smooth; }
body{
  margin:0; background:var(--fondo); color:var(--texto);
  font-family:var(--font-texto); font-size:16px; line-height:1.65; font-weight:400;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; text-rendering:optimizeLegibility;
  overflow-x:clip;
}
@media (min-width:1080px){ body{ font-size:17px; } }
img,svg{ display:block; max-width:100%; }
a{ color:inherit; }
button,input,select,textarea{ font:inherit; color:inherit; }
h1,h2,h3{ margin:0; font-family:var(--font-titulos); font-weight:500; line-height:1.06; letter-spacing:-.008em; text-wrap:balance; }
::selection{ background:var(--rosa); color:var(--texto); }
:focus-visible{ outline:2px solid var(--oro-texto); outline-offset:3px; border-radius:6px; }
[hidden]{ display:none !important; }
.sprite{ position:absolute; width:0; height:0; overflow:hidden; }
.i{ width:20px; height:20px; flex:none; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.sr{ position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
.wrap{ width:100%; max-width:calc(var(--ancho-max) + 2 * var(--gut)); margin-inline:auto; padding-inline:var(--gut); }
.wrap--mid{ max-width:calc(1000px + 2 * var(--gut)); }
.wrap--text{ max-width:calc(780px + 2 * var(--gut)); }
.decor{ position:absolute; z-index:0; fill:none; stroke:var(--oro); stroke-width:1; stroke-linecap:round; pointer-events:none; }

.skip{ position:absolute; left:12px; top:-80px; z-index:200; padding:12px 18px; border-radius:12px; background:var(--texto); color:var(--fondo); text-decoration:none; font-weight:500; }
.skip:focus{ top:12px; }

.demo-bar{
  margin:0; padding:8px 16px; background:var(--oscuro); color:var(--sobre-oscuro);
  font-size:11px; font-weight:500; letter-spacing:.18em; text-transform:uppercase; text-align:center; line-height:1.4;
}

/* ---------- Botones y enlaces ---------- */
.btn{
  --h:52px;
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:var(--h); padding:0 28px; border-radius:999px; border:1px solid transparent;
  font-family:var(--font-texto); font-size:15px; font-weight:500; letter-spacing:.05em; line-height:1.2;
  text-decoration:none; white-space:nowrap; cursor:pointer; -webkit-tap-highlight-color:transparent; overflow:hidden; isolation:isolate;
  transition:background-color .35s var(--ease), color .35s var(--ease), border-color .35s var(--ease), box-shadow .35s var(--ease), transform .35s var(--ease);
}
.btn .i{ width:18px; height:18px; }
.btn--dark{ background:var(--texto); color:var(--fondo); }
.btn--dark::after{ /* destello dorado al pasar */
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(110deg, transparent 30%, rgb(var(--oro-claro-rgb) / .38) 50%, transparent 70%);
  transform:translateX(-120%); transition:transform .8s var(--ease-out);
}
.btn--dark:hover{ background:var(--oscuro); box-shadow:0 14px 30px -14px rgb(var(--texto-rgb) / .65), inset 0 0 0 1px rgb(var(--oro-claro-rgb) / .5); transform:translateY(-2px); }
.btn--dark:hover::after{ transform:translateX(120%); }
.btn--line{ background:rgb(var(--superficie-rgb) / .35); color:var(--texto); border-color:rgb(var(--texto-rgb) / .32); }
.btn--line:hover{ border-color:var(--texto); background:rgb(var(--superficie-rgb) / .8); }
.btn--sm{ --h:46px; padding:0 20px; font-size:14px; }
.btn--lg{ --h:56px; padding:0 22px; }
@media (min-width:600px){ .btn--lg{ --h:58px; padding:0 32px; } }
.btn--full{ width:100%; }
.btn:active{ transform:scale(.98); }
.btn:focus-visible{ outline-offset:4px; border-radius:999px; }

.link{
  display:inline-flex; align-items:center; gap:8px; min-height:44px;
  font-size:12.5px; font-weight:500; letter-spacing:.18em; text-transform:uppercase; text-decoration:none; color:var(--texto);
}
.link .i{ width:16px; height:16px; transition:transform .35s var(--ease); }
.link:hover .i{ transform:translateX(5px); }
.link--back .i{ order:-1; }
.link--back:hover .i{ transform:translateX(-4px); }

.ibtn{
  width:48px; height:48px; display:inline-grid; place-items:center; flex:none;
  border-radius:50%; border:1px solid rgb(var(--texto-rgb) / .28); background:transparent; color:var(--texto);
  cursor:pointer; transition:background-color .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease), opacity .25s;
}
.ibtn:hover{ background:var(--texto); border-color:var(--texto); color:var(--fondo); }
.ibtn:disabled{ opacity:.35; cursor:default; background:transparent; color:var(--texto); }
.ibtn .i{ width:18px; height:18px; }
.ibtn--light{ border-color:rgb(var(--sobre-oscuro-rgb) / .35); background:rgb(var(--oscuro-rgb) / .35); color:var(--sobre-oscuro); }
.ibtn--light:hover{ background:var(--sobre-oscuro); border-color:var(--sobre-oscuro); color:var(--oscuro); }

.chip{
  display:inline-flex; align-items:center; margin:18px 0 0; padding:6px 13px; border-radius:999px;
  border:1px dashed rgb(var(--texto-rgb) / .38); font-size:11px; font-weight:500; letter-spacing:.14em; text-transform:uppercase; color:var(--texto-suave);
}
.chip--c{ display:table; margin:30px auto 0; }

/* Marco dorado doble (tarjetas, formulario, mapa) */
.marco{ position:relative; background:var(--superficie); border-radius:var(--radio); box-shadow:var(--sombra-1); }
.marco::before{
  content:""; position:absolute; inset:10px; z-index:900; pointer-events:none;
  border:1px solid rgb(var(--oro-rgb) / .45); border-radius:calc(var(--radio) - 6px);
}

/* ---------- Títulos de sección ---------- */
.over{
  display:flex; align-items:center; gap:14px; margin:0 0 20px;
  font-family:var(--font-texto); font-size:12px; font-weight:500; letter-spacing:.26em; text-transform:uppercase; color:var(--oro-texto);
}
.over::before{ content:""; width:36px; height:1px; background:var(--oro); flex:none; }
.sec{ padding:clamp(84px, 11vw, 160px) 0; position:relative; }
.sec--alt{ background:var(--fondo-alt); }
.sec--rosa{ background:var(--grano), radial-gradient(90% 70% at 85% 0%, rgb(var(--superficie-rgb) / .55), transparent 60%), var(--rosa); }
.sec__head{ max-width:760px; margin-bottom:clamp(44px, 6vw, 80px); position:relative; z-index:1; }
.sec__head--c{ margin-inline:auto; text-align:center; }
.sec__head--c .over{ justify-content:center; }
.sec__head--c .over::after{ content:""; width:36px; height:1px; background:var(--oro); flex:none; }
.sec__head--split{ max-width:none; display:grid; gap:24px; align-items:end; }
@media (min-width:960px){ .sec__head--split{ grid-template-columns:7fr 5fr; gap:64px; } .sec__head--split .sec__p{ justify-self:end; margin:0 0 .4em; } }
.sec__t{ font-size:clamp(2.6rem, 1.3rem + 3.9vw, 4.75rem); line-height:1.02; }
.sec__t em, .hero__t em{ font-style:italic; color:var(--rosa-texto); }
.sec__p{ margin:22px 0 0; max-width:52ch; color:var(--texto-suave); font-size:1.0625rem; }
.sec__head--c .sec__p{ margin-inline:auto; }

/* Títulos que aparecen por palabras */
.split .w{ display:inline-block; overflow:hidden; vertical-align:top; padding:0 .09em .14em 0; margin:0 -.09em -.14em 0; }
.split .wi{ display:inline-block; }

/* ---------- Cabecera ---------- */
.hdr{
  position:sticky; top:0; z-index:50; height:var(--hdr-h);
  background:var(--fondo); /* opaco: nada se transparenta por debajo al hacer scroll */
  border-bottom:1px solid transparent; transition:border-color .35s var(--ease), box-shadow .35s var(--ease), background-color .35s var(--ease);
}
.hdr.is-solid{ background:var(--fondo); border-bottom-color:rgb(var(--oro-rgb) / .3); box-shadow:0 10px 30px -24px rgb(var(--texto-rgb) / .45); }
.hdr__in{ height:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.hdr__end{ display:flex; align-items:center; gap:6px; }

.logo{ display:inline-flex; align-items:center; gap:10px; min-height:44px; color:var(--texto); text-decoration:none; }
.logo__mark{ width:28px; height:28px; }
.logo__ring{ fill:none; stroke:var(--oro); stroke-width:.8; }
.logo__shine{ fill:var(--superficie); opacity:.8; }
.logo__txt{ font-family:var(--font-titulos); font-style:italic; font-weight:500; font-size:33px; line-height:1; letter-spacing:.01em; }
.logo--light{ color:var(--sobre-oscuro); }

.nav{ display:none; }
.nav__list{ display:flex; gap:clamp(18px, 2.2vw, 36px); margin:0; padding:0; list-style:none; }
.nav__list a{
  position:relative; display:block; padding:12px 0;
  font-size:12.5px; font-weight:500; letter-spacing:.18em; text-transform:uppercase; text-decoration:none; color:var(--texto);
}
.nav__list a::after{ content:""; position:absolute; left:0; right:0; bottom:6px; height:1px; background:var(--oro); transform:scaleX(0); transition:transform .45s var(--ease); }
.nav__list a:hover::after, .nav__list a.is-on::after{ transform:scaleX(1); }

.lang{ display:flex; align-items:center; }
.lang__a{
  position:relative; display:inline-grid; place-items:center; min-width:34px; height:44px;
  font-size:12px; font-weight:500; letter-spacing:.12em; color:var(--texto-suave); text-decoration:none;
}
.lang__a:hover, .lang__a[aria-current]{ color:var(--texto); }
.lang__a[aria-current]::after{ content:""; position:absolute; left:50%; bottom:9px; width:14px; height:1px; margin-left:-7px; background:var(--oro); }
.hdr__cta{ display:none; margin-left:12px; }

.burger{ width:44px; height:44px; display:inline-grid; place-content:center; gap:8px; padding:0; border:0; background:none; color:var(--texto); cursor:pointer; }
.burger span{ display:block; width:24px; height:1.5px; background:currentColor; border-radius:2px; transition:transform .4s var(--ease); }
.burger[aria-expanded="true"] span:first-child{ transform:translateY(4.75px) rotate(45deg); }
.burger[aria-expanded="true"] span:last-child{ transform:translateY(-4.75px) rotate(-45deg); }

@media (min-width:1080px){
  .nav{ display:block; }
  .hdr__cta{ display:inline-flex; }
  .burger{ display:none; }
}

/* Menú móvil */
.mnav{
  position:fixed; inset:0; z-index:45; display:flex; flex-direction:column; justify-content:space-between; gap:32px;
  padding:calc(var(--hdr-h) + 56px) var(--gut) calc(24px + env(safe-area-inset-bottom));
  background:var(--grano), radial-gradient(90% 60% at 100% 0%, rgb(var(--rosa-rgb) / .8), transparent 60%), var(--fondo);
  overflow-y:auto; overscroll-behavior:contain; opacity:0; transition:opacity .4s var(--ease);
}
.mnav[hidden]{ display:none; }
.mnav.is-open{ opacity:1; }
.mnav ul{ margin:0; padding:0; list-style:none; }
.mnav li{ border-bottom:1px solid rgb(var(--oro-rgb) / .3); opacity:0; transform:translateY(12px); transition:opacity .5s var(--ease-out), transform .5s var(--ease-out); }
.mnav.is-open li{ opacity:1; transform:none; }
.mnav li:nth-child(2){ transition-delay:.04s; } .mnav li:nth-child(3){ transition-delay:.08s; }
.mnav li:nth-child(4){ transition-delay:.12s; } .mnav li:nth-child(5){ transition-delay:.16s; } .mnav li:nth-child(6){ transition-delay:.2s; }
.mnav__nav a{ display:block; padding:14px 0; font-family:var(--font-titulos); font-size:2.2rem; line-height:1.1; color:var(--texto); text-decoration:none; }
.mnav__info{ margin:16px 0 0; font-size:14px; color:var(--texto-suave); text-align:center; }
html.menu-open{ overflow:hidden; }
@media (min-width:1080px){ .mnav{ display:none !important; } }

/* ---------- Portada a todo el ancho ---------- */
.hero{
  position:relative; isolation:isolate; overflow:hidden; display:grid; align-items:end;
  min-height:min(calc(100svh - var(--hdr-h)), 900px); padding:clamp(150px, 42vh, 380px) 0 clamp(44px, 7vw, 96px);
}
.hero__bg, .hero__zoom{ position:absolute; inset:0; }
.hero__bg{ z-index:-3; }
.hero__zoom{ transform-origin:70% 50%; will-change:transform; }
.hero__img{ width:100%; height:100%; object-fit:cover; }
.hero__veil{
  position:absolute; inset:0; z-index:-2;
  background:linear-gradient(180deg, rgb(var(--fondo-rgb) / 0) 0%, rgb(var(--fondo-rgb) / .1) 24%, rgb(var(--fondo-rgb) / .86) 48%, var(--fondo) 66%);
}
.hero__frame{ position:absolute; inset:clamp(10px, 1.6vw, 24px); z-index:-1; border:1px solid rgb(var(--oro-rgb) / .7); pointer-events:none; }
.hero__frame::after{ content:""; position:absolute; inset:6px; border:1px solid rgb(var(--oro-rgb) / .32); }
.hero__in{ position:relative; display:grid; gap:28px; }
.hero__txt{ max-width:680px; }
.hero__t{ font-size:clamp(3.3rem, 1.15rem + 5.6vw, 6rem); line-height:.94; letter-spacing:-.022em; }
.hero__p{ margin:26px 0 0; max-width:31em; color:var(--texto-suave); font-size:1.0625rem; }
.hero__ctas{ display:flex; flex-wrap:wrap; gap:12px; margin-top:34px; }
.hero__pts{ display:flex; flex-wrap:wrap; gap:6px 22px; margin:28px 0 0; padding:0; list-style:none; font-size:13px; letter-spacing:.04em; color:var(--texto-suave); }
.hero__pts li{ display:flex; align-items:center; gap:9px; }
.hero__pts li::before{ content:""; width:5px; height:5px; border-radius:50%; background:var(--oro); }
.hero__card{
  display:inline-flex; align-items:center; gap:10px; margin:0; padding:12px 18px; border-radius:999px;
  background:rgb(var(--superficie-rgb) / .92); box-shadow:var(--sombra-2); border:1px solid rgb(var(--oro-rgb) / .35);
  font-size:13px; font-weight:500; letter-spacing:.02em; line-height:1.3; color:var(--texto);
}
.dot{ width:8px; height:8px; flex:none; border-radius:50%; background:var(--oro); }
.dot.is-open{ background:var(--exito); box-shadow:0 0 0 4px rgb(var(--exito-rgb) / .18); }
.dot.is-closed{ background:var(--rosa-hondo); }
.hero__rama{ left:-64px; bottom:-74px; width:clamp(140px, 20vw, 330px); height:auto; aspect-ratio:1; opacity:.42; }
.hero__perlas{ right:max(28%, 220px); top:-22px; width:clamp(150px, 20vw, 320px); height:auto; aspect-ratio:1; opacity:.7; display:none; }
.hero__scroll{
  position:absolute; left:50%; bottom:clamp(30px, 3vw, 46px); translate:-50% 0; display:none; flex-direction:column; align-items:center; gap:10px;
  font-size:11px; font-weight:500; letter-spacing:.26em; text-transform:uppercase; text-decoration:none; color:var(--texto-suave);
}
.hero__scroll i{ width:1px; height:46px; background:linear-gradient(var(--oro), transparent); transform-origin:top; }

/* Sello circular que gira */
.sello{ position:absolute; right:clamp(26px, 7vw, 150px); top:clamp(26px, 6svh, 90px); z-index:2; width:clamp(92px, 9vw, 148px); aspect-ratio:1; display:grid; place-items:center; text-decoration:none; color:var(--texto); }
.sello__txt{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; }
.sello__txt text{ fill:currentColor; font-family:var(--font-texto); font-size:11.5px; font-weight:500; letter-spacing:.2em; }
.sello__perla{ width:34%; height:34%; }
.sello::before{ content:""; position:absolute; inset:20%; border-radius:50%; border:1px solid rgb(var(--oro-rgb) / .55); background:rgb(var(--superficie-rgb) / .8); }

@media (min-width:960px){
  .hero{ align-items:center; padding:clamp(96px, 12vh, 150px) 0 clamp(110px, 14vh, 170px); min-height:max(660px, min(calc(100svh - var(--hdr-h)), 1000px)); }
  .hero__veil{ background:linear-gradient(90deg, var(--fondo) 0%, rgb(var(--fondo-rgb) / .95) 30%, rgb(var(--fondo-rgb) / .62) 46%, rgb(var(--fondo-rgb) / .08) 64%, rgb(var(--fondo-rgb) / 0) 72%); }
  .hero__in{ grid-template-columns:minmax(0, 1fr) auto; align-items:end; }
  .hero__side{ align-self:end; }
  .hero__perlas{ display:block; }
  .hero__scroll{ display:flex; }
  .sello{ top:clamp(54px, 9svh, 110px); right:clamp(54px, 5.5vw, 110px); }
}

/* ---------- Cinta de servicios ---------- */
.marq{ position:relative; overflow:hidden; padding:22px 0; background:var(--grano), var(--oscuro); color:var(--sobre-oscuro); border-block:1px solid rgb(var(--oro-rgb) / .4); }
.marq__track{ display:flex; width:max-content; }
.marq__list{ display:flex; margin:0; padding:0; list-style:none; }
.marq__list li{
  display:flex; align-items:center; white-space:nowrap; padding-right:.9em;
  font-family:var(--font-titulos); font-style:italic; font-weight:500; font-size:clamp(1.55rem, 1rem + 2vw, 2.6rem); line-height:1.2;
}
.marq__list li::after{ content:"✦"; margin-left:.9em; font-style:normal; font-size:.46em; color:var(--oro-claro); }

/* ---------- Cifras ---------- */
.cifras-sec{ padding:clamp(60px, 8vw, 110px) 0; border-bottom:1px solid rgb(var(--oro-rgb) / .28); }
.cifras{ display:grid; grid-template-columns:repeat(2, 1fr); gap:40px 16px; margin:0; padding:0; list-style:none; }
.cifra{ text-align:center; padding:0 10px; }
.cifra__n{
  display:flex; justify-content:center; align-items:baseline; gap:2px; margin:0;
  font-family:var(--font-titulos); font-weight:500; font-size:clamp(3rem, 1.9rem + 3.4vw, 5.4rem); line-height:1; font-variant-numeric:lining-nums tabular-nums;
}
.cifra__pre, .cifra__suf{ font-size:.5em; color:var(--oro); }
.cifra__t{ margin:12px 0 0; font-size:12px; font-weight:500; letter-spacing:.18em; text-transform:uppercase; color:var(--texto-suave); }
@media (min-width:900px){ .cifras{ grid-template-columns:repeat(4, 1fr); } .cifra + .cifra{ border-left:1px solid rgb(var(--oro-rgb) / .35); } }

/* ---------- Servicios ---------- */
.srv{
  display:flex; gap:18px; margin:0 calc(var(--gut) * -1); padding:6px var(--gut) 22px; list-style:none;
  overflow-x:auto; scroll-snap-type:x mandatory; scroll-padding-inline:var(--gut); scrollbar-width:none; overscroll-behavior-x:contain;
}
.srv::-webkit-scrollbar{ display:none; }
.srv__it{ flex:0 0 min(82%, 360px); scroll-snap-align:start; display:flex; }
.srv__card{
  position:relative; display:flex; flex-direction:column; width:100%; overflow:hidden;
  background:var(--superficie); border-radius:var(--radio); box-shadow:var(--sombra-1);
  transition:transform .6s var(--ease), box-shadow .6s var(--ease);
}
.srv__media{ position:relative; aspect-ratio:4/5; overflow:hidden; }
.srv__media > *{ width:100%; height:100%; object-fit:cover; transition:scale 1.2s var(--ease); }
.srv__media::after{ content:""; position:absolute; inset:12px; border:1px solid rgb(var(--superficie-rgb) / .7); border-radius:calc(var(--radio) - 8px); pointer-events:none; transition:inset .6s var(--ease), border-color .6s var(--ease); }
.srv__body{ display:flex; flex-direction:column; flex:1; padding:26px 26px 18px; }
.srv__n{ font-family:var(--font-titulos); font-style:italic; font-size:17px; letter-spacing:.06em; color:var(--oro-texto); }
.srv__t{ margin:4px 0 10px; font-size:2.2rem; }
.srv__p{ margin:0 0 16px; color:var(--texto-suave); font-size:15.5px; }
.srv__from{ margin:0 0 6px; font-size:12px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--texto-suave); }
.srv__from strong{ margin-left:4px; font-family:var(--font-titulos); font-size:1.5rem; font-weight:600; letter-spacing:0; text-transform:none; color:var(--texto); }
.srv__body .link{ margin-top:auto; }
@media (hover:hover){
  .srv__card:hover{ transform:translateY(-12px); box-shadow:var(--sombra-3); }
  .srv__card:hover .srv__media > *{ scale:1.06; }
  .srv__card:hover .srv__media::after{ inset:18px; border-color:rgb(var(--oro-claro-rgb) / .95); }
}
@media (min-width:900px){
  .srv{ display:grid; grid-template-columns:repeat(3, 1fr); gap:clamp(22px, 2.6vw, 40px); margin:0; padding:0; overflow:visible; }
  .srv__it{ flex:none; }
  .srv__it:nth-child(2){ margin-top:64px; }
}

/* ---------- Por qué Nácar ---------- */
.porque{ overflow:hidden; }
.porque__concha{ right:-70px; top:48px; width:clamp(220px, 30vw, 460px); height:auto; aspect-ratio:1; stroke:rgb(var(--oro-rgb) / .38); }
.porque__grid{ display:grid; gap:56px; align-items:center; position:relative; z-index:1; }
.porque__panel{
  position:relative; margin:0; aspect-ratio:4/5; max-width:520px; width:100%; justify-self:center; overflow:hidden;
  display:flex; flex-direction:column; justify-content:flex-end; padding:clamp(34px, 5vw, 60px);
  border-radius:50% 50% var(--radio) var(--radio) / 40% 40% var(--radio) var(--radio);
  background:var(--grano),
    radial-gradient(60% 45% at 30% 22%, rgb(var(--superficie-rgb) / .95), transparent 70%),
    radial-gradient(70% 55% at 85% 90%, rgb(var(--lila-rgb) / .9), transparent 70%),
    conic-gradient(from 200deg at 60% 60%, var(--rosa), var(--champan), var(--lila), var(--rosa-medio), var(--rosa));
  box-shadow:var(--sombra-2);
}
.porque__panel::after{
  content:""; position:absolute; inset:14px; pointer-events:none; border:1px solid rgb(var(--oro-rgb) / .6);
  border-radius:50% 50% calc(var(--radio) - 8px) calc(var(--radio) - 8px) / 40% 40% calc(var(--radio) - 8px) calc(var(--radio) - 8px);
}
.porque__perlas{ position:absolute; left:50%; top:12%; translate:-50% 0; width:78%; height:auto; aspect-ratio:1; fill:none; stroke:var(--oro); stroke-width:1; }
.porque__cita{ margin:0; position:relative; }
.porque__cita p{ margin:0; font-family:var(--font-titulos); font-style:italic; font-weight:500; font-size:clamp(1.8rem, 1.1rem + 2vw, 2.7rem); line-height:1.18; }
.porque__firma{ margin-top:18px; position:relative; font-size:12px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--oro-texto); }
.pq{ display:grid; gap:30px 44px; margin:44px 0 0; padding:0; list-style:none; }
.pq__it{ position:relative; padding-top:24px; border-top:1px solid rgb(var(--oro-rgb) / .5); }
.pq__ico{ display:inline-grid; place-items:center; width:50px; height:50px; margin-bottom:16px; border-radius:50%; border:1px solid rgb(var(--oro-rgb) / .65); color:var(--oro-texto); background:rgb(var(--superficie-rgb) / .6); }
.pq__ico .i{ width:22px; height:22px; stroke-width:1.4; }
.pq__t{ margin:0 0 8px; font-size:1.65rem; }
.pq__p{ margin:0; color:var(--texto-suave); font-size:15.5px; }
@media (min-width:640px){ .pq{ grid-template-columns:1fr 1fr; } }
@media (min-width:960px){ .porque__grid{ grid-template-columns:5fr 7fr; gap:clamp(56px, 7vw, 130px); } }

/* ---------- Precios ---------- */
.tabs{ padding:clamp(26px, 4vw, 56px) clamp(20px, 4vw, 60px); }
.tabs__list{ position:relative; display:flex; max-width:560px; margin:0 auto 10px; border-bottom:1px solid var(--linea); }
.tabs__tab{
  position:relative; flex:1; min-height:56px; padding:0 8px; border:0; background:none; cursor:pointer;
  font-size:15px; font-weight:500; letter-spacing:.1em; color:var(--texto-suave); transition:color .3s var(--ease);
}
.tabs__tab:hover, .tabs__tab[aria-selected="true"]{ color:var(--texto); }
.tabs__tab:focus-visible{ outline-offset:-4px; }
/* Subrayado de la pestaña activa: lo lleva la propia pestaña (sin calcular posiciones — fiable en Safari) */
.tabs__tab::after{
  content:""; position:absolute; left:0; right:0; bottom:-1px; height:2px; background:var(--texto);
  transform:scaleX(0); transition:transform .45s var(--ease-out);
}
.tabs__tab[aria-selected="true"]::after{ transform:scaleX(1); }
.tabs.is-tabs .tabs__panel{ display:none; }
.tabs.is-tabs .tabs__panel.is-on{ display:block; animation:panel-in .6s var(--ease-out); }
.tabs__panel:focus-visible{ outline-offset:8px; }
.plist{ margin:0; padding:0; list-style:none; }
.plist__row{
  display:grid; grid-template-columns:1fr auto; align-items:baseline; column-gap:18px; row-gap:2px;
  padding:21px 0; border-bottom:1px solid var(--linea);
}
.plist__row:last-child{ border-bottom:0; }
.plist__main{ min-width:0; grid-row:span 2; }
.plist__name{ font-size:1.55rem; font-weight:600; line-height:1.2; }
.plist__desc{ margin:5px 0 0; color:var(--texto-suave); font-size:14.5px; line-height:1.55; }
.plist__dur{ white-space:nowrap; }
.plist__price{ margin:0; text-align:right; white-space:nowrap; font-family:var(--font-titulos); font-size:1.6rem; font-weight:600; line-height:1.2; }
.plist__from{ margin-right:3px; font-family:var(--font-texto); font-size:11px; font-weight:500; letter-spacing:.12em; text-transform:uppercase; color:var(--texto-suave); }
.plist__book{
  justify-self:end; display:inline-flex; align-items:center; gap:6px; min-height:44px; padding:0 2px;
  font-size:12px; font-weight:500; letter-spacing:.18em; text-transform:uppercase; text-decoration:none; color:var(--oro-texto);
  background:linear-gradient(currentColor, currentColor) left calc(50% + 10px) / 0 1px no-repeat; transition:background-size .35s var(--ease);
}
.plist__book:hover{ background-size:100% 1px; }
@media (min-width:640px){
  .plist__row{ grid-template-columns:1fr auto auto; column-gap:28px; padding:23px 0; }
  .plist__main{ grid-row:auto; }
  .plist__book{ min-width:100px; justify-content:flex-end; }
}

/* ---------- Antes / después (sección oscura) ---------- */
.sec--oscuro{
  background:var(--grano), radial-gradient(80% 60% at 50% 0%, rgb(var(--oscuro-2-rgb)), transparent 72%), var(--oscuro);
  color:var(--sobre-oscuro); overflow:hidden;
}
.sec--oscuro .over{ color:var(--oro-claro); }
.sec--oscuro .over::before, .sec--oscuro .over::after{ background:var(--oro-claro); }
.sec--oscuro .sec__t em{ color:var(--rosa); }
.sec--oscuro .sec__p{ color:rgb(var(--sobre-oscuro-rgb) / .8); }
.sec--oscuro :focus-visible{ outline-color:var(--oro-claro); }
.ba-sec__rama{ left:-50px; top:70px; width:clamp(160px, 22vw, 340px); height:auto; aspect-ratio:1; stroke:rgb(var(--oro-claro-rgb) / .4); }
.ba{
  --pos:50%;
  position:relative; width:100%; overflow:hidden; border-radius:var(--radio); background:var(--oscuro-2);
  touch-action:pan-y; user-select:none; -webkit-user-select:none; cursor:ew-resize;
}
.ba--xl{ max-width:1240px; margin:0 auto; aspect-ratio:4/5; box-shadow:0 40px 80px -30px rgb(0 0 0 / .6); outline:1px solid rgb(var(--oro-claro-rgb) / .45); outline-offset:12px; }
.ba__img{ position:absolute; inset:0; }
.ba__img > *{ width:100%; height:100%; object-fit:cover; pointer-events:none; }
.ba__img--antes{ clip-path:inset(0 calc(100% - var(--pos)) 0 0); }
.ba__line{ position:absolute; inset:0; pointer-events:none; translate:calc(var(--pos) - 50%) 0; }
.ba__line::before{ content:""; position:absolute; left:50%; top:0; bottom:0; width:2px; margin-left:-1px; background:var(--superficie); box-shadow:0 0 14px rgb(0 0 0 / .35); }
.ba__knob{
  position:absolute; left:50%; top:50%; width:68px; height:68px; margin:-34px 0 0 -34px; border-radius:50%;
  display:flex; align-items:center; justify-content:center; background:var(--superficie); color:var(--texto); box-shadow:var(--sombra-2);
  transition:transform .3s var(--ease);
}
.ba__knob::after{ content:""; position:absolute; inset:-9px; border-radius:50%; border:1px solid rgb(var(--superficie-rgb) / .8); }
.ba__knob .i{ width:18px; height:18px; margin:0 -2px; }
.ba.is-drag .ba__knob{ transform:scale(1.1); }
.ba:focus-within .ba__knob{ outline:2px solid var(--oro-claro); outline-offset:6px; }
.ba__tag{
  position:absolute; top:18px; z-index:1; padding:8px 16px; border-radius:999px; pointer-events:none;
  background:rgb(var(--superficie-rgb) / .92); color:var(--texto); font-size:11.5px; font-weight:500; letter-spacing:.2em; text-transform:uppercase;
}
.ba__tag--l{ left:18px; } .ba__tag--r{ right:18px; }
.ba__range{ position:absolute; inset:0; width:100%; height:100%; margin:0; opacity:0; pointer-events:none; }
.ba .ph__tag{ bottom:18px; left:50%; translate:-50% 0; }
.ba-foot{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:22px 40px; max-width:1240px; margin:36px auto 0; }
.ba-hint{ display:flex; align-items:center; gap:8px; margin:0; font-size:13px; letter-spacing:.08em; color:rgb(var(--sobre-oscuro-rgb) / .78); }
.ba-hint .i{ width:16px; height:16px; color:var(--oro-claro); }
.ba-info{ display:flex; flex-wrap:wrap; gap:14px 44px; margin:0; }
.ba-info dt{ font-size:11px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--oro-claro); }
.ba-info dd{ margin:4px 0 0; font-family:var(--font-titulos); font-size:1.55rem; line-height:1.1; }
@media (min-width:700px){ .ba--xl{ aspect-ratio:3/2; } }
@media (min-width:1100px){ .ba--xl{ aspect-ratio:16/9; } }

/* ---------- Galería ---------- */
.gal{ display:grid; grid-template-columns:repeat(2, 1fr); grid-auto-rows:calc(50vw - 26px); gap:12px; margin:0; padding:0; list-style:none; }
@supports (width:1cqi){
  #galeria .wrap{ container-type:inline-size; }
  .gal{ grid-auto-rows:calc((100cqi - 12px) / 2); }
}
.gal__it--alta{ grid-row:span 2; }
.gal__it--ancha{ grid-column:1 / -1; }
.gal__btn{
  position:relative; display:block; width:100%; height:100%; padding:0; border:0; overflow:hidden;
  border-radius:var(--radio-sm); background:var(--fondo); cursor:zoom-in;
}
.gal__btn > .gal__img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:scale 1.2s var(--ease); }
.gal__cap{
  position:absolute; left:12px; bottom:12px; z-index:1; padding:6px 12px; border-radius:999px;
  background:rgb(var(--superficie-rgb) / .92); font-size:12.5px; font-weight:500; color:var(--texto);
  transition:opacity .4s var(--ease), translate .4s var(--ease);
}
.gal__btn .ph__tag{ left:auto; right:12px; bottom:auto; top:12px; }
@media (hover:hover){
  .gal__cap{ opacity:0; translate:0 8px; }
  .gal__btn:hover .gal__cap, .gal__btn:focus-visible .gal__cap{ opacity:1; translate:0 0; }
  .gal__btn:hover > .gal__img{ scale:1.06; }
}
.gal__btn:focus-visible{ outline-offset:3px; border-radius:var(--radio-sm); }
@media (min-width:900px){
  .gal{ grid-template-columns:repeat(3, 1fr); grid-auto-rows:calc((min(100vw, var(--ancho-max) + 2 * var(--gut)) - 2 * var(--gut) - 40px) / 3); gap:20px; }
  @supports (width:1cqi){ .gal{ grid-auto-rows:calc((100cqi - 40px) / 3); } }
  .gal__it--ancha{ grid-column:2 / 4; }
}

/* ---------- Marcas ---------- */
.marcas{ padding:clamp(70px, 9vw, 120px) 0; border-bottom:1px solid rgb(var(--oro-rgb) / .28); }
.marcas__head{ max-width:640px; margin:0 auto clamp(40px, 5vw, 64px); text-align:center; }
.marcas__head .over{ justify-content:center; }
.marcas__head .over::after{ content:""; width:36px; height:1px; background:var(--oro); flex:none; }
.marcas__t{ font-size:clamp(2.1rem, 1.4rem + 2.3vw, 3.4rem); }
.marcas__t em{ font-style:italic; color:var(--rosa-texto); }
.marcas__list{ display:grid; grid-template-columns:repeat(2, 1fr); gap:30px 16px; margin:0; padding:0; list-style:none; align-items:center; text-align:center; }
.marca{ display:grid; place-items:center; min-height:58px; color:var(--texto-suave); transition:color .3s var(--ease); }
.marca:hover{ color:var(--texto); }
.marca--serif{ font-family:var(--font-titulos); font-size:2.1rem; font-weight:600; letter-spacing:.02em; }
.marca--caps{ font-size:1rem; font-weight:500; letter-spacing:.34em; }
.marca--light{ font-size:1.65rem; font-weight:300; letter-spacing:.06em; }
.marca--wide{ font-family:var(--font-titulos); font-size:1.2rem; font-weight:600; letter-spacing:.42em; }
.marca--italic{ font-family:var(--font-titulos); font-style:italic; font-size:2.3rem; }
.marca--caps2{ justify-self:center; padding:8px 14px; border:1px solid currentColor; font-size:.85rem; font-weight:600; letter-spacing:.16em; }
@media (min-width:760px){ .marcas__list{ grid-template-columns:repeat(3, 1fr); } }
@media (min-width:1100px){ .marcas__list{ grid-template-columns:repeat(6, 1fr); } }

/* ---------- Equipo ---------- */
.team{ display:grid; gap:56px; margin:0; padding:0; list-style:none; }
.team__card{ text-align:center; }
.team__ph{
  position:relative; width:min(196px, 56%); aspect-ratio:3/4; margin:0 auto 26px; overflow:hidden; display:grid; place-items:center;
  border-radius:50% 50% var(--radio) var(--radio) / 37.5% 37.5% var(--radio) var(--radio);
  background:var(--grano), radial-gradient(90% 70% at 30% 18%, var(--superficie) 0%, transparent 60%), linear-gradient(170deg, var(--rosa) 0%, var(--rosa-medio) 100%);
  box-shadow:var(--sombra-1);
}
.team__ph::after{
  content:""; position:absolute; inset:10px; pointer-events:none;
  border:1px solid rgb(var(--oro-rgb) / .7); border-radius:50% 50% calc(var(--radio) - 8px) calc(var(--radio) - 8px) / 37.5% 37.5% calc(var(--radio) - 8px) calc(var(--radio) - 8px);
}
.team__ph > img{ width:100%; height:100%; object-fit:cover; }
.team__deco{ position:absolute; inset:16% 8% 10%; width:84%; height:74%; fill:none; stroke:rgb(var(--superficie-rgb) / .75); stroke-width:1; }
.team__mono{ position:relative; font-family:var(--font-titulos); font-style:italic; font-size:104px; line-height:1; color:var(--rosa-texto); translate:0 6%; }
.team__n{ font-size:2.1rem; }
.team__r{ margin:8px 0 12px; font-size:12px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--oro-texto); }
.team__p{ max-width:32ch; margin:0 auto; color:var(--texto-suave); font-size:15.5px; }
@media (min-width:760px){ .team{ grid-template-columns:repeat(3, 1fr); gap:36px; } .team__ph{ width:min(236px, 82%); } }

/* ---------- Opiniones ---------- */
.rev-top{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap:30px; margin-bottom:clamp(36px, 5vw, 60px); }
.rating{ display:flex; align-items:center; gap:20px; padding:20px 26px; border-radius:var(--radio); background:rgb(var(--superficie-rgb) / .78); border:1px solid rgb(var(--oro-rgb) / .45); }
.rating__n{ margin:0; font-family:var(--font-titulos); font-size:4rem; font-weight:500; line-height:1; }
.rating__t{ margin:6px 0 0; font-size:13px; color:var(--texto-suave); }
.rating .chip{ margin-top:10px; }
.stars{ display:flex; gap:3px; margin:0; color:var(--oro-texto); }
.stars .i{ width:16px; height:16px; }
.rev__track{
  display:flex; gap:20px; padding:6px 2px 20px; margin:0 -2px; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; overscroll-behavior-x:contain;
}
.rev__track::-webkit-scrollbar{ display:none; }
.rev__slide{ flex:0 0 min(86%, 440px); scroll-snap-align:start; }
.rev__card{
  position:relative; height:100%; margin:0; padding:32px 28px 26px; display:flex; flex-direction:column; gap:18px;
  background:var(--superficie); border-radius:var(--radio); box-shadow:var(--sombra-1);
}
.rev__card::before{ content:"“"; position:absolute; right:22px; top:2px; font-family:var(--font-titulos); font-size:7rem; line-height:1; color:rgb(var(--oro-rgb) / .3); }
.rev__q{ margin:0; }
.rev__q p{ margin:0; font-family:var(--font-titulos); font-style:italic; font-weight:500; font-size:clamp(1.35rem, 1.15rem + .5vw, 1.6rem); line-height:1.35; }
.rev__who{ display:flex; align-items:center; gap:12px; margin-top:auto; padding-top:14px; border-top:1px solid var(--linea); }
.rev__av{ display:grid; place-items:center; width:44px; height:44px; flex:none; border-radius:50%; background:var(--rosa); color:var(--rosa-texto); font-family:var(--font-titulos); font-style:italic; font-size:1.4rem; }
.rev__n{ display:block; font-weight:500; }
.rev__s{ display:block; font-size:12.5px; color:var(--texto-suave); }
.rev__ctrl{ display:flex; align-items:center; gap:16px; margin-top:22px; }
.rev__bar{ position:relative; flex:1; height:1px; background:rgb(var(--texto-rgb) / .22); }
.rev__bar i{ position:absolute; left:0; top:-1px; height:3px; width:34%; background:var(--texto); transition:transform .3s var(--ease); }
@media (min-width:1100px){ .rev__slide{ flex-basis:calc((100% - 40px) / 3); } }

/* ---------- Tarjeta regalo ---------- */
.regalo{ overflow:hidden; background:var(--grano), radial-gradient(70% 60% at 0% 100%, rgb(var(--lila-rgb) / .7), transparent 70%), radial-gradient(60% 60% at 100% 0%, rgb(var(--rosa-rgb)), transparent 70%), var(--fondo); }
.regalo__grid{ display:grid; gap:60px; align-items:center; }
.regalo__vis{ perspective:1300px; display:grid; place-items:center; padding:10px; }
.gcard{ position:relative; width:min(100%, 480px); aspect-ratio:1.586; transform-style:preserve-3d; transform:rotateX(var(--rx, 6deg)) rotateY(var(--ry, -12deg)); transition:transform .5s var(--ease-out); }
.gcard__in{
  position:absolute; inset:0; overflow:hidden; display:flex; flex-direction:column; padding:28px 30px 24px; border-radius:22px; color:var(--texto);
  background:var(--grano),
    radial-gradient(60% 70% at 18% 20%, rgb(var(--superficie-rgb) / .95), transparent 70%),
    conic-gradient(from 220deg at 70% 60%, var(--rosa), var(--champan), var(--lila), var(--rosa-medio), var(--rosa));
  box-shadow:0 34px 70px -28px rgb(var(--texto-rgb) / .5), inset 0 0 0 1px rgb(var(--oro-rgb) / .55);
}
.gcard__in::after{ content:""; position:absolute; inset:11px; border:1px solid rgb(var(--oro-rgb) / .55); border-radius:14px; pointer-events:none; }
.gcard__shine{ position:absolute; inset:-50%; pointer-events:none; background:linear-gradient(105deg, transparent 42%, rgb(var(--superficie-rgb) / .6) 50%, transparent 58%); transform:translateX(-60%); }
.gcard__concha{ position:absolute; right:-36px; bottom:-48px; width:64%; height:auto; aspect-ratio:1; fill:none; stroke:rgb(var(--oro-rgb) / .6); stroke-width:1; }
.gcard__logo{ position:relative; margin:0; font-family:var(--font-titulos); font-style:italic; font-weight:500; font-size:2.6rem; line-height:1; }
.gcard__k{ position:relative; margin:6px 0 0; font-size:11px; font-weight:500; letter-spacing:.32em; text-transform:uppercase; color:var(--oro-texto); }
.gcard__v{ position:relative; margin:auto 0 0; font-family:var(--font-titulos); font-size:clamp(2.6rem, 2rem + 2vw, 3.6rem); font-weight:500; line-height:1; }
.gcard__foot{ position:relative; display:flex; justify-content:space-between; margin:10px 0 0; font-size:10.5px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--texto-suave); }
.opts{ display:flex; flex-wrap:wrap; gap:10px; margin:28px 0 30px; padding:0; border:0; }
.opts__l{ width:100%; margin-bottom:12px; padding:0; font-size:12px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--texto-suave); }
.opt{ position:relative; }
.opt input{ position:absolute; inset:0; margin:0; opacity:0; cursor:pointer; }
.opt span{ display:inline-flex; align-items:center; min-height:48px; padding:0 22px; border:1px solid rgb(var(--texto-rgb) / .28); border-radius:999px; background:rgb(var(--superficie-rgb) / .5); font-weight:500; transition:background-color .3s, color .3s, border-color .3s; }
.opt input:checked + span{ background:var(--texto); border-color:var(--texto); color:var(--fondo); }
.opt input:focus-visible + span{ outline:2px solid var(--oro-texto); outline-offset:3px; }
@media (min-width:960px){ .regalo__grid{ grid-template-columns:1fr 1fr; gap:clamp(56px, 7vw, 120px); } }

/* ---------- Instagram ---------- */
.ig__head{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap:26px; margin-bottom:clamp(32px, 4vw, 52px); }
.ig__head .sec__t{ margin:0; }
.ig__acc{ display:flex; flex-wrap:wrap; align-items:center; gap:12px 18px; }
.ig__acc .chip{ margin:0; }
.ig__user{ display:flex; align-items:center; gap:8px; margin:0; font-weight:500; letter-spacing:.04em; }
.ig__grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:8px; margin:0; padding:0; list-style:none; }
.ig__item{ position:relative; display:block; aspect-ratio:1; overflow:hidden; border-radius:var(--radio-sm); }
.ig__img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:scale 1s var(--ease); }
.ig__ov{ position:absolute; inset:0; display:grid; place-items:center; background:rgb(var(--oscuro-rgb) / .38); color:var(--sobre-oscuro); opacity:0; transition:opacity .35s var(--ease); }
.ig__ov .i{ width:30px; height:30px; }
.ig__item:hover .ig__ov, .ig__item:focus-visible .ig__ov{ opacity:1; }
.ig__item:hover .ig__img{ scale:1.07; }
.ig__item .ph__tag{ left:8px; bottom:8px; padding:3px 8px; font-size:8.5px; }
.ig__item .ph::after{ inset:7px; }
@media (min-width:900px){ .ig__grid{ grid-template-columns:repeat(6, 1fr); gap:14px; } .ig__item .ph__tag{ font-size:9.5px; } }

/* ---------- Reserva ---------- */
.book{ display:grid; gap:48px; align-items:start; }
.ticks{ display:grid; gap:12px; margin:28px 0 0; padding:0; list-style:none; }
.ticks li{ display:flex; align-items:flex-start; gap:12px; }
.ticks .i{ width:18px; height:18px; margin-top:4px; color:var(--oro-texto); }
.form{ display:grid; gap:18px; padding:32px 22px; }
.field{ display:grid; gap:8px; position:relative; z-index:1; }
.field > label{ font-size:13px; font-weight:500; letter-spacing:.06em; }
.req{ color:var(--rosa-texto); }
.opt-l{ font-weight:400; letter-spacing:0; color:var(--texto-suave); }
.field input, .field select, .field textarea{
  width:100%; min-height:52px; padding:12px 16px; border:1px solid var(--linea); border-radius:var(--radio-sm);
  background:var(--fondo); color:var(--texto); font-size:16px; appearance:none; -webkit-appearance:none;
  transition:border-color .25s var(--ease), box-shadow .25s var(--ease), background-color .25s var(--ease);
}
.field textarea{ min-height:100px; resize:vertical; }
.field select{
  padding-right:44px; cursor:pointer;
  background-image:linear-gradient(45deg, transparent 50%, var(--texto-suave) 50%), linear-gradient(135deg, var(--texto-suave) 50%, transparent 50%);
  background-position:calc(100% - 22px) 52%, calc(100% - 17px) 52%; background-size:5px 5px, 5px 5px; background-repeat:no-repeat;
}
.field input::placeholder, .field textarea::placeholder{ color:var(--texto-suave); opacity:.75; }
.field input:hover, .field select:hover, .field textarea:hover{ border-color:var(--rosa-medio); }
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--texto); background:var(--superficie); box-shadow:0 0 0 4px rgb(var(--oro-rgb) / .22); }
.field.is-err input{ border-color:var(--error); }
.field__err{ margin:0; font-size:13px; color:var(--error); }
.field__err:empty{ display:none; }
.field-row{ display:grid; gap:18px; }
.field--check{ grid-template-columns:auto 1fr; align-items:start; column-gap:12px; }
.field--check input{ width:22px; height:22px; min-height:0; margin:2px 0 0; padding:0; appearance:auto; -webkit-appearance:checkbox; accent-color:var(--texto); cursor:pointer; }
.field--check label{ font-size:14px; font-weight:400; letter-spacing:0; color:var(--texto-suave); }
.field--check label a{ color:var(--texto); text-underline-offset:3px; }
.field--check .field__err{ grid-column:1 / -1; }
.form .btn{ position:relative; z-index:1; }
.form__note{ position:relative; z-index:1; margin:0; font-size:12.5px; line-height:1.5; color:var(--texto-suave); text-align:center; }
@media (min-width:560px){ .form{ padding:44px; } .field-row{ grid-template-columns:1fr 1fr; } }
@media (min-width:960px){ .book{ grid-template-columns:.9fr 1.1fr; gap:clamp(56px, 7vw, 120px); } .book__txt{ position:sticky; top:calc(var(--hdr-h) + 40px); } }

/* ---------- Preguntas frecuentes ---------- */
.faq__grid{ display:grid; gap:44px; }
.faq__head .sec__p{ margin-bottom:12px; }
.faq__list{ border-top:1px solid rgb(var(--oro-rgb) / .5); }
.faq__it{ border-bottom:1px solid rgb(var(--oro-rgb) / .5); }
.faq__it summary{
  display:flex; justify-content:space-between; align-items:center; gap:20px; padding:24px 4px; cursor:pointer; list-style:none;
  font-family:var(--font-titulos); font-size:clamp(1.35rem, 1.1rem + .7vw, 1.75rem); font-weight:500; line-height:1.25;
}
.faq__it summary::-webkit-details-marker{ display:none; }
.faq__it summary .i{ color:var(--oro-texto); transition:transform .4s var(--ease); }
.faq__it[open] summary .i{ transform:rotate(45deg); }
.faq__it summary:hover{ color:var(--rosa-texto); }
.faq__a p{ margin:0; padding:0 4px 26px; max-width:62ch; color:var(--texto-suave); }
.faq__it::details-content{ block-size:0; overflow:hidden; transition:block-size .45s var(--ease), content-visibility .45s allow-discrete; }
.faq__it[open]::details-content{ block-size:auto; }
@media (min-width:960px){ .faq__grid{ grid-template-columns:5fr 7fr; gap:clamp(56px, 7vw, 130px); align-items:start; } .faq__head{ position:sticky; top:calc(var(--hdr-h) + 40px); } }

/* ---------- Contacto ---------- */
.contact{ display:grid; gap:52px; }
.clist{ display:grid; gap:20px; margin:30px 0 0; }
.clist__row{ display:grid; gap:4px; }
.clist dt{ display:flex; align-items:center; gap:8px; font-size:12px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--oro-texto); }
.clist dt .i{ width:16px; height:16px; }
.clist dd{ margin:0; font-size:17px; }
.clist a{ text-decoration-color:rgb(var(--oro-rgb) / .7); text-underline-offset:4px; }
.contact__btns{ display:flex; flex-wrap:wrap; gap:10px; margin-top:30px; }
.hours{ margin-top:46px; }
.hours__t{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px; font-size:1.9rem; }
.status{
  display:inline-flex; align-items:center; gap:8px; padding:6px 13px; border-radius:999px; background:var(--fondo-alt);
  font-family:var(--font-texto); font-size:12px; font-weight:500; letter-spacing:.06em; line-height:1.4;
}
.hours__tbl{ width:100%; margin-top:14px; border-collapse:collapse; font-size:15.5px; }
.hours__tbl th, .hours__tbl td{ padding:11px 0; border-bottom:1px solid var(--linea); }
.hours__tbl th{ font-weight:400; text-align:left; }
.hours__tbl td{ text-align:right; font-variant-numeric:tabular-nums; }
.hours__tbl tr.is-closed td{ color:var(--texto-suave); }
.hours__tbl tr.is-today th, .hours__tbl tr.is-today td{ font-weight:500; }
.hours__tbl tr.is-today th::before{ content:""; display:inline-block; width:6px; height:6px; margin:0 10px 2px 0; border-radius:50%; background:var(--oro); vertical-align:middle; }

.map{ position:relative; aspect-ratio:1 / 1.05; overflow:hidden; background:var(--fondo-alt); }
.map__ph{
  position:absolute; inset:0; z-index:0; display:grid; place-content:center; justify-items:center; gap:12px; padding:24px; text-align:center;
  font-size:14px; color:var(--texto-suave);
  background:linear-gradient(rgb(var(--linea-rgb) / .9) 1px, transparent 1px) 0 0 / 44px 44px, linear-gradient(90deg, rgb(var(--linea-rgb) / .9) 1px, transparent 1px) 0 0 / 44px 44px, var(--fondo-alt);
}
.map__pin{ width:36px; height:36px; color:var(--rosa-texto); }
.map.is-ready .map__ph{ display:none; }
.map__note{ margin:12px 0 0; text-align:right; font-size:11.5px; font-weight:500; letter-spacing:.14em; text-transform:uppercase; color:var(--texto-suave); }
.map.leaflet-container{ background:var(--fondo-alt); font-family:var(--font-texto); }
.map .leaflet-tile-pane{ filter:grayscale(1) sepia(.22) brightness(1.04) contrast(.9); }
.map .leaflet-control-attribution{ font-size:10.5px; background:rgb(var(--superficie-rgb) / .85); }
.map .leaflet-control-zoom a{ color:var(--texto); }
.map .leaflet-popup-content-wrapper{ border-radius:var(--radio-sm); box-shadow:var(--sombra-2); }
.map .leaflet-popup-content{ margin:12px 16px; font-size:14px; line-height:1.45; color:var(--texto); }
.map .leaflet-popup-content strong{ font-family:var(--font-titulos); font-style:italic; font-size:20px; font-weight:500; }
.pin{ position:relative; width:48px; height:56px; }
.pin::before{
  content:""; position:absolute; left:50%; top:4px; width:36px; height:36px; margin-left:-18px;
  border-radius:50% 50% 50% 0; transform:rotate(-45deg); background:var(--texto); box-shadow:0 8px 16px -6px rgb(var(--texto-rgb) / .6);
}
.pin::after{ content:""; position:absolute; left:50%; top:16px; width:12px; height:12px; margin-left:-6px; border-radius:50%; background:var(--oro-claro); }
@media (min-width:960px){
  .contact{ grid-template-columns:1fr 1fr; gap:clamp(56px, 7vw, 120px); align-items:start; }
  .map{ aspect-ratio:auto; height:min(680px, 80svh); position:sticky; top:calc(var(--hdr-h) + 32px); }
}

/* ---------- Pie ---------- */
.ftr{ position:relative; overflow:hidden; padding:80px 0 32px; background:var(--grano), var(--oscuro); color:var(--sobre-oscuro); font-size:15px; }
.ftr__grid{ display:grid; gap:40px; position:relative; z-index:1; }
.ftr__lema{ max-width:30ch; margin:16px 0 0; color:rgb(var(--sobre-oscuro-rgb) / .78); }
.ftr__h{ margin:0 0 12px; font-size:12px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--oro-claro); }
.ftr__col p{ margin:0 0 8px; color:rgb(var(--sobre-oscuro-rgb) / .82); }
.ftr__links{ display:grid; margin:0; padding:0; list-style:none; }
.ftr__links a{ display:inline-flex; align-items:center; min-height:40px; text-decoration:none; color:rgb(var(--sobre-oscuro-rgb) / .86); }
.ftr__links a:hover, .ftr__legal a:hover, .ftr__bottom a:hover{ color:var(--sobre-oscuro); text-decoration:underline; text-underline-offset:4px; }
.ftr__big{ margin:48px 0 0; text-align:center; line-height:.78; user-select:none; pointer-events:none; }
.ftr__big::before{
  content:attr(data-word); display:block; white-space:nowrap;
  font-family:var(--font-titulos); font-style:italic; font-weight:500; font-size:clamp(6.5rem, 27vw, 24rem); letter-spacing:-.02em;
  color:transparent; -webkit-text-stroke:1px rgb(var(--oro-claro-rgb) / .45);
}
.ftr__bottom{
  position:relative; z-index:1; display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px 28px; margin-top:24px; padding-top:24px;
  border-top:1px solid rgb(var(--sobre-oscuro-rgb) / .14); font-size:13px; color:rgb(var(--sobre-oscuro-rgb) / .72);
}
.ftr__bottom p{ margin:0; }
.ftr__bottom a{ color:rgb(var(--sobre-oscuro-rgb) / .9); }
.ftr__legal{ display:flex; flex-wrap:wrap; gap:4px 18px; margin:0; padding:0; list-style:none; }
.ftr__legal a{ text-decoration:none; }
.ftr :focus-visible{ outline-color:var(--oro-claro); }
@media (min-width:800px){ .ftr__grid{ grid-template-columns:1.4fr 1fr 1fr; } }
@media (max-width:1079px){ .ftr{ padding-bottom:calc(104px + env(safe-area-inset-bottom)); } }

/* ---------- Plaza de Oskal Studio (solo en las demos) ---------- */
.oskal{ position:relative; padding:24px 0; background:var(--estudio-fondo); color:var(--estudio-texto); border-top:1px solid rgb(var(--estudio-texto-rgb) / .12); }
.oskal__in{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px 32px; }
.oskal__marca{ display:flex; flex-direction:column; gap:2px; margin:0; font-size:12px; letter-spacing:.06em; color:rgb(var(--estudio-texto-rgb) / .72); }
.oskal__marca a{ display:inline-flex; align-items:center; gap:8px; min-height:28px; font-size:15px; font-weight:600; letter-spacing:.04em; color:var(--estudio-texto); text-decoration:none; }
.oskal__marca a::before{ content:""; width:9px; height:9px; border-radius:50%; background:var(--estudio-acento); }
.oskal__t{ margin:0; font-size:clamp(1.1rem, .95rem + .6vw, 1.45rem); font-weight:500; letter-spacing:.01em; }
.oskal__sep{ margin:0 .3em; color:rgb(var(--estudio-texto-rgb) / .45); }
.oskal__p strong{ font-weight:600; }
.oskal__btn{ background:var(--estudio-acento); color:var(--estudio-texto); }
.oskal__btn:hover{ box-shadow:0 12px 26px -12px rgb(0 0 0 / .6); transform:translateY(-2px); }
.oskal :focus-visible{ outline-color:var(--estudio-texto); }
.ftr:has(+ .oskal){ padding-bottom:32px; }
@media (max-width:1079px){ .oskal{ padding-bottom:calc(24px + env(safe-area-inset-bottom)); } .oskal__btn{ width:100%; } }

/* Botón fijo «Reservar cita» (móvil) */
.bookbar{
  position:fixed; left:0; right:0; bottom:0; z-index:40; padding:12px 16px calc(12px + env(safe-area-inset-bottom));
  background:linear-gradient(to top, rgb(var(--fondo-rgb) / .97) 55%, rgb(var(--fondo-rgb) / 0));
  transform:translateY(120%); transition:transform .5s var(--ease-out); pointer-events:none;
}
.bookbar.is-on{ transform:none; }
.bookbar .btn{ pointer-events:auto; box-shadow:var(--sombra-2); }
@media (min-width:1080px){ .bookbar{ display:none; } }

/* ---------- Fotos de reserva (hasta tener las reales): degradado + trama + grano ---------- */
.foto{ object-position:var(--pos-m, var(--pos, 50% 50%)); }
@media (min-width:960px){ .foto{ object-position:var(--pos, 50% 50%); } }
.ph{ position:relative; width:100%; height:100%; display:grid; place-items:center; overflow:hidden; isolation:isolate; }
.ph::before{ /* trama */
  content:""; position:absolute; inset:0; z-index:-1; background:var(--trama-color, var(--oro)); opacity:var(--trama-op, .3);
  -webkit-mask:var(--trama, var(--pat-lineas)) repeat; mask:var(--trama, var(--pat-lineas)) repeat;
}
.ph::after{ /* marco fino */
  content:""; position:absolute; inset:12px; border:1px solid rgb(var(--superficie-rgb) / .6); border-radius:inherit; pointer-events:none;
}
.ph--nacar{
  --trama:var(--pat-escamas); --trama-op:.36;
  background:var(--grano),
    radial-gradient(55% 45% at 72% 26%, rgb(var(--superficie-rgb) / .95), transparent 70%),
    radial-gradient(65% 55% at 18% 82%, rgb(var(--lila-rgb)), transparent 70%),
    conic-gradient(from 210deg at 58% 56%, var(--rosa), var(--champan), var(--lila), var(--rosa-medio), var(--rosa));
}
.ph--rosa{
  --trama:var(--pat-lineas); --trama-op:.2; --trama-color:var(--superficie);
  background:var(--grano),
    radial-gradient(60% 50% at 30% 18%, rgb(var(--superficie-rgb) / .7), transparent 70%),
    linear-gradient(155deg, var(--rosa) 0%, var(--rosa-medio) 52%, var(--rosa-hondo) 125%);
}
.ph--miel{
  --trama:var(--pat-puntos); --trama-op:.35; --trama-color:var(--superficie);
  background:var(--grano),
    radial-gradient(60% 50% at 70% 20%, rgb(var(--superficie-rgb) / .75), transparent 70%),
    linear-gradient(160deg, var(--champan) 0%, var(--oro-claro) 55%, var(--rosa-medio) 120%);
}
.ph--gris{
  --trama:var(--pat-lineas); --trama-op:.14; --trama-color:var(--texto-suave);
  background:var(--grano),
    radial-gradient(60% 50% at 35% 25%, rgb(var(--superficie-rgb) / .45), transparent 70%),
    linear-gradient(165deg, var(--linea) 0%, rgb(var(--texto-suave-rgb) / .7) 125%);
}
.ph__m{ width:58%; max-width:360px; height:auto; aspect-ratio:1; fill:none; stroke:var(--motivo-color, var(--superficie)); stroke-width:1; stroke-linecap:round; stroke-linejoin:round; opacity:.95; }
.ph--nacar .ph__m{ --motivo-color:var(--oro); }
.ph--gris .ph__m{ --motivo-color:rgb(var(--superficie-rgb) / .7); }
.ph--h .ph__m{ width:44%; }
.ph__tag{
  position:absolute; left:16px; bottom:16px; padding:5px 11px; border-radius:999px; background:rgb(var(--superficie-rgb) / .82);
  font-size:10.5px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--texto-suave); white-space:nowrap;
}
.hero .ph::after{ display:none; }
.hero .ph__m{ position:absolute; right:12%; top:50%; translate:0 -50%; width:min(46vw, 560px); max-width:none; stroke-width:1; }
.hero .ph__tag{ left:auto; right:clamp(30px, 3vw, 52px); bottom:clamp(30px, 3vw, 52px); }
@media (max-width:959px){ .hero .ph__m{ right:50%; translate:50% 0; top:6%; width:min(78vw, 420px); } .hero .ph__tag{ top:clamp(22px, 6vw, 40px); bottom:auto; left:clamp(22px, 6vw, 40px); right:auto; } }

/* ---------- Visor de fotos ---------- */
.lb{
  width:100vw; height:100vh; height:100dvh; max-width:none; max-height:none; margin:0; padding:0; border:0;
  background:rgb(var(--oscuro-rgb) / .95); color:var(--sobre-oscuro); overflow:hidden;
}
.lb::backdrop{ background:transparent; }
.lb[open]{ display:grid; place-items:center; }
.lb__fig{ display:grid; justify-items:center; gap:14px; width:min(92vw, 1100px); margin:0; touch-action:pan-y; }
.lb__img{ display:grid; place-items:center; width:100%; height:min(76dvh, 900px); }
.lb__img > *{ max-width:100%; max-height:100%; border-radius:var(--radio-sm); }
.lb__img > img{ width:auto; height:auto; object-fit:contain; }
.lb__img > .ph{ height:100%; width:auto; }
.lb__cap{ font-size:14px; letter-spacing:.04em; color:rgb(var(--sobre-oscuro-rgb) / .9); text-align:center; }
.lb__n{ margin-left:10px; color:var(--oro-claro); font-variant-numeric:tabular-nums; }
.lb__x{ position:absolute; top:calc(14px + env(safe-area-inset-top)); right:14px; }
.lb__prev, .lb__next{ position:absolute; top:50%; margin-top:-24px; }
.lb__prev{ left:12px; } .lb__next{ right:12px; }
.lb :focus-visible{ outline-color:var(--oro-claro); }

/* ---------- Ventana de ejemplo (demo) ---------- */
.modal{ width:min(92vw, 470px); max-width:none; padding:0; border:0; background:transparent; color:var(--texto); }
.modal::backdrop{ background:rgb(var(--oscuro-rgb) / .55); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }
.modal__box{ position:relative; padding:30px 24px 24px; border-radius:var(--radio); background:var(--superficie); box-shadow:var(--sombra-3); }
.modal__box::before{ content:""; position:absolute; inset:9px; border:1px solid rgb(var(--oro-rgb) / .45); border-radius:calc(var(--radio) - 6px); pointer-events:none; }
.modal .over{ margin-bottom:12px; font-size:10.5px; }
.modal__t{ font-size:2.1rem; }
.modal__p{ margin:12px 0 18px; color:var(--texto-suave); font-size:15px; }
.bubble{
  position:relative; margin-left:10%; padding:14px 16px 28px; border-radius:18px 18px 4px 18px;
  background:var(--fondo-alt); font-size:15px; line-height:1.5; white-space:pre-line; overflow-wrap:anywhere;
}
.bubble__txt{ margin:0; }
.bubble__meta{ position:absolute; right:12px; bottom:7px; display:flex; align-items:center; gap:3px; font-size:11px; color:var(--texto-suave); }
.bubble__meta .i{ width:14px; height:14px; color:var(--oro-texto); }
.modal__note{ margin:14px 0 0; font-size:12.5px; color:var(--texto-suave); }
.modal__btns{ position:relative; display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.modal__btns .btn{ flex:1 1 auto; }

/* ---------- Legal ---------- */
.legal{ padding:clamp(40px, 7vw, 88px) 0 clamp(72px, 9vw, 120px); }
.legal__t{ margin:22px 0 0; font-size:clamp(2.4rem, 1.7rem + 3vw, 3.6rem); }
.legal__toc{ display:flex; flex-wrap:wrap; gap:8px 22px; margin:22px 0 0; }
.legal__toc a{ font-size:12.5px; font-weight:500; letter-spacing:.14em; text-transform:uppercase; color:var(--oro-texto); text-decoration:none; min-height:44px; display:inline-flex; align-items:center; }
.legal__demo{ margin:26px 0 0; padding:16px 20px; border-radius:var(--radio-sm); border:1px dashed rgb(var(--texto-rgb) / .3); color:var(--texto-suave); font-size:15px; }
.legal__sec{ margin-top:52px; padding-top:28px; border-top:1px solid var(--linea); }
.legal__sec h2{ font-size:2.1rem; }
.legal__sec h3{ margin:28px 0 6px; font-family:var(--font-texto); font-size:13px; font-weight:500; letter-spacing:.14em; text-transform:uppercase; color:var(--texto); }
.legal__sec p, .legal__sec li{ color:var(--texto-suave); }
.legal__sec ul{ padding-left:20px; }
.legal__sec strong{ color:var(--texto); font-weight:500; }
.legal__upd{ margin-top:48px; font-size:13px; color:var(--texto-suave); }

/* ---------- Movimiento (todo se apaga con prefers-reduced-motion) ---------- */
@media (prefers-reduced-motion:no-preference){
  .hero__a{ animation:rise 1s var(--ease-out) both; animation-delay:calc(var(--d, 0) * 80ms + 60ms); }
  .split--hero .wi{ animation:word-up 1.1s var(--ease-out) both; animation-delay:calc(var(--i) * 90ms + 120ms); }
  .hero__zoom{ animation:kenburns 28s ease-in-out 1.6s infinite alternate; }
  .hero__scroll i{ animation:caer 2.4s var(--ease) infinite; }
  .sello__txt{ animation:girar 26s linear 1.8s infinite; }
  .marq__track{ animation:marq 46s linear infinite; }
  .marq:hover .marq__track{ animation-play-state:paused; }
  .dot.is-open{ animation:pulse 2.6s ease-out infinite; }
  .ba__knob::after{ animation:pulso 2.4s var(--ease) infinite; }
  .gcard__shine{ animation:brillo 7s var(--ease) infinite; }
  /* Aparición: sube 20 px y se aclara, 0,7 s con frenada suave; empieza cuando el bloque aún está
     un 15 % por debajo de la pantalla (script.js), una sola vez. Solo transform y opacity:
     no cambia el tamaño de nada, los vecinos no se mueven. */
  .rv .reveal{ opacity:0; translate:0 20px; transition:opacity .7s var(--ease-out), translate .7s var(--ease-out); transition-delay:min(calc(var(--d, 0) * 70ms), 280ms); }
  .rv .reveal.is-in{ opacity:1; translate:0 0; }
  .rv .split .wi{ transform:translateY(105%); transition:transform .8s var(--ease-out); transition-delay:min(calc(var(--i) * 50ms), 400ms); }
  .rv .split.is-in .wi{ transform:none; }
  .rv .mask{ clip-path:inset(0 0 100% 0); transition:clip-path .9s var(--ease-out); transition-delay:min(calc(var(--d, 0) * 70ms + 80ms), 360ms); }
  .rv .mask > *{ transform:scale(1.08); transition:transform 1.1s var(--ease-out); transition-delay:min(calc(var(--d, 0) * 70ms + 80ms), 360ms); }
  .rv .is-in .mask, .rv .mask.is-in{ clip-path:inset(0 0 0 0); }
  .rv .is-in .mask > *, .rv .mask.is-in > *{ transform:none; }
  .lb[open]{ animation:fade .3s var(--ease); }
  .lb__img > *{ animation:zoom-in .45s var(--ease-out); }
  .modal[open] .modal__box{ animation:pop .45s var(--ease-out); }
}
/* Teléfono y pantallas táctiles: lo mismo, más simple — títulos y fotos solo se aclaran y suben 20 px */
@media (prefers-reduced-motion:no-preference) and (max-width:900px), (prefers-reduced-motion:no-preference) and (pointer:coarse){
  /* el título de la portada no: tiene su propia animación y el script no lo observa (si no, se quedaba invisible) */
  .rv .split:not(.split--hero){ opacity:0; translate:0 20px; transition:opacity .7s var(--ease-out), translate .7s var(--ease-out); }
  .rv .split.is-in{ opacity:1; translate:0 0; }
  .rv .split:not(.split--hero) .wi, .rv .split.is-in .wi{ transform:none; transition:none; }
  .rv .mask{ clip-path:none; opacity:0; transition:opacity .7s var(--ease-out); }
  .rv .is-in .mask, .rv .mask.is-in{ opacity:1; }
  .rv .mask > *, .rv .is-in .mask > *, .rv .mask.is-in > *{ transform:none; transition:none; }
}
/* Estado «abierto / cerrado»: el sitio se guarda desde el principio (sin saltos al rellenarlo) */
.is-wait{ visibility:hidden; }
/* Cifras que cuentan: ancho del número final reservado, los vecinos no se mueven */
[data-count]{ display:inline-block; text-align:end; font-variant-numeric:tabular-nums; }
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ transition-duration:.01ms !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; }
  .gcard{ transform:none; }
}
/* opacity .01: el texto cuenta como pintado desde el primer momento (LCP rápido) */
@keyframes rise{ from{ opacity:.01; transform:translateY(24px); } to{ opacity:1; transform:none; } }
@keyframes word-up{ from{ opacity:.01; transform:translateY(55%); } to{ opacity:1; transform:none; } }
@keyframes kenburns{ from{ transform:scale(1); } to{ transform:scale(1.1) translate(-1.5%, -1%); } }
@keyframes caer{ 0%{ transform:scaleY(0); opacity:1; } 60%{ transform:scaleY(1); opacity:1; } 100%{ transform:scaleY(1); opacity:0; } }
@keyframes girar{ to{ transform:rotate(360deg); } }
@keyframes marq{ to{ transform:translateX(-50%); } }
@keyframes pulse{ 0%{ box-shadow:0 0 0 0 rgb(var(--exito-rgb) / .45); } 70%,100%{ box-shadow:0 0 0 9px rgb(var(--exito-rgb) / 0); } }
@keyframes pulso{ 0%{ transform:scale(.92); opacity:.9; } 100%{ transform:scale(1.35); opacity:0; } }
@keyframes brillo{ 0%,55%{ transform:translateX(-60%); } 85%,100%{ transform:translateX(60%); } }
@keyframes panel-in{ from{ opacity:0; transform:translateY(12px); } to{ opacity:1; transform:none; } }
@keyframes fade{ from{ opacity:0; } to{ opacity:1; } }
@keyframes zoom-in{ from{ opacity:0; transform:scale(.96); } to{ opacity:1; transform:none; } }
@keyframes pop{ from{ opacity:0; transform:translateY(16px) scale(.97); } to{ opacity:1; transform:none; } }

/* Sin content-visibility en las secciones: con alturas estimadas la página «saltaba» al volver
   hacia arriba. Solo el pie (es lo último, nada se mueve por él). */
.ftr{ content-visibility:auto; contain-intrinsic-size:auto 900px; }
.oskal__plan{ font-weight:600; letter-spacing:.02em; }
/* Foto con recorte para el teléfono (<picture>): la imagen se coloca igual que una <img> suelta */
.foto-pic{ display:contents; }

/* ---------- Animaciones sin fin: solo mientras se ven ----------
   script.js pone .is-quieto al bloque que está fuera de la pantalla: fuera de la vista no se anima nada
   (acercamiento de la foto, sello que gira, marquesina, pulso del divisor, brillo de la tarjeta, «abierto»). */
.is-quieto .hero__zoom, .is-quieto .hero__scroll i, .is-quieto .sello__txt, .marq.is-quieto .marq__track,
.ba.is-quieto .ba__knob::after, .gcard.is-quieto .gcard__shine,
.is-quieto .dot.is-open, .is-quieto .dot.is-open::after{ animation:none !important; }

/* ---------- Teléfono y pantallas táctiles: el mismo aspecto, menos trabajo para la tarjeta gráfica ----------
   Sin grano, sombras cortas, cintas con «imán» suave (proximity), pulsos con transform (no repintan la
   página), sin desenfoque detrás de las ventanas. En el ordenador no cambia nada. */
@media (hover:none), (pointer:coarse){
  :root{
    --grano:none;
    --sombra-1:0 1px 2px rgb(var(--texto-rgb) / .06), 0 6px 14px -8px rgb(var(--texto-rgb) / .2);
    --sombra-2:0 2px 4px rgb(var(--texto-rgb) / .07), 0 10px 20px -10px rgb(var(--texto-rgb) / .28);
    --sombra-3:0 3px 8px rgb(var(--texto-rgb) / .08), 0 16px 28px -14px rgb(var(--texto-rgb) / .34);
  }
  .hdr.is-solid{ box-shadow:0 1px 0 rgb(var(--oro-rgb) / .3); }
  .hero__zoom{ will-change:auto; }
  /* sombra + marco (outline) juntos hacían repintar toda la página en cada fotograma del pulso del divisor;
     sobre el fondo oscuro la sombra casi no se ve: se queda solo el marco */
  .ba--xl{ box-shadow:none; }
  .ba__line::before{ box-shadow:0 0 6px rgb(0 0 0 / .35); }
  .gcard__in{ box-shadow:0 16px 28px -16px rgb(var(--texto-rgb) / .5), inset 0 0 0 1px rgb(var(--oro-rgb) / .55); }
  .srv, .rev__track{ scroll-snap-type:x proximity; }
  .modal::backdrop{ -webkit-backdrop-filter:none; backdrop-filter:none; background:rgb(var(--oscuro-rgb) / .7); }
  .dot.is-open{ position:relative; }
  @media (prefers-reduced-motion:no-preference){
    .dot.is-open{ animation:none; }
    .dot.is-open::after{ content:""; position:absolute; inset:0; border-radius:50%; background:rgb(var(--exito-rgb) / .45); animation:pulse-t 2.6s ease-out infinite; }
  }
}
@keyframes pulse-t{ 0%{ transform:scale(1); opacity:1; } 70%,100%{ transform:scale(3.25); opacity:0; } }
