/* El Rincón de Canteli · «Asturias contemporánea»
   Fraunces (titulares, siempre en recta) + Instrument Sans (texto e interfaz).
   Verde botella, marfil, burdeos, madera, dorado sidra y negro cálido.
   Mobile first. Movimiento solo con transform/opacity y respetando prefers-reduced-motion. */

@font-face { font-family: 'Fraunces'; src: url('/assets/fonts/fraunces-latin-var.woff2') format('woff2'); font-weight: 300 800; font-style: normal; font-display: swap; }
@font-face { font-family: 'Instrument Sans'; src: url('/assets/fonts/instrument-sans-latin-wght-normal.woff2') format('woff2'); font-weight: 400 700; font-style: normal; font-display: swap; }

:root {
  --ink: #181714;
  --ink-2: #26231f;
  --green: #18382E;
  --green-2: #20473a;
  --ivory: #F4EFE5;
  --paper: #EBE2D2;
  --wine: #781E2C;
  --wine-2: #611722;
  --wood: #654735;
  --gold: #D7AC60;
  --gold-2: #E5C285;
  --mute-l: #5B5248;
  --mute-d: rgba(244, 239, 229, .74);

  --f-display: 'Fraunces', 'Iowan Old Style', Georgia, serif;
  --f-sans: 'Instrument Sans', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;

  --ease-out: cubic-bezier(.22, 1, .36, 1);
  --ease-io: cubic-bezier(.65, 0, .35, 1);
  --d-fast: 180ms;
  --d-med: 320ms;

  --gut: clamp(16px, 4.2vw, 64px);
  --maxw: 1480px;
  --hd-h: 68px;
  --sec: clamp(88px, 13vw, 200px);
  --r: 2px;

  --page-bg: var(--ivory);
}

/* Tonos de sección: cada bloque declara el suyo y la página funde el fondo al pasar (main.js). */
[data-tone] { color: var(--fg); background: var(--bg); }
[data-tone="ivory"] { --bg: var(--ivory); --fg: var(--ink); --fg-2: var(--mute-l); --accent: var(--wine); --line: rgba(24, 23, 20, .16); --btn-bg: var(--wine); --btn-fg: var(--ivory); }
[data-tone="paper"] { --bg: var(--paper); --fg: var(--ink); --fg-2: var(--mute-l); --accent: var(--wine); --line: rgba(24, 23, 20, .18); --btn-bg: var(--wine); --btn-fg: var(--ivory); }
[data-tone="ink"] { --bg: var(--ink); --fg: var(--ivory); --fg-2: var(--mute-d); --accent: var(--gold); --line: rgba(244, 239, 229, .18); --btn-bg: var(--ivory); --btn-fg: var(--ink); }
[data-tone="green"] { --bg: var(--green); --fg: var(--ivory); --fg-2: var(--mute-d); --accent: var(--gold); --line: rgba(244, 239, 229, .2); --btn-bg: var(--gold); --btn-fg: var(--ink); }
[data-tone="wine"] { --bg: var(--wine); --fg: var(--ivory); --fg-2: rgba(244, 239, 229, .8); --accent: var(--gold-2); --line: rgba(244, 239, 229, .24); --btn-bg: var(--ivory); --btn-fg: var(--wine); }
html.tones main > [data-tone], html.tones main > * > [data-tone] { background: transparent; }
html.tones body { background-color: var(--page-bg); transition: background-color .7s var(--ease-io); }

/* ---------- base ---------- */
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: calc(var(--hd-h) + 72px); }
body { margin: 0; background: var(--ivory); color: var(--ink); font: 400 1.0625rem/1.6 var(--f-sans); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: clip; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; -webkit-tap-highlight-color: transparent; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; -webkit-tap-highlight-color: transparent; }
h1, h2, h3, h4 { margin: 0; font-family: var(--f-display); font-weight: 500; font-optical-sizing: auto; font-variation-settings: "SOFT" 40; letter-spacing: -.02em; line-height: 1; text-wrap: balance; }
p { margin: 0; text-wrap: pretty; }
ul, ol { margin: 0; padding: 0; list-style: none; }
address { font-style: normal; }
table { border-collapse: collapse; }
:focus-visible { outline: 2px solid var(--accent, var(--wine)); outline-offset: 3px; border-radius: 2px; }
::selection { background: var(--gold); color: var(--ink); }
.sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.wrap { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gut); }
.skip { position: fixed; left: 12px; top: -60px; z-index: 200; background: var(--ink); color: var(--ivory); padding: 10px 16px; border-radius: 2px; transition: top var(--d-fast); }
.skip:focus { top: 12px; }
main:focus { outline: none; }
.ico { width: 1.15em; height: 1.15em; flex: none; }

/* ---------- botones y enlaces ---------- */
.btn { --b-bg: var(--btn-bg, var(--wine)); --b-fg: var(--btn-fg, var(--ivory)); position: relative; display: inline-flex; align-items: center; justify-content: center; gap: .7em; min-height: 52px; padding: 0 1.5em; border-radius: 999px; font: 600 .9375rem/1 var(--f-sans); letter-spacing: .01em; text-decoration: none; background: var(--b-bg); color: var(--b-fg); border: 1px solid var(--b-bg); overflow: hidden; isolation: isolate; touch-action: manipulation; transition: transform var(--d-fast) var(--ease-out), background-color var(--d-med), color var(--d-med), border-color var(--d-med); }
.btn .ico { transition: transform var(--d-med) var(--ease-out); }
.btn:active { transform: scale(.97); }
.btn--ivory { --b-bg: var(--ivory); --b-fg: var(--ink); }
.btn--gold { --b-bg: var(--gold); --b-fg: var(--ink); }
.btn--solid { --b-bg: var(--btn-bg); --b-fg: var(--btn-fg); }
.btn--line { background: transparent; color: var(--fg); border-color: color-mix(in srgb, var(--fg) 40%, transparent); }
@media (hover: hover) and (pointer: fine) {
  .btn:hover .ico { transform: translateX(4px); }
  .btn--line:hover { border-color: var(--fg); background: color-mix(in srgb, var(--fg) 6%, transparent); }
  .btn--ivory:hover, .btn--gold:hover, .btn--solid:hover { filter: brightness(1.06); }
}
.tlink { display: inline-flex; align-items: center; gap: .55em; min-height: 44px; font-weight: 600; font-size: .9375rem; text-decoration: none; color: var(--fg, inherit); }
.tlink span { background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat; padding-bottom: 2px; transition: background-size var(--d-med) var(--ease-out); }
.tlink .ico { transition: transform var(--d-med) var(--ease-out); }
@media (hover: hover) and (pointer: fine) {
  .tlink:hover span { background-size: 0 1px; background-position: 100% 100%; }
  .tlink:hover .ico { transform: translateX(4px); }
}

