:root {
  --ink: #182019;
  --ink-soft: #3f4b40;
  --cream: #f3edde;
  --paper: #fbf8f0;
  --paper-deep: #e7ddc8;
  --green: #1d3a2b;
  --green-light: #315742;
  --gold: #b38745;
  --red: #7f2d25;
  --white: #fffef9;
  --line: rgba(24, 32, 25, .18);
  --shadow: 0 22px 60px rgba(25, 29, 23, .18);
  --radius: 22px;
  --serif: Georgia, "Times New Roman", serif;
  --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --container: min(1180px, calc(100vw - 40px));
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); line-height: 1.6; -webkit-font-smoothing: antialiased; }
body.dialog-open { overflow: hidden; }
img { display: block; width: 100%; height: auto; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
address { font-style: normal; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; z-index: 9999; top: 10px; left: 10px; transform: translateY(-150%); background: var(--white); padding: 10px 14px; border-radius: 8px; }
.skip-link:focus { transform: translateY(0); }
.container { width: var(--container); margin-inline: auto; }
.section { padding: clamp(76px, 9vw, 132px) 0; position: relative; }
.section-dark { background: var(--ink); color: var(--cream); }
.section-accent { background: var(--green); color: var(--white); }
.eyebrow { margin: 0 0 16px; font-size: .72rem; font-weight: 800; letter-spacing: .19em; text-transform: uppercase; color: var(--gold); }
h1, h2, h3 { font-family: var(--serif); font-weight: 500; line-height: 1.05; margin-top: 0; }
h1 { font-size: clamp(3.6rem, 8.5vw, 8.4rem); letter-spacing: -.055em; }
h2 { font-size: clamp(2.45rem, 5vw, 5.2rem); letter-spacing: -.045em; margin-bottom: 24px; }
h3 { font-size: clamp(1.2rem, 2vw, 1.7rem); }
p { margin-top: 0; }
.lead { font-family: var(--serif); font-size: clamp(1.3rem, 2.2vw, 2rem); line-height: 1.35; }
.section-heading { max-width: 820px; }
.section-heading.centered { text-align: center; margin-inline: auto; }
.section-heading > p:last-child { color: var(--ink-soft); max-width: 700px; }
.section-dark .section-heading > p:last-child, .section-accent .section-heading > p:last-child { color: rgba(255,255,255,.72); }

.button { appearance: none; border: 1px solid transparent; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 14px 22px; background: var(--gold); color: #161812; text-decoration: none; font-size: .85rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; transition: transform .25s ease, background .25s ease, color .25s ease, border-color .25s ease; }
.button:hover { transform: translateY(-2px); background: #c59a58; }
.button:focus-visible, a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid rgba(179, 135, 69, .65); outline-offset: 3px; }
.button-small { padding: 10px 18px; font-size: .72rem; }
.button-ghost { background: rgba(255,255,255,.08); color: var(--white); border-color: rgba(255,255,255,.55); backdrop-filter: blur(8px); }
.button-ghost:hover { background: var(--white); color: var(--ink); }
.button-outline { background: transparent; color: var(--ink); border-color: currentColor; }
.button-outline:hover { background: var(--ink); color: var(--white); }
.button-full { width: 100%; }
.text-link { display: inline-flex; gap: 10px; align-items: center; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; font-size: .76rem; text-decoration: none; border-bottom: 1px solid currentColor; padding-bottom: 4px; }
.text-link:hover span { transform: translateX(4px); }
.text-link span { transition: transform .2s ease; }

.site-header { position: fixed; inset: 0 0 auto; z-index: 100; color: var(--white); transition: background .3s ease, box-shadow .3s ease, color .3s ease; }
.site-header.is-scrolled { background: rgba(22, 28, 22, .94); box-shadow: 0 12px 30px rgba(0,0,0,.14); backdrop-filter: blur(14px); }
.nav { min-height: 78px; display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.brand { color: inherit; text-decoration: none; display: inline-flex; align-items: center; min-width: 128px; }
.brand-logo { display: block; width: clamp(112px, 9vw, 136px); height: auto; filter: brightness(0) invert(1); opacity: .98; transition: opacity .2s ease, transform .2s ease; }
.brand:hover .brand-logo { opacity: 1; transform: translateY(-1px); }
.nav-menu { display: flex; align-items: center; gap: clamp(15px, 2.2vw, 30px); }
.nav-menu > a:not(.button) { color: inherit; text-decoration: none; font-size: .75rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; position: relative; }
.nav-menu > a:not(.button)::after { content: ""; position: absolute; left: 0; bottom: -7px; width: 100%; height: 1px; background: var(--gold); transform: scaleX(0); transform-origin: right; transition: transform .25s ease; }
.nav-menu > a:not(.button):hover::after { transform: scaleX(1); transform-origin: left; }
.nav-toggle { display: none; border: 0; background: transparent; padding: 8px; }
.nav-toggle span:not(.sr-only) { display: block; width: 26px; height: 2px; background: currentColor; margin: 5px 0; }

.hero { min-height: 100svh; color: var(--white); position: relative; display: grid; align-items: end; overflow: hidden; }
.hero-media, .hero-media img, .hero-shade { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-media img { object-fit: cover; object-position: center 58%; }
.hero-shade { background: linear-gradient(90deg, rgba(9,14,10,.82) 0%, rgba(9,14,10,.52) 48%, rgba(9,14,10,.1) 100%), linear-gradient(0deg, rgba(9,14,10,.72), transparent 48%); }
.hero-content { position: relative; z-index: 2; padding-top: 150px; padding-bottom: clamp(100px, 12vh, 145px); }
.hero-content h1 { max-width: 930px; margin-bottom: 28px; }
.hero-copy { max-width: 600px; font-family: var(--serif); font-size: clamp(1.25rem, 2vw, 1.8rem); line-height: 1.4; color: rgba(255,255,255,.88); }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 34px; }
.hero-facts { display: flex; flex-wrap: wrap; gap: 22px 42px; margin-top: 54px; padding-top: 24px; border-top: 1px solid rgba(255,255,255,.22); max-width: 780px; color: rgba(255,255,255,.72); font-size: .82rem; }
.hero-facts strong { display: block; color: var(--white); font-family: var(--serif); font-size: 1.35rem; }
.scroll-cue { position: absolute; z-index: 3; right: max(20px, calc((100vw - 1180px)/2)); bottom: 42px; color: rgba(255,255,255,.72); text-decoration: none; font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; writing-mode: vertical-rl; display: flex; align-items: center; gap: 12px; }
.scroll-cue span { width: 1px; height: 48px; background: rgba(255,255,255,.5); }

.intro { background: var(--paper); }
.intro-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(40px, 8vw, 110px); align-items: start; margin-bottom: 70px; }
.intro-copy { padding-top: 42px; }
.intro-copy p:not(.lead) { color: var(--ink-soft); }
.mosaic { display: grid; grid-template-columns: 1.45fr .75fr; grid-template-rows: 1fr 1fr; gap: 16px; height: min(72vw, 720px); }
.mosaic figure { margin: 0; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); }
.mosaic-main { grid-row: 1 / span 2; }
.mosaic img { height: 100%; object-fit: cover; }

.story-grid { display: grid; grid-template-columns: 1.05fr .75fr; gap: clamp(50px, 9vw, 130px); align-items: center; }
.story-copy > p:not(.eyebrow):not(.lead) { color: rgba(255,255,255,.72); }
.timeline { margin-top: 48px; border-top: 1px solid rgba(255,255,255,.18); }
.timeline article { display: grid; grid-template-columns: 105px 1fr; column-gap: 24px; padding: 28px 0; border-bottom: 1px solid rgba(255,255,255,.18); }
.timeline span { color: var(--gold); font-family: var(--serif); font-size: 1.2rem; }
.timeline h3 { margin: 0 0 8px; }
.timeline p { grid-column: 2; color: rgba(255,255,255,.65); margin-bottom: 0; }
.story-image { margin: 0; }
.story-image img { border-radius: var(--radius); box-shadow: 0 30px 70px rgba(0,0,0,.38); aspect-ratio: 3 / 4; object-fit: cover; }
.story-image figcaption { margin-top: 12px; color: rgba(255,255,255,.55); font-size: .78rem; }

.piazza { background: var(--cream); }
.piazza-grid { display: grid; grid-template-columns: .9fr 1fr; gap: clamp(50px, 9vw, 120px); align-items: center; }
.piazza-image { margin: 0; }
.piazza-image img { border-radius: 50% 50% 20px 20px; aspect-ratio: 3/4; object-fit: cover; box-shadow: var(--shadow); }
.piazza-copy p { color: var(--ink-soft); }
.piazza-copy .button { margin-top: 16px; }

.menu-section { background: var(--paper); }
.menu-filter { width: min(720px, 100%); margin: 42px auto 0; }
.menu-search-box { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; min-height: 58px; padding: 7px 8px 7px 18px; border: 1px solid var(--line); border-radius: 999px; background: var(--white); box-shadow: 0 12px 34px rgba(25, 29, 23, .08); }
.menu-search-box > span { font-size: 1.4rem; color: var(--green); line-height: 1; }
.menu-search-box input { min-width: 0; border: 0; outline: 0; background: transparent; color: var(--ink); font-size: 1rem; }
.menu-search-box input::-webkit-search-cancel-button { display: none; }
.menu-search-box input::placeholder { color: rgba(24, 32, 25, .5); }
.menu-clear { border: 0; border-radius: 999px; padding: 10px 14px; background: var(--cream); color: var(--green); font-size: .7rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; }
.menu-clear:hover { background: var(--paper-deep); }
.menu-filter-status { min-height: 1.4em; margin: 10px 0 0; text-align: center; color: var(--ink-soft); font-size: .76rem; }
.menu-tabs { display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; margin: 24px 0 42px; }
.menu-tab, .book-tab { border: 1px solid var(--line); background: transparent; padding: 12px 18px; border-radius: 999px; font-weight: 800; font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; }
.menu-tab.is-active, .book-tab.is-active { background: var(--green); color: var(--white); border-color: var(--green); }
.menu-panel { display: grid; grid-template-columns: 1fr 1fr; gap: 0 60px; margin-bottom: 44px; }
.menu-panel-title { grid-column: 1 / -1; margin: 0; padding: 0 0 10px; color: var(--green); font-size: clamp(1.6rem, 3vw, 2.4rem); border-bottom: 2px solid var(--green); }
.menu-panel[hidden], .menu-item[hidden], .menu-empty[hidden], .menu-clear[hidden] { display: none !important; }
.menu-item { display: flex; justify-content: space-between; gap: 24px; padding: 23px 0; border-bottom: 1px solid var(--line); }
.menu-empty { margin: 18px auto 0; max-width: 620px; padding: 24px; border: 1px dashed var(--line); border-radius: 16px; text-align: center; color: var(--ink-soft); }
.menu-item h3 { font-family: var(--sans); font-size: 1.02rem; font-weight: 750; margin: 0 0 5px; }
.menu-item p { color: var(--ink-soft); font-size: .88rem; margin: 0; }
.menu-item strong { font-family: var(--serif); font-size: 1.3rem; white-space: nowrap; }
.menu-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; margin-top: 48px; }
.fine-print { margin-top: 18px; text-align: center; font-size: .76rem; color: var(--ink-soft); }

