/* RUMA v3 · classes area. Owned by the classes agent; reads tokens.css vars only.
   Classes & Practices (category guide, class cards, Find Your Practice), teachers,
   schedule cards + client-side refine filters, class page and the sold-out state. */

/* ---------- shared: intensity ●●●○○ + words ---------- */
.theme-v3 .ix { display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.theme-v3 .ix__word { font-size: var(--fs-small); color: var(--text-strong); font-variant-numeric: lining-nums; }
.theme-v3 .ix--varies { font-size: var(--fs-small); color: var(--muted); font-style: italic; }

/* ---------- page head extras ---------- */
.theme-v3 .cx-head-links { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }

/* ---------- intro ---------- */
.theme-v3 .cx-intro__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 24px clamp(32px, 6vw, 96px); align-items: start; }
.theme-v3 .cx-intro__lead { font-family: var(--font-display); font-weight: 300; font-size: clamp(1.7rem, 3vw, 2.6rem); line-height: 1.22; color: var(--text-strong); max-width: 26ch; }
.theme-v3 .cx-intro__note { color: var(--text); max-width: 52ch; border-top: 1px solid var(--line-strong); padding-top: 18px; }
@media (max-width: 860px) { .theme-v3 .cx-intro__grid { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Find Your Practice (begin) ----------
   Option cards carry a hand-drawn mark (v3_mark); the chosen one lights like a
   wick. Progress is a row of five wicks. Steps slide in from the direction you
   travel; the result warms up card by card. Reduced motion: fades only. */
.theme-v3 .fyp { padding-top: 0; padding-bottom: 0; }
.theme-v3 .fyp__core {
  display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 28px clamp(28px, 4.4vw, 72px); padding: clamp(28px, 4.4vw, 64px);
  background: radial-gradient(70% 120% at 0% 0%, rgb(var(--candle-glow) / .12), transparent 60%), radial-gradient(60% 90% at 100% 100%, rgb(var(--dusk-rgb) / .55), transparent 70%), var(--ember);
}
.theme-v3 .fyp__intro { display: grid; gap: 14px; align-content: start; justify-items: start; }
.theme-v3 .fyp__intro h2 { font-size: clamp(2.2rem, 4vw, 3.4rem); }
.theme-v3 .fyp__intro p { color: var(--text); max-width: 40ch; }
.theme-v3 .fyp__form { display: grid; gap: 24px; align-content: start; margin: 0; min-width: 0; container-type: inline-size; }

/* progress: five wicks on a thread */
.theme-v3 .fyp__progress { display: flex; align-items: center; gap: 16px; min-height: 22px; }
.theme-v3 .fyp__wicks { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 0; }
.theme-v3 .fyp__wicks li {
  position: relative; width: 9px; height: 9px; border-radius: 50%; box-shadow: inset 0 0 0 1px var(--line-strong);
  transition: background-color .6s var(--ease-warm), box-shadow .6s var(--ease-warm), transform .6s var(--ease-out);
}
.theme-v3 .fyp__wicks li + li { margin-left: 22px; }
.theme-v3 .fyp__wicks li + li::before {
  content: ""; position: absolute; right: calc(100% + 4px); top: 50%; width: 14px; height: 1px; background: var(--line-strong);
}
.theme-v3 .fyp__wicks li.is-lit { background: var(--candle); box-shadow: 0 0 10px rgb(var(--flame-rgb) / .55); }
.theme-v3 .fyp__wicks li.is-now { transform: scale(1.35); box-shadow: inset 0 0 0 1.5px var(--candle-soft), 0 0 12px rgb(var(--flame-rgb) / .45); }
.theme-v3 .fyp__count { margin: 0; font-size: var(--fs-micro); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--candle); font-variant-numeric: tabular-nums; }

.theme-v3 .fyp__step { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; gap: 18px; }
.theme-v3 .fyp__step legend { padding: 0; margin-bottom: 20px; font-family: var(--font-display); font-weight: 300; font-size: clamp(1.7rem, 2.8vw, 2.4rem); line-height: 1.15; color: var(--text-strong); text-wrap: balance; }
.theme-v3 .fyp__step legend:focus { outline: none; }
.theme-v3 .fyp__step legend:focus-visible { outline: 2px solid var(--candle); outline-offset: 6px; }

/* the option cards */
.theme-v3 .fyp__opts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.theme-v3 .fyp__opts[data-n="5"] { grid-template-columns: repeat(5, minmax(0, 1fr)); }
/* five cards need ~130px each; narrower forms set them 3 + 2, the second row centred */
@container (max-width: 680px) {
  .theme-v3 .fyp__opts[data-n="5"] { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .theme-v3 .fyp__opts[data-n="5"] .fyp__opt { grid-column: span 2; }
  .theme-v3 .fyp__opts[data-n="5"] .fyp__opt:nth-child(4) { grid-column: 2 / span 2; }
}
.theme-v3 .fyp__opt { position: relative; display: grid; min-width: 0; }
.theme-v3 .fyp__opt input { position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; opacity: 0; margin: 0; cursor: pointer; }
.theme-v3 .fyp__card {
  --on: 0;
  position: relative; isolation: isolate; overflow: hidden; display: grid; justify-items: center; align-content: start; gap: 14px;
  min-height: 100%; padding: 22px 12px 20px; border-radius: var(--r-core); text-align: center;
  background: rgb(var(--text-rgb) / .025); box-shadow: inset 0 0 0 1px var(--line);
  transition: background-color .5s var(--ease-warm), box-shadow .6s var(--ease-warm), transform .5s var(--ease-out);
}
/* light pooling up from the bottom of a chosen card, and a lit wick in its corner */
.theme-v3 .fyp__card::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: var(--on);
  background: radial-gradient(90% 70% at 50% 100%, rgb(var(--flame-rgb) / .2), rgb(var(--candle-glow) / .07) 50%, transparent 80%);
  transition: opacity .8s var(--ease-warm);
}
.theme-v3 .fyp__card::after {
  content: ""; position: absolute; top: 12px; right: 12px; width: 6px; height: 6px; border-radius: 50%;
  background: var(--candle-soft); box-shadow: 0 0 10px rgb(var(--flame-rgb) / .8); opacity: var(--on); transform: scale(calc(.4 + var(--on) * .6));
  transition: opacity .5s var(--ease-warm), transform .6s var(--ease-out);
}
.theme-v3 .fyp__mark {
  display: block; width: 46px; height: auto; aspect-ratio: 1; overflow: visible;
  color: var(--fyp-mark, rgb(var(--candle-glow) / .82));
  filter: drop-shadow(0 0 calc(var(--on) * 9px) rgb(var(--flame-rgb) / calc(var(--on) * .55)));
  transition: color .6s var(--ease-warm), transform .6s var(--ease-out), filter .8s var(--ease-warm);
}
.theme-v3 .fyp__mark path { stroke-dasharray: 1; stroke-dashoffset: 0; }
.theme-v3 .fyp__label {
  font-family: var(--font-display); font-size: 1.08rem; line-height: 1.22; color: var(--fyp-label, var(--text-strong));
  text-wrap: balance; transition: color .5s var(--ease-warm);
}
.theme-v3 .fyp__opt input:checked + .fyp__card {
  --on: 1; --fyp-mark: var(--candle-soft); --fyp-label: var(--candle-soft); --fyp-trace: v3-fyp-trace;
  background: rgb(var(--candle-glow) / .06); box-shadow: inset 0 0 0 1px var(--candle), 0 20px 44px -28px rgb(var(--candle-glow) / .75);
}
.theme-v3 .fyp__opt input:focus-visible + .fyp__card { outline: 2px solid var(--candle); outline-offset: 3px; }
@media (hover: hover) and (pointer: fine) {
  .theme-v3 .fyp__opt input:not(:checked):hover + .fyp__card { background: rgb(var(--candle-glow) / .05); box-shadow: inset 0 0 0 1px var(--line-strong); transform: translateY(-2px); }
  .theme-v3 .fyp__opt input:hover + .fyp__card .fyp__mark { color: var(--candle-soft); transform: translateY(-2px); }
}
.theme-v3 .fyp__opt input:active + .fyp__card { transform: scale(.975); transition-duration: .16s; }

.theme-v3 .fyp__nav { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; }
.theme-v3 .fyp__nav [data-fyp-next] { transition: box-shadow .7s var(--ease-warm), background-color .4s var(--ease-warm); }
.theme-v3 .fyp__nav [data-fyp-next].is-ready { box-shadow: 0 0 0 1px rgb(var(--flame-rgb) / .35), 0 0 32px -6px rgb(var(--candle-glow) / .75); }
.theme-v3 .fyp__skip { font-size: var(--fs-small); color: var(--muted); margin-left: auto; }

/* the result */
.theme-v3 .fyp__result { grid-column: 1 / -1; }
.theme-v3 .fyp__result:empty { display: none; }
.theme-v3 .fyp__result:focus { outline: none; }
.theme-v3 .fyp-res { position: relative; display: grid; gap: 26px; padding-top: 30px; }
.theme-v3 .fyp-res::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px; background: linear-gradient(90deg, var(--candle), rgb(var(--candle-glow) / .15) 70%, transparent); transform-origin: left; }
.theme-v3 .fyp-res__top { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 10px 16px; }
.theme-v3 .fyp-res__flame { width: 22px; height: 31px; color: var(--candle); filter: drop-shadow(0 0 12px rgb(var(--flame-rgb) / .7)); }
.theme-v3 .fyp-res__h { font-family: var(--font-display); font-style: italic; font-weight: 300; font-size: clamp(1.9rem, 3.2vw, 2.8rem); color: var(--candle-soft); }
.theme-v3 .fyp-res__note { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.theme-v3 .fyp-res__note-l { margin: 0; font-size: var(--fs-small); color: var(--muted); }
.theme-v3 .fyp-res__chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.theme-v3 .fyp-res__chips li { display: inline-flex; align-items: center; min-height: 32px; padding: 0 14px; border-radius: var(--r-pill); font-size: var(--fs-small); color: var(--candle-soft); background: rgb(var(--candle-glow) / .08); box-shadow: inset 0 0 0 1px var(--line-strong); }
.theme-v3 .fyp-res__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; }
.theme-v3 .fyp-res__card { display: grid; grid-template-rows: auto 1fr; align-content: start; overflow: hidden; border-radius: var(--r-core); background: rgb(var(--deep-rgb) / .45); box-shadow: inset 0 0 0 1px var(--line); }
.theme-v3 .fyp-res__card:first-child { box-shadow: inset 0 0 0 1px var(--line-strong), 0 30px 70px -44px rgb(var(--candle-glow) / .6); }
.theme-v3 .fyp-res__media { position: relative; aspect-ratio: 16 / 10; border-radius: 0; }
.theme-v3 .fyp-res__best {
  position: absolute; z-index: 3; left: 14px; top: 14px; display: inline-flex; align-items: center; min-height: 28px; padding: 0 12px; border-radius: var(--r-pill);
  font-size: var(--fs-micro); font-weight: 600; letter-spacing: .04em; color: var(--on-candle); background: var(--candle-soft); box-shadow: 0 0 18px rgb(var(--flame-rgb) / .45);
}
.theme-v3 .fyp-res__body { display: grid; gap: 10px; align-content: start; padding: 20px 22px 22px; }
.theme-v3 .fyp-res__card h4 { font-size: 1.75rem; }
.theme-v3 .fyp-res__card p { font-size: var(--fs-small); color: var(--text); }
.theme-v3 .fyp-res__type { font-size: var(--fs-micro); color: var(--muted); letter-spacing: .04em; }
.theme-v3 .fyp-res__actions { display: flex; flex-wrap: wrap; gap: 8px 10px; margin-top: 6px; }
.theme-v3 .fyp-res__again { justify-self: start; }

