/* =====================================================================
   Lumiere body & wellness pages: TS Body Sculpting, Duo Wellness Room, Massage.
   Sits on top of tx.css / tx2.css. Static fallback first; motion is CSS loops + bw.js (all disabled for reduced motion).
   ===================================================================== */
.tx{--gr:208,190,133}

/* ---------- shared bits ---------- */
.tx .bw__bring-wrap{background:var(--k-cream2);padding:0 0 clamp(40px,5vw,72px)}
.tx .bw__bring{display:flex;align-items:flex-start;gap:16px;max-width:860px;margin:0 auto;padding:22px 24px;border:1px solid rgba(127,108,52,.4);border-radius:20px;background:#FBF6E8;color:#2C2216}
.tx .bw__bring p{margin:0;font-size:18px;line-height:1.7}
.tx .bw__bring b{color:#6A5A2C}
.tx .bw__bring-ic{flex:none;width:34px;height:34px;color:#7F6C34;display:grid;place-items:center}
.tx .bw__bring-ic svg{width:100%;height:100%}
@keyframes bwRing{0%{transform:scale(.62);opacity:0}25%{opacity:.75}100%{transform:scale(1.28);opacity:0}}
@keyframes bwScan{0%{top:-6%;opacity:0}12%{opacity:1}88%{opacity:1}100%{top:104%;opacity:0}}
@keyframes bwDrift{0%,100%{transform:scale(1.06) translate3d(0,0,0)}50%{transform:scale(1.12) translate3d(-1.5%,1%,0)}}
@keyframes bwTwinkle{0%,100%{opacity:.15;transform:scale(.6)}50%{opacity:1;transform:scale(1)}}
@keyframes bwFloat{0%,100%{translate:0 0}50%{translate:0 -10px}}
@keyframes bwBreath{0%,100%{transform:scale(1);opacity:.55}50%{transform:scale(1.06);opacity:.9}}

/* ================= TS hero (pulse) ================= */
.tx .tsh{position:relative;aspect-ratio:1/1.06;width:100%;max-width:520px;margin-inline:auto;perspective:1000px}
.tx .tsh__ring{position:absolute;left:50%;top:50%;width:86%;aspect-ratio:1;margin:-43% 0 0 -43%;border-radius:50%;border:1px solid rgba(var(--gr),.55);animation:bwRing 6.4s ease-out infinite;pointer-events:none}
.tx .tsh__ring--2{animation-delay:-2.1s}
.tx .tsh__ring--3{animation-delay:-4.2s}
.tx .tsh__p{position:absolute;inset:3% 13% 3% 13%;border-radius:30px;overflow:hidden;box-shadow:0 44px 80px -34px rgba(0,0,0,.9),0 0 0 1px rgba(var(--gr),.5),inset 0 0 0 1px rgba(255,255,255,.05);transform:rotateY(calc(var(--ry,0)*1deg)) rotateX(calc(var(--rx,0)*1deg));transform-style:preserve-3d;will-change:transform}
.tx .tsh__p img{width:100%;height:100%;object-fit:cover}
.tx .tsh__p::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(16,12,8,.5));pointer-events:none}
.tx .tsh__scan{position:absolute;left:0;right:0;height:2px;top:-6%;background:linear-gradient(90deg,transparent,rgba(var(--gr),.95),transparent);box-shadow:0 0 22px 4px rgba(var(--gr),.5);animation:bwScan 5.2s ease-in-out infinite;z-index:2}
.tx .tsh__chip{position:absolute;z-index:3;padding:9px 18px;border-radius:99px;background:rgba(16,12,8,.8);backdrop-filter:blur(8px);border:1px solid rgba(var(--gr),.5);color:var(--g);font-weight:700;font-size:17px;letter-spacing:.04em}
.tx .tsh__chip--a{left:0;top:16%}
.tx .tsh__chip--b{right:0;top:46%}
.tx .tsh__chip--c{left:3%;bottom:10%}
@media (max-width:420px){.tx .tsh__chip{font-size:16px;padding:7px 14px}.tx .tsh__p{inset:3% 11% 3% 11%}}

/* ================= Duo hero (room): the whole room, wide and clear ================= */
.tx .txh--room .txh__h1{font-size:clamp(30px,3.2vw,52px)}
@media (min-width:961px){.tx .txh--room .txh__h1{white-space:nowrap}}
.tx .txh--room .txh__vis{max-width:min(100%,640px)}
@media (min-width:961px){.tx .txh--room .txh__vis{max-width:none}}
@media (max-width:960px){.tx .txh--room .txh__vis{max-width:min(100%,560px)}}
.tx .duh{position:relative;width:100%}
.tx .duh__glow{position:absolute;inset:-8% -6%;background:radial-gradient(55% 55% at 50% 50%,rgba(255,206,130,.26),transparent 72%);animation:bwBreath 8s ease-in-out infinite;pointer-events:none}
.tx .duh__fr{position:relative;aspect-ratio:4/3;border-radius:26px;overflow:hidden;box-shadow:0 50px 90px -40px rgba(0,0,0,.9),0 0 0 1px rgba(var(--gr),.5)}
.tx .duh__fr img{width:100%;height:100%;object-fit:cover;animation:bwDrift 22s ease-in-out infinite}
.tx .duh__fr::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,12,8,.12),transparent 25%,transparent 70%,rgba(16,12,8,.35));pointer-events:none}
.tx .duh__sheen{position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,226,170,.14) 50%,transparent 60%);transform:translateX(-120%);animation:bwSheen 9s ease-in-out infinite;pointer-events:none;z-index:1}
@keyframes bwSheen{0%,55%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
.tx .duh__spark{position:absolute;width:9px;height:9px;border-radius:50%;background:radial-gradient(circle,#fff6d8,rgba(var(--gr),.1) 70%);animation:bwTwinkle 4.6s ease-in-out infinite;pointer-events:none;z-index:2}
.tx .duh__spark--a{left:4%;top:8%}
.tx .duh__spark--b{right:5%;top:16%;animation-delay:-1.6s}
.tx .duh__spark--c{left:46%;bottom:5%;animation-delay:-3s}
@media (max-width:640px){.tx .duh__fr{border-radius:20px}}

/* ================= Massage hero (portal) ================= */
.tx .msh{position:relative;aspect-ratio:1/1.08;width:100%;max-width:500px;margin-inline:auto}
.tx .msh__ring{position:absolute;inset:-3% 2% 2% 2%;border-radius:999px 999px 46px 46px;border:1px solid rgba(var(--gr),.4);animation:bwBreath 9s ease-in-out infinite;pointer-events:none}
.tx .msh__ring--2{inset:-8% -3% -3% -3%;animation-delay:-4.5s;opacity:.6}
.tx .msh__v{position:absolute;inset:2% 6% 8% 6%;border-radius:999px 999px 40px 40px;overflow:hidden;box-shadow:0 44px 90px -36px rgba(0,0,0,.9),0 0 0 1px rgba(var(--gr),.5)}
.tx .msh__v video,.tx .msh__v img{width:100%;height:100%;object-fit:cover}
.tx .msh__dot{position:absolute;left:-2%;bottom:0;width:30%;aspect-ratio:1;border-radius:50%;overflow:hidden;box-shadow:0 22px 44px -18px rgba(0,0,0,.9),0 0 0 3px #1C1814,0 0 0 4px rgba(var(--gr),.55)}
.tx .msh__dot img{width:100%;height:100%;object-fit:cover}

/* ================= TS: what is ================= */
.tx .tsw{position:relative;overflow:hidden;background:radial-gradient(70% 80% at 12% 50%,#2A1F14,#15100B 70%)}
.tx .tsw__glow{position:absolute;left:-12%;top:10%;width:60%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(var(--gr),.16),transparent 66%);pointer-events:none}
.tx .tsw__in{position:relative;display:grid;gap:clamp(30px,5vw,80px);align-items:center}
.tx .tsw__fig{position:relative;max-width:460px;margin-inline:auto;aspect-ratio:4/5;border-radius:30px;overflow:hidden;box-shadow:0 44px 90px -40px rgba(0,0,0,.9),0 0 0 1px rgba(var(--gr),.5);transform:perspective(1000px) rotateY(calc(var(--ry,0)*1deg)) rotateX(calc(var(--rx,0)*1deg))}
.tx .tsw__fig img{width:100%;height:100%;object-fit:cover}
.tx .tsw__pulse{position:absolute;left:50%;top:50%;width:70%;aspect-ratio:1;margin:-35% 0 0 -35%;border-radius:50%;border:1px solid rgba(var(--gr),.7);animation:bwRing 5.4s ease-out infinite;pointer-events:none}
.tx .tsw__txt{position:relative}
.tx .tsw__head{margin-bottom:22px}
.tx .tsw__txt .k-p{color:#EDE4D0;font-size:clamp(18px,1.4vw,20px);line-height:1.75;margin:0 0 18px}
.tx .tsw__beats{list-style:none;margin:26px 0 0;padding:0;display:grid;gap:10px}
.tx .tsw__beats li{display:flex;align-items:center;gap:14px;padding:14px 18px;border:1px solid rgba(var(--gr),.35);border-radius:16px;background:rgba(255,255,255,.03);font-size:18px;font-weight:600;color:var(--k-ivory);line-height:1.45}
.tx .tsw__beats li span{flex:none;width:26px;height:26px;color:var(--g)}
.tx .tsw__beats li span svg{width:100%;height:100%}
@media (min-width:900px){.tx .tsw__in{grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr)}.tx .tsw__fig{margin-inline:0}}

/* ================= TS: pricing ================= */
.tx .tsp{position:relative;overflow:hidden}
.tx .tsp__glow{position:absolute;left:50%;top:-20%;width:80%;aspect-ratio:2/1;translate:-50% 0;border-radius:50%;background:radial-gradient(closest-side,rgba(var(--gr),.14),transparent);pointer-events:none}
.tx .tsp__grid{list-style:none;margin:0 auto;padding:0;display:grid;gap:14px;max-width:1100px;position:relative}
.tx .tsp__c{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px;border-radius:22px;border:1px solid rgba(var(--gr),.35);background:linear-gradient(160deg,#2A2016,#1C1814 75%);color:var(--k-ivory);transition:box-shadow .7s,border-color .7s}
.tx .tsp__c h3{margin:0;font-size:22px;line-height:1.25;color:var(--k-ivory)}
.tx .tsp__sub{margin:4px 0 0;font-size:18px;color:var(--k-muted-l)}
.tx .tsp__bot{text-align:right}
.tx .tsp__price{margin:0;font-size:clamp(30px,8vw,38px);font-weight:800;letter-spacing:-.03em;line-height:1.1;background:var(--k-grad);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.tx .tsp__per{margin:4px 0 0;font-size:18px;color:var(--k-muted-l)}
.tx .tsp__c--hero{background:linear-gradient(160deg,#D8C68E,#B9A15F);border-color:#E8DAAA;color:#241B12}
.tx .tsp__c--hero h3,.tx .tsp__c--hero .tsp__sub,.tx .tsp__c--hero .tsp__per{color:#241B12}
.tx .tsp__c--hero .tsp__price{background:none;color:#241B12;-webkit-text-fill-color:#241B12}
.tx .tsp__grid.is-in .tsp__c--hero{box-shadow:0 0 0 1px rgba(var(--gr),.7),0 30px 70px -26px rgba(var(--gr),.55)}
.tx .tsp__grid.is-in .tsp__c:not(.tsp__c--hero){border-color:rgba(var(--gr),.55)}
.tx .tsp__btn{margin-top:clamp(28px,4vw,46px);text-align:center}
@media (min-width:640px){.tx .tsp__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1000px){
	.tx .tsp__grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
	.tx .tsp__c{flex-direction:column;align-items:stretch;justify-content:space-between;min-height:250px;padding:28px 26px;text-align:left}
	.tx .tsp__c h3{font-size:24px}
	.tx .tsp__bot{text-align:left}
	.tx .tsp__price{font-size:clamp(40px,3.6vw,52px)}
	.tx .tsp__c:hover{translate:0 -6px}
}

/* ================= Duo: room reveal ================= */
.tx .duw{position:relative;padding:0;overflow:hidden;background:#15100B}
.tx .duw__stage{position:relative;height:clamp(300px,62vh,640px);overflow:hidden;clip-path:inset(0 0 0 0)}
.tx .duw__img{position:absolute;inset:0}
.tx .duw__img img{width:100%;height:100%;object-fit:cover}
.tx .duw__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(21,16,11,.1),rgba(21,16,11,.35) 60%,#15100B)}
.tx .duw__lamp{position:absolute;width:26%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,206,130,.4),transparent 68%);animation:bwBreath 7s ease-in-out infinite;pointer-events:none}
.tx .duw__lamp--a{left:8%;top:12%}
.tx .duw__lamp--b{right:8%;top:16%;animation-delay:-3.5s}
.tx .duw__txt{position:relative;padding-block:clamp(30px,5vw,64px) clamp(56px,8vw,110px);max-width:860px;text-align:center;margin-top:-90px;z-index:2}
.tx .duw__head{margin-inline:auto;text-align:center}
.tx .duw__p{font-size:clamp(18px,1.5vw,21px);line-height:1.8;color:#EDE4D0;margin:0 auto}
@media (min-width:900px){.tx .duw__txt{margin-top:-140px}}

/* ================= Duo: choose: a matched pair ================= */
.tx .duc{position:relative;overflow:hidden}
.tx .duc__orb{position:absolute;right:-10%;top:-10%;width:46%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(var(--gr),.28),transparent 68%);pointer-events:none}
.tx .duc__pair{position:relative;display:grid;gap:22px;max-width:1040px;margin-inline:auto;align-items:stretch}
.tx .duc__c{display:flex;flex-direction:column;height:100%;border-radius:26px;overflow:hidden;background:#fff;border:1px solid rgba(127,108,52,.3);box-shadow:0 34px 70px -42px rgba(60,42,12,.55)}
.tx .duc__ph{flex:none;aspect-ratio:3/2;overflow:hidden}
.tx .duc__ph img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--e,ease)}
.tx .duc__c:hover .duc__ph img{transform:scale(1.04)}
.tx .duc__tx{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:clamp(20px,2.6vw,30px)}
.tx .duc__price{order:0;margin:0;font-size:15px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#6A5A2C}
.tx .duc__tx h3{order:1;margin:0;font-size:clamp(23px,2.2vw,29px);line-height:1.2;color:#241B12}
.tx .duc__tx p:not(.duc__price){order:2;margin:0;font-size:18px;line-height:1.65;color:var(--k-muted-d)}
.tx .duc__tx .btn{order:3;margin-top:auto}
@media (min-width:760px){.tx .duc__pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}}

/* ================= Duo: different ================= */
.tx .dud .dud__lead{font-size:clamp(21px,2.3vw,30px);line-height:1.5}
.tx .dud .dud__where{margin:22px 0 0;font-size:clamp(18px,1.5vw,20px);line-height:1.75;color:#E6DCC6;max-width:44rem}

/* ================= Duo: occasions (night tone, gold chips) ================= */
.tx .duo{position:relative;overflow:hidden;background:radial-gradient(70% 90% at 50% 0%,#2E2318,#16110C 75%)}
.tx .duo__chips{list-style:none;margin:0 auto;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:12px 14px;max-width:960px}
.tx .duo__chips li{padding:13px 24px;border-radius:99px;border:1px solid rgba(var(--gr),.5);background:rgba(255,255,255,.04);color:var(--k-ivory);font-size:19px;font-weight:700;line-height:1.3;animation:bwFloat 6s ease-in-out infinite;animation-delay:calc(var(--i)*-.8s)}
.tx .duo__chips li:nth-child(3n+1){background:var(--k-grad);color:#1A1307;border-color:transparent}

/* ================= Duo: gift (champagne banner) ================= */
.tx .dug{position:relative;overflow:hidden;background:linear-gradient(135deg,#E8D9AE,#D4C084)}
.tx .dug__bg{position:absolute;inset:0;margin:0}
.tx .dug__bg img{width:100%;height:100%;object-fit:cover;opacity:.3;mix-blend-mode:multiply}
.tx .dug__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(232,217,174,.9),rgba(232,217,174,.35) 60%,rgba(212,192,132,.6))}
.tx .dug__in{position:relative;max-width:760px;text-align:center}
.tx .dug__head{margin-inline:auto;text-align:center}
.tx .dug .k-h2{color:#241B12}
.tx .dug .k-h2 em{color:#6A5A2C}
.tx .dug .k-ey{color:#5C4C20}
.tx .dug__p{margin:0 auto 26px;font-size:clamp(18px,1.5vw,21px);line-height:1.7;color:#2C2216;max-width:38rem}

/* ================= Massage: choose ================= */
.tx .msc{position:relative;overflow:hidden}
.tx .msc__orb{position:absolute;left:-12%;bottom:-18%;width:50%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(var(--gr),.26),transparent 68%);pointer-events:none}
.tx .msc__list{position:relative;display:grid;gap:26px;max-width:1040px;margin-inline:auto}
.tx .msc__c{display:grid;border-radius:30px;overflow:hidden;background:#fff;border:1px solid rgba(127,108,52,.3);box-shadow:0 34px 70px -42px rgba(60,42,12,.55)}
.tx .msc__ph{aspect-ratio:16/10;overflow:hidden}
.tx .msc__ph img{width:100%;height:100%;object-fit:cover}
.tx .msc__tx{padding:clamp(24px,3.4vw,44px);display:flex;flex-direction:column;align-items:flex-start;gap:14px}
.tx .msc__tx h3{margin:0;font-size:clamp(26px,2.8vw,36px);line-height:1.2;color:#241B12}
.tx .msc__len{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.tx .msc__len li{padding:8px 18px;border-radius:99px;border:1px solid rgba(127,108,52,.55);font-size:18px;font-weight:600;color:#3A2E18}
.tx .msc__len b{font-size:20px;color:#6A5A2C}
.tx .msc__tx p{margin:0;font-size:18px;line-height:1.75;color:var(--k-muted-d)}
.tx .msc__tx .msc__price{font-weight:800;font-size:22px;color:#241B12}
@media (min-width:860px){.tx .msc__c{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.tx .msc__ph{aspect-ratio:auto;min-height:100%}}

/* ================= Massage: why ================= */
.tx .msy .msy__duo{margin:20px 0 0;font-size:18px;line-height:1.7;color:#E6DCC6}
.tx .msy .msy__duo .link{white-space:nowrap}

/* ================= Massage: price table ================= */
.tx .mst__box{max-width:760px;margin-inline:auto;padding:clamp(8px,1.6vw,18px) clamp(18px,3vw,40px) clamp(24px,3vw,36px);border-radius:26px;border:1px solid rgba(var(--gr),.45);background:linear-gradient(160deg,#2A2016,#1C1814 75%);box-shadow:0 44px 90px -50px rgba(0,0,0,.9)}
.tx .mst__rows{list-style:none;margin:0;padding:0}
.tx .mst__rows li{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 0;border-bottom:1px solid rgba(var(--gr),.22)}
.tx .mst__rows li:last-child{border-bottom:0}
.tx .mst__l{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;min-width:0}
.tx .mst__n{font-size:clamp(19px,1.8vw,22px);font-weight:700;color:var(--k-ivory);line-height:1.35}
.tx .mst__t{display:inline-flex;align-items:center;padding:5px 14px;border-radius:99px;border:1px solid rgba(var(--gr),.55);color:var(--g);font-size:16px;font-weight:700;letter-spacing:.04em;white-space:nowrap}
.tx .mst__p{flex:none;font-size:clamp(28px,3.4vw,38px);font-weight:800;letter-spacing:-.02em;line-height:1;color:var(--g);font-variant-numeric:tabular-nums}
.tx .mst__btn{margin-top:8px;text-align:center}
@media (max-width:560px){.tx .mst__l{flex-direction:column;align-items:flex-start;gap:8px}.tx .mst__rows li{padding:18px 0}}

/* ================= reduced motion: finished layout, nothing loops ================= */
@media (prefers-reduced-motion:reduce){
	.tx .tsh__ring,.tx .tsh__scan,.tx .duh__glow,.tx .duh__arch img,.tx .duh__spark,.tx .msh__ring,.tx .tsw__pulse,.tx .duw__lamp,.tx .duo__chips li{animation:none}
	.tx .tsh__ring,.tx .tsw__pulse{opacity:.35;transform:scale(1)}
	.tx .tsh__scan{display:none}
	.tx .duh__spark{opacity:.6}
	.tx .tsp__c:hover{translate:none}
}

/* showcase on a dark section: readable stacked panels on mobile/tablet */
.tx .k-sec--dark .txw__panel{border-left-color:rgba(var(--gr),.55)}
.tx .k-sec--dark .txw__panel h3{color:var(--g)}
.tx .k-sec--dark .txw__panel p{color:#EDE4D0}

/* =====================================================================
   Polish layer (final design pass): spacing system, section tones, heading wrap, timelines, buttons.
   Scoped to the three body & wellness pages so approved pages are not affected.
   ===================================================================== */
.tx--ts,.tx--duo,.tx--massage{--bw-sec:clamp(44px,5.4vw,84px)}
.tx--ts .k-sec,.tx--duo .k-sec,.tx--massage .k-sec{padding-block:var(--bw-sec)}
.tx--duo .duw{padding-block:0}
@media (max-width:640px){.tx--ts,.tx--duo,.tx--massage{--bw-sec:clamp(40px,11vw,52px)}}

/* champagne tone: a clearly different, warm gold section between cream and dark ones */
.tx .k-sec--gold{background:linear-gradient(180deg,#E6D7A8,#D7C48B 100%);color:#241B12}
.tx .k-sec--gold .k-ey{color:#5C4C20}
.tx .k-sec--gold .k-ey::before,.tx .k-sec--gold .k-ey::after{background:linear-gradient(90deg,#7F6C34,#5C4C20)}
.tx .k-sec--gold .k-h2{color:#241B12}
.tx .k-sec--gold .k-h2 em{color:#5C4A18}
.tx .k-sec--gold .k-p,.tx .k-sec--gold .txr__tip{color:#2C2216}
.tx .k-sec--gold .link{color:#4A3A12}
.tx .k-sec--gold .txr__rev--link{background:rgba(255,251,240,.7);border-color:rgba(92,76,32,.35);color:#241B12}

/* headings: the highlighted phrase never splits; balanced lines everywhere on these pages */
.tx--ts .k-h2,.tx--duo .k-h2,.tx--massage .k-h2,.tx--ts .k-h1,.tx--duo .k-h1,.tx--massage .k-h1{text-wrap:balance}
.tx--ts .k-h2 em,.tx--duo .k-h2 em,.tx--massage .k-h2 em,.tx--ts .pg-h2 em,.tx--duo .pg-h2 em,.tx--massage .pg-h2 em{white-space:nowrap}
.tx--ts .fin .pg-h2,.tx--duo .fin .pg-h2,.tx--massage .fin .pg-h2{text-wrap:balance}

/* TS: "Is this for you?" gets a wider heading column so it sits in three balanced lines */
@media (min-width:900px){
	.tx--ts .txf--ledger .txf__main{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:clamp(36px,5vw,80px);align-items:center}
	.tx--ts .txf--ledger .txf__head{position:static;max-width:none}
	.tx--ts .txf--ledger .txf__head .k-h2{font-size:clamp(30px,3.1vw,46px)}
}
/* TS: "What you can expect" heading group centred */
.tx--ts .txc .txs__head{margin-inline:auto;text-align:center;max-width:46rem}
.tx--ts .txc .txs__head .k-ey{justify-content:center}
.tx--ts .txc__list,.tx--ts .txc__note{max-width:980px;margin-inline:auto}
/* TS: the session photograph is portrait, so give it a clean tall frame */
.tx .tsw__fig{aspect-ratio:4/5;max-width:440px}
.tx .tsw__fig img{object-position:50% 35%}
/* TS: hero buttons stack at one width so Call never sits alone */
@media (min-width:961px){.tx--ts .txh .k-btns{flex-direction:column;align-items:flex-start;gap:12px}.tx--ts .txh .k-btns .btn{width:min(100%,380px);justify-content:center}}

/* Hero + final buttons: one balanced group */
@media (max-width:640px){
	.tx--ts .txh .k-btns,.tx--duo .txh .k-btns,.tx--massage .txh .k-btns,.tx--ts .fin .btns,.tx--duo .fin .btns,.tx--massage .fin .btns{flex-direction:column;align-items:stretch;gap:12px}
	.tx--ts .txh .k-btns .btn,.tx--duo .txh .k-btns .btn,.tx--massage .txh .k-btns .btn,.tx--ts .fin .btns .btn,.tx--duo .fin .btns .btn,.tx--massage .fin .btns .btn{width:100%;justify-content:center}
}
@media (min-width:641px){
	.tx--duo .fin .btns{display:flex;flex-wrap:wrap;gap:12px}
	.tx--duo .fin .btns .btn{flex:1 1 auto;justify-content:center}
}

/* Duo: "What is the Duo Wellness Room?": less gap above, image opens earlier */
.tx .duw__stage{height:clamp(240px,50vh,500px)}
.tx .duw__txt{padding-block:clamp(26px,4vw,48px) var(--bw-sec)}

/* Timelines (Duo + Massage): heading on top, photo and steps side by side, steps centred on the photo */
@media (min-width:900px){
	.tx--duo .txp--rail .txp__in,.tx--massage .txp--rail .txp__in{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"head head" "fig list";align-items:center;gap:clamp(28px,4vw,56px) clamp(40px,6vw,96px)}
	.tx--duo .txp--rail .txp__side,.tx--massage .txp--rail .txp__side{display:contents}
	.tx--duo .txp--rail .txp__head,.tx--massage .txp--rail .txp__head{grid-area:head;text-align:center;margin:0 auto;max-width:44rem}
	.tx--duo .txp--rail .txp__head .k-ey,.tx--massage .txp--rail .txp__head .k-ey{justify-content:center}
	.tx--duo .txp--rail .txp__fig,.tx--massage .txp--rail .txp__fig{grid-area:fig;margin:0;aspect-ratio:4/3.1;width:100%}
	.tx--duo .txp--rail .txp__list,.tx--massage .txp--rail .txp__list{grid-area:list}
	.tx--duo .txp--rail .txp__it,.tx--massage .txp--rail .txp__it{padding-bottom:clamp(34px,3.4vw,50px)}
	.tx--duo .txp--rail .txp__it:last-child,.tx--massage .txp--rail .txp__it:last-child{padding-bottom:0}
}
@media (max-width:899px){
	.tx--duo .txp--rail .txs__head,.tx--massage .txp--rail .txs__head{margin-inline:auto;text-align:center}
	.tx--duo .txp--rail .txp__head .k-ey,.tx--massage .txp--rail .txp__head .k-ey{justify-content:center}
	.tx--duo .txp--rail .txp__fig,.tx--massage .txp--rail .txp__fig{margin-top:0;aspect-ratio:4/3}
	.tx--duo .txp--rail .txp__in,.tx--massage .txp--rail .txp__in{gap:26px}
}

/* Massage: choose your treatment (champagne section, centred heading, single feature card) */
.tx .msc .txs__head{margin-inline:auto;text-align:center}
.tx .msc .txs__head .k-ey{justify-content:center}
.tx .msc__orb{background:radial-gradient(circle,rgba(255,251,240,.45),transparent 68%)}
.tx .msc__c{box-shadow:0 34px 70px -40px rgba(60,42,12,.7)}

/* Duo "What is": the picture band is shorter and the heading sits closer to the top of the section */
.tx .duw__stage{height:clamp(150px,24vh,260px)}
.tx .duw__txt{margin-top:-56px;padding-block:clamp(14px,2vw,26px) var(--bw-sec)}
@media (min-width:900px){.tx .duw__txt{margin-top:-80px}}
/* Duo hero buttons: slightly tighter on desktop so all three sit on one row in the left column */
@media (min-width:961px){.tx .txh--room .k-btns{gap:10px;flex-wrap:nowrap}.tx .txh--room .k-btns .btn{padding-inline:clamp(16px,1.4vw,22px);font-size:clamp(15px,1.15vw,17px);white-space:nowrap}}
