@font-face{font-family:"Satoshi";src:url(fonts/Satoshi-300.woff2) format("woff2");font-weight:300;font-display:swap}
@font-face{font-family:"Satoshi";src:url(fonts/Satoshi-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Satoshi";src:url(fonts/Satoshi-500.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Satoshi";src:url(fonts/Satoshi-700.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Instrument Serif";src:url(fonts/InstrumentSerif-normal.ttf) format("truetype");font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Serif";src:url(fonts/InstrumentSerif-italic.ttf) format("truetype");font-style:italic;font-display:swap}

:root{
  --charcoal:#16140F; --ink:#4A4A4A; --black:#000;
  --taupe:#BCB2A2; --taupe-2:#A79C8A; --taupe-3:#918470; --taupe-4:#6F6354;
  --champ:#EDDDBB; --gold:#BE9E6E; --gold-2:#AE8B5A;
  --white:#F3F4EF; --paper:#FEFFFB;
  --serif:"Instrument Serif","Times New Roman",serif;
  --sans:"Satoshi",system-ui,-apple-system,"Segoe UI",sans-serif;
  --gut:clamp(1.25rem,4vw,3.5rem);
  --max:1360px;
  --ease:cubic-bezier(.2,.7,.2,1);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--sans);font-weight:400;font-size:1.0625rem;line-height:1.65;color:var(--charcoal);background:var(--white);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{max-width:100%;display:block}
a{color:inherit}
::selection{background:var(--champ);color:var(--charcoal)}
:focus-visible{outline:2px solid var(--gold-2);outline-offset:3px}
.skip{position:absolute;left:-999px;top:0;background:var(--charcoal);color:var(--white);padding:.75rem 1rem;z-index:200}
.skip:focus{left:0}

.wrap{width:100%;max-width:var(--max);margin:0 auto;padding-inline:var(--gut)}
.eyebrow{font-size:.72rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--taupe-4);margin:0 0 1.4rem;display:flex;align-items:center;gap:.9rem}
.eyebrow::before{content:"";width:2.2rem;height:1px;background:currentColor;opacity:.7}
.dark .eyebrow{color:var(--gold)}
.hero .eyebrow,.phero .eyebrow{color:rgba(22,20,15,.72)}
h1,h2,h3{font-family:var(--serif);font-weight:400;margin:0;letter-spacing:-.015em;line-height:1.02}
h1{font-size:clamp(3.4rem,9.2vw,8.6rem);line-height:.92;letter-spacing:-.03em}
h2{font-size:clamp(2.3rem,5vw,4.4rem)}
h3{font-size:clamp(1.6rem,2.4vw,2.1rem);line-height:1.1}
em{font-style:italic}
.lede{font-size:clamp(1.15rem,1.6vw,1.4rem);line-height:1.55;font-weight:300;max-width:38rem;color:var(--ink)}
.dark .lede{color:var(--taupe)}
p{margin:0 0 1.1rem}
.sec{padding-block:clamp(5rem,11vw,10rem);position:relative}
.rule{height:1px;background:linear-gradient(90deg,transparent,var(--taupe-2),transparent);border:0;margin:0}

/* Buttons */
.btn{--bg:var(--charcoal);--fg:var(--white);display:inline-flex;align-items:center;gap:.9rem;padding:1.05rem 1.7rem;background:var(--bg);color:var(--fg);font:500 .78rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;border:1px solid var(--bg);cursor:pointer;transition:background .4s var(--ease),color .4s var(--ease),border-color .4s var(--ease)}
.btn .arr{transition:transform .4s var(--ease)}
.btn:hover .arr{transform:translateX(5px)}
.btn:hover{--bg:var(--gold-2);border-color:var(--gold-2);color:var(--paper)}
.btn.ghost{--bg:transparent;--fg:var(--charcoal);border-color:var(--charcoal)}
.btn.ghost:hover{--bg:var(--charcoal);--fg:var(--white);border-color:var(--charcoal)}
.dark .btn{--bg:var(--champ);--fg:var(--charcoal)}
.dark .btn:hover{--bg:var(--gold);border-color:var(--gold)}
.dark .btn.ghost{--bg:transparent;--fg:var(--champ);border-color:rgba(237,221,187,.5)}
.dark .btn.ghost:hover{--bg:var(--champ);--fg:var(--charcoal)}
.tlink{font-size:.78rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;display:inline-flex;gap:.7rem;align-items:center;padding-bottom:.35rem;border-bottom:1px solid currentColor}
.tlink .arr{transition:transform .4s var(--ease)}.tlink:hover .arr{transform:translateX(5px)}

/* Header */
.hdr{position:fixed;inset:0 0 auto 0;z-index:100;transition:background .5s var(--ease),backdrop-filter .5s var(--ease),transform .5s var(--ease),box-shadow .5s}
.hdr .bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;max-width:var(--max);margin:0 auto;padding:1.25rem var(--gut);transition:padding .4s var(--ease)}
.hdr.stuck{background:rgba(243,244,239,.78);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);box-shadow:0 1px 0 rgba(22,20,15,.08)}
.hdr.stuck .bar{padding-block:.7rem}
.nav{display:flex;gap:1.5rem;list-style:none;margin:0;padding:0}
.nav a{font-size:.74rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;position:relative;padding:.4rem 0}
.nav a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.nav a:hover::after,.nav a[aria-current="page"]::after{transform:scaleX(1)}
.logo{display:block;width:clamp(86px,9vw,124px);color:var(--charcoal);transition:width .4s var(--ease)}
.hdr.stuck .logo{width:clamp(70px,7vw,92px)}
.logo svg{width:100%;height:auto}
.hdr .cta{justify-self:end}
.hdr .btn{padding:.85rem 1.3rem;font-size:.7rem}
.burger{display:none;justify-self:start;background:none;border:0;padding:.5rem;margin:-.5rem;cursor:pointer;color:inherit}
.burger span{display:block;width:26px;height:1px;background:currentColor;margin:7px 0;transition:transform .4s var(--ease),opacity .3s}
.menu-open .burger span:nth-child(1){transform:translateY(4px) rotate(45deg)}
.menu-open .burger span:nth-child(2){transform:translateY(-4px) rotate(-45deg)}
.sheet{position:fixed;inset:0;background:var(--charcoal);color:var(--champ);z-index:99;display:flex;flex-direction:column;justify-content:center;padding:6rem var(--gut) 3rem;opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s}
.menu-open .sheet{opacity:1;visibility:visible}
.menu-open .hdr{color:var(--champ)}.menu-open .hdr .logo{color:var(--champ)}.menu-open .hdr.stuck{background:transparent;box-shadow:none;backdrop-filter:none}
.sheet a{font-family:var(--serif);font-size:clamp(2.4rem,9vw,3.6rem);text-decoration:none;line-height:1.25;display:block}
.sheet small{display:block;margin-top:2.5rem;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--taupe)}

/* Hero */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;padding:9rem 0 3.2rem;overflow:hidden;color:var(--charcoal);background:radial-gradient(120% 90% at 78% 8%,#F1E7D2 0%,#DDD0B8 38%,#BCB2A2 100%)}
.hero::before{content:"";position:absolute;inset:0;background:url(veins.svg) center/cover no-repeat;opacity:.55;pointer-events:none}
.hero::after{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .09 0 0 0 0 .08 0 0 0 0 .06 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");opacity:.09;mix-blend-mode:multiply;pointer-events:none}
.hero .wrap{position:relative;z-index:2}
.hero h1 em{color:var(--gold-2)}
.hero-sub{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:3rem;align-items:end;margin-top:3rem}
.hero .lede{color:var(--charcoal);opacity:.82}
.hero-cta{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2.2rem}
.hero-meta{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;display:grid;gap:.7rem;justify-self:end;text-align:right}
.hero-meta span{opacity:.75}
.hero-sig{position:absolute;right:calc(var(--gut) - 2vw);top:15vh;width:min(46vw,640px);color:rgba(22,20,15,.07);z-index:1;pointer-events:none}
.hero-line{position:absolute;left:var(--gut);right:var(--gut);bottom:1.8rem;height:1px;background:rgba(22,20,15,.18);z-index:2}

/* Statement */
.statement{background:var(--paper)}
.statement p.big{font-family:var(--serif);font-size:clamp(1.9rem,4.2vw,3.7rem);line-height:1.14;letter-spacing:-.012em;max-width:62rem;margin:0}
.statement p.big em{color:var(--gold-2)}
.stat-row{display:grid;grid-template-columns:repeat(2,1fr);gap:2.4rem 3rem;margin-top:4.5rem;border-top:1px solid rgba(22,20,15,.14);padding-top:2rem}
.stat-row dt{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--taupe-4);margin-bottom:.5rem}
.stat-row dd{margin:0;font-family:var(--serif);font-size:1.6rem;line-height:1.2}

/* Disciplines */
.disc{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.2rem,2.4vw,2.4rem);margin-top:4rem}
.card{display:flex;flex-direction:column;text-decoration:none}
.frame{position:relative;aspect-ratio:3/4;overflow:hidden;background:linear-gradient(160deg,#E6DAC2 0%,#C9BDA7 55%,#A79C8A 100%);background-size:cover;background-position:center}
.frame::before{content:"";position:absolute;inset:0;background:url(veins.svg) 30% 40%/220% auto no-repeat;opacity:.5;transition:transform 1.2s var(--ease)}
.frame .no{position:absolute;left:1.2rem;top:1rem;font-family:var(--serif);font-size:1rem;color:var(--charcoal);opacity:.7}
.frame .glass{position:absolute;left:1rem;right:1rem;bottom:1rem;padding:1.1rem 1.2rem;background:rgba(254,255,251,.42);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);border:1px solid rgba(254,255,251,.55);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;font-weight:500;display:flex;justify-content:space-between}
.card:hover .frame::before{transform:scale(1.06) translate(-1%,-1%)}
.card h3{margin:1.5rem 0 .6rem}
.card p{color:var(--ink);font-size:.98rem;margin:0}
.card ul{list-style:none;padding:0;margin:1rem 0 0;font-size:.86rem;color:var(--taupe-4);display:flex;flex-wrap:wrap;gap:.35rem .9rem}
.card ul li::before{content:"· ";color:var(--gold-2)}

/* Dark referral section */
.dark{background:var(--charcoal);color:var(--champ);overflow:hidden}
.dark::before{content:"";position:absolute;inset:0;background:url(veins.svg) 70% 0/cover no-repeat;opacity:.28;pointer-events:none}
.dark>.wrap{position:relative}
.ref-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,6vw,7rem);align-items:start}
.dark h2 em{color:var(--gold)}
.points{list-style:none;margin:0;padding:0;display:grid;gap:0}
.points li{display:grid;grid-template-columns:3.2rem 1fr;gap:1rem;padding:1.6rem 0;border-top:1px solid rgba(237,221,187,.18)}
.points li:last-child{border-bottom:1px solid rgba(237,221,187,.18)}
.points .n{font-family:var(--serif);color:var(--gold);font-size:1.2rem}
.points h3{font-size:1.5rem;margin-bottom:.35rem;color:var(--champ)}
.points p{margin:0;color:var(--taupe);font-size:.98rem}

