/* 00-base.css */
/* Ceo · base: letra, colores, tamaños y piezas comunes. Dirección «El lugar lo cuenta» (Carbón y salvia, Work Sans). */
/* Un archivo fijo por grosor (herramientas/fuentes_fijas.py): con la letra variable, el motor de Safari pintaba mal los grosores */
@font-face { font-family: 'Work Sans'; font-style: normal; font-weight: 300; font-display: swap; src: url('../fonts/work-sans-latin-300.woff2') format('woff2');
  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: 'Work Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/work-sans-latin-400.woff2') format('woff2');
  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: 'Work Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/work-sans-latin-500.woff2') format('woff2');
  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: 'Work Sans'; font-style: normal; font-weight: 300; font-display: swap; src: url('../fonts/work-sans-latin-ext-300.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Work Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/work-sans-latin-ext-400.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Work Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/work-sans-latin-ext-500.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }

:root {
  --bg: #1c1c1c;
  --surface: #262626;
  --surface-2: #2f2f2e;
  --ink: #f1f1ef;
  --muted: #b0b1ac; /* 7,9:1 sobre el carbón y 7:1 sobre la superficie: las notas se leen bien */
  --accent: #8fa68e;
  --accent-ink: #1c1c1c;
  --accent-hover: #a2b8a1;
  --field: #c8c5ba;
  --field-ink: #1c1c1c;
  --field-muted: #4a4844;
  --dark-ink: #1e2228; /* la tinta sobre el cielo pálido de la portada: el tono más oscuro de la foto */

  /* los cinco tamaños de la página, y ninguno más */
  --t-pequeno: 0.875rem;
  --t-cuerpo: clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem);
  --t-entrada: clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem);
  --t-titular: clamp(2rem, 1.3rem + 3.2vw, 4rem);
  --t-portada: clamp(4.5rem, 7.2vw, 7rem);

  --m: clamp(20px, 3.2vw, 48px);
  --col: calc((100vw - 2 * var(--m)) / 12);
  --hueco: clamp(120px, 14vw, 200px);
  --ease: cubic-bezier(0.2, 0.8, 0.2, 1);
  --ease-entra: cubic-bezier(0.44, 0, 0.56, 1);
}
/* En pantallas verticales (móvil y tableta de pie) el tamaño grande se ajusta al ancho; sigue siendo uno de los cinco */
@media (max-aspect-ratio: 1/1) { :root { --t-portada: clamp(3.25rem, 13.5vw, 5.5rem); } }

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
body {
  margin: 0; background: var(--bg); color: var(--ink);
  font-family: 'Work Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  font-size: var(--t-cuerpo); line-height: 1.55; font-weight: 400;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
img { max-width: 100%; height: auto; display: block; }
figure { margin: 0; }
h1, h2, h3, h4 { margin: 0; font-weight: 300; line-height: 1.02; letter-spacing: -0.035em; text-wrap: balance; }
p { margin: 0; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 0.22em; }
a:hover { text-decoration-thickness: 2px; }
button { font: inherit; color: inherit; }
::selection { background: var(--accent); color: var(--accent-ink); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.saltar { position: fixed; left: var(--m); top: 12px; z-index: 100; padding: 10px 16px; background: var(--ink); color: var(--bg);
  clip-path: inset(50%); width: 1px; height: 1px; overflow: hidden; }
.saltar:focus { clip-path: none; width: auto; height: auto; }
[hidden] { display: none !important; }

/* Botones: rectos, un solo relleno */
.boton {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 48px; padding: 12px 24px; border: 0; border-radius: 0; cursor: pointer;
  background: var(--accent); color: var(--accent-ink); font-weight: 500; font-size: var(--t-cuerpo); line-height: 1.2;
  text-decoration: none; transition: background-color 0.2s, transform 0.18s var(--ease);
}
.boton:hover { background: var(--accent-hover); text-decoration: none; }
.boton:active { transform: scale(0.97); }
.boton--papel { background: var(--ink); color: var(--bg); }
.boton--papel:hover { background: #ffffff; }
.boton--borde { background: transparent; color: inherit; box-shadow: inset 0 0 0 1px currentColor; }
.boton--borde:hover { background: rgba(241, 241, 239, 0.08); }
.enlace { font-weight: 500; text-decoration: underline; text-decoration-thickness: 1px; }
.enlace::after { content: ' →'; }
.enlace:active { opacity: 0.7; }

/* Rejilla y márgenes */
.marco { padding-inline: var(--m); }
.seccion { padding-block: var(--hueco); }
.titular { font-size: var(--t-titular); }
.entrada { font-size: var(--t-entrada); line-height: 1.4; }
.suave { color: var(--muted); }
.pequeno { font-size: var(--t-pequeno); line-height: 1.5; }
p.pequeno { max-width: 80ch; }
.medida { max-width: 52ch; }

/* 10-cabecera.css */
/* Cabecera: marca a la izquierda, enlaces, acciones a la derecha. Sobre la foto de portada, tinta oscura y sin fondo. */
.cab {
  position: fixed; inset: 0 0 auto 0; z-index: 50;
  display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 24px;
  height: 72px; padding-inline: var(--m);
  background: var(--bg); color: var(--ink);
  transition: background-color 0.35s var(--ease), color 0.35s var(--ease), transform 0.35s var(--ease);
}
.cab--sobre-foto:not(.is-solida) { background: transparent; color: var(--dark-ink); }
.cab.is-escondida { transform: translateY(-100%); }
.cab-marca { font-size: var(--t-entrada); font-weight: 500; letter-spacing: -0.02em; text-decoration: none; }
.cab-nav ul { display: flex; gap: 28px; margin: 0; padding: 0; list-style: none; justify-content: center; }
.cab-nav a { text-decoration: none; font-size: var(--t-pequeno); font-weight: 500; padding-block: 8px; }
.cab-nav a:hover, .cab-nav a[aria-current="page"] { text-decoration: underline; text-decoration-thickness: 1px; }
.cab-acciones { display: flex; align-items: center; gap: 18px; }
.cab-preguntar { display: inline-flex; align-items: center; gap: 8px; padding: 8px 0; background: none; border: 0; cursor: pointer;
  font-size: var(--t-pequeno); font-weight: 500; }
.cab-preguntar svg { width: 20px; height: 20px; }
.cab-preguntar:hover span { text-decoration: underline; }
.cab-idioma { font-size: var(--t-pequeno); text-decoration: none; opacity: 0.75; white-space: nowrap; }
.cab-idioma .es-actual { opacity: 1; font-weight: 500; }
.cab-idioma:hover { opacity: 1; }
.cab-reservar { min-height: 44px; padding: 10px 20px; font-size: var(--t-pequeno); }
.cab--sobre-foto:not(.is-solida) .cab-reservar { background: var(--dark-ink); color: var(--ink); }
.cab-menu { display: none; background: none; border: 0; cursor: pointer; font-size: var(--t-pequeno); font-weight: 500; padding: 10px 0; }

@media (max-width: 1140px) {
  .cab-nav { display: none; }
  .cab { grid-template-columns: auto 1fr; }
  .cab-acciones { justify-content: flex-end; }
  .cab-preguntar span { display: none; }
  .cab-menu { display: inline-block; }
}
@media (max-width: 560px) {
  .cab { height: 64px; gap: 12px; }
  .cab-idioma, .cab-preguntar { display: none; }
  .cab-reservar { padding: 8px 14px; min-height: 40px; }
}

/* Menú del móvil: pantalla entera, carbón */
.menu-movil { position: fixed; inset: 64px 0 0 0; z-index: 49; background: var(--bg); color: var(--ink);
  display: flex; flex-direction: column; justify-content: space-between; padding: 32px var(--m) calc(32px + env(safe-area-inset-bottom)); overflow: auto; }
.menu-movil ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.menu-movil a { display: block; padding: 8px 0; font-size: var(--t-titular); font-weight: 300; letter-spacing: -0.035em; text-decoration: none; line-height: 1.1; }
.menu-movil a[aria-current="page"] { color: var(--accent); }
.menu-movil-pie { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 32px; }
.menu-movil-idioma { font-size: var(--t-cuerpo) !important; }
body.menu-abierto { overflow: hidden; }
body.menu-abierto .cab { background: var(--bg) !important; color: var(--ink) !important; }

/* Pie: el contacto como titular, sobre salvia */
.pie {
  min-height: 90svh; display: grid; grid-template-rows: auto 1fr auto auto; gap: 32px;
  padding: 40px var(--m) 32px; background: var(--accent); color: var(--accent-ink);
}
.pie a { color: inherit; }
.pie-arriba { display: grid; grid-template-columns: auto 1fr auto; gap: 32px; align-items: start; font-size: var(--t-pequeno); }
.pie-marca { font-size: var(--t-entrada); font-weight: 500; text-decoration: none; line-height: 1; }
.pie-notas { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.pie-contacto { align-self: end; display: grid; gap: 16px; justify-items: start; }
.pie-email { display: block; font-size: var(--t-portada); font-weight: 300; letter-spacing: -0.045em; line-height: 0.95;
  text-decoration: none; white-space: nowrap; }
.pie-email span { display: inline; }
.pie-email:hover { text-decoration: underline; text-decoration-thickness: 3px; text-underline-offset: 0.12em; }
.pie-abajo { display: grid; grid-template-columns: 1fr 1.4fr auto; gap: 24px; align-items: end; font-size: var(--t-pequeno); }
.pie-enlaces { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 20px; }
.pie-demo { max-width: 52ch; font-size: var(--t-cuerpo); line-height: 1.45; } /* el aviso de demo, a tamaño de texto: se lee y no se esconde */
.pie-creditos { font-size: var(--t-pequeno); line-height: 1.5; max-width: 68ch; color: #2a3329; }
@media (max-width: 900px) {
  .pie-email { white-space: normal; }
  .pie-email span { display: block; }
}
@media (max-width: 760px) {
  .pie { min-height: auto; padding-top: 32px; gap: 40px; }
  .pie-arriba { grid-template-columns: 1fr auto; }
  .pie-notas { grid-column: 1 / -1; grid-row: 2; }
  .pie-abajo { grid-template-columns: 1fr; gap: 12px; }
}

/* Ventanas: asistente, WhatsApp de demostración, aviso */
.dlg { border: 0; padding: 0; max-width: min(460px, calc(100vw - 32px)); width: 100%; background: var(--surface); color: var(--ink);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.45); }
.dlg::backdrop { background: rgba(10, 10, 10, 0.6); }
.dlg[open] { animation: dlg-entra 0.32s var(--ease); }
@keyframes dlg-entra { from { opacity: 0; transform: translateY(16px) scale(0.98); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .dlg[open] { animation: none; } }
.dlg-cab { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 20px 20px 8px 24px; }
.dlg-titulo { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.02em; }
.dlg-cerrar { width: 44px; height: 44px; display: grid; place-items: center; background: none; border: 0; cursor: pointer; color: inherit; }
.dlg-cerrar svg { width: 22px; height: 22px; }
.dlg-aviso { padding: 0 24px 12px; color: var(--muted); }
.chat { height: min(46vh, 360px); overflow-y: auto; padding: 8px 24px 16px; display: flex; flex-direction: column; gap: 10px; }
.chat-msg { max-width: 88%; padding: 10px 14px; font-size: 1rem; line-height: 1.45; }
.chat-msg--ceo { background: var(--surface-2); align-self: flex-start; }
.chat-msg--tu { background: var(--accent); color: var(--accent-ink); align-self: flex-end; }
.chat-msg a { color: inherit; font-weight: 500; }
.chat-rapidas { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 24px 12px; }
.chip { min-height: 40px; padding: 8px 14px; background: transparent; color: var(--ink); border: 0; box-shadow: inset 0 0 0 1px #5d5e5a;
  cursor: pointer; font-size: var(--t-pequeno); }
.chip:hover { box-shadow: inset 0 0 0 1px var(--ink); }
.chat-form { display: flex; gap: 8px; padding: 12px 24px 24px; }
.chat-form input { flex: 1; min-width: 0; min-height: 48px; padding: 10px 12px; background: var(--bg); color: var(--ink); border: 1px solid #4a4b47;
  font: inherit; font-size: 16px; border-radius: 0; }
.chat-form input:focus { outline: 2px solid var(--accent); outline-offset: 0; border-color: transparent; }

.dlg-wa { background: #efeae2; color: #111b21; max-width: min(400px, calc(100vw - 32px)); }
.wa-cab { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; padding: 10px 8px 10px 16px; background: #008069; color: #fff; }
.wa-avatar { width: 40px; height: 40px; display: grid; place-items: center; background: var(--accent); color: var(--accent-ink); font-weight: 500; border-radius: 50%; }
.wa-nombre { font-size: 1.05rem; font-weight: 500; letter-spacing: 0; line-height: 1.2; }
.wa-estado { font-size: 0.875rem; opacity: 0.85; }
.wa-aviso { margin: 10px 16px 0; padding: 8px 12px; background: #fff3c4; color: #4d3d00; font-size: 0.875rem; line-height: 1.4; }
.wa-chat { height: min(44vh, 320px); overflow-y: auto; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.wa-msg { max-width: 82%; padding: 7px 10px 18px; background: #fff; border-radius: 8px; font-size: 1rem; line-height: 1.4; position: relative; align-self: flex-start; }
.wa-msg--tu { background: #d9fdd3; align-self: flex-end; }
.wa-msg .wa-hora { position: absolute; right: 8px; bottom: 3px; font-size: 0.875rem; color: #667781; display: inline-flex; gap: 3px; align-items: center; transform: scale(0.8); transform-origin: right bottom; }
.wa-hora svg { width: 16px; height: 11px; color: #8696a0; transition: color 0.3s; }
.wa-hora.is-leido svg { color: #53bdeb; }
.wa-escribiendo { align-self: flex-start; padding: 10px 14px; background: #fff; border-radius: 8px; display: inline-flex; gap: 4px; }
.wa-escribiendo i { width: 6px; height: 6px; border-radius: 50%; background: #8696a0; animation: wa-punto 1s infinite; }
.wa-escribiendo i:nth-child(2) { animation-delay: 0.15s; } .wa-escribiendo i:nth-child(3) { animation-delay: 0.3s; }
@keyframes wa-punto { 0%, 60%, 100% { opacity: 0.3; } 30% { opacity: 1; } }
.wa-form { display: flex; gap: 8px; padding: 8px 12px 12px; }
.wa-form input { flex: 1; min-width: 0; min-height: 44px; padding: 8px 14px; border: 0; border-radius: 22px; background: #fff; color: #111b21; font: inherit; font-size: 16px; }
.wa-enviar { width: 44px; height: 44px; border: 0; border-radius: 50%; background: #008069; color: #fff; display: grid; place-items: center; cursor: pointer; }
.wa-enviar svg { width: 20px; height: 20px; }
.wa-real { display: block; margin: 0 12px 14px; padding: 12px; text-align: center; background: #111b21; color: #fff; text-decoration: none; font-weight: 500; font-size: 0.95rem; }

.dlg-aviso-demo { padding: 32px; }
.titular-dlg { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.02em; margin-bottom: 12px; }
.dlg-aviso-demo p { margin-bottom: 24px; }
.dlg-botones { display: flex; flex-wrap: wrap; gap: 12px; }

/* 20-inicio.css */
/* ---------- 1 · Portada: título en el cielo, frase en el horizonte, niebla encima ---------- */
.portada { position: relative; background: #b9c4cf; }
.portada.is-live { height: calc((var(--hold, 1.1) + 1) * 100svh); }
.portada-escena { position: relative; height: 100vh; height: 100svh; overflow: clip; }
.portada.is-live .portada-escena { position: sticky; top: 0; }
.portada-foto, .portada-foto img { position: absolute; inset: 0; width: 100%; height: 100%; }
.portada-foto img { object-fit: cover; object-position: 50% 60%; transform-origin: 50% 70%; }
.portada-niebla { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.portada-texto { position: absolute; inset: 0; color: var(--dark-ink); pointer-events: none; }
.portada-h1, .portada-frase { pointer-events: auto; } /* el texto siempre encima y «tocable»: solo la capa vacía deja pasar el ratón a la niebla */
.portada-h1 {
  position: absolute; left: var(--m); right: var(--m); top: max(112px, 13svh);
  font-size: var(--t-portada); line-height: 0.9; letter-spacing: -0.045em; font-weight: 300; text-align: center;
}
.portada-h1 span { display: block; }
.portada-frase {
  position: absolute; left: var(--m); right: var(--m); top: 50%;
  display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px;
  font-size: var(--t-entrada); line-height: 1.3; font-weight: 400;
}
.portada.is-live .portada-frase { opacity: calc(1 - var(--abre, 0) * 2.4); }
.portada.is-abierta .portada-frase { visibility: hidden; }
.portada-frase span:first-child { grid-column: 1 / 6; text-align: right; }
.portada-frase span:last-child { grid-column: 8 / 13; }
.portada-pista { position: absolute; left: 0; right: 0; bottom: 28px; text-align: center; font-size: var(--t-pequeno); color: var(--ink); font-weight: 500;
  transition: opacity 0.4s; }
.portada.is-pasada .portada-pista { opacity: 0; visibility: hidden; }
.portada-movil { display: none; }
/* La persiana de entrada: la foto se abre desde abajo y se asienta (una vez) */
@media (prefers-reduced-motion: no-preference) {
  .js .portada-foto { animation: persiana 1.1s var(--ease) both; }
  .js .portada-foto img { animation: asienta 1.6s var(--ease) both; }
  .js .portada-h1 span { animation: sube 0.9s var(--ease) both; }
  .js .portada-h1 span + span { animation-delay: 0.12s; }
  .js .portada-frase span { animation: sube 0.9s var(--ease) 0.35s both; }
  .js .portada-frase span + span { animation-delay: 0.47s; }
}
@keyframes persiana { from { clip-path: inset(100% 0 0 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes asienta { from { transform: scale(1.12); } to { transform: scale(1); } }
@keyframes sube { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
@media (max-aspect-ratio: 1/1) {
  .portada-h1 { top: 96px; }
  .portada-frase { top: calc(96px + 1.8 * var(--t-portada) + 28px); display: block; text-align: center; line-height: 1.35; }
  .portada-frase span { display: block; text-align: center !important; text-wrap: balance; }
  .portada-pista { display: none; }
  .portada-movil { display: block; position: absolute; left: 0; right: 0; bottom: 0; height: 96px; padding: 0 var(--m) calc(24px + env(safe-area-inset-bottom));
    background: rgba(28, 28, 28, 0.42); display: flex; align-items: flex-end; }
  .portada-movil .boton { width: 100%; }
}

/* ---------- 2 · Ceo significa niebla (sobre campo piedra) ---------- */
.intro {
  display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; align-items: start;
  padding: var(--hueco) var(--m); background: var(--field); color: var(--field-ink); overflow: clip;
}
.intro-h2 { grid-column: 1 / 9; grid-row: 1; position: relative; z-index: 2; font-size: var(--t-titular); margin-top: 6vh; }
.intro-h2 span { display: block; }
.intro-h2 span + span { padding-left: 34%; }
.intro-foto { grid-column: 7 / 13; grid-row: 1 / span 3; margin-right: calc(-1 * var(--m)); margin-top: 18vh; }
.intro-foto img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.intro-p { grid-column: 1 / 6; grid-row: 2; margin-top: 40px; max-width: 30ch; }
.intro-foto2 { grid-column: 1 / 4; grid-row: 3; margin-top: 72px; }
.intro-foto2 img { width: 100%; aspect-ratio: 9 / 10; object-fit: cover; }
.nombres { grid-column: 1 / -1; grid-row: 4; margin-top: var(--hueco); display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; }
.nombres-t { grid-column: 1 / 5; font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.01em; line-height: 1.3; }
.nombres-lista { grid-column: 5 / 13; list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.nombres-pista { grid-column: 5 / 13; margin-top: 24px; color: var(--field-muted); }
.nombre {
  display: grid; width: 100%; padding: 6px 0; background: none; border: 0; cursor: pointer; text-align: left; color: inherit;
  perspective: 900px; min-height: 48px;
}
.nombre > span { grid-area: 1 / 1; font-size: var(--t-titular); font-weight: 300; letter-spacing: -0.035em; line-height: 1.05;
  backface-visibility: hidden; transform-origin: 50% 50% -0.3em;
  transition: transform 0.55s var(--ease), visibility 0s linear 0.27s; } /* la cara de detrás se esconde de verdad a mitad del giro */
.nombre-sig { transform: rotateX(-90deg); visibility: hidden; }
.nombre-que { display: block; font-size: var(--t-cuerpo); letter-spacing: 0; color: var(--field-muted); margin-top: 6px; }
.nombre[aria-pressed="true"] .nombre-irl { transform: rotateX(90deg); visibility: hidden; }
.nombre[aria-pressed="true"] .nombre-sig { transform: rotateX(0deg); visibility: visible; }
.nombre:focus-visible { outline-offset: 6px; }
@media (prefers-reduced-motion: reduce) {
  .nombre > span { transition: none; transform: none !important; grid-area: auto; visibility: visible !important; }
  .nombre { grid-template-rows: auto auto; }
  .nombre-sig { font-size: var(--t-cuerpo) !important; }
}
@media (max-width: 900px) {
  .intro { padding-top: 96px; }
  .intro-h2 { grid-column: 1 / -1; margin-top: 0; }
  .intro-h2 span + span { padding-left: 20%; }
  .intro-foto { grid-column: 4 / -1; grid-row: 2; margin-top: -0.6em; }
  .intro-p { grid-column: 1 / -1; grid-row: 3; max-width: none; }
  .intro-foto2 { grid-column: 1 / 7; grid-row: 4; margin-top: 48px; }
  .nombres { grid-row: 5; }
  .nombres-t, .nombres-lista, .nombres-pista { grid-column: 1 / -1; }
  .nombres-lista { margin-top: 16px; }
}

/* ---------- 3 · Habitaciones: llavero + banda de paneles desiguales ---------- */
.habs { padding-block: var(--hueco) 0; }
.habs-cab { padding-inline: calc(var(--m) + 2 * var(--col)) var(--m); }
.habs-p { margin-top: 16px; max-width: 46ch; color: var(--muted); }
.llavero { position: relative; display: flex; margin-top: 56px; padding-top: 18px; }
.llavero-barra { position: absolute; left: 0; right: 0; top: 0; height: 14px; background: #3a2c22; }
.llave { flex: var(--f, 1) 1 0; display: flex; justify-content: center; padding: 0; background: none; border: 0; cursor: pointer; color: var(--ink);
  transition: flex-grow 0.5s var(--ease); }
.llavero .llave:nth-of-type(1) { --f: 5; } .llavero .llave:nth-of-type(2) { --f: 2; } .llavero .llave:nth-of-type(3) { --f: 3; } .llavero .llave:nth-of-type(4) { --f: 2; }
.llave-cuerpo { display: grid; justify-items: center; transform-origin: 50% 0; transform: rotate(var(--giro, 0deg)); will-change: transform; }
.llave-dib { width: 52px; height: 104px; margin-top: -12px; }
.llave-clavo { fill: #8a7b66; }
.llave-metal, .llave-anilla { fill: none; stroke: #c9ab6e; stroke-width: 3.2; stroke-linecap: round; }
.llave-chapa { display: grid; place-items: center; gap: 2px; width: 64px; padding: 14px 6px 12px; margin-top: -4px;
  background: #5b4130; color: var(--ink); border-radius: 0 0 32px 32px; }
.llave-nombre { font-size: var(--t-pequeno); font-weight: 500; letter-spacing: 0.01em; }
.llave-num { font-size: var(--t-pequeno); opacity: 0.7; }
.llave[aria-pressed="true"] .llave-chapa { background: var(--accent); color: var(--accent-ink); }
.llave:focus-visible { outline: none; }
.llave:focus-visible .llave-chapa { outline: 2px solid var(--accent); outline-offset: 4px; }
.banda { display: flex; height: 68svh; min-height: 420px; margin-top: 8px; }
.banda-panel { position: relative; flex: var(--f, 1) 1 0; min-width: 0; overflow: hidden; color: var(--ink); text-decoration: none;
  transition: flex-grow 0.5s var(--ease); }
.banda-panel--5 { --f: 5; } .banda-panel--3 { --f: 3; } .banda-panel--2 { --f: 2; }
.banda-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 0.8s var(--ease); }
.banda-nombre { position: absolute; left: 0; top: 0; padding: 18px 22px; background: rgba(20, 20, 20, 0.55); font-size: var(--t-entrada); line-height: 1.2; }
@media (hover: hover) and (pointer: fine) {
  .banda:hover .banda-panel:hover, .habs.is-llave-encima .banda-panel.is-encima { --f: 6; }
  .banda-panel:hover .banda-img { transform: scale(1.03); }
}
.habs .llave.is-encima, .habs .llave[aria-pressed="true"] { --f: 6; }
.banda-panel.is-elegido { --f: 6; }
.banda-panel.is-elegido .banda-nombre { background: var(--accent); color: var(--accent-ink); }
.ficha-hab { padding: 56px var(--m) var(--hueco); }
.ficha { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; row-gap: 12px; align-items: baseline; }
.ficha-nombre { grid-column: 1 / 5; font-size: var(--t-titular); }
.ficha-nombre .suave { font-size: var(--t-entrada); letter-spacing: -0.01em; }
.ficha-resumen { grid-column: 5 / 10; font-size: var(--t-entrada); line-height: 1.4; }
.ficha-datos { grid-column: 5 / 10; list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 24px; color: var(--muted); }
.ficha-precio { grid-column: 10 / 13; grid-row: 1; justify-self: end; color: var(--muted); }
.ficha-precio strong { font-weight: 400; font-size: var(--t-entrada); color: var(--ink); }
.ficha .enlace { grid-column: 10 / 13; justify-self: end; }
@media (max-width: 900px) {
  .habs-cab { padding-inline: var(--m); }
  .llavero { overflow-x: auto; padding-bottom: 8px; scrollbar-width: none; }
  .llave { flex: 0 0 25%; }
  .banda { flex-wrap: wrap; height: 84svh; }
  .banda-panel { flex: none !important; height: 50%; }
  .banda-panel:nth-child(1) { width: 64%; } .banda-panel:nth-child(2) { width: 36%; }
  .banda-panel:nth-child(3) { width: 36%; } .banda-panel:nth-child(4) { width: 64%; }
  .banda-nombre { font-size: var(--t-cuerpo); padding: 10px 14px; }
  .banda-panel:nth-child(odd) .banda-nombre { padding-left: var(--m); }
  .ficha { grid-template-columns: 1fr; }
  .ficha > * { grid-column: 1 / -1 !important; grid-row: auto !important; justify-self: start !important; }
}

/* ---------- 4 · Desayuno: la tarjeta de la puerta sobre la foto ---------- */
.desayuno-sec { position: relative; display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; padding: var(--hueco) var(--m); min-height: 100svh; }
.desayuno-fondo { position: absolute; inset: 0; }
.desayuno-fondo img { width: 100%; height: 100%; object-fit: cover; object-position: 30% 50%; }
.desayuno-sec .tarjeta-puerta { grid-column: 7 / 13; position: relative; }

/* ---------- 5 · Al monte desde la puerta ---------- */
.monte-sec { padding: var(--hueco) var(--m); }
.monte-h2 { padding: 24px 0 0 calc(4 * var(--col)); font-size: var(--t-portada); line-height: 0.95; letter-spacing: -0.045em; max-width: 14ch; box-sizing: content-box; }
.filas { list-style: none; margin: 120px 0 0; padding: 0 0 0 calc(4 * var(--col)); display: grid; gap: 96px; }
.fila { display: grid; grid-template-columns: minmax(0, 34ch) 1fr; gap: 48px; align-items: start; }
.fila-t { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.015em; line-height: 1.2; margin-bottom: 12px; }
.fila-foto { justify-self: end; }
.fila--1 .fila-foto img { width: 320px; aspect-ratio: 4 / 5; object-fit: cover; }
.fila--2 .fila-foto img { width: 440px; aspect-ratio: 3 / 2; object-fit: cover; }
.fila--3 .fila-foto img { width: 260px; aspect-ratio: 1; object-fit: cover; }
.fila--4 .fila-foto img { width: 380px; aspect-ratio: 4 / 3; object-fit: cover; }
@media (max-width: 900px) {
  .monte-h2 { padding-left: 0; padding-block: 24px; font-size: var(--t-titular); line-height: 1.02; letter-spacing: -0.035em; max-width: none; }
  .filas { padding-left: 0; gap: 64px; }
  .fila { grid-template-columns: 1fr; gap: 20px; }
  .fila-foto { justify-self: start; }
  .fila--1 .fila-foto, .fila--4 .fila-foto { width: 100%; } .fila--2 .fila-foto { width: 70%; justify-self: end; } .fila--3 .fila-foto { width: 55%; }
  .fila .fila-foto img { width: 100%; }
}

/* ---------- 6 · El Anillo: fotos alrededor de un título (un descanso) ---------- */
.galeria { position: relative; min-height: 112svh; margin-block: var(--hueco); }
.galeria-centro { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: min(30ch, 80vw); text-align: center; display: grid; gap: 16px; justify-items: center; z-index: 1; }
.galeria-h2 { font-size: var(--t-titular); }
.galeria-foto { position: absolute; width: clamp(170px, 15vw, 240px); will-change: transform; }
.galeria-foto img { width: 100%; aspect-ratio: 9 / 10; object-fit: cover; }
.gf-1 { left: 23%; top: 6%; } .gf-2 { left: 47%; top: 2%; } .gf-3 { left: 66%; top: 12%; } .gf-4 { left: 24%; top: 41%; }
.gf-5 { left: 64%; top: 44%; } .gf-6 { left: 30%; top: 75%; } .gf-7 { left: 52%; top: 80%; } .gf-8 { left: 70%; top: 76%; }
@media (max-width: 900px) {
  .galeria { min-height: auto; display: grid; grid-template-columns: 1fr 1fr; gap: 24px 16px; padding-inline: var(--m); }
  .galeria-centro { position: static; transform: none; grid-column: 1 / -1; order: 3; width: auto; margin-block: 32px; }
  .galeria-foto { position: static; width: 72%; }
  .galeria-foto:nth-of-type(even) { justify-self: end; }
  .gf-1 { order: 1; } .gf-2 { order: 2; } .gf-3, .gf-4, .gf-5 { order: 4; } .gf-6, .gf-7, .gf-8 { display: none; }
}

/* ---------- 7 · Precios como una carta ---------- */
.precios { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; padding: var(--hueco) var(--m); }
.precios-izq { grid-column: 1 / 4; display: grid; gap: 40px; align-content: start; }
.precios-foto img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.precios-lista { grid-column: 5 / 13; columns: 2; column-gap: 64px; }
.precios-grupo { break-inside: avoid; padding-bottom: 48px; }
.precios-grupo-t { font-size: var(--t-entrada); font-weight: 500; letter-spacing: -0.01em; line-height: 1.2; }
.precios-grupo ul { list-style: none; margin: 18px 0 0; padding: 0; display: grid; gap: 18px; }
.precios-grupo li { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; }
.pl-nombre { font-size: var(--t-cuerpo); }
.pl-desc { display: block; color: var(--muted); font-size: var(--t-pequeno); max-width: 36ch; }
.pl-precio { font-variant-numeric: tabular-nums; white-space: nowrap; }
.precios-nota, .precios-botones { break-inside: avoid; }
.precios-botones { display: flex; align-items: center; gap: 24px; margin-top: 24px; flex-wrap: wrap; }
@media (max-width: 900px) {
  .precios-izq, .precios-lista { grid-column: 1 / -1; }
  .precios-foto { width: 60%; }
  .precios-lista { columns: 1; margin-top: 48px; }
}

/* ---------- 8 · Antes de venir ---------- */
.faq { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; padding: var(--hueco) var(--m) 80px; background: var(--surface); }
.faq-izq { grid-column: 1 / 6; display: grid; gap: 40px; align-content: start; }
.faq-datos { display: grid; gap: 6px; margin: 0; }
.faq-datos div { display: flex; gap: 12px; }
.faq-datos dt { color: var(--muted); min-width: 9ch; }
.faq-datos dd { margin: 0; }
.faq-lista { display: grid; gap: 28px; }
.faq-item summary { position: relative; cursor: pointer; list-style: none; padding-right: 36px; font-size: var(--t-cuerpo); font-weight: 500; min-height: 44px; display: flex; align-items: center; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: ''; position: absolute; right: 6px; top: 50%; width: 10px; height: 10px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
  transform: translateY(-70%) rotate(45deg); transition: transform 0.3s var(--ease); }
.faq-item[open] summary::after { transform: translateY(-30%) rotate(-135deg); }
.faq-item p { margin-top: 8px; color: var(--muted); max-width: 52ch; }
.faq-botones { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
.faq-fotos { grid-column: 7 / 13; position: relative; margin-top: calc(-1 * var(--hueco) - 40px); }
.faq-alta img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.faq-cuadrada { position: absolute; left: -40px; bottom: -40px; width: 34%; }
.faq-cuadrada img { width: 100%; aspect-ratio: 1; object-fit: cover; }
@media (max-width: 900px) {
  .faq-izq, .faq-fotos { grid-column: 1 / -1; }
  .faq-fotos { order: -1; margin: 0 0 80px; }
  .faq-alta img { aspect-ratio: 4 / 5; }
  .faq-cuadrada { left: auto; right: 0; width: 38%; }
}

/* ---------- 9 · Tarjeta de visita sobre el lago ---------- */
.visita { position: relative; height: 100svh; min-height: 640px; }
.visita-foto, .visita-foto img { position: absolute; inset: 0; width: 100%; height: 100%; }
.visita-foto img { object-fit: cover; }
.visita-tarjeta { position: absolute; top: 96px; right: var(--m); width: min(400px, calc(100vw - 2 * var(--m))); padding: 32px 32px 0; display: grid; gap: 16px;
  background: var(--ink); color: var(--bg); }
.visita-t { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.02em; }
.visita-horas { display: grid; gap: 4px; margin: 0; }
.visita-horas div { display: flex; justify-content: space-between; gap: 12px; }
.visita-horas dt { color: #55524c; }
.visita-horas dd { margin: 0; font-variant-numeric: tabular-nums; }
.visita-contacto a { color: inherit; }
.visita-reservar { margin: 8px -32px 0; min-height: 56px; }
@media (max-width: 900px) {
  .visita { height: auto; min-height: 0; padding-bottom: 32px; }
  .visita-foto { position: relative; height: 70svh; }
  .visita-tarjeta { position: relative; top: auto; right: auto; margin: -80px var(--m) 0; width: auto; }
}

/* 30-paginas.css */
/* Ceo · páginas interiores: cabeceras, habitaciones, desayuno, monte, Anillo, reservar, vale, contacto, legal, panel y 404. */

/* ---------- Cabecera de página ---------- */
.cabecera-pg { display: grid; gap: 28px; justify-items: start; padding-top: calc(72px + clamp(64px, 9vw, 128px)); padding-bottom: clamp(72px, 8vw, 112px); }
.cabecera-pg .titular { max-width: 14ch; }
.cabecera-pg-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 28px; }
/* Sin foto: el título manda, a tamaño grande, y la entrada cierra el lado derecho */
@media (min-width: 900px) {
  .cabecera-pg:not(.cabecera-pg--foto) { grid-template-columns: repeat(12, 1fr); column-gap: 24px; row-gap: 24px; align-items: end; }
  .cabecera-pg:not(.cabecera-pg--foto) > .titular { grid-column: 1 / 8; grid-row: 1 / span 3; align-self: end; max-width: none;
    font-size: var(--t-portada); line-height: 0.95; letter-spacing: -0.045em; }
  .cabecera-pg:not(.cabecera-pg--foto) > :not(.titular) { grid-column: 8 / 13; }
}
.cabecera-pg--foto { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: end; gap: 0; padding: 72px 0 0; }
.cabecera-pg-texto { display: grid; gap: 28px; justify-items: start; padding-block: clamp(64px, 8vw, 120px); align-self: center; }
.cabecera-pg-foto { height: calc(100svh - 72px); min-height: 520px; max-height: 960px; }
.cabecera-pg-foto img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 899px) {
  .cabecera-pg { padding-top: calc(64px + 56px); }
  .cabecera-pg--foto { grid-template-columns: 1fr; padding-top: 64px; }
  .cabecera-pg-texto { padding-block: 56px 48px; }
  .cabecera-pg-foto { height: auto; min-height: 0; padding-inline: var(--m); }
  .cabecera-pg-foto img { aspect-ratio: 4 / 3; height: auto; }
}

/* ---------- Franja de cuatro fotos ---------- */
.franja { display: grid; grid-template-columns: 3fr 2fr 4fr 2fr; gap: 10px; align-items: end; padding: var(--hueco) var(--m) 0; }
.franja-foto { align-self: end; }
.franja-foto img { width: 100%; object-fit: cover; }
.franja-foto--1 img { aspect-ratio: 4 / 5; }
.franja-foto--2 img { aspect-ratio: 1; }
.franja-foto--3 img { aspect-ratio: 16 / 11; }
.franja-foto--4 img { aspect-ratio: 3 / 4; }
@media (max-width: 899px) {
  .franja { grid-template-columns: 1fr 1fr; }
  .franja-foto--3 { grid-column: 1 / -1; order: -1; }
}

/* ---------- Habitaciones ---------- */
.indice-llaves { width: 100%; margin-top: 20px; }
.llavero--indice { margin-top: 0; max-width: 520px; }
.llavero--indice .llave { --f: 1 !important; }
.hab { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; padding: var(--hueco) var(--m) 0; scroll-margin-top: 72px; }
.hab-grande { grid-column: 1 / -1; margin-inline: calc(-1 * var(--m)); }
.hab-grande img { width: 100%; height: 82svh; min-height: 460px; object-fit: cover; }
.hab-cuerpo { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; row-gap: 28px; padding-top: 72px; }
.hab-t { grid-column: 1 / 6; }
.hab-t .suave { display: block; font-size: var(--t-entrada); letter-spacing: -0.01em; margin-top: 10px; }
.hab-texto { grid-column: 7 / 13; }
.hab-datos { grid-column: 7 / 13; display: grid; grid-template-columns: 1fr 1fr; gap: 20px 32px; margin: 12px 0 0; }
.hab-datos dt { color: var(--muted); font-size: var(--t-pequeno); }
.hab-datos dd { margin: 2px 0 0; }
.hab-precios { grid-column: 7 / 13; display: grid; gap: 14px; justify-items: start; margin-top: 20px; padding: 28px; background: var(--surface); }
.hab-precios ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; width: 100%; }
.hab-precios li { display: flex; justify-content: space-between; gap: 16px; }
.hab-precios .boton { margin-top: 10px; }
.hab-par { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; margin-top: 96px; align-items: start; }
.hab-par-a { grid-column: 1 / 7; }
.hab-par-a img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.hab-par-b { grid-column: 8 / 11; margin-top: 30%; }
.hab-par-b img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.hab:nth-of-type(even) .hab-par-a { grid-column: 6 / 13; grid-row: 1; }
.hab:nth-of-type(even) .hab-par-b { grid-column: 2 / 5; grid-row: 1; }
.hab-todas { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; align-items: center; padding-block: var(--hueco); }
.hab-todas-foto { grid-column: 1 / 5; }
.hab-todas-foto img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.hab-todas-texto { grid-column: 6 / 13; display: grid; gap: 28px; justify-items: start; }
.hab-todas-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; font-size: var(--t-entrada); line-height: 1.3; }
@media (max-width: 899px) {
  .hab { scroll-margin-top: 64px; }
  .hab-todas-foto { grid-column: 1 / 9; }
  .hab-todas-texto { grid-column: 1 / -1; margin-top: 48px; }
  .hab-grande img { height: 56svh; min-height: 300px; }
  .hab-cuerpo { padding-top: 40px; }
  .hab-cuerpo > * { grid-column: 1 / -1 !important; }
  .hab-datos { grid-template-columns: 1fr 1fr; }
  .hab-precios { padding: 22px; }
  .hab-par { margin-top: 56px; }
  .hab-par-a, .hab:nth-of-type(even) .hab-par-a { grid-column: 1 / 10; grid-row: 1; }
  .hab-par-b, .hab:nth-of-type(even) .hab-par-b { grid-column: 7 / 13; grid-row: 2; margin-top: -48px; }
}

/* ---------- Desayuno ---------- */
.desayuno-sec--pagina { margin-top: 0; }
.alergenos { padding-top: 28px; max-width: calc(60ch + 2 * var(--m)); margin-left: auto; text-align: right; }
.dos-col { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; align-items: center; padding-block: var(--hueco) 0; }
.dos-col-foto { grid-column: 1 / 7; }
.dos-col-foto img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.dos-col-texto { grid-column: 8 / 13; display: grid; gap: 24px; justify-items: start; }
.dos-col--al-reves .dos-col-texto { grid-column: 1 / 6; grid-row: 1; }
.dos-col--al-reves .dos-col-foto { grid-column: 7 / 13; grid-row: 1; }
@media (max-width: 899px) {
  .alergenos { text-align: left; margin-left: 0; }
  .dos-col > *, .dos-col--al-reves > * { grid-column: 1 / -1 !important; grid-row: auto !important; }
  .dos-col-texto { margin-top: 40px; }
  .dos-col--al-reves .dos-col-foto { order: -1; }
}

/* ---------- El monte ---------- */
.monte-qs { padding-block: 24px 0; }
.rutas { padding-block: var(--hueco) 0; }
.rutas-lista { list-style: none; margin: 72px 0 40px; padding: 0; display: grid; gap: 128px; }
.ruta { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; align-items: start; scroll-margin-top: 96px; }
.ruta-foto { grid-column: 1 / 6; }
.ruta-foto img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.ruta-texto { grid-column: 7 / 13; display: grid; gap: 14px; }
.ruta:nth-child(even) .ruta-foto { grid-column: 8 / 13; grid-row: 1; }
.ruta:nth-child(even) .ruta-texto { grid-column: 1 / 7; grid-row: 1; }
.ruta-t { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.015em; line-height: 1.2; }
.ruta-perfil { width: 100%; max-width: 560px; height: auto; margin: 8px 0 4px; }
.seguridad { margin-top: clamp(80px, 8vw, 120px); padding-block: clamp(80px, 8vw, 120px); background: var(--field); color: var(--field-ink); }
.seguridad-dentro { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; row-gap: 28px; align-items: start; }
.seguridad-dentro .titular { grid-column: 1 / 6; }
.seguridad-lista { grid-column: 7 / 13; list-style: none; margin: 0; padding: 0; display: grid; gap: 24px; font-size: var(--t-entrada); line-height: 1.35; }
.seguridad-dentro .enlace { grid-column: 7 / 13; justify-self: start; }
.monte-casa { padding-block: clamp(80px, 8vw, 120px) 0; }
.filas--pagina { padding-left: calc(4 * var(--col)); margin-top: 80px; }
@media (max-width: 899px) {
  .rutas-lista { gap: 88px; }
  .ruta > *, .ruta:nth-child(even) > * { grid-column: 1 / -1 !important; grid-row: auto !important; }
  .ruta-foto img { aspect-ratio: 4 / 3; }
  .ruta-texto { margin-top: 28px; }
  .seguridad-dentro > * { grid-column: 1 / -1 !important; }
  .filas--pagina { padding-left: 0; }
}

/* ---------- El Anillo (anillo.js) ---------- */
.anillo { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; padding-block: 24px 0; align-items: start; }
.anillo-mapa { grid-column: 1 / 8; position: sticky; top: 96px; display: grid; gap: 14px; align-content: start; }
.anillo-t { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.015em; }
.anillo-svg { width: 100%; height: auto; max-height: calc(100svh - 300px); overflow: visible; }
.anillo-fondo { fill: none; stroke: #3b3c39; stroke-width: 5; stroke-linejoin: round; }
.anillo-trazo { fill: none; stroke: var(--accent); stroke-width: 6; stroke-linejoin: round; stroke-linecap: round; }
.anillo.is-vivo .anillo-trazo { transition: stroke-dashoffset var(--anillo-dur, 900ms) var(--ease); }
.anillo-pueblo circle { fill: var(--bg); stroke: #6f706b; stroke-width: 3; transform-box: fill-box; transform-origin: center; transition: fill 0.3s, stroke 0.3s, transform 0.4s var(--ease); }
.anillo-pueblo text { fill: var(--muted); font-size: var(--t-entrada); font-family: inherit; transition: fill 0.3s; }
.anillo-pueblo.is-visto circle { fill: var(--accent); stroke: var(--accent); }
.anillo-pueblo.is-visto text { fill: var(--ink); }
.anillo-pueblo.is-actual circle { transform: scale(1.6); }
.anillo-casa circle { fill: var(--ink); }
.anillo-casa text { fill: var(--ink); font-size: var(--t-entrada); font-weight: 500; font-family: inherit; }
.anillo-km { display: grid; gap: 6px; justify-items: start; }
.anillo-km-n { font-size: var(--t-titular); font-weight: 300; letter-spacing: -0.035em; line-height: 1; font-variant-numeric: tabular-nums; }
.anillo-km-t { color: var(--muted); }
.anillo-lista { grid-column: 9 / 13; list-style: none; margin: 0; padding: 0 0 18svh; }
.anillo-item { min-height: 64svh; display: grid; gap: 18px; align-content: center; scroll-margin-top: 96px; }
.anillo-foto img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.anillo-foto figcaption { margin-top: 8px; }
.anillo-texto { display: grid; gap: 8px; }
.anillo-nombre { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.015em; line-height: 1.2; transition: color 0.3s; }
.anillo-item.is-actual .anillo-nombre { color: var(--accent); }
.anillo-dist { color: var(--muted); font-variant-numeric: tabular-nums; }
.consejo { position: relative; margin-top: var(--hueco); min-height: 92svh; }
.consejo-foto, .consejo-foto img { position: absolute; inset: 0; width: 100%; height: 100%; }
.consejo-foto img { object-fit: cover; }
.consejo-tarjeta { position: absolute; left: var(--m); bottom: 72px; width: min(440px, calc(100vw - 2 * var(--m))); padding: 32px; display: grid; gap: 14px;
  background: var(--ink); color: var(--bg); }
@media (max-width: 899px) {
  .anillo-mapa, .anillo-lista { grid-column: 1 / -1; }
  .anillo-mapa { position: static; }
  .anillo-svg { max-height: none; }
  .anillo-pueblo text, .anillo-casa text { font-size: var(--t-titular); }
  .anillo-lista { padding: 64px 0 0; display: grid; gap: 64px; }
  .anillo-item { min-height: 0; grid-template-columns: 2fr 3fr; align-items: start; gap: 18px; }
  .consejo { min-height: 0; }
  .consejo-foto { position: relative; height: 64svh; }
  .consejo-tarjeta { position: relative; left: auto; bottom: auto; margin: -72px var(--m) 0; width: auto; }
}
@media (max-width: 520px) { .anillo-item { grid-template-columns: 1fr; } }

/* ---------- Formularios ---------- */
.r-campo { display: grid; gap: 8px; margin-top: 20px; font-weight: 500; }
.r-campo input, .r-campo select, .r-campo textarea {
  width: 100%; min-height: 50px; padding: 12px 14px; background: var(--surface); color: var(--ink); border: 1px solid #4f504c; border-radius: 0;
  font: inherit; font-weight: 400; font-size: max(16px, var(--t-cuerpo)); }
.r-campo textarea { resize: vertical; min-height: 96px; }
.r-campo input:focus, .r-campo select:focus, .r-campo textarea:focus { outline: 2px solid var(--accent); outline-offset: 0; border-color: transparent; }
.r-campo--corto { max-width: 240px; }
.resumen-error { color: #f2a898; font-weight: 500; }
.campo-trampa { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.enlace-boton { background: none; border: 0; padding: 10px 0; cursor: pointer; text-decoration: underline; text-underline-offset: 0.22em; font-weight: 500; color: inherit; }
.r-paso { margin-bottom: 80px; }
.r-paso-t { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.015em; margin-bottom: 20px; }

/* ---------- Reservar ---------- */
.reserva { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; align-items: start; padding-bottom: 24px; }
.reserva-form { grid-column: 1 / 8; }
.reserva-resumen { grid-column: 9 / 13; position: sticky; top: 96px; }
.resumen-dentro { display: grid; gap: 18px; padding: 32px; background: var(--field); color: var(--field-ink); }
.resumen-t { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.015em; }
.resumen-nada { color: var(--field-muted) !important; }
.resumen-lineas { display: grid; gap: 12px; margin: 0; }
.resumen-lineas div { display: grid; gap: 2px; }
.resumen-lineas dt { font-weight: 500; }
.resumen-lineas dd { margin: 0; color: var(--field-muted); }
.resumen-total { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding-top: 6px; }
.resumen-total strong { font-size: var(--t-titular); font-weight: 300; letter-spacing: -0.035em; line-height: 1; font-variant-numeric: tabular-nums; }
.reserva-resumen .resumen-error { color: #7d2418; }
.resumen-enviar { width: 100%; }
.r-fechas-sinjs { display: flex; flex-wrap: wrap; gap: 20px; }
.r-fechas-sinjs label { display: grid; gap: 8px; font-weight: 500; }
.r-fechas-sinjs input { min-height: 50px; padding: 10px 12px; background: var(--surface); color: var(--ink); border: 1px solid #4f504c; font: inherit; color-scheme: dark; }
.cal-cab { display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 48px; }
.cal-estado { color: var(--muted); }
.cal-estado.is-aviso { color: var(--ink); font-weight: 500; }
.cal-flechas { display: flex; gap: 8px; }
.cal-flecha { width: 48px; height: 48px; display: grid; place-items: center; background: var(--surface); border: 0; cursor: pointer; color: var(--ink); transition: background-color 0.2s, transform 0.18s var(--ease); }
.cal-flecha svg { width: 22px; height: 22px; }
.cal-flecha:hover { background: var(--surface-2); }
.cal-flecha:active { transform: scale(0.94); }
.cal-flecha:disabled { opacity: 0.35; cursor: default; }
.cal-meses { display: grid; grid-template-columns: repeat(var(--meses, 2), minmax(0, 1fr)); gap: 40px; margin-top: 16px; }
.cal-mes-t { font-weight: 500; margin-bottom: 10px; }
.cal-mes-t::first-letter { text-transform: uppercase; }
.cal-tabla { width: 100%; border-collapse: separate; border-spacing: 0 4px; table-layout: fixed; }
.cal-tabla th { font-size: var(--t-pequeno); font-weight: 400; color: var(--muted); padding-bottom: 6px; text-transform: uppercase; }
.cal-tabla td { padding: 0; }
.cal-dia { width: 100%; aspect-ratio: 1; min-height: 40px; max-height: 56px; display: grid; place-items: center; background: none; border: 0; cursor: pointer;
  color: var(--ink); font-variant-numeric: tabular-nums; transition: background-color 0.15s, color 0.15s, transform 0.15s var(--ease); }
.cal-dia:hover { background: var(--surface-2); }
.cal-dia:active { transform: scale(0.94); }
.cal-dia[aria-disabled="true"] { cursor: default; }
.cal-dia[aria-disabled="true"]:hover { background: none; }
.cal-dia--ocupado { color: #8a8b86; text-decoration: line-through; text-decoration-thickness: 1px; }
.cal-dia--cerrado, .cal-dia--pasado { color: #6f706b; }
.cal-dia.is-posible { color: var(--ink); text-decoration: none; }
.cal-dia.en-previo { background: var(--surface-2); }
.cal-dia.en-rango { background: #2f3a2f; }
.cal-dia.is-elegido { background: var(--accent); color: var(--accent-ink); font-weight: 500; }
.cal-dia.is-hoy:not(.is-elegido) { text-decoration: underline; text-underline-offset: 0.3em; }
.cal-dia.is-bloqueado { background: #4a3527; color: var(--ink); text-decoration: line-through; }
.cal-leyenda { list-style: none; margin: 18px 0 10px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 22px; color: var(--muted); }
.cal-ley { display: inline-flex; align-items: center; gap: 8px; }
.cal-ley::before { content: ''; width: 14px; height: 14px; background: var(--ink); }
.cal-ley--ocupado::before { background: #8a8b86; }
.cal-ley--cerrado::before { background: #4f504c; }
.r-habs { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.r-hab { position: relative; display: grid; grid-template-columns: 88px 1fr; grid-template-rows: auto auto; column-gap: 16px; row-gap: 4px; align-items: start;
  padding: 12px; background: var(--surface); cursor: pointer; transition: background-color 0.2s, color 0.2s, transform 0.18s var(--ease); }
.r-hab:active { transform: scale(0.98); }
.r-hab input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.r-hab-foto { grid-row: 1 / span 2; }
.r-hab-foto img { width: 88px; aspect-ratio: 1; object-fit: cover; }
.r-hab-texto { display: grid; gap: 2px; }
.r-hab-nombre { font-weight: 500; }
.r-hab-precio { color: var(--muted); align-self: end; font-variant-numeric: tabular-nums; }
.r-hab:hover { background: var(--surface-2); }
.r-hab:has(input:checked) { background: var(--accent); color: var(--accent-ink); }
.r-hab:has(input:checked) .suave, .r-hab:has(input:checked) .r-hab-precio { color: var(--accent-ink); }
.r-hab:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 3px; }
.r-extras { display: grid; gap: 2px; }
.r-extra .tarjeta-check { box-shadow: none; border: 2px solid var(--ink); }
.r-extra .tarjeta-check::after { border-color: var(--accent-ink); }
.r-extra input:checked + .tarjeta-check { background: var(--accent); border-color: var(--accent); }
.r-extra .tarjeta-desc { color: var(--muted); font-size: var(--t-cuerpo); }
.r-nota { color: var(--muted); max-width: 60ch; }
.r-desayuno { margin-top: 28px; padding: 22px 24px; background: var(--surface); display: grid; gap: 6px; justify-items: start; }
.r-desayuno-t { font-weight: 500; }
.reserva-hecha { grid-column: 1 / -1; display: grid; gap: 24px; justify-items: start; max-width: 920px; padding-bottom: 24px; outline: none; }
.hecha-mensaje { margin: 0; padding: 24px; width: 100%; background: var(--surface); white-space: pre-wrap; font: inherit; font-size: var(--t-pequeno); line-height: 1.6; }
.hecha-postal-t { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.015em; margin-top: 24px; }
.hecha-postal { width: 100%; max-width: 900px; aspect-ratio: 3 / 2; background: var(--surface); }
.hecha-botones { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; }
.hecha-botones [aria-disabled="true"] { opacity: 0.5; pointer-events: none; }
@media (prefers-reduced-motion: no-preference) {
  .reserva.is-hecha .reserva-hecha > * { animation: sube 0.7s var(--ease) both; }
  .reserva.is-hecha .reserva-hecha > :nth-child(2) { animation-delay: 0.06s; }
  .reserva.is-hecha .reserva-hecha > :nth-child(3) { animation-delay: 0.12s; }
  .reserva.is-hecha .reserva-hecha > :nth-child(5) { animation-delay: 0.3s; }
}
@media (max-width: 899px) {
  .reserva-form, .reserva-resumen { grid-column: 1 / -1; }
  .reserva-resumen { position: static; margin-top: -24px; }
  .r-habs { grid-template-columns: 1fr; }
  .resumen-dentro { padding: 24px; }
}

/* ---------- Vale regalo ---------- */
.vale { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; align-items: start; padding-bottom: 24px; }
.vale-vista { grid-column: 1 / 7; position: sticky; top: 112px; }
.vale-form { grid-column: 8 / 13; display: grid; gap: 4px; scroll-margin-top: 96px; }
.vale-form .r-paso { margin-bottom: 20px; }
.vale-form .boton { justify-self: start; margin-top: 24px; }
.vale-form .pequeno { margin-top: 8px; }
.vale .reserva-hecha { grid-column: 8 / 13; }
.vale-tarjeta { --pad: clamp(24px, 3vw, 40px); aspect-ratio: 1.58; display: grid; grid-template-columns: minmax(0, 1fr) 34%; grid-template-rows: auto auto 1fr auto auto auto;
  column-gap: 28px; row-gap: 6px; padding: var(--pad); background: var(--field); color: var(--field-ink); overflow: hidden; }
.vale-tarjeta > * { grid-column: 1; }
.vale-foto { grid-column: 2 !important; grid-row: 1 / -1; margin: calc(-1 * var(--pad)) calc(-1 * var(--pad)) calc(-1 * var(--pad)) 0; }
.vale-foto img { width: 100%; height: 100%; object-fit: cover; object-position: 40% 50%; }
.vale-marca { font-size: var(--t-titular); font-weight: 300; letter-spacing: -0.035em; line-height: 1; }
.vale-lugar { color: var(--field-muted); }
.vale-que { align-self: end; font-size: var(--t-entrada); font-weight: 500; letter-spacing: -0.015em; line-height: 1.2; }
.vale-para { min-height: 1.55em; }
.vale-frase { font-size: var(--t-entrada); font-weight: 300; line-height: 1.25; }
.vale-frase.is-ejemplo { color: var(--field-muted); }
.vale-pie { color: var(--field-muted); margin-top: 10px; }
.vale-como { margin-top: 56px; display: grid; gap: 16px; }
.vale-como-t { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.015em; line-height: 1.2; }
.vale-como .vale-pasos { font-size: var(--t-cuerpo); line-height: 1.55; max-width: 52ch; gap: 10px; }
@media (max-width: 899px) {
  .vale-vista, .vale-form, .vale .reserva-hecha { grid-column: 1 / -1; }
  .vale-vista { position: static; margin-bottom: 48px; }
  .vale-tarjeta { aspect-ratio: auto; min-height: 300px; }
}

/* ---------- Cómo llegar ---------- */
.llegar { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; row-gap: 72px; padding-block: var(--hueco) 0; }
.llegar-col { display: grid; gap: 24px; align-content: start; }
.llegar-col:first-child { grid-column: 1 / 6; }
.llegar-col:last-child { grid-column: 7 / 13; }
.tabla-distancias { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.tabla-distancias th, .tabla-distancias td { padding: 14px 16px; text-align: left; font-weight: 400; }
.tabla-distancias thead th { color: var(--muted); font-size: var(--t-pequeno); padding-block: 0 10px; }
.tabla-distancias td { text-align: right; }
.tabla-distancias thead th:not(:first-child) { text-align: right; }
.tabla-distancias tbody tr:nth-child(odd) { background: var(--surface); }
.lista-pasos { margin: 0; padding-left: 1.2em; display: grid; gap: 14px; font-size: var(--t-entrada); line-height: 1.35; }
.lista-enlaces { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 28px; }
.escribe { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; row-gap: 40px; padding-block: var(--hueco); align-items: start; }
.escribe-texto { grid-column: 1 / 6; display: grid; gap: 20px; justify-items: start; }
.escribe-form, .escribe .reserva-hecha { grid-column: 7 / 13; }
.escribe-form { display: grid; gap: 4px; }
.escribe-form .boton { justify-self: start; margin-top: 24px; }
.escribe-form .pequeno { margin-top: 8px; }
.faq--pagina .faq-fotos { margin-top: 0; }
@media (max-width: 899px) {
  .llegar-col:first-child, .llegar-col:last-child, .escribe-texto, .escribe-form, .escribe .reserva-hecha { grid-column: 1 / -1; }
}

/* ---------- Legal ---------- */
.legal { padding-bottom: 24px; }
.legal-sec { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; row-gap: 16px; padding-block: 48px; scroll-margin-top: 96px; }
.legal-t { grid-column: 1 / 5; font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.015em; line-height: 1.2; }
.legal-sec p { grid-column: 6 / 13; max-width: 68ch; }
.legal-sec p + p { margin-top: 0; }
@media (max-width: 899px) { .legal-t, .legal-sec p { grid-column: 1 / -1; } .legal-sec { padding-block: 32px; } }

/* ---------- Panel de la casa ---------- */
.panel { padding-bottom: 24px; }
.panel-portada { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; row-gap: 64px; align-items: start; }
.panel-entrar { grid-column: 1 / 5; display: grid; gap: 12px; justify-items: start; max-width: 420px; }
.panel-que { grid-column: 7 / 13; display: grid; gap: 20px; }
.panel-que-lista { font-size: var(--t-cuerpo); line-height: 1.55; }
.panel-que-foto { margin-top: 16px; }
.panel-que-foto img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
@media (max-width: 899px) { .panel-entrar, .panel-que { grid-column: 1 / -1; } }
.panel-entrar .r-campo { margin-top: 0; width: 100%; }
.panel-salir { text-align: right; }
.panel-bloque { margin-top: 72px; display: grid; gap: 16px; }
.panel-t { font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.015em; }
.panel-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.panel-item { display: grid; gap: 6px; padding: 20px 24px; background: var(--surface); }
.panel-item-t { font-weight: 500; }
.panel-item.is-confirmada .panel-item-t { color: var(--accent); }
.panel-item-botones { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; margin-top: 6px; }
.cal--panel { max-width: 860px; }
.tabla-precios { border-collapse: collapse; }
.tabla-precios th, .tabla-precios td { padding: 8px 12px 8px 0; text-align: left; font-weight: 400; }
.tabla-precios thead th { color: var(--muted); font-size: var(--t-pequeno); }
.tabla-precios input { width: 110px; min-height: 48px; padding: 10px 12px; background: var(--surface); color: var(--ink); border: 1px solid #4f504c; font: inherit; font-size: 16px; }
.panel-botones { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; margin-top: 20px; }
@media (max-width: 600px) { .tabla-precios input { width: 76px; } }

/* ---------- 404: la oveja perdida ---------- */
.pg-404 .cab-reservar--siempre { display: inline-flex; }
.perdida { position: relative; min-height: 100svh; display: grid; align-content: start; overflow: clip; }
.perdida-foto, .perdida-foto img { position: absolute; inset: 0; width: 100%; height: 100%; }
.perdida-foto img { object-fit: cover; object-position: 50% 60%; }
.perdida-texto { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; padding-top: 112px; max-width: 1100px; }
.perdida-lado { display: grid; gap: 18px; justify-items: start; align-content: start; padding: 32px; background: var(--bg); }
.perdida-lado .titular { max-width: 12ch; font-weight: 300; line-height: 1.02; letter-spacing: -0.035em; text-wrap: balance; }
.oveja-carril { position: absolute; left: 0; right: 0; bottom: 6svh; height: 96px; z-index: 2; }
.oveja { position: absolute; left: 0; bottom: 0; width: 132px; height: 88px; margin-left: -66px; cursor: pointer; will-change: transform; }
.oveja-cuerpo { fill: #f1f1ef; }
.oveja-cabeza, .oveja-patas { fill: #1e2228; }
.oveja-ojo { fill: #f1f1ef; }
.oveja-patas rect { transform-box: fill-box; transform-origin: 50% 0; }
.oveja.is-andando .oveja-patas rect:nth-child(odd) { animation: pata 0.5s ease-in-out infinite alternate; }
.oveja.is-andando .oveja-patas rect:nth-child(even) { animation: pata 0.5s ease-in-out infinite alternate-reverse; }
.oveja-cabeza { transform-box: fill-box; transform-origin: 0 50%; transition: transform 0.4s var(--ease); }
.oveja.is-mira .oveja-cabeza { transform: rotate(14deg) translateY(2px); }
.oveja.is-quieta { left: 50%; }
@keyframes pata { from { transform: rotate(-14deg); } to { transform: rotate(14deg); } }
.pie--mini { min-height: 0; display: grid; gap: 12px; padding: 32px var(--m); }
@media (max-width: 760px) {
  .perdida-texto { grid-template-columns: 1fr; padding-top: 88px; }
  .perdida-lado { padding: 24px; }
}

/* ---------- Imprimir (la reserva pedida) ---------- */
@media print {
  .cab, .menu-movil, .pie, .franja, .cabecera-pg, .hecha-botones, dialog, .saltar { display: none !important; }
  body { background: #fff; color: #000; }
  .reserva-hecha { color: #000; }
  .hecha-mensaje { background: none; padding: 0; font-size: 12pt; }
  .hecha-postal { max-width: 16cm; }
}

/* 40-efectos.css */
/* Botones de elegir (radio) en forma de ficha */
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip-radio { position: relative; display: inline-flex; }
.chip-radio input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.chip-radio span { display: inline-flex; align-items: center; min-height: 44px; padding: 10px 16px; box-shadow: inset 0 0 0 1px #5d5e5a;
  font-size: var(--t-pequeno); font-weight: 500; transition: background-color 0.2s, color 0.2s, box-shadow 0.2s, transform 0.18s var(--ease); }
.chip-radio:hover span { box-shadow: inset 0 0 0 1px var(--ink); }
.chip-radio input:checked + span { background: var(--accent); color: var(--accent-ink); box-shadow: none; }
.chip-radio input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 3px; }
.chip-radio:active span { transform: scale(0.97); }
.chips--papel .chip-radio span { box-shadow: inset 0 0 0 1px #8b877e; color: var(--field-ink); }
.chips--papel .chip-radio:hover span { box-shadow: inset 0 0 0 1px var(--field-ink); }
.chips--papel .chip-radio input:checked + span { background: var(--field-ink); color: var(--ink); }
fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
legend { padding: 0; }

/* ---------- La tarjeta del desayuno (tarjeta-desayuno.js) ---------- */
.tarjeta-puerta { perspective: 1600px; max-width: 640px; }
.tarjeta-giro { display: grid; transform-style: preserve-3d; transform-origin: 50% 40px; transition: transform 0.8s var(--ease); }
.tarjeta-cara {
  grid-area: 1 / 1; position: relative; padding: 72px 56px 64px; background: var(--ink); color: var(--field-ink);
  backface-visibility: hidden; -webkit-backface-visibility: hidden;
  /* bordes festoneados arriba y abajo, como una tarjeta impresa: tres capas de máscara SVG, sin degradados */
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='14'%3E%3Ccircle cx='14' cy='14' r='14'/%3E%3C/svg%3E") top left / 28px 14px repeat-x,
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='14'%3E%3Ccircle cx='14' cy='0' r='14'/%3E%3C/svg%3E") bottom left / 28px 14px repeat-x,
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Crect width='10' height='10'/%3E%3C/svg%3E") center / 100% calc(100% - 26px) no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='14'%3E%3Ccircle cx='14' cy='14' r='14'/%3E%3C/svg%3E") top left / 28px 14px repeat-x,
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='14'%3E%3Ccircle cx='14' cy='0' r='14'/%3E%3C/svg%3E") bottom left / 28px 14px repeat-x,
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Crect width='10' height='10'/%3E%3C/svg%3E") center / 100% calc(100% - 26px) no-repeat;
}
.tarjeta-reverso { transform: rotateY(180deg); display: grid; align-content: center; justify-items: center; gap: 20px; text-align: center; padding-block: 120px; }
.tarjeta-reverso[hidden] { display: grid !important; visibility: hidden; }
.tarjeta-puerta.is-colgada .tarjeta-giro { transform: rotateY(180deg); }
.tarjeta-puerta.is-colgada .tarjeta-reverso { visibility: visible; }
.tarjeta-puerta.is-colgada .tarjeta-frente { visibility: hidden; transition: visibility 0s 0.4s; }
.tarjeta-puerta.is-balanceo { animation: balanceo 1.2s var(--ease); transform-origin: 50% 40px; }
@keyframes balanceo { 0% { transform: rotate(0); } 18% { transform: rotate(-5deg); } 40% { transform: rotate(3.2deg); } 60% { transform: rotate(-1.6deg); } 80% { transform: rotate(0.6deg); } 100% { transform: rotate(0); } }
.tarjeta-agujero { position: absolute; left: 50%; top: 30px; width: 30px; height: 30px; margin-left: -15px; border-radius: 50%;
  background: var(--bg); box-shadow: inset 0 0 0 4px #b8a27a; }
.tarjeta-t { font-size: var(--t-titular); text-align: center; }
.tarjeta-nota { margin: 14px auto 0; max-width: 40ch; text-align: center; color: var(--field-muted); }
.tarjeta-grupo { margin-top: 40px; }
.tarjeta-grupo legend { width: 100%; text-align: center; font-size: var(--t-entrada); font-weight: 400; letter-spacing: -0.01em; margin-bottom: 14px; }
.tarjeta-item { position: relative; display: grid; grid-template-columns: 28px 1fr; column-gap: 12px; padding: 10px 0; cursor: pointer; }
.tarjeta-item input { position: absolute; opacity: 0; width: 28px; height: 28px; margin: 0; cursor: pointer; }
.tarjeta-check { grid-row: 1 / span 2; width: 24px; height: 24px; margin-top: 2px; box-shadow: inset 0 0 0 2px var(--field-ink); position: relative; transition: background-color 0.2s; }
.tarjeta-check::after { content: ''; position: absolute; left: 8px; top: 3px; width: 6px; height: 12px; border-right: 2.5px solid var(--ink); border-bottom: 2.5px solid var(--ink);
  transform: rotate(45deg) scale(0); transition: transform 0.25s var(--ease); }
.tarjeta-item input:checked + .tarjeta-check { background: var(--field-ink); }
.tarjeta-item input:checked + .tarjeta-check::after { transform: rotate(45deg) scale(1); }
.tarjeta-item input:focus-visible + .tarjeta-check { outline: 2px solid var(--accent); outline-offset: 3px; }
.tarjeta-plato { font-weight: 500; }
.tarjeta-desc { grid-column: 2; color: var(--field-muted); font-size: var(--t-pequeno); }
.tarjeta-grupo .chips { justify-content: center; }
.tarjeta-siempre { margin-top: 36px; text-align: center; color: var(--field-muted); }
.tarjeta-colgar { display: flex; margin: 28px auto 0; }
.tarjeta-reverso-t { font-size: var(--t-titular); font-weight: 300; letter-spacing: -0.035em; line-height: 1.05; }
.tarjeta-reverso-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; font-size: var(--t-entrada); }
.tarjeta-reverso-fin { color: var(--field-muted); }
.tarjeta-volver { background: none; border: 0; padding: 10px; cursor: pointer; text-decoration: underline; color: var(--field-ink); font-size: var(--t-pequeno); }
@media (prefers-reduced-motion: reduce) {
  .tarjeta-giro { transition: none; }
  .tarjeta-puerta.is-balanceo { animation: none; }
}
@media (max-width: 900px) {
  .desayuno-sec { padding: 0 0 64px; display: block; min-height: 0; }
  .desayuno-fondo { position: relative; height: 56svh; }
  .desayuno-sec .tarjeta-puerta { margin: -64px 10px 0; max-width: none; }
  .tarjeta-cara { padding: 64px 22px 52px; }
}

/* ---------- ¿Qué subo mañana? (que-subo.js) ---------- */
.que-subo { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 24px; row-gap: 40px; padding: 56px 0 0; }
.monte-sec .que-subo { padding-top: clamp(72px, 8vw, 120px); }
.qs-controles { grid-column: 1 / 5; display: grid; gap: 28px; align-content: start; }
.qs-t { font-size: var(--t-titular); }
.qs-sub { color: var(--muted); }
.qs-grupo legend { font-size: var(--t-pequeno); color: var(--muted); margin-bottom: 10px; }
.qs-prepara { padding-top: 12px; }
.qs-prepara-t { font-weight: 500; }
.qs-prepara ul { margin: 8px 0 0; padding-left: 1.1em; color: var(--muted); }
.qs-resultado { grid-column: 6 / 13; display: grid; gap: 14px; align-content: start; }
.qs-nombre { font-size: var(--t-entrada); line-height: 1.25; }
.qs-perfil { width: 100%; height: auto; overflow: visible; margin-top: 8px; }
.qs-suelo { fill: #2c302b; }
.qs-linea { fill: none; stroke: var(--accent); stroke-width: 2.5; stroke-linejoin: round; stroke-linecap: round; }
.qs-caminante { fill: var(--ink); }
.qs-alt { fill: var(--muted); font-size: 14px; font-family: inherit; }
.qs-datos { display: grid; grid-template-columns: repeat(4, auto); justify-content: start; gap: 8px 40px; margin: 8px 0 0; }
.qs-datos div { display: grid; }
.qs-datos dt { order: 2; color: var(--muted); font-size: var(--t-pequeno); }
.qs-datos dd { order: 1; margin: 0; font-size: var(--t-entrada); font-variant-numeric: tabular-nums; }
.qs-aviso { color: var(--muted); }
.qs-nota { padding: 12px 16px; background: var(--surface); }
.qs-cta { justify-self: start; margin-top: 8px; }
.qs-fuente { max-width: 60ch; }
@media (max-width: 900px) {
  .qs-controles, .qs-resultado { grid-column: 1 / -1; }
  .qs-datos { grid-template-columns: repeat(2, auto); }
  .qs-cta { justify-self: stretch; }
}

/* 41-aparecer.css */
/* efectos-web · aparecer.css — entrada escalonada (el "aire Framer"): sube 16 px en 0,6 s.
 * Solo los títulos se funden; párrafos, grupos y fotos entran sin opacidad (solo se mueven): así nunca hay pantallas
 * vacías mientras termina la entrada (lección `blank-gap`) y el contenido principal pinta pronto.
 * Necesita la clase `js` en <html> (head.js). */
.js [data-aparece] {
  transform: translateY(16px);
  transition: opacity 0.6s cubic-bezier(0.44, 0, 0.56, 1), transform 0.6s cubic-bezier(0.44, 0, 0.56, 1);
  transition-delay: calc(var(--i, 0) * 120ms);
}
.js :is(h1, h2, h3, .titular)[data-aparece] { opacity: 0; }
.js [data-aparece="foto"] { transform: translateY(24px) scale(1.04); }
.js [data-aparece].is-visto { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .js [data-aparece] { opacity: 1; transform: none; transition: none; }
}

/* 42-tarjeta-inclinada.css */
/* efectos-web · tarjeta-inclinada.css */
.ef-tarjeta { perspective: 900px; }
.ef-tarjeta-cara {
  transform: rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
  transition: transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.ef-tarjeta.is-encima .ef-tarjeta-cara { transition-duration: 0.12s; }
