/* Concept 1, The Retreat: the shared widgets, skinned through their own custom properties.
   Loaded after the shared stylesheets, so these values win. No colours are invented here: every one is a token from tokens.css. */

/* ---------------------------------------------------------------- Booking */
.bk {
  --bk-bg: var(--c-cream); --bk-surface: var(--c-ivory); --bk-ink: var(--c-bark); --bk-muted: var(--c-bark-2); --bk-line: var(--c-sand);
  --bk-accent: var(--c-terra-deep); --bk-accent-ink: var(--c-ivory); --bk-accent-soft: color-mix(in srgb, var(--c-sage) 22%, var(--c-ivory));
  --bk-ok: var(--c-sage-deep); --bk-bad: var(--c-error); --bk-focus: var(--c-sage-deep);
  --bk-font: var(--f-text); --bk-font-display: var(--f-display); --bk-radius: var(--r-sm); --bk-radius-lg: var(--r-md);
  --bk-shadow: var(--shadow-1); --bk-gap: 16px; --bk-dur: var(--dur-1);
  font-size: 1.0625rem;
}
.bk.bk, .bk .bk-card, .bk-card { background-image: var(--grain); }
.bk-title, .bk-h2 { font-weight: 500; letter-spacing: -.01em; font-size: clamp(1.75rem, 1.4rem + 1.4vw, 2.25rem); line-height: 1.12; }
.bk-card .bk-h2 { font-size: 1.5rem; }
.bk-eyebrow { font-family: var(--f-text); font-weight: 600; letter-spacing: .12em; color: var(--c-oak-deep); font-size: .8125rem; }
.bk-muted, .bk-hint, .bk-offer__meta, .bk-offer__sum { color: var(--c-bark-2); font-size: 1rem; }
.bk-lead { font-family: var(--f-display); font-size: var(--t-md); line-height: 1.4; }

/* Steps drawn as stitch marks: a thin line with three rings */
.bk-steps { gap: 0; margin-bottom: var(--s-5); font-size: .9375rem; position: relative; }
.bk-steps__item { flex: 1 1 0; margin-right: 0; flex-direction: column; align-items: flex-start; gap: var(--s-2); position: relative; padding-top: 2px; color: var(--c-bark-2); }
.bk-steps__item::before { content: ""; position: absolute; left: 36px; right: 8px; top: 18px; border-top: 2px dotted var(--c-sand); }
.bk-steps__item:last-child::before { display: none; }
.bk-steps__n { width: 36px; height: 36px; border: 2px solid var(--c-bark-2); background: var(--c-ivory); font-family: var(--f-display); font-weight: 600; font-size: 1.125rem; color: var(--c-bark); position: relative; z-index: 1; }
.bk-steps__item.is-current .bk-steps__n { background: var(--c-sage-deep); border-color: var(--c-sage-deep); color: var(--c-ivory); }
.bk-steps__item.is-done .bk-steps__n { background: var(--c-sage-wash); border-color: var(--c-sage-deep); }
.bk-steps__item.is-current { color: var(--c-bark); }
.bk-steps__t { white-space: nowrap; }