@media (prefers-reduced-motion: no-preference) {
  .theme-v3 .fyp__form[data-dir="fwd"] .fyp__step:not([hidden]) { animation: v3-fyp-from-r .75s var(--ease-out) both; }
  .theme-v3 .fyp__form[data-dir="back"] .fyp__step:not([hidden]) { animation: v3-fyp-from-l .75s var(--ease-out) both; }
  .theme-v3 .fyp__form[data-dir] .fyp__step:not([hidden]) .fyp__opt { animation: v3-fyp-rise .7s var(--ease-out) both; animation-delay: calc(var(--i, 0) * 55ms + 90ms); }
  .theme-v3 .fyp__mark path { animation: var(--fyp-trace, none) 1.1s var(--ease-out) both; }
  .theme-v3 .fyp__mark path:nth-child(2) { animation-delay: .1s; }
  .theme-v3 .fyp__mark path:nth-child(n + 3) { animation-delay: .2s; }
  .theme-v3 .fyp-res::before { animation: v3-fyp-rule 1.2s var(--ease-out) both; }
  .theme-v3 .fyp-res__flame { animation: v3-fyp-kindle 1.1s var(--ease-out) both .15s; transform-origin: 50% 90%; }
  .theme-v3 .fyp-res__h { animation: v3-cx-in .9s var(--ease-warm) both .25s; }
  .theme-v3 .fyp-res__note { animation: v3-cx-in .9s var(--ease-warm) both .4s; }
  .theme-v3 .fyp-res__card { animation: v3-fyp-light 1.3s var(--ease-out) both; animation-delay: calc(var(--i, 0) * 140ms + 450ms); }
  .theme-v3 .fyp-res__again { animation: v3-cx-in .8s var(--ease-warm) both .9s; }
}
@media (prefers-reduced-motion: reduce) {
  .theme-v3 .fyp__step:not([hidden]), .theme-v3 .fyp-res { animation: v3-fyp-fade .5s var(--ease-warm) both; }
  .theme-v3 .fyp-res__card { animation: v3-fyp-fade .7s var(--ease-warm) both; animation-delay: calc(var(--i, 0) * 120ms); }
  .theme-v3 .fyp__card, .theme-v3 .fyp__mark { transition-property: color, background-color, box-shadow, opacity, filter; }
}
@keyframes v3-cx-in { from { opacity: 0; transform: translateY(10px); filter: blur(4px); } }
@keyframes v3-fyp-from-r { from { opacity: 0; transform: translateX(28px); } }
@keyframes v3-fyp-from-l { from { opacity: 0; transform: translateX(-28px); } }
@keyframes v3-fyp-rise { from { opacity: 0; transform: translateY(12px); } }
@keyframes v3-fyp-trace { from { stroke-dashoffset: 1; } }
@keyframes v3-fyp-rule { from { transform: scaleX(0); } }
@keyframes v3-fyp-kindle { from { opacity: 0; transform: scale(.3); filter: none; } }
@keyframes v3-fyp-light {
  from { opacity: 0; transform: translateY(20px); filter: brightness(.35) saturate(.6); }
  55% { opacity: 1; }
  to { filter: none; }
}
@keyframes v3-fyp-fade { from { opacity: 0; } }