.section-wine { min-height: 740px; color: var(--white); overflow: hidden; display: grid; align-items: center; }
.wine-media, .wine-media img, .wine-shade { position: absolute; inset: 0; width: 100%; height: 100%; }
.wine-media img { object-fit: cover; }
.wine-shade { background: linear-gradient(90deg, rgba(9,14,10,.92), rgba(9,14,10,.62) 50%, rgba(9,14,10,.65)); }
.wine-grid { position: relative; z-index: 2; display: grid; grid-template-columns: .9fr 1.05fr; gap: clamp(50px, 8vw, 120px); align-items: center; }
.wine-copy p:not(.eyebrow) { color: rgba(255,255,255,.75); max-width: 580px; }
.wine-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.wine-list { background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.2); backdrop-filter: blur(12px); border-radius: var(--radius); padding: 20px 34px; }
.wine-list article { position: relative; padding: 24px 52px 24px 0; border-bottom: 1px solid rgba(255,255,255,.18); }
.wine-list article:last-child { border-bottom: 0; }
.wine-list span { color: var(--gold); font-size: .68rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.wine-list h3 { font-family: var(--sans); font-size: 1rem; font-weight: 750; margin: 7px 0 2px; }
.wine-list p { margin: 0; color: rgba(255,255,255,.6); font-size: .82rem; }
.wine-list strong { position: absolute; right: 0; top: 43px; font-family: var(--serif); font-size: 1.25rem; }
.wine-note { position: absolute; z-index: 2; bottom: 20px; left: 50%; transform: translateX(-50%); width: var(--container); color: rgba(255,255,255,.48); font-size: .72rem; }

.cinema { background: var(--cream); }
.film-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-top: 55px; }
.film-card { position: relative; min-height: 430px; border-radius: var(--radius); overflow: hidden; color: var(--white); box-shadow: var(--shadow); }
.film-card img { position: absolute; inset: 0; height: 100%; object-fit: cover; transition: transform .6s ease; }
.film-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(10,14,10,.95), rgba(10,14,10,.1) 70%); }
.film-card > div { position: absolute; z-index: 2; inset: auto 30px 28px; }
.film-card span { color: var(--gold); text-transform: uppercase; letter-spacing: .14em; font-size: .68rem; font-weight: 800; }
.film-card h3 { font-size: clamp(2rem, 3vw, 3.4rem); margin: 8px 0 10px; }
.film-card p { color: rgba(255,255,255,.72); margin-bottom: 0; max-width: 520px; }
.film-card:hover img { transform: scale(1.035); }
.film-grid > .film-card:last-child { grid-column: 1 / -1; min-height: 500px; }

