/* RUMA v3 · Descanso Nocturno · base, shell and marketing pages.
   Idea: the site is the studio after sunset. Images sit dimmed like a room at night;
   your pointer is a candle that warms whatever it passes over.
   Loaded only by themes/v3/layouts/public. The booking pages (default templates) are
   restyled in app.css. Colours come from tokens.css only. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: 128px; color-scheme: dark; background: #191512; } /* = --night (Ink); html sits outside .theme-v3's token scope */
body.theme-v3 {
  margin: 0; min-height: 100vh; display: flex; flex-direction: column;
  background: var(--night); color: var(--text);
  font-family: var(--font-body); font-size: var(--fs-body); line-height: 1.65; font-weight: 400;
  -webkit-font-smoothing: antialiased; overflow-x: clip; text-rendering: optimizeLegibility;
}
.theme-v3 main { flex: 1 0 auto; }
.theme-v3 main:focus { outline: none; }
.theme-v3 h1, .theme-v3 h2, .theme-v3 h3, .theme-v3 h4, .theme-v3 p, .theme-v3 figure, .theme-v3 blockquote, .theme-v3 dl, .theme-v3 dd { margin: 0; }
.theme-v3 img, .theme-v3 video, .theme-v3 svg { display: block; max-width: 100%; }
.theme-v3 img { height: auto; }
.theme-v3 a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .22em; }
.theme-v3 button, .theme-v3 input, .theme-v3 select, .theme-v3 textarea { font: inherit; color: inherit; }
.theme-v3 button { cursor: pointer; }
.theme-v3 a, .theme-v3 button { touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.theme-v3 ::selection { background: var(--candle); color: var(--on-candle); }
.theme-v3 :focus-visible { outline: 2px solid var(--candle); outline-offset: 3px; border-radius: 4px; }
.theme-v3 [hidden] { display: none !important; }
.theme-v3 .visually-hidden, .theme-v3 .sr-only {
  position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

/* grain: fixed, never on scrolling layers */
body.theme-v3::after {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: var(--z-grain);
  opacity: .07; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .9  0 0 0 0 .8  0 0 0 0 .7  0 0 0 1 0'/></filter><rect width='100%' height='100%' filter='url%28%23n%29'/></svg>");
}

.theme-v3 .skip {
  position: fixed; left: 16px; top: -80px; z-index: var(--z-skip);
  background: var(--candle); color: var(--on-candle); padding: 12px 20px; border-radius: var(--r-pill);
  font-weight: 600; text-decoration: none; transition: top .25s var(--ease-out);
}
.theme-v3 .skip:focus { top: 16px; }

.theme-v3 .wrap { width: 100%; max-width: var(--wrap); margin-inline: auto; padding-inline: var(--gut); }
.theme-v3 .wrap--narrow { max-width: var(--wrap-narrow); }
.theme-v3 .wrap--wide { max-width: var(--wrap-wide); }

/* ---------- type ---------- */
.theme-v3 h1, .theme-v3 h2, .theme-v3 h3, .theme-v3 h4 { font-family: var(--font-display); font-weight: 400; color: var(--text-strong); line-height: 1.1; letter-spacing: -.02em; text-wrap: balance; font-kerning: normal; }
.theme-v3 h1 em, .theme-v3 h2 em, .theme-v3 h3 em { font-style: italic; font-weight: 400; color: var(--candle-soft); padding-right: .04em; letter-spacing: -.01em; }
.theme-v3 h2 { font-size: var(--fs-h2); }
.theme-v3 h3 { font-size: var(--fs-h3); line-height: 1.12; }
.theme-v3 p { text-wrap: pretty; }
.theme-v3 .lede { font-size: clamp(1.125rem, 1.4vw, 1.3rem); line-height: 1.6; color: var(--text); max-width: 58ch; }
.theme-v3 .muted { color: var(--muted); }
.theme-v3 .accent-word { font-family: var(--font-display); font-style: italic; font-size: 1.35rem; color: var(--candle); letter-spacing: .01em; line-height: 1.2; display: inline-block; }
.theme-v3 .label { font-size: var(--fs-micro); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--muted); font-weight: 500; }
.theme-v3 .tnum, .theme-v3 .upnext__time, .theme-v3 .n-date b, .theme-v3 .tonight__time { font-variant-numeric: tabular-nums lining-nums; }

/* ---------- buttons (the default templates use plain .btn as the primary) ---------- */
.theme-v3 .btn {
  --h: 52px;
  display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: var(--h);
  padding: 0 26px; border: 0; border-radius: var(--r-pill); cursor: pointer;
  background: var(--candle); color: var(--on-candle); box-shadow: 0 0 0 0 rgba(var(--candle-glow) / 0);
  font-size: var(--fs-small); font-weight: 600; letter-spacing: .01em; line-height: 1.2; text-decoration: none; white-space: nowrap;
  transition: transform .16s var(--ease-out), background-color .4s var(--ease-warm), color .4s var(--ease-warm), box-shadow .6s var(--ease-warm);
}
.theme-v3 .btn:has(> .btn__ic) { padding: 0 7px 0 24px; }
/* small phones: a long label (Spanish runs longer) wraps inside its button instead of widening the page */
@media (max-width: 480px) { .theme-v3 main .btn { white-space: normal; text-align: center; } }
.theme-v3 .btn:active { transform: scale(.97); }
.theme-v3 .btn > svg { width: 15px; height: 15px; flex: none; transition: transform .5s var(--ease-out); }
.theme-v3 .btn__ic {
  width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; flex: none;
  background: rgb(var(--night-rgb) / .12); transition: transform .5s var(--ease-out);
}
.theme-v3 .btn__ic svg { width: 15px; height: 15px; }
.theme-v3 .btn--candle, .theme-v3 .btn--primary { background: var(--candle); color: var(--on-candle); }
.theme-v3 .btn--ghost, .theme-v3 .btn--quiet { background: transparent; color: var(--text-strong); box-shadow: inset 0 0 0 1px var(--line-strong); }
.theme-v3 .btn--ghost .btn__ic, .theme-v3 .btn--quiet .btn__ic { background: rgb(var(--candle-glow) / .14); color: var(--candle-soft); }
.theme-v3 .btn--danger { background: transparent; color: var(--danger); box-shadow: inset 0 0 0 1px var(--danger-line); }
.theme-v3 .btn--sm, .theme-v3 .btn--small { --h: 44px; padding: 0 20px; }
.theme-v3 .btn--block { width: 100%; }
/* large: the few moments that carry a page (home hero). 54px on phones, ~60px on desktop. */
.theme-v3 .btn--lg { --h: clamp(54px, 4.2vw, 62px); padding: 0 34px; gap: 16px; font-size: clamp(1.0625rem, .3vw + .95rem, 1.175rem); letter-spacing: .015em; }
.theme-v3 .btn--lg:has(> .btn__ic) { padding: 0 9px 0 32px; }
.theme-v3 .btn--lg .btn__ic { width: calc(var(--h) - 16px); height: calc(var(--h) - 16px); }
.theme-v3 .btn--lg .btn__ic svg { width: 17px; height: 17px; }
/* text: a quiet secondary next to a candle button; the underline is the affordance */
.theme-v3 .btn--text { background: transparent; color: var(--text-strong); padding: 0; gap: 12px; font-weight: 500;
  background-image: linear-gradient(rgb(var(--candle-glow) / .7), rgb(var(--candle-glow) / .7)); background-repeat: no-repeat;
  background-size: 100% 1px; background-position: 0 calc(50% + .95em); transition: background-size .6s var(--ease-warm), color .4s var(--ease-warm); }
.theme-v3 .btn--text > svg { color: var(--candle-soft); }
.theme-v3 .btn[disabled], .theme-v3 .btn[aria-disabled="true"] { background: var(--ember-2); color: var(--muted); box-shadow: none; cursor: not-allowed; }
@media (hover: hover) and (pointer: fine) {
  .theme-v3 .btn:not(.btn--ghost):not(.btn--quiet):not(.btn--danger):not(.btn--text):not([disabled]):hover { box-shadow: 0 0 42px -6px rgba(var(--candle-glow) / .65); background: var(--candle-hover); }
  .theme-v3 .btn--ghost:hover, .theme-v3 .btn--quiet:hover { background: rgb(var(--candle-glow) / .1); }
  .theme-v3 .btn--danger:hover { background: var(--danger-wash); }
  .theme-v3 .btn:hover .btn__ic { transform: translate(3px, -1px) scale(1.05); }
  .theme-v3 .btn:hover > svg { transform: translateX(3px); }
  .theme-v3 .btn--text:hover { color: var(--candle-soft); background-size: 40% 1px; }
  .theme-v3 .btn--text:hover > svg { transform: translateY(3px); }
}
.theme-v3 form.button_to { display: inline; margin: 0; }
.theme-v3 .link, .theme-v3 .more {
  color: var(--candle-soft); font-weight: 500; font-size: var(--fs-small); text-decoration: none; display: inline-flex; align-items: center; gap: 8px;
  background: linear-gradient(currentColor, currentColor) 0 calc(100% - 8px) / 100% 1px no-repeat; min-height: 44px;
  transition: background-size .5s var(--ease-warm);
}
.theme-v3 .link svg, .theme-v3 .more svg { width: 14px; height: 14px; }
@media (hover: hover) { .theme-v3 .link:hover, .theme-v3 .more:hover { background-size: 35% 1px; } }
.theme-v3 .linkbtn {
  background: none; border: 0; padding: 0; min-height: 44px; display: inline-flex; align-items: center; font-size: inherit;
  color: inherit; text-decoration: underline; text-underline-offset: .22em; text-decoration-color: var(--line-strong); cursor: pointer;
}
.theme-v3 .inline-link, .theme-v3 .prose a { color: var(--candle-soft); text-decoration: underline; text-underline-offset: .22em; text-decoration-color: var(--line-strong); }
@media (hover: hover) { .theme-v3 .inline-link:hover, .theme-v3 .prose a:hover, .theme-v3 .linkbtn:hover { text-decoration-color: currentColor; } }

/* intensity dots */
.theme-v3 .dots { display: inline-flex; gap: 5px; align-items: center; vertical-align: middle; }
.theme-v3 .dots i { width: 7px; height: 7px; border-radius: 50%; box-shadow: inset 0 0 0 1px var(--candle); }
.theme-v3 .dots i.on { background: var(--candle); box-shadow: 0 0 8px rgba(var(--candle-glow) / .55); }
.theme-v3 .dots-wrap { display: inline-flex; align-items: center; gap: 10px; }

/* flame glyph */
.theme-v3 .flame { width: 14px; height: 20px; flex: none; color: var(--candle); overflow: visible; }
.theme-v3 .flame path { transform-origin: 50% 100%; transform-box: fill-box; }

/* ---------- header ---------- */
.theme-v3 .site-head { position: sticky; top: 0; z-index: calc(var(--z-menu) + 1); padding-top: env(safe-area-inset-top); }
.theme-v3.has-hero .site-head { position: fixed; inset: 0 0 auto; }
.theme-v3 .ribbon {
  display: flex; justify-content: center; align-items: center; gap: 10px; min-height: 36px; padding: 4px 16px;
  background: var(--plum-deep); color: var(--text); font-size: var(--fs-small); text-decoration: none; text-align: center;
  transition: background-color .4s var(--ease-warm);
}
.theme-v3 .ribbon strong { color: var(--candle-soft); font-weight: 700; }
.theme-v3 .ribbon span[aria-hidden] { color: var(--candle-soft); }
.theme-v3 .ribbon:focus-visible { outline-offset: -4px; }
@media (hover: hover) { .theme-v3 .ribbon:hover { background: var(--plum); } }
.theme-v3 .nav {
  height: 76px; background: rgb(var(--night-rgb) / .96); box-shadow: 0 1px 0 var(--line);
  transition: background-color .6s var(--ease-warm), box-shadow .6s var(--ease-warm);
}
.theme-v3.has-hero .nav { background: linear-gradient(180deg, rgb(var(--night-rgb) / .72), rgb(var(--night-rgb) / 0)); box-shadow: none; }
.theme-v3.has-hero .site-head.is-solid .nav { background: rgb(var(--night-rgb) / .96); box-shadow: 0 1px 0 var(--line); }
.theme-v3 .nav .wrap { display: flex; align-items: center; gap: 16px; height: 100%; }
/* the logo: the RUMA wordmark (inline vector, currentColor), never under 96px wide (brand guide p.11) */
.theme-v3 .wordmark { display: inline-flex; gap: 14px; text-decoration: none; color: var(--text-strong); min-height: 44px; align-items: center; flex: none; }
.theme-v3 .wordmark__logo { width: 112px; height: auto; flex: none; overflow: visible; transition: color .4s var(--ease-warm); }
.theme-v3 .logo--text { font-family: var(--font-display); font-weight: 400; font-size: 1.7rem; letter-spacing: .24em; line-height: 1; margin-right: -.24em; }
.theme-v3 .wordmark__logo.logo--text, .theme-v3 .foot__logo-svg.logo--text { width: auto; }
.theme-v3 .wordmark b { font-family: var(--font-display); font-weight: 400; font-size: 1.7rem; letter-spacing: .24em; line-height: 1; }
.theme-v3 .wordmark__tag { display: none; font-family: var(--font-display); font-style: italic; font-size: var(--fs-small); color: var(--muted); border-left: 1px solid var(--line); padding-left: 14px; line-height: 1.2; white-space: nowrap; }
@media (hover: hover) { .theme-v3 a.wordmark:hover .wordmark__logo { color: var(--candle-soft); } }
/* the rest of the header (the five rooms, the menu, breakpoints) is in pages/nav.css */

/* ---------- shared media ---------- */
.theme-v3 .media { position: relative; overflow: hidden; border-radius: var(--r-media); background: var(--ember); isolation: isolate; }
.theme-v3 .media > img, .theme-v3 .vid > img, .theme-v3 .vid > video { width: 100%; height: 100%; object-fit: cover; }
/* night grade: lifted blacks, amber highlights, low saturation */
.theme-v3 .grade { filter: sepia(.28) saturate(.82) contrast(.96) brightness(.8); }
.theme-v3 .media::before {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(120% 90% at 50% 40%, transparent 40%, rgb(var(--deep-rgb) / .55)), linear-gradient(180deg, rgb(var(--dusk-rgb) / .18), rgb(var(--ember-rgb) / .28));
  mix-blend-mode: multiply;
}
/* the candle cursor: brightens whatever image it passes over */
.theme-v3 .lit::after {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; opacity: 0;
  background: radial-gradient(circle 260px at var(--mx, 50%) var(--my, 50%), rgb(var(--flame-rgb) / .62), rgb(var(--flame-rgb) / .2) 45%, transparent 72%);
  mix-blend-mode: soft-light; transition: opacity .7s var(--ease-warm);
}
.theme-v3 .lit.is-lit::after { opacity: 1; }
.theme-v3 .lit > img { transition: filter 1.2s var(--ease-warm); }
.theme-v3 .lit.is-lit > img.grade { filter: sepia(.24) saturate(.9) contrast(1) brightness(.92); }

.theme-v3 .vid { position: absolute; inset: 0; }
.theme-v3 .vid > img, .theme-v3 .vid > video { position: absolute; inset: 0; }
.theme-v3 .vid::after { content: ""; position: absolute; inset: 0; background: var(--ember); mix-blend-mode: screen; opacity: .34; pointer-events: none; }
.theme-v3 .hero .vid::after { opacity: .22; }
.theme-v3 .vid > video { opacity: 0; transition: opacity .6s var(--ease-warm); }
.theme-v3 .vid.is-playing > video { opacity: 1; }
.theme-v3 .vid-toggle {
  position: absolute; z-index: 4; right: 16px; bottom: 16px; width: 44px; height: 44px; border: 0; padding: 0; border-radius: 50%;
  display: grid; place-items: center; color: var(--text-strong); background: rgb(var(--deep-rgb) / .7); box-shadow: inset 0 0 0 1px rgb(var(--text-rgb) / .24);
  transition: background-color .3s var(--ease-warm), transform .16s var(--ease-out);
}
.theme-v3 .vid-toggle:active { transform: scale(.94); }
.theme-v3 .vid-toggle svg { width: 14px; height: 14px; }
.theme-v3 .vid-toggle .i-play { display: none; }
.theme-v3 .vid-toggle[aria-pressed="true"] .i-play { display: block; }
.theme-v3 .vid-toggle[aria-pressed="true"] .i-pause { display: none; }
@media (hover: hover) { .theme-v3 .vid-toggle:hover { background: rgb(var(--ember-rgb) / .92); } }
.no-motion .theme-v3 .vid-toggle, html:not(.js) .theme-v3 .vid-toggle { display: none; }

/* ambient halo following the pointer (fine pointers only) */
.theme-v3 .halo {
  position: fixed; left: 0; top: 0; width: 520px; height: 520px; margin: -260px 0 0 -260px; border-radius: 50%; pointer-events: none; z-index: var(--z-halo);
  background: radial-gradient(closest-side, rgba(var(--candle-glow) / .075), transparent);
  mix-blend-mode: screen; opacity: 0; transition: opacity .8s var(--ease-warm); will-change: transform;
}
.theme-v3 .halo.is-on { opacity: 1; }

/* ---------- reveal: slow candlelight fades (1.2s). Hidden only with JS + motion allowed ---------- */
@media (prefers-reduced-motion: no-preference) {
  .js .theme-v3 [data-reveal] { opacity: 0; transform: translateY(14px); filter: blur(5px);
    transition: opacity var(--t-reveal) var(--ease-warm), transform var(--t-reveal) var(--ease-warm), filter var(--t-reveal) var(--ease-warm);
    transition-delay: calc(var(--d, 0) * 90ms); }
  .js .theme-v3 [data-reveal].is-in { opacity: 1; transform: none; filter: none; }
  /* Above the fold (home hero, page heads) never waits for JS: the same rise plays from the
     first paint in CSS alone and never starts invisible, so the heading is painted (and counted
     as LCP) at once. Below the fold keeps the JS reveal. */
  .js .theme-v3 :is(.hero, .pagehead, .page-head) [data-reveal] { opacity: 1; transform: none; filter: none; transition: none;
    animation: v3-rise var(--t-reveal) var(--ease-warm) both; animation-delay: calc(var(--d, 0) * 90ms); }
}
@keyframes v3-rise { from { opacity: .35; transform: translateY(14px); } }

/* ---------- breathing glow (4s swell / 6s settle) ---------- */
.theme-v3 .glow {
  position: absolute; left: 50%; top: 50%; width: min(1100px, 130vw); aspect-ratio: 1; translate: -50% -50%; pointer-events: none; z-index: 1;
  background: radial-gradient(closest-side, rgb(var(--flame-rgb) / .34), rgb(var(--candle-glow) / .14) 38%, rgb(var(--dusk-rgb) / .06) 62%, transparent 72%);
  mix-blend-mode: screen; transform: scale(.88); opacity: .7;
}
@media (prefers-reduced-motion: no-preference) {
  .theme-v3 .glow { animation: v3-breathe calc(var(--breath-in) + var(--breath-out)) infinite; }
  .theme-v3 .flame path { animation: v3-flicker 2.8s infinite; }
  .theme-v3 .flame .f-core { animation-duration: 2.1s; animation-direction: alternate-reverse; }
}
@keyframes v3-breathe {
  0% { transform: scale(.86); opacity: .55; animation-timing-function: cubic-bezier(.45, 0, .4, 1); }
  40% { transform: scale(1.08); opacity: 1; animation-timing-function: cubic-bezier(.5, 0, .3, 1); }
  100% { transform: scale(.86); opacity: .55; }
}
@keyframes v3-flicker {
  0%, 100% { transform: scale(1, 1) skewX(0); opacity: 1; }
  18% { transform: scale(.94, 1.05) skewX(2deg); opacity: .92; }
  36% { transform: scale(1.03, .96) skewX(-1deg); }
  52% { transform: scale(.97, 1.07) skewX(-2.5deg); opacity: .86; }
  71% { transform: scale(1.02, .97) skewX(1.5deg); opacity: .97; }
  86% { transform: scale(.98, 1.03) skewX(-.5deg); }
}

/* ---------- home hero: "Your place is waiting." ----------
   Set low and to the left over the candlelit loop, so the right half of the film stays open.
   The scrim darkens only where the words sit (cream text stays above 7:1 on the brightest
   frame, the sunset); the bottom fades into the page. Type and layout live in pages/home.css. */
.theme-v3 .hero { position: relative; min-height: 100dvh; display: grid; align-items: end; overflow: hidden; background: var(--night-deep); isolation: isolate; }
.theme-v3 .hero .vid img, .theme-v3 .hero .vid video { filter: sepia(.18) saturate(.86) contrast(1.02) brightness(.72); object-position: 50% 45%; }
.theme-v3 .hero__scrim { position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background:
    radial-gradient(90% 85% at 0% 100%, rgb(var(--deep-rgb) / .86) 0%, rgb(var(--deep-rgb) / .62) 42%, rgb(var(--deep-rgb) / 0) 78%),
    linear-gradient(90deg, rgb(var(--deep-rgb) / .5) 0%, rgb(var(--deep-rgb) / 0) 62%),
    linear-gradient(180deg, rgb(var(--night-rgb) / .6) 0%, rgb(var(--night-rgb) / 0) 24%, rgb(var(--night-rgb) / 0) 70%, var(--night) 100%); }
.theme-v3 .hero__inner { position: relative; z-index: 2; width: 100%; max-width: var(--wrap); margin-inline: auto;
  padding: calc(var(--head-h) + 48px) var(--gut) clamp(72px, 11vh, 136px); }
.theme-v3 .hero .vid-toggle { right: var(--gut); bottom: 28px; }
@media (max-width: 700px) {
  .theme-v3 .hero__inner { padding-bottom: calc(var(--dock-h) + 40px); }
  /* portrait: the words fill the lower half, so the scrim does too (tealight flames sit low in the loop) */
  .theme-v3 .hero__scrim { background:
    linear-gradient(180deg, rgb(var(--night-rgb) / .6) 0%, rgb(var(--night-rgb) / 0) 22%, rgb(var(--deep-rgb) / .1) 40%, rgb(var(--deep-rgb) / .72) 62%, rgb(var(--deep-rgb) / .9) 100%); }
  .theme-v3 .hero .vid img, .theme-v3 .hero .vid video { object-position: 50% 40%; }
  /* keep the hero pause control clear of the fixed concept switcher */
  .theme-v3 .hero .vid-toggle, .theme-v3 .pagehead .vid-toggle { bottom: auto; top: calc(var(--head-h) + 16px); }
}

/* ---------- sections ---------- */
.theme-v3 .section { padding-block: var(--section); position: relative; }
.theme-v3 .section--ember { background: linear-gradient(180deg, var(--night), var(--ember) 18%, var(--ember) 82%, var(--night)); }
.theme-v3 .section--tight { padding-block: clamp(64px, 8vw, 112px); }
.theme-v3 .section--flush-top { padding-top: 0; }
.theme-v3 .sec-head { display: grid; gap: 18px; margin-bottom: clamp(40px, 5vw, 72px); max-width: 780px; }
.theme-v3 .dusk { background:
  radial-gradient(55% 55% at 78% 32%, rgb(var(--dusk-rgb) / .7), transparent 72%),
  radial-gradient(45% 50% at 12% 78%, rgb(var(--dusk-rgb) / .4), transparent 72%), var(--night); }

/* tonight module */
.theme-v3 .tonight { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 64px); align-items: stretch; }
.theme-v3 .tonight__card { position: relative; min-height: 560px; border-radius: var(--r-shell); overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; padding: clamp(24px, 3.4vw, 48px); isolation: isolate; background: var(--night-deep); }
.theme-v3 .tonight__card .vid img, .theme-v3 .tonight__card .vid video { filter: sepia(.2) saturate(.85) brightness(.66); }
.theme-v3 .tonight__card::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgb(var(--night-rgb) / .15) 0%, rgb(var(--night-rgb) / .4) 35%, rgb(var(--night-rgb) / .92) 76%); pointer-events: none; }
.theme-v3 .tonight__card > *:not(.vid):not(.vid-toggle) { position: relative; z-index: 3; }
.theme-v3 .tonight__card .vid-toggle { top: 18px; right: 18px; bottom: auto; }
.theme-v3 .tonight__when { display: flex; align-items: baseline; gap: 14px; font-family: var(--font-display); color: var(--text-strong); }
.theme-v3 .tonight__time { font-size: clamp(4.5rem, 10vw, 8rem); line-height: .9; font-weight: 300; letter-spacing: -.03em; }
.theme-v3 .tonight__ampm { font-size: 1.9rem; font-style: italic; color: var(--candle-soft); }
.theme-v3 .tonight__name { font-family: var(--font-display); font-weight: 300; color: var(--text-strong); line-height: 1.05; font-size: clamp(2rem, 3.4vw, 3rem); margin: 10px 0 12px; }
.theme-v3 .tonight__meta { display: flex; flex-wrap: wrap; gap: 10px 22px; color: var(--text); font-size: var(--fs-small); margin-bottom: 26px; align-items: center; }
.theme-v3 .tonight__side { display: flex; flex-direction: column; padding-top: 8px; }
.theme-v3 .tonight__side h2 { margin: 8px 0 18px; }
.theme-v3 .tonight__side > .link { align-self: flex-start; }
.theme-v3 .tonight__side > .label { margin-top: 36px; }
.theme-v3 .upnext { list-style: none; padding: 0; margin: 16px 0 24px; border-top: 1px solid var(--line); }
.theme-v3 .upnext li { display: grid; grid-template-columns: 92px minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 16px 0; border-bottom: 1px solid var(--line); }
.theme-v3 .upnext__time { font-family: var(--font-display); font-size: 1.6rem; color: var(--text-strong); line-height: 1; }
.theme-v3 .upnext__time small { font-size: var(--fs-small); font-style: italic; color: var(--muted); margin-left: 2px; }
.theme-v3 .upnext__cls { display: grid; gap: 2px; min-width: 0; }
.theme-v3 .upnext__cls a { font-weight: 500; color: var(--text-strong); text-decoration: none; }
.theme-v3 .upnext__cls a:hover { text-decoration: underline; }
.theme-v3 .upnext__cls span { font-size: var(--fs-small); color: var(--muted); }
.theme-v3 .upnext__cls .upnext__day { font-size: var(--fs-micro); color: var(--candle); letter-spacing: var(--track-label); text-transform: uppercase; }
.theme-v3 .upnext li.is-next .upnext__time { color: var(--candle-soft); }
.theme-v3 .upnext li .flame { opacity: 0; }
.theme-v3 .upnext li.is-next .flame { opacity: 1; }
.theme-v3 .upnext__right { display: flex; align-items: center; gap: 12px; color: var(--muted); font-size: var(--fs-small); }
.theme-v3 .upnext__book {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border-radius: var(--r-pill); color: var(--candle-soft);
  box-shadow: inset 0 0 0 1px var(--line-strong); font-weight: 600; text-decoration: none; transition: background-color .35s var(--ease-warm);
}
@media (hover: hover) { .theme-v3 .upnext__book:hover { background: rgb(var(--candle-glow) / .12); } }
.theme-v3 .upnext__full { font-size: var(--fs-small); color: var(--muted); font-style: italic; }
.theme-v3 .upnext-empty { font-family: var(--font-display); font-style: italic; font-size: 1.35rem; color: var(--muted); padding: 20px 0; }
@media (max-width: 900px) { .theme-v3 .tonight { grid-template-columns: 1fr; } .theme-v3 .tonight__card { min-height: 480px; } }
@media (max-width: 520px) {
  .theme-v3 .upnext li { grid-template-columns: 64px minmax(0, 1fr); gap: 4px 12px; }
  .theme-v3 .upnext__time { font-size: 1.35rem; grid-row: span 2; }
  .theme-v3 .upnext__right { grid-column: 2; }
  .theme-v3 .upnext__right .flame { display: none; }
}

