/* Shared chrome (header, menu, footer, credit) and the motion system. Loaded last on every page. */
:root {
  --ljs-ink: #072b4d;
  --ljs-navy: #032b50;
  --ljs-deep: #011c35;
  --ljs-abyss: #010f1d;
  --ljs-cyan: #27d4de;
  --ljs-cyan-d: #087e92;
  --ljs-pale: #eaf7fa;
  --ljs-paper: #fbfcfc;
  --ljs-muted: #526c83;
  --ljs-line: rgba(3, 43, 80, .12);
  --ljs-amber: #f2a93b;
  --ljs-serif: "Source Serif 4", Georgia, serif;
  --ljs-sans: "Archivo", Arial, sans-serif;
  --ljs-ease: cubic-bezier(.16, 1, .3, 1);
  --ljs-h: 96px;
}

@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .35s; }
.ljs-header { view-transition-name: ljs-header; }

body { background: var(--ljs-paper); }
picture { display: contents; }
main { padding-top: var(--ljs-h); }
.ljs-home main { padding-top: 0; }
main > .page-hero:first-child { margin-top: calc(var(--ljs-h) * -1); padding-top: calc(var(--ljs-h) + 76px); }

.skip { position: fixed; top: -80px; left: 16px; z-index: 300; padding: 12px 16px; border-radius: 999px; background: #fff; color: var(--ljs-ink); font: 700 .8rem var(--ljs-sans); }
.skip:focus { top: 12px; }

/* ── Header ─────────────────────────────────────────── */
.ljs-header { position: fixed; z-index: 200; inset: 0 0 auto; padding: 14px clamp(10px, 2.2vw, 28px); pointer-events: none; }
.ljs-bar {
  position: relative; z-index: 2;
  max-width: 1320px; height: 68px; margin-inline: auto;
  display: grid; grid-template-columns: auto 1fr auto auto; align-items: center; gap: 12px;
  padding: 0 9px 0 18px;
  border: 1px solid var(--ljs-line); border-radius: 999px;
  color: var(--ljs-ink);
  background: rgba(251, 252, 252, .76);
  -webkit-backdrop-filter: blur(18px) saturate(1.5); backdrop-filter: blur(18px) saturate(1.5);
  box-shadow: 0 12px 40px -22px rgba(1, 28, 53, .45);
  pointer-events: auto;
  transition: transform .55s var(--ljs-ease), background .4s ease, color .4s ease, border-color .4s ease, height .4s var(--ljs-ease), box-shadow .4s ease;
}
.ljs-header.is-scrolled .ljs-bar { height: 60px; background: rgba(251, 252, 252, .9); box-shadow: 0 18px 50px -24px rgba(1, 28, 53, .5); }
.ljs-header.is-hidden .ljs-bar { transform: translateY(-140%); }
.ljs-home .ljs-header:not(.is-scrolled) .ljs-bar,
.ljs-header.is-menu-open .ljs-bar { color: #fff; background: rgba(1, 28, 53, .32); border-color: rgba(255, 255, 255, .16); box-shadow: none; }
.ljs-header.is-menu-open .ljs-bar { background: rgba(255, 255, 255, .06); transform: none; }

.ljs-progress { position: absolute; left: 30px; right: 30px; bottom: -1px; height: 2px; border-radius: 2px; background: linear-gradient(90deg, var(--ljs-cyan-d), var(--ljs-cyan)); transform: scaleX(var(--ljs-progress, 0)); transform-origin: left; opacity: 0; transition: opacity .3s; }
.ljs-header.is-scrolled .ljs-progress { opacity: 1; }

/* Brand + blooming lotus */
.ljs-brand { display: inline-flex; align-items: center; gap: 11px; color: inherit; text-decoration: none; }
.ljs-lotus { width: 42px; height: 32px; flex: none; overflow: visible; color: var(--ljs-cyan-d); transition: color .4s; }
.ljs-home .ljs-header:not(.is-scrolled) .ljs-lotus, .is-menu-open .ljs-lotus { color: var(--ljs-cyan); }
.ljs-lotus .p { transform-box: view-box; transform-origin: 32px 40px; transition: transform .7s var(--ljs-ease); animation: ljs-bloom 1.3s var(--ljs-ease) backwards; }
.ljs-lotus .p-c { animation-delay: .15s; --r0: 0deg; }
.ljs-lotus .p-il { animation-delay: .3s; --r0: 28deg; }
.ljs-lotus .p-ir { animation-delay: .3s; --r0: -28deg; }
.ljs-lotus .p-ol { animation-delay: .45s; --r0: 55deg; }
.ljs-lotus .p-or { animation-delay: .45s; --r0: -55deg; }
.ljs-lotus .base { stroke-dasharray: 1; animation: ljs-draw 1s var(--ljs-ease) .7s backwards; }
@keyframes ljs-bloom { from { transform: rotate(var(--r0)) scale(.25); opacity: 0; } }
@keyframes ljs-draw { from { stroke-dashoffset: 1; } }
.ljs-brand:hover .p-ol { transform: rotate(-9deg); }
.ljs-brand:hover .p-or { transform: rotate(9deg); }
.ljs-brand:hover .p-il { transform: rotate(-5deg); }
.ljs-brand:hover .p-ir { transform: rotate(5deg); }
.ljs-brand:hover .p-c { transform: translateY(-2px); }
.ljs-word { display: grid; line-height: 1; }
.ljs-word strong { font: 600 1.32rem/1 var(--ljs-serif); letter-spacing: .04em; }
.ljs-word span { margin-top: 4px; font: 700 .56rem/1 var(--ljs-sans); letter-spacing: .2em; text-transform: uppercase; opacity: .72; }

/* Links with gliding ink */
.ljs-links { display: flex; align-items: center; justify-self: center; gap: 2px; }
.ljs-ink { position: absolute; z-index: 0; top: var(--ink-y, 0); left: var(--ink-x, 0); width: var(--ink-w, 0); height: var(--ink-h, 0); border-radius: 999px; background: rgba(39, 212, 222, .16); opacity: 0; pointer-events: none; transition: left .45s var(--ljs-ease), width .45s var(--ljs-ease), opacity .25s ease; }
.ljs-links.has-ink .ljs-ink { opacity: 1; }
.ljs-home .ljs-header:not(.is-scrolled) .ljs-ink { background: rgba(255, 255, 255, .14); }
.ljs-link { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 6px; padding: 11px 16px; border: 0; border-radius: 999px; color: inherit; background: none; font: 700 .72rem/1 var(--ljs-sans); letter-spacing: .09em; text-transform: uppercase; text-decoration: none; cursor: pointer; }
.ljs-link svg { width: 12px; height: 12px; transition: transform .35s var(--ljs-ease); }
.ljs-link[aria-current]::after, .ljs-link[data-current]::after { content: ""; position: absolute; left: 50%; bottom: 3px; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: var(--ljs-cyan); }
.ljs-drop.is-open .ljs-drop-toggle svg { transform: rotate(180deg); }

/* Treatments mega panel */
.ljs-drop-panel {
  position: absolute; top: calc(100% + 12px); left: 50%;
  width: min(880px, calc(100vw - 40px));
  display: grid; grid-template-columns: 1.25fr .9fr; gap: 10px;
  padding: 10px; border: 1px solid var(--ljs-line); border-radius: 28px;
  color: var(--ljs-ink); background: #fbfcfc;
  -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px);
  box-shadow: 0 40px 90px -30px rgba(1, 28, 53, .45);
  opacity: 0; visibility: hidden; transform: translate(-50%, -10px) scale(.985); transform-origin: top center;
  transition: opacity .3s ease, transform .45s var(--ljs-ease), visibility 0s .3s;
}
.ljs-drop.is-open .ljs-drop-panel { opacity: 1; visibility: visible; transform: translate(-50%, 0) scale(1); transition: opacity .3s ease, transform .45s var(--ljs-ease); }
.ljs-drop-list { padding: 14px 8px 8px; }
.ljs-drop-kicker { margin: 0 12px 8px; color: var(--ljs-cyan-d); font: 700 .66rem var(--ljs-sans); letter-spacing: .16em; text-transform: uppercase; }
.ljs-drop-item { display: grid; grid-template-columns: 30px 1fr; gap: 2px 8px; padding: 12px 14px; border-radius: 16px; color: inherit; text-decoration: none; transition: background .25s, transform .35s var(--ljs-ease); }
.ljs-drop-item:hover, .ljs-drop-item:focus-visible { background: var(--ljs-pale); transform: translateX(4px); }
.ljs-drop-num { grid-row: span 2; padding-top: 5px; color: var(--ljs-cyan-d); font: 700 .66rem var(--ljs-sans); letter-spacing: .08em; }
.ljs-drop-name { font: 400 1.22rem/1.2 var(--ljs-serif); letter-spacing: -.02em; }
.ljs-drop-name em { display: inline-block; margin-left: 6px; padding: 3px 8px; border-radius: 999px; color: var(--ljs-deep); background: var(--ljs-cyan); font: 700 .56rem/1.2 var(--ljs-sans); font-style: normal; letter-spacing: .1em; text-transform: uppercase; vertical-align: 3px; }
.ljs-drop-meta { color: var(--ljs-muted); font-size: .8rem; }
.ljs-drop-all { display: inline-flex; gap: 8px; margin: 10px 14px 4px; color: var(--ljs-cyan-d); font: 700 .7rem var(--ljs-sans); letter-spacing: .1em; text-decoration: none; text-transform: uppercase; }
.ljs-drop-all:hover span { transform: translateX(4px); }
.ljs-drop-all span { transition: transform .3s var(--ljs-ease); }
.ljs-drop-figure { position: relative; margin: 0; overflow: hidden; border-radius: 20px; background: var(--ljs-deep); }
.ljs-drop-figure img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: opacity .45s ease; }
.ljs-drop-figure img.is-swapping { opacity: .15; }
.ljs-drop-figure figcaption { position: absolute; inset: auto 0 0; padding: 60px 22px 20px; color: #fff; background: linear-gradient(transparent, rgba(1, 28, 53, .85)); font: 400 1.15rem/1.25 var(--ljs-serif); }

/* Availability CTA with live next slot */
.ljs-book { position: relative; display: inline-flex; align-items: center; gap: 10px; height: 50px; padding: 0 6px 0 18px; border-radius: 999px; color: #fff; background: var(--ljs-navy); text-decoration: none; transition: background .3s, box-shadow .3s; }
.ljs-book:hover { background: #0a4270; box-shadow: 0 10px 30px -10px rgba(3, 43, 80, .7); }
.ljs-home .ljs-header:not(.is-scrolled) .ljs-book { color: var(--ljs-deep); background: var(--ljs-cyan); }
.ljs-book-text { display: grid; line-height: 1.15; }
.ljs-book-label { font: 700 .7rem var(--ljs-sans); letter-spacing: .09em; text-transform: uppercase; }
.ljs-book-next { font: 600 .68rem var(--ljs-sans); color: var(--ljs-cyan); }
.ljs-book-next:empty { display: none; }
.ljs-home .ljs-header:not(.is-scrolled) .ljs-book-next { color: var(--ljs-navy); }
.ljs-book-arrow { width: 38px; height: 38px; padding: 11px; border-radius: 50%; color: var(--ljs-deep); background: var(--ljs-cyan); transition: transform .45s var(--ljs-ease); }
.ljs-home .ljs-header:not(.is-scrolled) .ljs-book-arrow { color: #fff; background: var(--ljs-navy); }
.ljs-book:hover .ljs-book-arrow { transform: rotate(-45deg); }
.ljs-pulse { position: relative; display: none; width: 8px; height: 8px; flex: none; border-radius: 50%; background: #39e68a; }
.has-next-slot .ljs-pulse { display: inline-block; }
.ljs-pulse::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 2px solid #39e68a; animation: ljs-ping 3.2s ease-out infinite; }
@keyframes ljs-ping { from { transform: scale(.6); opacity: .6; } 60%, to { transform: scale(1.6); opacity: 0; } }

/* Burger */
.ljs-burger { display: none; align-items: center; gap: 10px; height: 50px; padding: 0 18px 0 16px; border: 1px solid currentColor; border-radius: 999px; color: inherit; background: none; font: 700 .7rem var(--ljs-sans); letter-spacing: .12em; text-transform: uppercase; cursor: pointer; border-color: rgba(127, 150, 170, .35); }
.ljs-burger-icon { position: relative; width: 20px; height: 10px; }
.ljs-burger-icon i { position: absolute; left: 0; width: 100%; height: 2px; border-radius: 2px; background: currentColor; transition: transform .5s var(--ljs-ease), width .5s var(--ljs-ease); }
.ljs-burger-icon i:first-child { top: 0; }
.ljs-burger-icon i:last-child { bottom: 0; width: 65%; }
.ljs-burger:hover .ljs-burger-icon i:last-child { width: 100%; }
.is-menu-open .ljs-burger-icon i:first-child { transform: translateY(4px) rotate(45deg); }
.is-menu-open .ljs-burger-icon i:last-child { width: 100%; transform: translateY(-4px) rotate(-45deg); }

/* Full-screen menu: opens as a ripple from the button */
.ljs-menu { position: fixed; z-index: 1; inset: 0; overflow-y: auto; color: #fff; background: radial-gradient(circle at 85% 10%, rgba(39, 212, 222, .16), transparent 45%), var(--ljs-deep); clip-path: circle(0 at var(--mx, 90%) var(--my, 40px)); transition: clip-path .8s var(--ljs-ease); pointer-events: auto; }
.ljs-menu.is-open { clip-path: circle(150% at var(--mx, 90%) var(--my, 40px)); }
.ljs-menu-inner { min-height: 100%; display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(24px, 5vw, 80px); padding: 120px clamp(20px, 5vw, 64px) 40px; }
.ljs-menu-figure { position: relative; margin: 0; overflow: hidden; border-radius: 28px; min-height: 360px; }
.ljs-menu-figure img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: opacity .4s; }
.ljs-menu-figure img.is-swapping { opacity: .2; }
.ljs-menu-kicker { margin: 0 0 18px; color: var(--ljs-cyan); font: 700 .7rem var(--ljs-sans); letter-spacing: .18em; text-transform: uppercase; }
.ljs-menu-links { margin: 0; padding: 0; list-style: none; border-top: 1px solid rgba(255, 255, 255, .14); }
.ljs-menu-links li { overflow: hidden; border-bottom: 1px solid rgba(255, 255, 255, .14); }
.ljs-menu-links a { display: flex; align-items: baseline; gap: 18px; padding: 16px 0; color: #fff; text-decoration: none; transform: translateY(110%); transition: transform .9s var(--ljs-ease), color .25s; }
.ljs-menu.is-open .ljs-menu-links a { transform: none; }
.ljs-menu.is-open li:nth-child(1) a { transition-delay: .18s; }
.ljs-menu.is-open li:nth-child(2) a { transition-delay: .24s; }
.ljs-menu.is-open li:nth-child(3) a { transition-delay: .3s; }
.ljs-menu.is-open li:nth-child(4) a { transition-delay: .36s; }
.ljs-menu.is-open li:nth-child(5) a { transition-delay: .42s; }
.ljs-menu-links a:hover, .ljs-menu-links a[aria-current] { color: var(--ljs-cyan); }
.ljs-menu-num { color: var(--ljs-cyan); font: 700 .7rem var(--ljs-sans); letter-spacing: .1em; }
.ljs-menu-label { font: 400 clamp(2.3rem, 6.4vw, 4.6rem)/1 var(--ljs-serif); letter-spacing: -.045em; transition: transform .5s var(--ljs-ease); }
.ljs-menu-links a:hover .ljs-menu-label { transform: translateX(14px); }
.ljs-menu-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; margin-top: 30px; opacity: 0; transform: translateY(12px); transition: opacity .6s .5s, transform .8s var(--ljs-ease) .5s; }
.ljs-menu.is-open .ljs-menu-foot { opacity: 1; transform: none; }
.ljs-menu-foot a { color: rgba(255, 255, 255, .8); font: 700 .72rem var(--ljs-sans); letter-spacing: .1em; text-transform: uppercase; text-decoration: none; }
.ljs-menu-foot a:hover { color: var(--ljs-cyan); }
.ljs-menu-cta { display: inline-flex; align-items: center; gap: 10px; min-height: 52px; padding: 0 22px; border-radius: 999px; color: var(--ljs-deep) !important; background: var(--ljs-cyan); }

@media (max-width: 1080px) {
  .ljs-links { display: none; }
  .ljs-burger { display: inline-flex; }
  .ljs-bar { grid-template-columns: 1fr auto auto; }
}
@media (max-width: 760px) {
  :root { --ljs-h: 84px; }
  .ljs-header { padding: 10px; }
  .ljs-bar { height: 62px; padding-left: 14px; gap: 8px; }
  .ljs-menu-inner { grid-template-columns: 1fr; padding-top: 104px; }
  .ljs-menu-figure { display: none; }
  .ljs-book-label { font-size: .62rem; }
  .ljs-book { padding-left: 14px; height: 46px; }
  .ljs-book-arrow { display: none; }
  .ljs-burger { height: 46px; padding: 0 14px; }
}
@media (max-width: 520px) {
  .ljs-book { display: none; }
  .ljs-word span { display: none; }
  .ljs-burger-text { font-size: .64rem; }
}

/* ── Sitework credit: one quiet line under the footer ── */
.ljs-credit { display: table; margin: 18px 0 0 auto; color: rgba(255, 255, 255, .45); font: 600 .72rem var(--ljs-sans); letter-spacing: .06em; text-decoration: none; }
.ljs-credit span { position: relative; margin-left: 3px; padding-left: 11px; color: rgba(255, 255, 255, .82); }
.ljs-credit span::before { content: ""; position: absolute; left: 0; top: 50%; width: 5px; height: 5px; margin-top: -2.5px; border-radius: 50%; background: var(--ljs-amber); }
.ljs-credit span::after { content: ""; position: absolute; left: 11px; right: 0; bottom: -3px; height: 1px; background: var(--ljs-amber); transform: scaleX(0); transform-origin: left; transition: transform .3s ease; }
.ljs-credit:hover span, .ljs-credit:focus-visible span { color: #fff; }
.ljs-credit:hover span::after, .ljs-credit:focus-visible span::after { transform: scaleX(1); }
@media (max-width: 640px) { .ljs-credit { margin-left: 0; } }

/* ── Motion: one gentle fade-up per section ─────────── */

.reveal.reveal-ready { opacity: 0; transform: translateY(14px); transition: opacity .7s ease, transform .7s var(--ljs-ease); }
.reveal.reveal-ready.in-view { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
  .ljs-lotus .p, .ljs-lotus .base, .ljs-pulse::after { animation: none !important; }
  .reveal.reveal-ready { transform: none !important; opacity: 1 !important; transition: none !important; }
  .ljs-menu { transition: none; }
  .ljs-menu-links a, .ljs-menu-foot { transform: none; transition: none; opacity: 1; }
  .ljs-bar { transition: none; }
}

/* Home hero sits under the floating bar */
.ljs-home .hero { height: auto; min-height: min(800px, 100svh); }
.ljs-home .hero-copy { padding-top: 150px; }
@media (max-width: 640px) { .ljs-home .hero { min-height: 100svh; } .ljs-home .hero-copy { padding-top: 130px; } }

/* Lucy's October review: readable copy, calmer headings and a larger header. */
:root { --ljs-h: 112px; --ljs-muted: #415e75; --muted: #415e75; }
body { font-size: 18px; line-height: 1.65; }
h1, h2, h3 { text-wrap: balance; letter-spacing: -.035em; }
h1, .page-hero h1 { font-size: clamp(2.8rem, 4.8vw, 4.5rem); }
h2, .section-title, .approach-copy .section-title, .faq-intro .section-title { font-size: clamp(2rem, 3.7vw, 3.5rem); }
h3 { font-size: clamp(1.6rem, 2.4vw, 2.3rem); }
p { text-wrap: pretty; }
.ljs-bar { height: 82px; padding-left: 22px; gap: 14px; }
.ljs-header.is-scrolled .ljs-bar { height: 72px; }
.ljs-lotus { width: 50px; height: 38px; }
.ljs-word strong { font-size: 1.6rem; }
.ljs-word span { font-size: .68rem; }
.ljs-link { min-height: 44px; padding: 13px 14px; font-size: .86rem; letter-spacing: .045em; }
.ljs-book { height: 60px; }
.ljs-book-label { font-size: .84rem; }
.ljs-book-next { font-size: .82rem; }
.ljs-book-arrow { width: 44px; height: 44px; }
.ljs-drop-kicker, .ljs-drop-all { font-size: .86rem; letter-spacing: .06em; }
.ljs-drop-num { font-size: .58rem; }
.ljs-drop-meta { font-size: 1rem; }
.ljs-drop-name { font-size: 1.4rem; }
.ljs-drop-name em { font-size: .66rem; }
.ljs-menu-label { font-size: clamp(2rem, 5.2vw, 3.8rem); }
.ljs-menu-kicker, .ljs-menu-foot a { font-size: .9rem; letter-spacing: .05em; }
.ljs-home .hero-copy { padding-top: 156px; }
.ljs-home .hero .display { font-size: clamp(2.8rem, 5.2vw, 4.7rem); }
.ljs-home .hero-lead { font-size: 1.12rem; line-height: 1.6; color: #eef5fa; }
.hero-kicker, .eyebrow { font-size: .94rem; letter-spacing: .07em; }
.hero-side-note, .trust-score { font-size: 1rem; }
.button, .text-link { font-size: .92rem; letter-spacing: .055em; white-space: normal; }
.principle span, .need-card p, .process-step p, .combined-actions p, .location p, .location-day,
.service-aside p, .booking-note, .answer p { font-size: 1.05rem; line-height: 1.65; }
.section-intro p, .facial-copy > p, .approach-copy p, .locations-top p { font-size: 1.12rem; line-height: 1.65; }
.ljs-home .combined .section-intro p, .ljs-home .process-step p, .ljs-home .combined-actions p { color: #d8e7f0; }
.facial-copy > .eyebrow { font: 400 clamp(1.6rem, 2.8vw, 2.1rem)/1.2 var(--ljs-serif); text-transform: none; letter-spacing: -.02em; color: var(--ljs-ink); }
.facial-copy #facial-title { font-size: clamp(1.9rem, 3.1vw, 2.7rem); }
.facial-prices dt { font-size: 1rem; }
.facial-prices dd { font-size: 1.65rem; }
.approach-copy > .eyebrow { font: 400 clamp(1.8rem, 3vw, 2.6rem)/1.2 var(--ljs-serif); letter-spacing: -.02em; text-transform: none; }
.approach-main img { object-position: center 28%; }
.approach-detail { display: none; }
.location-index, .process-step > span { font-size: .82rem; }
.location h3 { font-size: clamp(1.6rem, 2.5vw, 2.2rem); }
.location-day { text-transform: none; letter-spacing: 0; }
.treatment-collage { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: stretch; }
.treatment-tile, .treatment-tile:nth-child(2), .treatment-tile:nth-child(3) { min-height: 0; aspect-ratio: 1.65; }
.treatment-label { font-size: 1rem; letter-spacing: .025em; }
.reviews-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 1fr; gap: 20px; }
.review, .review:nth-child(2) { min-height: 270px; padding: 32px; color: var(--ljs-ink); background: #fff; border: 1px solid #cfdee5; }
.review .stars { color: #087e92; }
.review blockquote { font-size: clamp(1.8rem, 2.7vw, 2.5rem); line-height: 1.22; margin: 24px 0; }
.review cite { font-size: .94rem; letter-spacing: .02em; text-transform: none; }
.review a { font-size: .94rem; margin-top: 12px; color: #086a7b; text-underline-offset: 4px; }
.trustpilot-mark { font-size: 1rem; }
.trustpilot-mark strong { color: #087e92; }
.community-feature { display: grid; grid-template-columns: 1.1fr 1fr; gap: 48px; padding-block: 40px; border-top: 1px solid #cfdee5; }
.community-feature p { color: var(--ljs-muted); font-size: 1.12rem; line-height: 1.65; }
.community-feature .text-link { display: inline-block; margin-top: 18px; }
.community-feature h3 { font-size: clamp(2rem, 3.7vw, 3.2rem); }
.page-hero p:not(.eyebrow) { font-size: 1.12rem; }
.page-hero p.combination-note { font-size: 1rem; color: var(--ljs-muted); }
.price-figure { font-size: 2rem; }
.about-hero .wrap { grid-template-columns: 1.1fr .8fr; gap: clamp(40px, 7vw, 110px); }
.about-hero .lucy-portrait { height: 530px; max-width: 480px; }
.lucy-portrait img { object-position: center 26%; }
.about-story-grid { display: grid; grid-template-columns: .7fr 1.3fr; gap: 80px; }
.about-story h2 { font-size: clamp(2rem, 3.5vw, 3rem); }
.about-pullquote { font: 400 1.6rem/1.4 var(--ljs-serif); color: #415e75; max-width: 20ch; }
.about-prose p { max-width: 65ch; font-size: 1.12rem; color: #415e75; margin-bottom: 28px; }
.app-wrap .small-print, .booking-caveat, .booking-kicker, .sheet-hint, .availability-empty { font-size: 1rem; }
.availability-day-head p, .availability-slot span, .flow-card span, .flow-day span, .flow-day small, .flow-day em { font-size: .94rem; }
.availability-slot { min-height: 68px; }
.availability-slot strong { font-size: 1rem; }
.flow-card strong { font-size: 1.2rem; }
.flow-summary { position: static; }
.footer-grid a, .footer-grid p, .footer-bottom, .ljs-credit { font-size: .95rem; line-height: 1.65; }
.reveal, .reveal.is-in, [data-reveal] { opacity: 1; }

@media (max-width: 1200px) and (min-width: 1081px) {
  .ljs-link { padding-inline: 9px; font-size: .8rem; }
  .ljs-book { padding-left: 12px; }
  .ljs-word span { font-size: .6rem; }
}
@media (max-width: 900px) {
  .about-hero .wrap, .about-story-grid { grid-template-columns: 1fr; gap: 36px; }
  .about-hero .lucy-portrait { width: min(100%, 480px); justify-self: center; }
  .availability-times { grid-template-columns: 1fr; }
  .community-feature { grid-template-columns: 1fr; gap: 20px; }
}
@media (max-width: 760px) {
  :root { --ljs-h: 96px; }
  .ljs-bar { height: 74px; padding-left: 16px; }
  .ljs-header.is-scrolled .ljs-bar { height: 70px; }
  .ljs-burger { min-height: 50px; font-size: .85rem; }
  .ljs-burger-text { font-size: .85rem; }
  .ljs-menu-inner { padding-top: 116px; }
  .ljs-home .hero-copy { padding-top: 140px; padding-bottom: 44px; }
  .ljs-home .hero { min-height: 760px; }
  .reviews-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review, .review:nth-child(2) { padding: 24px; }
  .location { grid-template-columns: 24px 1fr; }
  .location .location-day, .location .text-link { grid-column: 2; }
  .treatment-label { padding: 14px; font-size: .94rem; line-height: 1.3; text-transform: none; }
  .about-hero .lucy-portrait { height: 450px; }
}
@media (max-width: 540px) {
  .reviews-grid { grid-template-columns: 1fr; }
  .review, .review:nth-child(2) { min-height: 250px; }
  .treatment-collage { gap: 10px; }
  .treatment-tile, .treatment-tile:nth-child(2), .treatment-tile:nth-child(3) { aspect-ratio: 1; }
  .treatment-label { padding: 10px; font-size: .88rem; }
  .ljs-home .hero .display { font-size: clamp(2.8rem, 10.5vw, 3.5rem); }
  .ljs-home .hero-grid { display: block; }
  .ljs-home .hero-side-note { display: none; }
  .ljs-home .hero-lead { font-size: 1.06rem; }
  .flow-treatments { grid-template-columns: 1fr; }
  .flow-summary-head { flex-wrap: wrap; }
  .booking-sheet-inner { padding: 22px; }
  .booking-sheet h2 { font-size: 1.5rem; }
  .about-hero .lucy-portrait { height: auto; aspect-ratio: 4 / 5; }
  .about-story-grid { gap: 24px; }
}
/* Readability checks: small supporting text stays at least 16px. */
.hero-kicker, main .eyebrow, .intro p.eyebrow, .split-list p.eyebrow, .service-copy p.eyebrow { font-size: 1rem; }
.facial-copy > .eyebrow { font-size: clamp(1.6rem, 2.8vw, 2.1rem); }
.approach-copy > .eyebrow { font-size: clamp(1.8rem, 3vw, 2.6rem); }
footer .footer-grid a, footer .footer-grid p, footer .footer-bottom, footer .ljs-credit { font-size: 1rem; }
.booking p.booking-note, .aside-links, .booking-caveat, .booking-kicker, .availability-day-head p,
.flow-card span, .flow-day span, .flow-day small, .flow-day em { font-size: 1rem; }
.ljs-home .locations .community-feature p { color: #d8e7f0; }
.ljs-home .locations .community-feature h3 { color: #fff; }
.ljs-home .locations .community-feature .button-dark { background: var(--ljs-cyan); color: var(--ljs-deep); }
.ljs-home .locations .community-feature .text-link { color: #7ae9ed; }
.ljs-home .locations .community-feature { border-top-color: rgba(255, 255, 255, .25); }
.ljs-home .approach-main { right: 0; bottom: 0; }
.ljs-home .approach-main img { width: 100%; height: 100%; }
.reveal.reveal-ready { opacity: 1; }

.booking-facts dt { font-size: 1rem; letter-spacing: .035em; }

/* Community buttons: stop them squeezing each other */
.community-feature .button, .community-feature .text-link { display: flex; width: fit-content; max-width: 100%; }
.community-feature .button { padding: 18px 34px; margin-top: 8px; }
.community-feature .text-link { margin-top: 26px; padding: 6px 0; }
/* Longer review quotes */
.ljs-home .review, .ljs-home .review:nth-child(2) { min-height: 0; }
.ljs-home .review blockquote { font-size: clamp(1.3rem, 1.7vw, 1.55rem); line-height: 1.45; }
@media (max-width: 760px) { .ljs-home .reviews-grid { grid-template-columns: 1fr; } }

/* Small print +20% (5 Oct 2026): every text element under 20px, measured per page and scaled 1.2x. Header nav excluded. */
p.hero-kicker, a.trust-score > span, p.hero-side-note, p.eyebrow, a.trustpilot-mark, div.footer-column > a, div.footer-brand > p, div.footer-bottom > span, a.ljs-credit, a.ljs-credit > span, span.year, p.booking-note, p.booking-note > a, p.booking-caveat, p.booking-kicker, p.small-print, p.combination-note, p.sheet-hint, p.availability-empty, div.treatment-label { font-size: 1.2rem !important; }
p.hero-lead, div.section-intro > p, div.approach-copy > p, div.locations-top > p, div.page-hero-copy > p, div.about-prose > p { font-size: 1.344rem !important; }
a.button.button-primary, a.button.button-outline, a.button.button-dark, a.button.button-light, a.text-link, button.button.button-dark, a.button.button-dark.booking-contact { font-size: 1.104rem !important; }
div.principle > span, a.need-card > p, div.process-step > p, div.combined-actions > p, span.location-day, div.answer > p, aside.service-aside > p, p.aside-links, p.aside-links > a, label.booking-note, label.booking-note > span { font-size: 1.26rem !important; }
div.facial-copy > p, div.booking-copy > p, div.service-copy > p { font-size: 1.296rem !important; }
div.principle > strong, span.location-index, div.process-step > span, div.week-legend > span, h3.flow-title > span { font-size: .96rem !important; }
div.footer-column > h2 { font-size: .9rem !important; }
div.stars { font-size: 1.32rem !important; }
article.review > cite, article.review > a { font-size: 1.128rem !important; }
div.footer-column > span, div.faq-intro > p, p.variant-a-only, p.portal-status, p.portal-status > strong, section.app-card.calendar-card.availability-card > p, section.app-card.calendar-card.availability-card > noscript, label.booking-treatment, aside.app-card.soft.arrange > p, section.app-card.ways > p, div.wrap.app-wrap.policy > p, article.wrap.app-wrap.policy > p, section.wrap.app-wrap.policy > p, div.wrap.app-wrap > p, div.price-card > p, div.price-card.featured > p, form.app-card > label, form.app-card.soft > p, form.app-card.soft > label, div.app-fields > label, section.app-card > p, section.app-card > a { font-size: 1.35rem !important; }
p.service-price, div.wrap.intro.intro-left > p, div.wrap.intro > p, div.intro > p { font-size: 1.38rem !important; }
button.small-button { font-size: .864rem !important; }
.app-wrap p, .flow-step p, .flow-summary p, .flow-summary-head p, .booking-sheet p, .booking-facts dt, .facial-prices dt, dl dt { font-size: 1.2rem !important; }

/* Section headers: title first, supporting copy beneath it (no side column starting above the title) */
.ljs-home .section-intro, .ljs-home .combined .section-intro, .ljs-home .locations-top, .ljs-home .proof-heading { display: block; }
.ljs-home .section-intro p, .ljs-home .locations-top p { max-width: 46ch; margin: 22px 0 0; }
.ljs-home .proof-heading .trustpilot-mark { display: inline-flex; margin-top: 22px; }
.split-list:has(> p.lead) { grid-template-columns: 1fr; gap: 22px; }
.split-list > p.lead { max-width: 52ch; margin: 0; }
.app-wrap a, .app-wrap p, .app-card a, .footer-column a, .footer-column span { overflow-wrap: anywhere; }
.ljs-home .approach-copy p.eyebrow { font-size: 1.2rem !important; color: #087e92; }
.ljs-home .site-footer a.ljs-credit, .ljs-home .site-footer a.ljs-credit span { color: #9aa7b3; }

/* Footer contact: keep the full email address on one line */
footer .footer-column a[href^="mailto:"] { white-space: nowrap; overflow-wrap: normal; }
@media (min-width: 1081px) { footer .footer-grid { grid-template-columns: 1.2fr .7fr .8fr minmax(max-content, 1fr); } }
@media (max-width: 1080px) { footer .footer-grid .footer-column:last-child { grid-column: 1 / -1; } }