.archive { min-height: 730px; overflow: hidden; display: grid; align-items: center; }
.archive-bg, .archive-bg img, .archive-overlay { position: absolute; inset: 0; width: 100%; height: 100%; }
.archive-bg img { object-fit: cover; filter: grayscale(1) blur(5px); transform: scale(1.03); }
.archive-overlay { background: rgba(15,20,16,.88); }
.archive-content { position: relative; z-index: 2; }
.vip-carousel { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 16px; margin-top: 48px; }
.vip-track { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(300px, 1fr); gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.vip-track::-webkit-scrollbar { display: none; }
.vip-card { scroll-snap-align: start; min-height: 260px; border: 1px solid rgba(255,255,255,.2); border-radius: var(--radius); padding: 34px; background: rgba(255,255,255,.07); backdrop-filter: blur(8px); }
.vip-card span { color: var(--gold); font-size: .68rem; letter-spacing: .14em; font-weight: 800; text-transform: uppercase; }
.vip-card h3 { font-size: 2rem; margin: 25px 0 14px; }
.vip-card p { color: rgba(255,255,255,.62); margin-bottom: 0; }
.carousel-button { width: 46px; height: 46px; border-radius: 50%; border: 1px solid rgba(255,255,255,.3); background: rgba(255,255,255,.08); color: var(--white); cursor: pointer; }
.carousel-button:hover { background: var(--gold); color: var(--ink); }

.video-section { background: var(--paper); }
.video-grid { display: grid; grid-template-columns: .7fr 1.3fr; gap: clamp(45px, 7vw, 90px); align-items: center; }
.video-copy p:not(.eyebrow) { color: var(--ink-soft); }
.video-frame { border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); aspect-ratio: 16/9; background: #0b0e0c; }
.video-frame iframe { border: 0; width: 100%; height: 100%; }

.location { background: var(--cream); }
.location-gallery { display: grid; grid-template-columns: 1.25fr .75fr; grid-template-rows: 1fr 1fr; gap: 16px; height: min(74vw, 730px); margin-top: 50px; }
.location-gallery figure { margin: 0; position: relative; border-radius: var(--radius); overflow: hidden; }
.location-gallery .location-large { grid-row: 1 / span 2; }
.location-gallery img { height: 100%; object-fit: cover; }
.location-gallery figcaption { position: absolute; left: 20px; bottom: 18px; color: var(--white); background: rgba(18,24,19,.72); padding: 8px 12px; border-radius: 999px; font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; }
.location-features { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); margin-top: 34px; }
.location-features span { padding: 22px; text-align: center; font-family: var(--serif); font-size: 1.08rem; border-right: 1px solid var(--line); }
.location-features span:last-child { border-right: 0; }