/* pillars: hover list with a single swapping frame */
.theme-v3 .pillars { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); align-items: center; }
.theme-v3 .pillars__list { list-style: none; padding: 0; margin: 0; }
.theme-v3 .pillar { border-top: 1px solid var(--line); }
.theme-v3 .pillar:last-child { border-bottom: 1px solid var(--line); }
.theme-v3 .pillar__btn { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 8px 24px; width: 100%; padding: clamp(22px, 2.6vw, 34px) 0; text-decoration: none; color: inherit; }
.theme-v3 .pillar__word { font-family: var(--font-display); font-size: clamp(2.8rem, 6.4vw, 5.6rem); font-weight: 300; line-height: 1.02; color: var(--text); transition: color .6s var(--ease-warm), transform .8s var(--ease-out); display: block; }
.theme-v3 .pillar__es { font-family: var(--font-display); font-style: italic; font-size: 1.3rem; color: var(--candle); }
.theme-v3 .pillar__line { grid-column: 1 / -1; color: var(--text); max-width: 48ch; }
.theme-v3 .pillar.is-on .pillar__word { color: var(--candle-soft); font-style: italic; transform: translateX(8px); }
.theme-v3 .pillars__frames { position: relative; aspect-ratio: 4 / 5; }
.theme-v3 .pillar__img { position: absolute; inset: 0; opacity: 0; transition: opacity 1.1s var(--ease-warm); }
.theme-v3 .pillar__img.is-on { opacity: 1; }
.theme-v3 .pillar__img img { width: 100%; height: 100%; object-fit: cover; }
.theme-v3 .pillar__m { display: none; }
@media (max-width: 860px) {
  .theme-v3 .pillars { grid-template-columns: 1fr; }
  .theme-v3 .pillars__frames { display: none; }
  .theme-v3 .pillar__m { display: block; grid-column: 1 / -1; aspect-ratio: 16 / 10; margin-top: 12px; }
  .theme-v3 .pillar__m img { width: 100%; height: 100%; object-fit: cover; }
  .theme-v3 .pillar.is-on .pillar__word { transform: none; }
}

