/* Salon Sang — sparkly, happy, clean */
:root{
  color-scheme: light;
  --pink:#d63a78; --pink-deep:#b02a62; --pink-soft:#f6c4d7; --blush:#fdeef3;
  --cream:#fffaf6; --paper:#ffffff; --gold:#c49a45; --gold-soft:#ead7a8;
  --ink:#3b2a2f; --ink-soft:#6e5a60; --line:#f0dbe3;
  --sun:#f4b52b; --sun-deep:#6b3f1d;
  --radius:22px; --shadow:0 10px 30px rgba(176,42,98,.12);
  --script:"Great Vibes", cursive; --serif:"Cormorant Garamond", Georgia, serif; --sans:"Jost", system-ui, sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--cream);color:var(--ink);font:400 17px/1.6 var(--sans);overflow-x:hidden;padding-bottom:76px}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
section{padding:72px 20px;max-width:1080px;margin:0 auto;text-align:center}
.h2{font:600 clamp(28px,6vw,42px)/1.15 var(--serif);margin:0 0 8px;color:var(--ink)}
.script,.h2 .script{font-family:var(--script);font-weight:400;color:var(--pink);font-size:1.35em;line-height:.8;padding-right:.08em}
.sub{color:var(--ink-soft);margin:0 0 28px}
.lede{max-width:620px;margin:0 auto 28px;font-size:18px;color:var(--ink-soft)}
.fine{font-size:14px;color:var(--ink-soft);margin:10px 0 0}

