/* Yiti: shared rhythm, imagery and restrained movement. */
:root{
 --content:1200px;--gutter:clamp(20px,4.4vw,64px);
 --section-space:clamp(64px,7.6vw,108px);--image-radius:24px;
 --line:#465b3130;--ease:cubic-bezier(.22,1,.36,1);--duration:420ms;
}
html{scroll-padding-top:calc(var(--header) + 30px)}
.wrap{width:min(var(--content),calc(100% - var(--gutter)*2));margin-inline:auto}
.header-inner{width:min(1320px,calc(100% - var(--gutter)*2));gap:24px}
.section{padding-block:var(--section-space)}
h1,h2,h3{text-wrap:balance}
p{overflow-wrap:break-word}
.eyebrow{margin-bottom:22px}
.button{border-radius:999px;transition:background var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}
.button.primary:hover{background:var(--green);color:var(--white);box-shadow:none}
.button.text{border-radius:0;box-shadow:none}
.link-label{transition:background-size var(--duration) var(--ease)}
.page-intro{padding-block:72px 52px}
.page-intro h1{font-size:clamp(48px,6.2vw,84px);line-height:1.12;max-width:1020px}
.page-intro>p:not(.eyebrow){margin-top:24px;max-width:650px}
/* Keep the original, centred, full-frame hero composition. */
.home .qi-stage{min-height:0}
.home .qi-media{border:0}
.home .hero-copy{transform:none}
.home .hero-copy h1{font-size:clamp(42px,5.5vw,78px);line-height:1.14;max-width:1000px}
.home .hero-actions{margin-top:30px}
.home .hero-actions .primary{padding:15px 28px}
/* The curved edge is part of the arriving content, not a video overlay. */
.home .welcome{width:100%;padding-inline:max(var(--gutter),calc((100% - var(--content))/2));padding-top:72px;padding-bottom:var(--section-space);column-gap:9%;margin-top:-28px}
.home .welcome:before{top:-52px;height:calc(100% + 52px)}
.welcome-photo{padding:0;width:100%;max-width:none}
.welcome-photo>img{aspect-ratio:5/5.3;border-radius:var(--image-radius);object-position:center}
.yiti-seal{width:112px;height:112px;right:-24px;bottom:28px}
.welcome-copy h2{font-size:clamp(43px,4.6vw,66px);line-height:1.12;margin-bottom:28px}
.welcome-copy>p:not(.eyebrow):not(.lead){max-width:490px}
html body .welcome-copy .lead{font-size:22px!important;line-height:1.6;color:var(--green)}
.quote-section{padding-block:var(--section-space)}
.quote-section blockquote{font-size:clamp(48px,7vw,94px);line-height:1.12;letter-spacing:-.035em}
.quote-section p:not(.eyebrow){max-width:640px}
.personal{column-gap:9%;align-items:start}
.personal h2{font-size:clamp(44px,4.6vw,66px);line-height:1.12}
.personal-copy>p:not(.eyebrow){margin-top:25px}
.personal-photo{padding-top:0}
.personal-photo>img,.about-layout figure>img{aspect-ratio:4/5;border-radius:240px 240px var(--image-radius) var(--image-radius);object-position:50% 35%}
.personal-photo figcaption{display:block;margin-top:20px;font-size:25px;line-height:1.4}
.personal-photo figcaption span{display:block;margin-top:6px}
.accordion{margin-top:28px}
.accordion summary{padding-block:21px;min-height:70px}
.accordion p{margin-right:30px;margin-bottom:23px}
.accordion summary>span{transition:transform var(--duration) var(--ease)}
/* Applications: lead image, wide warmth chapter, paired treatments, final detail. */
.service-list{padding-top:64px;padding-bottom:0}
.service-row{grid-template-columns:1fr 1fr;gap:9%;padding-block:0 var(--section-space);margin:0;align-items:center;scroll-margin-top:calc(var(--header) + 28px)}
.service-row figure{margin:0;overflow:hidden;border-radius:var(--image-radius);background:var(--sage)}
.service-row figure>img,.service-row:nth-child(1) figure>img{aspect-ratio:5/4;object-fit:cover;border-radius:0;width:100%;height:auto}
.service-row h2{font-size:clamp(40px,4.1vw,58px);line-height:1.15;margin:20px 0 24px}
.service-row .tcm-icon{width:40px;height:40px;margin-bottom:0}
.service-row p:not(.eyebrow){max-width:570px}
.service-row p.service-tags{margin:27px 0 0;padding-top:18px;border-top:1px solid var(--line);letter-spacing:0}
.service-feature{display:block}
.service-feature>figure{width:100%;margin-bottom:34px}
.service-feature>figure>img{aspect-ratio:2.5/1;object-position:50% 55%}
.service-feature>div{display:grid;grid-template-columns:1fr 1.2fr;column-gap:10%;align-items:start}
.service-feature .tcm-icon{grid-column:1;grid-row:1}
.service-feature h2{grid-column:1;grid-row:2;margin-top:13px}
.service-feature>div>p:not(.service-tags){grid-column:2;grid-row:1/span 2;margin:0}
.service-feature>div>p.service-tags{grid-column:2;margin-top:24px}
.service-pair{display:grid;grid-template-columns:1fr 1fr;gap:6%;margin-bottom:var(--section-space);padding:42px;background:#e0e5d4;border-radius:var(--image-radius)}
.service-pair .service-row{display:flex;flex-direction:column;align-items:stretch;gap:27px;padding:0}
.service-pair .service-row>figure,.service-pair .service-row>div{order:initial}
.service-pair .service-row figure>img{aspect-ratio:4/3}
.service-pair .service-row figure{border-radius:18px}
.service-pair .service-row h2{font-size:clamp(36px,3.5vw,48px);margin-top:15px}
.service-pair .service-row p{margin-bottom:0}
.service-pair .service-row .service-tags{margin-top:25px}
.service-list>#akupressur{padding-bottom:var(--section-space)}
.service-list>#akupressur>figure{order:2}
.service-list>#akupressur>div{order:1}
/* One text column for the first visit, as requested. */
.visit-calm.visit-prose{display:block;padding-block:var(--section-space);border-top:1px solid var(--line)}
.visit-prose>header{max-width:840px;margin-bottom:25px}
.visit-prose h2{font-size:clamp(44px,5.1vw,68px);line-height:1.14;margin-bottom:24px}
.visit-prose-copy{max-width:840px}
.visit-prose-copy h3{margin-top:30px}
.rates-editorial{padding-block:var(--section-space);background:#e3dccb;scroll-margin-top:var(--header)}
.rates-heading{align-items:end;gap:8%;margin-bottom:46px}
.rates-heading h2{font-size:clamp(44px,4.6vw,66px);line-height:1.14}
.rates-heading>p{max-width:350px;flex:0 0 32%}
.rates-list th,.rates-list td{padding-block:26px}
.rates-list th{font-size:29px}
.rates-list td{font-size:42px}
.rates-bottom{gap:8%;margin-top:28px}
.cancellation-visible h3{font-size:23px}
.information{column-gap:9%;padding-block:var(--section-space)}
.information h3{font-size:33px;line-height:1.2;margin-bottom:23px}
.information>div{max-width:540px}
/* Biography and contact share the same grid and portrait treatment. */
.about-layout{grid-template-columns:1fr 1.2fr;gap:9%;padding-bottom:var(--section-space)}
.about-layout figure{position:static;top:auto;align-self:start}
.about-layout article{padding-top:0}
.about-layout h2{font-size:clamp(39px,3.7vw,54px);line-height:1.16}
.about-layout figcaption{font-size:16px;line-height:1.6}
.timeline>div{padding-block:23px;gap:22px;grid-template-columns:110px 1fr}
.booking-layout{grid-template-columns:1.4fr 1fr;column-gap:9%;padding-bottom:var(--section-space)}
.booking-main{border-radius:var(--image-radius);overflow:hidden;background:#e5e8d9;border:1px solid #465b3126}
.booking-consent{padding:46px 34px;background:transparent}
.booking-consent h2{font-size:clamp(38px,3.5vw,50px);line-height:1.15}
.booking-aside{padding-top:0}
.booking-aside h2{font-size:clamp(40px,4vw,58px);line-height:1.15}
.booking-heading{padding:22px 26px;flex-wrap:wrap;gap:8px 20px}
.contact-direct{grid-template-columns:1fr 1.2fr;gap:9%;padding-block:var(--section-space)}
.contact-direct h2{font-size:clamp(44px,4.6vw,66px);line-height:1.14}
.contact-direct>div>a{font-size:clamp(23px,2.3vw,32px);overflow-wrap:anywhere}
.footer{padding-top:64px;border-top:1px solid var(--line)}
.footer-main{column-gap:7%;padding-bottom:46px;grid-template-columns:1.3fr 1fr 1.1fr}
.footer-main p{font-size:24px!important;max-width:320px;line-height:1.5!important}
.footer-bottom{padding-block:20px}
.motion-ready [data-reveal]{transform:translateY(16px);transition:opacity 600ms var(--ease),transform 600ms var(--ease)}
.motion-ready [data-reveal].revealed{opacity:1;transform:none}
@media(max-width:1000px){
 .service-pair{padding:28px;gap:5%}
 .personal,.welcome{column-gap:7%}
 .booking-layout{column-gap:6%;grid-template-columns:1.2fr 1fr}
 .booking-consent{padding:34px 24px}
 .footer-main{gap:28px}
}
@media(max-width:700px){
 :root{--gutter:22px;--section-space:64px;--image-radius:20px}
 .header-inner{gap:16px}
 .page-intro{padding-block:48px 38px}
 .page-intro h1{font-size:clamp(42px,10vw,56px)}
 .home .hero-copy h1{font-size:clamp(34px,8vw,48px)!important;line-height:1.16}
 .home .welcome{padding-top:35px;gap:38px;margin-top:-14px}
 .home .welcome:before{top:-28px;height:calc(100% + 28px)}
 .welcome-photo{width:100%;max-width:100%}
 .welcome-photo>img{aspect-ratio:5/4.8}
 .yiti-seal{right:16px;bottom:18px;width:94px;height:94px}
 .welcome-copy h2,.personal h2{font-size:46px}
 .personal{gap:38px}
 .personal-photo{width:100%;max-width:440px}
 .personal-photo>img{aspect-ratio:4/4.7}
 .service-list{padding-top:32px}
 .service-row{grid-template-columns:1fr;gap:28px;padding-bottom:var(--section-space)}
 .service-row:nth-child(even)>figure,.service-row:nth-child(even)>div,.service-list>#akupressur>figure,.service-list>#akupressur>div{order:initial}
 .service-row h2{font-size:44px;margin:15px 0 20px}
 .service-row figure>img{aspect-ratio:5/4}
 .service-feature{display:block}
 .service-feature>figure{margin-bottom:28px}
 .service-feature>figure>img{aspect-ratio:5/4}
 .service-feature>div{display:block}
 .service-pair{grid-template-columns:1fr;padding:24px;gap:44px;margin-bottom:var(--section-space)}
 .service-pair .service-row{gap:24px}
 .service-pair .service-row h2{font-size:38px}
 .service-pair .service-row figure{border-radius:14px}
 .visit-prose h2{font-size:44px}
 .rates-heading{display:block;margin-bottom:32px}
 .rates-heading h2{font-size:46px;overflow-wrap:anywhere}
 .rates-heading>p{max-width:100%;margin-top:24px}
 .rates-list th{font-size:25px}
 .rates-list td{font-size:34px}
 .rates-bottom{grid-template-columns:1fr;gap:25px}
 .information{grid-template-columns:1fr;gap:42px}
 .about-layout{grid-template-columns:1fr;gap:38px}
 .about-layout figure{max-width:440px;width:100%;position:static}
 .about-layout h2{font-size:42px}
 .timeline>div{grid-template-columns:95px 1fr;gap:18px}
 .booking-layout{grid-template-columns:1fr;gap:40px}
 .booking-consent{padding:34px 24px}
 .booking-aside h2{font-size:46px}
 .contact-direct{grid-template-columns:1fr;gap:22px}
 .contact-direct h2{font-size:46px}
 .footer{padding-top:48px}
 .footer-main{grid-template-columns:1fr 1fr;gap:28px 20px;padding-bottom:32px}
 .footer-main>div:first-child{grid-column:1/-1}
 .footer-bottom{align-items:flex-start;gap:12px}
 .footer-bottom>div{gap:22px}
}
@media(max-width:370px){
 .footer-main{grid-template-columns:1fr}
 .service-pair{padding:20px}
 .rates-list th{font-size:23px}
 .rates-list td{font-size:30px;padding-left:12px}
 .rates-heading h2{font-size:40px}
}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}
 .motion-ready [data-reveal]{opacity:1;transform:none}
 .home .welcome{margin-top:0}
 .home .welcome:before{top:0;height:100%;border-radius:0}
 .home .hero-copy{opacity:1!important;transform:none!important;pointer-events:auto!important}
}
html body .service-row p.service-tags{font-size:16px!important;line-height:1.7}
/* Preserve the full moxa gesture in a larger, contrasting chapter. */
.service-feature{display:grid;grid-template-columns:1fr 1fr;gap:8%;padding:42px;margin-bottom:var(--section-space);background:var(--green);border-radius:var(--image-radius);color:var(--paper)}
.service-feature>figure{margin:0}
.service-feature>figure>img{aspect-ratio:3/4;object-position:center}
.service-feature>div{display:block}
.service-feature h2{color:var(--paper);margin:20px 0 26px}
.service-feature p:not(.eyebrow){color:var(--paper)}
.service-feature .tcm-icon{color:var(--paper)}
.service-feature>div>p.service-tags{border-color:#eee6d74d;margin-top:28px}
@media(max-width:700px){.service-feature{grid-template-columns:1fr;gap:28px;padding:24px;margin-bottom:var(--section-space)}.service-feature>figure>img{aspect-ratio:3/4}.service-feature h2{font-size:40px}.service-feature>div>p:not(.service-tags){margin-bottom:0}}

/* Applications use one calm, consistent image-and-copy composition. */
.service-list{padding-top:64px}
.service-list>.service-row{display:grid;grid-template-columns:1fr 1fr;gap:9%;padding:0 0 72px;margin:0 0 72px;background:transparent;border-radius:0;border-bottom:1px solid var(--line)}
.service-list>.service-row:last-child{margin-bottom:0;border-bottom:0;padding-bottom:72px}
.service-list>.service-row>figure{order:initial;width:100%;margin:0;border-radius:20px;background:var(--sage)}
.service-list>.service-row>figure>img{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:50% 50%;border-radius:0}
.service-list>.service-row#tuina>figure>img{object-position:50% 50%}
.service-list>.service-row#moxa>figure>img{object-position:50% 58%}
.service-list>.service-row>div{order:initial;display:block;max-width:540px}
.service-list>.service-row h2{font-size:clamp(38px,4vw,54px);line-height:1.15;margin:20px 0 24px}
.service-list>.service-row:nth-child(even)>figure{order:2}
.service-list>.service-row:nth-child(even)>div{order:1}
.service-list>.service-row .service-tags{margin-top:26px}
@media(max-width:700px){
 .service-list{padding-top:32px}
 .service-list>.service-row{grid-template-columns:1fr;gap:28px;padding-bottom:44px;margin-bottom:44px}
 .service-list>.service-row:last-child{padding-bottom:44px}
 .service-list>.service-row>figure,.service-list>.service-row:nth-child(even)>figure,.service-list>.service-row>div,.service-list>.service-row:nth-child(even)>div{order:initial}
 .service-list>.service-row>figure>img{aspect-ratio:5/4}
 .service-list>.service-row#moxa>figure>img{aspect-ratio:1/1}
 .service-list>.service-row h2{font-size:40px;margin-top:15px;margin-bottom:20px}
}

/* Portrait and introduction form one complete chapter; longer biography continues below. */
.about-composed{grid-template-columns:1fr 1.15fr;gap:58px 8%;align-items:center}
.about-composed>figure{position:static;top:auto;align-self:center;max-width:100%;width:100%}
.about-composed>figure>img{aspect-ratio:3/4;width:100%;height:auto;border-radius:24px;object-fit:cover;object-position:center}
.about-composed>article{padding:0}
.about-composed h2{font-size:clamp(36px,3.6vw,50px);margin-bottom:26px}
.about-composed article>p:last-child{margin-bottom:0}
.about-continuation{grid-column:1/-1;display:grid;grid-template-columns:1.4fr 1fr;gap:8%;padding-top:44px;border-top:1px solid var(--line);align-items:start}
.about-study p{color:var(--muted);margin-bottom:0}
.about-continuation .timeline{margin:0}
.about-continuation .timeline>div:first-child{border-top:0;padding-top:0}
@media(max-width:700px){.about-composed{grid-template-columns:1fr;gap:34px}.about-composed>figure{max-width:420px;margin-inline:auto}.about-composed>figure>img{aspect-ratio:4/4.7;border-radius:20px;object-position:50% 55%}.about-composed h2{font-size:40px}.about-continuation{grid-template-columns:1fr;gap:30px;padding-top:30px}}
/* Final responsive audit: readable tablet navigation and balanced content columns. */
.legal-page .page-intro h1{hyphens:manual;overflow-wrap:normal}
.service-list>.service-row{padding-bottom:52px;margin-bottom:52px}
@media(max-width:900px){
 :root{--header:76px}
 .header-inner{gap:20px}
 .brand>span{font-size:25px}
 .brand img{width:39px;height:39px}
 .brand{gap:9px}
 html body .brand small{font-size:10px}
 .menu-toggle{display:flex;align-items:center;gap:12px;background:none;border:0;padding:10px 0 10px 10px;min-height:44px}
 .menu-toggle svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.3}
 html body .header nav{display:none;position:absolute;top:calc(var(--header) - 1px);left:0;right:0;padding:16px var(--gutter) 25px;background:var(--paper);border-bottom:1px solid var(--line);box-shadow:0 18px 20px #2636240c}
 html body .header nav.open{display:flex;flex-direction:column;align-items:stretch;gap:0}
 html body .header nav>a:not(.button){font-size:18px;padding:14px 0;min-height:48px;border-bottom:1px solid var(--line);background-image:none}
 html body .header nav .button{font-size:17px!important;min-height:52px;margin-top:20px;margin-left:0;padding:14px 22px}
 .about-composed{grid-template-columns:1fr;gap:36px}
 .about-composed>figure{max-width:440px;margin-inline:auto;align-self:start}
 .about-composed>figure>img{aspect-ratio:4/4.7;object-position:50% 55%}
 .about-composed>article{max-width:720px}
 .about-continuation{grid-template-columns:1fr;gap:32px}
 .about-continuation .timeline{max-width:650px;width:100%}
 .booking-layout{grid-template-columns:1fr;gap:44px}
 .booking-main{max-width:720px;width:100%;margin-inline:auto}
 .booking-consent p{max-width:460px}
 .booking-aside{max-width:650px}
 .contact-direct{grid-template-columns:1fr;gap:28px}
 .contact-direct>div:last-child{padding-top:0}
 .home .welcome{grid-template-columns:1fr;gap:40px}
 .welcome-photo{max-width:480px;margin-inline:auto}
 .welcome-copy{max-width:700px}
 .welcome-copy>p:not(.eyebrow):not(.lead){max-width:100%}
 .personal{grid-template-columns:1fr;gap:40px}
 .personal-photo{max-width:440px;width:100%;margin-inline:auto}
 .rates-heading{display:block}
 .rates-heading>p{max-width:650px;margin-top:28px}
 .rates-bottom{grid-template-columns:1fr;gap:25px}
 .rates-bottom>.small{max-width:650px}
 .information{grid-template-columns:1fr;gap:42px}
 .information>div{max-width:700px}
 .footer-main{grid-template-columns:1fr 1fr;gap:30px}
 .footer-main>div:first-child{grid-column:1/-1}
}
@media(max-width:700px){
 .service-list>.service-row{padding-bottom:40px;margin-bottom:40px}
 .service-list>.service-row:last-child{padding-bottom:40px}
 .legal-page .page-intro h1{font-size:clamp(36px,9.4vw,54px);line-height:1.15}
}
@media(max-width:370px){.footer-main{grid-template-columns:1fr}}

.about-study p+p{margin-top:1.2em}

.error-page .page-intro{min-height:60svh;padding-block:80px}.error-page .page-intro .button{margin-top:8px}
@media(max-width:900px){.menu-toggle{font-size:16px}}
/* Continue the alternating image sides after Gua Sha. */
.service-list>.service-row#akupressur>figure{order:0}
.service-list>.service-row#akupressur>div{order:1}
@media(max-width:700px){.service-list>.service-row#akupressur>figure,.service-list>.service-row#akupressur>div{order:initial}}

/* Existing hand-drawn symbols trace their own strokes. */
.tcm-icon.symbol-pending :is(path,circle,ellipse,line,polyline,polygon,rect){stroke-dasharray:1;stroke-dashoffset:1}
.tcm-icon.symbol-drawn :is(path,circle,ellipse,line,polyline,polygon,rect){stroke-dasharray:1;animation:yiti-symbol-draw 800ms var(--ease) both;animation-delay:var(--stroke-delay,0ms)}
@keyframes yiti-symbol-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
/* Hover motion stays inside the image frame and only runs on pointer devices. */
@media(hover:hover) and (pointer:fine){
 .service-list>.service-row>figure>img{transition:transform 650ms var(--ease);transform-origin:50% 50%}
 .service-list>.service-row>figure:hover>img{transform:scale(1.025)}
}
/* Keep expanded information on the page background. */
.accordion details{border-radius:12px;background-color:transparent}
.accordion details+details{margin-top:7px}
.accordion details.is-expanded{background-color:transparent}
.accordion summary{padding-inline:18px}
.accordion details p{margin-left:18px;margin-right:18px}
@media(prefers-reduced-motion:reduce){
 .tcm-icon :is(path,circle,ellipse,line,polyline,polygon,rect){animation:none!important;stroke-dasharray:none!important;stroke-dashoffset:0!important}
 .service-list>.service-row>figure:hover>img{transform:none}
 .accordion details{transition:none}
}
/* Keep the navigation underline close to the text baseline. */
@media(min-width:901px){
 .header #navigation>a:not(.button){background-position:left calc(50% + .65em)}
}

/* Cal.com uses the same beige surfaces and green accents as the website. */
.booking-main,.booking-container,#cal-inline,.booking-backup{background:#eee6d7}
#cal-inline{width:100%;min-height:560px;overflow:auto}
#cal-inline iframe{width:100%;border:0;background:#eee6d7;color-scheme:light}
.booking-backup{padding:16px 24px;font-size:16px;color:#465b31}
@media(max-width:700px){#cal-inline{min-height:620px}}

/* Buttons retain their base colours on hover; underline and focus indicate interaction. */
.button.primary:hover,.button.primary:focus-visible{background:var(--green);color:var(--white);filter:none}

/* Keep booking buttons at their original green across all pointer states. */
.button.primary,.button.primary:hover,.button.primary:active,.home .hero-actions .button.primary,.home .hero-actions .button.primary:hover,.home .hero-actions .button.primary:active{background-color:#465b31!important;filter:none!important;box-shadow:none!important}

/* Compact mobile navigation, anchored to the menu button. */
@media(max-width:900px){
 html body .header nav{display:flex;flex-direction:column;align-items:stretch;gap:0;left:auto;right:var(--gutter);top:calc(var(--header) + 10px);width:min(300px,calc(100% - var(--gutter)*2));max-height:calc(100dvh - var(--header) - 32px);overflow-y:auto;padding:12px 16px 16px;border:1px solid #465b3133;border-radius:18px;background:var(--paper);box-shadow:0 12px 32px #26362420;opacity:0;visibility:hidden;transform:translateY(-6px);pointer-events:none;transition:opacity 160ms ease,transform 160ms ease,visibility 160ms}
 html body .header nav.open{gap:0;opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}
 html body .header nav>a:not(.button){font-size:18px;padding:10px 8px;min-height:46px;border-bottom:0;border-radius:8px;background-image:none!important;line-height:1.5}
 html body .header nav>a[aria-current]:not(.button){text-decoration:underline;text-underline-offset:5px}
 html body .header nav>a:not(.button):hover{text-decoration:underline;text-underline-offset:5px}
 html body .header nav .button{min-height:48px;margin:10px 0 0;padding:12px 16px;font-size:17px!important;justify-content:center}
}
@media(prefers-reduced-motion:reduce){html body .header nav{transition:none;transform:none}}