.booking-grid { display: grid; grid-template-columns: .8fr 1.15fr; gap: clamp(50px, 8vw, 120px); align-items: start; }
.booking-copy > p:not(.eyebrow) { color: rgba(255,255,255,.72); }
.direct-contacts { display: grid; gap: 12px; margin-top: 42px; }
.direct-contacts a { display: flex; flex-direction: column; padding: 18px 0; border-bottom: 1px solid rgba(255,255,255,.2); text-decoration: none; }
.direct-contacts span { color: rgba(255,255,255,.55); font-size: .68rem; text-transform: uppercase; letter-spacing: .12em; }
.direct-contacts strong { font-family: var(--serif); font-size: 1.45rem; }
.booking-form { background: var(--white); color: var(--ink); padding: clamp(26px, 4vw, 48px); border-radius: var(--radius); box-shadow: 0 28px 70px rgba(0,0,0,.24); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.field { margin-bottom: 16px; }
.field label { display: block; margin-bottom: 7px; font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.field input, .field select, .field textarea { width: 100%; border: 1px solid rgba(24,32,25,.22); border-radius: 10px; background: #fff; color: var(--ink); padding: 13px 14px; }
.field textarea { resize: vertical; }
.consent { display: flex; gap: 10px; align-items: flex-start; font-size: .76rem; color: var(--ink-soft); margin: 6px 0 18px; }
.consent input { margin-top: 4px; }
.form-status { font-size: .8rem; margin: 12px 0 0; min-height: 1.2em; }

.contact { background: var(--paper); }
.contact-grid { display: grid; grid-template-columns: .75fr 1.25fr; gap: clamp(40px, 7vw, 90px); align-items: stretch; }
.contact-copy address { font-family: var(--serif); font-size: 1.35rem; margin-bottom: 30px; }
.contact-copy p { color: var(--ink-soft); }
.contact-actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 30px 0; }
.map { min-height: 500px; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); }
.map iframe { border: 0; width: 100%; height: 100%; min-height: 500px; }

.site-footer { background: #101510; color: rgba(255,255,255,.74); padding: 64px 0 26px; }
.footer-grid { display: grid; grid-template-columns: 1.5fr repeat(3, 1fr); gap: 46px; }
.footer-grid h2 { font-family: var(--sans); font-size: .68rem; color: var(--gold); font-weight: 800; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 14px; }
.footer-grid a, .footer-source { display: block; color: inherit; text-decoration: none; margin: 7px 0; font-size: .84rem; }
.footer-grid a:hover, .footer-source:hover { color: var(--white); }
.footer-source { border: 0; background: none; padding: 0; cursor: pointer; }
.footer-brand { display: flex; align-items: flex-start; }
.footer-logo { display: block; width: min(230px, 100%); height: auto; filter: brightness(0) invert(1); opacity: .92; }
.footer-bottom { display: flex; justify-content: space-between; gap: 20px; border-top: 1px solid rgba(255,255,255,.12); padding-top: 22px; margin-top: 48px; font-size: .72rem; }
.floating-book { display: none; }

.book-dialog, .sources-dialog { width: min(1100px, calc(100vw - 26px)); max-height: calc(100svh - 28px); border: 0; border-radius: var(--radius); padding: 0; background: var(--paper); color: var(--ink); box-shadow: 0 30px 100px rgba(0,0,0,.38); }
.sources-dialog { width: min(760px, calc(100vw - 26px)); }
.book-dialog::backdrop, .sources-dialog::backdrop { background: rgba(7,10,8,.76); backdrop-filter: blur(6px); }
.dialog-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 22px; padding: 28px 34px 20px; position: sticky; top: 0; z-index: 3; background: rgba(251,248,240,.96); backdrop-filter: blur(10px); border-bottom: 1px solid var(--line); }
.dialog-header h2 { font-size: clamp(2rem, 4vw, 3.4rem); margin-bottom: 0; }
.dialog-close { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--line); background: transparent; font-size: 1.8rem; cursor: pointer; }
.book-switch { display: flex; justify-content: center; gap: 8px; padding: 20px; }
.book-pages { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; padding: 0 20px 22px; }
.book-pages img { border-radius: 8px; box-shadow: 0 6px 22px rgba(0,0,0,.12); }
.dialog-footer { position: sticky; bottom: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 18px; padding: 18px 26px; background: rgba(251,248,240,.96); border-top: 1px solid var(--line); backdrop-filter: blur(10px); }
.sources-copy { padding: 28px 34px 38px; }
.sources-copy li { margin: 10px 0; }