/* Phases */
.phases{display:grid;grid-template-columns:repeat(5,1fr);margin-top:4rem;border-top:1px solid rgba(22,20,15,.2)}
.phase{padding:1.8rem 1.4rem 0 0;position:relative}
.phase::before{content:"";position:absolute;top:-4px;left:0;width:7px;height:7px;border-radius:50%;background:var(--gold-2)}
.phase .k{font-family:var(--serif);font-size:1rem;color:var(--taupe-4)}
.phase h3{font-size:1.45rem;margin:.4rem 0 .5rem}
.phase p{font-size:.9rem;color:var(--ink);margin:0}
.phases.tech{grid-template-columns:repeat(4,1fr);border-top:0;row-gap:2.6rem;margin-top:3.5rem}
.tech .phase{border-top:1px solid rgba(22,20,15,.2)}

/* Split / ABC */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,7rem);align-items:center}
.split .frame{aspect-ratio:4/5}
.abc{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(22,20,15,.15);margin-top:2.4rem;border:1px solid rgba(22,20,15,.15)}
.abc div{background:var(--paper);padding:1.4rem 1.2rem}
.abc b{display:block;font-family:var(--serif);font-weight:400;font-size:2.2rem;color:var(--gold-2);line-height:1}
.abc span{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;font-weight:500}
.about{background:var(--paper)}
.creds{list-style:none;padding:0;margin:2rem 0 0;border-top:1px solid rgba(22,20,15,.15)}
.creds li{display:flex;justify-content:space-between;gap:1rem;padding:.9rem 0;border-bottom:1px solid rgba(22,20,15,.15);font-size:.96rem}
.creds li span:first-child{font-weight:500;letter-spacing:.04em}
.creds li span:last-child{color:var(--taupe-4);text-align:right}
.sig-big{width:min(220px,50%);color:var(--charcoal);margin-top:2.4rem}

/* Practices */
.prac{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.2rem,2.4vw,2.4rem);margin-top:3.5rem}
.pc{position:relative;padding:2.4rem;background:linear-gradient(160deg,rgba(254,255,251,.75),rgba(237,221,187,.45));border:1px solid rgba(22,20,15,.12);backdrop-filter:blur(6px)}
.pc h3{margin:.3rem 0 1.2rem}
.map{position:relative;margin:-2.4rem -2.4rem 2rem;aspect-ratio:16/10;background:linear-gradient(160deg,#E6DAC2 0%,#C9BDA7 55%,#A79C8A 100%);border-bottom:1px solid rgba(22,20,15,.12);overflow:hidden}
.map::before{content:"";position:absolute;inset:0;opacity:.35;background-image:linear-gradient(rgba(22,20,15,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(22,20,15,.18) 1px,transparent 1px);background-size:44px 44px}
.map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:grayscale(.35) sepia(.18)}
.pc address{font-style:normal;color:var(--ink);margin-bottom:1.2rem}
.pc .tag{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--taupe-4)}
.pc a.line{display:block;text-decoration:none;border-bottom:1px solid rgba(22,20,15,.12);padding:.7rem 0;font-size:.98rem;transition:padding .4s var(--ease),color .3s}
.pc a.line:hover{padding-left:.5rem;color:var(--gold-2)}
.pc a.line b{font-weight:500;display:inline-block;min-width:5.5rem;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--taupe-4)}

/* Investment */
.price{display:grid;grid-template-columns:repeat(4,1fr);margin-top:3rem;border-top:1px solid rgba(22,20,15,.2)}
.price div{padding:1.6rem 1.4rem 1.6rem 0}
.price small{display:block;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--taupe-4);margin-bottom:.6rem}
.price strong{font-family:var(--serif);font-weight:400;font-size:2.4rem;line-height:1}
.price strong i{font-size:1rem;font-style:normal;font-family:var(--sans);color:var(--taupe-3);margin-right:.4rem}
.note{font-size:.85rem;color:var(--taupe-4);margin-top:1.4rem}

