:root{
  --bg:#FEF5F9; --ink:#222A36; --beige:#DCCBC3;
  --g:40px; --ease:cubic-bezier(.16,1,.3,1);
  --ff:"Inter Tight", "Helvetica Neue", Arial, sans-serif;
}
@media (max-width:767px){ :root{ --g:16px; } }
*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--bg);-webkit-text-size-adjust:100%}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}
html.gated,html.gated body{overflow:hidden;overscroll-behavior:none}
body{background:var(--bg);color:var(--ink);font-family:var(--ff);font-weight:700;text-transform:uppercase;overflow-x:hidden;line-height:1;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;text-transform:inherit}
::selection{background:var(--ink);color:var(--bg)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* split helpers */
.w{display:inline-flex;white-space:nowrap}
.ch{position:relative;display:inline-block;overflow:hidden;padding-bottom:.15em;margin-bottom:-.15em;vertical-align:top}
.chi{display:inline-block;white-space:pre;will-change:transform}
.ln{display:block;overflow:hidden;padding-bottom:.12em;margin-bottom:-.12em}
.lni{display:block;white-space:nowrap;will-change:transform}
.lni.jst{display:flex;justify-content:space-between}
.lni.cen{text-align:center}
[data-lines] .lni{transform:translateY(120%)}
[data-lines].on .lni{transform:none;transition:transform 1s var(--ease);transition-delay:calc(var(--i) * 70ms)}
[data-chars] .chi{transform:translateY(105%)}
[data-chars].on .chi{transform:none;transition:transform .8s var(--ease);transition-delay:calc(var(--i) * 22ms)}

/* curtain */
.curtain{position:fixed;inset:0;z-index:99999;pointer-events:none}
.curtain i{position:absolute;left:0;width:100%;height:50%;background:var(--bg);pointer-events:auto}
.curtain i:first-child{top:0}.curtain i:last-child{bottom:0}

/* giant fixed title */
.title{position:fixed;left:0;top:0;width:100%;z-index:5;text-align:center;pointer-events:none;will-change:transform}
.title .big{display:inline-block;white-space:nowrap;letter-spacing:-.01em}
.big{font-weight:800;line-height:.92;font-size:13vw}

/* emblem under title (preloader) */
.pre-emb{position:fixed;left:50%;top:50%;z-index:6;width:clamp(34px,3.1vw,56px);margin-left:calc(clamp(34px,3.1vw,56px) / -2);opacity:0;pointer-events:none}
.emb svg{display:block;width:100%;height:auto}

/* hero */
.hero{position:fixed;inset:0;z-index:100;pointer-events:none;will-change:transform}
.hero-box{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--ink);overflow:hidden;width:86.6vw;height:60vh}
.hero-box img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.06)}
.hero-box .shade{position:absolute;inset:0;background:#111;opacity:0}
.hero-cap{position:absolute;left:0;width:100%;bottom:80px;text-align:center;font-size:clamp(14px,1.56vw,22px)}
.hero-hint{position:absolute;left:0;width:100%;bottom:40px;text-align:center;font-size:11px;letter-spacing:.14em;opacity:0}
.hero-spacer{height:100vh;height:100dvh}

/* fixed marquee */
.mq{position:fixed;left:0;bottom:0;width:100%;height:100px;z-index:200;pointer-events:none;overflow:hidden;mix-blend-mode:difference;opacity:0}
.mq-row{position:absolute;bottom:20px;left:0;width:100%;overflow:hidden;white-space:nowrap;padding:12px 0;color:var(--beige)}
.mq-track{display:inline-flex;animation:marquee 26s linear infinite}
.mq-track span{display:inline-flex;align-items:center;gap:28px;padding-right:28px;font-size:16.5px;text-transform:none;white-space:nowrap}
.mq-track span b{font-weight:700;text-transform:uppercase}
.mq-track span i{display:inline-block;width:36px;height:3px;background:currentColor}
@keyframes marquee{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

/* emblem button */
.emb-btn{position:fixed;left:0;top:50%;z-index:500;width:clamp(40px,3.125vw,60px);cursor:pointer;mix-blend-mode:difference;color:var(--beige);opacity:0;transform:translate(-10.4vw,-50%) scale(.8)}
.emb-btn:focus-visible{outline:2px solid var(--beige);outline-offset:6px}

/* badge */
.badge{position:fixed;right:12px;top:auto;bottom:108px;z-index:600;background:var(--ink);color:var(--bg);font-size:11px;letter-spacing:.06em;padding:8px 12px;text-transform:none;font-weight:600;transition:background .3s,color .3s}
.badge:hover{background:var(--bg);color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}

/* media */
.m{position:relative;overflow:hidden;clip-path:inset(0% 0%);transition:clip-path .7s var(--ease);background:#e9dde2}
.m .mi{position:absolute;inset:0;transition:transform .7s var(--ease)}
.m img{position:absolute;left:0;top:-6%;width:100%;height:112%;object-fit:cover;will-change:transform}
.m.hov:hover{clip-path:inset(0% 3%)}
.m.hov:hover .mi{transform:scale(1.04)}
.m.pre{clip-path:inset(14% 10%)}
.m.pre .mi{transform:scale(1.18)}
.m.rvl{transition:clip-path 1.3s var(--ease)}
.m.rvl .mi{transition:transform 1.4s var(--ease)}

/* section: care */
.care{position:relative;z-index:10;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding:0 45px 14vh}
.slide{position:relative;width:15vw;min-width:150px;aspect-ratio:216/270;overflow:hidden;margin-bottom:40px;background:#e9dde2}
.slide img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.25)}
.slide img.on{opacity:1}
.care-lab{font-size:18px;padding-bottom:30px;text-align:center}
.manif{width:100%;font-size:max(15px,2.6vw);line-height:1}

/* quote frame */
.quote{position:relative;z-index:10;padding:20vh var(--g);display:flex;justify-content:center}
.qbox{width:min(720px,100%);border:10px solid var(--ink);padding:40px 24px;text-align:center;font-size:clamp(16px,1.56vw,22px)}

/* services */
.svcs{position:relative;z-index:30}
.svc{display:flex;position:relative}
.svc-l{position:sticky;top:0;height:100vh;height:100dvh;width:33.333%;flex-shrink:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:32px;padding-bottom:15vh;text-align:center}
.svc-name{font-size:clamp(20px,1.67vw,30px);max-width:15ch;line-height:1}
.svc-tag{font-size:14px;margin-top:-12px}
.svc-cover{display:block;width:16.67vw;aspect-ratio:240/358;cursor:pointer}
.svc-r{width:66.667%;flex-shrink:0;display:flex;flex-direction:column;gap:15vh;padding:25vh 0 20vh}
.blk{display:flex;flex-direction:column;gap:6vh}
.wide{width:88%;aspect-ratio:840/509}
.pair{display:flex;gap:0}
.pair>div{flex:1;display:flex}
.pair>div:first-child{justify-content:flex-start}
.pair>div:last-child{justify-content:center}
.pair .m{width:75%;aspect-ratio:362/470}
.pair .lift{transform:translateY(-15vh)}
.txt{max-width:600px;font-size:clamp(14px,1.25vw,18px);line-height:1}
.price-tag{display:inline-block;margin-top:14px;font-size:clamp(14px,1.25vw,18px);border-bottom:3px solid var(--ink);padding-bottom:4px}
.view-btn{display:none}

/* buttons (hover: line -> fill + letters roll) */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:20px 40px;background:var(--bg);color:var(--ink);cursor:pointer;font-size:clamp(16px,1.56vw,26px)}
.btn .fill{position:absolute;inset:10px 0;background:var(--ink);clip-path:inset(50% 0%);transition:clip-path .55s var(--ease);pointer-events:none}
.btn .bt{position:relative;display:inline-block;white-space:nowrap}
.btn:hover .fill,.btn:focus-visible .fill{clip-path:inset(0% 0%)}
.btn.dark{background:var(--ink);color:var(--bg)}
.btn.dark .fill{background:var(--bg)}
.btn:focus-visible{outline:2px solid var(--ink);outline-offset:4px}

/* price list */
.price{position:relative;z-index:30;background:var(--bg);padding:18vh var(--g) 14vh}
.sec-h{font-size:clamp(44px,9vw,150px);font-weight:800;text-align:center;line-height:.92;margin-bottom:8vh}
.sec-sub{text-align:center;font-size:14px;margin:-5vh 0 8vh}
.pgroup{max-width:1200px;margin:0 auto 7vh}
.pgroup h3{font-size:14px;margin-bottom:14px}
.prow{position:relative;display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:18px 12px;border-top:3px solid var(--ink);font-size:clamp(17px,2vw,34px);cursor:pointer;transition:color .45s var(--ease)}
.prow:last-child{border-bottom:3px solid var(--ink)}
.prow::before{content:"";position:absolute;inset:6px 0;background:var(--ink);clip-path:inset(50% 0%);transition:clip-path .55s var(--ease);z-index:-1}
.prow{z-index:0}
.prow:hover{color:var(--bg)}
.prow:hover::before{clip-path:inset(0% 0%)}
.prow .pv{white-space:nowrap}
.prow .pn{min-width:0}

/* masters */
.team{position:relative;z-index:30;padding:14vh var(--g) 10vh}
.team-grid{display:flex;justify-content:center;gap:8vw;max-width:1200px;margin:0 auto}
.mst{width:min(26vw,380px)}
.mst:nth-child(2){margin-top:20vh}
.mst .m{aspect-ratio:362/470;cursor:pointer}
.mst h3{font-size:clamp(20px,1.8vw,30px);margin-top:24px}
.mst p{font-size:14px;margin-top:10px;line-height:1.15}
.team-note{text-align:center;font-size:12px;margin-top:8vh;text-transform:none;font-weight:600}

/* reviews: horizontal pinned */
.revs{position:relative;z-index:30;background:var(--bg);overflow:hidden}
.revs-in{height:100vh;height:100dvh;display:flex;flex-direction:column;justify-content:center}
.revs .sec-h{margin-bottom:6vh}
.track{display:flex;gap:4vw;padding:0 var(--g);width:max-content;will-change:transform}
.rev{width:min(520px,80vw);border:10px solid var(--ink);padding:36px 28px;flex-shrink:0;font-size:clamp(16px,1.5vw,22px);line-height:1.08;display:flex;flex-direction:column;justify-content:space-between;min-height:320px}
.rev small{display:block;margin-top:28px;font-size:13px}
.rev.img{padding:0;border:0;min-height:0;aspect-ratio:4/5;width:min(360px,70vw)}
.rev.img .m{width:100%;height:100%}

/* booking form */
.book{position:relative;z-index:30;background:var(--bg);padding:16vh var(--g) 18vh}
.book-in{max-width:880px;margin:0 auto}
.book form{display:grid;gap:26px;margin-top:2vh}
.fld{display:flex;flex-direction:column;gap:10px}
.fld label{font-size:13px}
.fld select,.fld input{appearance:none;-webkit-appearance:none;width:100%;border:0;border-bottom:3px solid var(--ink);background:transparent;padding:14px 0;font:inherit;font-size:clamp(18px,2vw,30px);text-transform:uppercase;color:var(--ink);border-radius:0}
.fld select{background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 18px) 55%,calc(100% - 10px) 55%;background-size:8px 8px;background-repeat:no-repeat;cursor:pointer}
.fld input::placeholder{color:rgba(34,42,54,.35)}
.fld select:focus,.fld input:focus{outline:none;border-bottom-color:#8a6f7a}
.book .row2{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.book .send{justify-self:center;margin-top:3vh}
.demo-msg{display:none;text-align:center;border:6px solid var(--ink);padding:26px 20px;font-size:clamp(15px,1.4vw,20px);line-height:1.15;margin-top:4vh}
.demo-msg.show{display:block}
.fine{text-transform:none;font-weight:500;font-size:12px;text-align:center;opacity:.7}

/* footer */
.foot{position:relative;z-index:40;background:var(--ink);color:var(--bg);display:flex;flex-direction:column;align-items:center;overflow:hidden}
.foot .big{display:inline-block;white-space:nowrap;margin-top:40px;line-height:.9;letter-spacing:-.01em}
.foot .btn{margin-top:10vh}
.foot .emb{width:clamp(56px,6vw,90px);margin-top:9vh;color:var(--bg)}
.foot-info{margin-top:6vh;text-align:center;font-size:13px;line-height:1.5;text-transform:none;font-weight:600;padding:0 var(--g);opacity:.85}
.foot-mq{position:relative;width:100%;height:100px;margin-top:4vh;overflow:hidden}
.foot-mq .mq-row{color:var(--bg)}
.loop{position:relative;z-index:40;height:70vh;display:flex;align-items:center;justify-content:center;background:var(--bg);font-size:14px;text-align:center}
.loop-s{position:absolute;bottom:0;left:0;width:100%;height:2px}

/* cursor label */
.cur{position:fixed;left:0;top:0;z-index:1000001;pointer-events:none;mix-blend-mode:difference;background:var(--bg);color:#000;font-size:13px;padding:8px 10px;transform:translate(-50%,-50%) scale(0);transition:transform .45s var(--ease);will-change:left,top}
.cur.on{transform:translate(-50%,-50%) scale(1)}
@media (hover:none),(pointer:coarse){.cur{display:none}}

/* menu */
.menu{position:fixed;inset:0;z-index:800;background:var(--bg);clip-path:inset(50% 0%);visibility:hidden;display:flex;flex-direction:column;justify-content:center;padding:0 var(--g)}
.menu.open{visibility:visible}
.menu nav{display:flex;flex-direction:column;align-items:center;gap:1.2vh}
.menu nav a{font-size:clamp(40px,7.6vw,120px);font-weight:800;line-height:.95;display:inline-flex;align-items:flex-start;gap:14px}
.menu nav a sup{font-size:14px;font-weight:700;margin-top:.5em}
.menu .again{margin-top:6vh;align-self:center;font-size:13px;border-bottom:2px solid var(--ink);padding-bottom:4px}
.menu-x{position:absolute;top:18px;right:var(--g);font-size:14px;padding:10px}

/* fly clone (shared-element transition) */
.fly{position:fixed;z-index:950;overflow:hidden;pointer-events:none;background:var(--ink)}
.fly img{width:100%;height:100%;object-fit:cover}

/* service page overlay */
.sp{position:fixed;inset:0;z-index:900;background:var(--bg);overflow-y:auto;overflow-x:hidden;visibility:hidden;overscroll-behavior:contain}
.sp.open{visibility:visible}
.sp-head{position:sticky;top:0;z-index:5;display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px var(--g) 14px;background:var(--bg);text-align:center}
.sp-head b{font-size:clamp(14px,1.2vw,18px)}
.sp-head small{font-size:11px}
.sp-x{position:absolute;right:var(--g);top:14px;font-size:22px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;transition:transform .5s var(--ease)}
.sp-x:hover{transform:rotate(90deg)}
.sp-lead{font-size:clamp(20px,2.3vw,40px);text-align:center;max-width:980px;margin:8vh auto 6vh;padding:0 var(--g)}
.sp-hero{width:calc(100% - 2 * var(--g));max-width:1240px;margin:0 auto;aspect-ratio:1.91}
.sp-hero .m{width:100%;height:100%}
.sp-body{max-width:1240px;margin:0 auto;padding:12vh var(--g);display:grid;grid-template-columns:1fr 1fr;gap:8vh 6vw;align-items:start}
.sp-body .txt{max-width:none}
.sp-body .m{aspect-ratio:362/470}
.sp-body .lift{margin-top:18vh}
.sp-list{grid-column:1/-1}
.sp-cta{grid-column:1/-1;display:flex;justify-content:center;margin-top:2vh}
.sp-next{position:relative;cursor:pointer}
.sp-next .m{height:70vh}
.sp-next .m img{filter:brightness(.82)}
.sp-next-lab{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);text-align:center;color:var(--bg);font-size:clamp(28px,5vw,80px);font-weight:800;z-index:2;pointer-events:none}
.sp-band{background:var(--ink);padding:40px 0 70px;display:flex;justify-content:center}

/* ---------- mobile ---------- */
@media (max-width:767px){
  .care{padding:0 var(--g) 16vh}
  .slide{width:46vw}
  .care-lab{font-size:14px}
  .qbox{border-width:6px;padding:28px 14px}
  .svc{flex-direction:column;padding:10vh var(--g) 0}
  .svc-l{position:relative;height:auto;width:100%;padding:0 0 0;gap:20px}
  .svc-cover{width:62vw}
  .svc-r{width:100%;padding:8vh 0 4vh;gap:8vh;align-items:center;text-align:center}
  .blk{align-items:center}
  .wide{width:100%}
  .pair .m{width:88%}
  .pair .lift{transform:translateY(-6vh)}
  .txt{font-size:13px;max-width:34ch}
  .view-btn{display:inline-flex;margin-top:6px;background:var(--ink);color:var(--bg);font-size:12px;padding:10px 14px}
  .price{padding:14vh var(--g) 10vh}
  .prow{padding:14px 6px;font-size:16px}
  .team-grid{flex-direction:column;align-items:center;gap:10vh}
  .mst{width:78vw}
  .mst:nth-child(2){margin-top:0}
  .revs-in{height:auto;padding:12vh 0}
  .track{overflow-x:auto;width:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:10px;scrollbar-width:none}
  .track::-webkit-scrollbar{display:none}
  .rev{scroll-snap-align:center;min-height:280px;border-width:6px;padding:26px 18px}
  .book .row2{grid-template-columns:1fr}
  .hero-cap{bottom:92px}
  .hero-hint{bottom:118px}
  .sp-body{grid-template-columns:1fr;padding:8vh var(--g)}
  .sp-body .lift{margin-top:0}
  .sp-hero{aspect-ratio:.8}
  .badge{bottom:104px;right:8px;font-size:10px;padding:6px 9px}
  .menu-x{top:12px}
  .emb-btn{top:auto;bottom:112px;width:36px}
}
@media (prefers-reduced-motion:reduce){
  .mq-track{animation-duration:80s}
}
.btn .bt{transition:color .35s var(--ease) .08s}
.btn:hover .bt,.btn:focus-visible .bt{color:var(--bg)}
.btn.dark:hover .bt,.btn.dark:focus-visible .bt{color:var(--ink)}
.view-btn{position:relative;overflow:hidden}