/* Estado en vivo de cada local */
.st { display: inline-flex; align-items: center; gap: .5em; font: 500 .8125rem/1.3 var(--f-sans); color: var(--fg-2, inherit); }
.st:empty { display: none; }
.st::before { content: ""; width: .5rem; height: .5rem; border-radius: 50%; background: currentColor; opacity: .5; flex: none; }
.st[data-open="1"]::before { background: #4caf6d; opacity: 1; box-shadow: 0 0 0 3px rgba(76, 175, 109, .22); }
.st--sm { font-size: .75rem; }

/* Marcos de foto */
.fr { margin: 0; }
.fr__m { position: relative; overflow: hidden; background: color-mix(in srgb, var(--fg, #000) 8%, transparent); border-radius: var(--r); }
.fr__m img { width: 100%; height: 100%; object-fit: cover; }
.fr--rect .fr__m { aspect-ratio: 4 / 3; }
.fr--tall .fr__m { aspect-ratio: 3 / 4; }
.fr--arch .fr__m { aspect-ratio: 3 / 4; border-radius: 999px 999px var(--r) var(--r); }
.fr--round .fr__m { aspect-ratio: 1; border-radius: 50%; }
.fr__cap { margin-top: .7rem; font-size: .8125rem; color: var(--fg-2); }
html.js .fr[data-reveal] .fr__m { clip-path: inset(100% 0 0 0); }
html.js .fr[data-reveal].is-in .fr__m { clip-path: inset(0 0 0 0); transition: clip-path 1.1s var(--ease-out); }
html.js .fr[data-reveal] .fr__m img { transform: scale(1.14); }
html.js .fr[data-reveal].is-in .fr__m img { transform: scale(1); transition: transform 1.4s var(--ease-out); }

/* Titulares partidos en líneas (máscara) y palabras */
.ln { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; margin-bottom: -.08em; }
.ln__i { display: inline-block; }
.lines-block .ln { display: block; }
html.js [data-lines] .ln__i, html.js [data-hero-t] .ln__i { transform: translateY(105%); }
html.js [data-lines].is-in .ln__i { transform: none; transition: transform 1s var(--ease-out); }
html.js [data-lines].is-in .ln:nth-child(2) .ln__i { transition-delay: .09s; }
html.js [data-lines].is-in .ln:nth-child(3) .ln__i { transition-delay: .18s; }
.w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .1em; margin-bottom: -.1em; }
.w > span { display: inline-block; }
html.js [data-words].is-split .w > span { transform: translateY(105%); }
html.js [data-words].is-in .w > span { transform: none; transition: transform .9s var(--ease-out); transition-delay: calc(var(--i) * 45ms); }
html.js [data-fade] { opacity: 0; transform: translateY(18px); }
html.js [data-fade].is-in { opacity: 1; transform: none; transition: opacity .8s var(--ease-out), transform .8s var(--ease-out); }
[data-scrub-words] .sw { opacity: .2; transition: opacity .2s linear; }
[data-scrub-words] .sw.on { opacity: 1; }
html:not(.js) [data-scrub-words] .sw { opacity: 1; }

/* ---------- cabecera ---------- */
.hd { position: fixed; inset: 0 0 auto; z-index: 50; color: var(--ivory); transition: transform .45s var(--ease-out), background-color var(--d-med), color var(--d-med), box-shadow var(--d-med); }
html[data-top="light"] .hd { color: var(--ink); }
.hd.is-solid { background: rgba(244, 239, 229, .96); color: var(--ink); box-shadow: 0 1px 0 rgba(24, 23, 20, .1); -webkit-backdrop-filter: saturate(1.2) blur(10px); backdrop-filter: saturate(1.2) blur(10px); }
.hd.is-hidden { transform: translateY(-100%); }
.hd__in { display: flex; align-items: center; justify-content: space-between; gap: 1rem; height: var(--hd-h); padding-inline: var(--gut); max-width: calc(var(--maxw) + 2 * 64px); margin-inline: auto; }
.hd__logo { text-decoration: none; display: inline-flex; min-height: 44px; align-items: center; }
.logo { display: inline-flex; align-items: center; gap: .65rem; }
.logo__mark { width: 40px; height: 40px; border-radius: 50%; background: #fff; display: grid; place-items: center; overflow: hidden; flex: none; box-shadow: 0 0 0 1px rgba(24, 23, 20, .08); }
.logo__img { width: 34px; height: 34px; object-fit: contain; }
.logo__word { font: 560 1.0625rem/1 var(--f-display); font-variation-settings: "SOFT" 60; letter-spacing: -.01em; display: flex; flex-direction: column; }
.logo__word span { font-size: 1.32em; letter-spacing: -.02em; }
.hd__nav { display: none; }
.hd__act { display: flex; align-items: center; gap: .5rem; }
.hd__cta { display: inline-flex; align-items: center; min-height: 44px; padding: 0 1.15rem; border-radius: 999px; background: var(--gold); color: var(--ink); font: 600 .875rem/1 var(--f-sans); text-decoration: none; transition: transform var(--d-fast) var(--ease-out), background-color var(--d-med); }
.hd.is-solid .hd__cta, html[data-top="light"] .hd__cta { background: var(--wine); color: var(--ivory); }
.hd__cta:active { transform: scale(.97); }
.hd__cta-x { display: none; }
.hd__burger { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 50%; }
.hd__burger-l { display: grid; gap: 7px; width: 22px; }
.hd__burger-l i { display: block; height: 1.5px; background: currentColor; border-radius: 2px; }
.hd__burger-l i:last-child { width: 70%; justify-self: end; }

@media (min-width: 1100px) {
  :root { --hd-h: 84px; }
  .hd__nav { display: block; }
  .hd__nav > ul { display: flex; gap: clamp(.9rem, 1.8vw, 2rem); }
  .hd__nav li { position: relative; display: flex; align-items: center; }
  .hd__nav a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; font-weight: 500; font-size: .9375rem; background: linear-gradient(currentColor, currentColor) 0 calc(100% - 10px) / 0 1px no-repeat; transition: background-size var(--d-med) var(--ease-out); }
  .hd__nav a:hover, .hd__nav a[aria-current="page"] { background-size: 100% 1px; }
  .hd__ddbtn { width: 28px; height: 44px; display: grid; place-items: center; }
  .hd__ddbtn .ico { width: 14px; transition: transform var(--d-med) var(--ease-out); }
  .hd__has.is-open .hd__ddbtn .ico { transform: rotate(180deg); }
  .hd__burger { display: none; }
  .hd__cta-x { display: inline; }
  .hd__cta { min-height: 48px; padding: 0 1.4rem; }
}

/* Desplegable de restaurantes */
.dd { position: absolute; top: calc(100% + 10px); left: 50%; width: 440px; padding: 10px; background: var(--ivory); color: var(--ink); border-radius: 6px; box-shadow: 0 30px 60px -20px rgba(24, 23, 20, .35), 0 0 0 1px rgba(24, 23, 20, .08); opacity: 0; visibility: hidden; transform: translate(-50%, -6px) scale(.98); transform-origin: top center; transition: opacity var(--d-fast) var(--ease-out), transform 200ms var(--ease-out), visibility 0s linear 200ms; }
.dd::before { content: ""; position: absolute; inset: -14px 0 auto; height: 14px; }
.hd__has.is-open .dd { opacity: 1; visibility: visible; transform: translate(-50%, 0) scale(1); transition-delay: 0s; }
.dd__item { display: grid !important; grid-template-columns: 84px 1fr; gap: 14px; align-items: center; padding: 8px; border-radius: 4px; background: none !important; min-height: 0 !important; transition: background-color var(--d-fast) !important; }
.dd__item:hover, .dd__item:focus-visible { background-color: rgba(24, 23, 20, .06) !important; }
.dd__ph { width: 84px; height: 64px; overflow: hidden; border-radius: 3px; }
.dd__ph img { width: 100%; height: 100%; object-fit: cover; }
.dd__txt { display: grid; gap: 3px; }
.dd__name { font: 560 1.25rem/1.05 var(--f-display); letter-spacing: -.01em; }
.dd__addr { font-size: .8125rem; color: var(--mute-l); }
.dd .st { --fg-2: var(--mute-l); }
.dd__all { display: flex !important; justify-content: space-between; margin-top: 6px; padding: 12px 10px 6px !important; border-top: 1px solid rgba(24, 23, 20, .1); font-size: .875rem !important; font-weight: 600 !important; background: none !important; }

/* Menú móvil */
.menu { --accent: var(--gold); position: fixed; inset: 0; z-index: 80; display: flex; flex-direction: column; padding: 0 var(--gut) calc(24px + env(safe-area-inset-bottom)); background: var(--green); color: var(--ivory); overflow-y: auto; overscroll-behavior: contain; opacity: 0; transition: opacity 200ms var(--ease-out); }
.menu[data-open] { transition-duration: 240ms; }
.menu[data-open] { opacity: 1; }
.menu__top { display: flex; justify-content: space-between; align-items: center; height: var(--hd-h); flex: none; }
.menu__close { display: inline-flex; align-items: center; gap: .4rem; min-height: 48px; padding: 0 .3rem; font-weight: 600; font-size: .9375rem; }
.menu__list { margin-top: 3vh; }
.menu__list a { display: block; padding: .32rem 0; font: 500 clamp(2.2rem, 10vw, 3.4rem)/1.05 var(--f-display); letter-spacing: -.025em; text-decoration: none; opacity: 0; transform: translateY(14px); }
.menu[data-open] .menu__list a { opacity: 1; transform: none; transition: opacity .5s var(--ease-out), transform .6s var(--ease-out); transition-delay: calc(60ms + var(--i, 0) * 40ms); }
.menu__list a[aria-current="page"] { color: var(--gold); }
.menu__sedes { margin-top: auto; padding-top: 2.4rem; display: grid; gap: .9rem; }
.menu__sedes li { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding-top: .9rem; border-top: 1px solid rgba(244, 239, 229, .2); }
.menu__sede { display: grid; gap: 2px; text-decoration: none; font: 560 1.2rem/1.1 var(--f-display); min-height: 44px; align-content: center; }
.menu__sede .st { --fg-2: var(--mute-d); font-family: var(--f-sans); }
.menu__tel { display: inline-flex; align-items: center; gap: .45rem; min-height: 48px; padding: 0 1rem; border: 1px solid rgba(244, 239, 229, .35); border-radius: 999px; font-weight: 600; font-size: .875rem; text-decoration: none; white-space: nowrap; }
html.menu-open { overflow: hidden; }

/* ---------- HOME · hero ---------- */
.hero { position: relative; min-height: 100svh; padding-top: calc(var(--hd-h) + 8px); overflow: hidden; }
.hero__grid { position: relative; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); padding: 0 var(--gut) 28px; max-width: calc(var(--maxw) + 2 * 64px); margin-inline: auto; }
.hero__t { grid-column: 1 / -1; grid-row: 1; position: relative; z-index: 2; font-size: clamp(3.5rem, 17.2vw, 12rem); font-weight: 480; font-variation-settings: "SOFT" 30; line-height: .9; letter-spacing: -.045em; margin: 4vh 0 0; }
.hero__t .ln { display: block; }
.hero__media { grid-column: 1 / -1; grid-row: 2; margin-top: -1.4rem; }
.hero__media .fr__m { aspect-ratio: 4 / 4.4; }
.hero__media .fr__m::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(24, 23, 20, .55), transparent 30%); pointer-events: none; }
.hero__plate { grid-column: 4 / -1; grid-row: 2; align-self: end; justify-self: end; width: min(38vw, 190px); margin: 0 -6px -30px 0; position: relative; z-index: 3; }
.hero__plate .fr__m { box-shadow: 0 24px 50px -18px rgba(0, 0, 0, .6); outline: 6px solid var(--ink); }
.hero__side { grid-column: 1 / -1; grid-row: 3; margin-top: 2.4rem; display: grid; gap: 1.6rem; }
.hero__lead { font-size: 1.0625rem; line-height: 1.55; color: var(--fg-2); max-width: 34ch; }
.hero__cta { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1.4rem; }
.hero__sedes { grid-column: 1 / -1; grid-row: 4; display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 2.6rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.hero__sedes a { display: grid; gap: 3px; text-decoration: none; min-height: 44px; }
.hero__sname { font: 560 1.0625rem/1.15 var(--f-display); }
.hero__saddr { font-size: .8125rem; color: var(--fg-2); }
.hero__scroll { display: none; }

@media (min-width: 1000px) {
  .hero { display: flex; flex-direction: column; }
  .hero__grid { flex: 1; width: 100%; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: 1fr auto auto; column-gap: 24px; padding-bottom: 32px; }
  .hero__media { grid-column: 6 / 13; grid-row: 1 / 4; margin: 0; align-self: stretch; }
  .hero__media { position: relative; min-height: 560px; }
  .hero__media .fr__m { position: absolute; inset: 0; aspect-ratio: auto; }
  .hero__media .fr__m::after { background: linear-gradient(90deg, rgba(24, 23, 20, .62), rgba(24, 23, 20, 0) 42%), linear-gradient(0deg, rgba(24, 23, 20, .45), transparent 30%); }
  .hero__t { grid-column: 1 / 13; grid-row: 1; align-self: center; margin: 0; font-size: clamp(5.5rem, 10.6vw, 12.8rem); text-shadow: 0 4px 40px rgba(24, 23, 20, .35); }
  .hero__t .ln:nth-child(2) { padding-left: 1.55em; }
  .hero__t .ln:nth-child(3) { padding-left: .5em; }
  .hero__plate { grid-column: 5 / 8; grid-row: 2 / 4; align-self: center; justify-self: end; width: clamp(150px, 13vw, 230px); margin: 0 -2vw 0 0; }
  .hero__side { grid-column: 1 / 6; grid-row: 2; margin: 0; }
  .hero__lead { font-size: 1.1875rem; }
  .hero__sedes { grid-column: 1 / 6; grid-row: 3; margin-top: 2.4rem; gap: 2rem; }
  .hero__scroll { display: block; position: absolute; right: calc(var(--gut) + 18px); bottom: 44px; width: 44px; height: 44px; z-index: 4; }
  .hero__scroll i { position: absolute; left: 50%; top: 6px; width: 1px; height: 32px; background: rgba(244, 239, 229, .35); overflow: hidden; }
  .hero__scroll i::after { content: ""; position: absolute; inset: 0; background: var(--ivory); transform: translateY(-100%); animation: drip 2.2s var(--ease-io) infinite; }
}
@keyframes drip { 0% { transform: translateY(-100%); } 55% { transform: translateY(0); } 100% { transform: translateY(100%); } }

/* ---------- HOME · introducción editorial ---------- */
.intro { padding: var(--sec) 0; }
.intro__grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 2.4rem 16px; }
.intro__t { grid-column: 1 / -1; font-size: clamp(2.4rem, 9vw, 6.2rem); line-height: .98; letter-spacing: -.035em; max-width: 13ch; }
.intro__ph1 { grid-column: 3 / -1; }
.intro__big { grid-column: 1 / -1; font: 420 clamp(1.45rem, 5vw, 2.7rem)/1.22 var(--f-display); letter-spacing: -.015em; font-variation-settings: "SOFT" 60; }
.intro__ph2 { grid-column: 1 / 6; }
.intro__more { grid-column: 1 / -1; display: grid; gap: 1rem; color: var(--fg-2); max-width: 42ch; }
@media (min-width: 1000px) {
  .intro__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; row-gap: 0; }
  .intro__t { grid-column: 1 / 9; grid-row: 1; }
  .intro__ph1 { grid-column: 9 / 13; grid-row: 1 / 3; margin-top: 4vw; }
  .intro__big { grid-column: 2 / 9; grid-row: 2; margin-top: 7vw; }
  .intro__ph2 { grid-column: 1 / 5; grid-row: 3; margin-top: 8vw; }
  .intro__more { grid-column: 7 / 11; grid-row: 3; align-self: end; margin-bottom: 2vw; }
}