/* breathe with us */
.theme-v3 .breath { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); align-items: center; }
.theme-v3 .breath__copy { display: grid; gap: 22px; justify-items: start; }
.theme-v3 .breath__stage { position: relative; aspect-ratio: 1; max-width: 520px; width: 100%; justify-self: center; display: grid; place-items: center; }
.theme-v3 .breath__stage svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.theme-v3 .ring-track { fill: none; stroke: rgb(var(--candle-glow) / .16); stroke-width: 1; }
.theme-v3 .ring-prog { fill: none; stroke: var(--candle); stroke-width: 1.5; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 1; transform: rotate(-90deg); transform-origin: 50% 50%; }
.theme-v3 .ring-core { transform-origin: 50% 50%; transform: scale(.62); transition: transform 4s cubic-bezier(.45, 0, .4, 1), opacity 4s; opacity: .8; }
.theme-v3 .breath[data-phase="in"] .ring-core, .theme-v3 .breath[data-phase="hold"] .ring-core { transform: scale(1); opacity: 1; }
.theme-v3 .breath[data-phase="out"] .ring-core { transform: scale(.62); opacity: .72; transition-duration: 6s; transition-timing-function: cubic-bezier(.5, 0, .3, 1); }
.theme-v3 .ring-ticks line { stroke: rgb(var(--candle-glow) / .35); stroke-width: 1; }
.theme-v3 .breath__word { position: relative; z-index: 2; text-align: center; display: grid; gap: 6px; padding: 0 16%; }
.theme-v3 .breath__word b { font-family: var(--font-display); font-weight: 300; font-style: italic; font-size: clamp(2.4rem, 4.6vw, 3.6rem); color: var(--text-strong); line-height: 1.05; }
.theme-v3 .breath__word span { font-size: var(--fs-small); color: var(--text); font-variant-numeric: tabular-nums; }
@media (prefers-reduced-motion: reduce) {
  .theme-v3 .ring-core, .theme-v3 .breath[data-phase] .ring-core { transform: scale(.82) !important; transition: opacity 1s !important; }
  .theme-v3 .breath[data-phase="out"] .ring-core { opacity: .55; }
}
@media (max-width: 860px) { .theme-v3 .breath { grid-template-columns: 1fr; } .theme-v3 .breath__stage { max-width: 360px; } }

