:root { --ink:#412a32; --wine:#744a58; --pink:#9b5369; --blush:#ead4da; --cream:#faf6f3; --paper:#f3e8e9; --line:rgba(65,42,50,.28); --focus-ring:#8f4d64; --nav-height:88px; --marquee-space:50px; --landing-viewport-height:100svh; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:16px; -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body { margin:0; color:var(--ink); background:var(--cream); font-family:"Manrope",sans-serif; overflow-x:hidden; zoom:var(--desktop-scale,1); }
a { color:inherit; text-decoration:none; }
.shell { width:min(1180px,calc(100% - 48px)); margin-inline:auto; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.skip-link { position:fixed; z-index:1000; top:10px; left:10px; padding:12px 16px; color:#fff; background:var(--ink); border:2px solid currentColor; border-radius:6px; font-size:14px; font-weight:600; transform:translateY(-160%); transition:transform .18s ease; }.skip-link:focus { outline:3px solid var(--focus-ring); outline-offset:3px; transform:translateY(0); }
:where(a,button,summary):focus-visible { outline:3px solid var(--focus-ring); outline-offset:3px; }
.noise { position:fixed; inset:0; z-index:10; pointer-events:none; opacity:.035; background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E"); }
.nav { height:var(--nav-height); display:flex; align-items:center; justify-content:space-between; position:relative; z-index:5; border-bottom:1px solid var(--line); }
.wordmark { font:28px/1 "Italiana",serif; letter-spacing:-1px; }.wordmark span { color:var(--pink); font-size:13px; margin-left:6px; vertical-align:top; }
.nav nav { display:flex; align-items:center; gap:32px; font-size:12px; text-transform:uppercase; letter-spacing:.12em; }.nav nav a { display:inline-flex; min-height:44px; align-items:center; transition:text-decoration-color .2s; }.nav nav a:hover { text-decoration:underline; text-underline-offset:4px; }
.nav-cta { border:1px solid var(--ink); padding:12px 18px; border-radius:100px; }
.hero { min-height:calc(100vh - var(--nav-height) - var(--marquee-space)); min-height:calc(var(--landing-viewport-height) - var(--nav-height) - var(--marquee-space)); display:grid; grid-template-columns:.92fr 1.08fr; align-items:center; gap:clamp(32px,5vw,80px); padding-block:clamp(30px,5svh,70px) clamp(34px,6svh,90px); }
.eyebrow { font-size:10px; text-transform:uppercase; letter-spacing:.25em; font-weight:600; color:var(--wine); }
h1,h2 { font-family:"Italiana",serif; font-weight:400; margin:0; letter-spacing:-.045em; line-height:.91; } h1 { font-size:clamp(64px,min(7.3vw,11svh),110px); max-width:650px; } h1 em,h2 em { color:var(--pink); font-weight:400; }
.lede { font-family:"Italiana",serif; font-size:21px; line-height:1.5; max-width:480px; color:var(--wine); margin:clamp(18px,3svh,30px) 0; }
.hero-actions { display:flex; align-items:center; gap:26px; }.button { display:inline-flex; min-height:44px; align-items:center; justify-content:space-between; gap:36px; border:0; padding:17px 22px; border-radius:4px; font:600 11px/1 "Manrope",sans-serif; text-transform:uppercase; letter-spacing:.12em; cursor:pointer; }.primary { background:var(--ink); color:#fff8f6; box-shadow:0 10px 25px rgba(71,40,50,.18); transition:.25s; }.primary:hover { transform:translateY(-2px); background:var(--wine); }.text-link { display:inline-flex; min-height:44px; align-items:center; font-size:11px; text-transform:uppercase; letter-spacing:.1em; border-bottom:1px solid var(--ink); padding-block:6px; }
.availability { margin-top:40px; font-size:11px; letter-spacing:.08em; display:flex; align-items:center; gap:9px; }.availability i { width:7px; height:7px; border-radius:50%; background:var(--pink); box-shadow:0 0 0 5px rgba(200,143,159,.14); }
.hero-copy,.hero-art { will-change:transform; }.hero-art { position:relative; width:min(100%,560px,calc(100svh - var(--nav-height) - var(--marquee-space) - 116px)); aspect-ratio:1; display:grid; place-items:center; margin-inline:auto; }.image-frame { width:78%; aspect-ratio:1; border-radius:50% 50% 48% 52%; overflow:hidden; box-shadow:0 30px 80px rgba(95,57,69,.2); transform:rotate(2deg); position:relative; }.image-frame:after { content:""; position:absolute; inset:0; box-shadow:inset 0 0 45px rgba(90,50,62,.18); }.image-frame img { width:100%; height:100%; object-fit:cover; transform:scale(1.01); }.hero-set-card { appearance:none; position:absolute; z-index:2; right:-2%; bottom:1%; width:clamp(82px,28%,145px); aspect-ratio:4/5; margin:0; padding:0; color:var(--pink); background:transparent; border:0; cursor:zoom-in; touch-action:pan-y; transform:rotate(-5deg); }.hero-set-card:before { content:""; position:absolute; inset:5px; z-index:0; background:var(--blush); border:1px solid rgba(255,255,255,.9); border-radius:13px; box-shadow:0 16px 38px rgba(65,42,50,.22); transform:translate(11px,-8px) rotate(9deg); }.hero-set-slide { position:absolute; inset:5px; display:block; width:calc(100% - 10px); height:calc(100% - 10px); object-fit:cover; opacity:0; background:var(--paper); border:1px solid rgba(255,255,255,.94); border-radius:9px; box-shadow:0 12px 30px rgba(65,42,50,.19); transform:translate(13px,-9px) rotate(10deg) scale(.96); transition:opacity .5s ease,transform .65s cubic-bezier(.16,1,.3,1); user-select:none; -webkit-user-drag:none; }.hero-set-slide.is-active { z-index:3; opacity:1; transform:none; }.hero-set-slide.is-next { z-index:2; opacity:.95; transform:translate(7px,-5px) rotate(6deg) scale(.985); }.hero-set-slide.is-back { z-index:1; opacity:.72; transform:translate(11px,-8px) rotate(9deg) scale(.97); }.hero-set-badge { position:absolute; z-index:5; right:-8px; top:-10px; display:grid; width:24px; height:24px; place-items:center; color:var(--pink); background:var(--cream); border:1px solid var(--line); border-radius:50%; font-size:10px; box-shadow:0 5px 15px rgba(65,42,50,.14); transition:transform .25s,background .25s; }.hero-set-card:hover .hero-set-badge,.hero-set-card:focus-visible .hero-set-badge { background:var(--paper); transform:translate(2px,-2px); }.hero-set-card:focus-visible { outline:2px solid var(--pink); outline-offset:8px; border-radius:13px; }
.hero-carousel-toggle { position:absolute; z-index:5; right:-1%; bottom:calc(2% + clamp(82px,28%,145px) + 14px); display:grid; width:44px; height:44px; place-items:center; padding:0; color:var(--ink); background:rgba(250,246,243,.94); border:1px solid var(--line); border-radius:50%; font:600 13px/1 "Manrope",sans-serif; cursor:pointer; box-shadow:0 8px 22px rgba(65,42,50,.16); }.hero-carousel-toggle:hover { background:var(--paper); }.hero-carousel-toggle[hidden] { display:none; }
.orbit { position:absolute; border:1px solid rgba(116,67,82,.35); border-radius:50%; }.orbit-one { width:93%; height:61%; transform:rotate(-18deg); }.orbit-two { width:62%; height:96%; transform:rotate(35deg); }.sparkle { position:absolute; color:var(--pink); text-shadow:0 0 12px #fff; }.s1 { font-size:46px; top:6%; right:13%; }.s2 { font-size:26px; bottom:14%; left:5%; }.s3 { font-size:20px; top:15%; left:8%; }
.marquee { min-height:38px; background:var(--ink); color:#f7e9ed; padding:13px 0; overflow:hidden; white-space:nowrap; font:clamp(9px,2vw,12px)/1 "Manrope",sans-serif; letter-spacing:clamp(.12em,.7vw,.25em); }.marquee div { width:100%; padding-inline:12px; text-align:center; }
.services { display:grid; grid-template-columns:.8fr 1.2fr; gap:10vw; padding-block:160px; }.section-intro { position:sticky; top:100px; align-self:start; }.section-intro h2,.booking h2,.studio h2 { font-size:clamp(52px,6vw,84px); }.section-intro>p:not(.eyebrow),.booking-copy>p,.studio-card>p { color:var(--wine); line-height:1.7; max-width:440px; font-size:14px; margin-top:26px; }.services-feature { position:relative; width:min(100%,390px); aspect-ratio:4/3; margin:34px 0 0; overflow:hidden; background:var(--paper); border:1px solid rgba(255,255,255,.9); border-radius:18px; box-shadow:0 20px 50px rgba(85,51,61,.13); }.services-feature img { display:block; width:100%; height:100%; object-fit:cover; }.services-feature figcaption { position:absolute; left:12px; bottom:12px; display:flex; align-items:center; gap:8px; padding:8px 11px; color:var(--ink); background:rgba(250,246,243,.9); border:1px solid rgba(255,255,255,.8); border-radius:100px; font-size:7px; font-weight:600; text-transform:uppercase; letter-spacing:.13em; backdrop-filter:blur(5px); }.services-feature figcaption span { color:var(--pink); font-size:8px; }
.service-trigger { appearance:none; width:100%; display:grid; grid-template-columns:38px minmax(0,1fr) clamp(64px,6vw,76px); gap:20px; align-items:center; padding:18px 4px; color:inherit; background:transparent; border:0; border-bottom:1px solid var(--line); text-align:left; font:inherit; cursor:pointer; touch-action:manipulation; transition:padding .25s,background .25s; }.service-trigger:first-child { border-top:1px solid var(--line); }.service-trigger:hover,.service-trigger:focus-visible { padding-inline:14px; background:rgba(234,212,218,.45); outline:0; }.service-trigger:focus-visible { box-shadow:inset 0 0 0 2px var(--pink); }.service-number { font:12px "Italiana",serif; color:var(--pink); }.service-copy { display:flex; min-width:0; flex-direction:column; gap:6px; }.service-name { font:30px "Italiana",serif; line-height:1.05; }.service-summary { color:var(--wine); font-size:12px; line-height:1.45; }.service-preview { position:relative; justify-self:end; width:100%; aspect-ratio:4/5; color:var(--pink); }.service-preview img { display:block; width:100%; height:100%; object-fit:cover; border:3px solid rgba(255,255,255,.9); border-radius:12px; box-shadow:0 10px 25px rgba(85,51,61,.13); transition:transform .3s,box-shadow .3s; }.service-preview i { position:absolute; right:-7px; bottom:7px; display:grid; width:30px; height:30px; place-items:center; color:var(--pink); background:var(--cream); border:1px solid var(--line); border-radius:50%; font-size:13px; font-style:normal; box-shadow:0 5px 14px rgba(65,42,50,.13); transition:transform .35s,background .25s; }.service-trigger:hover .service-preview img,.service-trigger:focus-visible .service-preview img { box-shadow:0 14px 32px rgba(85,51,61,.2); transform:scale(1.025) rotate(1deg); }.service-trigger:hover .service-preview i,.service-trigger:focus-visible .service-preview i { background:var(--paper); transform:translate(2px,-2px); }
.service-list-reserve,.price-list-reserve { width:fit-content; margin-top:24px; }
.gallery-dialog { width:min(980px,calc(100% - 32px)); max-height:min(92svh,980px); margin:auto; padding:0; color:var(--ink); background:var(--cream); border:1px solid rgba(255,255,255,.9); border-radius:28px; box-shadow:0 35px 120px rgba(50,27,35,.28); overflow:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }.gallery-dialog::backdrop { background:rgba(48,29,36,.62); backdrop-filter:blur(7px); }.gallery-dialog[open] { animation:gallery-in .3s cubic-bezier(.16,1,.3,1); }.gallery-panel { position:relative; padding:clamp(28px,4vw,54px); }.gallery-close { position:sticky; z-index:2; top:14px; float:right; display:flex; align-items:center; gap:9px; min-height:42px; padding:5px 6px 5px 13px; color:var(--ink); background:rgba(250,246,243,.94); border:1px solid var(--line); border-radius:100px; font:inherit; cursor:pointer; touch-action:manipulation; box-shadow:0 6px 20px rgba(65,42,50,.08); }.gallery-close>span { font-size:8px; font-weight:600; text-transform:uppercase; letter-spacing:.13em; }.gallery-close i { display:grid; width:30px; height:30px; place-items:center; font:25px/1 "Manrope",sans-serif; font-style:normal; }.gallery-close:hover,.gallery-close:focus-visible { background:var(--blush); outline:2px solid var(--pink); outline-offset:2px; }.gallery-header { width:min(620px,calc(100% - 120px)); padding:5px 0 28px; }.gallery-header h2 { margin:0; font:clamp(44px,6vw,76px)/.95 "Italiana",serif; letter-spacing:-.04em; }.gallery-header>p:not(.eyebrow) { max-width:520px; margin:16px 0 0; color:var(--wine); font-size:13px; line-height:1.6; }.gallery-header .gallery-guidance { margin-top:7px; color:#9a7a84; font-size:11px; font-weight:400; text-transform:none; letter-spacing:0; }.gallery-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:clamp(8px,1.5vw,18px); }.gallery-shot { min-width:0; padding:0; color:var(--ink); background:var(--paper); border:1px solid var(--line); border-radius:16px; overflow:hidden; text-align:left; font:inherit; cursor:zoom-in; touch-action:manipulation; box-shadow:0 14px 35px rgba(85,51,61,.08); transition:transform .25s,box-shadow .25s; }.gallery-shot:hover,.gallery-shot:focus-visible { transform:translateY(-4px); box-shadow:0 20px 42px rgba(85,51,61,.16); outline:2px solid var(--pink); outline-offset:3px; }.gallery-crop,.lightbox-photo { display:block; position:relative; aspect-ratio:3/5; overflow:hidden; background:var(--blush); }.gallery-crop img,.lightbox-photo img { display:block; width:300%; max-width:none; height:100%; object-fit:fill; transition:transform .35s; }.gallery-shot[data-panel="1"] img,.lightbox-photo[data-panel="1"] img { transform:translateX(-33.3333%); }.gallery-shot[data-panel="2"] img,.lightbox-photo[data-panel="2"] img { transform:translateX(-66.6667%); }.gallery-shot.is-standalone .gallery-crop img,.lightbox-photo.is-standalone img { width:100%; max-width:100%; height:100%; object-fit:cover; transform:none; }.gallery-shot-label { display:flex; min-height:54px; align-items:center; justify-content:space-between; gap:8px; padding:11px 13px; }.gallery-shot-label span { font:16px/1.1 "Italiana",serif; }.gallery-shot-label i { display:grid; width:28px; height:28px; flex:0 0 auto; place-items:center; border-radius:50%; color:var(--pink); background:var(--cream); font-size:13px; font-style:normal; }.gallery-note { margin:20px 0 0; color:#9a7a84; text-align:center; font-size:8px; text-transform:uppercase; letter-spacing:.12em; }.gallery-error { grid-column:1/-1; margin:0; padding:48px 20px; color:var(--wine); background:var(--paper); border-radius:16px; text-align:center; font-size:13px; }.image-dialog { inset:0; width:100%; max-width:none; height:100%; max-height:none; margin:0; padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left)); color:#fff8f6; background:rgba(40,22,28,.96); border:0; overflow:hidden; overscroll-behavior:contain; }.image-dialog::backdrop { background:rgba(40,22,28,.72); }.image-dialog[open] { display:grid; place-items:center; animation:gallery-in .25s ease-out; }.image-dialog figure { display:grid; min-height:0; margin:0; place-items:center; gap:12px; }.lightbox-photo { width:min(90vw,43svh,540px); aspect-ratio:3/5; border:1px solid rgba(255,255,255,.45); border-radius:18px; box-shadow:0 25px 80px rgba(0,0,0,.34); }.image-dialog figcaption { display:grid; width:min(90vw,620px); gap:5px; text-align:center; }.lightbox-title { font:20px/1.15 "Italiana",serif; }.lightbox-description { color:#decbd1; font:11px/1.5 "Manrope",sans-serif; text-wrap:balance; }.lightbox-close { position:fixed; z-index:3; top:max(18px,env(safe-area-inset-top)); right:max(18px,env(safe-area-inset-right)); display:grid; width:58px; height:58px; place-items:center; padding:0; color:var(--ink); background:#fff8f6; border:2px solid rgba(255,255,255,.8); border-radius:50%; font:42px/1 "Manrope",sans-serif; cursor:pointer; touch-action:manipulation; box-shadow:0 12px 35px rgba(0,0,0,.28); }.lightbox-close span { transform:translateY(-2px); }.lightbox-close:hover,.lightbox-close:focus-visible { background:var(--blush); outline:3px solid #fff; outline-offset:3px; }.dialog-open { overflow:hidden; }.dialog-open .noise { display:none; } @keyframes gallery-in { from { opacity:0; transform:translateY(12px) scale(.985); } }
.gallery-reserve { width:fit-content; margin-top:15px; padding:13px 17px; gap:24px; font-size:9px; }
.lightbox-photo { touch-action:pan-y pinch-zoom; cursor:grab; user-select:none; }
.lightbox-photo:active { cursor:grabbing; }
.lightbox-position { min-height:13px; color:#bda4ad; font:600 8px/1 "Manrope",sans-serif; text-transform:uppercase; letter-spacing:.15em; }
.lightbox-rotation { justify-self:center; display:inline-flex; min-height:38px; align-items:center; gap:8px; padding:7px 12px; color:#fff8f6; background:transparent; border:1px solid rgba(255,255,255,.5); border-radius:100px; font:600 10px/1 "Manrope",sans-serif; cursor:pointer; }.lightbox-rotation:hover { background:rgba(255,255,255,.1); }.lightbox-rotation[hidden] { display:none; }
.lightbox-reserve { justify-self:center; margin-top:7px; padding:13px 18px; color:var(--ink); background:#fff8f6; gap:25px; box-shadow:0 10px 30px rgba(0,0,0,.22); }
.lightbox-reserve:hover,.lightbox-reserve:focus-visible { color:var(--wine); background:var(--blush); outline:2px solid #fff; outline-offset:3px; }
.lightbox-nav { position:fixed; z-index:3; top:50%; display:grid; width:54px; height:54px; place-items:center; padding:0; color:var(--ink); background:rgba(255,248,246,.92); border:1px solid rgba(255,255,255,.8); border-radius:50%; cursor:pointer; touch-action:manipulation; box-shadow:0 12px 35px rgba(0,0,0,.22); transform:translateY(-50%); }
.lightbox-nav span { font:38px/1 "Italiana",serif; transform:translateY(-2px); }
.lightbox-nav:hover,.lightbox-nav:focus-visible { background:var(--blush); outline:3px solid #fff; outline-offset:3px; }
.lightbox-nav[hidden] { display:none; }
.lightbox-prev { left:max(18px,env(safe-area-inset-left)); }
.lightbox-next { right:max(18px,env(safe-area-inset-right)); }
.price-menu { display:grid; grid-template-columns:.72fr 1.28fr; gap:10vw; align-items:start; padding:20px 0 150px; }.price-heading h2 { font-size:clamp(52px,6vw,84px); }.price-heading>p:not(.eyebrow) { color:var(--wine); line-height:1.7; max-width:390px; font-size:14px; margin-top:26px; }.price-card { position:relative; padding:42px 46px 30px; background:linear-gradient(145deg,var(--paper),#f6edef 55%,var(--blush)); border:1px solid rgba(255,255,255,.9); border-radius:24px; box-shadow:0 25px 70px rgba(86,62,77,.1),inset 0 0 50px rgba(255,255,255,.45); }.price-card:before { content:"✦"; position:absolute; right:24px; top:18px; color:var(--pink); font-size:20px; }.price-group+.price-group { margin-top:28px; }.price-group h3 { display:flex; align-items:center; justify-content:center; gap:12px; margin:0 0 14px; padding:8px 16px; border-radius:100px; background:rgba(255,250,248,.58); font:22px "Italiana",serif; text-transform:uppercase; letter-spacing:.03em; }.price-group h3 span { color:var(--pink); font-size:10px; }.price-group>div { display:flex; align-items:baseline; gap:10px; padding:6px 5px; font:15px "Manrope",sans-serif; }.price-group>div i { flex:1; border-bottom:1px dotted rgba(63,38,48,.28); }.price-group strong { font:21px "Italiana",serif; white-space:nowrap; }.price-tagline { text-align:center; margin:32px 0 0; padding-top:20px; border-top:1px solid var(--line); color:var(--wine); font:18px "Italiana",serif; }
.booking-wrap { background:var(--paper); border-block:1px solid var(--line); }.booking { padding-block:130px; display:grid; grid-template-columns:.75fr 1.25fr; gap:10vw; }
.booking-card { min-width:0; padding:40px; background:rgba(255,255,255,.5); border:1px solid rgba(255,255,255,.85); border-radius:24px; box-shadow:0 30px 80px rgba(85,51,61,.1); }
.booking-flow { min-width:0; }.booking-flow-head { display:flex; min-height:44px; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px; }.booking-breadcrumb { display:flex; min-width:0; align-items:center; gap:8px; color:var(--wine); font-size:11px; font-weight:600; letter-spacing:.05em; }.booking-breadcrumb button,.booking-reset,.booking-back { color:inherit; background:transparent; border:0; font:inherit; cursor:pointer; }.booking-breadcrumb button { min-height:32px; padding:4px; border-bottom:1px solid currentColor; }.booking-breadcrumb i { color:var(--pink); font-style:normal; }.booking-reset { flex:0 0 auto; min-height:44px; padding-inline:12px; color:var(--wine); border:1px solid var(--line); border-radius:100px; font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.08em; }.booking-reset:hover,.booking-reset:focus-visible,.booking-back:hover,.booking-back:focus-visible,.booking-breadcrumb button:hover,.booking-breadcrumb button:focus-visible { color:var(--ink); }.booking-reset:focus-visible,.booking-back:focus-visible,.booking-breadcrumb button:focus-visible { box-shadow:0 0 0 3px rgba(155,83,105,.25); }
.booking-stage { min-height:342px; padding:29px; background:linear-gradient(145deg,rgba(250,246,243,.9),rgba(243,232,233,.72)); border:1px solid rgba(65,42,50,.1); border-radius:19px; }.booking-stage.is-entering { animation:booking-stage-in .28s cubic-bezier(.16,1,.3,1); }.booking-stage-heading { margin-bottom:22px; }.booking-stage-heading p { margin:0 0 7px; color:var(--wine); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.12em; }.booking-stage-heading h3 { margin:0; color:var(--ink); font:34px/1.05 "Italiana",serif; letter-spacing:-.025em; }.booking-stage-heading h3:focus { outline:2px solid var(--focus-ring); outline-offset:6px; border-radius:4px; }
.booking-choice-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:11px; }.booking-choice-grid[data-field="family"]>:last-child:nth-child(odd) { grid-column:1/-1; }.booking-choice { appearance:none; display:flex; min-width:0; min-height:76px; align-items:center; justify-content:space-between; gap:14px; padding:15px 17px; color:var(--ink); background:rgba(255,255,255,.68); border:1px solid rgba(65,42,50,.13); border-radius:14px; box-shadow:0 9px 24px rgba(85,51,61,.055); text-align:left; font:inherit; cursor:pointer; touch-action:manipulation; transition:transform .2s,background .2s,border-color .2s,box-shadow .2s; }.booking-choice:hover { background:var(--cream); border-color:rgba(200,143,159,.65); box-shadow:0 13px 30px rgba(85,51,61,.12); transform:translateY(-2px); }.booking-choice:focus-visible { border-color:var(--pink); outline:3px solid rgba(200,143,159,.28); outline-offset:2px; }.booking-choice>i { flex:0 0 auto; color:var(--pink); font:25px/1 "Italiana",serif; font-style:normal; }.booking-choice-copy { display:flex; min-width:0; flex-direction:column; gap:4px; }.booking-choice-copy strong { font-size:13px; font-weight:600; line-height:1.3; }.booking-choice.is-final { grid-column:1/-1; }.booking-choice-meta { display:flex; flex:0 0 auto; align-items:center; gap:13px; color:var(--wine); }.booking-choice-meta>span { font:17px/1 "Italiana",serif; white-space:nowrap; }.booking-choice-meta i { color:var(--pink); font-size:13px; font-style:normal; }.booking-choice.is-placeholder { cursor:not-allowed; opacity:.66; box-shadow:none; }.booking-choice.is-placeholder:hover { background:rgba(255,255,255,.68); border-color:rgba(65,42,50,.13); box-shadow:none; transform:none; }
.booking-flow-actions { min-height:44px; margin-top:17px; }.booking-back { display:inline-flex; min-height:44px; align-items:center; gap:7px; padding:5px 6px; color:var(--wine); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.1em; }.booking-back span { color:var(--pink); font:20px/1 "Italiana",serif; }.booking-noscript { margin:14px 0 0; padding:14px; color:var(--wine); background:var(--blush); border-radius:12px; font-size:12px; line-height:1.5; }.booking-noscript a { border-bottom:1px solid currentColor; }.fine-print { margin-top:14px; text-align:center; color:var(--wine); font-size:11px; text-transform:uppercase; letter-spacing:.1em; }.fine-print a { border-bottom:1px solid currentColor; }.booking-assist { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:7px 10px; margin-top:15px; color:var(--wine); font-size:12px; line-height:1.45; text-align:center; }.booking-assist a { border-bottom:1px solid currentColor; font-weight:600; }.studio-mark { display:block; width:min(170px,48%); height:auto; object-fit:contain; }.contact-grid .studio-mark { width:min(100%,175px); margin-top:1px; }
@keyframes booking-stage-in { from { opacity:.2; transform:translateX(8px); } }
.studio { padding-block:120px; }.studio-card { position:relative; overflow:hidden; color:#f9edef; background:var(--wine); min-height:530px; padding:80px; display:flex; flex-direction:column; justify-content:center; }.studio-card .eyebrow,.studio-card h2 em { color:#e9bdc8; }.studio-card>p { color:#ead7dc; }.giant-star { position:absolute; font-size:460px; right:-45px; top:-120px; line-height:1; color:rgba(255,255,255,.045); }.contact-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:25px; border-top:1px solid rgba(255,255,255,.2); margin-top:55px; padding-top:25px; }.contact-grid>* { display:flex; flex-direction:column; gap:8px; }.contact-grid small { text-transform:uppercase; letter-spacing:.15em; font-size:8px; color:#d7afb9; }.contact-grid strong { font:16px "Italiana",serif; font-weight:400; }
.studio-reserve { position:relative; z-index:1; width:fit-content; margin-top:28px; color:var(--wine); background:#f9edef; box-shadow:0 12px 30px rgba(31,15,21,.18); }
.studio-reserve:hover,.studio-reserve:focus-visible { color:var(--ink); background:#fff8f6; outline:2px solid #e9bdc8; outline-offset:3px; }
footer { display:grid; grid-template-columns:1fr auto 1fr; padding-block:30px 50px; font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--wine); }footer p { margin:0; }footer a { display:inline-flex; min-height:44px; align-items:center; justify-self:end; text-align:right; }
.reveal { opacity:1; transform:none; }
@media (min-width:1081px) {
  .services>.service-list { align-self:center; }
}
@media (min-width:1281px) {
  .hero { gap:min(5vw,80px); }
  .services,.price-menu,.booking { gap:min(10vw,140px); }
}
@media (max-width:1080px) {
  :root { --nav-height:72px; }
  .shell { width:min(94%,1040px); }
  .nav nav a:not(.nav-cta) { display:none; }
  .hero { grid-template-columns:1fr; gap:clamp(10px,3svh,32px); padding-block:clamp(16px,4svh,40px); align-content:center; }
  .hero-copy { z-index:2; width:min(100%,660px); margin-inline:auto; }
  .hero h1 { max-width:620px; font-size:clamp(48px,min(7.5vw,8svh),60px); text-wrap:balance; }
  .hero .lede { max-width:520px; margin-block:clamp(14px,2.6svh,26px); font-size:16px; }
  .hero-art { order:-1; width:min(44%,35svh); min-width:min(220px,35svh); max-width:330px; margin:0 auto; }
  .services,.booking,.price-menu { grid-template-columns:1fr; gap:56px; padding-block:80px; }
  .section-intro h2,.booking h2,.studio h2,.price-heading h2 { font-size:64px; }
  .price-menu { padding-top:0; }
  .section-intro { position:static; }
  .services-feature { width:min(100%,520px); }
  .studio-card { padding:48px; }
  .contact-grid { grid-template-columns:1fr 1fr; }
  .booking-card { padding:32px; }
  .hero-actions { align-items:flex-start; flex-direction:column; gap:18px; }
  footer { grid-template-columns:1fr auto; gap:12px; }
  footer p:nth-child(2) { display:none; }
}
@media (min-width:1081px) and (max-width:1280px) {
  .shell { width:calc(100% - 64px); }
  .hero { grid-template-columns:.92fr 1.08fr; gap:40px; padding-block:clamp(30px,5svh,48px); }
  .hero-copy { width:100%; }
  .hero h1 { max-width:560px; font-size:72px; }
  .hero .lede { max-width:480px; font-size:18px; margin-block:22px; }
  .hero-art { width:100%; max-width:500px; margin-inline:auto; }
}
@media (min-width:701px) and (max-height:700px) {
  .gallery-dialog { width:min(900px,calc(100% - 32px)); }
  .gallery-panel { padding:24px 36px 18px; }
  .gallery-close { top:7px; }
  .gallery-header { padding-bottom:14px; }
  .gallery-header h2 { font-size:48px; }
  .gallery-header>p:not(.eyebrow) { margin-top:8px; font-size:11px; line-height:1.4; }
  .gallery-header .gallery-guidance { margin-top:7px; font-size:7px; }
  .gallery-grid { width:min(680px,100%); margin-inline:auto; gap:10px; }
  .gallery-shot-label { min-height:42px; padding:7px 9px; }
  .gallery-shot-label span { font-size:13px; }
  .gallery-shot-label i { width:24px; height:24px; font-size:11px; }
  .gallery-note { margin-top:9px; font-size:7px; }
}
@media (max-width:700px) {
  .booking-card { padding:24px; }
  .booking-stage { min-height:350px; padding:24px; }
  .booking-stage-heading h3 { font-size:31px; }
  .booking-choice { min-height:72px; padding:13px 14px; }
  .booking-choice-copy strong { font-size:12px; }
  .booking-choice-meta>span { font-size:16px; }
  .gallery-dialog { width:calc(100% - 12px); max-height:calc(100svh - 12px); border-radius:20px; }
  .gallery-panel { padding:20px 14px 18px; }
  .gallery-close { top:6px; }
  .gallery-header { clear:both; width:100%; padding:4px 2px 20px; }
  .gallery-header h2 { font-size:clamp(38px,11vw,52px); }
  .gallery-header>p:not(.eyebrow) { margin-top:11px; font-size:11px; }
  .gallery-header .gallery-guidance { margin-top:8px; font-size:9px; }
  .gallery-grid { gap:7px; }
  .gallery-shot { border-radius:11px; }
  .gallery-shot-label { min-height:48px; padding:8px 7px; }
  .gallery-shot-label span { font-size:clamp(11px,3vw,14px); }
  .gallery-shot-label i { width:24px; height:24px; font-size:11px; }
  .gallery-note { margin-top:14px; font-size:7px; line-height:1.5; }
  .lightbox-photo { width:min(calc(100vw - 34px),43svh,540px); border-radius:14px; }
  .lightbox-close { top:calc(env(safe-area-inset-top) + 12px); right:calc(env(safe-area-inset-right) + 12px); width:54px; height:54px; font-size:39px; }
  .lightbox-nav { top:auto; bottom:calc(env(safe-area-inset-bottom) + 18px); width:46px; height:46px; transform:none; }
  .lightbox-prev { left:calc(env(safe-area-inset-left) + 14px); }
  .lightbox-next { right:calc(env(safe-area-inset-right) + 14px); }
}
@media (max-width:560px) {
  .booking-card { padding:18px; }
  .booking-flow-head { margin-bottom:12px; }
  .booking-stage { min-height:360px; padding:19px 16px; }
  .booking-choice-grid { gap:9px; }
  .booking-choice { min-height:70px; gap:8px; padding:12px; }
  .booking-choice-meta { gap:8px; }
  .hero-art { width:min(74vw,34svh,330px); min-width:0; }
}
@media (max-width:520px) {
  .gallery-dialog { inset:0; width:100%; max-width:none; height:100%; height:100dvh; max-height:none; margin:0; border:0; border-radius:0; }
  .gallery-panel { min-height:100%; padding:calc(env(safe-area-inset-top) + 16px) calc(env(safe-area-inset-right) + 14px) calc(env(safe-area-inset-bottom) + 18px) calc(env(safe-area-inset-left) + 14px); }
  .gallery-close { top:0; min-height:48px; }
  .gallery-header { padding-bottom:18px; }
  .gallery-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .gallery-shot:last-child:nth-child(odd) { grid-column:1/-1; width:calc(50% - 5px); justify-self:center; }
  .gallery-shot-label { min-height:52px; padding:9px; }
  .gallery-shot-label span { font-size:14px; }
  .gallery-note { padding-bottom:env(safe-area-inset-bottom); }
}
@media (max-width:920px) and (max-height:520px) and (orientation:landscape) {
  .gallery-dialog { inset:0; width:100%; max-width:none; height:100%; height:100dvh; max-height:none; margin:0; border:0; border-radius:0; }
  .gallery-panel { min-height:100%; padding:calc(env(safe-area-inset-top) + 10px) calc(env(safe-area-inset-right) + 20px) calc(env(safe-area-inset-bottom) + 10px) calc(env(safe-area-inset-left) + 20px); }
  .gallery-close { top:0; min-height:44px; }
  .gallery-header { clear:none; width:min(480px,calc(100% - 110px)); padding:0 0 8px; }
  .gallery-header .eyebrow { margin:0 0 5px; }
  .gallery-header h2 { font-size:36px; }
  .gallery-header>p:not(.eyebrow) { margin-top:4px; font-size:10px; line-height:1.3; }
  .gallery-header .gallery-guidance { margin-top:4px; font-size:6px; }
  .gallery-grid { width:min(680px,100%); grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
  .gallery-shot:last-child:nth-child(odd) { grid-column:auto; width:auto; justify-self:stretch; }
  .gallery-crop { aspect-ratio:1; }
  .gallery-crop img { object-fit:cover; }
  .gallery-shot-label { min-height:42px; padding:7px 8px; }
  .gallery-shot-label span { font-size:12px; }
  .gallery-note { margin-top:7px; padding-bottom:0; }
}
@media (max-width:430px) {
  :root { --nav-height:62px; --marquee-space:37px; }
  .shell { width:calc(100% - 24px); }
  .wordmark { font-size:24px; }
  .nav-cta { padding:9px 12px; font-size:9px; }
  .hero { gap:10px; padding:12px 0 18px; align-content:center; }
  .hero-art { order:-1; margin:0 auto; }
  .image-frame { width:74%; }
  .orbit-one { width:91%; }
  .orbit-two { width:60%; height:92%; }
  .s1 { font-size:24px; }
  .s2 { font-size:19px; }
  .hero-copy { text-align:center; }
  .hero-copy .eyebrow { margin:0 0 8px; font-size:8px; }
  .hero h1 { font-size:clamp(40px,11.5vw,48px); line-height:.92; max-width:350px; margin-inline:auto; }
  .lede { font-family:"Manrope",sans-serif; font-size:11px; line-height:1.5; margin:12px auto 14px; max-width:330px; }
  .hero-actions { display:grid; grid-template-columns:1fr auto; align-items:center; gap:10px; }
  .hero-actions .button { width:100%; padding:14px 16px; gap:18px; }
  .hero-actions .text-link { border:0; align-self:center; padding:6px 2px; font-size:8px; white-space:nowrap; }
  .availability { justify-content:center; margin-top:13px; font-size:8px; }
  .marquee { min-height:31px; padding:11px 0; font-size:9px; }
  .services,.booking,.price-menu { padding-block:72px; }
  .contact-grid { grid-template-columns:1fr; }
  .studio-card { min-height:auto; }
  .section-intro h2,.booking-copy h2,.studio h2,.price-heading h2 { font-size:50px; }
  .price-card { padding:30px 18px 24px; border-radius:18px; }
  .price-group h3 { font-size:18px; }
  .price-group>div { font-size:13px; gap:7px; }
  .price-group strong { font-size:18px; }
  .service-trigger { grid-template-columns:26px minmax(0,1fr) 62px; gap:10px; padding:16px 2px; }
  .service-trigger:hover,.service-trigger:focus-visible { padding-inline:7px; }
  .service-name { font-size:24px; }
  .service-summary { font-size:10px; }
  .service-list-reserve,.price-list-reserve { width:100%; justify-content:center; }
  .service-preview i { right:-5px; bottom:6px; width:28px; height:28px; font-size:12px; }
  .hero-set-card { right:-8%; bottom:-2%; width:82px; }
  .hero-set-card:before { inset:4px; border-radius:10px; }
  .hero-set-slide { inset:4px; width:calc(100% - 8px); height:calc(100% - 8px); border-radius:7px; }
  .hero-set-badge { right:-7px; top:-8px; width:21px; height:21px; font-size:8px; }
}
@media (min-width:900px) and (max-height:800px) and (min-aspect-ratio:3/2) {
  .shell { width:min(calc(100% - 48px),1180px); }
  .hero { grid-template-columns:.92fr 1.08fr; align-items:center; align-content:normal; gap:36px; padding-block:20px; }
  .hero-copy { order:0; width:100%; margin:0; }
  .hero h1 { font-size:58px; }
  .hero .lede { font-size:15px; margin-block:18px; }
  .hero-art { order:0; width:100%; min-width:0; max-width:410px; margin:0 auto; }
  .hero-actions { flex-direction:row; align-items:center; gap:18px; }
  .availability { margin-top:22px; }
}
.gallery-grid[data-count="1"] { grid-template-columns:minmax(0,240px); justify-content:center; }
.gallery-grid[data-count="6"] .gallery-shot:nth-last-child(2) { grid-column:2; }
.lightbox-photo.is-standalone { display:grid; width:fit-content; max-width:min(calc(100vw - 32px),960px); height:fit-content; max-height:calc(100svh - 178px); max-height:calc(100dvh - 178px); aspect-ratio:auto; place-items:center; background:rgba(26,15,19,.75); }
.lightbox-photo.is-standalone img { width:auto; max-width:100%; height:auto; max-height:calc(100svh - 178px); max-height:calc(100dvh - 178px); object-fit:contain; transform:none; }
@media (max-width:520px) { .gallery-grid[data-count="6"] .gallery-shot:nth-last-child(2) { grid-column:auto; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; }.marquee div,.gallery-dialog[open],.image-dialog[open],.booking-stage.is-entering { animation:none; }.reveal { opacity:1;transform:none;transition:none; }.hero-set-slide { transition:none; }.primary:hover,.booking-choice:hover,.gallery-shot:hover,.gallery-shot:focus-visible,.service-trigger:hover .service-preview img,.service-trigger:focus-visible .service-preview img { transform:none; } }

/* Accessibility: readable supporting text, usable targets, and resilient contrast. */
.gallery-header .gallery-guidance { color:var(--wine); font-size:12px; font-weight:500; }
.gallery-note { color:var(--wine); font-size:11px; letter-spacing:.1em; }
.lightbox-description { color:#f1dfe5; font-size:12px; }
.lightbox-position { min-height:14px; color:#ead6dd; font-size:10px; line-height:1.2; letter-spacing:.12em; }
.gallery-close>span { font-size:10px; }
.contact-grid small { color:#f0dce2; font-size:11px; letter-spacing:.12em; }
.studio-card .eyebrow { color:#f0dce2; }
.contact-grid a { min-height:44px; }

@media (max-width:430px) {
  .hero-copy .eyebrow { font-size:10px; }
  .lede { font-size:13px; }
  .hero-actions .text-link { min-height:44px; font-size:10px; }
  .availability { font-size:10px; }
  .service-summary { font-size:12px; }
  .theme-toggle { min-width:44px; min-height:44px; }
  .hero-carousel-toggle { right:-3%; bottom:calc(2% + 88px); }
}

@media (prefers-contrast:more) {
  :root { --line:rgba(65,42,50,.48); }
  .button,.nav-cta,.booking-choice,.gallery-shot,.service-trigger { border-width:2px; }
}

@media (forced-colors:active) {
  .skip-link,.button,.hero-carousel-toggle,.lightbox-rotation,.lightbox-nav,.lightbox-close,.theme-toggle { border:2px solid ButtonText; }
  .service-trigger:focus-visible,.booking-choice:focus-visible,.gallery-shot:focus-visible { outline:3px solid Highlight; }
  .availability i { forced-color-adjust:none; background:CanvasText; }
}

/* Expanded carousel: reserve space for captions and controls at every viewport. */
body.dialog-open {
  /* Fullscreen dialogs already size themselves to the viewport. Prevent the
     large-monitor site zoom from making them larger than that viewport. */
  --desktop-scale: 1 !important;
}

.image-dialog[open] {
  width: 100vw;
  max-width: 100vw;
  height: 100dvh;
  min-height: 0;
  max-height: 100dvh;
  place-items: stretch;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.image-dialog figure {
  width: 100%;
  height: 100%;
  grid-template-rows: minmax(0, 1fr) auto;
  justify-items: center;
  gap: clamp(8px, 1.5svh, 14px);
}

.lightbox-photo {
  width: auto;
  max-width: min(90vw, 540px);
  height: 100%;
  max-height: 100%;
}

.lightbox-photo.is-standalone {
  width: fit-content;
  max-width: min(calc(100vw - 32px), 960px);
  height: min(100%, calc(125vw - 40px), 1200px);
  max-height: 100%;
  aspect-ratio: 4 / 5;
}

.lightbox-photo.is-standalone img {
  width: 100%;
  max-width: none;
  height: 100%;
  max-height: 100%;
  object-fit: contain;
}

.image-dialog figcaption {
  width: min(90vw, 680px);
  grid-template-columns: minmax(0, 1fr) auto auto;
  grid-template-areas:
    "title title title"
    "description description description"
    "position rotation reserve";
  align-items: center;
  column-gap: 10px;
  row-gap: 5px;
}

.lightbox-title { grid-area: title; }
.lightbox-description { grid-area: description; }
.lightbox-position { grid-area: position; text-align: left; }
.lightbox-rotation { grid-area: rotation; }
.lightbox-reserve { grid-area: reserve; margin-top: 0; }

@media (max-width: 700px) {
  .image-dialog {
    padding:
      calc(env(safe-area-inset-top) + 12px)
      calc(env(safe-area-inset-right) + 12px)
      calc(env(safe-area-inset-bottom) + 12px)
      calc(env(safe-area-inset-left) + 12px);
  }

  .image-dialog figure {
    grid-template-rows: minmax(0, auto) auto;
    align-content: center;
    gap: 8px;
  }

  .image-dialog figcaption {
    width: min(100%, 560px);
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "title title"
      "description description"
      "position position"
      "rotation reserve";
    column-gap: 8px;
    row-gap: 4px;
  }

  .lightbox-photo { max-width: calc(100vw - 28px); }
  .lightbox-title { font-size: 18px; }
  .lightbox-description { font-size: 11px; line-height: 1.35; }
  .lightbox-position { justify-self: center; text-align: center; }
  .lightbox-rotation,
  .lightbox-reserve { min-height: 42px; padding: 9px 13px; }

  .lightbox-nav {
    top: 50%;
    bottom: auto;
    transform: translateY(-50%);
  }
}