/* ---------- HOME · el cachopo (WOW 2) ---------- */
.cach { position: relative; overflow: clip; }
.cach__stage { position: relative; display: grid; grid-template-columns: 40% 1fr; gap: 1.6rem 16px; padding: var(--sec) var(--gut); max-width: calc(var(--maxw) + 2 * 64px); margin-inline: auto; }
.cach__t { grid-column: 1 / -1; font-size: clamp(3.2rem, 15vw, 13.5rem); font-weight: 520; line-height: .88; letter-spacing: -.05em; font-variation-settings: "SOFT" 20; }
.cach__l1, .cach__l2 { display: block; }
.cach__l2 { padding-left: 12vw; }
.cach__board { margin: 0; grid-column: 1; grid-row: 2 / 4; }
.cach__h { display: none; }
.cach__v img { width: 100%; border-radius: var(--r); box-shadow: 0 30px 60px -30px rgba(24, 23, 20, .55); }
.cach__notes { grid-column: 2; grid-row: 2; display: grid; align-content: space-around; gap: 1.4rem; padding: 1rem 0; }
.cach__n { position: relative; padding-left: 26px; font: 500 1.05rem/1.25 var(--f-display); font-variation-settings: "SOFT" 60; }
.cach__n::before { content: ""; position: absolute; left: -28px; top: .62em; width: 44px; height: 1px; background: currentColor; opacity: .45; }
.cach__foot { grid-column: 2; grid-row: 3; display: grid; gap: 1.2rem; align-content: end; font-size: .9375rem; color: var(--fg-2); }
.cach__foot .btn { justify-self: start; }
@media (max-width: 999px) { .cach__foot .btn { padding: 0 1.1em; font-size: .875rem; } }
@media (min-width: 1000px) {
  .cach { --tsz: clamp(4.2rem, 8.4vw, 9.6rem); --bw: min(76vw, 1120px, calc((100svh - var(--hd-h) - var(--tsz) * 1.8 - 230px) * 3.94)); }
  .cach__stage { display: block; padding: 0; max-width: none; }
  .cach__t { position: absolute; inset: calc(var(--hd-h) + 2vh) var(--gut) 5vh; display: flex; flex-direction: column; justify-content: space-between; z-index: 2; pointer-events: none; font-size: var(--tsz); }
  .cach__l1 { align-self: flex-start; }
  .cach__l2 { align-self: flex-end; padding: 0; }
  .cach__board, .cach__notes { position: absolute; left: 50%; top: calc(50% + var(--hd-h) / 2 - 1.5vh); width: var(--bw); aspect-ratio: 1118 / 284; }
  .cach__board { margin: 0; z-index: 1; }
  .cach__h { border-radius: var(--r); overflow: hidden; box-shadow: 0 50px 80px -40px rgba(24, 23, 20, .6); }
  .cach__h, .cach__h img { display: block; width: 100%; height: 100%; object-fit: cover; }
  .cach__v { display: none; }
  .cach__notes { transform: translate(-50%, -50%); display: block; padding: 0; pointer-events: none; z-index: 3; }
  .cach__n { position: absolute; padding: 0 0 0 14px; font-size: 1.1rem; line-height: 1.2; white-space: nowrap; }
  .cach__n::before { left: 0; width: 1px; height: auto; opacity: .5; }
  .cach__n--1, .cach__n--3, .cach__n--4 { bottom: calc(100% + 12px); }
  .cach__n--1::before, .cach__n--3::before, .cach__n--4::before { top: 3px; bottom: -12px; }
  .cach__n--2 { top: calc(100% + 12px); }
  .cach__n--2::before { top: -12px; bottom: 3px; }
  .cach__n--4 { left: 13%; }
  .cach__n--1 { left: 43%; }
  .cach__n--3 { left: 64%; }
  .cach__n--2 { left: 46%; }
  .cach__foot { position: absolute; left: var(--gut); bottom: 5vh; width: min(28vw, 400px); z-index: 3; }
}

/* ---------- HOME · la sidra (WOW 3) ---------- */
.sidra { padding: var(--sec) 0; overflow: hidden; }
.sidra__grid { display: grid; grid-template-columns: 1fr 34%; gap: 2rem 16px; }
.sidra__t { grid-column: 1 / -1; font-size: clamp(3rem, 12.5vw, 10rem); font-weight: 470; line-height: .92; letter-spacing: -.045em; }
.sidra__t .ln { display: block; }

.sidra__ill { grid-column: 2; grid-row: 2; color: var(--ivory); }
.pour { width: 100%; height: auto; overflow: visible; }
.sidra__txt { grid-column: 1; grid-row: 2; display: grid; gap: 1.2rem; align-content: start; }
.sidra__p { font-size: 1.0625rem; color: var(--fg-2); }
.sidra__p:first-child { font: 430 clamp(1.25rem, 4.4vw, 2rem)/1.25 var(--f-display); color: var(--fg); font-variation-settings: "SOFT" 60; }
.sidra__brands { display: grid; gap: .3rem; padding-top: 1.2rem; border-top: 1px solid var(--line); font: 500 clamp(1.1rem, 3.6vw, 1.5rem)/1.3 var(--f-display); }
.sidra__brands span { font: 500 .8125rem/1.3 var(--f-sans); color: var(--fg-2); }
html.js .pour__stream { stroke-dasharray: 1; }
@media (min-width: 1000px) {
  .sidra__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .sidra__t { grid-column: 1 / 9; grid-row: 1; }
  .sidra__ill { grid-column: 8 / 13; grid-row: 1 / 3; margin-top: -4vw; max-width: 460px; justify-self: center; width: 100%; }
  .sidra__txt { grid-column: 2 / 7; grid-row: 2; margin-top: 7vw; }
}

/* ---------- HOME · galería ---------- */
.gal { padding: var(--sec) 0 calc(var(--sec) * .8); }
.gal__t { font-size: clamp(2.6rem, 10vw, 7.5rem); letter-spacing: -.04em; line-height: .95; margin-bottom: 3.5rem; }
.gal__grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 2.4rem 14px; }
.g1 { grid-column: 1 / -1; }
.g2 { grid-column: 2 / -1; }
.g3 { grid-column: 1 / 4; }
.g4 { grid-column: 3 / -1; margin-top: -3rem; }
.g5 { grid-column: 1 / 5; }
.g6 { grid-column: 2 / -1; }
.g7 { grid-column: 4 / -1; margin-top: -2rem; }
@media (min-width: 1000px) {
  .gal__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; row-gap: 0; }
  .gal__t { margin-bottom: 0; max-width: 9ch; }
  .g1 { grid-column: 6 / 13; grid-row: 1; margin-top: -9vw; }
  .g2 { grid-column: 1 / 5; grid-row: 2; margin-top: 4vw; }
  .g3 { grid-column: 6 / 8; grid-row: 2; margin-top: 9vw; }
  .g4 { grid-column: 9 / 12; grid-row: 2 / 4; margin-top: 6vw; }
  .g5 { grid-column: 2 / 5; grid-row: 3; margin-top: 7vw; }
  .g6 { grid-column: 5 / 9; grid-row: 4; margin-top: -2vw; }
  .g7 { grid-column: 10 / 12; grid-row: 4; margin-top: 6vw; }
}

/* ---------- HOME · nuestra carta ---------- */
.ncarta { padding: var(--sec) 0; position: relative; }
.ncarta__t { font-size: clamp(2.4rem, 8.6vw, 6.6rem); letter-spacing: -.035em; line-height: .98; max-width: 14ch; margin-bottom: 3rem; }
.ncarta__list { border-top: 1px solid var(--line); counter-reset: c; }
.ncarta__row { display: grid; grid-template-columns: 1fr auto; grid-template-areas: "name thumb" "desc thumb"; gap: .2rem 1rem; align-items: center; padding: 1.3rem 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.ncarta__name { grid-area: name; font: 480 clamp(2rem, 8vw, 5.4rem)/1 var(--f-display); letter-spacing: -.035em; transition: transform .5s var(--ease-out), color var(--d-med); }
.ncarta__desc { grid-area: desc; font-size: .9375rem; color: var(--fg-2); max-width: 36ch; }
.ncarta__thumb { grid-area: thumb; width: 72px; height: 72px; border-radius: 50%; overflow: hidden; }
.ncarta__thumb img { width: 100%; height: 100%; object-fit: cover; }
.ncarta__go { display: none; }
.ncarta__float { display: none; }
.ncarta__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.6rem; margin-top: 3rem; color: var(--fg-2); font-size: .9375rem; }
@media (min-width: 1000px) and (hover: hover) {
  .ncarta__row { grid-template-columns: minmax(0, 1fr) 30ch 56px; grid-template-areas: "name desc go"; padding: 1.6rem 0; }
  .ncarta__thumb { display: none; }
  .ncarta__go { display: grid; place-items: center; grid-area: go; width: 56px; height: 56px; border-radius: 50%; border: 1px solid var(--line); transition: background-color var(--d-med), color var(--d-med), border-color var(--d-med); }
  .ncarta__row:hover .ncarta__name { transform: translateX(1.2rem); color: var(--gold); }
  .ncarta__row:hover .ncarta__go { background: var(--gold); color: var(--ink); border-color: var(--gold); }
  .ncarta__float { display: block; position: fixed; left: 0; top: 0; width: 260px; aspect-ratio: 1; border-radius: 50%; overflow: hidden; pointer-events: none; z-index: 5; opacity: 0; transform: translate3d(-50%, -50%, 0) scale(.6); transition: opacity .3s var(--ease-out), transform .45s var(--ease-out); will-change: transform; }
  .ncarta__float.is-on { opacity: 1; }
  .ncarta__float img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .25s; }
  .ncarta__float img.is-on { opacity: 1; }
}

/* ---------- HOME · dos rincones ---------- */
.rinc { padding: var(--sec) 0; }
.rinc__t { font-size: clamp(2.6rem, 10vw, 8rem); letter-spacing: -.04em; line-height: .94; margin-bottom: 3.5rem; }
.rinc__t .ln { display: block; }
.rinc__t .ln:last-child { padding-left: 8vw; }
.rinc__grid { display: grid; gap: 4.5rem; }
.rinc__card { display: grid; gap: 1.4rem; align-content: start; align-self: start; }
.rinc__body { display: grid; gap: .6rem; justify-items: start; align-content: start; }
.rinc__name { font-size: clamp(2rem, 7vw, 3.6rem); letter-spacing: -.03em; }
.rinc__name a { text-decoration: none; }
.rinc__addr { font-weight: 600; }
.rinc__hint { color: var(--fg-2); max-width: 40ch; }
.rinc__act { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: .8rem; }
@media (min-width: 1000px) {
  .rinc__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .rinc__card--labradores { grid-column: 1 / 7; }
  .rinc__card--vinuelas { grid-column: 8 / 12; margin-top: 16vw; }
}

