@font-face{font-family:'Thi Text';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/ThiText-Regular.woff2') format('woff2')}
@font-face{font-family:'Thi Text';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/ThiText-Medium.woff2') format('woff2')}
@font-face{font-family:'Thi Text';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/ThiText-SemiBold.woff2') format('woff2')}
@font-face{font-family:'Thi Display';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/ThiDisplay-Regular.woff2') format('woff2')}
@font-face{font-family:'Thi Display';font-style:italic;font-weight:400;font-display:swap;src:url('/assets/fonts/ThiDisplay-Italic.woff2') format('woff2')}
:root{--espresso:#1E1712;--ivory:#F4F1EA;--gold:#C8A548;--dark-gold:#816927;--muted:#665E54;--line:#D5CDBF;--error:#9B302B;--serif:'Thi Display',Georgia,serif;--sans:'Thi Text',system-ui,sans-serif;--gutter:clamp(24px,5.2vw,84px);--ease:cubic-bezier(.2,.7,.3,1)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:112px}
body{margin:0;background:var(--ivory);color:var(--espresso);font:400 16px/1.75 var(--sans);-webkit-font-smoothing:antialiased}
body:has(dialog[open]){overflow:hidden}
img{display:block;width:100%;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
button:disabled{cursor:wait;opacity:.65}
button{color:inherit}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--dark-gold);outline-offset:5px}
h1,h2,h3,p,figure{margin:0}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.15}
h1{font-size:clamp(48px,6.2vw,92px);letter-spacing:-.035em}
h2{font-size:clamp(34px,3.8vw,58px);letter-spacing:-.025em}
h3{font-size:28px}
p+p{margin-top:20px}
p{max-width:63ch}
section[id],article[id]{scroll-margin-top:112px}
.section{padding:clamp(68px,9vw,136px) var(--gutter);max-width:1680px;margin-inline:auto}
.kicker{font-size:12px;font-weight:500;letter-spacing:.1em;margin-bottom:24px;color:var(--dark-gold)}
.small,.field-note,figcaption{font-size:13px;line-height:1.7;color:var(--muted)}
.field-note{margin:10px 0 24px}
.small{margin-top:22px}
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.button{display:inline-flex;justify-content:center;align-items:center;min-height:50px;padding:13px 25px;border:1px solid var(--espresso);background:var(--espresso);color:var(--ivory);font-size:13px;font-weight:500;line-height:1.6;text-align:center;transition:background .18s,color .18s;max-width:100%}
@media(hover:hover){.button:hover{background:var(--dark-gold);border-color:var(--dark-gold)}}
.button.secondary{background:transparent;color:var(--espresso)}
@media(hover:hover){.button.secondary:hover{background:var(--espresso);color:var(--ivory)}}
.underlink{text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px;display:inline-block;min-height:44px;padding-block:9px;font-size:14px}
.text-button{background:none;border:none;padding:0;text-align:left;font:inherit}
.dark{background:var(--espresso);color:var(--ivory);max-width:none}
.dark .kicker{color:var(--gold)}
.dark p{color:#D3C9BA}
.skip{position:fixed;top:8px;left:20px;transform:translateY(-200%);background:var(--ivory);padding:12px;z-index:300}
.skip:focus{transform:none}
.site-header{height:94px;padding:0 var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:30px;background:var(--espresso);color:var(--ivory);position:relative;z-index:90}
.logo{flex:0 0 180px;width:180px}
.logo img{width:180px;height:auto}
.desktop-nav{display:flex;gap:30px;align-items:center}
.desktop-nav a{font-size:13px;min-height:44px;display:flex;align-items:center;white-space:nowrap}
.desktop-nav a[aria-current]{color:var(--gold)}@media(hover:hover){.desktop-nav a:hover{color:var(--gold)}}
.header-actions{display:flex;gap:12px;align-items:center}
.header-actions .button{background:var(--gold);border-color:var(--gold);color:var(--espresso);min-height:44px;padding:10px 21px}
.menu-toggle{display:none;background:none;border:0;color:var(--ivory);padding:10px 0 10px 12px;font-size:14px;min-height:44px}
.menu-toggle span{margin-left:7px}
dialog{border:0;color:var(--espresso);background:var(--ivory);padding:32px;max-height:85dvh;max-width:calc(100% - 32px)}
dialog::backdrop{background:rgb(30 23 18 / .64);backdrop-filter:blur(4px)}
.nav-dialog{width:620px}
.dialog-top{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding-bottom:20px}
.dialog-top button,.privacy-dialog>button{background:none;border:0;min-height:44px}
.nav-dialog nav{display:grid;gap:6px;padding:24px 0}
.nav-dialog nav a{font:30px/1.5 var(--serif);padding-block:5px}
.nav-dialog>p{font:italic 18px var(--serif);color:var(--dark-gold)}
.privacy-dialog{width:620px}
.privacy-dialog>button{display:block;margin-left:auto}
.privacy-dialog h2{font-size:32px;margin-block:20px}
.privacy-dialog p+p{margin-top:18px}
.set-amount{font-weight:500;font-size:18px;margin-top:14px}
.set-amount span,.set-amount small{font-weight:400;font-size:12px}
.footer{background:var(--espresso);color:var(--ivory);padding:64px var(--gutter) 36px}
.footer-top{display:flex;justify-content:space-between;gap:30px;padding-bottom:44px}
.footer-top p,.footer-top>div{font-size:14px;color:#D3C9BA}
.footer-top a:not(.logo){display:inline-block;min-height:44px}
.footer-bottom{display:flex;gap:24px;align-items:center;border-top:1px solid #51463A;padding-top:24px;color:#D3C9BA;font-size:11px;flex-wrap:wrap}
.footer-bottom>span{margin-right:auto}
.footer-bottom a,.footer-bottom button{min-height:44px;display:flex;align-items:center}
.mobile-actions{display:none}
.page-intro{padding:80px var(--gutter) 70px;max-width:1400px;margin:auto}
.page-intro h1{max-width:16ch;margin-bottom:30px}
.page-intro>p:last-child{color:var(--muted);max-width:65ch}
.category-nav{position:sticky;top:0;z-index:40;background:var(--ivory);border-block:1px solid var(--line);display:flex;gap:24px;overflow-x:auto;padding:9px var(--gutter);scrollbar-width:thin}
.category-nav a{white-space:nowrap;font-size:13px;padding:10px 0}
.menu-sets{padding-block:70px}
.menu-sets h2{margin-bottom:28px}
.set-detail{display:grid;grid-template-columns:1fr 1.4fr auto;gap:35px;padding:30px 0;border-bottom:1px solid var(--line)}
.set-detail>div p{font-size:12px;color:var(--muted);margin-top:12px;max-width:25ch}
.set-detail ul{padding-left:20px;font-size:13px;margin:0}
.set-detail .set-amount{margin:0;text-align:right;white-space:nowrap}
.set-detail small{display:block}
.menu-category{padding-block:55px;border-top:1px solid var(--line)}
.menu-category h2{margin-bottom:35px}
.dish-list{display:grid;grid-template-columns:1fr 1fr;column-gap:70px}
.dish{display:grid;grid-template-columns:1fr auto;gap:22px;padding:25px 0;border-bottom:1px solid var(--line)}
.dish h3{font:500 16px/1.65 var(--sans)}
.dish p{font-size:13px;color:var(--muted)}
.dish .dish-en{font-size:11px;margin-top:3px;font-style:italic}
.dish p+p{margin-top:12px}
.dish .dish-price{color:var(--espresso);font-size:14px;white-space:nowrap}
.dish-tag{display:inline-block;font-size:11px;padding:2px 8px;margin-top:12px;border:1px solid var(--dark-gold);color:var(--dark-gold)}
.menu-end{padding-top:20px}
.menu-end .button{margin-top:24px}
.space-gallery{padding-top:0}
.space-gallery>figure img{aspect-ratio:1.9;object-fit:cover}
.space-gallery figcaption{margin-top:15px}
.gallery-pair{display:grid;grid-template-columns:1.3fr 1fr;gap:7%;margin:70px 0 90px;align-items:center}
.gallery-pair figure:first-child{margin-top:70px}
.reading{max-width:62ch;margin-inline:auto}
.reading h2{margin-bottom:30px}
.reading p{color:var(--muted);margin-top:20px}
.reading .button{margin-top:30px}
.experience-intro{display:grid;grid-template-columns:1.1fr 1fr;gap:9%;align-items:center}
.experience-intro h1{margin-bottom:30px;font-size:clamp(46px,5vw,76px)}
.experience-intro p:not(.kicker){color:var(--muted)}
.experience-intro .button{margin-top:30px}
.experience-steps{display:grid;grid-template-columns:1fr 1fr;gap:10%;border-top:1px solid var(--line)}
.experience-steps ol{margin:0;padding-left:25px}
.experience-steps li{padding:0 0 30px 18px}
.experience-steps h3{font-size:24px;margin-bottom:12px}
.experience-steps p{font-size:14px;color:var(--muted)}
.occasion-notes{display:grid;grid-template-columns:1fr 1fr;gap:10%}
.occasion-notes h2{font-size:36px;margin-bottom:24px}
.story-editorial{display:grid;grid-template-columns:.9fr 1.1fr;gap:12%;padding-top:0;align-items:center}
/* Inputs are quiet and spacious, with labels always outside. */
.booking-intro{padding-bottom:45px}
.booking-shell{max-width:1280px;padding-top:20px}
.journey-tabs{display:flex;gap:10px;border-bottom:1px solid var(--line);margin-bottom:28px;flex-wrap:wrap}
.journey-tabs button{border:0;background:transparent;border-bottom:3px solid transparent;padding:15px 18px;font-size:14px}
.journey-tabs button[aria-pressed=true]{border-bottom-color:var(--dark-gold);font-weight:600}
.notice{padding:16px 20px;background:#E9E3D8;border-left:3px solid var(--dark-gold);font-size:13px;line-height:1.8;margin-bottom:28px;max-width:none}
.notice.error{border-color:var(--error)}
form>h2,[data-panel]>h2{font-size:36px;margin:32px 0}
form label{display:block;font-size:13px;font-weight:500}
form input:not([type=checkbox]):not([type=radio]),form select,form textarea{display:block;width:100%;max-width:100%;min-width:0;border:1px solid #AA9D88;background:transparent;border-radius:0;padding:13px 12px;min-height:50px;color:var(--espresso);margin:8px 0 20px;font-size:16px;font-weight:400}
form textarea{resize:vertical}
form input:user-invalid,form textarea:user-invalid{border-color:var(--error)}
.fields{display:grid;grid-template-columns:1fr 1fr .6fr;gap:20px}
.fields.two{grid-template-columns:1fr 1fr}
.consent{display:flex!important;gap:12px;font-weight:400!important;align-items:flex-start;margin-block:20px;max-width:64ch}
.consent input{flex:0 0 20px;width:20px;height:20px;margin:3px 0 0;accent-color:var(--dark-gold)}
.optional-notes{margin-block:26px}
.optional-notes summary{cursor:pointer;font-size:14px;min-height:44px}
.optional-notes textarea{margin-top:16px}
.form-error{font-size:14px;color:var(--error);margin-bottom:20px}
.form-error:empty{display:none}
.form-error a{text-decoration:underline}
#quick-booking{max-width:760px}
fieldset{border:0;padding:0;margin:20px 0 28px}
legend{font-size:13px;font-weight:500;margin-bottom:12px}
.choice-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.choice{position:relative;display:flex!important;align-items:flex-start;gap:10px;border:1px solid var(--line);padding:16px 13px;cursor:pointer;font-weight:400!important;font-size:12px!important;line-height:1.7}
.choice:has(input:checked){border-color:var(--dark-gold);background:#E9E3D8}
.choice input{margin:3px 0 0;accent-color:var(--dark-gold);width:18px;height:18px;flex:0 0 18px}
.choice small{display:block;color:var(--muted);font-size:11px}
.step-nav{display:flex;list-style:none;margin:35px 0;padding:0;gap:0}
.step-nav li{flex:1;border-bottom:1px solid var(--line)}
.step-nav button{border:0;background:none;font-size:12px;padding:10px 0 15px;color:var(--muted);width:100%;text-align:left}
.step-nav button[aria-current]{color:var(--espresso);border-bottom:2px solid var(--dark-gold);font-weight:500}
.step-nav span{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:50%;width:25px;height:25px;margin-right:6px;font-size:11px}
.step-nav [aria-current] span{background:var(--espresso);color:var(--ivory);border-color:var(--espresso)}
.date-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:60px;align-items:start}
.summary{position:sticky;top:28px;border-block:1px solid var(--line);padding:20px 0}
.summary summary{font-family:var(--serif);font-size:23px;cursor:pointer;min-height:44px}
.summary dl{font-size:12px}
.summary dt{color:var(--muted);margin-top:15px}
.summary dd{margin:3px 0 0}
.summary .small{font-size:11px}
.step-content{min-width:0}
[hidden]{display:none!important}
.step-actions{display:flex;gap:12px;margin-top:34px;justify-content:space-between}
.step-actions .button:only-child{margin-left:auto}
.extra-list{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.catalog-sets{display:grid;gap:12px;margin:25px 0}
.catalog-choice{padding:18px;display:grid!important;grid-template-columns:auto 1fr;gap:10px;cursor:pointer;border:1px solid var(--line)}
.catalog-choice:has(:checked){border-color:var(--dark-gold);background:#E9E3D8}
.catalog-choice input{margin-top:6px;accent-color:var(--dark-gold)}
.catalog-choice strong{font:26px var(--serif);display:block}
.catalog-choice small{display:block;color:var(--muted);font-size:12px;margin-top:7px}
.catalog-choice .price{display:block;font-size:14px;margin-top:10px}
.booking-help{padding-top:35px;margin-top:45px;border-top:1px solid var(--line)}
.booking-help h3{font-size:25px;margin-bottom:16px}
.booking-help a{text-decoration:underline;text-underline-offset:5px;display:inline-block;min-height:44px}
.test-banner{background:#FFF0BF;color:#4D3A08;padding:16px var(--gutter);font-size:13px;border-block:1px solid #C8A548}
.review-details{font-size:14px}
.review-details dl{display:grid;grid-template-columns:140px 1fr;gap:10px}
.review-details dd{margin:0}
.review-details dt{color:var(--muted)}
.booking-result{background:#E9E3D8;padding:32px;margin-top:32px}
.booking-result h2{font-size:32px;margin-bottom:20px}
.booking-result .request-code{font-size:22px;font-weight:600;margin:18px 0}
.booking-result dl{font-size:14px}
.booking-result dd{margin:0 0 14px}
.booking-result dt{color:var(--muted)}
thi-card-studio{display:block;max-width:100%;min-width:0}
@media(max-width:1150px){.desktop-nav{gap:18px}
.site-header{gap:20px}
.date-layout{gap:30px;grid-template-columns:minmax(0,1fr) 240px}}
@media(max-width:960px){.desktop-nav{display:none}
.menu-toggle{display:block}
.site-header{height:82px}
.date-layout{grid-template-columns:1fr}
.summary{position:static;grid-row:1;padding:12px 0}
.summary details:not([open]) .small{display:none}
.summary summary{font-size:22px}
.summary dl{display:grid;grid-template-columns:120px 1fr;gap:5px 15px}
.summary dt{margin:0}
.summary dd{margin:0}
.summary .small{margin-top:10px}
.summary details{max-width:100%}
.step-nav{margin-block:24px}
.set-detail{grid-template-columns:1fr 1.5fr}
.set-detail .set-amount{grid-column:1;text-align:left;grid-row:2}
.set-detail ul{grid-row:span 2}
.dish-list{gap:0 35px}
.dish{gap:12px}
.experience-intro{gap:6%}
.experience-intro h1{font-size:48px}
.experience-steps{gap:6%}
.story-editorial{gap:7%}}
@media(max-width:650px){:root{--gutter:24px}
html{scroll-padding-top:28px}
body{font-size:15px;padding-bottom:calc(66px + env(safe-area-inset-bottom))}
.site-header{height:80px;gap:12px;padding-inline:20px}
.logo{flex-basis:146px;width:146px}
.logo img{width:146px}
.header-actions{gap:8px}
.header-actions>.button{display:none}
.menu-toggle{font-size:13px}
.section{padding-block:64px}
h2{font-size:36px}
.kicker{margin-bottom:18px}
.set-amount{font-size:16px}
.set-amount span{display:block;font-size:11px}
.footer{padding-top:50px}
.footer-top{display:grid;gap:26px;padding-bottom:20px}
.footer-top .logo{width:170px}
.footer-top .logo img{width:170px}
.footer-bottom{gap:10px 22px;font-size:10px}
.footer-bottom>span{flex-basis:100%;margin:0}
.mobile-actions{position:fixed;bottom:0;left:0;right:0;z-index:70;display:grid;grid-template-columns:1fr 1fr;padding:8px 16px calc(8px + env(safe-area-inset-bottom));background:var(--ivory);border-top:1px solid var(--line);gap:10px}
.mobile-actions a{min-height:44px;display:flex;align-items:center;justify-content:center;font-size:12px;border:1px solid var(--espresso)}
.mobile-actions a:last-child{background:var(--espresso);color:var(--ivory)}
body:has(input:focus,textarea:focus,select:focus) .mobile-actions{display:none}
.page-intro{padding-top:54px;padding-bottom:44px}
.page-intro h1{font-size:48px;line-height:1.12;margin-bottom:24px}
.page-intro p{font-size:14px}
.category-nav{gap:24px;top:0}
.category-nav a{font-size:12px}
.menu-sets{padding-block:44px}
.menu-sets h2{font-size:34px}
.set-detail{display:grid;grid-template-columns:1fr;gap:17px;padding-block:27px}
.set-detail h3{font-size:29px}
.set-detail>div p{max-width:none;margin-top:7px}
.set-detail ul{grid-row:auto;padding-left:18px;font-size:12px}
.set-detail .set-amount{grid-row:auto;grid-column:auto;font-size:17px}
.set-detail small{display:inline;margin-left:8px}
.menu-category{padding-block:42px}
.menu-category h2{font-size:34px;margin-bottom:10px}
.dish-list{grid-template-columns:1fr}
.dish{padding-block:23px;gap:15px}
.dish h3{font-size:14px}
.dish p{font-size:12px}
.dish .dish-price{font-size:12px;padding-top:3px}
.dish .dish-en{font-size:10px}
.dish p+p{margin-top:8px}
.space-gallery{padding-top:0}
.space-gallery>figure img{aspect-ratio:1.1}
.gallery-pair{grid-template-columns:1fr;gap:35px;margin-block:40px 55px}
.gallery-pair figure:first-child{margin:0}
.gallery-pair figure:last-child{width:75%;margin-left:auto}
.gallery-pair .frame{max-height:450px}
.experience-intro{grid-template-columns:1fr;gap:35px;padding-top:54px}
.experience-intro h1{font-size:46px}
.experience-intro .button{margin-top:26px}
.experience-steps{grid-template-columns:1fr;gap:40px}
.experience-steps h2{font-size:36px}
.experience-steps li{padding-left:10px}
.occasion-notes{grid-template-columns:1fr;gap:46px}
.occasion-notes h2{font-size:32px}
.story-editorial{grid-template-columns:1fr;gap:40px;padding-top:0}
.booking-intro{padding-bottom:28px}
.booking-shell{padding-top:15px}
.journey-tabs{gap:0}
.journey-tabs button{font-size:12px;padding:12px 10px;flex:1;line-height:1.7}
.notice{padding:14px;font-size:12px}
.fields{grid-template-columns:1fr 1fr;gap:0 15px}
.fields label:last-child{grid-column:1/-1}
.fields.two{grid-template-columns:1fr}
.fields.two label:last-child{grid-column:auto}
form>h2,[data-panel]>h2{font-size:30px;margin:25px 0}
form label{font-size:12px}
.choice-row{grid-template-columns:1fr}
.choice{font-size:12px!important;min-height:52px}
.fields.two{gap:0}
.consent{font-size:12px}
.step-nav{gap:3px}
.step-nav button{font-size:9px;text-align:center;display:flex;flex-direction:column;gap:7px;align-items:center;padding-bottom:12px}
.step-nav span{margin:0}
.extra-list{grid-template-columns:1fr}
.extra-list .choice{align-items:center}
.extra-list .choice small{display:inline-block;margin-left:12px}
.step-actions .button{font-size:12px;padding:12px 17px}
.review-details dl{grid-template-columns:1fr;gap:4px}
.review-details dd{margin-bottom:12px}
.summary{padding-block:14px}
.summary summary{font-size:21px}
.summary dl{grid-template-columns:110px 1fr;font-size:11px}
.booking-result{padding:24px 18px}
.booking-result h2{font-size:28px}
.booking-result .request-code{font-size:18px;overflow-wrap:anywhere}
.nav-dialog{padding:22px}
.nav-dialog nav a{font-size:29px}
.dialog-top{font-size:13px}
.privacy-dialog{padding:24px}
.privacy-dialog h2{font-size:29px}
.privacy-dialog p{font-size:13px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}
*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.preparation-timing{border-top:1px solid var(--line);padding-top:26px;margin-top:30px}
.preparation-timing h3{font-size:27px;margin-bottom:24px}
.review-edit{display:flex;gap:10px 25px;flex-wrap:wrap;margin-block:22px}
.review-edit button{font-size:12px}
.fields>label{min-width:0}
.fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,.6fr)}
.fields.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
@media(max-width:650px){.fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.fields.two{grid-template-columns:minmax(0,1fr)}
.booking-intro h1{font-size:clamp(39px,10vw,48px)}}
.catalog-choice>span{min-width:0;overflow-wrap:anywhere}
/* Softer controls, individual dish photographs and editorial media. */
:root{--radius-control:14px}
.button,.menu-toggle,.journey-tabs button,.step-nav button,.mobile-actions a,.dialog-top button,.privacy-dialog>button{border-radius:var(--radius-control)}
.journey-tabs button{border-radius:14px 14px 0 0}
.text-button{border-radius:8px}
.dish-list{column-gap:48px;align-items:start}
.dish{grid-template-columns:170px minmax(0,1fr);gap:24px;align-items:start;padding-block:28px}
.dish.without-photo{grid-template-columns:1fr}
.dish-copy{min-width:0}
.dish-heading h3{overflow-wrap:anywhere}
.dish .dish-price{margin-top:7px;font-weight:500}
.dish-photo{position:relative;display:block;width:100%;aspect-ratio:1;border:0;padding:0;overflow:hidden;border-radius:16px;background:#E8E1D6;cursor:zoom-in}
.dish-photo img{width:100%;height:100%;object-fit:cover}
.dish-photo>span{position:absolute;right:8px;bottom:8px;width:27px;height:27px;border-radius:50%;background:var(--ivory);color:var(--espresso);line-height:27px;text-align:center;font-size:16px}
.dish-photo:focus-visible{outline-offset:4px}
.photo-dialog{width:900px;border-radius:24px;padding:24px;max-height:92dvh}
.photo-dialog .dialog-top{align-items:flex-start;gap:20px;padding-bottom:16px}
.photo-dialog h2{font-size:clamp(23px,3vw,34px)}
.photo-dialog .dialog-top p{font-size:14px;color:var(--muted);margin-top:8px}
.photo-dialog .dialog-top button{flex-shrink:0;padding:6px 14px;background:var(--espresso);color:var(--ivory)}
.photo-dialog>img{width:100%;height:auto;max-height:69dvh;object-fit:contain;margin-top:18px;border-radius:12px}
.editorial-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 26px;margin:65px 0 75px}
.editorial-gallery img{aspect-ratio:3/4;object-fit:cover}
.editorial-gallery figcaption,.editorial-pair figcaption,.occasion-editorial figcaption{margin-top:14px}
.editorial-pair{display:grid;grid-template-columns:1.3fr 1fr;gap:10%;align-items:center;padding-top:0}
.editorial-pair figure:first-child img{aspect-ratio:1.25;object-fit:cover}
.editorial-pair figure:last-child{max-width:360px;justify-self:end}
.gallery-policy{padding-top:0;padding-bottom:45px;font-size:13px;color:var(--muted)}
.occasion-editorial{display:grid;grid-template-columns:1fr 1.05fr;gap:12%;align-items:center;border-top:1px solid var(--line)}
.occasion-editorial>figure img{max-height:680px;object-fit:cover}
.occasion-editorial .reading>img{margin-top:40px;max-height:380px;object-fit:cover}
.video-feature{display:grid;grid-template-columns:minmax(240px,360px) minmax(0,1fr);gap:clamp(40px,9vw,150px);align-items:center;border-top:1px solid var(--line)}
.video-frame{position:relative;isolation:isolate;overflow:hidden;border-radius:24px;background:var(--espresso);width:100%;max-width:360px;aspect-ratio:9/16}
.video-frame>img,.video-frame>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
[data-video-player] video{opacity:0;transition:opacity .9s var(--ease)}
[data-video-player].has-frame video{opacity:1}
.video-controls{position:absolute;right:12px;bottom:12px;z-index:2;display:flex;gap:8px}
.video-controls button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:0 16px;border:1px solid rgb(244 241 234/.5);border-radius:999px;background:rgb(30 23 18/.5);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ivory);font:500 12px/1 var(--sans);letter-spacing:.02em;transition:background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease),scale .2s var(--ease)}
@media(hover:hover){.video-controls button:hover{background:rgb(30 23 18/.75)}}
.video-controls button:active{scale:.95}
.video-controls button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.video-controls .video-toggle{width:44px;padding:0;font-size:11px}
.video-controls .video-sound[aria-pressed=true]{background:var(--ivory);border-color:var(--ivory);color:var(--espresso)}
.sound-bars{display:inline-flex;align-items:flex-end;gap:2px;height:12px}
.sound-bars i{display:block;width:2px;height:4px;border-radius:1px;background:currentColor;transform-origin:bottom}
.video-sound[aria-pressed=true] .sound-bars i{height:12px}
.video-status{position:absolute;left:12px;right:12px;top:12px;padding:12px;border-radius:12px;color:var(--ivory);background:var(--espresso);font-size:12px;z-index:2}
.video-status:empty{display:none}
.video-copy h2{margin-bottom:26px;max-width:17ch}
.video-copy .field-note{margin-top:26px;max-width:48ch}
@media(max-width:1100px){.dish{grid-template-columns:130px minmax(0,1fr);gap:18px}
.dish-list{column-gap:32px}
.editorial-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
.occasion-editorial{gap:7%}
.video-feature{gap:8%}}
@media(max-width:650px){.dish{grid-template-columns:108px minmax(0,1fr);gap:17px;padding-block:24px}
.dish-list{grid-template-columns:1fr}
.dish h3{font-size:15px}
.dish p{font-size:12px}
.dish-photo{aspect-ratio:4/5;border-radius:13px}
.dish-tag{font-size:10px}
.photo-dialog{padding:18px;border-radius:20px}
.photo-dialog>img{max-height:65dvh}
.editorial-gallery{gap:30px 14px;margin-block:40px}
.editorial-gallery figcaption{font-size:11px}
.editorial-pair,.occasion-editorial,.video-feature{grid-template-columns:1fr;gap:34px}
.editorial-pair figure:last-child{max-width:75%;justify-self:end}
.occasion-editorial>figure{max-width:90%}
.occasion-editorial .reading>img{margin-top:30px}
.video-frame{max-width:300px;justify-self:center}
.video-copy{grid-row:1}
.video-copy h2{max-width:18ch}
.gallery-policy{padding-bottom:30px}}
/* Course disclosures stay separate from set selection and start closed. */
.catalog-card{border:1px solid var(--line);border-radius:14px;overflow:hidden}
.catalog-card:has(input:checked){border-color:var(--dark-gold);background:#E9E3D8}
.catalog-card .catalog-choice{border:0;background:transparent}
.set-courses{min-width:0}
.catalog-card .set-courses{border-top:1px solid var(--line);margin:0 18px 12px}
.set-courses summary{display:flex;align-items:center;gap:8px;cursor:pointer;min-height:48px;font-size:13px;color:var(--espresso);list-style:none}
.set-courses summary::-webkit-details-marker{display:none}
.set-courses summary:after{content:'+';font-size:22px;font-weight:400;margin-left:auto}
.set-courses[open] summary:after{content:'−'}
.set-courses .when-open{display:none}
.set-courses[open] .when-open{display:inline}
.set-courses[open] .when-closed{display:none}
.set-courses summary:focus-visible{outline:2px solid var(--dark-gold);outline-offset:2px;border-radius:6px}
.set-course-list{display:grid;gap:16px;list-style:none;padding:8px 0 16px;margin:0}
.set-course-list li{display:flex;align-items:center;gap:16px;font-size:14px;line-height:1.6;min-width:0}
.set-course-list img{width:104px;height:104px;object-fit:cover;border-radius:8px;flex:0 0 104px}
.set-course-list span{min-width:0;overflow-wrap:anywhere}
.set-course-list small{display:block;color:var(--muted);font-size:12px;margin-top:4px}
.catalog-menu-link{display:inline-flex;margin:0 18px 12px;min-height:44px;align-items:center;text-decoration:underline;font-size:13px}
.set-detail>.set-courses{grid-column:2}
.set-detail>.set-amount{align-self:start}
@media(max-width:600px){.set-course-list img{width:88px;height:88px;flex-basis:88px}
.set-course-list li{font-size:13px;gap:12px}
.set-detail>.set-courses{grid-column:auto}}
/* The booking form owns its actions; leave the keyboard and card tools clear. */
body:has(.booking-shell) .mobile-actions{display:none!important}
#date-booking:has(.step-nav[hidden]) .date-layout{grid-template-columns:minmax(0,1fr)}

/* Evening edition, 28/10/2026.
   One story per page: the hero is night, the reading chapter is linen, then dusk falls once and the page
   stays in the evening until the footer. Buttons are pills, inputs and media share one soft radius, and
   the arch is kept for the single lead photograph of a page. Motion only uses opacity and transforms. */
:root{--espresso-2:#2A211B;--linen:#E9E3D8;--ease:cubic-bezier(.22,.61,.36,1);--ease-out:cubic-bezier(.16,1,.3,1);--radius-control:999px;--radius-field:14px;--radius-media:18px;--header-h:76px}
h1,h2{text-wrap:balance}
h1 em,h2 em{font-style:italic;color:var(--dark-gold);letter-spacing:-.01em}
.dark h1 em,.dark h2 em,.hero h1 em,.contact h2 em{color:var(--gold)}
h2{font-size:clamp(36px,4.2vw,64px);line-height:1.1}
p{text-wrap:pretty}
.section-lede{max-width:52ch;color:var(--muted);margin-top:22px;font-size:17px;line-height:1.8}
.dark .section-lede{color:#D3C9BA}

/* Buttons: pills with an optional arrow kept in its own circle. */
.button{gap:14px;padding:12px 26px;border-radius:var(--radius-control);transition:background-color .5s var(--ease),color .5s var(--ease),border-color .5s var(--ease),scale .3s var(--ease)}
.button:has(.button-icon){padding-right:8px}
.button:active{scale:.98}
.button-icon{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;background:rgb(244 241 234/.14);font-size:15px;line-height:1;transition:translate .6s var(--ease-out),background-color .5s var(--ease)}
@media(hover:hover){.button:hover .button-icon{translate:4px 0}}
.hero .button:not(.secondary),.dark .button:not(.secondary),.contact .button:not(.secondary){background:var(--ivory);color:var(--espresso);border-color:var(--ivory)}
@media(hover:hover){.hero .button:not(.secondary):hover,.dark .button:not(.secondary):hover,.contact .button:not(.secondary):hover{background:var(--gold);border-color:var(--gold)}}
.hero .button-icon,.dark .button-icon,.contact .button-icon{background:rgb(30 23 18/.08)}
.hero .button.secondary,.dark .button.secondary,.contact .button.secondary{border-color:rgb(211 201 186/.6);color:var(--ivory);background:transparent}
@media(hover:hover){.hero .button.secondary:hover,.dark .button.secondary:hover,.contact .button.secondary:hover{background:var(--ivory);color:var(--espresso);border-color:var(--ivory)}}

/* Header: sticky on wide screens so booking stays one click away; phones use the bottom bar. */
.site-header{height:var(--header-h);view-transition-name:site-header}
.menu-toggle{align-items:center;gap:10px;padding:10px 4px 10px 14px}
.menu-toggle span{margin:0}
.menu-lines{display:block;width:20px;height:8px;border-block:1.5px solid currentColor}
@media(min-width:961px){.site-header{position:sticky;top:0;box-shadow:0 1px 0 rgb(211 201 186/.08)}
.category-nav{top:var(--header-h)}
.summary{top:calc(var(--header-h) + 24px)}
html{scroll-padding-top:calc(var(--header-h) + 36px)}}
@media(max-width:960px){.menu-toggle{display:flex}}

/* Media frames. Images fill their frame; .drift adds a slow parallax where the browser supports it. */
.frame{display:block;position:relative;overflow:hidden;border-radius:var(--radius-media);background:#E2DACD;isolation:isolate}
.dark .frame,.hero .frame{background:var(--espresso-2)}
.frame>img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease-out),scale 1.6s var(--ease-out)}
figure .frame+figcaption{margin-top:14px}
.dark figcaption{color:#C7BCAD}

/* 1. Opening. */
.hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,44%);align-items:stretch;min-height:min(880px,calc(100svh - var(--header-h)));background:var(--espresso);color:var(--ivory);overflow:hidden}
.hero-copy{align-self:center;max-width:calc(700px + var(--gutter));padding:clamp(28px,4vw,56px) clamp(32px,5vw,96px) clamp(44px,5vw,80px) calc(var(--gutter) + clamp(0px,3vw,56px))}
.hero .kicker{color:var(--gold);margin-bottom:26px}
.hero h1{font-size:clamp(64px,8.2vw,132px);line-height:1.04;letter-spacing:-.04em;margin-bottom:28px}
.hero h1 .line{display:block;padding-bottom:.06em}
.hero-lede{font-size:17px;line-height:1.85;color:#D3C9BA;max-width:36ch}
.hero .actions{margin-top:34px;gap:12px}
.hero-menu{display:inline-block;margin-top:22px;padding:8px 0;font-size:14px;color:#D3C9BA;text-decoration:underline;text-underline-offset:7px;text-decoration-thickness:1px;transition:color .4s var(--ease)}
@media(hover:hover){.hero-menu:hover{color:var(--gold)}}
.hero-media{position:relative;min-height:420px;background:var(--espresso-2)}
.hero-media>img,.hero-media>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-media::after{content:'';position:absolute;inset:0;background:linear-gradient(to right,var(--espresso),rgb(30 23 18/0) 24%),linear-gradient(to top,rgb(30 23 18/.5),rgb(30 23 18/0) 34%);pointer-events:none}

/* 2. Occasions: four photographed reasons to come, staggered on wide screens, swiped on phones. */
.occasions h2{max-width:16ch}
.occasion-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(16px,2vw,30px);margin-top:60px;align-items:start}
.occasion-card{display:block}
.occasion-card:nth-child(even){margin-top:64px}
.occasion-card .frame{aspect-ratio:3/4}
.occasion-name{display:block;font:30px/1.2 var(--serif);margin-top:22px;letter-spacing:-.015em}
.occasion-desc{display:block;color:var(--muted);font-size:14px;line-height:1.75;margin-top:8px;max-width:26ch}
.occasion-card:focus-visible .frame>img{transform:scale(1.045)}@media(hover:hover){.occasion-card:hover .frame>img{transform:scale(1.045)}}
@media(hover:hover){.occasion-card:hover .occasion-name{color:var(--dark-gold)}}
.occasion-name{transition:color .4s var(--ease)}

/* 3. A table for two: one wide photograph with a smaller one laid over its corner. */
.space-story{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(40px,7vw,120px);align-items:center}
.space-visual{position:relative;padding-bottom:72px}
.frame-wide{aspect-ratio:1.38}
.frame-inset{position:absolute;right:-26px;bottom:0;width:34%;aspect-ratio:3/4;box-shadow:0 0 0 7px var(--ivory),0 30px 60px -30px rgb(30 23 18/.45)}
.space-copy h2{margin-bottom:24px}
.space-copy p{color:var(--muted)}
.space-copy .button{margin-top:32px}

/* 4. Menu for two. */
.menu-head{max-width:680px}
.menu-feature{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(40px,6vw,110px);margin-top:60px;align-items:start}
.food-pair{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.food-pair .frame{aspect-ratio:2/3}
.food-pair .frame:last-child{margin-top:80px}
@media(min-width:1101px){.food-pair{position:sticky;top:calc(var(--header-h) + 40px)}}
.set-list{list-style:none;margin:0 0 36px;padding:0;border-top:1px solid var(--line)}
.set-list a{display:grid;grid-template-columns:1fr auto;gap:6px 24px;padding:26px 0;border-bottom:1px solid var(--line)}
.set-name{font:34px/1.15 var(--serif);letter-spacing:-.02em;transition:color .4s var(--ease),translate .6s var(--ease-out)}
.set-price{align-self:center;font-weight:500;white-space:nowrap;font-size:17px}
.set-price small{display:block;font-weight:400;color:var(--muted);font-size:12px;text-align:right}
.set-courses-inline{grid-column:1/-1;font-size:13px;line-height:1.75;color:var(--muted);max-width:62ch}
@media(hover:hover){.set-list a:hover .set-name{color:var(--dark-gold);translate:6px 0}}

/* Dusk: the linen chapter darkens into the evening instead of cutting to it. */
.dusk{background:linear-gradient(to bottom,var(--ivory) 0,#E4D6BF calc(clamp(140px,16vw,260px)*.22),#9A7B5A calc(clamp(140px,16vw,260px)*.5),#4B3A2C calc(clamp(140px,16vw,260px)*.78),var(--espresso) clamp(140px,16vw,260px));padding-top:calc(clamp(68px,9vw,136px) + clamp(120px,13vw,220px))}

/* 5. The kitchen before you arrive. */
.kitchen-story h2{max-width:18ch}
.details-photos{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.45fr);gap:clamp(28px,6vw,110px);align-items:end;margin-top:60px}
.details-photos figure:first-child .frame{aspect-ratio:.8}
.details-photos figure:last-child .frame{aspect-ratio:1.5}
.dark.video-feature{border-top:0}
.dark .video-frame{box-shadow:0 40px 80px -40px rgb(0 0 0/.7)}

/* 6. A few lines for the person across the table: a photograph and a paper card laid on it. */
.letter-story{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(48px,8vw,140px);align-items:center}
.letter-visual{position:relative;width:100%;max-width:420px;justify-self:center;padding-bottom:110px}
.letter-visual>.frame{aspect-ratio:3/4.1;rotate:-2.5deg}
.paper-letter{position:absolute;right:-16%;bottom:0;width:76%;padding:26px 28px 30px;background:radial-gradient(120% 90% at 18% 8%,#FBF8F2,#EDE6D9);color:var(--espresso);border-radius:4px;rotate:3deg;box-shadow:0 34px 70px -24px rgb(0 0 0/.6)}
.paper-letter span{font-size:11px;letter-spacing:.08em;color:var(--muted)}
.paper-letter p{font:italic 20px/1.65 var(--serif);margin-top:10px;max-width:none}
.letter-copy h2{margin-bottom:24px}
.letter-copy .button{margin-top:32px}

/* 7. Guests: a quiet pause that points to the reviews where they live. */
.guest-story{display:flex;flex-direction:column;align-items:center;text-align:center;padding-block:clamp(90px,11vw,160px);border-top:1px solid rgb(211 201 186/.12)}
.guest-story p{margin:22px auto 0;max-width:46ch}
.guest-story .underlink{margin-top:18px;color:var(--ivory)}
.guest-words{display:grid;gap:clamp(36px,5vw,64px);width:min(100%,780px);margin-top:clamp(40px,6vw,72px)}
.guest-word{margin:0}
.guest-word blockquote{margin:0;font-family:'Thi Display',serif;font-style:italic;font-size:clamp(22px,2.6vw,34px);line-height:1.4;color:var(--ivory)}
.guest-word figcaption{margin-top:14px;font-size:13px;letter-spacing:.08em;color:var(--gold)}
.guest-word+.guest-word{padding-top:clamp(36px,5vw,64px);border-top:1px solid rgb(211 201 186/.14)}
.guest-story .guest-score{margin-top:clamp(40px,5vw,60px);font-size:13px;opacity:.7}

/* 8. Booking and directions: the lit room at the end of the evening. */
.contact{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(40px,10vw,160px);max-width:none;background:var(--espresso-2);color:var(--ivory)}
.contact h2{margin-bottom:24px}
.contact p{color:#D3C9BA}
.contact .actions{margin-top:32px}
.contact-details{border-left:1px solid rgb(211 201 186/.2);padding-left:clamp(28px,4vw,56px)}
.contact-details h3{font-size:30px;margin-bottom:20px}
.contact-details p{font-size:14px}
.contact-details>p:not(:first-of-type){margin-top:22px}
.contact-details .small{color:#B9AE9E}

/* Inner pages. */
.page-intro h1{max-width:17ch}
.page-intro h1 em{display:inline}
.gallery-lead .frame{aspect-ratio:2.1}
.gallery-pair .frame{max-height:600px}
.gallery-pair figure:last-child .frame{aspect-ratio:.66}
.gallery-pair figure:first-child .frame{aspect-ratio:1.4}
.editorial-gallery .frame{aspect-ratio:3/4}
.editorial-gallery figure:nth-child(3n+2){margin-top:70px}
.editorial-gallery figure:nth-child(3n){margin-top:28px}
.editorial-gallery img{aspect-ratio:auto}
.experience-intro p:not(.kicker){color:var(--muted);margin-top:26px}
.experience-intro .button{margin-top:32px}
.frame.arch{aspect-ratio:.82;border-radius:50% 50% var(--radius-media) var(--radius-media)/34% 34% var(--radius-media) var(--radius-media)}
.experience-steps ol{list-style:none;counter-reset:step;padding:0}
.experience-steps li{counter-increment:step;position:relative;padding:0 0 34px 64px}
.experience-steps li:before{content:counter(step);position:absolute;left:0;top:-4px;width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--dark-gold);border-radius:50%;font:italic 20px/1 var(--serif);color:var(--dark-gold)}
.occasion-editorial{border-top:0}
.occasion-editorial>figure .frame{aspect-ratio:.68}
/* The photo, not the frame, was capped at 680px: the frame kept its portrait height and left an empty band (29/10/2026). */
.occasion-editorial>figure{width:min(100%,480px);justify-self:center}
.occasion-editorial>figure img{max-height:none}
.founder-sign{margin-top:22px;font:italic 400 24px/1.3 var(--serif);color:var(--dark-gold)}
.occasion-editorial .reading>.frame{margin-top:40px;aspect-ratio:1.2}
.story-editorial{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(40px,10vw,160px);align-items:center;padding-top:0}
.founder-portrait .frame{aspect-ratio:.78}
.founder-portrait .frame>img{object-position:center 30%}
.editorial-pair .frame{aspect-ratio:1.25}
.editorial-pair figure:last-child .frame{aspect-ratio:.7}
.gallery-policy{max-width:62ch}

/* Forms: one soft radius for every field and choice, labels stay above inputs. */
form input:not([type=checkbox]):not([type=radio]),form select,form textarea{border-radius:var(--radius-field);background:rgb(255 255 255/.5);border-color:#BDB09B;padding-inline:16px;transition:border-color .3s var(--ease),box-shadow .3s var(--ease)}
form input:not([type=checkbox]):not([type=radio]):focus,form select:focus,form textarea:focus{outline:none;border-color:var(--dark-gold);box-shadow:0 0 0 4px rgb(200 165 72/.22)}
.choice,.catalog-choice{border-radius:var(--radius-field);transition:border-color .3s var(--ease),background-color .3s var(--ease)}
.notice{border-left:0;border:1px solid rgb(129 105 39/.22);border-radius:var(--radius-field)}
.notice.error{border-color:var(--error)}
.journey-tabs{display:inline-flex;gap:4px;padding:5px;border:0;border-radius:var(--radius-control);background:var(--linen)}
.journey-tabs button{border:0;border-radius:var(--radius-control);padding:11px 22px;transition:background-color .4s var(--ease),color .4s var(--ease)}
.journey-tabs button[aria-pressed=true]{background:var(--espresso);color:var(--ivory)}
.booking-result,.test-banner{border-radius:var(--radius-field)}
.booking-shell .test-banner{margin-bottom:24px}
.optional-notes summary{display:flex;align-items:center}

/* Navigation sheet slides in from the right; its links rise one after another. */
.nav-dialog{margin:0 0 0 auto;height:100dvh;max-height:none;width:min(460px,100%);max-width:100%;padding:28px 36px;flex-direction:column;transition:translate .7s var(--ease-out),display .7s allow-discrete,overlay .7s allow-discrete}
.nav-dialog[open]{display:flex}
.nav-dialog:not([open]){translate:100% 0}
.nav-dialog nav{flex:1;align-content:center}
.nav-dialog nav a{font-size:36px}
dialog::backdrop{transition:opacity .5s var(--ease),display .5s allow-discrete,overlay .5s allow-discrete}
@starting-style{.nav-dialog[open]{translate:100% 0}
dialog[open]::backdrop{opacity:0}}
.photo-dialog[open]{animation:dialog-in .5s var(--ease-out)}

/* Motion. Everything here is decoration on top of a complete static page. */
@keyframes rise{from{opacity:0;translate:0 26px}to{opacity:1;translate:0 0}}
@keyframes media-in{from{opacity:0;scale:1.06}to{opacity:1;scale:1}}
@keyframes sound{from{scale:1 .3}to{scale:1 1}}
@keyframes dialog-in{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
@keyframes drift{from{translate:0 -6%}to{translate:0 6%}}
@media(prefers-reduced-motion:no-preference){
 @view-transition{navigation:auto}
 ::view-transition-old(root),::view-transition-new(root){animation-duration:.45s;animation-timing-function:var(--ease)}
 .hero-copy>*{animation:rise 1.1s var(--ease-out) both}
 .hero h1 .line{animation:rise 1.2s var(--ease-out) both}
 .hero h1 .line:nth-child(2){animation-delay:.12s}
 .hero-lede{animation-delay:.28s}
 .hero .actions{animation-delay:.4s}
 .hero-menu{animation-delay:.5s}
 .hero-copy>h1{animation:none}
 .hero-media>img{animation:media-in 2.2s var(--ease-out) both}
 .video-sound[aria-pressed=true] .sound-bars i{animation:sound .9s var(--ease) infinite alternate}
 .sound-bars i:nth-child(2){animation-delay:-.3s}
 .sound-bars i:nth-child(3){animation-delay:-.6s}
 .nav-dialog[open] nav a{animation:rise .8s var(--ease-out) both;animation-delay:calc(var(--i,0)*60ms + 140ms)}
 .motion [data-reveal]{transition:opacity 1s var(--ease-out),translate 1.2s var(--ease-out);transition-delay:calc(var(--i,0)*90ms)}
 .motion [data-reveal]:not(.is-in){opacity:0;translate:0 30px}
 .motion [data-reveal]:not(.is-in) .frame:not(.drift)>img,.motion .frame[data-reveal]:not(.is-in)>img{scale:1.07}
 @supports(animation-timeline:view()){
  .drift>img{scale:1.14;animation:drift linear both;animation-timeline:view();animation-range:cover}
 }
 details.set-courses{interpolate-size:allow-keywords}
 details.set-courses::details-content{block-size:0;overflow:hidden;transition:block-size .55s var(--ease),content-visibility .55s allow-discrete}
 details.set-courses[open]::details-content{block-size:auto}
}
@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}

@media(max-width:1100px){.occasion-name{font-size:25px}
.set-name{font-size:28px}
.menu-feature{grid-template-columns:1fr}
.food-pair{max-width:620px}
.paper-letter{right:-8%}}

@media(max-width:960px){.hero{grid-template-columns:1fr 1fr}
.hero h1{font-size:clamp(56px,9vw,84px)}
.occasion-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
.occasion-card:nth-child(even){margin-top:48px}
.occasion-card:nth-child(3){margin-top:-48px}
.space-story{grid-template-columns:1fr}
.frame-inset{right:0}
.letter-story{grid-template-columns:1fr}
.letter-visual{justify-self:start;margin-left:6%}
.contact{grid-template-columns:1fr}
.contact-details{border-left:0;padding-left:0;padding-top:30px;border-top:1px solid rgb(211 201 186/.2)}
.story-editorial{grid-template-columns:1fr}
.founder-portrait{max-width:520px}}

@media(max-width:650px){:root{--header-h:80px;--radius-media:16px}
h2{font-size:clamp(32px,9vw,40px)}
.section-lede{font-size:15px}
.hero{display:flex;flex-direction:column;justify-content:flex-end;min-height:calc(100svh - var(--header-h) - 60px - env(safe-area-inset-bottom));padding:0 0 32px}
.hero-media{position:absolute;inset:0;min-height:0}
.hero-media::after{background:linear-gradient(to bottom,rgb(30 23 18/.4),rgb(30 23 18/.08) 16%,rgb(30 23 18/.55) 32%,rgb(30 23 18/.88) 50%,var(--espresso) 100%)}
.hero-media .video-controls{top:14px;bottom:auto;right:var(--gutter)}
.hero-copy{position:relative;z-index:1;max-width:none;padding:0 var(--gutter)}
.hero .kicker{font-size:11px;margin-bottom:12px}
.hero h1{font-size:clamp(54px,16.5vw,72px);margin-bottom:18px}
.hero-lede{font-size:15px}
.hero .actions{margin-top:24px;gap:10px}
.hero .actions .button{min-height:48px;padding-block:10px;font-size:13px}
.occasion-cards{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:72%;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;margin:40px calc(var(--gutter)*-1) 0;padding:0 var(--gutter) 6px;scroll-padding-inline:var(--gutter);scrollbar-width:none}
.occasion-cards::-webkit-scrollbar{display:none}
.occasion-card,.occasion-card:nth-child(even),.occasion-card:nth-child(3){margin-top:0;scroll-snap-align:start}
.occasion-name{font-size:24px;margin-top:16px}
.occasion-desc{font-size:13px}
.space-visual{padding-bottom:56px}
.frame-inset{width:42%;box-shadow:0 0 0 5px var(--ivory)}
.food-pair{gap:12px}
.food-pair .frame:last-child{margin-top:46px}
.set-list a{padding:22px 0;gap:4px 16px}
.set-name{font-size:26px}
.set-courses-inline{font-size:12px}
.details-photos{grid-template-columns:1fr;gap:34px}
.details-photos figure:first-child{width:74%}
.letter-visual{max-width:300px;margin-left:4%;padding-bottom:96px}
.paper-letter{right:-14%;width:82%;padding:20px 20px 24px}
.paper-letter p{font-size:17px}
.guest-story{align-items:flex-start;text-align:left}
.guest-story p{margin-left:0}
.contact .actions{display:grid;grid-template-columns:1fr}
.editorial-gallery figure:nth-child(3n+2),.editorial-gallery figure:nth-child(3n){margin-top:0}
.editorial-gallery figure:nth-child(even){margin-top:34px}
.gallery-pair figure:last-child{width:75%;margin-left:auto}
.experience-steps li{padding-left:56px}
.founder-portrait{width:88%}
.editorial-pair figure:last-child{max-width:70%;justify-self:end}
.journey-tabs{display:flex;width:100%}
.journey-tabs button{flex:1;padding-inline:10px}
.nav-dialog{padding:22px 24px}
.nav-dialog nav a{font-size:32px}}
.category-nav a{position:relative;transition:color .3s var(--ease)}
.category-nav a[aria-current]{color:var(--dark-gold)}
.category-nav a[aria-current]:after{content:'';position:absolute;left:0;right:0;bottom:4px;height:1px;background:currentColor}
/* Overlapping photographs never widen the page on narrow phones. */
.letter-story,.space-story{overflow-x:clip}
@media(max-width:420px){.letter-visual{max-width:76%;margin-left:2%}
.paper-letter{right:-18%;width:88%}}

/* Date designer, 28/10/2026. The booking page is one guided design: photo choices on the left, the
   guest's plan card filling in on the right, and a plan they can keep or send at the end. */
.designer-intro{padding-bottom:36px}
.designer-intro>p:not(.designer-alt){color:var(--muted);max-width:60ch}
.designer-alt{margin-top:18px;font-size:14px;color:var(--muted)}
.designer-alt a{color:var(--espresso);text-decoration:underline;text-underline-offset:4px}
.booking-shell{max-width:1320px}
#date-booking{--progress:0}
.step-nav{position:relative;margin:8px 0 40px;gap:0}
.step-nav:before,.step-nav:after{content:'';position:absolute;left:12px;right:12px;top:22px;height:1px;background:var(--line)}
.step-nav:after{background:var(--dark-gold);transform-origin:left;transform:scaleX(var(--progress));transition:transform .8s var(--ease-out)}
.step-nav li{position:relative;z-index:1;border:0}
.step-nav button{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:8px 0 4px;border:0;font-size:12px}
.step-nav button[aria-current]{border:0}
.step-nav span{width:30px;height:30px;margin:0;background:var(--ivory);border-color:var(--line);transition:background-color .4s var(--ease),border-color .4s var(--ease),color .4s var(--ease)}
.step-nav [data-done] span{background:var(--dark-gold);border-color:var(--dark-gold);color:var(--ivory)}
.step-nav li:last-child button{align-items:flex-end}
.date-layout{grid-template-columns:minmax(0,1fr) 360px;gap:clamp(36px,5vw,72px)}
[data-panel]>h2{margin:0 0 28px;scroll-margin-top:calc(var(--header-h) + 28px)}
.step-lede{color:var(--muted);margin:-10px 0 26px}
.step-subhead{font-size:26px;margin:40px 0 18px}

/* Photo choices: the radio stays in the DOM and keyboard order; the photo is its face. */
.photo-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0 0 8px}
.photo-picker>legend{font-size:13px;font-weight:500;margin-bottom:14px}
.space-picker{grid-template-columns:repeat(3,minmax(0,1fr))}
.card-picker{grid-template-columns:repeat(3,minmax(0,1fr))}
.photo-choice{position:relative;display:block!important;cursor:pointer;font-weight:400!important}
.photo-choice>input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.photo-choice .frame{aspect-ratio:3/4;box-shadow:0 0 0 0 var(--dark-gold);transition:box-shadow .4s var(--ease),scale .4s var(--ease)}
.space-picker .photo-choice .frame{aspect-ratio:3/4}
.card-picker .card-frame{aspect-ratio:600/841;background:#E8E1D6}
.photo-choice .frame:after{content:'✓';position:absolute;right:10px;top:10px;width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:var(--ivory);color:var(--dark-gold);font-size:15px;opacity:0;scale:.6;transition:opacity .35s var(--ease),scale .45s var(--ease-out)}
.photo-choice:has(input:checked) .frame{box-shadow:0 0 0 3px var(--dark-gold)}
.photo-choice:has(input:checked) .frame:after{opacity:1;scale:1}
.photo-choice:has(input:focus-visible) .frame{outline:3px solid var(--dark-gold);outline-offset:4px}
@media(hover:hover){.photo-choice:hover .frame>img{transform:scale(1.04)}}
.photo-choice:active .frame{scale:.985}
.photo-choice-name{display:block;font:22px/1.25 var(--serif);margin-top:12px}
.photo-choice-desc{display:block;font-size:12px;line-height:1.6;color:var(--muted);margin-top:4px}
.chip-row{display:flex;flex-wrap:wrap;gap:10px}
.chip{position:relative;display:inline-flex!important;cursor:pointer;font-weight:400!important}
.chip input{position:absolute;opacity:0;width:1px;height:1px}
.chip span{display:inline-flex;align-items:center;min-height:46px;padding:10px 18px;border:1px solid var(--line);border-radius:var(--radius-control);font-size:14px;transition:background-color .3s var(--ease),border-color .3s var(--ease),color .3s var(--ease)}
.chip:has(input:checked) span{background:var(--espresso);border-color:var(--espresso);color:var(--ivory)}
.chip:has(input:focus-visible) span{outline:3px solid var(--dark-gold);outline-offset:3px}
.tile{min-height:92px}
.tile span{font:20px/1.3 var(--serif)}
.tile small{font:12px/1.6 var(--sans);margin-top:6px}
#suggest-plan{margin-top:20px}
.card-toggle{font-size:15px!important}
#card-lite textarea{font:italic 19px/1.7 var(--serif)}

/* Set cards carry a strip of their own dish photos. */
.catalog-choice{grid-template-columns:auto minmax(0,1fr)}
.set-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:14px;max-width:360px}
.set-strip img{aspect-ratio:1;object-fit:cover;border-radius:10px}
.catalog-card{transition:border-color .3s var(--ease),background-color .3s var(--ease),box-shadow .4s var(--ease)}
.catalog-card:has(input:checked){box-shadow:0 18px 40px -26px rgb(30 23 18/.45)}

/* The plan card: a paper menu that fills in as the guest designs. */
.summary{border:0;padding:0;top:calc(var(--header-h) + 24px)}
.summary>details>summary{font:400 22px var(--serif);display:flex;align-items:baseline;justify-content:space-between;gap:12px;list-style:none;margin-bottom:14px}
.summary>details>summary::-webkit-details-marker{display:none}
#plan-progress{font:500 12px var(--sans);color:var(--dark-gold);letter-spacing:.06em}
.plan-card{position:relative;padding:30px 28px 26px;background:radial-gradient(130% 90% at 20% 0%,#FCFAF5,#EFE8DC);border-radius:6px;box-shadow:0 30px 60px -36px rgb(30 23 18/.45),0 0 0 1px rgb(129 105 39/.18);text-align:center}
.plan-card:before{content:'';position:absolute;inset:9px;border:1px solid rgb(200 165 72/.45);border-radius:3px;pointer-events:none}
.plan-head{display:flex;flex-direction:column;gap:2px;align-items:center}
.plan-brand{font:400 22px var(--serif)}
.plan-tag{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.plan-title{font:italic 400 30px/1.15 var(--serif);margin-top:18px}
.plan-when{font-size:13px;margin-top:8px;max-width:none}
.plan-rows{text-align:left;margin:20px 0 0;border-top:1px solid rgb(129 105 39/.25)}
.plan-row{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;padding:10px 6px;border-bottom:1px dashed rgb(129 105 39/.2);border-radius:6px;font-size:13px}
.plan-row dt{color:var(--dark-gold);font-size:11px;letter-spacing:.04em;padding-top:2px}
.plan-row dd{margin:0;overflow-wrap:anywhere}
.plan-row dd small{display:block;color:var(--muted);font-size:11px;line-height:1.6;margin-top:3px}
.plan-empty{color:#A0968A;font-style:italic}
.plan-foot{display:flex;flex-direction:column;gap:4px;margin-top:18px;font-size:11px;color:var(--muted)}
.plan-foot strong{font:400 22px var(--serif);color:var(--espresso)}
.plan-edit{display:flex;justify-content:space-between;width:100%;gap:6px;background:none;border:0;padding:0;color:inherit;font:inherit;letter-spacing:inherit;text-align:left}
.plan-edit span{color:var(--muted);text-decoration:underline;text-underline-offset:3px}
.review-details .plan-card{max-width:620px;margin:0 auto;padding:44px 40px 36px}
.review-details .plan-title{font-size:40px}
/* The old review list rule (dl as a 140px/1fr grid) must not split the plan card into columns (29/10/2026). */
.review-details .plan-rows{display:block}
.review-details .plan-row dd{margin:0}
.review-details .plan-row{grid-template-columns:130px minmax(0,1fr);font-size:15px;padding-block:13px}
.at-review .summary{display:none}
.at-review .date-layout{grid-template-columns:minmax(0,1fr)}
.at-review .step-content{max-width:820px;margin-inline:auto;width:100%}
.contact-block{margin-top:40px}
.thank-you{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:24px;align-items:center;margin-block:32px;padding:20px;border-radius:var(--radius-media);background:#3A0B13;color:var(--ivory)}
.thank-you[hidden]{display:none}
.thank-photo{display:block;width:100%;height:auto;border-radius:12px}
.thank-row{display:grid;grid-template-columns:112px minmax(0,1fr) 28px;gap:6px;align-items:center;margin-bottom:8px}
form .thank-row input:not([type=checkbox]):not([type=radio]),form .thank-row select{height:44px;min-height:44px;margin:0;padding-block:0;font-size:16px;background:var(--ivory);color:var(--espresso)}
form .thank-row select{padding-inline:10px 2px}
.thank-remove{height:44px;padding:0;background:none;border:0;font-size:22px;color:var(--ivory)}
.thank-add{min-height:44px;font-size:15px;color:var(--gold)}
.thank-note{margin:6px 0 14px;font-size:13px;line-height:1.55;color:rgb(244 241 234/.8)}
.thank-note .text-button{color:var(--ivory);text-decoration:underline}
.thank-skip.button.secondary{width:100%;min-height:44px;padding-block:8px;color:var(--ivory);border-color:rgb(244 241 234/.5)}
.thank-off{display:none;margin:0;font-size:15px}
.thank-off .text-button{min-height:44px;color:var(--gold);text-decoration:underline}
.thank-you.is-skipped{display:block;padding-block:12px}
.thank-you.is-skipped .thank-photo,.thank-you.is-skipped .thank-body{display:none}
.thank-you.is-skipped .thank-off{display:block}
@media(max-width:650px){.thank-you{grid-template-columns:minmax(0,1fr);gap:16px;padding:12px 12px 16px}}
.handoff{margin-top:28px;padding:28px;border-radius:var(--radius-media);background:var(--espresso);color:var(--ivory)}
.handoff-lede{font:400 22px/1.4 var(--serif);max-width:40ch}
.handoff-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}
.handoff .button:not(.secondary){background:var(--ivory);color:var(--espresso);border-color:var(--ivory)}
.handoff .button.secondary{color:var(--ivory);border-color:rgb(211 201 186/.6);background:transparent}
@media(hover:hover){.handoff .button:hover{background:var(--gold);border-color:var(--gold);color:var(--espresso)}}
.handoff .button-icon{background:rgb(30 23 18/.08)}
.handoff .field-note{color:#C7BCAD;margin-bottom:0}
.handoff .field-note a{text-decoration:underline}
.handoff-status{margin-top:12px;font-size:14px;color:var(--gold)}
.handoff-status:empty{display:none}
.result-plan{margin:26px 0}
.result-plan .plan-card{max-width:520px}
#service-status .text-button{margin-left:6px}
@media(prefers-reduced-motion:no-preference){
 [data-panel]:not([hidden]){animation:rise .7s var(--ease-out) both}
 .handoff:not([hidden]){animation:rise .8s .15s var(--ease-out) both}
}
@media(max-width:1100px){.date-layout{grid-template-columns:minmax(0,1fr) 300px}
.photo-picker{grid-template-columns:repeat(2,minmax(0,1fr))}
.space-picker{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:960px){.date-layout{grid-template-columns:1fr}
.summary{position:static;grid-row:1}
.summary>details>summary{margin:0;padding:14px 18px;border:1px solid rgb(129 105 39/.25);border-radius:var(--radius-field);background:#EFE8DC;font-size:19px}
.summary>details[open]>summary{margin-bottom:14px}
.summary .plan-card{max-width:480px;margin-inline:auto}}
@media(max-width:650px){.step-nav{margin-bottom:30px}
.step-nav:before,.step-nav:after{top:19px}
.step-nav button{align-items:center;font-size:9px;gap:7px}
.step-nav li:last-child button{align-items:center}
.step-nav span{width:26px;height:26px}
[data-panel]>h2{font-size:30px;margin-bottom:22px}
.photo-picker,.card-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.space-picker{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:62%;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);margin-inline:calc(var(--gutter)*-1);padding:2px var(--gutter) 8px;scrollbar-width:none}
.space-picker>legend{padding-left:var(--gutter)}
.space-picker .photo-choice{scroll-snap-align:start}
.photo-choice-name{font-size:18px;margin-top:9px}
.chip span{min-height:44px;padding:9px 15px;font-size:13px}
.review-details .plan-card{padding:32px 20px 26px}
.review-details .plan-title{font-size:32px}
.review-details .plan-row{grid-template-columns:96px minmax(0,1fr);font-size:14px}
/* Keep the next step reachable without scrolling back up on long panels. */
.step-actions{position:sticky;bottom:0;z-index:5;margin-inline:calc(var(--gutter)*-1);padding:12px var(--gutter) calc(12px + env(safe-area-inset-bottom));background:rgb(244 241 234/.94);border-top:1px solid var(--line);backdrop-filter:blur(8px)}
.handoff{padding:22px 18px;margin-inline:calc(var(--gutter)*-1);border-radius:0}
.handoff-actions{display:grid}
.handoff-lede{font-size:19px}}
#next-step,#send-date{margin-left:auto}
/* The whole set card is the choice; the radio stays for keyboards and screen readers. */
.catalog-choice{display:block!important;position:relative;padding:22px 22px 18px}
.catalog-choice>input{position:absolute;opacity:0;width:1px;height:1px}
.catalog-choice:after{content:'✓';position:absolute;right:18px;top:18px;width:30px;height:30px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line);color:transparent;font-size:15px;transition:background-color .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease)}
.catalog-choice:has(input:checked):after{background:var(--dark-gold);border-color:var(--dark-gold);color:var(--ivory)}
.catalog-card:has(input:focus-visible){outline:3px solid var(--dark-gold);outline-offset:3px}
.catalog-choice strong{padding-right:44px}
.plan-edit{flex-direction:column;align-items:flex-start;gap:2px}
.plan-edit span{font-size:10px}
/* Older summary rules styled a plain <dl>; the plan card owns its own layout. */
.summary .plan-rows{display:block;font-size:inherit}
.plan-row dt,.plan-row dd{margin:0}
.summary .plan-row dt{color:var(--dark-gold);margin:0}
/* Safari keeps native select and date chrome, which ignores our height and padding; draw them like the
   other fields. The chevron is two gradient triangles, not an image. */
form select{-webkit-appearance:none;appearance:none;padding-right:46px;background-image:linear-gradient(45deg,transparent 50%,var(--espresso) 50%),linear-gradient(135deg,var(--espresso) 50%,transparent 50%);background-position:calc(100% - 24px) 54%,calc(100% - 18px) 54%;background-size:6px 6px,6px 6px;background-repeat:no-repeat;line-height:1.4}
form input[type=date],form input[type=time]{-webkit-appearance:none;appearance:none;min-height:52px;line-height:1.4;text-align:left}
form input[type=date]::-webkit-date-and-time-value,form input[type=time]::-webkit-date-and-time-value{text-align:left}
/* Quick day and time picks: one tap instead of the native pickers; the fields stay for other choices. */
.quick-picks{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.quick-picks[data-picks=time]{margin-bottom:18px}
.pick{min-height:42px;padding:8px 16px;border:1px solid var(--line);border-radius:var(--radius-control);background:rgb(255 255 255/.5);font-size:14px;color:var(--espresso);transition:background-color .3s var(--ease),border-color .3s var(--ease),color .3s var(--ease),scale .2s var(--ease)}
.pick:active{scale:.96}
.pick-other{border-style:dashed}
.pick-other[aria-pressed=true]{border-style:solid}
.pick[aria-pressed=true]{background:var(--espresso);border-color:var(--espresso);color:var(--ivory)}
form input.is-empty{color:#A0968A}
@media(max-width:650px){.designer-intro{padding-top:36px;padding-bottom:20px}
.designer-intro h1{font-size:clamp(38px,11vw,46px);margin-bottom:16px}
.designer-intro>p{font-size:14px}
.designer-alt{margin-top:12px}
.pick{flex:0 0 auto}}
/* Screen-reader-only text: the set names after "Xem n món" and the occasion legend were showing on screen. */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
@media(max-width:650px){.designer-intro>p:not(.designer-alt){display:none}
.designer-intro h1{margin-bottom:10px}
.step-nav{margin-top:0}}

/* Designer additions, 28/10/2026: five occasions, menu tuning, extras in detail, a four-part card. */
.occasion-picker{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(min-width:651px){.space-picker{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(min-width:961px){.occasion-cards{grid-template-columns:repeat(6,minmax(0,1fr))}.occasion-name{font-size:24px}}
@media(min-width:651px) and (max-width:960px){.occasion-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.occasion-card:nth-child(n){margin-top:0}.occasion-card:nth-child(3n+2){margin-top:48px}}
.decor-picker{grid-template-columns:repeat(3,minmax(0,1fr))}
.decor-picker .photo-choice .frame{aspect-ratio:1/1}
.decor-picker .photo-choice.is-unavailable{opacity:.5}
.decor-picker .photo-choice-desc s{color:var(--muted)}
.decor-free{font-weight:500;color:var(--dark-gold)}
.decor-detail{margin-top:22px}
.set-badge{display:inline-block;margin-bottom:12px;padding:5px 11px;border-radius:999px;background:var(--espresso);color:var(--ivory);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase}
.plan-foot .plan-extra{font-size:12px;color:var(--muted)}
.menu-tune{margin-top:12px}
.tune{border:1px solid var(--line);border-radius:14px;margin:0 0 12px;transition:border-color .3s var(--ease),background-color .3s var(--ease)}
.tune[open]{border-color:var(--dark-gold);background:#EFEAE0}
.tune>summary{display:flex;align-items:center;gap:12px;min-height:58px;padding:0 18px;cursor:pointer;font-size:15px;list-style:none}
.tune>summary::-webkit-details-marker{display:none}
.tune>summary:after{content:'+';margin-left:8px;font-size:20px;color:var(--dark-gold);transition:rotate .35s var(--ease)}
.tune[open]>summary:after{rotate:45deg}
.tune-count{margin-left:auto;font-size:12px;color:var(--dark-gold)}
.addon-list{padding:0 18px 14px;max-height:440px;overflow:auto;overscroll-behavior:contain}
.addon-group{margin:18px 0 4px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.addon-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid rgb(213 205 191/.7)}
.addon-name{min-width:0;font-size:14px;line-height:1.45}
.addon-name small{display:block;margin-top:2px;font-size:12px;color:var(--muted)}
.addon-row.is-picked .addon-name{font-weight:500}
.stepper{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto}
.stepper button{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--espresso);font-size:18px;line-height:1;transition:background-color .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease),scale .15s var(--ease)}
.stepper button:active{scale:.9}
.stepper button:disabled{opacity:.35}
.stepper output{min-width:20px;text-align:center;font-size:15px;font-variant-numeric:tabular-nums}
.addon-row.is-picked [data-step-addon="1"]{background:var(--espresso);border-color:var(--espresso);color:var(--ivory)}
.tune-swap{display:block;margin-top:18px}
.extra-detail{margin:4px 0 26px;padding:22px 22px 4px;border:1px solid var(--line);border-radius:18px;background:#EFEAE0}
.extra-title{margin:0 0 14px;font:400 25px/1.2 var(--serif)}
.extra-lede{max-width:60ch;margin:-4px 0 18px;font-size:14px;line-height:1.7;color:var(--muted)}
.swatch{display:inline-block;width:14px;height:14px;margin-right:8px;border-radius:50%;background:var(--swatch);box-shadow:inset 0 0 0 1px rgb(30 23 18/.2)}
.card-compose{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:clamp(22px,4vw,44px);align-items:start;margin-top:28px}
.card-preview-wrap{position:sticky;top:calc(var(--header-h) + 18px);max-width:330px;width:100%;justify-self:center}
.card-preview{aspect-ratio:154/216;overflow:hidden;border-radius:4px;background:#F2ECE0;box-shadow:0 30px 60px -34px rgb(30 23 18/.55)}
.card-preview svg{display:block;width:100%;height:auto}
.card-preview.is-sample [data-field]{opacity:.72}
.card-writer{margin-bottom:26px;padding:20px 20px 2px;border:1px solid var(--line);border-radius:18px;background:#EFEAE0}
.card-fields>label,.card-writer>label{display:block}
@media(max-width:650px){
 .occasion-picker{grid-template-columns:repeat(2,minmax(0,1fr))}
 .card-preview-wrap{position:static;max-width:270px}
 .extra-detail{padding:18px 16px 2px}
 .addon-list{padding:0 14px 12px}
 .tune>summary{padding:0 14px}
}
@media(prefers-reduced-motion:no-preference){
 .extra-detail:not([hidden]),.menu-tune details[open] .addon-list{animation:rise .55s var(--ease-out) both}
}

/* Deposit after sending (ROS 1905): QR, bank details, countdown, live status. */
.deposit{margin:28px 0 8px;padding:24px;border:1px solid var(--dark-gold);border-radius:18px;background:var(--ivory)}
.deposit-kicker{margin:0 0 6px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dark-gold)}
.deposit h3{margin:0 0 18px;font:400 30px/1.2 var(--serif)}
.deposit h3 span{display:block;margin-top:4px;font:400 15px/1.4 var(--sans);color:var(--muted)}
.deposit-timer{font-variant-numeric:tabular-nums;color:var(--espresso)}
.deposit-body{display:grid;grid-template-columns:auto minmax(0,1fr);gap:24px;align-items:start}
.deposit-qr{width:220px;height:220px;padding:10px;border-radius:12px;background:#fff;box-shadow:0 0 0 1px var(--line)}
.deposit-bank{margin:0;font-size:14px}
.deposit-bank>div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:8px;padding:8px 0;border-bottom:1px solid rgb(213 205 191/.7)}
.deposit-bank dt{color:var(--muted)}
.deposit-bank dd{display:flex;align-items:center;gap:10px;margin:0;overflow-wrap:anywhere;font-weight:500}
.deposit-copy{flex:0 0 auto;min-height:32px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:transparent;font-size:12px;color:var(--espresso)}
.deposit-status{margin:16px 0 0;font-weight:500}
.deposit.is-confirmed{border-color:var(--espresso);background:#EFEAE0}
@media(max-width:650px){
 .deposit{padding:20px 16px}
 .deposit-body{grid-template-columns:1fr}
 .deposit-qr{justify-self:center}
 .deposit-bank>div{grid-template-columns:96px minmax(0,1fr)}
}

/* 28/10/2026, second round: groups, bouquets from the florist's list, two-sided letters. */
.group-menu{margin-bottom:18px}
.group-menu>label{display:block;margin-top:14px}
.decor-cloth{margin-top:14px}
.flower-filters{display:grid;gap:14px}
.flower-facet legend{font-size:13px;font-weight:500;margin-bottom:10px}
.flower-facet .chip span{min-height:40px;padding:8px 14px;font-size:13.5px}
.flower-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:20px 0 12px;font-size:13px;color:var(--muted)}
.flower-bar p{margin:0}
.flower-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:18px 14px}
.flower-card{position:relative;display:block!important;cursor:pointer;font-weight:400!important}
.flower-card>input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.flower-photo{position:relative;display:block;aspect-ratio:4/5;overflow:hidden;border-radius:14px;background:var(--linen);box-shadow:0 0 0 0 var(--dark-gold);transition:box-shadow .35s var(--ease),scale .3s var(--ease)}
.flower-photo img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}
@media(hover:hover){.flower-card:hover .flower-photo img{transform:scale(1.04)}}
.flower-card:active .flower-photo{scale:.985}
.flower-card:has(input:checked) .flower-photo{box-shadow:0 0 0 3px var(--dark-gold)}
.flower-card:has(input:focus-visible) .flower-photo{outline:3px solid var(--dark-gold);outline-offset:3px}
.flower-tick{position:absolute;right:8px;top:8px;width:28px;height:28px;border-radius:50%;background:rgb(244 241 234/.9);box-shadow:inset 0 0 0 1px rgb(30 23 18/.25)}
.flower-card:has(input:checked) .flower-tick{background:var(--dark-gold);box-shadow:none}
.flower-card:has(input:checked) .flower-tick:after{content:'✓';position:absolute;inset:0;display:grid;place-items:center;color:var(--ivory);font-size:14px}
.flower-badge{position:absolute;left:8px;top:8px;padding:4px 9px;border-radius:999px;background:var(--espresso);color:var(--ivory);font-size:10px;letter-spacing:.1em;text-transform:uppercase}
.flower-name{display:block;margin-top:10px;font:17px/1.3 var(--serif)}
.flower-meta{display:block;margin-top:3px;font-size:12px;line-height:1.5;color:var(--muted)}
.flower-price{display:block;margin-top:4px;font-size:14px;font-weight:500}
.flower-empty{margin:8px 0 0;font-size:14px;color:var(--muted)}
.flower-picked{margin:20px 0 4px}
.flower-picked:empty{display:none}
.flower-picked p{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:0 0 8px;font-size:15px}
.flower-picked p span{font-size:12px;color:var(--dark-gold)}
.flower-picked ul{margin:0;padding:0;list-style:none}
.flower-picked li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid rgb(213 205 191/.7);font-size:14px}
.flower-picked li button,.card-sides button{min-height:34px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:transparent;font-size:12.5px;color:var(--espresso)}
.flower-shop>label{display:block;margin-top:14px}
.card-sides{display:flex;justify-content:center;gap:8px;margin:0 0 12px}
.card-sides button[aria-pressed=true]{background:var(--espresso);border-color:var(--espresso);color:var(--ivory)}
.flower-pay .flower-qr{width:220px;padding:10px;border-radius:12px;background:#fff;box-shadow:0 0 0 1px var(--line)}
.flower-pay .flower-qr svg{display:block;width:100%;height:auto}
.flower-pay-inline{margin:20px 0 8px}
.space-picker .photo-choice{position:relative}
.space-picker .photo-choice.is-unavailable{opacity:.5}
.space-picker .photo-choice.is-unavailable .frame{filter:grayscale(.8)}
.space-status{position:absolute;top:10px;left:10px;padding:5px 10px;border-radius:999px;background:var(--ivory);font-size:13px;font-weight:600;box-shadow:0 0 0 1px var(--line)}
.slot-hold{margin:12px 0 0;padding:12px 16px;border-radius:12px;background:var(--ivory);box-shadow:0 0 0 1px var(--dark-gold)}
.slot-hold.is-warn{box-shadow:0 0 0 1px #8a3b12;color:#8a3b12}
.rehold .rehold-spaces{flex-wrap:wrap}
.flower-pay-inline .flower-paid{margin-top:14px;font-weight:600}
.flower-warn{color:#8a3b12}
.extra-list .choice.is-unavailable{opacity:.5;pointer-events:none}
.flower-pay-list{margin:-6px 0 18px;padding:0;list-style:none;font-size:14px}
.flower-pay-list li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid rgb(213 205 191/.7)}
@media(max-width:650px){
 .decor-picker{grid-template-columns:repeat(2,minmax(0,1fr))}
 .flower-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 12px}
 .flower-name{font-size:16px}
 .flower-pay .flower-qr{justify-self:center}
}

/* 28/10/2026, evening: sketched occasions, dish thumbnails with zoom, structured swaps in a set. */
/* Line drawings (29/10/2026): square, on the same cream as the paper, for home cards and the designer. */
.occasion-picker .frame,.occasion-card .frame{aspect-ratio:1/1;background:#F3F0E6}
.occasion-picker .frame>img,.occasion-card .frame>img{object-fit:contain}
.addon-row{justify-content:flex-start}
.addon-row .addon-name{flex:1}
.dish-thumb{flex:0 0 auto;width:56px;height:56px;padding:0;border:0;border-radius:12px;overflow:hidden;background:var(--linen);cursor:zoom-in}
.dish-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
@media(hover:hover){.dish-thumb:hover img{transform:scale(1.08)}}
.dish-thumb:focus-visible{outline:3px solid var(--dark-gold);outline-offset:2px}
.dish-thumb.is-empty{cursor:default}
.dish-zoom{width:min(92vw,560px);max-height:92dvh;padding:0;border:0;background:transparent;overflow:visible;cursor:zoom-out}
.dish-zoom:focus,.dish-zoom:focus-visible{outline:none}
.dish-zoom::backdrop{background:rgb(20 15 12/.9);backdrop-filter:blur(8px)}
.dish-zoom img{display:block;width:100%;height:auto;max-height:78dvh;object-fit:contain;border-radius:20px;box-shadow:0 40px 80px -40px rgb(0 0 0/.7)}
.dish-zoom-name{margin:14px 0 0;text-align:center;font:400 22px/1.3 var(--serif);color:var(--ivory)}
.dish-zoom-hint{margin:6px 0 0;text-align:center;font-size:12px;color:rgb(244 241 234/.7)}
@media(prefers-reduced-motion:no-preference){.dish-zoom[open] img{animation:zoom-in .45s var(--ease-out) both}.dish-zoom[open]::backdrop{animation:fade-in .35s var(--ease) both}}
@keyframes zoom-in{from{opacity:0;scale:.86}to{opacity:1;scale:1}}
@keyframes fade-in{from{opacity:0}to{opacity:1}}
.swap-list{padding:0 18px 4px}
.swap-empty,.swap-rule{margin:0;padding:6px 18px 14px;font-size:13px;line-height:1.6;color:var(--muted)}
.swap-list .swap-empty{padding:12px 0}
.swap-row{padding:12px 0;border-bottom:1px solid rgb(213 205 191/.7)}
.swap-head{display:flex;align-items:center;gap:12px}
.swap-name{flex:1;min-width:0;font-size:14px;line-height:1.45}
.swap-name small{display:block;margin-top:2px;font-size:12px;color:var(--muted)}
.swap-row.is-swapped .swap-name{text-decoration:line-through;text-decoration-color:rgb(129 105 39/.6);color:var(--muted)}
.swap-toggle,.swap-chosen button{flex:0 0 auto;min-height:36px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:transparent;font-size:12.5px;color:var(--espresso)}
.swap-toggle[aria-expanded=true]{background:var(--espresso);border-color:var(--espresso);color:var(--ivory)}
.swap-chosen{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0 0 68px;font-size:14px}
.swap-chosen strong{font-weight:500;color:var(--dark-gold)}
.swap-note{margin:8px 0 0 68px;font-size:12.5px;line-height:1.55;color:var(--muted)}
.swap-options{display:grid;gap:8px;margin:12px 0 4px 68px}
.swap-option{display:flex;align-items:center;gap:10px}
.swap-option .dish-thumb{width:46px;height:46px;border-radius:10px}
.swap-pick{flex:1;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;padding:8px 14px;border:1px solid var(--line);border-radius:14px;background:var(--ivory);text-align:left;font-size:13.5px;color:var(--espresso);transition:border-color .25s var(--ease),background-color .25s var(--ease)}
.swap-pick small{flex:0 0 auto;font-size:12px;color:var(--muted)}
.swap-pick[aria-pressed=true]{border-color:var(--dark-gold);box-shadow:0 0 0 1px var(--dark-gold)}
@media(hover:hover){.swap-pick:hover{border-color:var(--dark-gold)}}
@media(max-width:650px){
 .swap-list{padding:0 14px 4px}
 .swap-chosen,.swap-note,.swap-options{margin-left:0}
 .dish-thumb{width:50px;height:50px}
}

/* "Viết giúp tôi" (29/10/2026). */
.card-ai{margin:6px 0 18px}
.card-ai .button{width:100%;justify-content:center}
.card-ai .button.is-writing{animation:ai-pulse 1.3s ease-in-out infinite;cursor:progress}
@keyframes ai-pulse{0%,100%{opacity:1}50%{opacity:.62}}
@media(prefers-reduced-motion:reduce){.card-ai .button.is-writing{animation:none}}
.card-ai-status{margin:10px 0 0;font-size:13.5px;line-height:1.6;color:var(--espresso)}
.card-ai-status:empty{display:none}
.card-ai-note{margin:10px 0 0;font-size:12px;line-height:1.6;color:var(--muted)}
.card-fields>label{border-radius:12px}

/* Guest photos on the card and the completion step (29/10/2026). */
.card-photos{margin:22px 0 4px;padding:20px 20px 10px;border:1px solid var(--line);border-radius:18px;background:#EFEAE0}
.card-photo-slots{display:flex;flex-wrap:wrap;gap:12px}
.card-photo-slot{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.card-photo-slot label{display:flex!important;flex-direction:column;gap:6px;cursor:pointer;font-size:12.5px;color:var(--muted)}
.card-photo-slot input{position:absolute;opacity:0;width:1px;height:1px}
.card-photo-thumb{display:grid;place-items:center;width:84px;height:84px;border:1px dashed var(--dark-gold);border-radius:14px;background:var(--ivory);overflow:hidden;font-size:26px;color:var(--dark-gold)}
.card-photo-thumb img{width:100%;height:100%;object-fit:cover}
.card-photo-slot.has-photo .card-photo-thumb{border-style:solid}
.card-photo-slot label:has(input:focus-visible) .card-photo-thumb{outline:3px solid var(--dark-gold);outline-offset:3px}
.card-photo-slot button{min-height:30px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:transparent;font-size:12px;color:var(--espresso)}
.completion{margin:24px 0 8px;padding:22px 24px;border:1px dashed var(--dark-gold);border-radius:18px;background:var(--ivory)}
.completion.is-done{border-style:solid;background:#EFEAE0}
.completion-status{margin:0 0 4px;font-size:15px;line-height:1.6}
.completion-actions:empty{display:none}

/* Last word on [hidden]: components above force display with !important, so hiding must win after them (29/10/2026). */
[hidden]{display:none!important}
