:root{
  --ink:#1E1830;        /* deep aubergine */
  --ink-2:#2B2342;
  --plum:#4A3763;
  --ivory:#F8F3EC;
  --sand:#EFE6DA;
  --gold:#B48A55;       /* bronze-gold */
  --gold-d:#8F6A3A;
  --rose:#C9A3A0;       /* dusty rose accent */
  --text:#2A2536;
  --muted:#6C6578;
  --muted-hover:#52495C; /* same hue as --muted, deepened for AA contrast on the richer hover tints below */
  --white:#fff;
  --g-gold:linear-gradient(135deg,#D3AE7A 0%,#B48A55 45%,#8F6A3A 100%);
  --g-dark:linear-gradient(135deg,#1E1830 0%,#3A2B57 55%,#4A3763 100%);
  --g-warm:linear-gradient(180deg,#F8F3EC 0%,#EFE6DA 100%);
  --g-text:linear-gradient(90deg,#8F6A3A,#C9A3A0 60%,#B48A55);
  --g-gold-loop:linear-gradient(90deg,#D3AE7A,#8F6A3A 45%,#B48A55 65%,#D3AE7A 100%); /* start==end color for a seamless shimmer loop on clipped text */
  --radius:14px;
  --shadow:0 18px 50px -22px rgba(30,24,48,.35);
  --serif:'Cormorant Garamond',Georgia,serif;
  --sans:'Inter',system-ui,-apple-system,Segoe UI,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--text);background:var(--ivory);line-height:1.65;font-size:17px;-webkit-font-smoothing:antialiased}
img,svg{max-width:100%;display:block}
a{color:inherit}
.wrap{width:min(1160px,92%);margin-inline:auto}
.narrow{width:min(760px,92%);margin-inline:auto}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.1;letter-spacing:-.01em}
h1{font-size:clamp(2.6rem,6vw,4.6rem)}
h2{font-size:clamp(2rem,4vw,3.1rem)}
h3{font-size:1.55rem}
em{font-style:italic;color:var(--gold-d);background:var(--g-text);background-size:280% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shimmer 7s linear infinite}
.eyebrow{font:600 .78rem var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--gold-d);margin-bottom:1rem;display:inline-block;position:relative;padding-bottom:.4rem}
.eyebrow::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--g-gold);transform-origin:left;transition:transform .7s cubic-bezier(.2,.8,.2,1) .1s}
.js .eyebrow::after{transform:scaleX(0)}
.js .rv.in .eyebrow::after{transform:scaleX(1)}
.lead{font-size:1.18rem;color:var(--muted)}
section{padding:clamp(4rem,9vw,7rem) 0}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:.7rem 1rem;z-index:200}
.skip:focus{left:8px;top:8px}

/* premium section background (Services/About): reuses the hero's asymmetric-glow language at
   light-mode opacity, so the plain ivory sections between the dark ones feel considered rather
   than flat white space. (A tiled ring-motif companion class, .bg-rings, was tried here too but
   read as an ugly solid "bullseye"/plate shape rather than a subtle texture -- removed.) */
/* background-attachment:fixed anchors the glow to the VIEWPORT rather than the element, so on a
   tall section it stays visible as you scroll through it, instead of being used up in the first
   screenful the way a gradient positioned by element-relative percentages would be */