/* double-bezel shell */
.theme-v3 .shell { padding: 8px; border-radius: var(--r-shell); background: rgb(var(--text-rgb) / .035); box-shadow: inset 0 0 0 1px var(--line); }
.theme-v3 .core { border-radius: var(--r-core); background: var(--ember); box-shadow: inset 0 1px 0 rgb(var(--text-rgb) / .07); overflow: hidden; position: relative; }

/* intro offer card (home) */
.theme-v3 .n-offer .core { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); min-height: 460px; }
.theme-v3 .n-offer__media { position: relative; min-height: 320px; }
.theme-v3 .n-offer__media .vid img, .theme-v3 .n-offer__media .vid video { filter: sepia(.15) brightness(.95); object-position: 68% 50%; }
.theme-v3 .n-offer__media::after { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; background: linear-gradient(90deg, transparent 60%, var(--ember)); }
.theme-v3 .n-offer__body { padding: clamp(28px, 4.4vw, 64px); display: grid; align-content: center; gap: 20px; justify-items: start; }
.theme-v3 .n-offer__body h2 { font-size: clamp(2rem, 3.4vw, 3rem); }
.theme-v3 .big-price { font-family: var(--font-display); font-size: clamp(4.4rem, 9vw, 7.4rem); font-weight: 300; line-height: .85; color: var(--candle-soft); letter-spacing: -.03em; }
.theme-v3 .big-price sup { font-size: .4em; vertical-align: .9em; margin-right: 4px; }
.theme-v3 .ticks { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.theme-v3 .ticks li { padding-left: 28px; position: relative; }
.theme-v3 .ticks li::before { content: ""; position: absolute; left: 2px; top: .8em; width: 14px; height: 1px; background: var(--candle); }
@media (max-width: 800px) {
  .theme-v3 .n-offer .core { grid-template-columns: 1fr; }
  .theme-v3 .n-offer__media { min-height: 300px; }
  .theme-v3 .n-offer__media .vid img, .theme-v3 .n-offer__media .vid video { object-position: 66% 55%; }
  .theme-v3 .n-offer__media::after { background: linear-gradient(180deg, transparent 55%, var(--ember)); }
}

/* teachers teaser */
.theme-v3 .tteaser { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(32px, 6vw, 96px); align-items: center; }
.theme-v3 .tteaser__film { position: relative; aspect-ratio: 4 / 5; border-radius: 50% / 38%; overflow: hidden; background: var(--ember); }
.theme-v3 .tteaser__film .vid img, .theme-v3 .tteaser__film .vid video { object-position: 38% 50%; filter: sepia(.1) saturate(.9) brightness(.85); }
.theme-v3 .tteaser__film .vid-toggle { right: 50%; transform: translateX(50%); bottom: 22px; }
.theme-v3 .tteaser__quote { font-family: var(--font-display); font-size: clamp(1.8rem, 3vw, 2.6rem); font-style: italic; font-weight: 300; line-height: 1.2; color: var(--text-strong); max-width: 24ch; margin-top: 28px; }
.theme-v3 .tteaser__quote + p { margin-top: 12px; color: var(--muted); }
.theme-v3 .faces { display: flex; flex-wrap: wrap; gap: 18px 22px; list-style: none; padding: 0; margin: 40px 0 36px; }
.theme-v3 .faces li { display: grid; gap: 10px; justify-items: center; width: 96px; text-align: center; }
.theme-v3 .faces a { display: grid; gap: 10px; justify-items: center; text-decoration: none; }
.theme-v3 .faces .oval { width: 96px; aspect-ratio: 3 / 4; }
.theme-v3 .faces .faces__name { font-size: var(--fs-small); color: var(--text); line-height: 1.3; }
.theme-v3 .oval { border-radius: 50%; overflow: hidden; position: relative; background: var(--ember); isolation: isolate; display: block; }
.theme-v3 .oval img { width: 100%; height: 100%; object-fit: cover; filter: sepia(.45) saturate(.75) contrast(1.02) brightness(.74); }
.theme-v3 .oval::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; border-radius: inherit; background: radial-gradient(90% 70% at 30% 20%, rgb(var(--flame-rgb) / .22), transparent 60%), linear-gradient(180deg, rgb(var(--dusk-rgb) / .1), rgb(var(--ember-rgb) / .45)); mix-blend-mode: soft-light; }
.theme-v3 .lit.is-lit.oval > img { filter: sepia(.35) saturate(.85) brightness(.9); }
.theme-v3 .oval__mono { position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--font-display); font-style: italic; font-size: 2.6rem; color: var(--candle-soft); background: radial-gradient(closest-side, var(--plum), var(--ember)); }
@media (max-width: 860px) { .theme-v3 .tteaser { grid-template-columns: 1fr; } .theme-v3 .tteaser__film { max-width: 420px; width: 100%; } }
@media (max-width: 480px) { .theme-v3 .faces { gap: 16px 12px; } .theme-v3 .faces li { width: calc((100% - 24px) / 3); } .theme-v3 .faces .oval { width: 100%; } }