/* CTA band */
.band{background:linear-gradient(120deg,#DDD0B8,#EDDDBB 55%,#D8CCB4);text-align:center}
.band h2{max-width:54rem;margin:0 auto 2rem}
.band .hero-cta{justify-content:center}

/* Footer */
.ftr{background:var(--charcoal);color:var(--taupe);padding:5rem 0 2rem;font-size:.92rem}
.ftr .top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:3rem;padding-bottom:3.5rem;border-bottom:1px solid rgba(237,221,187,.16)}
.ftr .wm{width:min(260px,100%);color:var(--champ);margin-bottom:1.4rem}
.ftr h4{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:var(--gold);margin:0 0 1.1rem}
.ftr ul{list-style:none;margin:0;padding:0;display:grid;gap:.55rem}
.ftr a{text-decoration:none;transition:color .3s}.ftr a:hover{color:var(--champ)}
.ftr .tagline{font-family:var(--serif);font-size:1.5rem;color:var(--champ);margin:0}
.ftr .legal{display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap;padding-top:1.6rem;font-size:.78rem;color:var(--taupe-3)}

/* Inner page hero */
.phero{padding:11rem 0 5rem;background:radial-gradient(110% 100% at 85% 0%,#F1E7D2 0%,#DDD0B8 45%,#BCB2A2 120%);position:relative;overflow:hidden}
.phero::before{content:"";position:absolute;inset:0;background:url(veins.svg) 60% 30%/cover no-repeat;opacity:.45}
.phero .wrap{position:relative}
.phero h1{font-size:clamp(3rem,7.2vw,6.4rem)}
.phero h1 em{color:var(--gold-2)}
.phero .lede{margin-top:2rem;color:var(--charcoal);opacity:.82}

/* Treatments */
.tgroup{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(2rem,6vw,7rem);padding-block:clamp(3.5rem,7vw,6rem);border-top:1px solid rgba(22,20,15,.14)}
.tgroup:first-of-type{border-top:0}
.tgroup .sticky{position:sticky;top:7rem;align-self:start}
.tgroup h2{font-size:clamp(2.4rem,4.4vw,3.8rem)}
.tgroup .k{font-family:var(--serif);color:var(--gold-2);font-size:1.2rem;display:block;margin-bottom:.8rem}
.titem{padding:1.6rem 0;border-bottom:1px solid rgba(22,20,15,.12);display:grid;grid-template-columns:1fr auto;gap:1.5rem}
.titem:first-child{padding-top:0}
.titem h3{font-size:1.55rem;margin-bottom:.4rem}
.titem p{margin:0;color:var(--ink);font-size:.98rem;max-width:36rem}
.titem .from{white-space:nowrap;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;font-weight:500;color:var(--gold-2);padding-top:.5rem}

/* Referral form */
.refwrap{display:grid;grid-template-columns:.78fr 1.22fr;gap:clamp(2rem,6vw,6rem);align-items:start}
.side{position:sticky;top:7rem}
.side ul{list-style:none;padding:0;margin:1.6rem 0 2rem;display:grid;gap:.9rem}
.side li{padding-left:1.7rem;position:relative;color:var(--ink);font-size:.98rem}
.side li::before{content:"";position:absolute;left:0;top:.7em;width:.8rem;height:1px;background:var(--gold-2)}
.formcard{background:var(--paper);padding:clamp(1.6rem,3.6vw,3.4rem);border:1px solid rgba(22,20,15,.12);box-shadow:0 40px 80px -50px rgba(22,20,15,.45)}
fieldset{border:0;padding:0;margin:0 0 2.4rem;min-width:0}
legend{font-family:var(--serif);font-size:1.7rem;padding:0 0 1rem;margin-bottom:1.2rem;width:100%;border-bottom:1px solid rgba(22,20,15,.14)}
legend span{font-size:1rem;color:var(--gold-2);margin-right:.6rem}
.fg{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem 1.4rem}
.f{display:flex;flex-direction:column;gap:.45rem}
.f.full{grid-column:1/-1}
label,.lbl{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;font-weight:500;color:var(--taupe-3)}
label i{color:var(--gold-2);font-style:normal}
input[type=text],input[type=email],input[type=tel],input[type=date],select,textarea{font:inherit;font-size:1rem;color:var(--charcoal);background:transparent;border:0;border-bottom:1px solid rgba(22,20,15,.3);padding:.7rem 0;border-radius:0;width:100%;transition:border-color .3s,background .3s}
textarea{min-height:8rem;resize:vertical;border:1px solid rgba(22,20,15,.3);padding:.9rem}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--gold-2);background:rgba(237,221,187,.18)}
select{appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2316140F' fill='none'/%3E%3C/svg%3E") right .2rem center no-repeat}
.chips{display:flex;flex-wrap:wrap;gap:.6rem}
.chip{position:relative}
.chip input{position:absolute;opacity:0;inset:0;cursor:pointer;width:100%;height:100%;margin:0}
.chip span{display:inline-block;padding:.65rem 1.05rem;border:1px solid rgba(22,20,15,.3);font-size:.9rem;letter-spacing:0;text-transform:none;font-weight:400;color:var(--charcoal);transition:all .3s var(--ease)}
.chip input:checked+span{background:var(--charcoal);color:var(--champ);border-color:var(--charcoal)}
.chip input:focus-visible+span{outline:2px solid var(--gold-2);outline-offset:2px}
.chip:hover span{border-color:var(--charcoal)}
.check{display:flex;gap:.9rem;align-items:flex-start;font-size:.92rem;letter-spacing:0;text-transform:none;font-weight:400;color:var(--ink);line-height:1.5}
.check input{margin-top:.3rem;accent-color:var(--charcoal);width:1.05rem;height:1.05rem;flex:none}
.hp{position:absolute;left:-9999px}
.fnote{font-size:.82rem;color:var(--taupe-4);margin:1.2rem 0 0}
.ok{display:none;text-align:center;padding:3rem 1rem}
.ok h3{font-size:2.4rem;margin-bottom:1rem}
.sent .ok{display:block}.sent form{display:none}
.err{color:#8a3b2a;font-size:.85rem;margin-top:.8rem;display:none}

/* Reveal */
.js .rv{opacity:0;transform:translateY(26px);transition:opacity 1s var(--ease),transform 1s var(--ease);transition-delay:var(--d,0s)}
.js .rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .rv{opacity:1;transform:none;transition:none}.btn,.frame::before{transition:none}}

/* Responsive */
@media (max-width:1020px){
  .nav,.hdr .cta{display:none}
  .hdr .bar{grid-template-columns:1fr auto 1fr}.burger{display:block}
  .hdr .cta-m{display:inline-flex;justify-self:end}
  .hero-sub,.ref-grid,.split,.refwrap,.tgroup{grid-template-columns:1fr}
  .hero-meta{justify-self:start;text-align:left}
  .disc,.prac{grid-template-columns:1fr}
  .phases{grid-template-columns:1fr 1fr}
  .phases.tech{grid-template-columns:1fr 1fr}
  .price{grid-template-columns:1fr 1fr}
  .ftr .top{grid-template-columns:1fr 1fr}
  .side,.tgroup .sticky{position:static}
  .stat-row{grid-template-columns:1fr}
  .frame{aspect-ratio:4/3}.split .frame{aspect-ratio:4/5}
}
@media (min-width:1021px){.hdr .cta-m{display:none}}
@media (max-width:640px){
  .fg{grid-template-columns:1fr}
  .phases{grid-template-columns:1fr}
  .phases.tech{grid-template-columns:1fr}
  .price{grid-template-columns:1fr}
  .ftr .top{grid-template-columns:1fr}
  .abc{grid-template-columns:1fr}
  .titem{grid-template-columns:1fr;gap:.4rem}
  .hero{padding-top:7rem}
  .btn{width:100%;justify-content:space-between}
  .hdr .cta-m .btn{width:auto}
}

/* Reviews */
.quotes{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;margin-top:3.5rem}
.q{margin:0;padding:2rem;background:linear-gradient(160deg,rgba(254,255,251,.75),rgba(237,221,187,.4));border:1px solid rgba(22,20,15,.12);display:flex;flex-direction:column;justify-content:space-between;gap:1.6rem}
.q.wide{grid-column:span 2}
.q blockquote{margin:0;font-family:var(--serif);font-size:1.55rem;line-height:1.25}
.q figcaption{font-size:.9rem;font-weight:500}
.q figcaption span{display:block;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--taupe-4);font-weight:500;margin-top:.3rem}
.ratings{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem;margin-top:1.4rem}
.rating{display:flex;align-items:center;gap:1.4rem;padding:1.6rem 2rem;background:var(--charcoal);color:var(--white);text-decoration:none;transition:background .3s}
.rating:hover{background:#2a2620}
.rating strong{font-family:var(--serif);font-weight:400;font-size:3.2rem;line-height:1;white-space:nowrap}
.rating strong i{font-style:normal;color:var(--gold);font-size:1.6rem;margin-left:.2rem;vertical-align:top}
.rating span{font-size:.9rem;color:rgba(243,244,239,.75)}
.rating b{font-weight:500;color:var(--white)}
@media (max-width:980px){.quotes{grid-template-columns:1fr 1fr}.q.wide{grid-column:auto}}
@media (max-width:640px){.quotes,.ratings{grid-template-columns:1fr}}

/* Live reviews widget */
.widget{margin-top:4rem;padding-top:2.4rem;border-top:1px solid rgba(22,20,15,.14)}
.q details.full{margin-top:-.6rem}
.q details.full summary{cursor:pointer;list-style:none;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;font-weight:500;color:var(--gold-2)}
.q details.full summary::-webkit-details-marker{display:none}
.q details.full summary::after{content:" +"}
.q details.full[open] summary::after{content:" \2212"}
.q details.full p{font-size:.95rem;line-height:1.6;color:var(--ink);margin:.9rem 0 0}

/* Finance panel */
.finance{display:grid;grid-template-columns:1fr 1.4fr auto;gap:2.4rem;align-items:center;margin-top:3rem;padding:2.4rem 2.6rem;background:var(--charcoal);color:var(--white)}
.finance .eyebrow{color:var(--gold);margin-bottom:.8rem}
.finance h3{font-family:var(--serif);font-weight:400;font-size:clamp(1.8rem,2.6vw,2.4rem);margin:0;line-height:1.1}
.finance h3 em{color:var(--gold)}
.finance p{margin:0;color:rgba(243,244,239,.78)}
.finance .btn{background:var(--white);color:var(--charcoal);border-color:var(--white);white-space:nowrap}
@media (max-width:980px){.finance{grid-template-columns:1fr;gap:1.4rem}}
.frame.real::before,.frame.real .no{display:none}
.frame.real{background-position:center top}
.about .split>div:first-child{display:flex;justify-content:center;align-items:flex-start}
.frame.real{width:100%;max-width:460px}
.about .split{align-items:start}
.about .split>div:first-child{padding-top:3.2rem}
@media (max-width:980px){.about .split>div:first-child{padding-top:0}}
/* Portrait: translucent, white background melts into the page */
.frame.real{background-color:transparent;mix-blend-mode:multiply}
/* Portrait: soft feathered edges so the crop melts into the page */
.frame.real{
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 3%,#000 97%,transparent 100%),linear-gradient(180deg,#000 0,#000 95%,transparent 100%);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(90deg,transparent 0,#000 3%,#000 97%,transparent 100%),linear-gradient(180deg,#000 0,#000 95%,transparent 100%);
  mask-composite:intersect}

/* Results gallery */
.results{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;margin-top:3rem}
.res{margin:0}
.res a{display:block;overflow:hidden;background:var(--paper);border:1px solid rgba(22,20,15,.1)}
.res img{width:100%;height:auto;display:block;transition:transform .8s var(--ease)}
.res a:hover img{transform:scale(1.03)}
.res figcaption{margin-top:.7rem;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--taupe-4)}
@media (max-width:980px){.results{grid-template-columns:1fr 1fr}}
/* Technology intro with photo */
.tech-head{display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:center}
.tech-head .frame{aspect-ratio:4/5;max-width:380px;margin-left:auto}
.frame.real-plain::before,.frame.real-plain .no{display:none}
@media (max-width:980px){.tech-head{grid-template-columns:1fr}.tech-head .frame{margin:0;max-width:100%}}

.res .ba{position:relative;overflow:hidden;background:var(--paper)}
.res .ba+.ba{margin-top:4px}
.res .ba img{width:100%;height:auto;display:block;aspect-ratio:1026/449;object-fit:cover;transition:transform .8s var(--ease)}
.res:hover .ba img{transform:scale(1.03)}
.res .ba span{position:absolute;left:.6rem;top:.6rem;z-index:1;font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--white);background:rgba(22,20,15,.55);padding:.3rem .5rem;backdrop-filter:blur(4px)}
.results{grid-template-columns:repeat(3,1fr)}
@media (max-width:980px){.results{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.results{grid-template-columns:1fr}}
.results{grid-template-columns:repeat(4,1fr)}
.results .res:first-child{grid-column:span 2}
@media (max-width:980px){.results{grid-template-columns:1fr 1fr}.results .res:first-child{grid-column:span 2}}
@media (max-width:560px){.results{grid-template-columns:1fr}.results .res:first-child{grid-column:auto}}
.results{display:flex;flex-wrap:wrap;justify-content:center;gap:1.2rem}
.results .res,.results .res:first-child{flex:0 0 calc(25% - .9rem);grid-column:auto}
@media (max-width:980px){.results .res,.results .res:first-child{flex-basis:calc(50% - .6rem)}}
@media (max-width:560px){.results .res,.results .res:first-child{flex-basis:100%}}
/* Results: bigger cards */
.results .res,.results .res:first-child{flex:0 0 calc(33.333% - .8rem)}
@media (max-width:980px){.results .res,.results .res:first-child{flex-basis:calc(50% - .6rem)}}
@media (max-width:560px){.results .res,.results .res:first-child{flex-basis:100%}}
.res{cursor:zoom-in}
.res .zoom{position:absolute;right:.6rem;bottom:.6rem;width:30px;height:30px;border-radius:50%;background:rgba(22,20,15,.55);color:#fff;display:grid;place-items:center;font-size:15px;opacity:0;transition:opacity .3s}
.res:hover .zoom,.res:focus-visible .zoom{opacity:1}
/* Lightbox */
.lb{position:fixed;inset:0;z-index:300;background:rgba(22,20,15,.92);display:none;align-items:center;justify-content:center;padding:clamp(1rem,4vw,3rem)}
.lb.open{display:flex}
.lb figure{margin:0;max-width:min(980px,100%);max-height:100%;display:flex;flex-direction:column;align-items:center}
.lb .pair{display:flex;flex-direction:column;gap:6px;max-height:calc(100vh - 9rem);overflow:auto}
.lb .pair div{position:relative}
.lb .pair img{display:block;width:100%;height:auto;max-height:calc(50vh - 5rem);object-fit:contain}
.lb .pair span{position:absolute;left:.7rem;top:.7rem;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:#fff;background:rgba(22,20,15,.6);padding:.35rem .6rem}
.lb figcaption{color:var(--champ);margin-top:1rem;font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;text-align:center}
.lb button{position:absolute;background:none;border:0;color:#fff;font:inherit;cursor:pointer;opacity:.8}
.lb button:hover{opacity:1}
.lb .x{top:1rem;right:1.2rem;font-size:2rem;line-height:1}
.lb .prev,.lb .next{top:50%;transform:translateY(-50%);font-size:2.4rem;padding:1rem}
.lb .prev{left:.4rem}.lb .next{right:.4rem}
@media (max-width:640px){.lb .prev,.lb .next{top:auto;bottom:.4rem;transform:none}}

/* Discipline cards: real photos, no decorative lines */
.disc .frame.photo::before{display:none}

/* Closing band with clinical photo background */
.band.photo-band{position:relative;color:var(--white);padding-block:clamp(7rem,14vw,11rem);
  background:linear-gradient(180deg,rgba(22,20,15,.55) 0%,rgba(22,20,15,.72) 60%,rgba(22,20,15,.9) 100%),url(photos/band-smile.jpg) center 35%/cover no-repeat}
.band.photo-band h2{color:var(--white)}
.band.photo-band .btn{background:var(--white);color:var(--charcoal);border-color:var(--white)}
.band.photo-band .btn.ghost{background:transparent;color:var(--white);border-color:rgba(243,244,239,.6)}
.band.photo-band .btn.ghost:hover{background:var(--white);color:var(--charcoal)}

.abc-case{cursor:default;align-self:center}

/* Discipline cards: text-only design */
.disc .card{padding:2.4rem 2.2rem 2.2rem;border:1px solid rgba(22,20,15,.14);background:linear-gradient(160deg,rgba(254,255,251,.7),rgba(237,221,187,.28));transition:border-color .4s,transform .5s var(--ease),box-shadow .5s var(--ease)}
.disc .card:hover{border-color:var(--gold-2);transform:translateY(-4px);box-shadow:0 18px 40px -24px rgba(22,20,15,.35)}
.disc .cnum{font-family:var(--serif);font-size:3.2rem;line-height:1;color:var(--gold-2)}
.disc .card h3{margin:1.4rem 0 .8rem;font-size:clamp(1.7rem,2.2vw,2.1rem)}
.disc .card ul{margin-top:1.4rem;padding-top:1.2rem;border-top:1px solid rgba(22,20,15,.1)}
.disc .cmore{margin-top:auto;padding-top:1.8rem;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--charcoal)}
.disc .card:hover .cmore{color:var(--gold-2)}
.disc .card h3{margin-top:0}

/* Technology: plain two-column list */
.kit{display:grid;grid-template-columns:1fr 1fr;column-gap:clamp(2rem,5vw,5rem);margin:3.5rem 0 0}
.kit-row{display:grid;grid-template-columns:minmax(10rem,13rem) 1fr;gap:1.2rem;padding:1.15rem 0;border-top:1px solid rgba(22,20,15,.12)}
.kit-row:nth-last-child(-n+2){border-bottom:1px solid rgba(22,20,15,.12)}
.kit dt{font-family:var(--serif);font-size:1.3rem;line-height:1.25}
.kit dd{margin:0;font-size:.95rem;color:var(--ink)}
@media (max-width:860px){.kit{grid-template-columns:1fr}.kit-row:nth-last-child(2){border-bottom:0}}
@media (max-width:520px){.kit-row{grid-template-columns:1fr;gap:.3rem}}

/* ---- Animated signature logo ---- */
.hdr .logo{position:relative;transform-origin:50% 45%;
  transition:transform .7s cubic-bezier(.34,1.56,.64,1),color .5s var(--ease),filter .6s var(--ease)}
.hdr .logo svg{animation:sigWrite 1.6s cubic-bezier(.65,0,.35,1) .2s both}
.hdr .logo::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;
  background:linear-gradient(105deg,transparent 35%,rgba(255,244,214,.95) 48%,rgba(190,158,110,.9) 52%,transparent 65%);
  background-size:260% 100%;background-position:120% 0;
  -webkit-mask:url(signature.svg) center/contain no-repeat;mask:url(signature.svg) center/contain no-repeat}
.hdr .logo:hover,.hdr .logo:focus-visible{transform:scale(1.5);color:var(--gold-2);
  filter:drop-shadow(0 8px 16px rgba(174,139,90,.35))}
.hdr .logo:hover::after,.hdr .logo:focus-visible::after{opacity:1;animation:sigShine 1.1s var(--ease) forwards}
@keyframes sigWrite{from{clip-path:inset(0 100% 0 0);opacity:.2}to{clip-path:inset(0 0 0 0);opacity:1}}
@keyframes sigShine{from{background-position:120% 0}to{background-position:-20% 0}}
@media (prefers-reduced-motion:reduce){
  .hdr .logo svg{animation:none}
  .hdr .logo,.hdr .logo:hover{transform:none;transition:color .3s}
  .hdr .logo:hover::after{animation:none;opacity:0}}

/* ---- Gold shimmer on top navigation ---- */
.hdr .nav a{background-image:linear-gradient(105deg,#8a6a3c 0%,#8a6a3c 34%,#d9b878 46%,#f3dfae 50%,#c9a463 54%,#8a6a3c 66%,#8a6a3c 100%);
  background-size:260% 100%;background-position:110% 0;-webkit-background-clip:text;background-clip:text;transition:color .35s var(--ease)}
.hdr .nav a:hover,.hdr .nav a:focus-visible{color:transparent;animation:navShine 1s var(--ease) forwards}
.hdr .nav a:hover::after,.hdr .nav a:focus-visible::after{background:#8a6a3c}
@keyframes navShine{from{background-position:110% 0}to{background-position:-10% 0}}
@media (prefers-reduced-motion:reduce){.hdr .nav a:hover{animation:none;background-position:50% 0}}

/* =====================================================================
   LUXURY MOTION LAYER  (all motion disabled for prefers-reduced-motion)
   ===================================================================== */
@media (prefers-reduced-motion:no-preference){

/* 1. Page intro: paper veil lifts while a gold hairline draws across */
.js body::before{content:"";position:fixed;inset:0;z-index:600;background:var(--white);pointer-events:none;animation:veil 1.3s .55s cubic-bezier(.65,0,.35,1) forwards}
.js body::after{content:"";position:fixed;left:50%;top:50%;width:min(60vw,520px);height:1px;z-index:601;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--gold-2),transparent);transform:translate(-50%,-50%) scaleX(0);animation:veilLine 1.2s cubic-bezier(.65,0,.35,1) forwards}
@keyframes veil{to{opacity:0;visibility:hidden}}
@keyframes veilLine{0%{transform:translate(-50%,-50%) scaleX(0);opacity:1}55%{transform:translate(-50%,-50%) scaleX(1);opacity:1}100%{transform:translate(-50%,-50%) scaleX(1);opacity:0}}

/* 2. Softer, slower reveals */
.js .rv{transform:translateY(34px);
  transition:opacity 1.3s cubic-bezier(.16,1,.3,1),transform 1.5s cubic-bezier(.16,1,.3,1);transition-delay:var(--d,0s)}

/* 3. Headline lines rise from behind a mask */
.ln{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.ln>span{display:inline-block;transform:translateY(105%);transition:transform 1.5s cubic-bezier(.16,1,.3,1);transition-delay:var(--ld,0s)}
.rv.in .ln>span{transform:none}
.js h1.rv,.js h1.rv.in{filter:none;transform:none}

/* 4. Gold hairlines draw themselves */
.hero-line{background:linear-gradient(90deg,var(--gold-2),rgba(22,20,15,.18) 40%);transform:scaleX(0);transform-origin:left;animation:drawLine 2s 1.6s cubic-bezier(.65,0,.35,1) forwards}
@keyframes drawLine{to{transform:scaleX(1)}}
.js .eyebrow.rv::before{transform:scaleX(0);transform-origin:left;transition:transform 1.2s .35s cubic-bezier(.65,0,.35,1)}
.js .eyebrow.rv.in::before{transform:scaleX(1)}

/* 5. Hero signature watermark drifts slowly */
.hero-sig{animation:sigFloat 14s ease-in-out infinite alternate;will-change:transform}
@keyframes sigFloat{from{translate:0 0}to{translate:-14px 10px}}

/* 6. Buttons: lift + light sweep */
.btn{position:relative;overflow:hidden;transition:background .5s var(--ease),color .5s var(--ease),border-color .5s var(--ease),transform .5s var(--ease),box-shadow .5s var(--ease)}
.btn::before{content:"";position:absolute;top:0;bottom:0;left:-60%;width:45%;pointer-events:none;
  background:linear-gradient(105deg,transparent,rgba(255,250,235,.45),transparent);transform:skewX(-18deg);transition:left .9s cubic-bezier(.16,1,.3,1)}
.btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px -18px rgba(22,20,15,.55)}
.btn:hover::before{left:120%}
.btn .arr{transition:transform .5s var(--ease)}
.btn:hover .arr{transform:translateX(5px)}

/* 7. Before & after photos unveil like a curtain */
.js .res.rv .ba{clip-path:inset(0 0 100% 0);transition:clip-path 1.5s cubic-bezier(.65,0,.35,1)}
.js .res.rv .ba+.ba{transition-delay:.25s}
.js .res.rv.in .ba{clip-path:inset(0 0 0 0)}
.js .res.rv,.js .res.rv.in{filter:none}

/* 8. Cards respond with a quiet lift and gold edge */
.q,.pc,.kit-row{transition:transform .7s cubic-bezier(.16,1,.3,1),box-shadow .7s cubic-bezier(.16,1,.3,1),border-color .5s}
.q:hover,.pc:hover{transform:translateY(-5px);box-shadow:0 24px 50px -30px rgba(22,20,15,.45);border-color:rgba(174,139,90,.55)}
.kit-row:hover dt{color:var(--gold-2);transition:color .4s}

/* 9. Header glides away on scroll down, returns on scroll up */
.hdr{transition:transform .7s cubic-bezier(.16,1,.3,1),background .5s,box-shadow .5s}
.hdr.hide{transform:translateY(-110%)}

/* 10. Reading progress hairline */
.progress{position:fixed;left:0;top:0;height:2px;width:100%;z-index:150;pointer-events:none;
  background:linear-gradient(90deg,#8a6a3c,#e7cf9c,#8a6a3c);transform-origin:left;transform:scaleX(0)}

/* 11. Gold cursor halo (desktop only) */
.halo{position:fixed;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;border:1px solid rgba(174,139,90,.7);border-radius:50%;
  z-index:700;pointer-events:none;opacity:0;transition:width .45s cubic-bezier(.16,1,.3,1),height .45s cubic-bezier(.16,1,.3,1),margin .45s cubic-bezier(.16,1,.3,1),opacity .4s,background .4s}
.halo.on{opacity:1}
.halo.big{width:64px;height:64px;margin:-32px 0 0 -32px;background:rgba(190,158,110,.10);border-color:rgba(174,139,90,.45)}
}
@media (hover:none),(pointer:coarse){.halo{display:none}}

/* ---- Centred hero ---- */
.hero-sig{display:none}
.hero{justify-content:center;text-align:center;padding-bottom:5rem}
.hero .eyebrow{justify-content:center}
.hero .eyebrow::before{display:none}
.hero h1{margin-inline:auto}
.hero-sub{grid-template-columns:1fr;justify-items:center;gap:2.6rem;margin-top:2.4rem}
.hero-sub .lede{max-width:40rem;margin-inline:auto}
.hero-cta{justify-content:center}
.hero-meta{justify-self:center;text-align:center;grid-auto-flow:column;gap:2.4rem}
.hero-meta span+span{position:relative}
.hero-meta span+span::before{content:"";position:absolute;left:-1.25rem;top:50%;width:4px;height:4px;border-radius:50%;background:var(--gold-2);transform:translateY(-50%)}
@media (max-width:760px){.hero-meta{grid-auto-flow:row;gap:.6rem}.hero-meta span+span::before{display:none}}
.hero-line{left:50%;right:auto;width:min(60vw,640px);transform-origin:center;translate:-50% 0;background:linear-gradient(90deg,transparent,var(--gold-2),transparent)}
/* ---- Hero background photograph ---- */
.hero{background:#E6DCC8}
.hero-bg{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.hb-img{position:absolute;inset:-4%;background-size:cover;background-position:center 52%;opacity:.9;will-change:transform}
.hero-bg::before{content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(236,226,206,0) 72%,rgba(236,226,206,.88) 100%),radial-gradient(ellipse 44% 40% at 50% 50%,rgba(236,226,206,.82) 0%,rgba(236,226,206,.55) 50%,rgba(236,226,206,.12) 85%,rgba(236,226,206,0) 100%)}
.hero-bg::after{content:"";position:absolute;inset:0;z-index:2;opacity:.18;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .4 0 0 0 0 .36 0 0 0 0 .3 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@media (prefers-reduced-motion:no-preference){
  .hb-img{opacity:0;transform:scale(1.14);animation:hbIn 2.6s .7s cubic-bezier(.16,1,.3,1) forwards,hbZoom 26s .7s ease-out forwards}
  @keyframes hbIn{to{opacity:.9}}
  @keyframes hbZoom{to{transform:scale(1.0)}}
}
/* ---- Dynamic hero ---- */
.hero{--mx:50%;--my:45%}
.hb-light{position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:soft-light;opacity:.85;
  background:radial-gradient(circle 32vmax at var(--mx) var(--my),rgba(255,248,232,.95) 0%,rgba(255,244,220,.35) 40%,rgba(255,240,210,0) 70%);transition:opacity .6s}
.hb-img{translate:var(--px,0) var(--py,0);transition:translate 1.2s cubic-bezier(.16,1,.3,1)}
.hero h1 em{display:inline-block}
.hero h1 em.swap-out{transform:translateY(-105%);opacity:0;transition:transform .75s cubic-bezier(.65,0,.35,1),opacity .6s}
.hero h1 em.swap-pre{transform:translateY(105%);opacity:0;transition:none}
.hero h1 em.swap-in{transform:none;opacity:1;transition:transform .95s cubic-bezier(.16,1,.3,1),opacity .8s}
@media (prefers-reduced-motion:no-preference){
  .hero h1 em{background:linear-gradient(100deg,var(--gold-2) 0%,var(--gold-2) 40%,#f0d9a6 50%,var(--gold-2) 60%,var(--gold-2) 100%);background-size:300% 100%;
    -webkit-background-clip:text;background-clip:text;color:transparent;animation:emSheen 7s 3s ease-in-out infinite}
  @keyframes emSheen{0%,55%{background-position:100% 0}100%{background-position:0 0}}
}
.veil-done body::before,.veil-done body::after{display:none!important}
/* keep italic gold words from being clipped by the line mask / text clip */
.ln{padding:0 .18em .16em;margin:0 -.18em -.16em}
.hero h1 em{padding:0 .14em .08em .04em;margin:0 -.14em -.08em -.04em}
/* contain the cursor-light blend to the photo layer so nothing tints around the gold word */
.hero-bg{isolation:isolate}
.hero .wrap{isolation:isolate}
.hero h1 em{-webkit-background-clip:text;background-clip:text;background-origin:content-box}
/* more room for italic descenders (g, y, p) — the gold gradient only paints inside the word's box */
.ln{padding:0 .28em .32em;margin:0 -.28em -.32em}
.hero h1 em{padding:.04em .24em .3em .08em;margin:-.04em -.24em -.3em -.08em}

/* ---- Gold sheen on every gold word across the site ---- */
.statement p.big em,.phero h1 em,.dark h2 em,.finance h3 em{--g:var(--gold-2)}
.dark h2 em,.finance h3 em{--g:var(--gold)}
.phero h1 em{display:inline-block;padding:.04em .24em .3em .08em;margin:-.04em -.24em -.3em -.08em}
.statement p.big em,.dark h2 em,.finance h3 em{padding-bottom:.12em;-webkit-box-decoration-break:clone;box-decoration-break:clone}
@media (prefers-reduced-motion:no-preference){
  .statement p.big em,.phero h1 em,.dark h2 em,.finance h3 em{
    background:linear-gradient(100deg,var(--g) 0%,var(--g) 40%,#f0d9a6 50%,var(--g) 60%,var(--g) 100%);background-size:300% 100%;
    -webkit-background-clip:text;background-clip:text;color:transparent;animation:emSheen 7s 3s ease-in-out infinite}
  .phero h1 em{animation-delay:2.2s}
  .statement p.big em{animation-delay:1s}
  .dark h2 em{animation-delay:1.8s}
  .finance h3 em{animation-delay:2.6s}
}

/* =====================================================================
   SITE-WIDE LUXURY PASS
   ===================================================================== */

/* 1. Inner page heros: toned photo backgrounds */
.phero.has-bg{background:#E6DCC8;padding:12rem 0 6.5rem}
.phero.has-bg::before{display:none}
.phero.has-bg .wrap{z-index:2}
.pbg .hb-img{opacity:.85}
.pbg::before{background:linear-gradient(90deg,rgba(236,226,206,.94) 0%,rgba(236,226,206,.8) 38%,rgba(236,226,206,.3) 66%,rgba(236,226,206,.05) 100%),
  linear-gradient(180deg,rgba(236,226,206,0) 70%,rgba(236,226,206,.85) 100%)!important}
@media (prefers-reduced-motion:no-preference){.pbg .hb-img{animation:hbIn2 2.4s .6s cubic-bezier(.16,1,.3,1) forwards,hbZoom 26s .6s ease-out forwards}
  @keyframes hbIn2{to{opacity:.85}}}
@media (max-width:760px){.pbg::before{background:linear-gradient(180deg,rgba(236,226,206,.86),rgba(236,226,206,.78))!important}}

/* 2. Section headings rise line by line (uses .ln masks) */
.sec h2 .ln,.rband h2 .ln{padding-bottom:.2em;margin-bottom:-.2em}

/* 3. Dark photographic Results band */
.rband{position:relative;overflow:hidden;background:#15130F;color:var(--white);padding:clamp(7rem,13vw,10rem) 0 clamp(4rem,8vw,6rem)}
.rband-bg{position:absolute;inset:-6% 0;background-size:cover;background-position:center 50%;opacity:.55}
.rband::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(21,19,15,.55),rgba(21,19,15,.2) 45%,rgba(21,19,15,.85))}
.rband .wrap{position:relative;z-index:2}
.rband .eyebrow{color:var(--gold)}
.rband h2{color:var(--white)}
.rband .lede{color:rgba(243,244,239,.8)}
@media (prefers-reduced-motion:no-preference){.rband-bg{transform:scale(1.12);transition:transform 2.4s cubic-bezier(.16,1,.3,1)}.rband.seen .rband-bg{transform:scale(1)}}

/* 4. Before / after drag sliders */
.cmp{position:relative;overflow:hidden;background:var(--paper);aspect-ratio:1026/449;user-select:none;touch-action:pan-y}
.cmp img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.cmp-before{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--pos)) 0 0);z-index:1}
.cmp-line{position:absolute;top:0;bottom:0;left:var(--pos);width:1px;background:rgba(255,248,232,.95);z-index:3;pointer-events:none;box-shadow:0 0 12px rgba(0,0,0,.25)}
.cmp-line i{position:absolute;top:50%;left:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:1px solid rgba(255,248,232,.95);
  background:rgba(22,20,15,.35);backdrop-filter:blur(6px);transition:transform .4s cubic-bezier(.16,1,.3,1)}
.cmp-line i::before,.cmp-line i::after{content:"";position:absolute;top:50%;width:6px;height:6px;border-top:1px solid #fff;border-left:1px solid #fff;margin-top:-3px}
.cmp-line i::before{left:9px;transform:rotate(-45deg)}.cmp-line i::after{right:9px;transform:rotate(135deg)}
.cmp:hover .cmp-line i{transform:scale(1.12)}
.cmp-range{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize;z-index:4;-webkit-appearance:none;appearance:none;background:none}
.cmp-range:focus-visible+.cmp-line i,.cmp:focus-within .cmp-line i{outline:2px solid var(--gold);outline-offset:2px}
.cmp-lab{position:absolute;top:.6rem;z-index:2;font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--white);background:rgba(22,20,15,.55);padding:.3rem .5rem;pointer-events:none;transition:opacity .4s}
.cmp-lab.l{left:.6rem}.cmp-lab.r{right:.6rem}
.res{position:relative;cursor:default}
.res .ba{display:none}
.res .zoom{position:absolute;right:.6rem;top:.6rem;bottom:auto;z-index:5;width:30px;height:30px;border-radius:50%;border:0;background:rgba(22,20,15,.55);color:#fff;font-size:14px;cursor:zoom-in;opacity:0;transition:opacity .3s}
.res .zoom{top:auto;bottom:2.6rem}
.res:hover .zoom,.res .zoom:focus-visible{opacity:1}
@media (hover:none){.res .zoom{opacity:.85}}
@media (prefers-reduced-motion:no-preference){
  .js .res.rv .cmp{clip-path:inset(0 0 100% 0);transition:clip-path 1.5s cubic-bezier(.65,0,.35,1)}
  .js .res.rv.in .cmp{clip-path:inset(0 0 0 0)}
  .js .res.rv.in .cmp:not(.touched){animation:cmpHint 2.6s 1.4s cubic-bezier(.65,0,.35,1) 1}
  @keyframes cmpHint{0%{--pos:50%}30%{--pos:28%}65%{--pos:72%}100%{--pos:50%}}
}
@property --pos{syntax:'<percentage>';inherits:true;initial-value:50%}
.lb .lb-cmp{width:min(980px,92vw)}
.lb .lb-cmp .cmp{width:100%}
.lb figure{width:auto}

/* 5. Reviews: editorial one-at-a-time carousel */
.qslider{margin-top:3.5rem;position:relative;max-width:62rem;margin-inline:auto;text-align:center}
.qs-track{display:grid}
.qs{grid-area:1/1;margin:0;opacity:0;transform:translateY(18px);transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1.2s cubic-bezier(.16,1,.3,1);pointer-events:none}
.qs.on{opacity:1;transform:none;pointer-events:auto}
.qs blockquote{margin:0;font-family:var(--serif);font-size:clamp(1.8rem,3.4vw,3rem);line-height:1.18;color:var(--charcoal)}
.qs figcaption{margin-top:1.8rem;font-size:.95rem;font-weight:500}
.qs figcaption span{display:block;margin-top:.35rem;font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-2)}
.qs-nav{display:flex;align-items:center;justify-content:center;gap:1.4rem;margin-top:2.6rem}
.qs-prev,.qs-next{background:none;border:1px solid rgba(22,20,15,.25);width:42px;height:42px;border-radius:50%;cursor:pointer;font-size:1rem;color:var(--charcoal);transition:border-color .3s,color .3s,transform .4s cubic-bezier(.16,1,.3,1)}
.qs-prev:hover,.qs-next:hover{border-color:var(--gold-2);color:var(--gold-2)}
.qs-prev:hover{transform:translateX(-3px)}.qs-next:hover{transform:translateX(3px)}
.qs-dots{display:flex;gap:.55rem}
.qd{width:7px;height:7px;padding:0;border-radius:50%;border:0;background:rgba(22,20,15,.2);cursor:pointer;transition:background .4s,transform .4s}
.qd.on{background:var(--gold-2);transform:scale(1.35)}
.quotes{display:none}

/* 6. Maps tinted to the palette, full colour on hover */
.map iframe{filter:grayscale(1) sepia(.38) contrast(.92) brightness(1.03);transition:filter .8s cubic-bezier(.16,1,.3,1)}
.pc:hover .map iframe{filter:none}

/* 7. FAQ accordion */
.faq{border-top:1px solid rgba(22,20,15,.12)}
.faq:last-child{border-bottom:1px solid rgba(22,20,15,.12)}
.faq summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:1.4rem;padding:1.5rem 0;cursor:pointer}
.faq summary::-webkit-details-marker{display:none}
.faq summary h3{margin:0;font-size:clamp(1.25rem,1.8vw,1.55rem);transition:color .3s}
.faq summary:hover h3{color:var(--gold-2)}
.faq summary i{position:relative;flex:none;width:16px;height:16px}
.faq summary i::before,.faq summary i::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--gold-2);transition:transform .5s cubic-bezier(.16,1,.3,1)}
.faq summary i::after{transform:rotate(90deg)}
.faq[open].opening summary i::after,.faq[open]:not(.closing) summary i::after{transform:rotate(0)}
.faq-a{overflow:hidden;transition:height .5s cubic-bezier(.16,1,.3,1)}
.faq-a p{margin:0;padding:0 2.4rem 1.6rem 0;color:var(--ink)}

/* 8. Footer: large faint signature drawn in */
.ftr{position:relative;overflow:hidden}
.ftr .wrap{position:relative;z-index:1}
.ftr-sig{position:absolute;right:-2vw;bottom:-4vw;width:min(58vw,760px);color:rgba(237,221,187,.06);pointer-events:none}
.ftr-sig svg{width:100%;height:auto}
@media (prefers-reduced-motion:no-preference){.ftr-sig svg{clip-path:inset(0 100% 0 0);transition:clip-path 3s cubic-bezier(.65,0,.35,1)}.ftr.seen .ftr-sig svg{clip-path:inset(0 0 0 0)}}

/* Before & afters: static photos (no slider, no unveil animation) */
.res .ba{display:block}
.res{cursor:zoom-in}
.res .zoom{top:auto;bottom:2.6rem;right:.6rem}
.abc-case{cursor:default}
.js .res.rv .ba,.js .res.rv.in .ba{clip-path:none!important;transition:none!important}

/* =====================================================================
   SENSORY / REASSURANCE LAYER
   ===================================================================== */
/* Reviews: full grid again */
.quotes{display:grid!important}
.qslider{display:none}

/* Reassurance line under hero buttons */
.assure{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem 1.6rem;margin:1.6rem 0 0;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;font-weight:500;color:rgba(22,20,15,.88)}
.assure span{position:relative}
.assure span+span::before{content:"";position:absolute;left:-.85rem;top:50%;width:4px;height:4px;border-radius:50%;background:var(--gold-2);transform:translateY(-50%)}
.assure b{color:var(--gold-2);font-weight:500}
@media (max-width:640px){.assure{flex-direction:column;align-items:center;gap:.4rem}.assure span+span::before{display:none}}

/* "How it feels" */
.feel{background:radial-gradient(90% 80% at 50% 0%,#F4ECDD 0%,var(--white) 70%);text-align:center}
.feel h2{max-width:22ch;margin-inline:auto}
.feel .eyebrow{justify-content:center}
.feel-lede{max-width:44rem;margin:1.8rem auto 0}
.senses{display:grid;grid-template-columns:repeat(4,1fr);gap:1.4rem;margin-top:4rem;text-align:left}
.sense{position:relative;padding:2.2rem 1.8rem 2rem;background:rgba(254,255,251,.65);border:1px solid rgba(22,20,15,.1);
  transition:transform .8s cubic-bezier(.16,1,.3,1),box-shadow .8s cubic-bezier(.16,1,.3,1),border-color .5s,background .6s}
.sense::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .8s;
  background:radial-gradient(120% 80% at 50% 0%,rgba(237,221,187,.55),transparent 70%)}
.sense:hover{transform:translateY(-6px);box-shadow:0 30px 60px -36px rgba(120,96,60,.45);border-color:rgba(174,139,90,.5)}
.sense:hover::before{opacity:1}
.sk{display:block;font-family:var(--serif);font-style:italic;font-size:2.4rem;line-height:1;color:var(--gold-2);margin-bottom:1.2rem}
.sense h3{font-size:1.35rem;margin:0 0 .7rem}
.sense p{margin:0;font-size:.95rem;color:var(--ink)}
.feel-quote{margin:4.5rem auto 0;max-width:46rem}
.feel-quote blockquote{margin:0;font-family:var(--serif);font-size:clamp(1.5rem,2.6vw,2.2rem);line-height:1.25}
.feel-quote figcaption{margin-top:1.2rem;font-size:.9rem;font-weight:500}
.feel-quote figcaption span{display:block;font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-2);margin-top:.3rem}
.feel-cta{margin-top:3rem;display:flex;flex-direction:column;align-items:center;gap:1rem}
.micro{margin:1.1rem 0 0;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;font-weight:500;color:rgba(22,20,15,.6)}
.feel-cta .micro{margin:0}
.photo-band .micro{color:rgba(243,244,239,.75);text-align:center}
@media (max-width:980px){.senses{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.senses{grid-template-columns:1fr}}

/* Tactile feedback on every button */
.btn:active{transform:translateY(0) scale(.985);transition-duration:.15s}

/* Sticky booking bar on phones */
.stickybook{display:none}
@media (max-width:760px){
  .stickybook{display:flex;flex-direction:column;align-items:center;position:fixed;left:12px;right:12px;bottom:12px;z-index:140;padding:.95rem 1rem .8rem;
    background:var(--charcoal);color:var(--white);text-decoration:none;box-shadow:0 18px 40px -18px rgba(22,20,15,.7);
    transform:translateY(140%);transition:transform .7s cubic-bezier(.16,1,.3,1)}
  .stickybook span{font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;font-weight:500}
  .stickybook small{margin-top:.3rem;font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
  .stickybook.show{transform:none}
  .ftr{padding-bottom:6.5rem}
}

/* ---- Nervous patients panel: more air, one idea per screen ---- */
.calm{padding-block:clamp(7rem,13vw,11rem);background:linear-gradient(180deg,var(--white),#EFE6D6 55%,var(--white));text-align:center}
.calm-wrap{max-width:52rem}
.calm .eyebrow{justify-content:center}
.calm h2{margin-inline:auto}
.calm .lede{margin:1.8rem auto 0;max-width:40rem}
.calm-list{list-style:none;margin:3rem auto 0;padding:0;display:grid;gap:1rem;max-width:34rem;text-align:left}
.calm-list li{position:relative;padding-left:2rem;font-size:1.05rem;color:var(--charcoal)}
.calm-list li::before{content:"";position:absolute;left:0;top:.75em;width:1.1rem;height:1px;background:var(--gold-2)}
.calm-quote{margin:3.6rem auto 0;max-width:40rem}
.calm-quote blockquote{margin:0;font-family:var(--serif);font-size:clamp(1.4rem,2.3vw,1.9rem);line-height:1.28}
.calm-quote figcaption{margin-top:1rem;font-size:.9rem;font-weight:500}
.calm-quote figcaption span{display:block;font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-2);margin-top:.3rem}

/* ---- Site-wide paper texture ---- */
.grain{position:fixed;inset:0;z-index:95;pointer-events:none;opacity:.07;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .3 0 0 0 0 .24 0 0 0 .6 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---- Warmth deepens as you scroll toward booking ---- */
.warmth{position:fixed;inset:0;z-index:94;pointer-events:none;mix-blend-mode:multiply;opacity:0;
  background:radial-gradient(120% 90% at 50% 100%,rgba(214,170,110,.55),rgba(214,170,110,.18) 60%,rgba(214,170,110,0))}

/* ---- Booking form: gentle, warm responses ---- */
.chip span{transition:background .45s cubic-bezier(.16,1,.3,1),color .45s,border-color .45s,transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s}
.chip input:checked+span{transform:translateY(-1px);box-shadow:0 10px 22px -14px rgba(174,139,90,.8)}
.chip:active span{transform:scale(.97)}
.f input:focus,.f textarea:focus,.f select:focus{box-shadow:0 0 0 4px rgba(237,221,187,.6);transition:box-shadow .4s}

/* inline gold words: room for italic overhang + descenders so the gold paint isn't clipped */
.statement p.big em,.dark h2 em,.finance h3 em{padding:.06em .16em .24em .05em;margin:0 -.16em 0 -.05em}
/* robust in Safari too: treat inline gold words as a single block with generous paint room */
.statement p.big em,.dark h2 em,.finance h3 em{display:inline-block;padding:.12em .28em .34em .22em;margin:-.12em -.28em -.34em -.22em;
  -webkit-box-decoration-break:slice;box-decoration-break:slice;vertical-align:baseline}
.hero h1 em,.phero h1 em{padding:.12em .3em .36em .22em;margin:-.12em -.3em -.36em -.22em}
.ln{padding:0 .34em .4em;margin:0 -.34em -.4em}


/* =====================================================================
   HEADLINE v2: letter-by-letter rise, gliding gold word, leak-proof shimmer
   ===================================================================== */
.hero h1.chars .ln>span{transform:none!important;transition:none!important}
.hero h1 .ch{display:inline-block}
.hero h1 .emw{display:inline-block;white-space:nowrap;vertical-align:baseline;transition:width .95s cubic-bezier(.65,0,.35,1)}
@media (prefers-reduced-motion:no-preference){
  .hero h1 .ch{transform:translateY(105%) rotate(6deg);opacity:0;transform-origin:0 100%;
    transition:transform 1.25s cubic-bezier(.16,1,.3,1) var(--cd,0s),opacity .9s cubic-bezier(.16,1,.3,1) var(--cd,0s)}
  .hero h1.in .ch{transform:none;opacity:1}
}

/* Leak-proof gold: solid gold text, shimmer is a masked copy of the same letters */
em.gold{position:relative;color:var(--g,var(--gold-2))!important;-webkit-text-fill-color:currentColor;
  background:none!important;-webkit-background-clip:border-box!important;background-clip:border-box!important;animation:none!important}
.hero h1 em.gold{--g:var(--gold-2)}
.dark h2 em.gold,.finance h3 em.gold{--g:var(--gold)}
@media (prefers-reduced-motion:no-preference){
  em.gold::after{content:attr(data-w);position:absolute;inset:0;padding:inherit;color:#F6E6BE;-webkit-text-fill-color:#F6E6BE;pointer-events:none;white-space:inherit;
    -webkit-mask-image:linear-gradient(100deg,transparent 0%,transparent 42%,#000 50%,transparent 58%,transparent 100%);mask-image:linear-gradient(100deg,transparent 0%,transparent 42%,#000 50%,transparent 58%,transparent 100%);
    -webkit-mask-size:300% 100%;mask-size:300% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
    -webkit-mask-position:100% 0;mask-position:100% 0;animation:goldSweep 7s 3.5s ease-in-out infinite}
  .statement em.gold::after{animation-delay:1s}.dark h2 em.gold::after{animation-delay:1.8s}.finance h3 em.gold::after{animation-delay:2.6s}.phero h1 em.gold::after{animation-delay:2.4s}
  @keyframes goldSweep{0%,55%{-webkit-mask-position:100% 0;mask-position:100% 0}100%{-webkit-mask-position:0 0;mask-position:0 0}}
}

/* Soft wave through "built on" each time the gold word changes; gentler word swap */
.hero h1 em.swap-out{transform:translateY(-70%);opacity:0;transition:transform .9s cubic-bezier(.65,0,.35,1),opacity .7s ease}
.hero h1 em.swap-pre{transform:translateY(70%);opacity:0;transition:none}
.hero h1 em.swap-in{transform:none;opacity:1;transition:transform 1.2s cubic-bezier(.16,1,.3,1),opacity 1s ease}
@media (prefers-reduced-motion:no-preference){
  .hero h1.in .ch.wave{animation:chWave 1.7s cubic-bezier(.45,0,.2,1) var(--wd,0s) both}
  @keyframes chWave{0%{transform:none;opacity:1}38%{transform:translateY(-14%) rotate(-2deg);opacity:.55}100%{transform:none;opacity:1}}
}

/* ---- Hero rewrite cycle: dissolve, rewrite, then a single gold shimmer ---- */
.hero h1 .emw{transition:none!important;width:auto!important}
.hero h1 .gc{display:inline-block}
.hero h1.in .ch.out,.hero h1 .gc.out{opacity:0;transform:translateY(-28%);transition:opacity .45s ease var(--od,0s),transform .6s cubic-bezier(.65,0,.35,1) var(--od,0s)!important}
.hero h1.in .ch.pre,.hero h1 .gc.pre{opacity:0;transform:translateY(55%) rotate(5deg);transition:none!important}
.hero h1.in .ch.write,.hero h1 .gc.write{opacity:1;transform:none;transition:transform 1.05s cubic-bezier(.16,1,.3,1) var(--wd,0s),opacity .8s ease var(--wd,0s)!important}
.hero h1 .ch.wave{animation:none!important}
.hero h1 em.swap-out,.hero h1 em.swap-pre,.hero h1 em.swap-in{transform:none!important;opacity:1!important}
.hero h1 em.gold::after{animation:none!important;-webkit-mask-position:110% 0;mask-position:110% 0}
@media (prefers-reduced-motion:no-preference){
  .hero h1 em.gold.shine::after{animation:goldOnce 3.2s ease-in-out forwards!important;-webkit-mask-image:linear-gradient(100deg,transparent 0%,transparent 40%,#000 50%,transparent 60%,transparent 100%);mask-image:linear-gradient(100deg,transparent 0%,transparent 40%,#000 50%,transparent 60%,transparent 100%)}
  @keyframes goldOnce{from{-webkit-mask-position:110% 0;mask-position:110% 0}to{-webkit-mask-position:-10% 0;mask-position:-10% 0}}
}

/* ---- Gold word: soft ink-like wipe instead of per-letter split (keeps italic spacing perfect) ---- */
.hero h1 em.gold{-webkit-mask-image:linear-gradient(90deg,#000 0%,#000 44%,transparent 56%,transparent 100%);mask-image:linear-gradient(90deg,#000 0%,#000 44%,transparent 56%,transparent 100%);
  -webkit-mask-size:240% 100%;mask-size:240% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 0;mask-position:0 0}
.hero h1 em.gold.wipe-hide{-webkit-mask-position:100% 0;mask-position:100% 0;transition:-webkit-mask-position .85s cubic-bezier(.65,0,.35,1),mask-position .85s cubic-bezier(.65,0,.35,1)}
.hero h1 em.gold.wipe-show{-webkit-mask-position:0 0;mask-position:0 0;transition:-webkit-mask-position 1.4s cubic-bezier(.33,0,.2,1) var(--gd,0s),mask-position 1.4s cubic-bezier(.33,0,.2,1) var(--gd,0s)}
/* First load: the gold word is drawn in with the same ink-wipe, after "built on" has risen */
.hero h1 .emw,.hero h1.in .emw{opacity:1!important;transform:none!important}
.hero h1 em.gold{transition:-webkit-mask-position 1.4s cubic-bezier(.33,0,.2,1) var(--gd,0s),mask-position 1.4s cubic-bezier(.33,0,.2,1) var(--gd,0s)}
.hero h1:not(.in) em.gold{-webkit-mask-position:100% 0;mask-position:100% 0}
@media (prefers-reduced-motion:reduce){.hero h1:not(.in) em.gold{-webkit-mask-position:0 0;mask-position:0 0}}

/* ---- Gold cursor replaces the system cursor (fine pointers only) ---- */
@media (hover:hover) and (pointer:fine){
  .has-halo,.has-halo *{cursor:none!important}
  .has-halo input,.has-halo textarea,.has-halo select,.has-halo [contenteditable]{cursor:text!important}
  .has-halo select{cursor:pointer!important}
}
.halo{border-color:rgba(174,139,90,.85)}
.halo.press{width:26px;height:26px;margin:-13px 0 0 -13px;background:rgba(190,158,110,.18)}
.halo.field,.halo-dot.field{opacity:0!important}
.halo-dot{position:fixed;left:0;top:0;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--gold-2);z-index:701;pointer-events:none;opacity:0;transition:opacity .3s,width .3s,height .3s,margin .3s}
.halo-dot.on{opacity:1}
@media (hover:none),(pointer:coarse){.halo-dot{display:none}}

/* ---- Background signature signed by scrolling (watermark over section backgrounds) ---- */
.sig-scroll{position:fixed;z-index:93;left:50%;top:52%;width:min(82vw,1100px);transform:translate(-50%,-50%) rotate(-6deg);
  color:rgba(174,139,90,.11);mix-blend-mode:multiply;pointer-events:none;opacity:0;transition:opacity 1s ease,color 1.6s ease;--sp:-6%;
  -webkit-mask-image:linear-gradient(90deg,#000 0%,#000 var(--sp),transparent calc(var(--sp) + 6%));mask-image:linear-gradient(90deg,#000 0%,#000 var(--sp),transparent calc(var(--sp) + 6%))}
.sig-scroll.show{opacity:1}
.sig-scroll svg{width:100%;height:auto;display:block}
@media (max-width:760px){.sig-scroll{width:110vw;color:rgba(174,139,90,.14)}}
@media (prefers-reduced-motion:reduce){.sig-scroll{-webkit-mask-image:none;mask-image:none}}
.ftr{z-index:1}

/* Once fully signed, the signature settles into gold */
.sig-scroll.done{color:rgba(186,146,88,.3);mix-blend-mode:multiply}
.sig-scroll svg{transition:filter 1.6s ease}
.sig-scroll.done svg{filter:drop-shadow(0 0 14px rgba(214,176,112,.25))}
@media (max-width:760px){.sig-scroll{color:rgba(174,139,90,.09)}.sig-scroll.done{color:rgba(190,158,110,.28)}}

/* Maps: solid, neutral, crisp (full colour on hover) */
.map iframe{filter:grayscale(.85) contrast(1.08) brightness(.98)!important;opacity:1!important}
.pc:hover .map iframe{filter:none!important}
.map::before{display:none}

/* Footer signature: fully inside the footer, clearly legible */
.ftr{overflow:hidden}
.ftr-sig{right:4vw;bottom:2.5rem;width:min(42vw,560px);color:rgba(212,175,110,.16)}
@media (max-width:720px){.ftr-sig{right:5vw;bottom:1.5rem;width:72vw}}

/* Name + post-nominals */
.postnom{margin:1.1rem 0 0;padding-bottom:1.3rem;border-bottom:1px solid rgba(174,139,90,.35);font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--gold-2,#8a6d45);line-height:1.9}

/* Shimmer on light backgrounds: richer gold highlight + soft glow (cream vanishes on white) */
@media (prefers-reduced-motion:no-preference){
  .about h2 em.gold::after{color:#E7C57E;-webkit-text-fill-color:#E7C57E;text-shadow:none;
    -webkit-mask-image:linear-gradient(100deg,transparent 0%,transparent 38%,#000 50%,transparent 62%,transparent 100%);mask-image:linear-gradient(100deg,transparent 0%,transparent 38%,#000 50%,transparent 62%,transparent 100%);
    animation:goldSweep 6s 1.2s ease-in-out infinite}
}
.about h2 em.gold{--g:#A47E46}
/* Keep the shimmer copy on the same baseline as the word (tight h2 line-height shifted it up) */
.about h2 em.gold{display:inline-block}
.about h2 em.gold::after{line-height:inherit}

/* Results band: translucent smoked glass with soft gold light, no photo */
.rband{background:rgba(28,25,20,.80)}
.rband::before{content:"";position:absolute;inset:-10% -5%;pointer-events:none;
  background:
    radial-gradient(55% 70% at 18% 20%,rgba(201,163,104,.22),transparent 70%),
    radial-gradient(45% 60% at 85% 75%,rgba(174,139,90,.16),transparent 70%),
    radial-gradient(30% 40% at 60% 10%,rgba(237,221,187,.08),transparent 70%)}
.rband::after{background:
    linear-gradient(180deg,rgba(255,255,255,.04),transparent 30%,transparent 70%,rgba(0,0,0,.18))}
@media (prefers-reduced-motion:no-preference){
  .rband::before{animation:rbandDrift 18s ease-in-out infinite alternate}
  @keyframes rbandDrift{from{transform:translate3d(-2%,-1%,0)}to{transform:translate3d(2%,1.5%,0)}}
}

/* Results band: single colour, lightens softly under the cursor */
.rband::after{background:none}
.rband::before{animation:none!important;transform:none!important;inset:0;opacity:0;transition:opacity .8s ease;
  background:radial-gradient(420px circle at var(--rx,50%) var(--ry,50%),rgba(237,221,187,.13),rgba(237,221,187,.05) 40%,transparent 70%)}
.rband.lit::before{opacity:1}
.rband{background:rgba(17,15,12,.92)}

/* 0% gold word: same baseline fix as the About heading */
.finance h3 em.gold{display:inline-block}
.finance h3 em.gold::after{line-height:inherit}

/* Click-to-load maps */
.map-off{display:grid;place-items:center}
.map-load{all:unset;box-sizing:border-box;cursor:pointer;display:grid;justify-items:center;gap:.45rem;text-align:center;padding:1.5rem;width:100%;height:100%;align-content:center;color:var(--charcoal,#16140F);transition:background .5s ease}
.map-load:hover,.map-load:focus-visible{background:rgba(255,255,255,.18)}
.map-load:focus-visible{outline:1px solid var(--gold-2,#8a6d45);outline-offset:-6px}
.map-load b{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;font-weight:500}
.map-load small{font-size:.74rem;max-width:26ch;line-height:1.5;opacity:.75}
.map-load small a{color:inherit}
.map-pin{width:14px;height:14px;border:1.5px solid var(--gold-2,#8a6d45);border-radius:50% 50% 50% 0;transform:rotate(-45deg);margin-bottom:.3rem}
.map iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* Privacy page */
.prose .wrap{max-width:760px}
.prose h2{font-size:clamp(1.5rem,2.4vw,2rem);margin:3rem 0 1rem}
.prose h2:first-child{margin-top:0}
.prose p,.prose li{line-height:1.75}
.prose ul{padding-left:1.2rem;display:grid;gap:.6rem}
.ftr .legal a{color:inherit}

/* Bio sign-off: signature writes itself left to right with a soft pen edge when it comes into view */
@media (prefers-reduced-motion:no-preference){
  .sig-big svg{-webkit-mask-image:linear-gradient(90deg,#000 45%,transparent 55%);mask-image:linear-gradient(90deg,#000 45%,transparent 55%);
    -webkit-mask-size:300% 100%;mask-size:300% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
    -webkit-mask-position:100% 0;mask-position:100% 0;
    transition:-webkit-mask-position 2.8s cubic-bezier(.55,.05,.35,1) .7s,mask-position 2.8s cubic-bezier(.55,.05,.35,1) .7s}
  .sig-big.in svg{-webkit-mask-position:0 0;mask-position:0 0}
}

/* Bio signature: turns gold on hover, with a shimmer that follows the cursor */
.sig-big{position:relative}
.sig-big>svg{display:block;width:100%;height:auto;transition:color .7s ease}
.sig-big.signed:hover>svg:not(.sig-shine){color:var(--gold-2,#AE8B5A)}
.sig-big svg.sig-shine{position:absolute;left:0;top:0;pointer-events:none;color:#F4E1AE;opacity:0;transition:opacity .6s ease;
  -webkit-mask-image:radial-gradient(70px circle at var(--sx,50%) var(--sy,50%),#000 0%,rgba(0,0,0,.5) 45%,transparent 75%)!important;
  mask-image:radial-gradient(70px circle at var(--sx,50%) var(--sy,50%),#000 0%,rgba(0,0,0,.5) 45%,transparent 75%)!important;
  -webkit-mask-size:100% 100%!important;mask-size:100% 100%!important;-webkit-mask-position:0 0!important;mask-position:0 0!important;transition:opacity .6s ease!important}
.sig-big.signed:hover svg.sig-shine{opacity:1}
.sig-big{width:min(340px,75%)}
.sig-big svg.sig-shine{-webkit-mask-image:radial-gradient(100px circle at var(--sx,50%) var(--sy,50%),#000 0%,rgba(0,0,0,.5) 45%,transparent 75%)!important;mask-image:radial-gradient(100px circle at var(--sx,50%) var(--sy,50%),#000 0%,rgba(0,0,0,.5) 45%,transparent 75%)!important}

/* Cookie banner */
.cookie{position:fixed;z-index:1200;left:50%;bottom:1.2rem;transform:translate(-50%,calc(100% + 2rem));width:min(680px,calc(100% - 32px));
  background:rgba(17,15,12,.94);color:rgba(243,244,239,.86);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:1px solid rgba(174,139,90,.35);padding:1.1rem 1.3rem;display:flex;gap:1.2rem;align-items:center;font-size:.84rem;line-height:1.55;
  transition:transform .9s cubic-bezier(.16,1,.3,1)}
.cookie.on{transform:translate(-50%,0)}
.cookie p{margin:0;flex:1}
.cookie a{color:var(--gold,#C9A368)}
.cookie .cb{display:flex;gap:.6rem;flex-shrink:0}
.cookie button{all:unset;cursor:pointer;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;padding:.75rem 1.1rem;border:1px solid rgba(174,139,90,.6);color:var(--white,#F3F4EF);transition:background .4s,color .4s}
.cookie button.yes{background:var(--gold,#C9A368);border-color:var(--gold,#C9A368);color:#15130F}
.cookie button:hover{background:rgba(201,163,104,.18)}.cookie button.yes:hover{background:#D9B67C}
@media (max-width:600px){.cookie{flex-direction:column;align-items:stretch;bottom:5.2rem}.cookie .cb button{flex:1;text-align:center}}
.linkbtn{all:unset;cursor:pointer;color:var(--gold-2,#8a6d45);text-decoration:underline}

/* Journal */
.jgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:clamp(1.6rem,3vw,2.6rem)}
.jcard{display:block;text-decoration:none;color:inherit}
.jimg{aspect-ratio:4/3;background-size:cover;background-position:center;margin-bottom:1.3rem;overflow:hidden;transition:transform 1.2s cubic-bezier(.16,1,.3,1),filter 1.2s}
.jcard:hover .jimg{transform:scale(1.02);filter:brightness(1.04)}
.jmeta{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--gold-2,#8a6d45);margin:0 0 .9rem}
.jcard h3{font-family:var(--serif);font-weight:400;font-size:clamp(1.6rem,2.4vw,2rem);line-height:1.1;margin:0 0 .7rem}
.jcard p{margin:0 0 1.1rem;line-height:1.65;opacity:.85}
.jmore{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;border-bottom:1px solid currentColor;padding-bottom:.2rem}
.post-hd{padding-bottom:2.2rem}
.post-hd h1{max-width:18ch}
.post-hd .eyebrow a{color:inherit;text-decoration:none}
.post-img{aspect-ratio:21/9;background-size:cover;background-position:center}
.post-body{max-width:720px;padding-top:clamp(2.5rem,5vw,4rem);padding-bottom:1rem}
.post-body p,.post-body li{font-size:1.06rem;line-height:1.8}
.post-body .lede{font-size:clamp(1.25rem,1.8vw,1.45rem);line-height:1.55;font-family:var(--serif)}
.post-body h2{font-size:clamp(1.6rem,2.6vw,2.2rem);margin:2.8rem 0 1rem}
.post-body ul{padding-left:1.2rem;display:grid;gap:.5rem}
.post-body em{font-style:italic}
.post-body blockquote{margin:2.6rem 0;padding:0 0 0 1.6rem;border-left:1px solid var(--gold,#C9A368);font-family:var(--serif);font-style:italic;font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.3;color:var(--gold-2,#8a6d45)}
.post-author{max-width:720px;margin:3rem auto 0;display:grid;grid-template-columns:110px 1fr;gap:1.6rem;align-items:start;padding:2rem 0;border-top:1px solid rgba(174,139,90,.35);border-bottom:1px solid rgba(174,139,90,.35)}
.pa-img{aspect-ratio:1;background-size:cover;background-position:center top;border-radius:50%}
.post-author h3{font-family:var(--serif);font-weight:400;font-size:1.6rem;margin:.2rem 0 .5rem}
.post-author p{margin:0 0 1.1rem;line-height:1.6}
.post-author .eyebrow{margin:0}
.post-note{max-width:720px;margin:1.4rem auto 0;font-size:.82rem;opacity:.65;line-height:1.6}
.jrel{padding-top:clamp(4rem,8vw,6rem)}
@media (max-width:600px){.post-author{grid-template-columns:72px 1fr;gap:1.1rem}}

/* Nav with Journal: never wrap; drop "Your visit" (still in footer & mobile menu) on mid-size screens */
.nav a{white-space:nowrap}
@media (max-width:1320px){.nav{gap:1.15rem}.nav li:nth-child(2){display:none}}
@media (max-width:1160px){
  .nav,.hdr .cta{display:none}
  .hdr .bar{grid-template-columns:1fr auto 1fr}.burger{display:block}
  .hdr .cta-m{display:inline-flex;justify-self:end}
}

/* ---- Mobile polish (2026-10-21 phone check) ---- */
@media (max-width:600px){
  /* Cookie banner: compact strip above the sticky booking bar */
  .cookie{flex-direction:row;align-items:center;gap:.8rem;padding:.75rem .85rem;font-size:.74rem;line-height:1.45;bottom:5.6rem}
  .cookie p{flex:1}
  .cookie .cb{flex-direction:column;gap:.4rem}
  .cookie button{padding:.55rem .8rem;font-size:.6rem;letter-spacing:.16em;text-align:center}
  /* Hero line fits on one line */
  .hero .eyebrow{letter-spacing:.14em;font-size:.62rem}
  /* Footer: signature sits below the small print instead of behind it */
  .ftr{padding-bottom:9.5rem}
  .ftr-sig{right:50%;transform:translateX(50%);bottom:5.6rem;width:56vw}
  /* Article header: breathing room between title and byline */
  .post-hd .jmeta{margin-top:1.3rem}
}
.post-hd .jmeta{margin-top:1.4rem}
@media (max-width:600px){
  .ftr{padding-bottom:calc(50vw * .66 + 3.5rem)}
  .ftr-sig{bottom:1.8rem;width:50vw}
}

/* ---- Mobile polish, round 2 ---- */
.res-more{display:none}
@media (max-width:600px){
  /* Gallery: first four cases, the rest one tap away */
  .results:not(.open) .res:nth-child(n+5){display:none}
  .res-more{display:flex;justify-content:center;margin:1.6rem 0 .4rem}
  .results.open + .res-more{display:none}
  /* Scrolling signature: a whisper on small screens so it never competes with text */
  .sig-scroll{width:120vw;opacity:0}
  .sig-scroll.show{opacity:.45}
  .sig-scroll.done{color:rgba(186,146,88,.16)}
  /* Prices in two columns */
  .price{grid-template-columns:1fr 1fr}
  .price div{padding:1.2rem .8rem 1.2rem 0}
  .price strong{font-size:1.9rem}
  .price small{font-size:.6rem;letter-spacing:.14em;min-height:2.2em}
  /* Stray "?" marker above Common questions */
  #faq .tgroup .k{display:none}
}
@media (max-width:600px){.phero .eyebrow{letter-spacing:.12em;font-size:.6rem}}

/* Header tabs: sit further left with clear space before the signature logo */
@media (min-width:1161px){
  .hdr .bar{padding-left:clamp(1.25rem,2vw,2rem)}
  .hdr .nav{gap:1.15rem}
  .hdr .nav a{letter-spacing:.13em}
}
@media (min-width:1161px) and (max-width:1320px){.hdr .nav{gap:1rem}}
@media (min-width:1161px){.hdr .nav li:nth-child(2){display:none}.hdr .nav{gap:1.6rem}}
@media (min-width:1161px) and (max-width:1360px){.hdr .nav{gap:1rem}}