@media (max-width: 900px) { .theme-v3 .fyp__core { grid-template-columns: minmax(0, 1fr); } }
/* phones: one option per row, mark beside the words, every row a full-width target */
@media (max-width: 640px) {
  .theme-v3 .fyp__opts, .theme-v3 .fyp__opts[data-n="5"] { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .theme-v3 .fyp__opts[data-n="5"] .fyp__opt, .theme-v3 .fyp__opts[data-n="5"] .fyp__opt:nth-child(4) { grid-column: auto; }
  .theme-v3 .fyp__card { grid-template-columns: 38px minmax(0, 1fr); justify-items: start; align-items: center; align-content: center; gap: 14px; min-height: 60px; padding: 10px 36px 10px 14px; text-align: left; }
  .theme-v3 .fyp__mark { width: 36px; }
  .theme-v3 .fyp__card::after { top: 50%; right: 16px; margin-top: -3px; }
  .theme-v3 .fyp__step { min-height: calc(5 * 60px + 4 * 8px + 5.5rem); align-content: start; }
  .theme-v3 .fyp__skip { margin-left: 0; }
}
/* ---------- Find Your Practice (end) ---------- */

/* ---------- category guide ---------- */
.theme-v3 .cx-jump { display: flex; flex-wrap: wrap; gap: 10px; margin: -24px 0 clamp(32px, 4vw, 56px); }
.theme-v3 .cx-cats { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 16px; }
.theme-v3 .cx-cat {
  grid-column: span 2; display: grid; grid-template-rows: auto 1fr; border-radius: var(--r-shell); overflow: hidden;
  background: var(--ember); box-shadow: inset 0 0 0 1px var(--line); scroll-margin-top: calc(var(--head-h) + 16px);
}
.theme-v3 .cx-cat:nth-child(4), .theme-v3 .cx-cat:nth-child(5) { grid-column: span 3; }
.theme-v3 .cx-cat:target { box-shadow: inset 0 0 0 1px var(--candle), 0 30px 80px -40px rgb(var(--candle-glow) / .5); }
.theme-v3 .cx-cat__media { aspect-ratio: 16 / 10; border-radius: 0; }
.theme-v3 .cx-cat:nth-child(4) .cx-cat__media, .theme-v3 .cx-cat:nth-child(5) .cx-cat__media { aspect-ratio: 16 / 8; }
.theme-v3 .cx-cat__body { padding: clamp(22px, 2.6vw, 34px); display: grid; gap: 12px; align-content: start; }
.theme-v3 .cx-cat h3 { font-size: clamp(2.2rem, 3.4vw, 3rem); font-style: italic; color: var(--candle-soft); }
.theme-v3 .cx-cat__line { font-family: var(--font-display); font-size: 1.35rem; line-height: 1.3; color: var(--text-strong); }
.theme-v3 .cx-cat p { color: var(--text); font-size: var(--fs-small); }
.theme-v3 .cx-cat .label { margin-top: 6px; }
.theme-v3 .cx-cat__inc { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0 4px; }
.theme-v3 .cx-cat__inc li:not(:last-child)::after { content: "·"; color: var(--candle); margin-left: 4px; }
.theme-v3 .cx-cat__inc a { display: inline-flex; align-items: center; min-height: 44px; color: var(--candle-soft); font-size: var(--fs-small); text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: .22em; }
@media (hover: hover) { .theme-v3 .cx-cat__inc a:hover { text-decoration-color: currentColor; } }
@media (max-width: 1000px) { .theme-v3 .cx-cats { grid-template-columns: repeat(2, minmax(0, 1fr)); } .theme-v3 .cx-cat:nth-child(n) { grid-column: span 1; } .theme-v3 .cx-cat:nth-child(5) { grid-column: 1 / -1; } }
@media (max-width: 640px) { .theme-v3 .cx-cats { grid-template-columns: minmax(0, 1fr); } .theme-v3 .cx-cat:nth-child(n) { grid-column: auto; } .theme-v3 .cx-cat:nth-child(n) .cx-cat__media { aspect-ratio: 16 / 9; } }

/* ---------- class cards ---------- */
.theme-v3 .cx-family { border-top: 1px solid var(--line); }
.theme-v3 .cx-family--pilates { background: radial-gradient(50% 50% at 100% 20%, rgb(var(--dusk-rgb) / .45), transparent 70%); }
.theme-v3 .cx-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
@media (min-width: 1500px) { .theme-v3 .cx-list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; } }
.theme-v3 .cx-list > li { display: grid; min-width: 0; }
@media (max-width: 980px) { .theme-v3 .cx-list { grid-template-columns: minmax(0, 1fr); } }
.theme-v3 .cx {
  display: grid; grid-template-rows: auto 1fr; overflow: hidden; border-radius: var(--r-shell); background: var(--ember);
  box-shadow: inset 0 0 0 1px var(--line), inset 0 1px 0 rgb(var(--flame-rgb) / .06); scroll-margin-top: calc(var(--head-h) + 16px);
  transition: box-shadow .8s var(--ease-warm);
}
.theme-v3 .cx:target, .theme-v3 .cx.is-target { box-shadow: inset 0 0 0 1px var(--candle), 0 30px 80px -40px rgb(var(--candle-glow) / .55); }
.theme-v3 .cx--signature { background: radial-gradient(60% 120% at 100% 0%, rgb(var(--candle-glow) / .12), transparent 60%), var(--ember); }
.theme-v3 .cx--soon { background: transparent; box-shadow: inset 0 0 0 1px var(--line); }
.theme-v3 .cx__media { aspect-ratio: 3 / 2; border-radius: 0; }
.theme-v3 .cx--soon .cx__media > img { opacity: .62; }
.theme-v3 .cx__body { display: grid; gap: 16px; align-content: start; padding: clamp(22px, 2.6vw, 34px); min-width: 0; }
@media (min-width: 1500px) { .theme-v3 .cx h3 { font-size: clamp(2rem, 2.2vw, 2.5rem); } }
.theme-v3 .cx__top { display: grid; gap: 18px; align-items: start; }
.theme-v3 .cx__type { font-size: var(--fs-micro); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--candle); margin-bottom: 6px; }
.theme-v3 .cx h3 { font-size: clamp(2rem, 3.2vw, 2.8rem); display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; }
.theme-v3 .cx__soon { font-family: var(--font-body); font-size: var(--fs-micro); font-weight: 600; letter-spacing: var(--track-label); text-transform: uppercase; padding: 5px 12px; border-radius: var(--r-pill); box-shadow: inset 0 0 0 1px var(--line-strong); color: var(--candle-soft); }
.theme-v3 .cx__facts dl { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, .8fr); gap: 10px 20px; margin: 0; padding: 14px 0; border-block: 1px solid var(--line); }
.theme-v3 .cx__fact { display: grid; gap: 4px; align-content: start; }
.theme-v3 .cx__fact dt { font-size: var(--fs-micro); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--muted); }
.theme-v3 .cx__fact dd { margin: 0; font-size: var(--fs-small); color: var(--text-strong); }
.theme-v3 .cx__focus li { color: var(--text); }
.theme-v3 .cx__lead { color: var(--text); max-width: 68ch; }
.theme-v3 .cx__more { border-top: 1px solid var(--line); }
.theme-v3 .cx__more > summary {
  list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 52px; padding: 6px 0;
  font-size: var(--fs-small); font-weight: 500; color: var(--candle-soft);
}
.theme-v3 .cx__more > summary::-webkit-details-marker { display: none; }
@media (hover: hover) { .theme-v3 .cx__more > summary:hover { color: var(--candle-hover); } }
.theme-v3 .cx__detail { padding: 6px 0 10px; display: grid; gap: 16px; }
.theme-v3 .cx__detail dl { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; margin: 0; }
.theme-v3 .cx__detail dd + dt { margin-top: 12px; }
.theme-v3 .cx__detail dt { font-family: var(--font-display); font-style: italic; font-size: 1.25rem; line-height: 1.3; color: var(--text-strong); }
.theme-v3 .cx__detail dd { margin: 0; color: var(--text); max-width: 64ch; }
@media (prefers-reduced-motion: no-preference) { .theme-v3 .cx__more[open] .cx__detail { animation: v3-cx-in .8s var(--ease-warm); } }
.theme-v3 .cx__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; }
.theme-v3 .cx__quiet { font-size: var(--fs-small); color: var(--muted); font-style: italic; }
.theme-v3 .cx__soon-note { font-size: var(--fs-small); color: var(--text); }
.theme-v3 .cx__soon-note strong { color: var(--candle-soft); font-weight: 600; }
.theme-v3 .cx-note { margin-top: 28px; font-family: var(--font-display); font-style: italic; font-size: 1.3rem; line-height: 1.4; color: var(--muted); max-width: 60ch; }
@media (max-width: 520px) { .theme-v3 .cx__facts dl { grid-template-columns: repeat(2, minmax(0, 1fr)); } .theme-v3 .cx__actions .btn { flex: 1 1 auto; } }