@keyframes v3-halo { 0%, 100% { opacity: .6; } 40% { opacity: 1; } }

/* community teaser + event lists */
.theme-v3 .cteaser { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.theme-v3 .cteaser__moon { margin-bottom: clamp(40px, 5vw, 72px); }
.theme-v3 .stack-sm > * + * { margin-top: 14px; }
.theme-v3 .events-mini { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--line); }
.theme-v3 .events-mini li { display: grid; grid-template-columns: 84px minmax(0, 1fr) auto; gap: 18px; align-items: center; padding: 20px 0; border-bottom: 1px solid var(--line); }
.theme-v3 .n-date { font-family: var(--font-display); line-height: 1; color: var(--text-strong); display: grid; }
.theme-v3 .n-date b { font-weight: 300; font-size: 2.6rem; letter-spacing: -.02em; }
.theme-v3 .n-date span { font-size: var(--fs-small); font-style: italic; color: var(--candle); }
.theme-v3 .events-mini h4 { font-size: 1.45rem; }
.theme-v3 .events-mini p { font-size: var(--fs-small); color: var(--muted); }
.theme-v3 .ev-price { color: var(--candle-soft); font-weight: 500; white-space: nowrap; }
.theme-v3 .cta-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
@media (max-width: 860px) { .theme-v3 .cteaser { grid-template-columns: 1fr; } }
@media (max-width: 480px) { .theme-v3 .events-mini li { grid-template-columns: 64px minmax(0, 1fr); } .theme-v3 .events-mini .ev-price { grid-column: 2; } .theme-v3 .n-date b { font-size: 2.1rem; } }