/* sparkles canvas */
#sparkles{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:50}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;padding:14px 26px;font-weight:600;text-decoration:none;letter-spacing:.02em;transition:transform .2s,box-shadow .2s,background .2s}
.btn:active{transform:scale(.97)}
.btn-primary{background:linear-gradient(135deg,var(--pink),#e86a9a);color:#fff;box-shadow:0 8px 22px rgba(214,58,120,.35)}
.btn-primary:hover{box-shadow:0 10px 28px rgba(214,58,120,.5)}
.btn-soft{background:#fff;border:1.5px solid var(--pink-soft);color:var(--pink-deep);padding:11px 18px;font-size:15px}
.btn-outline{border:2px solid var(--gold);color:var(--ink);background:transparent}
.btn-warm{background:var(--sun);color:#4a2a12;box-shadow:0 8px 22px rgba(244,181,43,.35)}
.btn-wide{width:100%;margin-top:14px}
.btn-glow{background:rgba(255,228,200,.12);color:#ffe9cf;border:1.5px solid rgba(255,214,170,.7);padding:15px 34px;font-size:18px;box-shadow:0 0 24px rgba(255,190,130,.35),inset 0 0 14px rgba(255,190,130,.18);backdrop-filter:blur(4px)}
.btn-glow:hover{box-shadow:0 0 36px rgba(255,190,130,.6),inset 0 0 18px rgba(255,190,130,.3)}
.btn-spark{display:inline-block;animation:twirl 3s linear infinite}
@keyframes twirl{to{transform:rotate(360deg)}}

/* ---------- door ---------- */
.door{position:relative;min-height:100svh;display:grid;place-items:end center;overflow:hidden;background:radial-gradient(ellipse at 50% 30%,#5b5157 0,#3a3236 55%,#241e21 100%);color:#ffe9cf;text-align:center}
.door-neon{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 40%;animation:hum 6s ease-in-out infinite}
@media (max-aspect-ratio:1/1){
  .door-neon{inset:auto;left:50%;top:6%;width:170%;height:auto;max-width:none;transform:translateX(-50%);object-fit:initial;
    -webkit-mask-image:radial-gradient(ellipse 50% 50% at 50% 45%,#000 55%,transparent 100%);mask-image:radial-gradient(ellipse 50% 50% at 50% 45%,#000 55%,transparent 100%)}
}
@keyframes hum{0%,100%{filter:brightness(1)}48%{filter:brightness(1.06)}50%{filter:brightness(.92)}52%{filter:brightness(1.05)}}
#fluid{position:absolute;inset:0;width:100%;height:100%;mix-blend-mode:screen;opacity:.95}
.door-swirl{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:#ffd7b0;opacity:.8;margin:16px 0 0;animation:breathe 3s ease-in-out infinite}
@keyframes breathe{50%{opacity:.35}}
.door-shade{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(20,14,16,.05) 30%,rgba(20,14,16,.75) 100%)}
.door-content{position:relative;z-index:2;pointer-events:none;padding:0 20px 13vh;max-width:640px}
.door-kicker{font-size:12px;letter-spacing:.22em;text-transform:uppercase;opacity:.8;margin:0 0 14px}
.door-line{font:500 clamp(30px,7vw,48px)/1.15 var(--serif);margin:0 0 26px;text-shadow:0 2px 18px rgba(0,0,0,.4)}
.door-line em{font-family:var(--script);font-style:normal;font-size:1.3em;color:#ffd7b0;text-shadow:0 0 18px rgba(255,170,110,.7)}
.door-hint{font-size:14px;opacity:.75;margin:18px 0 0}
.door-hint a{color:#ffd7b0}
.door-content a,.door-content button{pointer-events:auto}
/* lights on flash */
body.lit .door::after{content:"";position:absolute;inset:0;background:var(--cream);animation:flash 1.1s ease-out forwards;pointer-events:none}
@keyframes flash{0%{opacity:0}35%{opacity:.9}100%{opacity:0}}

/* ---------- welcome ---------- */
.welcome{position:relative;padding-top:20px}
.chandelier{display:flex;justify-content:center;margin:-20px 0 6px;transform-origin:50% 0;animation:sway 7s ease-in-out infinite}
@keyframes sway{0%,100%{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}
.chandelier .cr{fill:#f3f7ff;stroke:#c9d6ee;stroke-width:1;animation:glint 2.8s ease-in-out infinite}
.chandelier .cr:nth-child(2n){animation-delay:.7s}.chandelier .cr:nth-child(3n){animation-delay:1.4s}
@keyframes glint{0%,100%{fill:#f3f7ff}50%{fill:#ffd9ea}}
.logo{width:min(440px,86vw);height:auto;margin:0 auto;mix-blend-mode:multiply}
.script-line{font-family:var(--script);font-size:clamp(30px,7vw,40px);color:var(--gold);margin:0 0 18px}
.pillars{list-style:none;padding:0;margin:0 auto;display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));max-width:820px}
.pillars li{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:22px 16px;display:flex;flex-direction:column;gap:2px;box-shadow:var(--shadow)}
.pi{font-size:28px;color:var(--pink);line-height:1}
.pillars strong{font:600 22px var(--serif)}
.pillars span:last-child{font-size:15px;color:var(--ink-soft)}

/* ---------- suite ---------- */
.suite{background:linear-gradient(var(--blush),var(--cream));max-width:none}
.suite-photos{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));max-width:900px;margin:0 auto}
.hotspot-photo{position:relative;margin:0;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);border:6px solid #fff}
.hotspot-photo img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}
.hs{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:40px;height:40px;border-radius:50%;border:2px solid #fff;background:rgba(214,58,120,.85);color:#fff;font-size:18px;display:grid;place-items:center;box-shadow:0 0 0 0 rgba(214,58,120,.6);animation:pulse 2.2s infinite}
.hs[aria-expanded="true"]{background:var(--gold)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(214,58,120,.55)}70%{box-shadow:0 0 0 16px rgba(214,58,120,0)}100%{box-shadow:0 0 0 0 rgba(214,58,120,0)}}
.hs-card{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);width:min(420px,calc(100% - 32px));background:#fff;border-radius:var(--radius);padding:20px 22px;box-shadow:0 20px 50px rgba(59,42,47,.25);border:1px solid var(--line);z-index:60;text-align:left;animation:rise .25s ease-out}
@keyframes rise{from{opacity:0;transform:translate(-50%,12px)}}
.hs-card h3{font:600 24px var(--serif);margin:0 0 4px;color:var(--pink-deep)}
.hs-card p{margin:0;color:var(--ink-soft)}
.hs-close{position:absolute;top:8px;right:10px;border:0;background:none;font-size:26px;color:var(--ink-soft);width:40px;height:40px}

/* ---------- friends ---------- */
.seg{display:inline-flex;background:var(--blush);border-radius:999px;padding:5px;margin-bottom:24px}
.seg button{border:0;background:none;padding:10px 18px;border-radius:999px;font-weight:500;color:var(--ink-soft)}
.seg button[aria-selected="true"]{background:#fff;color:var(--pink-deep);box-shadow:0 3px 10px rgba(176,42,98,.15)}
.seats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:640px;margin:0 auto}
.seat{background:#fff;border:2px dashed var(--line);border-radius:var(--radius);padding:18px 8px;display:flex;flex-direction:column;align-items:center;gap:2px;opacity:.45;transition:all .35s}
.seat.on{opacity:1;border-style:solid;border-color:var(--pink-soft);box-shadow:var(--shadow);transform:translateY(-4px)}
.seat-ic{font-size:30px;color:var(--pink)}
.seat strong{font:600 19px/1.1 var(--serif)}
.seat em{font-style:normal;font-size:13px;color:var(--ink-soft)}
.friends-note{max-width:520px;margin:22px auto 0;color:var(--ink-soft);min-height:3.2em}

/* ---------- 3D studio ---------- */
.studio{max-width:none;padding:80px 0 72px;background:linear-gradient(180deg,var(--cream),#fdeef3 30%,#fbe3ea 100%);position:relative;overflow:hidden}
.studio-head{padding:0 20px}
.eyebrow{font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);font-weight:600;margin:0 0 6px}
.stage{position:relative;margin:8px auto 0;width:min(1100px,100%);height:min(68svh,640px);min-height:420px;border-radius:0;overflow:hidden;touch-action:pan-y;-webkit-user-select:none;user-select:none}
@media (min-width:760px){.stage{width:calc(100% - 40px);border-radius:32px;box-shadow:0 30px 80px rgba(176,42,98,.18),inset 0 0 0 1px rgba(255,255,255,.6)}}
.studio-canvas{position:absolute;inset:0;width:100%!important;height:100%!important;display:block;opacity:0;transition:opacity 1.2s}
.stage.ready .studio-canvas{opacity:1}
.stage-loading{position:absolute;inset:0;display:flex;gap:10px;align-items:center;justify-content:center;transition:opacity .6s}
.stage.ready .stage-loading{opacity:0;pointer-events:none}
.stage-loading span{width:10px;height:10px;border-radius:50%;background:var(--pink);animation:bob 1.2s ease-in-out infinite}
.stage-loading span:nth-child(2){animation-delay:.15s}.stage-loading span:nth-child(3){animation-delay:.3s}
@keyframes bob{0%,100%{transform:translateY(0);opacity:.4}50%{transform:translateY(-10px);opacity:1}}
.stage-tip{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);margin:0;width:max-content;max-width:calc(100% - 32px);text-align:center;font-size:14px;color:var(--ink);background:rgba(255,255,255,.72);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:9px 16px;border-radius:999px;box-shadow:0 6px 20px rgba(176,42,98,.12);pointer-events:none}
.stage-tip.flash{animation:tipIn .5s ease-out}
@keyframes tipIn{from{opacity:0;transform:translate(-50%,8px)}}
.stage.no-gl{background:url(../images/nails-cateye.webp) center/cover}

.panel-wrap{max-width:980px;margin:12px auto 0;position:relative;z-index:2;padding:0 14px}
.wall-row,.ctl-grid{background:rgba(255,255,255,.82);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.9);border-radius:26px;box-shadow:0 18px 50px rgba(176,42,98,.12);padding:18px 16px 16px;text-align:left}
.ctl-grid{margin-top:12px;display:grid;gap:16px}
@media (min-width:760px){.panel-wrap{margin-top:-28px}}
@media (min-width:820px){.ctl-grid{grid-template-columns:1fr 1fr}.ctl-inline{grid-column:1/-1}}
.ctl-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.ctl-label{display:block;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-weight:600;margin-bottom:9px}
.ctl-label small{letter-spacing:0;text-transform:none;color:var(--ink-soft);font-weight:400;font-size:13px;margin-left:6px}
.color-name{font:italic 600 20px var(--serif);color:var(--pink-deep)}

/* the lit polish wall */
.polish-wall{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,auto);grid-auto-columns:46px;gap:14px 10px;overflow-x:auto;padding:12px 6px 16px;margin:0 -6px;scrollbar-width:none;
  background:linear-gradient(transparent 46%,rgba(255,255,255,.9) 46%,rgba(255,255,255,.9) 49%,transparent 49%,transparent 96%,rgba(255,255,255,.95) 96%);
  border-radius:14px;box-shadow:inset 0 -2px 0 #e6f0ff}
.polish-wall::-webkit-scrollbar{display:none}
@media (min-width:640px){.polish-wall{grid-auto-flow:row;grid-template-rows:none;grid-template-columns:repeat(8,1fr);grid-auto-columns:auto}}
.bottle{position:relative;height:72px;border:0;background:none;padding:0;transition:transform .25s cubic-bezier(.2,.9,.3,1.4)}
.bottle:hover{transform:translateY(-4px)}
.bottle.on{transform:translateY(-8px) scale(1.06)}
.bottle i{position:absolute;left:50%;transform:translateX(-50%);display:block}
.b-cap{top:0;width:16px;height:30px;border-radius:5px 5px 3px 3px;background:linear-gradient(90deg,#9c7a2b,#f6e3a4 45%,#b98f33 70%,#e9cf86)}
.b-neck{top:29px;width:20px;height:5px;background:rgba(255,255,255,.7);border-radius:2px}
.b-glass{bottom:0;width:38px;height:38px;border-radius:9px 9px 12px 12px;background:var(--c);box-shadow:inset -5px -6px 10px rgba(0,0,0,.22),inset 4px 4px 8px rgba(255,255,255,.35),0 6px 14px -4px var(--c)}
.b-shine{position:absolute;left:6px;top:5px;width:6px;height:22px;border-radius:4px;background:linear-gradient(rgba(255,255,255,.8),rgba(255,255,255,0))}
.bottle.on .b-glass{box-shadow:inset -5px -6px 10px rgba(0,0,0,.22),inset 4px 4px 8px rgba(255,255,255,.35),0 0 0 3px #fff,0 0 0 5px var(--pink),0 10px 24px -4px var(--c)}
.bottle::after{content:"";position:absolute;left:50%;bottom:-10px;width:44px;height:8px;transform:translateX(-50%);background:radial-gradient(ellipse,rgba(170,205,255,.9),transparent 70%);opacity:.8}

.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips button{display:inline-flex;align-items:center;gap:7px;border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:7px 13px 7px 8px;font-size:14px;font-weight:500;color:var(--ink);transition:all .2s}
.chips button:hover{border-color:var(--pink-soft)}
.chips button.on{border-color:var(--pink);background:var(--pink);color:#fff;box-shadow:0 6px 16px rgba(214,58,120,.3)}
.chips .sw{width:22px;height:22px;border-radius:50%;display:block;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.chips svg{width:15px;height:18px;fill:#f2b6c9;stroke:var(--pink-deep);stroke-width:1.2}
.chips button.on svg{fill:#fff;stroke:#fff}
.chips .ai{font-style:normal;width:20px;text-align:center;color:var(--pink);font-size:15px}
.chips button.on .ai{color:#fff}
.ctl-inline{display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px}
.ctl-inline .ctl-label{margin:0}
.tones{display:flex;gap:8px}
.tones button{width:30px;height:30px;border-radius:50%;border:3px solid #fff;background:var(--t);box-shadow:0 0 0 1.5px var(--line),0 3px 8px rgba(0,0,0,.12)}
.tones button.on{box-shadow:0 0 0 2.5px var(--pink),0 3px 8px rgba(0,0,0,.12)}
.mini-actions{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap}
.mini{border:0;background:var(--blush);color:var(--pink-deep);border-radius:999px;padding:8px 13px;font-size:13px;font-weight:600}
.studio-cta{display:grid;gap:10px;margin-top:16px}
@media (min-width:640px){.studio-cta{grid-template-columns:1fr 1fr}}
.btn-magic{position:relative;overflow:hidden;color:#fff;background:linear-gradient(120deg,#7c3aed,#d63a78 45%,#f0ac14 100%);background-size:200% 100%;animation:magic 6s ease-in-out infinite;box-shadow:0 10px 28px rgba(124,58,237,.3)}
@keyframes magic{0%,100%{background-position:0 0}50%{background-position:100% 0}}
.btn-magic::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.55) 50%,transparent 65%);transform:translateX(-120%);animation:sheen 3.2s ease-in-out infinite}
@keyframes sheen{60%,100%{transform:translateX(120%)}}
.center{text-align:center}

/* camera try-on */
html.no-scroll,html.no-scroll body{overflow:hidden}
.tryon{position:fixed;inset:0;z-index:100;background:#120c0f;color:#fff}
.tryon[hidden]{display:none}
.tryon video{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.tryon canvas{position:absolute;inset:0;width:100%;height:100%}
.to-top{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:calc(12px + env(safe-area-inset-top)) 14px 12px;background:linear-gradient(rgba(0,0,0,.5),transparent)}
.to-top button{width:46px;height:46px;border-radius:50%;border:0;background:rgba(255,255,255,.18);backdrop-filter:blur(10px);color:#fff;font-size:24px}
.to-title{margin:0;font:600 20px var(--serif)}.to-title em{font-family:var(--script);font-style:normal;font-size:26px;color:#ffc4dc}
.to-bottom{position:absolute;left:0;right:0;bottom:0;padding:16px 16px calc(18px + env(safe-area-inset-bottom));display:grid;gap:10px;background:linear-gradient(transparent,rgba(0,0,0,.6))}
.to-status{margin:0;text-align:center;font-size:15px;text-shadow:0 1px 6px rgba(0,0,0,.5)}

/* ---------- gallery ---------- */
.gallery{max-width:none;padding-left:0;padding-right:0}
.gallery .h2,.gallery .sub{padding:0 20px}
.strip{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 20px 18px;scrollbar-width:none}
.strip::-webkit-scrollbar{display:none}
@media (min-width:1100px){.strip{justify-content:center;flex-wrap:wrap}}
.tile{flex:0 0 min(64vw,250px);scroll-snap-align:center;border:0;padding:0;background:#fff;border-radius:20px;overflow:hidden;box-shadow:var(--shadow);text-align:left;position:relative}
.tile img{aspect-ratio:3/4;object-fit:cover;width:100%;height:auto;transition:transform .5s}
.tile:hover img{transform:scale(1.04)}
.tile span{position:absolute;left:10px;right:10px;bottom:10px;background:rgba(255,255,255,.9);border-radius:12px;padding:6px 10px;font-size:14px;font-weight:500}
.lightbox{position:fixed;inset:0;background:rgba(40,25,30,.88);z-index:80;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px}
.lightbox[hidden]{display:none}
.lightbox img{max-height:78vh;border-radius:18px;width:auto}
.lb-cap{color:#fff;margin:12px 0 0}
.lb-close{position:absolute;top:14px;right:14px;width:48px;height:48px;border-radius:50%;border:0;background:#fff;font-size:28px}

/* ---------- menu ---------- */
.menu-card{background:#fff;max-width:620px;margin:0 auto;padding:34px 22px 28px;border-radius:12px;border:3px solid var(--gold);outline:1px solid var(--gold-soft);outline-offset:-12px;box-shadow:var(--shadow);position:relative}
.menu-card::before,.menu-card::after{content:"✿";position:absolute;font-size:34px;color:var(--pink-soft)}
.menu-card::before{top:6px;left:14px}.menu-card::after{bottom:6px;right:14px}
.tabs{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;margin:16px 0 18px}
.tabs button{border:0;background:var(--blush);border-radius:999px;padding:8px 14px;font-size:14px;font-weight:500;color:var(--pink-deep)}
.tabs button[aria-selected="true"]{background:var(--pink);color:#fff}
.prices{display:grid;grid-template-columns:1fr auto;gap:10px 12px;margin:0 auto;max-width:440px;text-align:left}
.prices dt{position:relative;overflow:hidden;white-space:nowrap}
.prices dt::after{content:" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ";color:var(--gold-soft);position:absolute;padding-left:6px}
.prices dd{margin:0;font:600 20px/1.2 var(--serif);color:var(--pink-deep)}
.menu-h{font:600 15px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin:18px 0 8px}
.menu-h:first-child{margin-top:0}
.menu-note{font-size:14px;color:var(--ink-soft);margin:16px 0 0}
.menu-promise{font-family:var(--script);font-size:30px;color:var(--pink);margin:24px 0 0}
.menu-promise span{font-family:var(--sans);font-size:16px;color:var(--gold)}

/* ---------- love ---------- */
.love-list{list-style:none;padding:0;margin:0 auto 28px;max-width:720px;display:grid;gap:12px;text-align:left}
.love-list li{background:#fff;border-left:4px solid var(--pink-soft);border-radius:14px;padding:14px 18px;color:var(--ink-soft);box-shadow:0 4px 14px rgba(176,42,98,.06)}
.love-list strong{color:var(--ink);font:600 20px var(--serif);margin-right:4px}

/* ---------- home care ---------- */
.home-care{max-width:none;background:linear-gradient(#fbf4e8,#fffaf2);color:#4a3426}
.home-care .h2 .script{color:#b8792a}
.home-care .lede{color:#6b5442}
.sunflower{display:flex;justify-content:center;margin-bottom:6px}
.sunflower .petals{animation:twirl 40s linear infinite}
.care-list{list-style:none;padding:0;margin:0 auto 6px;display:flex;flex-wrap:wrap;justify-content:center;gap:10px;max-width:560px}
.care-list li{background:#fff;border:1px solid #f0e1c4;border-radius:999px;padding:8px 16px;font-size:15px}
.home-care .btn{margin-top:20px}

/* ---------- visit ---------- */
.visit-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));text-align:left}
.visit-card{background:#fff;border-radius:var(--radius);padding:22px;border:1px solid var(--line);box-shadow:var(--shadow)}
.visit-card h3{font:600 24px var(--serif);margin:0 0 6px;color:var(--pink-deep)}
.visit-card p{margin:0 0 10px;color:var(--ink-soft)}
.big-phone a{font:600 30px var(--serif);color:var(--ink);text-decoration:none}
.link{color:var(--pink-deep);font-weight:500}

/* ---------- footer & booking bar ---------- */
.foot{text-align:center;padding:30px 20px 40px;color:var(--ink-soft);font-size:14px}
.foot-script{font-family:var(--script);font-size:28px;color:var(--gold);margin:0 0 6px}
.book-bar{position:fixed;left:0;right:0;bottom:0;z-index:70;display:flex;gap:10px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(255,250,246,.92);backdrop-filter:blur(10px);border-top:1px solid var(--line);transform:translateY(110%);transition:transform .35s}
.book-bar.show{transform:none}
.book-bar a{flex:1;text-align:center;text-decoration:none;font-weight:600;border-radius:999px;padding:13px 10px}
.bb-call{background:#fff;border:2px solid var(--pink);color:var(--pink-deep)}
.bb-text{background:linear-gradient(135deg,var(--pink),#e86a9a);color:#fff}
@media (min-width:860px){.book-bar{left:auto;right:20px;bottom:20px;border-radius:999px;border:1px solid var(--line);box-shadow:var(--shadow);width:360px}}

/* reveal on scroll */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s,transform .7s}
.reveal.in{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
}

/* ---------- immersive 3D suite ---------- */
.suite-stage{position:relative;width:min(1100px,100%);height:min(72svh,680px);min-height:440px;margin:0 auto 18px;overflow:hidden;touch-action:pan-y;-webkit-user-select:none;user-select:none;cursor:grab;background:radial-gradient(ellipse at 50% 45%,#fff6f8,#f3d3de)}
.suite-stage:active{cursor:grabbing}
@media (min-width:760px){.suite-stage{width:calc(100% - 40px);border-radius:999px/180px;box-shadow:0 30px 80px rgba(176,42,98,.18),inset 0 0 0 1px rgba(255,255,255,.6)}}
@media (max-width:759px){.suite-stage{border-radius:28px;width:calc(100% - 20px)}}
.suite-canvas{position:absolute;inset:0;width:100%!important;height:100%!important;opacity:0;transition:opacity 1.4s}
.suite-stage.ready .suite-canvas{opacity:1}
.suite-stage.ready .stage-loading{opacity:0;pointer-events:none}
.suite-stage .hs3d{position:absolute;left:0;top:0;--x:0;--y:0;transition:opacity .4s;z-index:3}
.suite-views{position:absolute;top:16px;left:50%;transform:translateX(-50%);display:flex;gap:4px;padding:4px;border-radius:999px;background:rgba(255,255,255,.7);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);z-index:4;box-shadow:0 6px 18px rgba(176,42,98,.15)}
.suite-views button{border:0;background:none;border-radius:999px;padding:8px 14px;font-size:14px;font-weight:600;color:var(--ink-soft)}
.suite-views button.on{background:var(--pink);color:#fff}
.suite-hint{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);margin:0;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--pink-deep);background:rgba(255,255,255,.65);padding:6px 12px;border-radius:999px;z-index:4;animation:breathe 3s ease-in-out infinite;pointer-events:none}
.suite.immersive .suite-photos{display:none}
.suite-stage:not(.ready) .suite-views,.suite-stage:not(.ready) .suite-hint{opacity:0}
.suite-hint .finger{display:inline-block;font-size:16px;margin-right:6px;animation:swipe 1.8s ease-in-out infinite}
@keyframes swipe{0%,100%{transform:translateX(-10px) rotate(-8deg)}50%{transform:translateX(10px) rotate(8deg)}}
.suite-stage.touched .suite-hint{opacity:0;transition:opacity .6s}
