/* Base and reusable controls. Homepage composition lives in homepage.css. */
*,*::before,*::after { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:96px; background:var(--bg); }
body { margin:0; background:var(--bg); color:var(--text); font:400 var(--body)/1.7 var(--sans); -webkit-font-smoothing:antialiased; }
[hidden] { display:none!important; }
img { display:block; max-width:100%; height:auto; }
a { color:inherit; text-decoration:none; }
button,input,select { font:inherit; border-radius:0; }
button,a,input,select { -webkit-tap-highlight-color:transparent; }
button { cursor:pointer; }button:disabled { cursor:default; }
h1,h2,h3,p,figure { margin:0; }
h1,h2,h3 { font-family:var(--serif); font-weight:500; line-height:var(--heading-leading); letter-spacing:var(--tracking); }
h2 { font-size:var(--heading); text-wrap:balance; }h3 { font-size:var(--subheading); }em { font-style:normal; font-weight:inherit; }
p { text-wrap:pretty; }
::selection { background:var(--gold); color:var(--ink); }
:focus-visible { outline:2px solid var(--gold-bright); outline-offset:5px; }
#main:focus { outline:none; }
.content-width { width:100%; max-width:var(--content); margin-inline:auto; }
.section { padding:var(--space-section) var(--gutter); }
.eyebrow,.tiny-label { display:block; font:600 var(--label)/1.5 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--gold); }
.body-copy { font-size:var(--body); line-height:var(--body-leading); color:var(--text-secondary); max-width:42ch; }
.button { display:inline-flex; justify-content:space-between; align-items:center; gap:36px; min-height:56px; padding:16px 26px; border:1px solid var(--gold); background:transparent; color:var(--text); font:600 var(--control)/1.5 var(--sans); letter-spacing:.045em; text-transform:none; transition:background .2s,color .2s,border-color .2s; }
.brass { background:var(--gold); color:#1b201b; }.brass:hover { background:var(--gold-bright); border-color:var(--gold-bright); }
.button>[aria-hidden] { font-size:1.35rem; font-weight:400; }
.text-link { display:inline-flex; align-items:center; justify-content:space-between; gap:24px; min-height:44px; padding:9px 0; border:0; border-bottom:1px solid currentColor; background:none; color:inherit; font:500 var(--control)/1.5 var(--sans); text-align:left; transition:color .2s; }.text-link:hover { color:var(--gold); }
.text-button { min-height:44px; padding:8px 12px; border:0; background:none; color:var(--text); font:500 var(--control)/1.5 var(--sans); }
.skip-link { position:fixed; top:12px; left:12px; z-index:1100; padding:14px 20px; background:var(--paper); color:var(--ink); transform:translateY(-200%); }.skip-link:focus { transform:none; }
/* Native dialogs provide focus containment and Escape support. */
body.menu-popup-open,body.booking-popup-open { overflow:hidden; }
dialog { margin:auto; padding:28px; max-height:calc(100dvh - 48px); border:1px solid var(--line); background:var(--panel); color:var(--text); overscroll-behavior:contain; }
dialog:not([open]) { display:none; }dialog::backdrop { background:#080b09e6; backdrop-filter:blur(7px); }
.menu-top,.booking-top { display:flex; align-items:center; justify-content:space-between; gap:20px; padding-bottom:20px; border-bottom:1px solid var(--line); }
.menu-top .eyebrow { color:var(--text); }#relock { display:flex; align-items:center; gap:16px; }.menu-close-icon { font-size:28px; }
#cocktail-menu { width:calc(100vw - 64px); max-width:1360px; }.menu-book { padding-top:24px; }
.book-spread { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); width:100%; max-width:min(1220px,calc((100dvh - 260px)*1.5)); margin:auto; background:var(--paper); box-shadow:0 15px 40px #0005; touch-action:pan-y; }
.book-page { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; aspect-ratio:3/4; padding:40px clamp(24px,3vw,56px); background:linear-gradient(90deg,#e3dccf,#f2ecdf 8%,#f0eadf 94%,#d6cdbd); color:var(--ink); }
.book-page:nth-child(2) { border-left:1px solid #8b795c55; background:linear-gradient(90deg,#d6cdbd,#f0eadf 6%,#f2ecdf 92%,#e3dccf); }.book-cover { background:#252c24; color:var(--paper); }
.book-kicker { font:500 .75rem/1.6 var(--sans); letter-spacing:.13em; text-transform:uppercase; }.book-diamond { margin:28px 0; color:#a8874f; }.book-page h3 { font-size:clamp(2rem,3.2vw,3.5rem); }
.book-description { max-width:24ch; font-size:1rem; line-height:1.65; margin-top:24px; }.book-page-number { position:absolute; bottom:22px; font-size:.875rem; }
.book-controls { display:flex; justify-content:center; align-items:center; gap:28px; margin-top:22px; }.book-controls p { font-size:1rem; min-width:90px; text-align:center; }
.book-arrow { width:52px; height:48px; border:1px solid var(--line); background:none; color:var(--text); font-size:1.5rem; }.book-arrow:hover:not(:disabled) { background:var(--gold); color:var(--ink); }.book-arrow:disabled { opacity:.25; }
.book-swipe-hint,.book-pending { font-size:.875rem; text-align:center; margin-top:12px; color:var(--text-secondary); }.book-pending { display:none; }
.is-turning { animation:page-arrival .25s ease-out; }@keyframes page-arrival { from{opacity:.65;transform:translateY(4px)}to{opacity:1;transform:none} }
#booking-dialog { width:calc(100vw - 48px); max-width:1060px; }.booking-top h2 { font-size:clamp(2rem,4vw,3rem); }#booking-close { width:48px; height:48px; flex-shrink:0; font-size:30px; border:1px solid var(--line); }
.booking-layout { display:grid; grid-template-columns:.85fr 1.15fr; gap:48px; padding-top:32px; }.invitation-details { display:grid; gap:28px; align-content:start; }
.detail-block p { font-size:1rem; margin:12px 0; color:var(--text-secondary); }.detail-block em { font:400 .9375rem/1.6 var(--sans); display:block; color:var(--text-secondary); }.detail-block a { display:inline-block; padding:10px 0; font-size:.9375rem; color:var(--gold); overflow-wrap:anywhere; }.detail-contact-label { margin-top:24px; }
.form-title { display:none; }.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:22px 18px; }.form-grid label { min-width:0; font-size:.875rem; font-weight:500; }
.form-grid label:first-child,.form-grid label:nth-child(4),.form-grid label.wide { grid-column:1/-1; }.form-grid input,.form-grid select { display:block; width:100%; min-width:0; height:54px; margin-top:8px; border:1px solid #c5b18f66; padding:12px; background:var(--bg); color:var(--text); font-size:16px; }
#reservation-form>.button { width:100%; margin-top:28px; }.form-note { font-size:.875rem; line-height:1.65; color:var(--text-secondary); margin-top:18px; }
#request-result { padding-top:24px; margin-top:24px; border-top:1px solid var(--line); font-size:1rem; }#request-summary { white-space:pre-wrap; overflow-wrap:anywhere; font:400 .9375rem/1.75 var(--sans); }#copy-request { padding-left:0; color:var(--gold); }.request-contact { display:flex; width:fit-content; margin-top:8px; }
@media(max-width:700px) {
 html{scroll-padding-top:80px}
 #cocktail-menu { width:100%; max-width:none; height:100dvh; max-height:100dvh; padding:16px 18px max(24px,env(safe-area-inset-bottom)); border:0; }
 .menu-top { position:sticky; top:-16px; z-index:2; background:var(--panel); padding-top:8px; }#cocktail-menu .book-spread { grid-template-columns:1fr; max-width:520px; }
 .book-page { aspect-ratio:auto; min-height:calc(100svh - 235px); padding:52px 26px; }.book-page h3 { font-size:2.75rem; }.book-page-number{bottom:18px}.menu-top .eyebrow { letter-spacing:.05em; }.book-swipe-hint { font-size:.8125rem; }
 #booking-dialog { width:100%; max-width:none; max-height:100dvh; padding:24px; border:0; }.booking-layout { grid-template-columns:1fr; gap:36px; }#reservation-form { grid-row:1; }.invitation-details { border-top:1px solid var(--line); padding-top:28px; }
}
@media(prefers-reduced-motion:reduce) { html{scroll-behavior:auto} *,*::before,*::after{animation:none!important;transition:none!important} }