/* first visit path */
.theme-v3 .path-wrap { position: relative; }
.theme-v3 .path { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(20px, 3vw, 40px); list-style: none; padding: 0; margin: 12px 0 0; }
.theme-v3 .path__line { position: absolute; left: 0; right: 25%; top: 23px; height: 2px; overflow: visible; }
.theme-v3 .path__line path { fill: none; stroke: rgb(var(--candle-glow) / .5); stroke-width: 1; stroke-dasharray: 1; stroke-dashoffset: 0; }
@media (prefers-reduced-motion: no-preference) {
  .js .theme-v3 .path__line path { stroke-dashoffset: 1; transition: stroke-dashoffset 2.4s var(--ease-inout) .2s; }
  .js .theme-v3 .path-wrap.is-in .path__line path { stroke-dashoffset: 0; }
}
.theme-v3 .path li { position: relative; display: grid; gap: 12px; align-content: start; }
.theme-v3 .path__dot { width: 48px; height: 48px; border-radius: 50%; background: var(--night); box-shadow: inset 0 0 0 1px var(--line-strong); display: grid; place-items: center; position: relative; z-index: 1; font-family: var(--font-display); font-size: 1.35rem; font-style: italic; color: var(--candle-soft); }
.theme-v3 .path h3 { font-size: 1.6rem; }
.theme-v3 .path p { color: var(--text); font-size: var(--fs-small); max-width: 30ch; }
@media (max-width: 860px) {
  .theme-v3 .path { grid-template-columns: 1fr; gap: 28px; }
  .theme-v3 .path__line { display: none; }
  .theme-v3 .path li { grid-template-columns: 48px 1fr; column-gap: 20px; }
  .theme-v3 .path li > :not(.path__dot) { grid-column: 2; }
  .theme-v3 .path li::before { content: ""; position: absolute; left: 23.5px; top: 52px; bottom: -26px; width: 1px; background: var(--line-strong); }
  .theme-v3 .path li:last-child::before { display: none; }
  .theme-v3 .path__dot { grid-row: span 2; }
}

/* closing band with tea lights + smoke */
.theme-v3 .band { position: relative; overflow: hidden; min-height: clamp(520px, 72vh, 760px); display: grid; place-items: center; text-align: center; isolation: isolate; background: var(--night-deep); }
.theme-v3 .band .vid img, .theme-v3 .band .vid video { filter: sepia(.2) saturate(.9) brightness(.7); }
.theme-v3 .band::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(180deg, var(--night) 0%, rgb(var(--night-rgb) / .4) 30%, rgb(var(--night-rgb) / .5) 70%, var(--night-deep) 100%); }
.theme-v3 .band__inner { position: relative; z-index: 3; display: grid; justify-items: center; gap: 24px; padding: 96px var(--gut); }
.theme-v3 .band h2 { font-size: clamp(2.8rem, 6.4vw, 5.8rem); text-shadow: 0 2px 36px rgb(var(--deep-rgb) / .7); }
.theme-v3 .band p { color: var(--text-strong); max-width: 44ch; text-shadow: 0 1px 14px rgb(var(--deep-rgb) / .8); }
.theme-v3 .band__ctas { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.theme-v3 .smoke { width: 90px; height: 150px; margin-bottom: -14px; overflow: visible; }
.theme-v3 .smoke path { fill: none; stroke-width: 1.6; stroke-linecap: round; opacity: .8; }
@media (prefers-reduced-motion: no-preference) {
  .theme-v3 .smoke path { stroke-dasharray: .55 .45; animation: v3-smoke 7s linear infinite; }
  .theme-v3 .smoke path + path { animation-duration: 9s; animation-delay: -3s; }
}
@keyframes v3-smoke {
  0% { stroke-dashoffset: 1; opacity: 0; transform: translateY(8px); }
  20% { opacity: .9; }
  80% { opacity: .5; }
  100% { stroke-dashoffset: 0; opacity: 0; transform: translateY(-10px); }
}

/* ---------- footer ---------- */
.theme-v3 .foot { background: var(--night-deep); padding: clamp(64px, 8vw, 112px) 0 88px; position: relative; }
.theme-v3 .foot h2 { font-size: var(--fs-small); font-family: var(--font-body); font-weight: 700; color: var(--candle-soft); letter-spacing: var(--track-label); text-transform: uppercase; margin-bottom: 12px; }
.theme-v3 .foot p, .theme-v3 .foot li, .theme-v3 .foot address { font-style: normal; color: var(--text); font-size: var(--fs-small); line-height: 1.7; }
.theme-v3 .foot ul { list-style: none; padding: 0; margin: 0; }
.theme-v3 .foot a:not(.btn), .theme-v3 .foot .linkbtn { text-decoration: none; display: inline-flex; min-height: 44px; align-items: center; }
@media (hover: hover) { .theme-v3 .foot a:not(.btn):hover, .theme-v3 .foot .linkbtn:hover { color: var(--candle-soft); text-decoration: underline; } }

/* "Stay close." (brief 266–276): the client's words, an honest email link until there is a list */
.theme-v3 .stay {
  display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 28px clamp(32px, 6vw, 96px); align-items: end;
  padding-bottom: clamp(48px, 6vw, 80px); margin-bottom: clamp(48px, 6vw, 80px); border-bottom: 1px solid var(--line);
}
.theme-v3 .foot .stay h2 { font-family: var(--font-display); font-weight: 400; font-size: clamp(2.4rem, 4.6vw, 4rem); text-transform: none; letter-spacing: -.02em; color: var(--text-strong); margin-bottom: 16px; line-height: 1.05; }
.theme-v3 .foot .stay__copy p { font-size: var(--fs-body); max-width: 52ch; color: var(--text); }
.theme-v3 .stay__act { display: grid; gap: 12px; justify-items: start; }
.theme-v3 .foot .stay__small { font-family: var(--font-display); font-style: italic; font-size: 1.05rem; color: var(--candle-soft); }
.theme-v3 .foot .stay__note { font-size: var(--fs-micro); color: var(--muted); max-width: 40ch; line-height: 1.5; }
@media (max-width: 800px) { .theme-v3 .stay { grid-template-columns: minmax(0, 1fr); } }

.theme-v3 .foot__grid { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: clamp(28px, 4vw, 56px); }
.theme-v3 .foot__logo { color: var(--text-strong); margin-bottom: 10px; }
.theme-v3 .foot__logo-svg { width: 148px; height: auto; overflow: visible; }
.theme-v3 .foot__logo .logo--text { font-size: 2.2rem; }
.theme-v3 .foot .foot__tag { font-family: var(--font-display); font-style: italic; font-size: 1.15rem; color: var(--text-strong); margin-bottom: 14px; }
.theme-v3 .foot__brand p, .theme-v3 .foot__brand address { max-width: 34ch; }
.theme-v3 .foot__hours { margin-top: 12px; }
.theme-v3 .foot .foot__dir { color: var(--candle-soft); }
.theme-v3 .foot .foot__popup { color: var(--muted); }
.theme-v3 .foot__contact a { gap: 10px; }
.theme-v3 .foot__contact svg { width: 18px; height: 18px; flex: none; color: var(--candle); }
.theme-v3 .foot__social { display: flex; gap: 10px; margin-top: 12px !important; }
.theme-v3 .foot .foot__social a { width: 44px; height: 44px; justify-content: center; border-radius: 50%; box-shadow: inset 0 0 0 1px var(--field-line); color: var(--text-strong); transition: background-color .35s var(--ease-warm), color .35s var(--ease-warm); }
.theme-v3 .foot__social svg { width: 19px; height: 19px; }
@media (hover: hover) { .theme-v3 .foot .foot__social a:hover { background: rgb(var(--candle-glow) / .14); color: var(--candle-soft); text-decoration: none; } }
.theme-v3 .foot__bottom { margin-top: clamp(48px, 6vw, 88px); padding-top: 24px; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: 12px 28px; justify-content: space-between; align-items: center; }
.theme-v3 .foot__bottom ul { display: flex; flex-wrap: wrap; gap: 0 22px; }
.theme-v3 .foot__bottom small { color: var(--muted); font-size: var(--fs-micro); }
@media (max-width: 980px) { .theme-v3 .foot__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .theme-v3 .foot__grid { grid-template-columns: 1fr; } }

/* ---------- interior page head (marketing pages) ---------- */
.theme-v3 .pagehead { position: relative; min-height: clamp(520px, 74vh, 780px); display: flex; align-items: flex-end; overflow: hidden; isolation: isolate; background: var(--night-deep); }
.theme-v3 .pagehead .vid img, .theme-v3 .pagehead .vid video { filter: sepia(.22) saturate(.88) brightness(.76); }
.theme-v3 .pagehead::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(180deg, rgb(var(--night-rgb) / .62) 0%, rgb(var(--night-rgb) / .12) 30%, rgb(var(--night-rgb) / .5) 65%, var(--night) 100%), linear-gradient(90deg, rgb(var(--night-rgb) / .66), transparent 70%); }
.theme-v3 .pagehead__inner { position: relative; z-index: 3; padding-top: 170px; padding-bottom: clamp(48px, 7vw, 96px); display: grid; gap: 20px; justify-items: start; }
.theme-v3 .pagehead h1 { font-size: var(--fs-h1-page); max-width: 14ch; padding-bottom: .06em; line-height: 1.04; }
.theme-v3 .pagehead .lede { color: var(--text-strong); text-shadow: 0 1px 14px rgb(var(--deep-rgb) / .7); }
.theme-v3 .pagehead .vid-toggle { right: var(--gut); bottom: 32px; }

