:root{--cream:#FBF3E8;--cream2:#F4E6D6;--blush:#F4D5DC;--rose:#D9A0B0;--plum:#47182F;--ink:#2A1420;--muted:#7A5F68;--serif:'Instrument Serif',Georgia,serif;--sans:'Hanken Grotesk',system-ui,sans-serif}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;padding-top:env(safe-area-inset-top,0px);scroll-padding-top:5rem}
body{background:var(--cream);color:var(--ink);font:400 1rem/1.65 var(--sans);-webkit-font-smoothing:antialiased}
a{color:inherit} ul{list-style:none}
:focus-visible{outline:2px solid var(--plum);outline-offset:3px}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.02}
.btn{display:inline-block;background:var(--plum);color:var(--cream);text-decoration:none;font-weight:500;font-size:.95rem;padding:1rem 2rem;border-radius:999px;border:1px solid var(--plum);transition:background .25s,color .25s}
.btn:hover{background:transparent;color:var(--plum)}
.btn.alt{background:transparent;color:var(--plum)} .btn.alt:hover{background:var(--plum);color:var(--cream)}
header{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:1.4rem clamp(1.25rem,4vw,3.5rem)}
.logo{font:400 1.7rem var(--serif);text-decoration:none;font-style:italic}
header nav{display:flex;align-items:center;gap:2rem;font-size:.95rem}
header nav a:not(.btn){text-decoration:none} header nav a:not(.btn):hover{text-decoration:underline;text-underline-offset:5px}
header .btn{padding:.65rem 1.4rem}
@media(max-width:700px){header nav a:not(.btn){display:none}}
.hero{min-height:100svh;display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(1.5rem,5vw,5rem);align-items:center;padding:7rem clamp(1.25rem,5vw,5rem) 4rem;background:radial-gradient(ellipse at 85% 40%,var(--blush) 0,transparent 60%),var(--cream)}
.hero h1{font-size:clamp(3.6rem,8vw,7.6rem);margin-bottom:1.5rem} .hero h1 em{color:#B4607A}
.hero p{max-width:34ch;color:var(--muted);font-size:1.12rem;margin-bottom:2.2rem}
.hero .ctas{display:flex;gap:.9rem;flex-wrap:wrap}
.door{position:relative;justify-self:center;width:min(100%,29rem)}
.door::before{content:'';position:absolute;inset:-.9rem -.9rem 0;border:1px solid var(--plum);border-bottom:0;border-radius:999px 999px 0 0;opacity:.35}
.arch{position:relative;aspect-ratio:3/4.2;border-radius:999px 999px 0 0;overflow:hidden;background:var(--blush);animation:open 1.7s cubic-bezier(.2,.7,.2,1) both}
.arch img{width:100%;height:100%;object-fit:cover;object-position:25% 50%;mix-blend-mode:multiply}
.sign{position:absolute;left:50%;bottom:-1.1rem;transform:translateX(-50%);background:var(--cream);border:1px solid var(--plum);border-radius:999px;padding:.45rem 1.3rem;font-size:.85rem;white-space:nowrap}
@keyframes open{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}
@media(max-width:900px){.hero{grid-template-columns:1fr;padding-top:6.5rem}.door{order:-1;width:min(78%,22rem)}}
@media(prefers-reduced-motion:reduce){.arch{animation:none}html{scroll-behavior:auto}}
.wrap{max-width:1180px;margin:0 auto;padding:clamp(4rem,9vw,7.5rem) clamp(1.25rem,4vw,3rem)}
.head{display:flex;justify-content:space-between;align-items:end;gap:2rem;flex-wrap:wrap;margin-bottom:2.5rem}
.head h2{font-size:clamp(2.6rem,5.5vw,4.6rem)} .head p{max-width:36ch;color:var(--muted)}
.menuwrap{background:var(--blush)}
.chips{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:2.5rem}
.chips button{font:500 .9rem var(--sans);padding:.55rem 1.2rem;border-radius:999px;border:1px solid var(--plum);background:transparent;color:var(--plum);cursor:pointer}
.chips button[aria-pressed=true]{background:var(--plum);color:var(--cream)}
.menu{background:var(--cream);padding:clamp(1.5rem,4vw,3.5rem);border-radius:1.5rem;columns:2 22rem;column-gap:4rem;box-shadow:0 30px 60px rgba(71,24,47,.12)}
.cat{break-inside:avoid;margin-bottom:2.6rem} .cat[hidden]{display:none}
.cat h3{font-size:2rem;font-style:italic;color:#B4607A;margin-bottom:.5rem}
.cat li,.fees li{display:flex;align-items:baseline;gap:.6rem;padding:.4rem 0}
.cat li i,.fees li i{flex:1;border-bottom:1px dotted rgba(71,24,47,.4);transform:translateY(-4px);min-width:1rem}
.cat li b,.fees li b{font-weight:600}
.cat>a{display:inline-block;margin-top:.5rem;font-size:.9rem;font-weight:500;color:var(--plum);text-underline-offset:4px}
.addons{margin-top:2rem;padding-top:2rem;border-top:1px solid rgba(71,24,47,.2);color:var(--muted);font-size:.95rem}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem;counter-reset:s}
.steps li{counter-increment:s;padding-top:1.2rem;border-top:1px solid var(--plum)}
.steps li::before{content:counter(s);font:italic 2.6rem var(--serif);color:#B4607A;display:block;line-height:1;margin-bottom:.6rem}
.steps h3{font-size:1.7rem;margin-bottom:.4rem} .steps p{color:var(--muted);font-size:.95rem}
@media(max-width:850px){.steps{grid-template-columns:1fr 1fr}} @media(max-width:520px){.steps{grid-template-columns:1fr}}
.know{background:var(--cream2)} .know ul{columns:2 20rem;column-gap:3rem}
.know li{break-inside:avoid;padding:.9rem 0;border-bottom:1px solid rgba(71,24,47,.18)}
.visit{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,6rem)}
.visit h2{font-size:clamp(2.6rem,5vw,4.2rem);margin-bottom:1rem} .visit p{color:var(--muted);max-width:38ch;margin-bottom:1.5rem}
.fees{max-width:26rem}
@media(max-width:800px){.visit{grid-template-columns:1fr}}
footer{background:var(--plum);color:var(--cream);padding:clamp(3rem,7vw,5.5rem) clamp(1.25rem,4vw,3rem) calc(2rem + env(safe-area-inset-bottom,0px));border-radius:2.5rem 2.5rem 0 0}
.card{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:2.5rem}
.card .mark{font:italic clamp(4rem,10vw,8rem)/.9 var(--serif);color:var(--blush)}
.card h4{font:500 .95rem var(--sans);color:var(--rose);margin-bottom:.7rem} .card p,.card a{display:block;color:var(--cream);text-decoration:none;opacity:.92} .card a:hover{text-decoration:underline;text-underline-offset:4px}
.fine{max-width:1180px;margin:3rem auto 0;padding-top:1.5rem;border-top:1px solid rgba(251,243,232,.2);display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.85rem;opacity:.75}
@media(max-width:800px){.card{grid-template-columns:1fr}}
.gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:7rem;gap:1rem;grid-auto-flow:dense}
.slot{position:relative;overflow:hidden;border-radius:1rem;background:var(--blush);border:1px dashed rgba(71,24,47,.35);display:grid;place-items:center;color:var(--muted);font-size:.9rem}
.slot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.slot.g1{grid-row:span 4;border-radius:999px 999px 1rem 1rem}.slot.g2{grid-row:span 3}.slot.g3{grid-row:span 4}.slot.g4{grid-row:span 3}.slot.g5{grid-row:span 3}.slot.g6{grid-row:span 4}
@media(max-width:600px){.gallery{grid-template-columns:1fr 1fr;grid-auto-rows:6rem}}
.cartbtn{font:500 .95rem var(--sans);background:var(--blush);color:var(--plum);border:1px solid var(--plum);border-radius:999px;padding:.6rem 1.2rem;cursor:pointer}
.cartbtn b{background:var(--plum);color:var(--cream);border-radius:999px;padding:0 .5rem;margin-left:.3rem}
.cat li{align-items:center}.cat li em{font-style:normal;font-size:.8rem;color:var(--muted)}
.plus{width:2rem;height:2rem;border-radius:50%;border:1px solid var(--plum);background:transparent;color:var(--plum);font-size:1.2rem;line-height:1;cursor:pointer;flex:none}
.plus:hover,.plus.on{background:var(--plum);color:var(--cream)}
.bk{padding:clamp(1.3rem,4vw,2.4rem);overflow:auto;max-height:92svh}
.bk h2{font-size:2.4rem;margin-bottom:.3rem}.bk .x{float:right;background:none;border:0;font-size:1.6rem;cursor:pointer;color:var(--plum)}
.bk .muted{color:var(--muted)} .row{display:flex;justify-content:space-between;gap:1rem;padding:.6rem 0;border-bottom:1px solid rgba(71,24,47,.15);align-items:center}
.row button.rm{background:none;border:0;color:#B4607A;cursor:pointer;text-decoration:underline}
.bk h4{font:600 .95rem var(--sans);margin:1.4rem 0 .4rem}
.chk{display:flex;gap:.6rem;align-items:center;padding:.35rem 0;cursor:pointer}
.tot{display:flex;justify-content:space-between;font:1.7rem var(--serif);margin:1.2rem 0}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:.3rem;text-align:center;margin:.8rem 0}
.cal span{font-size:.8rem;color:var(--muted)}
.cal button{aspect-ratio:1;border-radius:50%;border:1px solid transparent;background:transparent;font:inherit;color:rgba(42,20,32,.3);cursor:not-allowed}
.cal button.ok{background:var(--blush);color:var(--ink);cursor:pointer}.cal button.ok:hover,.cal button.sel{background:var(--plum);color:var(--cream)}
.mn{display:flex;justify-content:space-between;align-items:center;font:1.6rem var(--serif)}.mn button{background:none;border:1px solid var(--plum);border-radius:50%;width:2.2rem;height:2.2rem;cursor:pointer;color:var(--plum)}
.slots{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem}
.slots button{padding:.55rem 1rem;border-radius:999px;border:1px solid var(--plum);background:transparent;color:var(--plum);font:inherit;cursor:pointer}
.slots button.sel{background:var(--plum);color:var(--cream)}
.bk input,.bk select,.bk textarea{width:100%;padding:.8rem 1rem;border-radius:.8rem;border:1px solid rgba(71,24,47,.3);background:#fff8;font:inherit;margin:.25rem 0 .8rem}
.err{color:#9b2c45;margin:.5rem 0}
.float{position:fixed;z-index:6;left:50%;transform:translateX(-50%);bottom:calc(1rem + env(safe-area-inset-bottom,0px));display:none;box-shadow:0 10px 30px rgba(71,24,47,.35)}
@media(max-width:700px){.float{display:inline-block}}

/* multi-page additions */
.cartbtn{display:inline-flex;align-items:center;text-decoration:none}
.burger{display:none;font:500 .95rem var(--sans);background:transparent;border:1px solid var(--plum);color:var(--plum);border-radius:999px;padding:.55rem 1.1rem;cursor:pointer}
header nav a[aria-current]{text-decoration:underline;text-underline-offset:6px}
@media(max-width:700px){.burger{display:inline-block}header nav{display:none;position:absolute;top:4.6rem;left:1rem;right:1rem;flex-direction:column;align-items:stretch;gap:1rem;background:var(--cream);padding:1.4rem;border-radius:1.2rem;box-shadow:0 20px 50px rgba(71,24,47,.25);text-align:center}header nav.open{display:flex}header nav a:not(.btn){display:block!important}}
.pagehead{padding:8rem clamp(1.25rem,5vw,5rem) 1rem;max-width:1180px;margin:0 auto}
.pagehead h1{font-size:clamp(3rem,7vw,6rem)}.pagehead h1 em{color:#B4607A}.pagehead p{color:var(--muted);max-width:44ch;margin-top:1rem;font-size:1.1rem}
.bk.page{max-height:none;overflow:visible;padding:0}
.split{display:grid;grid-template-columns:1.5fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:start}
.panel{background:var(--blush);border-radius:1.5rem;padding:1.6rem;position:sticky;top:1.5rem}
.panel h3{font-size:1.9rem;margin-bottom:.6rem}
@media(max-width:850px){.split{grid-template-columns:1fr}.panel{position:static}}
.cartbar{position:fixed;z-index:6;left:50%;transform:translateX(-50%);bottom:calc(1rem + env(safe-area-inset-bottom,0px));box-shadow:0 10px 30px rgba(71,24,47,.35)}
.cartbar[hidden]{display:none}
.rows{list-style:none}.rows li{padding:1.4rem 0;border-bottom:1px solid rgba(71,24,47,.18);display:flex;gap:1.2rem;align-items:baseline}
.rows h3{font-size:2rem;font-style:italic;flex:0 0 14rem}.rows p{color:var(--muted);flex:1}.rows a{white-space:nowrap}
@media(max-width:700px){.rows li{flex-wrap:wrap}.rows h3{flex-basis:100%}}
.band{background:var(--plum);color:var(--cream);text-align:center;border-radius:2rem;padding:clamp(3rem,7vw,5rem) 1.5rem;margin:0 clamp(1rem,4vw,3rem)}
.band h2{font-size:clamp(2.6rem,6vw,4.8rem);font-style:italic;margin-bottom:1.5rem}.band .btn{background:var(--blush);color:var(--plum);border-color:var(--blush)}
.portrait{aspect-ratio:3/4;border-radius:999px 999px 1rem 1rem}

/* ===== polish: background, details, footer ===== */
:root{--champ:#C9A27A;--rose2:#E7B6C2}
::selection{background:var(--rose);color:#fff}
body{background:
 radial-gradient(48rem 34rem at 92% 0,rgba(244,213,220,.95),transparent 65%),
 radial-gradient(40rem 34rem at -8% 38%,rgba(231,182,194,.38),transparent 65%),
 radial-gradient(44rem 34rem at 104% 72%,rgba(244,213,220,.75),transparent 65%),
 var(--cream);background-repeat:no-repeat}
body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.55;mix-blend-mode:multiply;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.09'/%3E%3C/svg%3E")}
.hero{background:none}
.hero::after{content:'';position:absolute;right:-10rem;top:12%;width:34rem;height:34rem;border-radius:50%;border:1px solid rgba(71,24,47,.12);pointer-events:none}
.hero{position:relative;overflow:hidden}
.head h2::after{content:'✦';color:var(--champ);font-size:.35em;margin-left:.45em;vertical-align:super}
.pagehead{position:relative}
.pagehead::after{content:'';position:absolute;right:clamp(1rem,6vw,6rem);top:5.5rem;width:9rem;height:12rem;border:1px solid rgba(71,24,47,.2);border-bottom:0;border-radius:999px 999px 0 0;pointer-events:none}
@media(max-width:700px){.pagehead::after{display:none}}
.spark{position:absolute;font-style:normal;color:var(--champ);animation:tw 3.5s ease-in-out infinite;pointer-events:none}
.s1{top:-1.2rem;right:-1.6rem;font-size:2.2rem}.s2{top:36%;left:-2.4rem;font-size:1.3rem;animation-delay:1s}.s3{bottom:18%;right:-2.2rem;font-size:1.6rem;animation-delay:2s}
@keyframes tw{0%,100%{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}
.menuwrap{position:relative;margin-top:2rem;background:radial-gradient(rgba(71,24,47,.09) 1px,transparent 1.3px) 0 0/20px 20px,var(--blush)}
.know{position:relative;margin-top:2rem;background:radial-gradient(rgba(71,24,47,.07) 1px,transparent 1.3px) 0 0/20px 20px,var(--cream2)}
.menuwrap::before,.know::before{content:'';position:absolute;left:0;right:0;top:-1.1rem;height:1.2rem;background:radial-gradient(circle at 1.1rem 1.2rem,var(--sc) 1.05rem,transparent 1.1rem) 0 0/2.2rem 1.2rem repeat-x}
.menuwrap{--sc:var(--blush)}.know{--sc:var(--cream2)}
.menu{border:1px solid rgba(201,162,122,.45);box-shadow:0 30px 60px rgba(71,24,47,.12),inset 0 0 0 .5rem var(--cream),inset 0 0 0 calc(.5rem + 1px) rgba(201,162,122,.4)}
.cat h3::before{content:'✦ ';color:var(--champ);font-size:.55em;vertical-align:middle}
.rows li{transition:background .3s,padding-left .3s;border-radius:.8rem}.rows li:hover{background:rgba(244,213,220,.55);padding-left:1rem}
.btn{box-shadow:0 8px 20px rgba(71,24,47,.18);transition:background .25s,color .25s,transform .25s,box-shadow .25s}.btn:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(71,24,47,.22)}
.chips button{transition:background .2s,color .2s}.chips button:hover{background:var(--blush)}
.slot{background:repeating-linear-gradient(135deg,rgba(255,255,255,.35) 0 10px,transparent 10px 20px),var(--blush)}
.panel{border:1px solid rgba(201,162,122,.5);background:linear-gradient(160deg,var(--blush),#f8e3e7)}
.band{background:radial-gradient(30rem 20rem at 85% 10%,rgba(231,182,194,.25),transparent 60%),var(--plum)}
/* ribbon */
.ribbon{overflow:hidden;background:var(--blush);border-block:1px solid rgba(71,24,47,.2);padding:.9rem 0;margin-top:4rem}
.ribbon div{display:flex;width:max-content;animation:slide 38s linear infinite}
.ribbon span{font:italic 1.7rem var(--serif);color:var(--plum);white-space:nowrap;padding-right:1rem}
.ribbon i{font-style:normal;color:var(--champ);margin:0 .7rem}
@keyframes slide{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.ribbon div,.spark{animation:none}}
/* footer */
.foot{position:relative;background:radial-gradient(40rem 24rem at 100% 0,rgba(144,58,96,.45),transparent 60%),radial-gradient(30rem 20rem at 0 100%,rgba(231,182,194,.12),transparent 60%),var(--plum);color:var(--cream);border-radius:0;padding:clamp(4rem,8vw,6rem) clamp(1.25rem,4vw,3rem) calc(1.5rem + env(safe-area-inset-bottom,0px));overflow:hidden}
.foot::before{content:'';position:absolute;left:0;right:0;top:0;height:1.3rem;background:radial-gradient(circle at 1.3rem 0,var(--blush) 1.25rem,transparent 1.3rem) 0 0/2.6rem 1.3rem repeat-x}
.foot>*{position:relative;max-width:1180px;margin-inline:auto}
.foot-cta{display:flex;justify-content:space-between;align-items:center;gap:2rem;flex-wrap:wrap;padding-bottom:3rem;border-bottom:1px solid rgba(251,243,232,.2)}
.foot-cta h2{font-size:clamp(2.8rem,6vw,5rem);color:var(--cream)}.foot-cta h2 em{color:var(--rose2)}
.foot-cta .btn{background:var(--blush);color:var(--plum);border-color:var(--blush)}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:2.5rem;padding:3rem 0}
.foot .mark{font:italic 2.6rem/1 var(--serif);color:var(--blush);margin-bottom:.8rem}
.foot p{opacity:.8;max-width:28ch}
.foot h4{font:600 .8rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--champ);margin-bottom:.9rem}
.foot-grid a{display:block;color:var(--cream);text-decoration:none;padding:.15rem 0;opacity:.9;background:linear-gradient(var(--rose2),var(--rose2)) 0 100%/0 1px no-repeat;transition:background-size .3s;width:fit-content}
.foot-grid a:hover{background-size:100% 1px}
.pills{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1.2rem}
.foot-grid .pills a{border:1px solid rgba(251,243,232,.4);border-radius:999px;padding:.45rem 1rem;font-size:.9rem;background:none;transition:background .25s,color .25s}
.foot-grid .pills a:hover{background:var(--blush);color:var(--plum)}
.foot-word{font:italic clamp(5rem,21vw,19rem)/.78 var(--serif);color:transparent;-webkit-text-stroke:1px rgba(244,213,220,.3);white-space:nowrap;text-align:center;user-select:none;margin-top:1rem;margin-bottom:-.12em;max-width:none}
.foot .fine{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.85rem;opacity:.8;padding-top:1.4rem;margin-top:0;border-top:1px solid rgba(251,243,232,.2)}
.foot .fine a{color:var(--cream)}
@media(max-width:850px){.foot-grid{grid-template-columns:1fr 1fr}}@media(max-width:520px){.foot-grid{grid-template-columns:1fr}}