:root{
  --bg:#f8ebe9; --bg2:#f2dcdc; --ink:#2b0f1b; --mut:#80606b; --acc:#d6156f; --line:rgba(43,15,27,.14);
  --serif:"Fraunces",Georgia,serif; --sans:"Plus Jakarta Sans",system-ui,sans-serif;
  --pad:clamp(20px,5vw,72px);
}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font:400 16px/1.6 var(--sans);overflow-x:clip;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}

/* living backdrop: lash arcs + nail outlines, pink light from the upper right */
.bd{position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(60vw 50vh at 92% 4%,rgba(236,47,140,.17),transparent 70%),
    radial-gradient(55vw 55vh at 0% 100%,rgba(240,150,120,.16),transparent 70%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260' fill='none' stroke='%23d6156f' stroke-opacity='.13' stroke-linecap='round'%3E%3Cpath d='M30 60q45 34 90 0M40 66l-7 13M54 73l-4 15M75 77v16M96 73l4 15M110 66l7 13'/%3E%3Cpath d='M160 190q45 34 90 0M170 196l-7 13M184 203l-4 15M205 207v16M226 203l4 15M240 196l7 13'/%3E%3Cpath d='M186 96V58c0-17 6-30 14-30s14 13 14 30v38z'/%3E%3Cpath d='M48 232v-38c0-17 6-30 14-30s14 13 14 30v38z'/%3E%3C/svg%3E");
}
main,.top,.foot{position:relative;z-index:1}
.wrap{max-width:1240px;margin:0 auto;padding:0 var(--pad)}

.lbl{font:600 11px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--acc)}
.h{font:400 clamp(38px,6.2vw,84px)/1.02 var(--serif);letter-spacing:-.02em;margin:.28em 0 .5em;font-variation-settings:"opsz" 144}
.h .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}
.h .w>span{display:inline-block;transform:translateY(105%);transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.h.in .w>span{transform:none}
.rv{opacity:0;transform:translateY(26px);transition:opacity .8s,transform .8s cubic-bezier(.2,.8,.2,1)}
.rv.in{opacity:1;transform:none}

.btn{display:inline-flex;align-items:center;gap:.5em;padding:15px 26px;border-radius:99px;background:var(--acc);color:#fff;font:600 15px/1 var(--sans);text-decoration:none;transition:transform .25s,box-shadow .25s;box-shadow:0 10px 30px -12px rgba(214,21,111,.7)}
.btn:hover{transform:translateY(-2px);box-shadow:0 16px 34px -12px rgba(214,21,111,.8)}
.btn-o{background:transparent;color:inherit;box-shadow:inset 0 0 0 1.5px currentColor}
.btn-o:hover{box-shadow:inset 0 0 0 1.5px var(--acc);color:var(--acc)}
.btn-s{padding:11px 18px;font-size:13px}

/* header */
.top{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px var(--pad);transition:color .5s}
.brand{font:500 22px/1 var(--serif);text-decoration:none;letter-spacing:-.01em}
.brand i{color:var(--acc);font-weight:400}
.nav{display:flex;gap:28px;font:500 13px/1 var(--sans)}
.nav a{text-decoration:none;opacity:.75}.nav a:hover{opacity:1;color:var(--acc)}
body.dark .top{color:#fbe9ee}
.top.solid{background:rgba(248,235,233,.86);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 1px 0 var(--line)}
@media(max-width:820px){.nav{display:none}}

/* ============ story ============ */
.story{height:620vh;position:relative}
.stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;--sink:var(--ink);color:var(--sink);transition:color .6s}
.stage-bg{position:absolute;inset:0;background:radial-gradient(70% 60% at 50% 55%,#2c0d22,#12040c 75%);opacity:0;transition:opacity .6s}
.stage-bg::after{content:"";position:absolute;inset:0;background:radial-gradient(40% 34% at 50% 58%,rgba(154,91,255,.34),transparent 70%)}
.story.dark .stage{--sink:#fbe9ee}
.story.dark .stage-bg{opacity:1}
#gl{position:absolute;inset:0;width:100%;height:100%;z-index:2;display:block}
.giant{position:absolute;z-index:1;left:50%;top:50%;transform:translate(-50%,-50%);white-space:nowrap;font:300 clamp(120px,27vw,460px)/.8 var(--serif);letter-spacing:-.05em;color:transparent;-webkit-text-stroke:1.5px rgba(214,21,111,.5);opacity:0;will-change:transform,opacity;font-variation-settings:"opsz" 144}
.giant.g1{color:rgba(214,21,111,.12);-webkit-text-stroke:0}
.giant.g5{font-style:italic;top:24%;-webkit-text-stroke-color:rgba(214,21,111,.32)}

.ch{position:absolute;z-index:3;top:50%;width:min(38vw,520px);opacity:0;visibility:hidden;will-change:opacity,transform}
.ch{transform:translateY(calc(-50% + var(--dy,0px)))}
.ch.mid{transform:translate(-50%,var(--dy,0px))}
.ch.left{left:var(--pad)}
.ch.right{right:var(--pad)}
.ch.mid{left:50%;width:min(92vw,900px);text-align:center;top:auto;bottom:12vh}
.ch h1,.ch h2{font:400 clamp(40px,5.6vw,88px)/1 var(--serif);letter-spacing:-.025em;margin:.3em 0 .35em;font-variation-settings:"opsz" 144}
.ch.mid h2{font-style:italic;font-weight:300;font-size:clamp(38px,6vw,92px)}
.ch .lead{font-size:clamp(15px,1.25vw,18px);max-width:34ch;opacity:.82}
.ch .still{display:none}
.cta-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
.ch.mid .cta-row{justify-content:center}

.hud{position:absolute;inset:0;z-index:3;pointer-events:none}
.lab{position:absolute;left:0;top:0;opacity:0;font:500 12px/1 var(--sans);letter-spacing:.06em;white-space:nowrap;padding-right:74px;transform:translate(-100%,-50%)}
.lab b{color:var(--acc);font-weight:700;margin-right:8px;letter-spacing:.1em}
.lab::after{content:"";position:absolute;right:8px;top:50%;width:56px;height:1px;background:currentColor;opacity:.45}

.lab-c .lab{padding:0}.lab-c .lab::after,.lab-c .lab::before{display:none}
.lab::before{content:"";position:absolute;right:3px;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:var(--acc)}
.read{position:absolute;left:var(--pad);bottom:13vh;opacity:0;font:300 clamp(64px,9vw,150px)/.9 var(--serif);letter-spacing:-.04em;font-variation-settings:"opsz" 144}
.read .unit{font-size:.4em;margin-left:.1em;color:var(--acc)}
.read small{display:block;font:600 11px/1.4 var(--sans);letter-spacing:.22em;text-transform:uppercase;margin-top:12px;opacity:.7}
.read.r-uv{left:auto;right:var(--pad);text-align:right}

.cue{position:absolute;z-index:3;left:50%;bottom:26px;transform:translateX(-50%);font:600 10px/1 var(--sans);letter-spacing:.3em;text-transform:uppercase;opacity:.6;display:flex;flex-direction:column;align-items:center;gap:10px;transition:opacity .4s}
.cue span{width:1px;height:34px;background:currentColor;transform-origin:top;animation:cue 2.2s cubic-bezier(.6,0,.3,1) infinite}
@keyframes cue{0%{transform:scaleY(0)}60%{transform:scaleY(1)}100%{transform:scaleY(1);opacity:0}}
.story.moved .cue{opacity:0}.story.moved .cue span,html.hid .cue span{animation-play-state:paused}
.prog{position:absolute;z-index:4;right:22px;top:50%;height:34vh;width:2px;margin-top:-17vh;background:var(--line);border-radius:2px;overflow:hidden}
.story.dark .prog{background:rgba(255,255,255,.18)}
.prog i{display:block;width:100%;height:100%;background:var(--acc);transform-origin:top;transform:scaleY(0)}

@media(max-width:820px){
  .ch,.ch.left,.ch.right{left:var(--pad);right:var(--pad);width:auto;top:auto;bottom:11vh}
  .ch,.ch.mid{transform:translateY(var(--dy,0px))}
  .ch.right{text-align:right}.ch.right .lead{margin-left:auto}
  .ch.mid{bottom:9vh;left:var(--pad);right:var(--pad);width:auto}
  .ch h1,.ch h2{font-size:clamp(38px,11.5vw,60px)}
  .ch.mid h2{font-size:clamp(34px,10.5vw,54px)}
  .c1 .lbl,.c1 .lead{display:none}
  .c1{bottom:19vh!important}
  .read{bottom:calc(11vh + 172px);font-size:50px}
  .read.r-uv{right:auto;left:var(--pad);text-align:left}
  .read.r-lash{left:auto;right:var(--pad);text-align:right}
  .lab-c .lab{background:rgba(248,235,233,.78);padding:4px 8px;border-radius:99px}
  .giant.g5{top:16%}
  .read small{font-size:9px;margin-top:6px}
  .lab{font-size:10px;padding-right:38px}.lab::after{width:26px}
  .prog{right:auto;left:0;top:0;margin:0;width:100%;height:2px}
  .prog i{transform-origin:left;transform:scaleX(0)}
  .giant{top:36%}
}

/* static story: reduced motion or no WebGL */
.story.static{height:auto}
.story.static .stage{position:relative;height:auto;overflow:visible;padding:110px var(--pad) 40px;display:grid;gap:70px;max-width:1100px;margin:0 auto}
.story.static #gl,.story.static .hud,.story.static .giant,.story.static .cue,.story.static .prog,.story.static .stage-bg{display:none}
.story.static .ch{position:static;opacity:1!important;visibility:visible!important;transform:none!important;width:auto;text-align:left;display:grid;grid-template-columns:minmax(0,300px) 1fr;gap:clamp(20px,5vw,60px);align-items:center}
.story.static .ch>:not(.still){grid-column:2}
.story.static .ch .still{display:block;grid-row:1/span 4;border-radius:200px 200px 18px 18px;aspect-ratio:3/4;object-fit:cover;width:100%}
.story.static .ch.mid{display:block;text-align:center}
.story.static .c1 .lbl,.story.static .c1 .lead{display:block}
@media(max-width:820px){.story.static .ch{grid-template-columns:1fr}.story.static .ch>:not(.still){grid-column:1}.story.static .ch .still{grid-row:auto;max-width:260px}}

/* ============ band ============ */
.band{position:relative;z-index:1;padding:clamp(40px,7vw,90px) 0 0;overflow:hidden}
.band-row{white-space:nowrap;font:300 clamp(54px,10vw,150px)/1.05 var(--serif);letter-spacing:-.03em;will-change:transform;font-variation-settings:"opsz" 144}
.band-row em{font-style:normal;color:var(--acc);margin:0 .12em}
.band-row.out{color:transparent;-webkit-text-stroke:1.2px var(--ink);font-style:italic;margin-left:-30vw}

/* ============ sections ============ */
.sec{position:relative;z-index:1;padding:clamp(80px,11vw,160px) 0}
.note{margin-top:34px;color:var(--mut);font-size:15px}
.note a{color:var(--acc);font-weight:600;text-decoration:none}

.svc{list-style:none;padding:0;border-top:1px solid var(--line)}
.svc li{display:grid;grid-template-columns:70px 1fr 150px auto;gap:clamp(16px,3vw,44px);align-items:center;padding:clamp(22px,3vw,38px) 0;border-bottom:1px solid var(--line)}
.svc .n{font:600 12px/1 var(--sans);letter-spacing:.2em;color:var(--acc)}
.svc h3{font:400 clamp(30px,4.4vw,60px)/1.02 var(--serif);letter-spacing:-.02em;transition:transform .5s cubic-bezier(.2,.8,.2,1),color .3s;font-variation-settings:"opsz" 144}
.svc p{color:var(--mut);margin-top:8px;max-width:44ch}
.svc .ph{width:150px;aspect-ratio:3/4;border-radius:90px 90px 14px 14px;overflow:hidden;clip-path:inset(100% 0 0 0);transition:clip-path 1s cubic-bezier(.2,.8,.2,1) .15s}
.svc li.in .ph{clip-path:inset(0)}
.svc .ph img{width:100%;height:100%;object-fit:cover;transform:scale(1.15);transition:transform 1.4s cubic-bezier(.2,.8,.2,1)}
.svc li.in .ph img{transform:none}
.svc .go{font:600 13px/1.3 var(--sans);text-decoration:none;color:var(--acc);white-space:nowrap}
.svc li:hover h3{transform:translateX(14px);color:var(--acc)}
@media(max-width:820px){
  .svc li{grid-template-columns:1fr 96px;grid-template-areas:"n ph" "t ph" "go ph";gap:8px 16px}
  .svc .n{grid-area:n}.svc .t{grid-area:t}.svc .go{grid-area:go;margin-top:8px;white-space:normal}
  .svc .ph{grid-area:ph;width:96px}
}

/* tool */
.tool-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(24px,5vw,80px);align-items:center}
.tool-stage{position:relative;aspect-ratio:1/1.05;border-radius:50% 50% 28px 28px/42% 42% 28px 28px;background:radial-gradient(60% 55% at 50% 45%,#fff6f4,#f0d3d6);box-shadow:inset 0 0 0 1px var(--line),0 40px 80px -50px rgba(120,20,70,.5);overflow:hidden;touch-action:pan-y;cursor:grab}
.tool-stage:active{cursor:grabbing}
.tool-stage canvas{position:absolute;inset:0;width:100%;height:100%;z-index:2}
.tool-stage .ring{position:absolute;inset:9%;border-radius:50%;border:1px dashed rgba(214,21,111,.35)}
.tool-still{display:none;position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.nogl .tool-still{display:block}
.hint{position:absolute;left:0;right:0;bottom:16px;text-align:center;font:600 10px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--mut);z-index:3}
fieldset{border:0;padding:0;margin:0 0 22px}
legend{font:600 11px/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--mut);margin-bottom:12px;padding:0}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips button{padding:11px 18px;border-radius:99px;box-shadow:inset 0 0 0 1px var(--line);font:500 14px/1 var(--sans);transition:background .25s,color .25s,box-shadow .25s}
.chips button:hover{box-shadow:inset 0 0 0 1px var(--acc)}
.chips button.on{background:var(--ink);color:var(--bg);box-shadow:none}
.sw{display:flex;flex-wrap:wrap;gap:10px}
.sw button{width:42px;height:54px;border-radius:21px 21px 8px 8px;background:var(--c);box-shadow:inset 0 0 0 1px rgba(43,15,27,.18),inset 6px 8px 10px -6px rgba(255,255,255,.7);transition:transform .25s}
.sw button:hover{transform:translateY(-3px)}
.sw button.on{transform:translateY(-6px);outline:2px solid var(--acc);outline-offset:3px}
.sum{font:400 clamp(20px,2.2vw,28px)/1.25 var(--serif);margin:6px 0 22px}
.sum b{color:var(--acc);font-weight:500;font-style:italic}
@media(max-width:820px){.tool-grid{grid-template-columns:1fr}.tool-stage{max-width:440px;width:100%;margin:0 auto}}

/* gallery */
.filt{margin-bottom:28px}
.gal{columns:4;column-gap:14px}
.gal button{display:block;width:100%;margin:0 0 14px;border-radius:16px;overflow:hidden;break-inside:avoid}
.gal img{clip-path:inset(0 0 100% 0);transition:clip-path .9s cubic-bezier(.2,.8,.2,1),transform .8s cubic-bezier(.2,.8,.2,1)}
.gal button.in img{clip-path:inset(0)}
.gal button.off{display:none}
.gal img{width:100%}
.gal button:hover img{transform:scale(1.05)}
@media(max-width:1000px){.gal{columns:3}}
@media(max-width:620px){.gal{columns:2;column-gap:10px}.gal button{margin-bottom:10px;border-radius:12px}}
.lb{border:0;padding:0;background:transparent;max-width:94vw;max-height:92vh;margin:auto}
.lb::backdrop{background:rgba(26,7,16,.86)}
.lb img{max-width:94vw;max-height:92vh;border-radius:14px}
.lb button{position:fixed;top:14px;right:18px;font-size:38px;line-height:1;color:#fff}

/* about */
.about-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.25fr) minmax(0,.55fr);gap:clamp(22px,4vw,64px);align-items:center}
.por,.por2{overflow:hidden;border-radius:240px 240px 20px 20px}
.por img,.por2 img{width:100%;height:118%;object-fit:cover;will-change:transform}
.por{aspect-ratio:3/4.4}.por2{aspect-ratio:3/4.6;align-self:end}
.big{font:300 clamp(24px,3vw,42px)/1.22 var(--serif);letter-spacing:-.01em;margin-bottom:22px}
.light span{opacity:.22;transition:opacity .4s}
.light span.lit{opacity:1}
.stats{list-style:none;padding:0;display:flex;gap:clamp(24px,4vw,60px);margin-top:36px;flex-wrap:wrap}
.stats b{display:block;font:300 clamp(54px,6.5vw,96px)/1 var(--serif);letter-spacing:-.03em;color:var(--acc);font-variation-settings:"opsz" 144}
.stats span{display:block;font-size:13px;color:var(--mut);max-width:22ch;margin-top:6px}
@media(max-width:820px){.about-grid{grid-template-columns:1fr 1fr}.about-grid>div{grid-column:1/-1;order:-1}.por2{align-self:stretch}.por,.por2{aspect-ratio:3/4.2}}

/* quotes */
.quotes{columns:3;column-gap:clamp(22px,3.4vw,54px)}
.quotes blockquote{break-inside:avoid;padding:26px 0;border-top:1px solid var(--line)}
.quotes p{font:400 clamp(18px,1.55vw,22px)/1.38 var(--serif)}
.quotes .q-big p{font-size:clamp(22px,2.2vw,30px);font-style:italic;font-weight:300}
.quotes footer{margin-top:14px;font:600 11px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--acc)}
@media(max-width:1000px){.quotes{columns:2}}
@media(max-width:620px){.quotes{columns:1}}

/* location */
.loc-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,5vw,80px);align-items:center}
.loc .h{font-size:clamp(34px,4.6vw,64px)}
.open{display:inline-flex;align-items:center;gap:10px;margin:22px 0 6px;font:600 13px/1 var(--sans);letter-spacing:.06em}
.open::before{content:"";width:9px;height:9px;border-radius:50%;background:#b9a3aa}
.open.yes::before{background:#1fa765;box-shadow:0 0 0 5px rgba(31,167,101,.18)}
.hours{border-collapse:collapse;width:100%;max-width:420px;margin:10px 0 30px}
.hours th,.hours td{padding:11px 0;border-bottom:1px solid var(--line);text-align:left;font-weight:400}
.hours td{text-align:right;font-variant-numeric:tabular-nums}
.hours tr.today th,.hours tr.today td{font-weight:700;color:var(--acc)}
.map{aspect-ratio:1/1.05;border-radius:50% 50% 28px 28px/40% 40% 28px 28px;overflow:hidden;box-shadow:0 40px 80px -50px rgba(120,20,70,.5)}
.map iframe{width:100%;height:100%;border:0;filter:saturate(.75) contrast(1.02)}
@media(max-width:820px){.loc-grid{grid-template-columns:1fr}.map{aspect-ratio:1/1}}

/* footer */
.foot{border-top:1px solid var(--line);padding:44px 0 120px;font-size:14px;color:var(--mut)}
.foot-grid{display:flex;justify-content:space-between;gap:26px;flex-wrap:wrap;align-items:flex-end}
.foot .brand{color:var(--ink);margin-bottom:8px}
.foot a{text-decoration:none}.foot a:hover{color:var(--acc)}
.credit{text-align:right}.credit a{color:var(--acc);font-weight:700}
@media(max-width:620px){.credit{text-align:left}}

/* sticky call bar */
.bar{position:fixed;z-index:30;right:20px;bottom:20px;display:flex;gap:8px;padding:8px;border-radius:99px;background:rgba(43,15,27,.92);transform:translateY(140%);transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.bar.on{transform:none}
.bar a{display:flex;align-items:center;gap:8px;padding:12px 18px;border-radius:99px;color:#fff;text-decoration:none;font:600 14px/1 var(--sans)}
.bar a.wa{background:var(--acc)}
.bar svg{width:18px;height:18px;fill:currentColor}
@media(max-width:620px){.bar{left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom))}.bar a{flex:1;justify-content:center}}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .rv,.h .w>span,.svc .ph,.svc .ph img,.gal img{transition:none!important;opacity:1;transform:none;clip-path:none}
  .light span{opacity:1}.cue span{animation:none}
}