/* ---------- classes page ---------- */
.theme-v3 .intent-bar { display: flex; flex-wrap: wrap; gap: 24px 48px; justify-content: space-between; align-items: center; }
.theme-v3 .intent-nav { display: flex; flex-wrap: wrap; gap: 10px; }
.theme-v3 .pill {
  min-height: 44px; padding: 0 18px; border-radius: var(--r-pill); box-shadow: inset 0 0 0 1px var(--line-strong); color: var(--text); font-size: var(--fs-small);
  display: inline-flex; align-items: center; gap: 8px; text-decoration: none;
  transition: background-color .35s var(--ease-warm), color .35s var(--ease-warm), transform .16s var(--ease-out);
}
.theme-v3 .pill:active { transform: scale(.97); }
@media (hover: hover) { .theme-v3 .pill:hover { background: rgb(var(--candle-glow) / .1); color: var(--candle-soft); } }
.theme-v3 .ilegend { display: flex; flex-wrap: wrap; gap: 10px 28px; color: var(--text); font-size: var(--fs-small); margin: 0; }
.theme-v3 .ilegend > span { display: inline-flex; gap: 10px; align-items: center; }
.theme-v3 .intent-group { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(32px, 6vw, 96px); padding-block: clamp(64px, 8vw, 120px); border-top: 1px solid var(--line); }
.theme-v3 .intent-group__aside { position: sticky; top: 140px; align-self: start; display: grid; gap: 18px; justify-items: start; }
.theme-v3 .intent-group__aside .media { aspect-ratio: 4 / 3; margin-top: 12px; width: 100%; }
.theme-v3 .intent-group--rest { background: radial-gradient(50% 60% at 0% 30%, rgb(var(--dusk-rgb) / .5), transparent 70%); }
.theme-v3 .class-list { list-style: none; padding: 0; margin: 0; display: grid; }
.theme-v3 .class-item { padding: 30px 0; border-bottom: 1px solid var(--line); display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px 24px; }
.theme-v3 .class-item:first-child { padding-top: 0; }
.theme-v3 .class-item h3 { font-size: clamp(1.9rem, 2.8vw, 2.5rem); }
.theme-v3 .class-item__meta { display: flex; gap: 18px; align-items: center; color: var(--muted); font-size: var(--fs-small); white-space: nowrap; }
.theme-v3 .class-item__line { grid-column: 1 / -1; color: var(--text); max-width: 56ch; }
.theme-v3 .class-item__for { grid-column: 1 / -1; font-size: var(--fs-small); color: var(--text); }
.theme-v3 .class-item__for b { color: var(--candle-soft); font-weight: 500; }
.theme-v3 .class-item__desc { grid-column: 1 / -1; font-size: var(--fs-small); color: var(--muted); max-width: 60ch; }
.theme-v3 .empty-quiet { font-family: var(--font-display); font-style: italic; font-size: 1.35rem; color: var(--muted); }
@media (max-width: 860px) {
  .theme-v3 .intent-group { grid-template-columns: 1fr; }
  .theme-v3 .intent-group__aside { position: static; }
  .theme-v3 .class-item { grid-template-columns: 1fr; }
}

/* ---------- teachers ---------- */
.theme-v3 .team { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-flow: dense; gap: clamp(40px, 5vw, 72px) clamp(24px, 4vw, 64px); }
.theme-v3 .teacher { display: grid; gap: 14px; align-content: start; }
.theme-v3 .teacher--lead { grid-row: span 2; }
.theme-v3 .teacher--lead .oval { max-width: 440px; }
/* the photo takes up to 30% of its card (200px at most), so the copy beside it keeps its width
   when the team runs in two columns on a small laptop */
.theme-v3 .teacher:not(.teacher--lead) { grid-template-columns: clamp(96px, 30%, 200px) minmax(0, 1fr); column-gap: clamp(18px, 2vw, 26px); }
.theme-v3 .teacher:not(.teacher--lead) .oval { grid-row: span 6; align-self: start; }
.theme-v3 .teacher .oval { aspect-ratio: 3 / 4; width: 100%; }
.theme-v3 .teacher h2 { font-size: clamp(2rem, 3vw, 2.8rem); font-weight: 400; }
.theme-v3 .teacher--lead h2 { font-size: clamp(2.6rem, 4.4vw, 3.8rem); margin-top: 18px; }
.theme-v3 .teacher__role { color: var(--candle-soft); font-style: italic; font-family: var(--font-display); font-size: 1.3rem; line-height: 1.2; }
.theme-v3 .spec-chips { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 0; }
.theme-v3 .spec-chips li { font-size: var(--fs-micro); padding: 5px 12px; border-radius: var(--r-pill); box-shadow: inset 0 0 0 1px var(--line-strong); color: var(--text); }
.theme-v3 .teacher blockquote { font-family: var(--font-display); font-style: italic; font-size: 1.4rem; line-height: 1.3; color: var(--text-strong); }
.theme-v3 .teacher--lead blockquote { font-size: 1.8rem; max-width: 22ch; }
.theme-v3 .teacher__bio { font-size: var(--fs-small); color: var(--text); max-width: 52ch; }
.theme-v3 .teacher__next { font-size: var(--fs-small); color: var(--text); }
.theme-v3 .teacher__next a { color: var(--candle-soft); display: inline-flex; min-height: 44px; align-items: center; }
@media (max-width: 900px) { .theme-v3 .team { grid-template-columns: 1fr; } .theme-v3 .teacher--lead { grid-row: auto; } }
@media (max-width: 520px) { .theme-v3 .teacher:not(.teacher--lead) { grid-template-columns: 110px minmax(0, 1fr); column-gap: 18px; } }
.theme-v3 .privates { padding: clamp(28px, 4vw, 56px); display: grid; gap: 18px; justify-items: start; }
.theme-v3 .privates h2 { font-size: clamp(2rem, 3.4vw, 3rem); }