.theme-v3 .cx-more__list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.theme-v3 .cx-more__media { aspect-ratio: 16 / 9; margin: -24px -24px 6px; border-radius: 0; }
.theme-v3 .cx-more__list > li { overflow: hidden; padding: 24px; border-radius: var(--r-core); background: var(--ember); box-shadow: inset 0 0 0 1px var(--line); display: grid; gap: 10px; align-content: start; }
.theme-v3 .cx-more__list h3 { font-size: 1.8rem; }
.theme-v3 .cx-more__meta { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: center; font-size: var(--fs-small); color: var(--muted); }
.theme-v3 .cx-more__list p { font-size: var(--fs-small); }

/* ---------- teachers ---------- */
.theme-v3 .tx { scroll-margin-top: calc(var(--head-h) + 16px); }
.theme-v3 .tx__body { display: grid; gap: 16px; align-content: start; min-width: 0; }
.theme-v3 .teacher:not(.teacher--lead) .oval { grid-row: auto; }
.theme-v3 .tx__quote { display: grid; gap: 6px; margin: 0; }
.theme-v3 .tx__quote blockquote p { font-family: var(--font-display); font-style: italic; font-size: 1.45rem; line-height: 1.3; color: var(--text-strong); }
.theme-v3 .teacher--lead .tx__quote blockquote p { font-size: 1.8rem; max-width: 24ch; }
.theme-v3 .tx__facts { display: grid; gap: 14px; margin: 0; }
.theme-v3 .tx__fact { display: grid; gap: 6px; }
.theme-v3 .tx__fact dt { font-size: var(--fs-micro); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--muted); font-weight: 500; }
.theme-v3 .tx__fact dd { margin: 0; font-size: var(--fs-small); color: var(--text); }
.theme-v3 .tx__fact dd .inline-link { display: inline-flex; min-height: 44px; align-items: center; }
.theme-v3 .tx__sep { color: var(--candle); margin: 0 6px; }
.theme-v3 .tx__bio p { margin: 0 0 .6em; max-width: 56ch; }
.theme-v3 .tx__up { display: grid; gap: 8px; border-top: 1px solid var(--line-strong); padding-top: 16px; }
.theme-v3 .tx__up h3 { font-family: var(--font-body); }
.theme-v3 ul.teacher__next { list-style: none; padding: 0; margin: 0; display: grid; }
.theme-v3 ul.teacher__next li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 14px; border-bottom: 1px solid var(--line); padding: 4px 0; }
.theme-v3 ul.teacher__next li > a:first-child { color: var(--text-strong); text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: .22em; }
@media (hover: hover) { .theme-v3 ul.teacher__next li > a:first-child:hover { color: var(--candle-soft); text-decoration-color: currentColor; } }
.theme-v3 .tx__full { font-size: var(--fs-micro); font-weight: 600; padding: 4px 10px; border-radius: var(--r-pill); box-shadow: inset 0 0 0 1px var(--line-strong); color: var(--text); }
.theme-v3 .tx__none { font-size: var(--fs-small); color: var(--text); }
@media (min-width: 521px) and (max-width: 900px) { .theme-v3 .teacher--lead .oval { max-width: 320px; } }