.bg-glow{background:radial-gradient(1000px 620px at 88% 0%,rgba(180,138,85,.22) 0%,transparent 62%),radial-gradient(800px 560px at 6% 100%,rgba(201,163,160,.26) 0%,transparent 62%),var(--ivory);background-attachment:fixed,fixed,scroll}
@media(max-width:960px){.bg-glow{background-attachment:scroll,scroll,scroll}}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;font:600 1rem var(--sans);padding:1.05rem 1.9rem;border-radius:999px;text-decoration:none;border:1.5px solid transparent;cursor:pointer;transition:transform .2s,background-position .4s,filter .2s,box-shadow .2s,color .2s}
.btn:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.btn-primary{background:var(--g-gold);background-size:160% 100%;background-position:0 0;color:#fff;box-shadow:0 10px 28px -10px rgba(180,138,85,.8)}
.btn-primary:hover{background-position:100% 0;transform:translateY(-2px)}
.btn-ghost{border-color:currentColor;color:inherit;background:transparent}
.btn-ghost:hover{background:rgba(255,255,255,.1)}
.btn-dark{background:var(--g-dark);color:#fff}
.btn-dark:hover{filter:brightness(1.15);transform:translateY(-2px)}
.micro{font-size:.88rem;color:var(--muted);margin-top:.9rem}

/* nav */
header{position:sticky;top:0;z-index:100;background:linear-gradient(90deg,rgba(248,243,236,.94),rgba(239,230,218,.94));backdrop-filter:blur(10px);border-bottom:1px solid rgba(30,24,48,.08)}
.nav{display:flex;align-items:center;justify-content:space-between;height:74px}
.logo{display:flex;align-items:center;gap:.75rem;text-decoration:none}
.logo svg{width:42px;height:42px;transition:transform .4s cubic-bezier(.2,.8,.2,1),filter .4s}
.logo:hover svg{transform:scale(1.1) rotate(-6deg);filter:brightness(1.15) drop-shadow(0 4px 10px rgba(180,138,85,.55))}
.logo b{font:600 1.35rem var(--serif);letter-spacing:.02em;line-height:1;display:block}
.logo small{font:500 .62rem var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--gold-d)}
nav ul{display:flex;gap:2rem;list-style:none;align-items:center}
nav a{position:relative;text-decoration:none;font-weight:500;font-size:.95rem}
nav a:hover{color:var(--gold-d)}
nav a:not(.btn)::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;background:var(--g-gold);transform:scaleX(0);transform-origin:center;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
nav a:not(.btn):hover::after{transform:scaleX(1)}
nav a.active{color:var(--gold-d)}
nav a.active:not(.btn)::after{transform:scaleX(1)}
.nav .btn{padding:.75rem 1.4rem;font-size:.92rem}
.burger{display:none;background:none;border:0;width:44px;height:44px;cursor:pointer}
.burger span{display:block;width:24px;height:2px;background:var(--ink);margin:6px auto;transition:.2s}

/* hero */
.hero{background:radial-gradient(900px 500px at 88% -5%,rgba(201,163,160,.35) 0%,transparent 60%),radial-gradient(1100px 600px at 10% 110%,rgba(180,138,85,.22) 0%,transparent 60%),var(--g-dark);color:#fff;padding:clamp(4rem,9vw,7.5rem) 0 0;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:3rem;align-items:end}
.hero .eyebrow{color:var(--rose)}
.hero h1 .word{display:inline-block;opacity:0;animation:riseIn .8s cubic-bezier(.2,.8,.2,1) forwards}
.hero h1 em,.outcomes h2 em,.book h2 em{background:linear-gradient(90deg,#E0BC8A,#C9A3A0 45%,#D3AE7A 65%,#E0BC8A);background-size:280% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shimmer 7s linear infinite}
@keyframes shimmer{0%{background-position:0% 50%}100%{background-position:200% 50%}}
@keyframes riseIn{from{opacity:0;transform:translateY(.4em)}to{opacity:1;transform:translateY(0)}}
.hero p.lead{color:rgba(255,255,255,.78);margin:1.6rem 0 2.2rem;max-width:34rem}
.cta-row{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}
.hero .micro{color:rgba(255,255,255,.6)}
.portrait{position:relative;aspect-ratio:4/5;border-radius:260px 260px 0 0;background:linear-gradient(160deg,#7A5F9A,#4A3763 40%,#2b2342 75%,#1a1428);border:1px solid rgba(255,255,255,.12);display:grid;place-items:center;gap:1rem;overflow:hidden}
.portrait::before{content:"";position:absolute;inset:auto -20% -30% -20%;height:60%;background:radial-gradient(closest-side,rgba(180,138,85,.35),transparent)}
.portrait .crest{position:relative;width:64%;filter:drop-shadow(0 18px 34px rgba(0,0,0,.4))}
.portrait .crest-sm{width:58%}
.portrait .crest-cap{position:relative;font:500 .82rem var(--serif);font-style:italic;letter-spacing:.06em;color:rgba(255,255,255,.65)}
.trust{border-top:1px solid rgba(255,255,255,.12);margin-top:4rem;padding:1.6rem 0}
.trust ul{list-style:none;display:flex;flex-wrap:wrap;gap:1rem 2.6rem;justify-content:center;color:rgba(255,255,255,.7);font-size:.9rem}
.trust .count{font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums}
.trust li{position:relative;z-index:0;transition:color .35s}
/* soft pill highlight behind each stat on hover, via a pseudo so it doesn't shift the row's layout */
.trust li::after{content:"";position:absolute;inset:-.5rem -.9rem;background:rgba(255,255,255,.08);border:1px solid rgba(180,138,85,.4);border-radius:999px;opacity:0;transform:scale(.9);transition:opacity .35s,transform .35s;z-index:-1;pointer-events:none}
.trust li:hover{color:#fff}
.trust li:hover::after{opacity:1;transform:scale(1)}
.trust li::before{content:"◆";color:var(--gold);margin-right:.6rem;font-size:.6rem;vertical-align:middle;transition:color .35s}
.trust li:hover::before{color:#fff}

/* page hero (smaller banner used on Services/About/Contact) */
.page-hero{background:radial-gradient(900px 500px at 88% -5%,rgba(201,163,160,.3) 0%,transparent 60%),radial-gradient(1100px 600px at 10% 110%,rgba(180,138,85,.2) 0%,transparent 60%),var(--g-dark);color:#fff;padding:clamp(3.4rem,8vw,5.2rem) 0 clamp(2.8rem,6vw,3.6rem);text-align:center}
.page-hero .eyebrow{color:var(--rose)}
.page-hero h1{margin-bottom:1rem}
.page-hero .lead{color:rgba(255,255,255,.78);max-width:42rem;margin-inline:auto}
.page-hero h1 em{background:linear-gradient(90deg,#E0BC8A,#C9A3A0 45%,#D3AE7A 65%,#E0BC8A);background-size:280% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shimmer 7s linear infinite}

/* cta banner (used on the homepage in place of the full booking section, and to close Services/About) */
.cta-banner{background:var(--g-dark);color:#fff;text-align:center;position:relative;overflow:hidden}
.cta-banner::before{content:"";position:absolute;width:600px;height:600px;right:-220px;top:-220px;background:radial-gradient(closest-side,rgba(180,138,85,.3),transparent)}
.cta-banner .narrow{position:relative}
.cta-banner .eyebrow{color:var(--rose)}
.cta-banner h2{margin-bottom:1rem}
.cta-banner p{color:rgba(255,255,255,.75);max-width:36rem;margin:0 auto 1.8rem}

/* industry marquee */
.marquee-section{background:var(--sand);padding:2rem 0 2.2rem;overflow:hidden}
.marquee-section .eyebrow{margin-bottom:1.2rem}
.marquee{position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee-track{display:flex;width:max-content;animation:marquee 28s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-track .set{display:flex;align-items:center;gap:.9rem;flex:none;padding-right:.9rem}
.marquee-track span{white-space:nowrap;font:600 .8rem var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.marquee-track .dot{color:var(--gold);font-size:.55rem;opacity:.7;letter-spacing:0;text-transform:none}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){
  .marquee-track{animation:none;flex-wrap:wrap;width:auto;justify-content:center;row-gap:.6rem}
  .marquee-track .set[aria-hidden]{display:none}
}

/* problem */
.problem{background:var(--g-warm);background-image:radial-gradient(rgba(180,138,85,.16) 1px,transparent 1px),var(--g-warm);background-size:26px 26px,100% 100%}
.problem .narrow{text-align:center}
.problem h2{margin-bottom:1.6rem}
.quotes{display:grid;gap:1rem;margin:2.4rem 0;text-align:left}
.quotes p{font:italic 500 1.35rem/1.4 var(--serif);padding:1.1rem 1.6rem;border-left:3px solid var(--gold);background:var(--white);border-radius:0 var(--radius) var(--radius) 0;transition:background .4s,transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,border-left-color .35s}
.quotes p:hover{background:linear-gradient(160deg,#FBEFD9 0%,#F0DBB8 100%);transform:translateX(8px);box-shadow:0 16px 34px -16px rgba(180,138,85,.4);border-left-color:var(--gold-d)}
.stat-line{font-size:.95rem;color:var(--muted)}

/* who */
.who{background:linear-gradient(180deg,#EFE6DA 0%,#F3EAE0 55%,#F8F3EC 100%)}
.head{max-width:700px;margin-bottom:3rem}
.head.center{margin-inline:auto;text-align:center}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.card{position:relative;overflow:hidden;background:linear-gradient(160deg,#fff 0%,#FBF7F1 100%);border:1px solid rgba(180,138,85,.18);border-radius:var(--radius);padding:2.2rem;box-shadow:var(--shadow);transition:transform .45s cubic-bezier(.2,.8,.2,1),box-shadow .45s,border-color .45s;display:flex;flex-direction:column}
.card::before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(180,138,85,.16) 45%,rgba(201,163,160,.22) 55%,transparent 70%);background-size:250% 250%;background-position:-150% -150%;opacity:0;transition:opacity .45s,background-position .9s ease;pointer-events:none}
.card::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--g-gold);transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.card:hover{background:linear-gradient(160deg,#FBEFD9 0%,#F0DBB8 100%);transform:translateY(-10px);box-shadow:0 30px 60px -24px rgba(180,138,85,.5);border-color:rgba(180,138,85,.45)}
.card:hover p{color:var(--muted-hover)}
.card:hover::before{opacity:1;background-position:150% 150%}
.card:hover::after{transform:scaleX(1)}
.card:hover .num{transform:scale(1.1) rotate(-3deg)}
.card .num{font:600 2.6rem var(--serif);background:var(--g-gold-loop);background-size:280% auto;animation:shimmer 6s linear infinite;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;line-height:1;display:inline-block;transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.card h3{margin:.8rem 0 .7rem;position:relative;display:inline-block}
.card h3::after{content:"";position:absolute;left:0;bottom:-4px;height:2px;width:100%;background:var(--gold-d);transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.card:hover h3::after{transform:scaleX(1)}
.card p{color:var(--muted);flex:1}
.card a{margin-top:1.4rem;font-weight:600;text-decoration:none;color:var(--gold-d);display:inline-flex;align-items:center;gap:.35rem;transition:gap .3s}
.card a:hover{text-decoration:underline;gap:.6rem}

/* approach */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;counter-reset:s;margin-top:1rem}
.step{position:relative;z-index:0;padding-top:1.4rem;border-top:2px solid transparent;border-image:linear-gradient(90deg,#B48A55,#C9A3A0,transparent) 1}
/* expanding highlight card behind the step on hover, via a pseudo-element rather than real
   padding/background, so nothing shifts layout when it appears */
.step::after{content:"";position:absolute;inset:-1rem -1.2rem -1.4rem -1.2rem;background:linear-gradient(160deg,#FBEFD9 0%,#F0DBB8 100%);border-radius:var(--radius);opacity:0;transform:scale(.95);transition:opacity .4s,transform .4s cubic-bezier(.2,.8,.2,1);z-index:-1;box-shadow:0 22px 42px -20px rgba(180,138,85,.4);pointer-events:none}
.step:hover::after{opacity:1;transform:scale(1)}
.step p{transition:color .4s}
.step:hover p{color:var(--muted-hover)}
.step::before{counter-increment:s;content:"0" counter(s);font:600 .85rem var(--sans);letter-spacing:.15em;color:var(--gold-d);display:block;margin-bottom:.6rem;transition:transform .35s cubic-bezier(.2,.8,.2,1),color .35s}
.step:hover::before{transform:scale(1.15);color:var(--gold-d)}
.step h3{font-size:1.4rem;margin-bottom:.5rem}
.step p{color:var(--muted);font-size:.98rem}

/* outcomes */
.outcomes{background:radial-gradient(800px 400px at 100% 0%,rgba(180,138,85,.22),transparent 60%),var(--g-dark);color:#fff}
.outcomes .eyebrow{color:var(--rose)}
.ogrid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;margin-top:3rem}
/* offset each shimmer's phase so repeated instances don't pulse in unison */
.ogrid .o:nth-child(2) b{animation-delay:-2s}
.ogrid .o:nth-child(3) b{animation-delay:-4s}
.ogrid .o:nth-child(4) b{animation-delay:-1s}
.cards .card:nth-child(2) .num{animation-delay:-2.3s}
.cards .card:nth-child(3) .num{animation-delay:-4.6s}
.o{position:relative;z-index:0;border-top:1px solid rgba(255,255,255,.2);padding-top:1.3rem;transition:border-color .4s}
.o:hover{border-top-color:var(--gold)}
/* translucent highlight card behind the stat on hover; a pseudo so it doesn't shift layout */
.o::after{content:"";position:absolute;inset:-1rem -1.1rem -1.3rem -1.1rem;background:linear-gradient(160deg,rgba(180,138,85,.22),rgba(201,163,160,.16));border:1px solid rgba(180,138,85,.35);border-radius:var(--radius);opacity:0;transform:scale(.94);transition:opacity .4s,transform .4s cubic-bezier(.2,.8,.2,1);z-index:-1;pointer-events:none}
.o:hover::after{opacity:1;transform:scale(1)}
.o b{font:600 2.3rem var(--serif);background:var(--g-gold-loop);background-size:280% auto;animation:shimmer 6s linear infinite;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;display:block;line-height:1.1;margin-bottom:.4rem;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.o:hover b{transform:scale(1.08)}
.o p{color:rgba(255,255,255,.72);font-size:.96rem}
.note{margin-top:2.4rem;font-size:.82rem;color:rgba(255,255,255,.5)}

/* about */
.about-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:4rem;align-items:center}
.about .portrait{border-radius:var(--radius);aspect-ratio:4/5;background:linear-gradient(160deg,#8C6FAE,#4A3763 45%,#1E1830)}
.about h2{margin:.4rem 0 1.4rem}
.about p{margin-bottom:1.1rem;color:var(--muted)}
.about p strong{color:var(--text)}
.creds{display:flex;flex-wrap:wrap;gap:.6rem;margin:1.6rem 0 2rem}
.creds span{border:1px solid rgba(30,24,48,.2);border-radius:999px;padding:.45rem 1rem;font-size:.85rem;font-weight:500;background:var(--white);transition:background .3s,color .3s,border-color .3s,transform .3s}
.creds span:hover{background:var(--gold-d);color:#fff;border-color:var(--gold-d);transform:translateY(-2px)}

/* testimonials */
.proof{background:linear-gradient(180deg,#F8F3EC 0%,#EFE6DA 100%)}
.tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.t{position:relative;overflow:hidden;background:linear-gradient(160deg,#fff 0%,#FBF7F1 100%);border-radius:var(--radius);padding:2rem;box-shadow:var(--shadow);border:1px solid transparent;transition:transform .45s cubic-bezier(.2,.8,.2,1),box-shadow .45s,border-color .45s}
.t::before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(180,138,85,.14) 45%,rgba(201,163,160,.2) 55%,transparent 70%);background-size:250% 250%;background-position:-150% -150%;opacity:0;transition:opacity .45s,background-position .9s ease;pointer-events:none}
.t:hover{background:linear-gradient(160deg,#FBE3DC 0%,#F0C9BC 100%);transform:translateY(-8px);box-shadow:0 26px 55px -22px rgba(180,138,85,.42);border-color:rgba(180,138,85,.35)}
.t:hover footer{color:var(--muted-hover)}
.t:hover::before{opacity:1;background-position:150% 150%}
.t blockquote{font:italic 500 1.28rem/1.45 var(--serif);margin-bottom:1.4rem}
.t footer{display:flex;align-items:center;gap:.9rem;font-size:.88rem;color:var(--muted)}
.t footer .avatar{flex:none;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--g-gold-loop);background-size:220% auto;animation:shimmer 8s linear infinite;color:#fff;font:700 .68rem var(--sans);letter-spacing:.02em;box-shadow:0 6px 16px -4px rgba(180,138,85,.6)}
.t footer .who b{color:var(--text);display:block}
.t .result{display:inline-block;background:var(--sand);color:var(--gold-d);font-weight:600;font-size:.78rem;padding:.3rem .8rem;border-radius:999px;margin-bottom:1rem;letter-spacing:.03em;transition:background .45s,color .45s,letter-spacing .45s}
.t:hover .result{background:var(--gold-d);color:#fff;letter-spacing:.06em}

/* offers */
.ogrid2{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;align-items:stretch}
.offer{position:relative;overflow:hidden;border:1px solid rgba(30,24,48,.14);border-radius:var(--radius);padding:2.2rem;background:linear-gradient(160deg,#fff 0%,#FBF7F1 100%);display:flex;flex-direction:column;transition:transform .45s cubic-bezier(.2,.8,.2,1),box-shadow .45s,border-color .45s}
.offer::before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(180,138,85,.16) 45%,rgba(201,163,160,.22) 55%,transparent 70%);background-size:250% 250%;background-position:-150% -150%;opacity:0;transition:opacity .45s,background-position .9s ease;pointer-events:none}
.offer:hover{background:linear-gradient(160deg,#FBEFD9 0%,#F0DBB8 100%);transform:translateY(-8px);box-shadow:0 28px 58px -22px rgba(180,138,85,.4);border-color:rgba(180,138,85,.4)}
.offer:not(.feat):hover .for,.offer:not(.feat):hover .price{color:var(--muted-hover)}
.offer:hover::before{opacity:1;background-position:150% 150%}
.offer.feat{background:radial-gradient(400px 260px at 100% 0%,rgba(201,163,160,.28),transparent 65%),var(--g-dark);color:#fff;border-color:var(--gold);transform:translateY(-10px);box-shadow:0 24px 55px -20px rgba(30,24,48,.5)}
.offer.feat:hover{background:radial-gradient(420px 280px at 100% 0%,rgba(201,163,160,.4),transparent 60%),radial-gradient(320px 240px at 0% 100%,rgba(180,138,85,.28),transparent 65%),var(--g-dark);transform:translateY(-16px);box-shadow:0 34px 70px -20px rgba(180,138,85,.55);border-color:var(--rose)}
.offer.feat::before{background:linear-gradient(115deg,transparent 30%,rgba(180,138,85,.35) 45%,rgba(201,163,160,.3) 55%,transparent 70%)}
.offer .tag{font:600 .72rem var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gold-d);margin-bottom:.6rem}
.offer.feat .tag{color:var(--gold)}
.offer h3{margin-bottom:.4rem;position:relative;display:inline-block}
.offer h3::after{content:"";position:absolute;left:0;bottom:-3px;height:2px;width:100%;background:var(--gold-d);transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.offer:hover h3::after{transform:scaleX(1)}
.offer.feat h3::after{background:var(--gold)}
.offer .for{color:var(--muted);font-size:.95rem;margin-bottom:1.2rem}
.offer.feat .for{color:rgba(255,255,255,.65)}
.offer ul{list-style:none;margin-bottom:1.8rem;flex:1}
.offer li{padding:.5rem 0 .5rem 1.6rem;position:relative;font-size:.96rem;border-bottom:1px solid rgba(128,128,128,.15)}
.offer li::before{content:"✓";position:absolute;left:0;color:var(--gold)}
.offer .price{font-size:.88rem;color:var(--muted);margin-bottom:1rem}
.offer.feat .price{color:rgba(255,255,255,.6)}
.offer .btn{width:100%}

/* services list (Services page) */
.services-list{display:grid;gap:1.5rem;margin-top:1rem}
.service{position:relative;z-index:0;overflow:hidden;display:grid;grid-template-columns:auto 1fr;gap:1.6rem;align-items:start;background:linear-gradient(160deg,#fff 0%,#FBF7F1 100%);border:1px solid rgba(180,138,85,.18);border-radius:var(--radius);padding:2.2rem;box-shadow:var(--shadow);transition:transform .45s cubic-bezier(.2,.8,.2,1),box-shadow .45s,border-color .45s}
.service::before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(180,138,85,.16) 45%,rgba(201,163,160,.22) 55%,transparent 70%);background-size:250% 250%;background-position:-150% -150%;opacity:0;transition:opacity .45s,background-position .9s ease;pointer-events:none}
.service:hover{background:linear-gradient(160deg,#FBEFD9 0%,#F0DBB8 100%);box-shadow:0 26px 54px -22px rgba(180,138,85,.45);border-color:rgba(180,138,85,.4)}
.service:hover::before{opacity:1;background-position:150% 150%}
.service:hover p,.service:hover li{color:var(--muted-hover)}
.service .num{font:600 2.2rem var(--serif);background:var(--g-gold-loop);background-size:280% auto;animation:shimmer 6s linear infinite;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;line-height:1}
.service h3{margin-bottom:.6rem;position:relative;display:inline-block}
.service h3::after{content:"";position:absolute;left:0;bottom:-4px;height:2px;width:100%;background:var(--gold-d);transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.service:hover h3::after{transform:scaleX(1)}
.service p{color:var(--muted);margin-bottom:.9rem}
.service ul{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem 1.4rem;margin-bottom:1.1rem}
.service ul li{position:relative;padding-left:1.3rem;font-size:.92rem;color:var(--muted);border:0}
.service ul li::before{content:"✓";position:absolute;left:0;color:var(--gold)}
.service a{font-weight:600;color:var(--gold-d);text-decoration:none;display:inline-flex;align-items:center;gap:.35rem;transition:gap .3s}
.service a:hover{text-decoration:underline;gap:.6rem}

/* achievements (About page) */
.achievements{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-top:1rem}
.achieve{position:relative;z-index:0;overflow:hidden;background:linear-gradient(160deg,#fff 0%,#FBF7F1 100%);border:1px solid rgba(180,138,85,.18);border-radius:var(--radius);padding:1.8rem;transition:transform .45s cubic-bezier(.2,.8,.2,1),box-shadow .45s,border-color .45s}
.achieve::before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(180,138,85,.16) 45%,rgba(201,163,160,.22) 55%,transparent 70%);background-size:250% 250%;background-position:-150% -150%;opacity:0;transition:opacity .45s,background-position .9s ease;pointer-events:none}
.achieve:hover{background:linear-gradient(160deg,#FBEFD9 0%,#F0DBB8 100%);box-shadow:0 26px 50px -22px rgba(180,138,85,.4);border-color:rgba(180,138,85,.4)}
.achieve:hover::before{opacity:1;background-position:150% 150%}
.achieve:hover p{color:var(--muted-hover)}
.achieve .icon{width:44px;height:44px;border-radius:50%;background:var(--g-gold-loop);background-size:220% auto;animation:shimmer 8s linear infinite;display:grid;place-items:center;color:#fff;font:700 1.1rem var(--serif);margin-bottom:1rem;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.achieve:hover .icon{transform:scale(1.08) rotate(-4deg)}
.achieve h3{font-size:1.2rem;margin-bottom:.5rem}
.achieve p{color:var(--muted);font-size:.94rem}

/* credential detail cards (About page) */
.cred-detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-top:1rem}
.cred-detail{position:relative;z-index:0;overflow:hidden;background:linear-gradient(160deg,#fff 0%,#FBF7F1 100%);border:1px solid rgba(180,138,85,.18);border-radius:var(--radius);padding:1.8rem;transition:transform .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s,border-color .4s}
.cred-detail::before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(180,138,85,.16) 45%,rgba(201,163,160,.22) 55%,transparent 70%);background-size:250% 250%;background-position:-150% -150%;opacity:0;transition:opacity .4s,background-position .9s ease;pointer-events:none}
.cred-detail:hover{background:linear-gradient(160deg,#FBEFD9 0%,#F0DBB8 100%);box-shadow:0 22px 44px -20px rgba(180,138,85,.4);border-color:rgba(180,138,85,.4)}
.cred-detail:hover::before{opacity:1;background-position:150% 150%}
.cred-detail:hover p{color:var(--muted-hover)}
.cred-detail h3{font-size:1.15rem;margin-bottom:.5rem;color:var(--gold-d)}
.cred-detail p{color:var(--muted);font-size:.92rem}

/* orgs */
.orgs{background:linear-gradient(135deg,#4A3763 0%,#5E4681 50%,#3A2B57 100%);color:#fff}
.orgs-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:3rem;align-items:center}
.orgs .eyebrow{color:var(--rose)}
.orgs p{color:rgba(255,255,255,.8);margin:1.2rem 0 1.8rem}
.orgs ul{list-style:none;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);border-radius:var(--radius);padding:1.6rem 2rem}
.orgs li{position:relative;z-index:0;padding:.65rem 0 .65rem .1rem;border-bottom:1px solid rgba(255,255,255,.12);transition:padding-left .35s cubic-bezier(.2,.8,.2,1),color .35s}
.orgs li::after{content:"";position:absolute;inset:-2px -.8rem;background:rgba(255,255,255,.08);border-radius:8px;opacity:0;transition:opacity .35s;z-index:-1;pointer-events:none}
.orgs li:hover{padding-left:.6rem;color:#fff}
.orgs li:hover::after{opacity:1}
.orgs li:last-child{border:0}
.orgs li::before{content:"◆";color:var(--gold);font-size:.6rem;margin-right:.8rem;transition:color .35s}
.orgs li:hover::before{color:var(--rose)}

/* faq */
details{border-bottom:1px solid rgba(30,24,48,.15);padding:1.3rem 0}
summary{position:relative;z-index:0;font:600 1.5rem var(--serif);cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:1rem;align-items:center;transition:color .3s}
/* highlighted row on hover, via a pseudo-element (summary has no horizontal padding at rest,
   so a real background would shift the text sideways the instant you hover) */
summary::before{content:"";position:absolute;inset:-.5rem -1.1rem;background:linear-gradient(160deg,#FBEFD9 0%,#F0DBB8 100%);border-radius:10px;opacity:0;transform:scaleY(.92);transition:opacity .35s,transform .35s cubic-bezier(.2,.8,.2,1);z-index:-1;pointer-events:none}
summary:hover{color:var(--gold-d)}
/* underline sweeps under the question text itself on hover -- distinct from the row
   background highlight (summary::before) and the +/x icon, both already taken */
summary .q{position:relative}
summary .q::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--gold-d);transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.2,.8,.2,1)}
summary:hover .q::after{transform:scaleX(1)}
summary:hover::before{opacity:1;transform:scaleY(1)}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font:400 1.8rem var(--sans);color:var(--gold-d);transition:transform .2s,color .3s}
summary:hover::after{color:var(--gold)}
details[open] summary::after{transform:rotate(45deg)}
details[open] summary{color:var(--gold-d)}
details p{margin-top:.9rem;color:var(--muted)}
/* the answer text fades and eases in the moment a FAQ opens, instead of just snapping into view */
@keyframes faqReveal{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
details[open] p{animation:faqReveal .45s cubic-bezier(.2,.8,.2,1)}

/* booking */
.book{background:var(--g-dark);color:#fff;position:relative;overflow:hidden}
.book::before{content:"";position:absolute;width:700px;height:700px;right:-250px;top:-250px;background:radial-gradient(closest-side,rgba(180,138,85,.35),transparent)}
.book-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:start}
.book .eyebrow{color:var(--rose)}
.book .lead{color:rgba(255,255,255,.75);margin:1.2rem 0 1.8rem}
.expect{list-style:none;margin-bottom:2rem}
.expect li{padding:.55rem 0 .55rem 2rem;position:relative;color:rgba(255,255,255,.85)}
.expect li::before{content:"✓";position:absolute;left:0;color:var(--gold);font-weight:700}
.form{background:var(--white);color:var(--text);border-radius:var(--radius);padding:2.4rem;box-shadow:0 30px 70px -20px rgba(0,0,0,.5)}
.form h3{margin-bottom:.4rem}
.form>p{color:var(--muted);font-size:.95rem;margin-bottom:1.4rem}
label{display:block;font-weight:600;font-size:.86rem;margin-bottom:.35rem}
input,select,textarea{width:100%;font:inherit;padding:.9rem 1rem;border:1.5px solid rgba(30,24,48,.2);border-radius:10px;background:var(--ivory);margin-bottom:1.1rem;color:var(--text)}
textarea{min-height:96px;resize:vertical}
.form .btn{width:100%}
.form .micro{text-align:center}
.alt{margin-top:1.2rem;text-align:center;font-size:.92rem}
.alt a{color:var(--gold-d);font-weight:600}
#thanks{display:none;text-align:center;padding:2rem 0}

footer.site{background:linear-gradient(180deg,#1E1830 0%,#150F24 100%);color:rgba(255,255,255,.65);padding:3.5rem 0 6rem;font-size:.9rem}
.fgrid{display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap}
.fgrid a{position:relative;text-decoration:none;margin-right:1.4rem}
.fgrid a:hover{color:var(--gold)}
.fgrid a::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:center;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.fgrid a:hover::after{transform:scaleX(1)}
.fgrid a.active{color:var(--gold)}
.fgrid a.active::after{transform:scaleX(1)}
.legal{margin-top:2rem;padding-top:1.6rem;border-top:1px solid rgba(255,255,255,.1);font-size:.8rem;line-height:1.6}

/* sticky mobile cta */
.sticky{display:none;position:fixed;left:0;right:0;bottom:0;z-index:90;padding:.8rem 4%;background:linear-gradient(90deg,rgba(30,24,48,.97),rgba(74,55,99,.97));backdrop-filter:blur(8px);transform:translateY(110%);transition:transform .3s}
.sticky.show{transform:none}
.sticky .btn{width:100%}

/* reveal */
.js .rv{opacity:0;transform:translateY(22px);transition:opacity .7s,transform .7s}
.js .rv.in{opacity:1;transform:none}
/* section headings: words stagger upward into place once their .rv ancestor scrolls into view */
.js .rv h2 .word{display:inline-block;opacity:0;transform:translateY(.55em)}
.js .rv.in h2 .word{animation:riseIn .7s cubic-bezier(.2,.8,.2,1) forwards}
/* cards/testimonials/offers also carry .rv for scroll-reveal; consolidate their transition here
   (equal specificity to .js .rv, later in source) so hover's box-shadow/border-color/transform
   keep animating smoothly after the reveal finishes, instead of being reset by the rule above */
.card.rv,.t.rv,.offer.rv,.service.rv,.achieve.rv,.cred-detail.rv{transition:opacity .7s ease,transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .45s ease,border-color .45s ease}
/* the transition fix above doesn't touch the transform VALUE: ".js .rv.in{transform:none}" (3 classes,
   0,3,0) still beats ".card:hover{transform:translateY(...)}" (0,2,0), so once a card has scrolled into
   view (.in) -- which is true for every card a visitor could actually hover -- its hover lift was being
   silently cancelled back to "none". Re-declare each hover lift here at higher specificity to fix it. */
.js .card.rv.in:hover{transform:translateY(-10px)}
.js .t.rv.in:hover{transform:translateY(-8px)}
.js .offer.rv.in:hover{transform:translateY(-8px)}
.js .offer.feat.rv.in:hover{transform:translateY(-16px)}
.js .service.rv.in:hover{transform:translateY(-6px)}
.js .achieve.rv.in:hover{transform:translateY(-8px)}
.js .cred-detail.rv.in:hover{transform:translateY(-6px)}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.rv{opacity:1;transform:none}html{scroll-behavior:auto}}

@media(max-width:960px){
  .hero-grid,.about-grid,.orgs-grid,.book-grid{grid-template-columns:1fr}
  .cards,.tgrid,.ogrid2,.achievements,.cred-detail-grid{grid-template-columns:1fr}
  .service{grid-template-columns:1fr}
  .steps,.ogrid{grid-template-columns:1fr 1fr}
  .offer.feat{transform:none}
  .portrait{max-width:380px;margin-inline:auto}
  .about .portrait{order:-1}
  .burger{display:block}
  nav ul{position:absolute;top:74px;left:0;right:0;background:var(--ivory);flex-direction:column;padding:1.6rem;gap:1.2rem;border-bottom:1px solid rgba(30,24,48,.1);display:none}
  nav ul.open{display:flex}
  .sticky{display:block}
}
@media(max-width:560px){body{font-size:16px}.steps,.ogrid{grid-template-columns:1fr}}