/* ---------- studio ---------- */
.theme-v3 .manifesto { font-family: var(--font-display); font-weight: 300; font-size: clamp(2rem, 4.2vw, 3.8rem); line-height: 1.14; color: var(--text-strong); max-width: 24ch; }
.theme-v3 .story { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.theme-v3 .story__text { display: grid; gap: 18px; max-width: 58ch; }
.theme-v3 .story__text p:first-child::first-letter { font-family: var(--font-display); float: left; font-size: 5.2rem; line-height: .8; padding: 8px 12px 0 0; color: var(--candle-soft); }
.theme-v3 .sign { font-family: var(--font-display); font-style: italic; font-size: 1.6rem; color: var(--candle-soft); }
@media (max-width: 860px) { .theme-v3 .story { grid-template-columns: 1fr; } }
.theme-v3 .space { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 16px; align-items: start; }
.theme-v3 .space figure { display: grid; gap: 12px; }
.theme-v3 .space figure:nth-child(1) { grid-column: 1 / span 7; }
.theme-v3 .space figure:nth-child(2) { grid-column: 8 / span 5; margin-top: clamp(0px, 10vw, 140px); }
.theme-v3 .space figure:nth-child(3) { grid-column: 2 / span 6; }
.theme-v3 .space .media { aspect-ratio: 4 / 3; }
.theme-v3 .space figure:nth-child(2) .media { aspect-ratio: 4 / 5; }
.theme-v3 .space figcaption { font-size: var(--fs-small); color: var(--muted); }
@media (max-width: 760px) { .theme-v3 .space figure:nth-child(n) { grid-column: 1 / -1; margin-top: 0; } }
.theme-v3 .values { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 clamp(32px, 6vw, 96px); list-style: none; padding: 0; margin: 0; }
.theme-v3 .values li { padding: 28px 0; border-top: 1px solid var(--line); display: grid; gap: 8px; }
.theme-v3 .values h3 { font-size: 2rem; }
@media (max-width: 760px) { .theme-v3 .values { grid-template-columns: 1fr; } }
.theme-v3 .contact { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.theme-v3 .contact dl { display: grid; gap: 20px; margin: 28px 0; }
.theme-v3 .contact dt { font-size: var(--fs-small); color: var(--candle-soft); font-weight: 600; }
.theme-v3 .contact dd { margin: 2px 0 0; color: var(--text-strong); }
.theme-v3 .contact dd a { display: inline-flex; min-height: 44px; align-items: center; }
.theme-v3 .map { position: relative; aspect-ratio: 16 / 10; border-radius: var(--r-media); overflow: hidden; background: var(--ember); box-shadow: inset 0 0 0 1px var(--line); display: block; text-decoration: none; }
.theme-v3 .map svg { width: 100%; height: 100%; }
.theme-v3 .map__pin { position: absolute; left: 56%; top: 46%; transform: translate(-50%, -50%); display: grid; justify-items: center; gap: 8px; }
.theme-v3 .map__pin i { width: 14px; height: 14px; border-radius: 50%; background: var(--candle); box-shadow: 0 0 0 6px rgba(var(--candle-glow) / .2), 0 0 30px 8px rgba(var(--candle-glow) / .4); }
.theme-v3 .map__pin span { background: var(--night); color: var(--text-strong); font-size: var(--fs-micro); padding: 6px 12px; border-radius: var(--r-pill); box-shadow: inset 0 0 0 1px var(--line-strong); white-space: nowrap; }
.theme-v3 .map__note { position: absolute; left: 14px; bottom: 12px; font-size: var(--fs-small); color: var(--candle-soft); background: rgb(var(--deep-rgb) / .8); padding: 6px 12px; border-radius: var(--r-pill); }
.theme-v3 .note-card { padding: clamp(24px, 3.6vw, 48px); display: grid; gap: 18px; justify-items: start; }
.theme-v3 .note-card h3 { font-size: clamp(2rem, 3vw, 2.6rem); }
.theme-v3 .note-card ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 4px; width: 100%; }
.theme-v3 .note-card li { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: var(--fs-small); }
.theme-v3 .note-card li span:last-child { color: var(--muted); text-align: right; }
@media (max-width: 860px) { .theme-v3 .contact { grid-template-columns: 1fr; } }

/* ---------- first visit ---------- */
.theme-v3 .expect { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); align-items: center; }
.theme-v3 .expect .media { aspect-ratio: 5 / 4; }
.theme-v3 .bring { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 16px; }
.theme-v3 .bring__main { grid-column: span 5; padding: clamp(28px, 4vw, 48px); border-radius: var(--r-shell); background: var(--plum-deep); display: grid; gap: 16px; align-content: start; }
.theme-v3 .bring__main h2 { font-size: clamp(2.2rem, 3.8vw, 3.4rem); }
.theme-v3 .bring__list { grid-column: span 7; list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 0 32px; }
.theme-v3 .bring__list li { padding: 22px 0; border-top: 1px solid var(--line); display: grid; gap: 6px; }
.theme-v3 .bring__list h3 { font-size: 1.6rem; }
@media (max-width: 900px) { .theme-v3 .expect { grid-template-columns: 1fr; } .theme-v3 .bring__main, .theme-v3 .bring__list { grid-column: 1 / -1; } }
@media (max-width: 560px) { .theme-v3 .bring__list { grid-template-columns: 1fr; } }
.theme-v3 .steps-wrap { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.theme-v3 .steps-wrap .media { position: sticky; top: 140px; aspect-ratio: 3 / 4; }
@media (max-width: 900px) { .theme-v3 .steps-wrap { grid-template-columns: 1fr; } .theme-v3 .steps-wrap .media { position: static; aspect-ratio: 16 / 10; } }
.theme-v3 .steps { list-style: none; padding: 0; margin: 0; display: grid; max-width: 900px; position: relative; }
.theme-v3 .steps li { display: grid; grid-template-columns: 72px 1fr; gap: 28px; padding-bottom: 44px; position: relative; }
.theme-v3 .steps li::before { content: ""; position: absolute; left: 35.5px; top: 72px; bottom: 0; width: 1px; background: linear-gradient(var(--line-strong), transparent); }
.theme-v3 .steps li:last-child::before { display: none; }
.theme-v3 .steps__n { width: 72px; height: 72px; border-radius: 50%; display: grid; place-items: center; font-family: var(--font-display); font-style: italic; font-size: 2rem; color: var(--candle-soft); box-shadow: inset 0 0 0 1px var(--line-strong); background: radial-gradient(closest-side, rgba(var(--candle-glow) / .14), transparent); }
.theme-v3 .steps h3 { font-size: clamp(1.8rem, 2.6vw, 2.3rem); padding-top: 10px; }
.theme-v3 .steps p { max-width: 56ch; margin-top: 8px; }
@media (max-width: 520px) { .theme-v3 .steps li { grid-template-columns: 52px 1fr; gap: 18px; } .theme-v3 .steps__n { width: 52px; height: 52px; font-size: 1.5rem; } .theme-v3 .steps li::before { left: 25.5px; top: 52px; } }
.theme-v3 .faq { max-width: 860px; }
.theme-v3 .faq details { border-bottom: 1px solid var(--line); }
.theme-v3 .faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 24px; min-height: 64px; padding: 16px 0; font-family: var(--font-display); font-size: clamp(1.35rem, 2vw, 1.7rem); color: var(--text-strong); }
.theme-v3 .faq summary::-webkit-details-marker { display: none; }
.theme-v3 .faq summary::after { content: ""; width: 12px; height: 12px; flex: none; border-right: 1.5px solid var(--candle); border-bottom: 1.5px solid var(--candle); transform: rotate(45deg) translate(-3px, -3px); transition: transform .5s var(--ease-out); }
.theme-v3 .faq details[open] summary::after { transform: rotate(225deg); }
.theme-v3 .faq details p { padding: 0 0 24px; max-width: 64ch; color: var(--text); }
@media (prefers-reduced-motion: no-preference) { .theme-v3 .faq details[open] p { animation: v3-faq .7s var(--ease-warm); } }
@keyframes v3-faq { from { opacity: 0; transform: translateY(-6px); } }
.theme-v3 .fv-offer .core { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: clamp(24px, 4vw, 64px); align-items: center; padding: clamp(28px, 4.4vw, 64px); background: radial-gradient(80% 140% at 0% 50%, rgba(var(--candle-glow) / .16), transparent 60%), var(--ember); }
.theme-v3 .fv-offer .big-price { font-size: clamp(5rem, 11vw, 9rem); }
.theme-v3 .fv-offer h2 { font-size: clamp(2rem, 3.4vw, 3rem); margin-bottom: 12px; }
@media (max-width: 900px) { .theme-v3 .fv-offer .core { grid-template-columns: 1fr; justify-items: start; } }

/* ---------- motion preferences ---------- */
@media (prefers-reduced-motion: reduce) {
  .theme-v3 *, .theme-v3 *::before, .theme-v3 *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}
@media print { .theme-v3 .site-head, .theme-v3 .menu, .theme-v3 .vid-toggle, .theme-v3 .halo, body.theme-v3::after { display: none !important; } }