/* ---------- HOME · compartir ---------- */
.share { position: relative; padding-bottom: var(--sec); overflow: hidden; }
.share__media { position: relative; height: 62svh; min-height: 340px; overflow: hidden; }
.share__media img { position: absolute; inset: -5% 0; width: 100%; height: 110%; object-fit: cover; object-position: 50% 40%; }
.share__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(24, 23, 20, 0) 35%, rgba(24, 23, 20, .92) 96%); }
.share__in { position: relative; margin-top: -10vw; display: grid; gap: 1.6rem; }
.share__t { font-size: clamp(2.8rem, 11vw, 9.4rem); font-weight: 470; letter-spacing: -.045em; line-height: .92; text-shadow: 0 2px 30px rgba(0, 0, 0, .25); }
.share__t .ln { display: block; }
.share__p { max-width: 44ch; color: var(--fg-2); font-size: 1.0625rem; }
@media (min-width: 1000px) {
  .share__media { height: min(82svh, 50vw); }
  .share__in { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; margin-top: -12vw; }
  .share__t { grid-column: 1 / 11; }
  .share__p { grid-column: 8 / 12; font-size: 1.1875rem; }
}

/* ---------- HOME · reserva ---------- */
.book { position: relative; min-height: 100svh; display: grid; align-items: center; padding: var(--sec) 0; overflow: hidden; isolation: isolate; }
.book__media { position: absolute; inset: 0; z-index: -1; }
.book__media img { width: 100%; height: 100%; object-fit: cover; filter: blur(3px) saturate(.9); transform: scale(1.06); }
.book__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(24, 56, 46, .88), rgba(24, 23, 20, .82)); }
.book__in { display: grid; gap: 1.6rem; }
.book__t { font-size: clamp(2.6rem, 10vw, 8.6rem); font-weight: 470; letter-spacing: -.045em; line-height: .93; }
.book__t .ln { display: block; }
.book__p { color: var(--fg-2); }
.book__opts { display: grid; gap: 1rem; margin-top: 1.4rem; }
.book__opt { display: grid; grid-template-columns: 1fr; border-top: 1px solid var(--line); }
.book__main { position: relative; display: grid; gap: .25rem; padding: 1.4rem 4rem 1rem 0; text-decoration: none; }
.book__lbl { font-size: .8125rem; color: var(--fg-2); }
.book__name { font: 500 clamp(1.9rem, 7vw, 3.6rem)/1 var(--f-display); letter-spacing: -.03em; }
.book__addr { font-size: .9375rem; color: var(--fg-2); }
.book__go { position: absolute; right: 0; top: 1.6rem; width: 52px; height: 52px; display: grid; place-items: center; border-radius: 50%; background: var(--gold); color: var(--ink); transition: transform var(--d-med) var(--ease-out); }
.book__tel { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; padding-bottom: .6rem; font-weight: 600; font-size: .9375rem; text-decoration: none; justify-self: start; }
@media (hover: hover) and (pointer: fine) { .book__main:hover .book__go { transform: translateX(6px); } }
@media (min-width: 1000px) {
  .book__opts { grid-template-columns: 1fr 1fr; gap: 3rem; max-width: 1100px; }
}

/* ---------- cabecera interior compartida ---------- */
.phero { position: relative; padding: calc(var(--hd-h) + 8vh) 0 var(--sec); overflow: hidden; }
.phero__in { display: grid; gap: 2rem; }
.phero__t { font-size: clamp(3rem, 13vw, 10.5rem); font-weight: 480; letter-spacing: -.045em; line-height: .9; }
.phero__t .ln { display: block; }
.phero__intro { max-width: 40ch; font-size: 1.125rem; color: var(--fg-2); }
.crumbs ol { display: flex; flex-wrap: wrap; gap: .4rem; font-size: .8125rem; color: var(--fg-2); }
.crumbs li + li::before { content: "/"; margin-right: .4rem; opacity: .5; }
.crumbs a { text-decoration: none; }