.reveal { opacity: 0; transform: translateY(18px); transition: opacity .65s ease, transform .65s ease; }
.reveal.is-visible { opacity: 1; transform: translateY(0); }

@media (max-width: 900px) {
  :root { --container: min(100% - 30px, 720px); }
  .nav { min-height: 70px; }
  .brand { min-width: 112px; }
  .brand-logo { width: 116px; }
  .nav-toggle { display: block; color: var(--white); }
  .nav-menu { position: fixed; inset: 70px 14px auto; background: rgba(16,21,16,.98); border: 1px solid rgba(255,255,255,.12); border-radius: 18px; padding: 26px; flex-direction: column; align-items: stretch; opacity: 0; visibility: hidden; transform: translateY(-10px); transition: .25s ease; }
  .nav-menu.is-open { opacity: 1; visibility: visible; transform: translateY(0); }
  .nav-menu > a { padding: 9px 0; }
  .hero-shade { background: linear-gradient(0deg, rgba(9,14,10,.9), rgba(9,14,10,.18) 80%); }
  .hero-content { padding-bottom: 112px; }
  .hero-facts { gap: 18px 30px; }
  .scroll-cue { display: none; }
  .intro-grid, .story-grid, .piazza-grid, .wine-grid, .video-grid, .booking-grid, .contact-grid { grid-template-columns: 1fr; }
  .intro-copy { padding-top: 0; }
  .story-image { max-width: 560px; }
  .piazza-image { max-width: 530px; }
  .menu-panel { grid-template-columns: 1fr; }
  .film-grid { grid-template-columns: 1fr; }
  .film-grid > .film-card:last-child { grid-column: auto; min-height: 430px; }
  .video-copy { max-width: 650px; }
  .location-features { grid-template-columns: 1fr 1fr; }
  .location-features span:nth-child(2) { border-right: 0; }
  .location-features span:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .footer-grid { grid-template-columns: 1.3fr 1fr 1fr; }
  .footer-grid > div:last-child { grid-column: 2 / span 2; }
}