/* Buttons: Book (terracotta, pill) for the main action, quiet outline for the rest */
.bk-btn { min-height: 52px; padding: 0 28px; border-radius: var(--r-pill); border: 1.5px solid var(--c-terra-deep); background: var(--c-terra-deep); color: var(--c-ivory); font-size: 1.0625rem; box-shadow: var(--shadow-1); }
.bk-btn:hover { background: var(--c-terra-hover); border-color: var(--c-terra-hover); filter: none; transform: translateY(-1px); }
.bk-btn--ghost { background: transparent; color: var(--c-bark); border-color: var(--c-bark); box-shadow: none; border-radius: var(--r-sm); }
.bk-btn--ghost:hover { background: var(--c-linen); border-color: var(--c-bark); transform: none; }
.bk-btn--link { background: none; border-color: transparent; box-shadow: none; color: var(--c-oak-deep); }
.bk-btn--link:hover { background: none; transform: none; text-decoration-thickness: 2px; }
.bk-btn:disabled, .bk-btn[disabled] { opacity: 1; background: var(--c-linen); color: var(--c-bark-2); border: 1.5px dashed var(--c-bark-2); box-shadow: none; transform: none; }
.bk-btn[aria-pressed="true"] { background: var(--c-sage-deep); border-color: var(--c-sage-deep); color: var(--c-ivory); }
.bk-input { min-height: 52px; background: var(--c-cream); border: 1.5px solid var(--c-bark-2); font-size: 1.0625rem; }
.bk-input:focus-visible { outline: 3px solid var(--c-sage-deep); outline-offset: 2px; }
.bk-label { font-size: 1rem; }
.bk-check input { accent-color: var(--c-sage-deep); width: 24px; height: 24px; }
.bk-alert { background: color-mix(in srgb, var(--c-sage) 22%, var(--c-ivory)); border: 1.5px solid var(--c-sage-deep); color: var(--c-bark); }
.bk-alert--bad { background: var(--c-ivory); border-color: var(--c-error); color: var(--c-error); font-weight: 600; }
.bk-alert--ok { border-color: var(--c-sage-deep); color: var(--c-bark); }

/* Offerings as large radio cards */
.bk-offer { min-height: 72px; padding: 16px 20px; border: 1.5px solid var(--c-sand); border-radius: var(--r-sm); background: var(--c-cream); }
.bk-offer:hover { border-color: var(--c-sage-deep); box-shadow: var(--shadow-1); }
.bk-offer:focus-visible { outline: 3px solid var(--c-sage-deep); outline-offset: 2px; }
.bk-offer__name { font-size: 1.5rem; font-weight: 600; line-height: 1.15; }
.bk-offer__price { color: var(--c-bark); }
.bk-offers > li:first-child .bk-offer { border-color: var(--c-sage-deep); background: color-mix(in srgb, var(--c-sage) 16%, var(--c-ivory)); }

/* Calendar: round day buttons, 44px and up */
.bk-cal__title { font-size: 1.5rem; }
.bk-cal__grid th { color: var(--c-bark-2); font-size: .875rem; }
.bk-cal__day { height: 48px; border-radius: 50%; color: var(--c-bark-2); text-decoration: line-through dotted; text-decoration-thickness: 1px; }
.bk-cal__day.has-times { background: var(--c-ivory); border: 1.5px solid var(--c-sand); color: var(--c-bark); text-decoration: none; }
.bk-cal__day.has-times::after { background: var(--c-sage-deep); }
.bk-cal__day.has-times:hover { border-color: var(--c-sage-deep); }
.bk-cal__day.is-selected { background: var(--c-terra-deep); border-color: var(--c-terra-deep); color: var(--c-ivory); }
.bk-cal__day:focus-visible { outline: 3px solid var(--c-sage-deep); outline-offset: 2px; }

/* Times as pill chips */
.bk-time { min-height: 48px; border-radius: var(--r-pill); border: 1.5px solid var(--c-sage-deep); background: var(--c-ivory); color: var(--c-bark); }
.bk-time:hover { background: var(--c-sage-deep); color: var(--c-ivory); }
.bk-time:focus-visible { outline: 3px solid var(--c-sage-deep); outline-offset: 2px; }

/* Summary and checkout hand-off */
.bk-chosen { background: color-mix(in srgb, var(--c-sage) 20%, var(--c-ivory)); border-color: var(--c-sand); }
.bk-summary__row { border-bottom-color: var(--c-sand); }
.bk-summary__row--total { font-family: var(--f-display); font-size: 1.5rem; }
.bk-card .bk-lead + p { color: var(--c-bark-2); }