/* Horario */
.hours { width: 100%; font-size: .9375rem; }
.hours th, .hours td { padding: .62rem 0; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.hours th { font-weight: 500; padding-right: 1rem; }
.hours td { text-align: right; font-variant-numeric: tabular-nums; color: var(--fg-2); }
.hours tr.is-today th, .hours tr.is-today td { color: var(--fg); font-weight: 600; }
.hours tr.is-today th::after { content: " · hoy"; font-weight: 500; color: var(--accent); }

/* Banda final de reserva */
.rband { padding: var(--sec) 0; }
.rband__in { display: grid; gap: 1.4rem; }
.rband__t { font-size: clamp(2.4rem, 9vw, 6.4rem); letter-spacing: -.04em; line-height: .95; max-width: 14ch; }
.rband__p { color: var(--fg-2); max-width: 44ch; }
.rband__sedes { display: grid; gap: 1rem; margin-top: 1.2rem; }
.rband__sedes li { border-top: 1px solid var(--line); }
.rband__sede { position: relative; display: grid; gap: .25rem; padding: 1.2rem 3.6rem 1rem 0; text-decoration: none; }
.rband__sede > .ico { position: absolute; right: 0; top: 1.4rem; width: 48px; height: 48px; padding: 13px; border-radius: 50%; background: var(--btn-bg); color: var(--btn-fg); transition: transform var(--d-med) var(--ease-out); }
.rband__name { font: 500 clamp(1.7rem, 6vw, 2.8rem)/1 var(--f-display); letter-spacing: -.02em; }
.rband__addr { font-size: .9375rem; color: var(--fg-2); }
.rband__tel { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; font-weight: 600; font-size: .9375rem; text-decoration: none; }
@media (hover: hover) and (pointer: fine) { .rband__sede:hover > .ico { transform: translateX(6px); } }
@media (min-width: 1000px) { .rband__sedes { grid-template-columns: 1fr 1fr; gap: 3rem; max-width: 1100px; } }

/* ---------- pie ---------- */
.ft { padding: clamp(72px, 10vw, 140px) 0 calc(84px + env(safe-area-inset-bottom)); overflow: hidden; }
.ft__top { display: grid; gap: 1.6rem; justify-items: start; padding-bottom: 3rem; border-bottom: 1px solid var(--line); }
.ft__claim { font: 450 clamp(1.8rem, 6.4vw, 4rem)/1.05 var(--f-display); letter-spacing: -.03em; max-width: 18ch; }
.ft__grid { display: grid; gap: 2.6rem; padding-top: 3rem; }
.ft__h { font-size: 1.6rem; letter-spacing: -.01em; margin-bottom: .9rem; }
.ft__h a { text-decoration: none; }
.ft__col { display: grid; gap: .8rem; align-content: start; justify-items: start; font-size: .9375rem; }
.ft__col address { color: var(--fg-2); }
.ft__tels { display: flex; flex-wrap: wrap; gap: .3rem 1.2rem; }
.ft__tels a { display: inline-flex; align-items: center; gap: .4rem; min-height: 44px; text-decoration: none; font-weight: 600; }
.ft__hours { display: grid; gap: .35rem; width: 100%; max-width: 360px; font-size: .875rem; }
.ft__hours p { display: flex; justify-content: space-between; gap: 1rem; color: var(--fg-2); }
.ft__hours p span:first-child { color: var(--fg); }
.ft__hours p span:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.ft__nav, .ft__soc { display: grid; gap: .1rem; }
.ft__nav a, .ft__soc a { display: inline-flex; align-items: center; gap: .5rem; min-height: 40px; text-decoration: none; }

.ft__soc { margin-top: 1rem; }
.ft__word { margin: 4rem 0 0; font: 520 clamp(5rem, 27vw, 26rem)/.8 var(--f-display); letter-spacing: -.06em; text-align: center; color: transparent; -webkit-text-stroke: 1px rgba(215, 172, 96, .4); user-select: none; }
.ft__legal { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin-top: 2.4rem; padding-top: 1.4rem; border-top: 1px solid var(--line); font-size: .8125rem; color: var(--fg-2); }
.ft__legal ul { display: flex; gap: 1.2rem; }
.ft__legal a { text-decoration: none; display: inline-flex; min-height: 32px; align-items: center; }

.tlink--light { color: var(--ivory); }
@media (min-width: 900px) {
  .ft__top { grid-template-columns: 1fr auto; align-items: end; }
  .ft__grid { grid-template-columns: 1fr 1fr .8fr; gap: 3rem; }
  .ft { padding-bottom: 40px; }
}

/* Barra inferior móvil */
.mbar { position: fixed; left: 10px; right: 10px; bottom: calc(10px + env(safe-area-inset-bottom)); z-index: 40; display: grid; grid-template-columns: 1fr 1.2fr; gap: 6px; padding: 6px; border-radius: 999px; background: rgba(24, 23, 20, .92); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: 0 16px 40px -12px rgba(0, 0, 0, .5); transform: translateY(140%); transition: transform .45s var(--ease-out); }
.mbar.is-on { transform: none; }
.mbar__a { display: grid; place-items: center; min-height: 48px; border-radius: 999px; color: var(--ivory); font-weight: 600; font-size: .9375rem; text-decoration: none; }
.mbar__a--book { background: var(--gold); color: var(--ink); }
html.menu-open .mbar { transform: translateY(140%); }
@media (min-width: 900px) { .mbar { display: none; } }


/* Hero: entrada (main.js añade .is-ready cuando la foto está cargada) */
html.js .hero [data-hero-media] .fr__m { clip-path: inset(0 0 100% 0); }
html.js .hero [data-hero-media] .fr__m img { transform: scale(1.18); }
html.js .hero [data-hero-plate] { opacity: 0; transform: scale(.7) rotate(-12deg); }
html.js .hero [data-hero-side], html.js .hero [data-hero-sedes] { opacity: 0; transform: translateY(16px); }
html.js .hero.is-ready [data-hero-media] .fr__m { clip-path: inset(0 0 0 0); transition: clip-path 1.5s var(--ease-out) .1s; }
html.js .hero.is-ready [data-hero-media] .fr__m img { transform: scale(1); transition: transform 2.2s var(--ease-out); }
html.js .hero.is-ready [data-hero-t] .ln__i { transform: none; transition: transform 1.15s var(--ease-out); }
html.js .hero.is-ready [data-hero-t] .ln:nth-child(1) .ln__i { transition-delay: .25s; }
html.js .hero.is-ready [data-hero-t] .ln:nth-child(2) .ln__i { transition-delay: .36s; }
html.js .hero.is-ready [data-hero-t] .ln:nth-child(3) .ln__i { transition-delay: .47s; }
html.js .hero.is-ready [data-hero-plate] { opacity: 1; transform: none; transition: opacity .6s var(--ease-out) 1s, transform 1.1s cubic-bezier(.34, 1.4, .64, 1) 1s; }
html.js .hero.is-ready [data-hero-side] { opacity: 1; transform: none; transition: opacity .8s var(--ease-out) 1.05s, transform .8s var(--ease-out) 1.05s; }
html.js .hero.is-ready [data-hero-sedes] { opacity: 1; transform: none; transition: opacity .8s var(--ease-out) 1.2s, transform .8s var(--ease-out) 1.2s; }
html.js .hero.is-ready [data-hero-media] .fr__m img, html.js .hero.is-ready [data-hero-t] { will-change: transform; }

/* Cachopo: escena fija con sticky en escritorio. --a (0 a 1) la escribe main.js según el scroll. */
@media (min-width: 1000px) {
  .cach { --a: 0; height: 240svh; }
  .cach__stage { position: sticky; top: 0; height: 100svh; min-height: 640px; }
  .cach__board { transform: translate(calc(-50% + (1 - var(--a)) * 46vw), calc(-50% + (1 - var(--a)) * 4vh)) rotate(calc((1 - var(--a)) * 8deg)); }
  .cach__h img { transform: scale(calc(1.16 - var(--a) * .16)); transform-origin: 40% 50%; }
  .cach__l1 { transform: translateY(calc((1 - var(--a)) * 9vw)); }
  .cach__l2 { transform: translateY(calc((1 - var(--a)) * -9vw)); }
  html.js .cach__n { opacity: 0; transform: translateY(10px); transition: opacity .5s var(--ease-out), transform .6s var(--ease-out); }
  html.js .cach__n.is-on { opacity: 1; transform: none; }
  html.js .cach__foot { opacity: 0; transform: translateY(14px); transition: opacity .6s var(--ease-out), transform .6s var(--ease-out); }
  html.js .cach__foot.is-on { opacity: 1; transform: none; }
}

/* Sidra: el chorro se dibuja con el scroll (--s) y el culín sube (--f) */
html.js [data-pour] .pour__stream { stroke-dashoffset: calc(1 - var(--s, 0)); }
html.js [data-pour] .pour__splash { opacity: calc(var(--s, 0) * 4 - 3); }
html.js [data-pour] .pour__fill { transform: translateY(calc((1 - var(--f, 0)) * 70px)); }
html.js [data-pour] .pour__bottle { transition: none; }

/* ---------- móvil nativo ---------- */
/* Hover solo con ratón: en táctil se quedaría pegado tras el toque. */
@media (hover: hover) and (pointer: fine) {
  .crumbs a:hover { text-decoration: underline; }
  .catnav a:hover { background: rgba(24, 23, 20, .06); }
  .chero__pdf:hover span { text-decoration: underline; }
  .ehero__idx a:hover { background: rgba(24, 23, 20, .05); border-color: var(--fg); }
  .pick__opt:hover { border-color: var(--fg); }
  .sinfo__tels a:hover, .cocard__call:hover, .panel__call:hover { border-color: var(--fg); background: color-mix(in srgb, var(--fg) 4%, transparent); }
  .map__load:hover { background: color-mix(in srgb, var(--fg) 10%, transparent); }
  .ft__nav a:hover, .ft__soc a:hover { color: var(--gold); }
  .ft__legal a:hover { text-decoration: underline; }
}
html { -webkit-tap-highlight-color: transparent; }
a, button, label, [role="button"] { touch-action: manipulation; }
.btn, .hd__cta, .mbar__a, .pick__opt, .seg__opt, .catnav a, .menu__tel, .book__main, .rband__sede { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.pick__opt:active, .seg__opt:active, .catnav a:active, .mbar__a:active, .menu__tel:active { transform: scale(.97); transition: transform 100ms var(--ease-out); }
/* Zona segura en horizontal (con viewport-fit=cover) */
.hd__in, .menu { padding-left: max(var(--gut), env(safe-area-inset-left, 0px)); padding-right: max(var(--gut), env(safe-area-inset-right, 0px)); }

/* ---------- movimiento reducido ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  html.js [data-fade], html.js [data-lines] .ln__i, html.js [data-hero-t] .ln__i, html.js [data-words].is-split .w > span { opacity: 1 !important; transform: none !important; }
  html.js .fr[data-reveal] .fr__m { clip-path: none !important; }
  html.js .fr[data-reveal] .fr__m img { transform: none !important; }
  [data-scrub-words] .sw { opacity: 1 !important; }
  html.js .pour__stream { stroke-dashoffset: 0 !important; }
  html.js .pour__splash { opacity: 1 !important; }
  html.js .pour__fill { transform: none !important; }
  .hero__scroll i::after { display: none; }
  html.js .hero [data-hero-media] .fr__m, html.js .hero [data-hero-plate], html.js .hero [data-hero-side], html.js .hero [data-hero-sedes] { clip-path: none !important; opacity: 1 !important; transform: none !important; }
  html.js .hero [data-hero-media] .fr__m img { transform: none !important; }
  .cach { height: auto !important; }
  .cach__stage { position: relative !important; }
}

/* ---------- CARTA ---------- */
.chero { position: relative; padding: calc(var(--hd-h) + 5vh) 0 0; overflow: hidden; }
.chero__in { position: relative; z-index: 2; display: grid; gap: 1.4rem; justify-items: start; }
.chero__t { font-size: clamp(3.6rem, 16vw, 13rem); font-weight: 480; letter-spacing: -.05em; line-height: .9; }
.chero__intro { max-width: 46ch; color: var(--fg-2); font-size: 1.0625rem; }
.chero__plates { display: flex; justify-content: center; gap: 0; padding: 3.5rem var(--gut) 3.5rem; position: relative; z-index: 3; max-width: calc(var(--maxw) + 2 * 64px); margin-inline: auto; }
.chero__plate { flex: none; width: clamp(92px, 15vw, 210px); aspect-ratio: 1; border-radius: 50%; overflow: hidden; margin-left: clamp(-34px, -2.4vw, -14px); outline: 6px solid var(--green); box-shadow: 0 24px 40px -20px rgba(0, 0, 0, .6); }
.chero__plate:first-child { margin-left: 0; }
.chero__plate img { width: 100%; height: 100%; object-fit: cover; }
.chero__plate:nth-child(odd) { margin-top: 22px; }
@media (max-width: 699px) { .chero__plate:nth-child(n+5) { display: none; } .chero__plate { width: 26vw; } }
.seg { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin: .6rem 0 0; padding: 4px; border: 1px solid var(--line); border-radius: 18px; width: min(100%, 560px); }
.seg__l { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.seg__in { position: absolute; opacity: 0; pointer-events: none; }
.seg__opt { display: grid; gap: 2px; padding: .8rem 1rem; border-radius: 14px; cursor: pointer; transition: background-color var(--d-med), color var(--d-med); min-height: 56px; align-content: center; }
.seg__opt span { font: 560 1.0625rem/1.1 var(--f-display); }
.seg__opt small { font-size: .75rem; color: var(--fg-2); }
.seg__in:checked + .seg__opt { background: var(--ivory); color: var(--ink); }
.seg__in:checked + .seg__opt small { color: var(--mute-l); }
.seg__in:focus-visible + .seg__opt { outline: 2px solid var(--gold); outline-offset: 2px; }
.chero__pdf { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; font-weight: 600; font-size: .9375rem; text-decoration: none; }

@media (min-width: 1000px) {
  .chero { padding-top: calc(var(--hd-h) + 8vh); }
  .chero__in { grid-template-columns: 1fr 1fr; column-gap: 4vw; align-items: end; }
  .chero__in .crumbs, .chero__t { grid-column: 1 / -1; }
  .chero__intro { grid-column: 1; }
  .seg { grid-column: 2; grid-row: 3 / 5; align-self: end; }
  .chero__pdf { grid-column: 1; }
}

/* Filtro por local (radios + :has, funciona sin JS) */
.only-v { display: none; }
body:has(#local-vinuelas:checked) .only-v { display: inline; }
body:has(#local-vinuelas:checked) .only-l { display: none; }
.dish .pv, .dish .nv { display: none; }
.dish.no-l { display: none; }
body:has(#local-vinuelas:checked) .dish.no-l { display: grid; }
body:has(#local-vinuelas:checked) .dish.no-v { display: none; }
body:has(#local-vinuelas:checked) .dish .pl { display: none; }
body:has(#local-vinuelas:checked) .dish .pv { display: inline; }
body:has(#local-vinuelas:checked) .dish .nv { display: inline; }

.catnav { position: sticky; top: 0; z-index: 30; background: var(--ivory); border-bottom: 1px solid rgba(24, 23, 20, .12); transition: top .45s var(--ease-out); }
html.hd-on .catnav { top: var(--hd-h); }
.catnav ul { display: flex; gap: .3rem; overflow-x: auto; padding: .6rem var(--gut); scrollbar-width: none; scroll-snap-type: x proximity; max-width: calc(var(--maxw) + 2 * 64px); margin-inline: auto; }
.catnav ul::-webkit-scrollbar { display: none; }
.catnav li { flex: none; scroll-snap-align: start; }
.catnav a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 1rem; border-radius: 999px; font-weight: 500; font-size: .9375rem; text-decoration: none; color: var(--ink); white-space: nowrap; transition: background-color var(--d-med), color var(--d-med); }

.catnav a[aria-current] { background: var(--ink); color: var(--ivory); }

.carta { padding: 2.4rem 0 var(--sec); }
.carta__note { font-size: .875rem; color: var(--fg-2); max-width: 70ch; padding-bottom: 1rem; }
.carta__note strong { color: var(--fg); }
.carta__star::before { content: ""; display: inline-block; width: .5em; height: .5em; margin: 0 .35em 0 .1em; border-radius: 50%; background: var(--wine); vertical-align: .05em; }
.cat { display: grid; gap: 1.6rem; padding: clamp(3rem, 7vw, 6rem) 0; border-top: 1px solid var(--line); scroll-margin-top: calc(var(--hd-h) + 70px); }
.cat__head { display: grid; gap: .8rem; align-content: start; }
.cat__t { font-size: clamp(2.6rem, 9vw, 5.6rem); letter-spacing: -.04em; line-height: .95; }
.cat__intro { color: var(--fg-2); max-width: 36ch; }
.cat__ph { display: flex; gap: 12px; margin-top: .8rem; align-items: flex-end; }
.cat__f--0 { width: 46%; max-width: 260px; }
.cat__f--1 { width: 30%; max-width: 170px; }
.cat__list { display: grid; }
.dish { display: grid; grid-template-columns: auto 1fr auto; column-gap: .6rem; align-items: baseline; padding: .95rem 0; border-bottom: 1px solid var(--line); }
.dish__n { font: 500 1.2rem/1.25 var(--f-display); letter-spacing: -.005em; font-variation-settings: "SOFT" 50; }
.dish--star .dish__n::after { content: ""; display: inline-block; width: .42em; height: .42em; margin-left: .45em; border-radius: 50%; background: var(--wine); vertical-align: .2em; }
.dish__dots { border-bottom: 1px dotted color-mix(in srgb, var(--fg) 30%, transparent); transform: translateY(-.3em); min-width: 1rem; }
.dish__p { font: 600 1rem/1 var(--f-sans); font-variant-numeric: tabular-nums; white-space: nowrap; }
.dish__d { grid-column: 1 / -1; font-size: .875rem; color: var(--fg-2); margin-top: .2rem; }
@media (min-width: 1000px) {
  .cat { grid-template-columns: 5fr 7fr; column-gap: 6vw; }
  .cat__head { position: sticky; top: calc(var(--hd-h) + 90px); align-self: start; }
  .cat--plain .cat__head { position: static; }
  .dish__n { font-size: 1.32rem; }
}
.cat--vinos .vinos { display: grid; gap: 2rem; }
.vinos__t { font: 600 .8125rem/1.3 var(--f-sans); color: var(--fg-2); padding-bottom: .4rem; border-bottom: 1px solid var(--fg); margin-bottom: .2rem; }
@media (min-width: 700px) { .cat--vinos .vinos { grid-template-columns: 1fr 1fr; column-gap: 3rem; } }
.sidrabox { margin-top: 1.4rem; padding: 1.4rem; background: var(--green); color: var(--ivory); border-radius: 4px; display: grid; gap: .5rem; max-width: 420px; }
.sidrabox__t { font-size: 1.6rem; color: var(--gold); }
.sidrabox p { color: var(--mute-d); font-size: .9375rem; }
.alerg { margin-top: 2rem; padding: 1.6rem; border: 1px solid var(--line); border-radius: 4px; display: grid; gap: .6rem; max-width: 760px; }
.alerg__t { font-size: 1.6rem; }
.alerg p { color: var(--fg-2); }

/* ---------- ESPECIALIDADES ---------- */
.ehero { padding: calc(var(--hd-h) + 6vh) 0 clamp(4rem, 8vw, 7rem); }
.ehero__in { display: grid; gap: 1.6rem; }
.ehero__t { font-size: clamp(3rem, 12.4vw, 10.6rem); font-weight: 480; letter-spacing: -.048em; line-height: .9; }
.ehero__t .ln { display: block; }
.ehero__t .ln:last-child { padding-left: 10vw; }
.ehero__intro { max-width: 44ch; color: var(--fg-2); font-size: 1.0625rem; }
.ehero__idx { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; margin-top: 1rem; }
.ehero__idx a { display: flex; align-items: center; gap: .8rem; min-height: 64px; padding: .5rem .9rem .5rem .5rem; border: 1px solid var(--line); border-radius: 999px; text-decoration: none; font: 500 1.05rem/1.1 var(--f-display); transition: background-color var(--d-med), border-color var(--d-med); }

.ehero__idx img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; flex: none; }
.ehero__glass { width: 48px; height: 48px; border-radius: 50%; flex: none; background: var(--green) radial-gradient(circle at 50% 70%, var(--gold) 0 30%, transparent 31%); }
@media (min-width: 1000px) { .ehero__idx { grid-template-columns: repeat(4, auto); justify-content: start; } .ehero__intro { margin-left: 10vw; } }

.esp { padding: var(--sec) 0; overflow: clip; }
.esp__big { font-size: clamp(3.4rem, 14vw, 11rem); font-weight: 480; letter-spacing: -.05em; line-height: .9; }
.esp__big .ln { display: block; }
.esp__mid { font-size: clamp(2.4rem, 8.4vw, 5.8rem); letter-spacing: -.04em; line-height: .95; }
.esp__lead { font: 420 clamp(1.25rem, 4vw, 1.75rem)/1.3 var(--f-display); font-variation-settings: "SOFT" 60; }
.esp__list { display: grid; margin: .4rem 0; }
.esp__row { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: .9rem 0; border-bottom: 1px solid var(--line); }
.esp__row:first-child { border-top: 1px solid var(--line); }
.esp__rn { font: 500 1.15rem/1.25 var(--f-display); display: grid; }
.esp__rn small { font: 400 .8125rem/1.4 var(--f-sans); color: var(--fg-2); }
.esp__rp { font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.esp__note { font-size: .9375rem; color: var(--accent); font-weight: 600; }

/* Cachopos: tira vertical de la tabla + texto */
.esp--cachopo .esp__in { display: grid; grid-template-columns: 38% 1fr; gap: 1.4rem; align-items: start; }
.esp__strip { margin: 0; position: sticky; top: calc(var(--hd-h) + 2vh); }
.esp__strip img { width: 100%; border-radius: var(--r); box-shadow: 0 30px 60px -30px rgba(24, 23, 20, .5); }
html.js [data-reveal-strip] img { clip-path: inset(0 0 100% 0); transition: clip-path 1.4s var(--ease-out); }
html.js [data-reveal-strip].is-in img { clip-path: inset(0); }
.esp--cachopo .esp__body { display: grid; gap: 1.2rem; align-content: start; justify-items: start; }
.esp--cachopo .esp__big { font-size: clamp(2.6rem, 11vw, 11rem); }
.esp--cachopo .esp__body > p:not(.esp__lead):not(.esp__note) { color: var(--fg-2); }
.esp--cachopo .esp__list { width: 100%; }
@media (min-width: 1000px) {
  .esp--cachopo .esp__in { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .esp__strip { grid-column: 1 / 4; }
  .esp--cachopo .esp__body { grid-column: 5 / 12; padding-top: 6vw; gap: 1.6rem; }
}

/* Fabada: palabra enorme con el plato encima */
.esp--fabada .esp__in { display: grid; justify-items: center; text-align: center; }
.fab__word { font-size: clamp(5rem, 30vw, 26rem); font-weight: 460; letter-spacing: -.06em; line-height: .8; color: var(--fg); }
.fab__ph { width: min(64vw, 380px); margin-top: -12vw; position: relative; z-index: 2; }
.fab__ph .fr__m { outline: 10px solid var(--green); box-shadow: 0 40px 80px -30px rgba(0, 0, 0, .55); }
.fab__cols { display: grid; gap: 2rem; margin-top: 3rem; text-align: left; max-width: 1000px; }
.fab__lead { font: 420 clamp(1.4rem, 4.6vw, 2.3rem)/1.25 var(--f-display); font-variation-settings: "SOFT" 60; }
.fab__side { display: grid; gap: 1.2rem; color: var(--fg-2); }
.esp__list--light .esp__rn, .esp__list--light .esp__rp { color: var(--fg); }
@media (min-width: 1000px) { .fab__cols { grid-template-columns: 1.2fr 1fr; column-gap: 5vw; } .fab__ph { margin-top: -9vw; } }

/* Chorizo + Cabrales */
.esp--chorizo .esp__in { display: grid; gap: 2rem; }
.cho__body { display: grid; gap: 1.2rem; align-content: start; }
.cab { display: grid; grid-template-columns: 40% 1fr; gap: 1.4rem; margin-top: 3rem; align-items: start; }
.cab__body { display: grid; gap: 1rem; }
.cab__body > p { color: var(--fg-2); }
.cab__t { font-size: clamp(1.8rem, 5.6vw, 3.4rem); letter-spacing: -.03em; line-height: 1; }
@media (min-width: 1000px) {
  .esp--chorizo .esp__in { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; row-gap: 0; }
  .cho__ph { grid-column: 1 / 7; grid-row: 1; }
  .cho__body { grid-column: 8 / 12; grid-row: 1; align-self: center; }
  .cab { grid-column: 3 / 12; grid-template-columns: 4fr 7fr; column-gap: 5vw; margin-top: 10vw; }
}

/* Sidra: ilustración + pasos */
.esp--sidra .esp__in { display: grid; grid-template-columns: 1fr 36%; gap: 2rem 16px; }
.esp--sidra .esp__big { grid-column: 1 / -1; }
.sid__ill { grid-column: 2; grid-row: 2 / 4; color: var(--ivory); }
.sid__steps { grid-column: 1; grid-row: 2; display: grid; gap: 1.6rem; counter-reset: s; }
.sid__steps li { counter-increment: s; display: grid; grid-template-columns: 2.2rem 1fr; column-gap: .6rem; }
.sid__steps li::before { content: counter(s); grid-row: 1 / 3; font: 500 1.6rem/1 var(--f-display); color: var(--gold); }
.sid__steps h3 { font-size: 1.5rem; letter-spacing: -.01em; }
.sid__steps p { color: var(--fg-2); margin-top: .3rem; }
.sid__brands { grid-column: 1; grid-row: 3; padding-top: 1.4rem; border-top: 1px solid var(--line); }
.sid__brands p { font-size: .8125rem; color: var(--fg-2); }
.sid__brands ul { display: flex; flex-wrap: wrap; gap: .2rem 1.2rem; margin-top: .4rem; font: 500 clamp(1.4rem, 4vw, 2.2rem)/1.2 var(--f-display); }
@media (min-width: 1000px) {
  .esp--sidra .esp__in { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .sid__steps { grid-column: 1 / 7; margin-top: 3rem; }
  .sid__brands { grid-column: 1 / 7; margin-top: 2rem; }
  .sid__ill { grid-column: 8 / 12; grid-row: 1 / 4; max-width: 420px; justify-self: center; width: 100%; }
}

/* Postre */
.esp--postre .esp__in { display: grid; grid-template-columns: auto 1fr; gap: 1.4rem 2rem; align-items: center; }
.pos__ph { width: clamp(110px, 18vw, 190px); }
.pos__body { display: grid; gap: 1rem; justify-items: start; }
.pos__body > p { color: var(--fg-2); max-width: 52ch; }
@media (max-width: 699px) { .esp--postre .esp__in { grid-template-columns: 1fr; } }

/* ---------- NOSOTROS ---------- */
.nhero { padding: calc(var(--hd-h) + 6vh) 0 var(--sec); overflow: clip; }
.nhero__in { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1.6rem 16px; }
.nhero__in .crumbs { grid-column: 1 / -1; }
.nhero__t { grid-column: 1 / -1; position: relative; z-index: 2; font-size: clamp(3.2rem, 15vw, 12rem); font-weight: 470; letter-spacing: -.05em; line-height: .88; }
.nhero__t .ln { display: block; }
.nhero__t .ln:nth-child(2) { padding-left: .9em; }
.nhero__ph { grid-column: 2 / -1; margin-top: -2rem; }
.nhero__intro { grid-column: 1 / -1; font: 420 clamp(1.2rem, 4vw, 1.6rem)/1.35 var(--f-display); color: var(--fg-2); max-width: 36ch; font-variation-settings: "SOFT" 60; }
@media (min-width: 1000px) {
  .nhero__in { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .nhero__t { grid-column: 1 / 13; grid-row: 2; align-self: center; }
  .nhero__ph { grid-column: 8 / 12; grid-row: 2 / 4; margin: 0; }
  .nhero__intro { grid-column: 1 / 6; grid-row: 3; align-self: end; }
}

.nos-es { padding: var(--sec) 0; }
.nos-es__in { display: grid; gap: 2rem; }
.nos-es__t { font-size: clamp(2.4rem, 8.6vw, 6.4rem); letter-spacing: -.04em; line-height: .95; }
.nos-es__big { font: 420 clamp(1.4rem, 4.6vw, 2.6rem)/1.25 var(--f-display); letter-spacing: -.015em; max-width: 30ch; font-variation-settings: "SOFT" 60; }
.nos-es__duo { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1.4rem 14px; margin-top: 1rem; }
.nos-es__a { grid-column: 1 / -1; }
.nos-es__b { grid-column: 3 / -1; }
@media (min-width: 1000px) {
  .nos-es__in { grid-template-columns: 5fr 7fr; column-gap: 6vw; }
  .nos-es__t { grid-column: 1 / -1; }
  .nos-es__big { grid-column: 2; }
  .nos-es__duo { grid-column: 1 / -1; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .nos-es__a { grid-column: 1 / 7; }
  .nos-es__b { grid-column: 8 / 11; margin-top: 10vw; }
}

.nos-cult { padding: var(--sec) 0; }
.nos-cult__t { font-size: clamp(2.4rem, 8.4vw, 6.2rem); letter-spacing: -.04em; line-height: .95; max-width: 15ch; margin-bottom: 3rem; }
.nos-cult__list { display: grid; gap: 0; margin: 0; }
.nos-cult__item { display: grid; gap: .6rem; padding: 1.6rem 0; border-top: 1px solid var(--line); }
.nos-cult__item dt { font: 480 clamp(2rem, 7vw, 4.4rem)/1 var(--f-display); letter-spacing: -.035em; color: var(--gold); }
.nos-cult__item dd { margin: 0; color: var(--fg-2); max-width: 46ch; }
@media (min-width: 1000px) { .nos-cult__item { grid-template-columns: 1fr 1fr; align-items: baseline; column-gap: 4vw; padding: 2.2rem 0; } .nos-cult__item dd { font-size: 1.125rem; } }

.nos-share { padding: var(--sec) 0; }
.nos-share__in { display: grid; gap: 2rem; }
.nos-share__ph { width: 80%; }
.nos-share__body { display: grid; gap: 1.2rem; }
.nos-share__body > p { color: var(--fg-2); max-width: 46ch; }
.nos-share__t { font-size: clamp(2.4rem, 8vw, 5.6rem); letter-spacing: -.04em; line-height: .96; max-width: 13ch; }
@media (min-width: 1000px) { .nos-share__in { grid-template-columns: 4fr 1fr 6fr; align-items: center; } .nos-share__ph { width: 100%; grid-column: 1; } .nos-share__body { grid-column: 3; } }

.nos-coc { padding: var(--sec) 0; }
.nos-coc__in { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 2rem 14px; }
.nos-coc__body { grid-column: 1 / -1; display: grid; gap: 1.2rem; justify-items: start; }
.nos-coc__body > p:not(.nos-coc__lead) { color: var(--fg-2); }
.nos-coc__t { font-size: clamp(2.4rem, 8.4vw, 6rem); letter-spacing: -.04em; line-height: .95; }
.nos-coc__lead { font: 420 clamp(1.25rem, 4vw, 1.8rem)/1.3 var(--f-display); max-width: 30ch; font-variation-settings: "SOFT" 60; }
.nos-coc__act { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.6rem; margin-top: .6rem; }
.nos-coc__ph { grid-column: 2 / -1; }
.nos-coc__ph2 { grid-column: 1 / 4; margin-top: -30%; position: relative; z-index: 2; }
.nos-coc__ph2 .fr__m { outline: 8px solid var(--ivory); }
@media (min-width: 1000px) {
  .nos-coc__in { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .nos-coc__body { grid-column: 1 / 7; grid-row: 1; align-self: center; }
  .nos-coc__ph { grid-column: 8 / 12; grid-row: 1; }
  .nos-coc__ph2 { grid-column: 7 / 9; grid-row: 1; align-self: end; margin: 0 0 -3vw; }
}

.nos-gal { padding: var(--sec) 0; }
.nos-gal__t { font-size: clamp(2.6rem, 10vw, 7.6rem); letter-spacing: -.045em; line-height: .92; margin-bottom: 3rem; }
.nos-gal__grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 2rem 14px; }
.ng1 { grid-column: 1 / -1; } .ng2 { grid-column: 2 / -1; } .ng3 { grid-column: 1 / 4; } .ng4 { grid-column: 4 / -1; margin-top: 4rem; }
.nos-gal__links { display: flex; flex-wrap: wrap; gap: .4rem 2rem; margin-top: 3rem; }
@media (min-width: 1000px) {
  .nos-gal__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .ng1 { grid-column: 1 / 8; } .ng2 { grid-column: 9 / 13; margin-top: 8vw; }
  .ng3 { grid-column: 3 / 6; margin-top: -6vw; } .ng4 { grid-column: 7 / 10; margin-top: 3vw; }
}

/* ---------- SEDE (Labradores / Viñuelas) ---------- */
.shero { padding: calc(var(--hd-h) + 5vh) 0 var(--sec); overflow: clip; }
.shero__in { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1.6rem 16px; }
.shero__in .crumbs { grid-column: 1 / -1; }
.shero__t { grid-column: 1 / -1; position: relative; z-index: 2; font-size: clamp(3.4rem, 17vw, 13rem); font-weight: 470; letter-spacing: -.055em; line-height: .86; }
.shero__t .ln { display: block; }
.shero__t .ln:last-child { padding-left: .5em; }
.shero__ph { grid-column: 1 / -1; margin-top: -3rem; }
.shero__side { grid-column: 1 / -1; display: grid; gap: 1.2rem; justify-items: start; }
.shero__lead { font: 420 clamp(1.2rem, 4vw, 1.6rem)/1.35 var(--f-display); max-width: 34ch; font-variation-settings: "SOFT" 60; }
.shero__act { display: flex; flex-wrap: wrap; gap: .7rem; }
@media (min-width: 1000px) {
  .shero__in { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .shero__t { grid-column: 1 / 13; grid-row: 2; }
  .shero__side { grid-column: 1 / 6; grid-row: 3; align-self: end; }
  .shero--labradores .shero__ph { grid-column: 7 / 13; grid-row: 3; margin: 1rem 0 0; }
  .shero--labradores .shero__side { align-self: start; margin-top: 1rem; }
  .shero--vinuelas .shero__ph { grid-column: 7 / 12; grid-row: 1 / 4; margin: 0; }
  .shero--vinuelas .shero__t { align-self: center; }
  .shero__in .crumbs { grid-column: 1 / 7; grid-row: 1; }
}

.sinfo { padding: var(--sec) 0; }
.sinfo__in { display: grid; gap: 2.4rem; }
.sinfo__t { font-size: clamp(2.4rem, 8vw, 5.4rem); letter-spacing: -.04em; line-height: .95; }
.sinfo__col { display: grid; gap: .8rem; align-content: start; justify-items: start; }
.sinfo__h { font: 600 .8125rem/1.3 var(--f-sans); color: var(--fg-2); padding-bottom: .5rem; border-bottom: 1px solid var(--line); width: 100%; }
.sinfo__addr { font: 450 1.5rem/1.25 var(--f-display); }
.sinfo__tip { color: var(--fg-2); max-width: 38ch; }
.sinfo__links { display: flex; flex-wrap: wrap; gap: 0 1.4rem; }
.sinfo__tels { display: grid; gap: .6rem; width: 100%; }
.sinfo__tels a, .cocard__call, .panel__call { display: flex; align-items: center; gap: .9rem; min-height: 64px; padding: .7rem 1.1rem; border: 1px solid var(--line); border-radius: 6px; text-decoration: none; font: 500 1.4rem/1.1 var(--f-display); transition: border-color var(--d-med), background-color var(--d-med); }
.sinfo__tels a span, .cocard__call span, .panel__call span { display: grid; gap: 2px; }
.sinfo__tels small, .cocard__call small, .panel__call small { font: 500 .75rem/1.2 var(--f-sans); color: var(--fg-2); }

.sinfo__tels .ico, .cocard__call .ico, .panel__call .ico { width: 22px; height: 22px; color: var(--accent); }
.sinfo__fine { font-size: .8125rem; color: var(--fg-2); }
.sinfo__col--hours .hours { max-width: 460px; }
@media (min-width: 1000px) {
  .sinfo__in { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 3vw; }
  .sinfo__t { grid-column: 1 / -1; }
  .sinfo__map { grid-column: 1 / -1; }
}

.map { width: 100%; }
.map__load, .map__frame { width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: 6px; display: block; }
.map__load { display: grid; place-content: center; justify-items: center; gap: .4rem; background: color-mix(in srgb, var(--fg) 6%, transparent); border: 1px dashed color-mix(in srgb, var(--fg) 25%, transparent); font-weight: 600; transition: background-color var(--d-med); }

.map__load .ico { width: 28px; height: 28px; }
.map__load small { font-weight: 400; font-size: .8125rem; color: var(--fg-2); }
@media (max-width: 699px) { .map__load, .map__frame { aspect-ratio: 4 / 3; } }

.sgal { padding: var(--sec) 0; }
.sgal__t { font-size: clamp(2.4rem, 9vw, 6.8rem); letter-spacing: -.045em; line-height: .94; margin-bottom: 3rem; max-width: 12ch; }
.sgal__grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 2rem 14px; }
.sg1 { grid-column: 1 / 6; } .sg2 { grid-column: 2 / -1; } .sg3 { grid-column: 1 / -1; }
@media (min-width: 1000px) {
  .sgal__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
  .sg1 { grid-column: 1 / 6; } .sg2 { grid-column: 7 / 11; margin-top: 10vw; } .sg3 { grid-column: 3 / 9; margin-top: -4vw; }
}

.sonly { padding: var(--sec) 0; }
.sonly__in { display: grid; gap: 2rem; }
.sonly__head { display: grid; gap: 1rem; align-content: start; justify-items: start; }
.sonly__head > p { color: var(--fg-2); max-width: 40ch; }
.sonly__t { font-size: clamp(2.2rem, 7.4vw, 5rem); letter-spacing: -.04em; line-height: .96; max-width: 12ch; }
.sonly__list li { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: 1.1rem 0; border-bottom: 1px solid var(--line); }
.sonly__list li:first-child { border-top: 1px solid var(--line); }
.sonly__n { display: grid; font: 480 clamp(1.4rem, 4vw, 2rem)/1.15 var(--f-display); letter-spacing: -.015em; }
.sonly__n small { font: 400 .875rem/1.4 var(--f-sans); color: var(--fg-2); }
.sonly__p { font-weight: 600; font-variant-numeric: tabular-nums; }
@media (min-width: 1000px) { .sonly__in { grid-template-columns: 5fr 7fr; column-gap: 6vw; } }

.sother { padding: 0 0 var(--sec); }
.sother__in { display: grid; grid-template-columns: 34% 1fr auto; gap: 1.2rem; align-items: center; padding-top: var(--sec); text-decoration: none; }
.sother__ph { overflow: hidden; border-radius: var(--r); aspect-ratio: 4 / 3; }
.sother__ph img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease-out); }
.sother__txt { display: grid; gap: .3rem; }
.sother__k { font-size: .8125rem; color: var(--fg-2); }
.sother__name { font: 480 clamp(1.8rem, 6vw, 4.4rem)/1 var(--f-display); letter-spacing: -.035em; }
.sother__addr { color: var(--fg-2); font-size: .9375rem; }
.sother__go { width: 56px; height: 56px; display: grid; place-items: center; border-radius: 50%; background: var(--wine); color: var(--ivory); transition: transform var(--d-med) var(--ease-out); }
@media (hover: hover) and (pointer: fine) { .sother__in:hover .sother__ph img { transform: scale(1.05); } .sother__in:hover .sother__go { transform: translateX(6px); } }
@media (max-width: 599px) { .sother__in { grid-template-columns: 1fr auto; } .sother__ph { grid-column: 1 / -1; } }

/* ---------- RESTAURANTES ---------- */
.rhero { padding: calc(var(--hd-h) + 6vh) 0 2rem; }
.rhero__in { display: grid; gap: 1.6rem; }
.rhero__t { font-size: clamp(3rem, 13vw, 11rem); font-weight: 470; letter-spacing: -.05em; line-height: .9; }
.rhero__t .ln { display: block; }
.rhero__t .ln:last-child { padding-left: 1.2em; }
.rhero__intro { color: var(--fg-2); max-width: 46ch; font-size: 1.0625rem; }
@media (min-width: 1000px) { .rhero__intro { margin-left: auto; margin-right: 8vw; margin-top: -2rem; } }
.rduo { padding: 3rem 0 var(--sec); }
.rduo__in { display: grid; gap: 5rem; }
.rcard { display: grid; gap: 1rem; align-content: start; justify-items: start; }
.rcard__ph { width: 100%; margin-bottom: .6rem; }
.rcard__name { font-size: clamp(2.2rem, 7vw, 4.4rem); letter-spacing: -.035em; }
.rcard__name a { text-decoration: none; }
.rcard__addr { font-weight: 600; }
.rcard__hint { color: var(--fg-2); max-width: 42ch; }
.rcard__tels { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1.4rem; }
.rcard__tels a { display: inline-flex; align-items: center; gap: .45rem; min-height: 44px; font-weight: 600; font-size: 1.0625rem; text-decoration: none; }
.rcard__closed { font-size: .875rem; color: var(--fg-2); }
.rcard__act { display: flex; flex-wrap: wrap; gap: .7rem; margin-bottom: .6rem; }
@media (min-width: 1000px) { .rduo__in { grid-template-columns: 1fr 1fr; column-gap: 4vw; } .rcard--vinuelas { margin-top: 10vw; } }

.cmp { padding: var(--sec) 0; }
.cmp__in { display: grid; gap: 1.4rem; }
.cmp__t { font-size: clamp(2.4rem, 8.4vw, 6rem); letter-spacing: -.04em; line-height: .95; }
.cmp__p { color: var(--fg-2); max-width: 52ch; }
.cmp__wrap { overflow-x: auto; margin-top: 1rem; }
.cmp__tbl { width: 100%; min-width: 520px; font-size: .9375rem; }
.cmp__tbl th, .cmp__tbl td { text-align: left; padding: .9rem .8rem .9rem 0; border-bottom: 1px solid var(--line); vertical-align: top; font-variant-numeric: tabular-nums; }
.cmp__tbl thead th { font: 500 1.5rem/1 var(--f-display); color: var(--gold); padding-bottom: 1rem; }
.cmp__tbl tbody th { font-weight: 600; }
.cmp__off { color: var(--fg-2); }
.cmp__tbl tr.is-today th, .cmp__tbl tr.is-today td { background: rgba(244, 239, 229, .06); }
.cmp__tbl tr.is-today th::after { content: " · hoy"; color: var(--gold); font-weight: 500; }

/* ---------- RESERVAS ---------- */
.reshero { padding: calc(var(--hd-h) + 5vh) 0 clamp(3rem, 6vw, 5rem); }
.reshero__in { display: grid; gap: 1.2rem; }
.reshero__t { font-size: clamp(3.2rem, 15vw, 11rem); font-weight: 470; letter-spacing: -.05em; line-height: .88; }
.reshero__t .ln { display: block; }
.reshero__t .ln:last-child { padding-left: .9em; }
.reshero__intro { color: var(--fg-2); font-size: 1.125rem; }
.pick { padding: clamp(3rem, 6vw, 5rem) 0 2rem; }
.pick__t, .panel__t { display: flex; align-items: center; gap: .8rem; font-size: clamp(1.8rem, 5vw, 3rem); letter-spacing: -.025em; margin-bottom: 1.6rem; }
.panel__t:focus { outline: none; }
.pick__n { display: grid; place-items: center; width: 2.2rem; height: 2.2rem; border-radius: 50%; background: var(--wine); color: var(--ivory); font: 600 1rem/1 var(--f-sans); flex: none; }
.pick__opts { display: grid; gap: 1rem; }
.pick__opt { position: relative; display: grid; grid-template-columns: 96px 1fr; gap: 1rem; align-items: center; padding: .7rem; padding-right: 3.6rem; border: 1.5px solid var(--line); border-radius: 10px; text-align: left; background: rgba(255, 255, 255, .35); transition: border-color var(--d-med), background-color var(--d-med), transform var(--d-fast) var(--ease-out); }
.pick__opt:active { transform: scale(.985); }

.pick__opt[aria-pressed="true"] { border-color: var(--wine); background: #fff; box-shadow: 0 0 0 3px rgba(120, 30, 44, .12); }
.pick__ph { width: 96px; height: 80px; border-radius: 6px; overflow: hidden; }
.pick__ph img { width: 100%; height: 100%; object-fit: cover; }
.pick__txt { display: grid; gap: .25rem; }
.pick__name { font: 500 clamp(1.4rem, 4.4vw, 2rem)/1.05 var(--f-display); letter-spacing: -.02em; }
.pick__addr { font-size: .875rem; color: var(--fg-2); }
.pick__check { position: absolute; right: 1.1rem; top: 50%; width: 26px; height: 26px; margin-top: -13px; border-radius: 50%; border: 1.5px solid var(--line); transition: background-color var(--d-med), border-color var(--d-med); }
.pick__opt[aria-pressed="true"] .pick__check { background: var(--wine) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F4EFE5' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4 8-9'/%3E%3C/svg%3E") center / 16px no-repeat; border-color: var(--wine); }
@media (min-width: 900px) { .pick__opts { grid-template-columns: 1fr 1fr; } .pick__opt { grid-template-columns: 150px 1fr; } .pick__ph { width: 150px; height: 112px; } }

.panels { padding-bottom: var(--sec); }
.panel { padding: 3rem 0 0; scroll-margin-top: calc(var(--hd-h) + 12px); }
.panel + .panel { border-top: 1px solid var(--line); margin-top: 3rem; }
html.has-pick .panel + .panel { border: 0; margin: 0; }
.panel__grid { display: grid; gap: 2.4rem; }
.panel__h { font-size: 1.6rem; letter-spacing: -.015em; margin-bottom: .5rem; }
.panel__h--sm { font-size: 1.2rem; margin-top: 1.6rem; }
.panel__p { color: var(--fg-2); margin-bottom: 1rem; max-width: 52ch; }
.panel__online, .panel__phone { display: grid; align-content: start; justify-items: start; gap: .2rem; }
.panel__phone { gap: .6rem; }
.panel__phone .hours { max-width: 420px; }
.panel__call { width: 100%; max-width: 420px; }
.panel__call--alt { font-size: 1.15rem; min-height: 56px; }
.fork { width: 100%; min-height: 220px; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: #fff; margin-bottom: .6rem; display: grid; }
.fork__ph { place-self: center; padding: 2rem; text-align: center; color: var(--mute-l); font-size: .9375rem; }
.fork__frame { width: 100%; min-height: 720px; border: 0; display: block; }
.panel__back { display: inline-flex; align-items: center; min-height: 44px; margin-top: 2rem; font-weight: 600; font-size: .9375rem; }
.panel__more { margin-top: .6rem; }
@media (min-width: 1000px) { .panel__grid { grid-template-columns: 7fr 4fr; column-gap: 4vw; } }

/* ---------- CONTACTO ---------- */
.cohero { padding: calc(var(--hd-h) + 6vh) 0 2rem; }
.cohero__in { display: grid; gap: 1.2rem; }
.cohero__t { font-size: clamp(3.6rem, 18vw, 14rem); font-weight: 470; letter-spacing: -.055em; line-height: .86; }
.cohero__intro { color: var(--fg-2); max-width: 44ch; font-size: 1.125rem; }
.cosedes { padding: 2rem 0 var(--sec); }
.cosedes__in { display: grid; gap: 4rem; }
.cocard { display: grid; gap: 1.2rem; align-content: start; }
.cocard__name { font-size: clamp(2.2rem, 7vw, 4rem); letter-spacing: -.035em; }
.cocard__calls { display: grid; gap: .6rem; }
.cocard__row { display: grid; gap: .5rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.cocard__h { font: 600 .8125rem/1.3 var(--f-sans); color: var(--fg-2); }
.cocard address { font: 450 1.3rem/1.3 var(--f-display); }
.cocard__tip { color: var(--fg-2); font-size: .9375rem; }
.cocard__links { display: flex; flex-wrap: wrap; gap: 0 1.4rem; }
.cocard__hours { display: grid; gap: .4rem; max-width: 460px; font-size: .9375rem; }
.cocard__hours p { display: flex; justify-content: space-between; gap: 1rem; }
.cocard__hours p span:last-child { color: var(--fg-2); text-align: right; font-variant-numeric: tabular-nums; }
@media (min-width: 1000px) { .cosedes__in { grid-template-columns: 1fr 1fr; column-gap: 5vw; } }
.coother { padding: var(--sec) 0; }
.coother__in { display: grid; gap: 1.6rem; }
.coother__t { font-size: clamp(2.2rem, 7vw, 4.6rem); letter-spacing: -.035em; }
.coother__list { display: grid; gap: .8rem; }
.coother__list a { display: inline-flex; align-items: center; gap: .9rem; min-height: 56px; text-decoration: none; font: 450 clamp(1.2rem, 4vw, 1.8rem)/1.1 var(--f-display); word-break: break-word; }
.coother__list a span { display: grid; gap: 3px; }
.coother__list small { font: 500 .75rem/1.2 var(--f-sans); color: var(--fg-2); }
.coother__list .ico { width: 24px; height: 24px; color: var(--gold); }
.coother__p { color: var(--fg-2); font-size: .9375rem; }

/* ---------- LEGALES y 404 ---------- */
.legal { padding: calc(var(--hd-h) + 6vh) 0 var(--sec); }
.legal__in { max-width: 820px; display: grid; gap: 1.1rem; }
.legal__t { font-size: clamp(2.6rem, 9vw, 5.6rem); letter-spacing: -.04em; }
.legal__intro { font: 420 1.3rem/1.4 var(--f-display); }
.legal__upd { font-size: .8125rem; color: var(--fg-2); }
.legal section { padding-top: 1.4rem; border-top: 1px solid var(--line); display: grid; gap: .6rem; }
.legal h2 { font-size: 1.6rem; }
.legal p, .legal li { color: var(--fg-2); }
.legal ul { list-style: disc; padding-left: 1.2rem; display: grid; gap: .3rem; }
.nf { min-height: 100svh; display: grid; align-items: center; padding: calc(var(--hd-h) + 4vh) 0 4rem; }
.nf__in { display: grid; gap: 1.6rem; justify-items: start; }
.nf__t { font-size: clamp(3.4rem, 15vw, 12rem); font-weight: 470; letter-spacing: -.05em; line-height: .88; }
.nf__t .ln { display: block; }
.nf__p { color: var(--fg-2); max-width: 40ch; font-size: 1.125rem; }
.nf__act { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.6rem; }
@media (min-width: 1000px) { .sinfo__map .map__load, .sinfo__map .map__frame { aspect-ratio: 21 / 8; } }