@media (max-width: 620px) {
  :root { --container: calc(100% - 24px); --radius: 16px; }
  .section { padding: 72px 0; }
  .hero-content { padding-top: 130px; }
  .hero-content h1 { font-size: clamp(3.1rem, 17vw, 5rem); }
  .hero-actions .button { width: 100%; }
  .hero-facts { display: grid; grid-template-columns: 1fr 1fr; }
  .mosaic { height: auto; grid-template-columns: 1fr 1fr; grid-template-rows: 420px 210px; }
  .mosaic-main { grid-row: auto; grid-column: 1 / span 2; }
  .timeline article { grid-template-columns: 1fr; }
  .timeline p { grid-column: 1; }
  .piazza-image img { border-radius: 180px 180px 16px 16px; }
  .menu-search-box { border-radius: 18px; grid-template-columns: auto 1fr; padding: 12px 15px; }
  .menu-clear { grid-column: 1 / -1; width: 100%; }
  .menu-tabs { justify-content: flex-start; overflow-x: auto; flex-wrap: nowrap; padding-bottom: 8px; }
  .menu-tab { white-space: nowrap; }
  .menu-panel { margin-bottom: 34px; }
  .menu-item { gap: 12px; }
  .section-wine { min-height: 900px; }
  .wine-list { padding: 12px 20px; }
  .film-card { min-height: 390px; }
  .film-card > div { inset: auto 20px 22px; }
  .vip-carousel { grid-template-columns: 1fr; }
  .carousel-button { display: none; }
  .vip-track { grid-auto-columns: 88%; }
  .location-gallery { height: auto; grid-template-columns: 1fr; grid-template-rows: 410px 250px 250px; }
  .location-gallery .location-large { grid-row: auto; }
  .location-features { grid-template-columns: 1fr; }
  .location-features span { border-right: 0; border-bottom: 1px solid var(--line); }
  .location-features span:last-child { border-bottom: 0; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
  .map, .map iframe { min-height: 380px; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .footer-brand { grid-column: 1 / span 2; }
  .footer-grid > div:last-child { grid-column: auto; }
  .footer-bottom { flex-direction: column; }
  .floating-book { display: flex; position: fixed; z-index: 90; right: 12px; bottom: 12px; background: var(--gold); color: var(--ink); text-decoration: none; border-radius: 50%; width: 84px; height: 84px; align-items: center; justify-content: center; flex-direction: column; line-height: 1.05; box-shadow: 0 12px 30px rgba(0,0,0,.28); font-size: .68rem; text-transform: uppercase; letter-spacing: .06em; }
  .floating-book strong { font-family: var(--serif); font-size: .86rem; text-transform: none; letter-spacing: 0; }
  .dialog-header { padding: 20px; }
  .book-pages { grid-template-columns: 1fr; padding-inline: 10px; }
  .dialog-footer { padding: 14px; gap: 12px; }
  .sources-copy { padding: 24px 20px 32px; }
}

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

/* Booking: integrazione email + WhatsApp */
.booking-honeypot {
  position: absolute !important;
  left: -9999px !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
}
.form-help {
  margin: .9rem 0 0;
  font-size: .86rem;
  line-height: 1.5;
  opacity: .78;
}
.booking-form button[disabled] {
  cursor: wait;
  opacity: .65;
}


/* SEO / UX production enhancements */
.faq { background: var(--paper-deep); }
.faq-grid { display: grid; grid-template-columns: .82fr 1.18fr; gap: clamp(40px, 7vw, 100px); align-items: start; }
.faq-list { border-top: 1px solid var(--line); }
.faq-list details { border-bottom: 1px solid var(--line); padding: 0; }
.faq-list summary { list-style: none; cursor: pointer; padding: 23px 44px 23px 0; font-family: var(--serif); font-size: clamp(1.18rem, 1.8vw, 1.5rem); position: relative; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after { content: "+"; position: absolute; right: 4px; top: 50%; transform: translateY(-50%); font-family: var(--sans); color: var(--gold); font-size: 1.45rem; }
.faq-list details[open] summary::after { content: "−"; }
.faq-list details p { color: var(--ink-soft); padding: 0 44px 22px 0; margin: 0; }
@media (max-width: 820px) { .faq-grid { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; } }

/* Video Maserati / Instagram */
.instagram-video-link { position: relative; display: block; color: #fff; text-decoration: none; }
.instagram-video-link > img { width: 100%; height: 100%; object-fit: cover; display: block; opacity: .78; transition: transform .45s ease, opacity .45s ease; }
.instagram-video-link:hover > img { transform: scale(1.025); opacity: .66; }
.instagram-video-overlay { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .65rem; padding: 2rem; text-align: center; background: linear-gradient(180deg, rgba(11,14,12,.08), rgba(11,14,12,.58)); }
.instagram-play { display: grid; place-items: center; width: 66px; height: 66px; border: 1px solid rgba(255,255,255,.65); border-radius: 50%; background: rgba(0,0,0,.28); backdrop-filter: blur(5px); font-size: 1.25rem; padding-left: 4px; }
.instagram-video-overlay strong { font-family: var(--serif); font-size: clamp(1.35rem, 2vw, 2rem); font-weight: 500; }
.instagram-video-overlay small { font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; }

/* Maserati / Angelino cinematic feature */
.maserati-feature{overflow:hidden}
.maserati-heading{max-width:820px;margin:0 auto 2.4rem;text-align:center}
.maserati-heading h2{margin:.35rem 0 1rem}
.maserati-scenes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem;margin:2rem 0 3rem}
.maserati-scene-card{position:relative;overflow:hidden;border-radius:20px;background:#17130f;min-height:520px;box-shadow:0 18px 55px rgba(0,0,0,.16)}
.maserati-scene-card img{width:100%;height:100%;min-height:520px;object-fit:cover;display:block;filter:saturate(.92) contrast(1.03)}
.maserati-scene-card:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 42%,rgba(0,0,0,.82) 100%);pointer-events:none}
.maserati-scene-copy{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:1.35rem;color:#fff}
.maserati-scene-copy span{display:inline-block;font-size:.75rem;letter-spacing:.16em;opacity:.72;margin-bottom:.45rem}
.maserati-scene-copy h3{font-size:1.35rem;margin:0 0 .45rem;color:#fff}
.maserati-scene-copy p{font-size:.94rem;line-height:1.5;margin:0;color:rgba(255,255,255,.86)}
.maserati-official-video{display:grid;grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);gap:2rem;align-items:center;padding:2rem;border:1px solid rgba(38,28,19,.12);border-radius:24px;background:rgba(255,255,255,.6)}
.maserati-video-copy h3{font-size:clamp(1.7rem,3vw,2.7rem);margin:.35rem 0 .9rem}
.youtube-embed-wrap{position:relative;aspect-ratio:16/9;border-radius:18px;overflow:hidden;background:#111;box-shadow:0 18px 45px rgba(0,0,0,.18)}
.youtube-embed-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
@media (max-width:900px){.maserati-scenes{grid-template-columns:1fr 1fr}.maserati-scene-card:last-child{grid-column:1/-1}.maserati-official-video{grid-template-columns:1fr}}
@media (max-width:620px){.maserati-scenes{grid-template-columns:1fr}.maserati-scene-card:last-child{grid-column:auto}.maserati-scene-card,.maserati-scene-card img{min-height:470px}.maserati-official-video{padding:1.15rem;border-radius:18px}}


/* Maserati — video-only section */
.maserati-feature{overflow:hidden}
.maserati-heading{max-width:900px;margin:0 auto 2rem;text-align:center}
.maserati-heading h2{margin:.35rem 0 0}
.maserati-video-only{max-width:1100px;margin:0 auto}
.maserati-video-only .youtube-embed-wrap{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:24px;background:#0f0f0f;box-shadow:0 24px 70px rgba(0,0,0,.18)}
.maserati-video-only .youtube-embed-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
@media (max-width:620px){.maserati-heading{margin-bottom:1.25rem}.maserati-video-only .youtube-embed-wrap{border-radius:16px}}


/* Booking UX — invio server-side email + WhatsApp */
.booking-copy strong { color: var(--white); }
.booking-delivery-note { display: grid; gap: 10px; margin: 30px 0 18px; }
.booking-delivery-note span { display: flex; align-items: center; gap: 12px; padding: 13px 15px; border: 1px solid rgba(255,255,255,.18); border-radius: 14px; background: rgba(255,255,255,.055); color: rgba(255,255,255,.86); }
.booking-delivery-note strong { display: grid; place-items: center; flex: 0 0 28px; width: 28px; height: 28px; border-radius: 50%; background: var(--gold); color: var(--ink); font-family: var(--sans); font-size: .76rem; }
.booking-confirmation-note { margin-top: 16px; font-size: .91rem; color: rgba(255,255,255,.66) !important; }
.form-status { min-height: 0; margin-top: 18px; border-radius: 16px; outline: none; }
.form-status:empty { display: none; }
.form-status-loading { padding: 14px 16px; background: #f4f0e8; color: var(--ink-soft); }
.form-status-success, .form-status-warning, .form-status-error { display: grid; grid-template-columns: 42px 1fr; gap: 14px; align-items: start; padding: 18px; border: 1px solid transparent; }
.form-status-success { background: #eef6ed; border-color: #cfe2cc; color: #183019; }
.form-status-warning { background: #fff7e8; border-color: #ead8ad; color: #533b0d; }
.form-status-error { background: #fff0ee; border-color: #e7c4bf; color: #5d211b; }
.form-status-icon { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: currentColor; color: white; font-weight: 800; font-size: 1.05rem; }
.form-status-copy { display: grid; gap: 5px; line-height: 1.5; }
.form-status-copy > strong { font-family: var(--serif); font-size: 1.18rem; line-height: 1.2; }
.form-status-copy > span { font-size: .92rem; }
.form-status-link { display: inline-flex; width: fit-content; margin-top: 7px; font-weight: 700; color: inherit; text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 620px) {
  .booking-delivery-note { margin-top: 22px; }
  .booking-delivery-note span { font-size: .9rem; }
  .form-status-success, .form-status-warning, .form-status-error { grid-template-columns: 36px 1fr; padding: 15px; gap: 11px; }
  .form-status-icon { width: 36px; height: 36px; }
}


/* Language switch */
.lang-switch { display:inline-flex; align-items:center; gap:7px; margin-left:-6px; padding:7px 10px; border:1px solid rgba(255,255,255,.28); border-radius:999px; font-size:.69rem; font-weight:900; letter-spacing:.08em; }
.lang-switch span { opacity:.42; }
.nav-menu .lang-switch .lang-link { color:rgba(255,255,255,.68); text-decoration:none; line-height:1; padding:2px 1px; }
.nav-menu .lang-switch .lang-link::after { display:none; }
.nav-menu .lang-switch .lang-link:hover, .nav-menu .lang-switch .lang-link.is-active { color:var(--white); }
.nav-menu .lang-switch .lang-link.is-active { text-decoration:underline; text-underline-offset:3px; text-decoration-color:var(--gold); }
@media (max-width:900px) { .lang-switch { width:max-content; margin:10px 0 0; } .nav-menu .lang-switch .lang-link { padding:3px 2px; } }


/* Privacy-first external media: no third-party iframe is loaded on page view */
.external-media-card{position:relative;min-height:clamp(360px,56vw,620px);overflow:hidden;border-radius:24px;background:#111;box-shadow:0 24px 70px rgba(0,0,0,.18)}
.external-media-card>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}
.external-media-card:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.06),rgba(0,0,0,.78));pointer-events:none}
.external-media-overlay{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:clamp(24px,5vw,52px);color:#fff;max-width:760px}
.external-media-kicker{display:block;margin-bottom:.65rem;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.72)}
.external-media-overlay h3{margin:0 0 .75rem;color:#fff;font-size:clamp(1.65rem,3vw,2.65rem)}
.external-media-overlay p{margin:0 0 1.25rem;color:rgba(255,255,255,.82);line-height:1.6}
.map-link-card{min-height:380px;height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:32px;padding:clamp(28px,5vw,54px);background:var(--paper-deep);border:1px solid var(--line);border-radius:22px}
.map-link-card h3{font-size:clamp(1.6rem,3vw,2.45rem);margin:.3rem 0 1rem}
.map-link-card p:not(.eyebrow){color:var(--ink-soft);max-width:46ch}
.form-help{font-size:.78rem;line-height:1.45;margin:.55rem 0 0;opacity:.78}
.consent a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.footer-legal{display:flex;flex-wrap:wrap;gap:8px 18px;padding-top:26px;margin-top:8px;border-top:1px solid rgba(255,255,255,.16);font-size:.78rem;line-height:1.55;color:rgba(255,255,255,.62)}
.footer-legal strong{width:100%;color:rgba(255,255,255,.86);font-size:.84rem}
.footer-legal a{color:inherit;text-decoration:underline;text-underline-offset:3px}

/* Legal / privacy pages */
body.legal-page{background:var(--paper)}
body.legal-page .site-header{background:var(--ink);position:relative}
body.legal-page .site-header.is-scrolled{background:var(--ink)}
.legal-main{min-height:65vh}
.legal-hero{padding:clamp(64px,9vw,110px) 0 42px;background:var(--paper-deep);border-bottom:1px solid var(--line)}
.legal-hero h1{font-size:clamp(2.5rem,7vw,5.4rem);max-width:13ch;margin:.25rem 0 1rem}
.legal-hero .lead{max-width:760px}
.legal-content{padding:clamp(44px,7vw,88px) 0}
.legal-article{max-width:900px;margin:0 auto}
.legal-article h2{font-size:clamp(1.5rem,3vw,2.25rem);margin:2.7rem 0 .9rem}
.legal-article h2:first-child{margin-top:0}
.legal-article h3{font-size:1.15rem;margin:1.7rem 0 .5rem}
.legal-article p,.legal-article li{line-height:1.75;color:var(--ink-soft)}
.legal-article ul{padding-left:1.2rem}
.legal-article a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.legal-card{padding:24px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.58);margin:1.2rem 0}
.legal-card p:last-child{margin-bottom:0}
.legal-table-wrap{overflow-x:auto;margin:1.3rem 0}
.legal-table{width:100%;border-collapse:collapse;min-width:680px;font-size:.92rem}
.legal-table th,.legal-table td{padding:14px 16px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.legal-table th{font-weight:800;color:var(--ink)}
.legal-updated{font-size:.82rem;color:var(--ink-soft);margin-top:2.5rem;padding-top:1rem;border-top:1px solid var(--line)}
@media(max-width:700px){.footer-legal{flex-direction:column;gap:4px}.legal-hero{padding-top:52px}.legal-content{padding-top:36px}}