/* ------------------------------------------------------------- Assessment */
.as {
  --as-bg: var(--c-cream); --as-surface: var(--c-ivory); --as-ink: var(--c-bark); --as-muted: var(--c-bark-2); --as-accent: var(--c-sage-deep); --as-accent-ink: var(--c-ivory);
  --as-line: var(--c-sand); --as-font: var(--f-text); --as-display: var(--f-display); --as-radius: var(--r-md); --as-gap: 16px; --as-shadow: none; --as-dur: var(--dur-2);
  max-width: none; font-size: var(--t-base);
}
.as__card { background: transparent; border: 0; padding: 0; min-height: min(560px, calc(100svh - 220px)); display: flex; flex-direction: column; }
.as__title, .as__q, .as__h { font-weight: 500; letter-spacing: -.01em; }
.as__title { font-size: var(--t-xl); line-height: 1.05; max-width: 16ch; }
.as__q { font-size: var(--t-lg); line-height: 1.18; max-width: 26ch; padding: 0; text-wrap: balance; }
.as__lead { font-family: var(--f-display); font-size: var(--t-md); line-height: 1.4; max-width: 46ch; color: var(--c-bark); }
.as__note, .as__count { color: var(--c-bark-2); font-size: 1rem; }
.as__progress { height: 2px; background: var(--c-sand); margin-bottom: var(--s-3); overflow: visible; position: relative; }
.as__progress > span { background: var(--c-bark-2); position: relative; overflow: visible; }
.as__progress > span::after { content: ""; position: absolute; right: -6px; top: -5px; width: 11px; height: 11px; background: var(--c-olive); border-radius: 0 100% 0 100%; transform: rotate(-8deg); }
.as__scale { margin-top: var(--s-5); gap: var(--s-3); }
.as__scale legend { margin-bottom: var(--s-4); }
.as__opt { min-height: 56px; background: var(--c-cream); border: 1.5px solid var(--c-sand); border-radius: var(--r-sm); font-weight: 500; font-size: 1.0625rem; padding: 10px 18px; }
.as__opt:hover { border-color: var(--c-sage-deep); background: #fff9ee; }
.as__opt:has(input:checked) { border: 2px solid var(--c-sage-deep); background: color-mix(in srgb, var(--c-sage) 22%, var(--c-ivory)); padding: 9px 17px; }
.as__opt:has(input:focus-visible) { outline: 3px solid var(--c-sage-deep); outline-offset: 3px; }
.as__dot { width: 28px; height: 28px; border: 1.6px solid var(--c-bark-2); font-family: var(--f-display); font-weight: 600; font-size: 1rem; color: var(--c-bark); }
.as__opt:has(input:checked) .as__dot { background: var(--c-sage-deep); border-color: var(--c-sage-deep); color: var(--c-ivory); }
.as__nav { margin-top: auto; padding-top: var(--s-6); }
.as__btn { min-height: 52px; border-radius: var(--r-pill); padding: 0 30px; font-weight: 600; font-size: 1.0625rem; border: 1.5px solid var(--c-bark); background: var(--c-bark); color: var(--c-ivory); }
.as__btn:hover { background: #2A1E14; }
.as__btn--ghost { background: transparent; color: var(--c-bark); }
.as__btn--ghost:hover { background: var(--c-linen); }
.as__btn[disabled] { background: var(--c-linen); color: var(--c-bark-2); border: 1.5px dashed var(--c-bark-2); opacity: 1; }
.as__btn:focus-visible { outline: 3px solid var(--c-sage-deep); outline-offset: 3px; }
.as__field input[type=text], .as__field input[type=email] { background: var(--c-cream); border: 1.5px solid var(--c-bark-2); min-height: 52px; font-size: 1.0625rem; border-radius: var(--r-sm); }
.as__check input { accent-color: var(--c-sage-deep); width: 24px; height: 24px; }
.as__err { color: var(--c-error); }
.as__form { max-width: 520px; margin-top: var(--s-4); }
.as__panel { animation: rise var(--dur-2) var(--ease-out) both; }
/* If a result is ever shown by the engine itself */
.as__radar-grid { stroke: var(--c-sand); } .as__radar-shape { fill: color-mix(in srgb, var(--c-sage) 30%, transparent); stroke: var(--c-sage-deep); } .as__radar-dot { fill: var(--c-sage-deep); }
.as__bar-fill { background: var(--c-sage-deep); } .as__question { border-left-color: var(--c-oak); }

/* ------------------------------------------------------ A Little Learning */
.feed {
  --feed-ink: var(--c-bark); --feed-ink-soft: var(--c-bark-2); --feed-accent: var(--c-oak-deep); --feed-card-bg: var(--c-ivory); --feed-card-border: 1px solid var(--c-sand);
  --feed-radius: 14px; --feed-gap: 20px; --feed-min: 17rem; --feed-aspect: 4 / 5; --feed-aspect-tall: 4 / 5; --feed-tall-max: none; --feed-font: var(--f-text); --feed-heading-font: var(--f-display);
  --feed-focus: var(--c-sage-deep); --feed-media-bg: color-mix(in srgb, var(--c-sage) 20%, var(--c-ivory)); --feed-play-bg: var(--c-ivory); --feed-play-ink: var(--c-bark);
  --feed-badge-bg: var(--c-ivory); --feed-badge-ink: var(--c-bark); --feed-title-size: 1.5rem; --feed-pad: 16px;
}
.feed__card { box-shadow: var(--shadow-1); }
.feed__title { font-weight: 600; line-height: 1.15; }
.feed__icon { border: 2px solid var(--c-bark); width: 64px; height: 64px; }
.feed__icon::before { border-color: transparent transparent transparent var(--c-bark); }
.feed__badge { border: 1px solid var(--c-sand); font-weight: 600; font-size: .875rem; padding: 2px 12px; }
.feed__caption { color: var(--c-bark-2); }
.feed__link, .feed__follow-link { font-weight: 600; color: var(--c-oak-deep); display: inline-flex; align-items: center; min-height: 44px; }
.feed__network { font-size: 1.25rem; }
.feed__empty { font-family: var(--f-display); font-size: var(--t-md); }
.feed__nav { width: 48px; height: 48px; border: 1.5px solid var(--c-bark); }
.learn-feed .feed__follow { display: none; }
.learn .feed__list { gap: var(--s-4); }

/* ------------------------------------------------------------- Newsletter */
.nl-form.nl-form { --nl-ink: var(--c-bark); --nl-accent: var(--c-bark); --nl-line: var(--c-bark-2); gap: var(--s-3); max-width: 28rem; font-size: 1rem; }
.nl-form .nl-form__heading { font-family: var(--f-display); font-weight: 600; font-size: 1.5rem; }
.nl-form .nl-form__field label { font-size: 1rem; }
.nl-form .nl-form__field input { background: var(--c-cream); border: 1.5px solid var(--c-bark-2); border-radius: var(--r-sm); min-height: 48px; font-size: 1.0625rem; }
.nl-form .nl-form__button { background: transparent; color: var(--c-bark); border: 1.5px solid var(--c-bark); border-radius: var(--r-sm); font-weight: 600; min-height: 52px; padding: 0 26px; }
.nl-form .nl-form__button:hover { background: var(--c-ivory); }
.nl-form .nl-form__button[disabled] { border-style: dashed; opacity: 1; }
.nl-form .nl-form__note { opacity: 1; color: var(--c-bark-2); font-size: 1rem; }
.nl-form .nl-form__status { color: var(--c-sage-deep); }
.nl-form .nl-form__field input:focus-visible, .nl-form .nl-form__button:focus-visible { outline: 3px solid var(--c-sage-deep); outline-offset: 2px; }
.nl-form .nl-form__hp { position: absolute; left: -9999px; }
.site-footer .nl-form { margin-top: var(--s-2); }
.site-footer .nl-form .nl-form__field:first-of-type { display: none; }

/* ------------------------------------- Courses and events (buy, waitlist, register) */
:is(.jm-buy, .jm-waitlist, .jm-event) { display: grid; gap: var(--s-3); font-size: 1.0625rem; }
:is(.jm-buy__form, .jm-waitlist__form, .jm-event__form) { display: grid; gap: var(--s-3); }
:is(.jm-buy__field, .jm-waitlist__field, .jm-event__field) { display: grid; gap: 6px; }
:is(.jm-buy__label, .jm-waitlist__label, .jm-event__label) { font-weight: 600; font-size: 1rem; }
:is(.jm-buy__input, .jm-waitlist__input, .jm-event__input) { width: 100%; min-height: 52px; padding: 12px 14px; background: var(--c-cream); border: 1.5px solid var(--c-bark-2); border-radius: var(--r-sm); font-size: 1.0625rem; }
:is(.jm-buy__input, .jm-waitlist__input, .jm-event__input):focus-visible { outline: 3px solid var(--c-sage-deep); outline-offset: 2px; }
:is(.jm-buy__submit, .jm-waitlist__submit, .jm-event__submit) { min-height: 56px; padding: 0 28px; border-radius: var(--r-pill); border: 1.5px solid var(--c-terra-deep); background: var(--c-terra-deep); color: var(--c-ivory); font-weight: 600; font-size: 1.125rem; box-shadow: var(--shadow-1); }
:is(.jm-buy__submit, .jm-waitlist__submit, .jm-event__submit):hover { background: var(--c-terra-hover); border-color: var(--c-terra-hover); }
:is(.jm-buy__submit, .jm-waitlist__submit, .jm-event__submit)[disabled] { background: var(--c-linen); color: var(--c-bark-2); border: 1.5px dashed var(--c-bark-2); box-shadow: none; }
:is(.jm-buy__submit, .jm-waitlist__submit, .jm-event__submit):focus-visible { outline: 3px solid var(--c-sage-deep); outline-offset: 3px; }
:is(.jm-buy__amount, .jm-event__amount) { font-family: var(--f-display); font-size: 2.25rem; font-weight: 600; line-height: 1; }
.jm-event__note { color: var(--c-bark-2); font-size: 1rem; }
:is(.jm-buy__currency, .jm-event__currency) { display: flex; gap: var(--s-2); }
:is(.jm-buy__cur, .jm-event__cur) { min-height: 44px; min-width: 64px; border: 1.5px solid var(--c-bark-2); border-radius: var(--r-pill); background: transparent; font-weight: 600; }
:is(.jm-buy__cur, .jm-event__cur)[aria-pressed="true"] { background: var(--c-sage-deep); border-color: var(--c-sage-deep); color: var(--c-ivory); }
:is(.jm-buy__couponlabel, .jm-event__couponlabel) { cursor: pointer; min-height: 44px; display: inline-flex; align-items: center; color: var(--c-oak-deep); font-weight: 600; }
:is(.jm-buy__note, .jm-waitlist__note, .jm-event__spots, .jm-event__calendar) { font-size: 1rem; color: var(--c-bark-2); }
:is(.jm-buy__msg, .jm-waitlist__msg, .jm-event__msg)[data-tone="bad"] { color: var(--c-error); font-weight: 600; }
:is(.jm-buy__done, .jm-waitlist__done, .jm-event__done) { padding: var(--s-4); border-radius: var(--r-sm); background: color-mix(in srgb, var(--c-sage) 22%, var(--c-ivory)); border: 1.5px solid var(--c-sage-deep); }
:is(.jm-buy__closed, .jm-event__closed, .jm-event__full) { padding: var(--s-4); border: 1.5px dashed var(--c-bark-2); border-radius: var(--r-sm); }

/* Mantra progress: Pause, Reflect, Discover stay on screen. The thread is the progress. */
.as--mantra { display: grid; gap: var(--s-5); }
.as--mantra .as__mantra { display: grid; gap: var(--s-3); scroll-margin-top: 88px; }
.as--mantra .as__stem { height: 3px; border-radius: 99px; background: color-mix(in srgb, var(--c-oak) 28%, var(--c-linen)); overflow: hidden; }
.as--mantra .as__stem-grow { display: block; height: 100%; width: 100%; transform: scaleX(var(--p, 0.04)); transform-origin: left center; background: linear-gradient(90deg, var(--c-oak-deep), var(--c-sage-deep)); transition: transform .45s var(--ease-out); }
.as--mantra .as__path { width: min(100%, 460px); height: 72px; overflow: visible; }
.as--mantra .as__path path { fill: none; stroke-linecap: round; stroke-width: 2.4; }
.as--mantra .as__path-bed { stroke: var(--c-sand); }
.as--mantra .as__path-ink { stroke: var(--c-oak-deep); stroke-dasharray: 1; stroke-dashoffset: calc(1 - var(--p, 0.04)); transition: stroke-dashoffset .45s var(--ease-out); }
.as--mantra .as__thread { width: 100%; height: clamp(72px, 14vw, 110px); display: block; margin-top: -8px; }
.as--mantra .as__words { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.15em 0.7em; margin: 0; font-family: var(--f-display); font-weight: 500; font-size: clamp(1.85rem, 1.3rem + 2vw, 2.75rem); line-height: 1.05; color: var(--c-bark-2); }
.as--mantra .as__words span { transition: color var(--dur-2) var(--ease-out); }
.as--mantra .as__words .is-on { color: var(--c-bark); }
.as--mantra .as__words .is-now { box-shadow: inset 0 -0.12em 0 var(--c-olive); }
.as--mantra .as__mantra[data-word="discover"] .as__words [data-w="discover"].is-now { color: var(--c-terra-deep); box-shadow: inset 0 -0.12em 0 var(--c-terra-deep); }
.as--mantra .as__progress { display: none; }
.as--mantra .as__count { display: none; }
.as--mantra .as__stage--open .as__card { background: transparent; border: 0; box-shadow: none; padding: 0; min-height: 0; }
.as--mantra .as__open { margin: var(--s-2) 0 0; }
.as--mantra .as__facts { display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-4); margin-top: var(--s-4); color: var(--c-bark-2); font-size: 1rem; }
.as--mantra .as__facts li { padding-left: 14px; position: relative; }
.as--mantra .as__facts li::before { content: ""; position: absolute; left: 0; top: 0.55em; width: 7px; height: 7px; border-radius: 0 100% 0 100%; background: var(--c-olive); }
.as--mantra .as__tag { margin-top: var(--s-3); font-family: var(--f-display); font-style: italic; font-size: var(--t-md); max-width: 36ch; }
.as--mantra .as__scale { display: grid; gap: var(--s-2); }
.as--mantra .as__card { min-height: 0; }
.as--mantra .as__opt.is-chosen,
.as--mantra .as__opt:has(input:checked) { border: 2px solid var(--c-sage-deep); background: var(--c-sage-wash); box-shadow: inset 5px 0 0 var(--c-sage-deep); font-weight: 600; padding: 9px 17px 9px 16px; }
.as--mantra .as__opt.is-chosen .as__dot,
.as--mantra .as__opt:has(input:checked) .as__dot { background: var(--c-sage-deep); border-color: var(--c-sage-deep); color: var(--c-ivory); }
@media (prefers-reduced-motion: reduce) {
  .as--mantra .as__thread { display: none; }
  .as--mantra .as__words span { transition: none; }
  .as--mantra .as__stem-grow { transition: none; transform: scaleX(1); }
  .as--mantra .as__path-ink { transition: none; stroke-dashoffset: 0; }
}

/* ------------------------------------------------------- CMS-safe markers */
.cms-empty-image { display: grid; place-items: center; min-height: 120px; border: 1.5px dashed var(--c-bark-2); border-radius: var(--r-sm); color: var(--c-bark-2); }
[data-cms-ui] { font-family: system-ui, sans-serif; }

/* ------------------------------------------------------- Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .bk-btn:hover { transform: none; }
  .as__panel { animation: none; }
  .as__progress > span { transition: none; }
}
@media (max-width: 480px) { .bk-steps__t { clip-path: none; } .bk-steps__item:not(.is-current) .bk-steps__t { position: absolute; width: 1px; height: 1px; overflow: hidden; } }