/* ---------- schedule: card additions + refine ---------- */
.theme-v3 .slot__cat { font-size: var(--fs-micro); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--candle); line-height: 1.3; }
.theme-v3 .slot__ix .ix { gap: 8px; }
.theme-v3 .slot__ix .ix__word { font-size: var(--fs-micro); color: var(--muted); }
.theme-v3 .slot.is-full { background: transparent; box-shadow: inset 0 0 0 1px var(--line-strong); }
.theme-v3 .slot.is-full::after { display: none; }
.theme-v3 .slot__badge--full { color: var(--candle-soft); }
.theme-v3 .slot.is-filtered-out { display: none; }
@media (max-width: 960px) {
  .theme-v3 .slot time { grid-row: span 5; }
  .theme-v3 .slot__ix { grid-column: 2; }
}
.theme-v3 .refine { display: grid; gap: 10px; margin: -8px 0 28px; padding: 18px 20px; border-radius: var(--r-core); background: rgb(var(--text-rgb) / .03); box-shadow: inset 0 0 0 1px var(--line); }
.theme-v3 .refine__title { font-family: var(--font-display); font-style: italic; font-size: 1.25rem; color: var(--candle-soft); }
.theme-v3 .refine__row { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: end; }
.theme-v3 .refine .field { gap: 0; }
.theme-v3 .refine .flabel { display: block; margin-bottom: 8px; font-size: var(--fs-small); color: var(--muted); }
.theme-v3 .refine .select { height: var(--ctl-h); min-height: var(--ctl-h); padding-block: 0; min-width: 170px; }
.theme-v3 .refine__clear { color: var(--candle-soft); font-size: var(--fs-small); }
.theme-v3 .refine__status { color: var(--text); margin: 0; min-height: 1.4em; }
.theme-v3 .refine__status:empty { display: none; }
@media (max-width: 560px) { .theme-v3 .refine__row .field { flex: 1 1 calc(50% - 9px); } .theme-v3 .refine .select { min-width: 0; } }

/* ---------- class page ---------- */
.theme-v3 .cls-type { color: var(--muted); font-size: 1.1rem; }
.theme-v3 .cls-hero { min-height: clamp(460px, 66vh, 720px); }
.theme-v3 .cls-hero .vid > img { filter: sepia(.2) saturate(.9) brightness(.7); }
.theme-v3 .cls-hero h1 { max-width: 18ch; }
.theme-v3 .cls-hero__eyebrow .cls-type { color: var(--text); text-transform: none; letter-spacing: 0; }
.theme-v3 .cls-hero__when { color: var(--text-strong); text-shadow: 0 1px 14px rgb(var(--deep-rgb) / .7); }
.theme-v3 .cls-body { padding-top: clamp(40px, 5vw, 72px); }
.theme-v3 .cls-lead { max-width: 52ch; }
@media (min-width: 1440px) { .theme-v3 .cls-body .cls-head { grid-template-columns: minmax(0, 8fr) minmax(340px, 4fr); } }
.theme-v3 .cls-summary__media { aspect-ratio: 16 / 9; margin-bottom: 18px; }
.theme-v3 .cls-info { display: grid; gap: 0; margin: 0; border-top: 1px solid var(--line-strong); }
.theme-v3 .cls-info__row { display: grid; grid-template-columns: minmax(0, 13rem) minmax(0, 1fr); gap: 6px 28px; padding: 18px 0; border-bottom: 1px solid var(--line); }
.theme-v3 .cls-info dt { font-family: var(--font-display); font-style: italic; font-size: 1.3rem; line-height: 1.3; color: var(--text-strong); }
.theme-v3 .cls-info dd { margin: 0; color: var(--text); max-width: 62ch; }
.theme-v3 .cls-info dd .inline-link { display: inline-flex; min-height: 44px; align-items: center; }
@media (max-width: 640px) { .theme-v3 .cls-info__row { grid-template-columns: minmax(0, 1fr); } }
.theme-v3 .cls-low { color: var(--candle-soft); font-weight: 600; margin-top: -10px; }
.theme-v3 .facts dd .ix__word { font-size: var(--fs-small); }

/* ---------- sold out ---------- */
.theme-v3 .sold-out { display: grid; gap: 12px; }
.theme-v3 .sold-out__word { font-size: var(--fs-micro); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--candle); font-weight: 600; }
.theme-v3 .sold-out__h { font-family: var(--font-display); font-weight: 300; font-size: clamp(2rem, 3vw, 2.6rem); line-height: 1.1; color: var(--text-strong); }
.theme-v3 .sold-out p { margin: 0; }
.theme-v3 .sold-out .btn { margin-top: 6px; white-space: normal; text-align: center; }
.theme-v3 .cx__fact .ix { display: grid; gap: 6px; justify-items: start; }

