/* Kriyasya Ayurveda V2 — P08 presentation layer. Loaded after legacy app.css. */
:root {
  --ay2-ink: #24312d;
  --ay2-ink-soft: #5c6762;
  --ay2-forest: #174c42;
  --ay2-forest-strong: #103c34;
  --ay2-leaf: #6f8f61;
  --ay2-saffron: #c9872e;
  --ay2-clay: #a95f49;
  --ay2-cream: #fbf7ef;
  --ay2-paper: #fffdf8;
  --ay2-mist: #eef3ed;
  --ay2-line: #dfe5dd;
  --ay2-focus: #0b6c5d;
  --ay2-max: 1180px;
  --ay2-reading: 720px;
  --ay2-r1: 12px;
  --ay2-r2: 18px;
  --ay2-r3: 28px;
  --ay2-s1: 0 1px 2px rgba(25,45,39,.06), 0 8px 24px rgba(25,45,39,.06);
  --ay2-s2: 0 18px 48px rgba(25,45,39,.10);
  --ay2-space-1: .5rem;
  --ay2-space-2: .75rem;
  --ay2-space-3: 1rem;
  --ay2-space-4: 1.5rem;
  --ay2-space-5: 2rem;
  --ay2-space-6: 3rem;
  --ay2-space-7: 4.5rem;
}

body.v2-shell, body.v2-home, body.v2-studio, body.v2-module, body.v2-search {
  color: var(--ay2-ink);
  background:
    radial-gradient(900px 480px at 90% -5%, rgba(111,143,97,.15), transparent 65%),
    linear-gradient(180deg, #fffdf8 0, var(--ay2-cream) 45rem, #fff 100%);
}

body.large-text { --ay2-reading: 780px; font-size: 1.2rem; }
body.large-text .v2-module-card p,
body.large-text .v2-goal-card span,
body.large-text .v2-studio-card p { max-width: 46ch; }

:where(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid color-mix(in srgb, var(--ay2-focus) 55%, white);
  outline-offset: 3px;
}

.v2-shell .container, .v2-home .container, .v2-studio .container, .v2-module .container, .v2-search .container {
  max-width: var(--ay2-max);
}

.v2-kicker {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  color: var(--ay2-forest);
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.v2-eyebrow { color: var(--ay2-forest); font-weight: 750; font-size: .9rem; }
.v2-reading { max-width: var(--ay2-reading); }
.v2-section { padding-block: clamp(2.5rem, 5vw, 5rem); }
.v2-section--tight { padding-block: clamp(1.5rem, 3vw, 2.5rem); }
.v2-section-head { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 1.5rem; }
.v2-section-head > div:first-child { max-width: 720px; }
.v2-section-head p { margin: .4rem 0 0; color: var(--ay2-ink-soft); }

/* Header and navigation */
.site-header { background: rgba(255,253,248,.94); border-bottom-color: var(--ay2-line); }
.site-header__inner { max-width: var(--ay2-max); min-height: 68px; }
.brand__sub { text-transform: none; letter-spacing: 0; }
.v2-desktop-nav { display: flex; align-items: center; gap: .15rem; margin-left: auto; }
.v2-desktop-nav a, .v2-more-toggle {
  border: 0; background: transparent; color: var(--ay2-ink); text-decoration: none;
  min-height: 42px; padding: .62rem .72rem; border-radius: 12px; font-weight: 650; font-size: .92rem;
}
.v2-desktop-nav a:hover, .v2-desktop-nav a.is-active, .v2-more-toggle:hover { background: var(--ay2-mist); color: var(--ay2-forest-strong); }
.v2-more { position: relative; }
.v2-more-menu {
  position: absolute; right: 0; top: calc(100% + .5rem); min-width: 260px; background: #fff;
  border: 1px solid var(--ay2-line); border-radius: var(--ay2-r2); box-shadow: var(--ay2-s2); padding: .5rem; z-index: 80;
}
.v2-more-menu[hidden] { display: none; }
.v2-more-menu a { display: flex; align-items: center; justify-content: space-between; gap: 1rem; width: 100%; }
.v2-more-menu small { color: var(--ay2-clay); }
.v2-search-trigger { width: 42px; height: 42px; padding: 0 !important; border-radius: 50% !important; }

/* World navigation bar.
   Lives OUTSIDE .site-header on purpose: the platform strips .site-header on this world
   (config header.strip.ayurveda), which previously deleted the entire studio nav with it. */
.ayur-worldnav {
  position: sticky; top: var(--lvh-h, 0px); z-index: 90;
  background: rgba(255,253,248,.96); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--ay2-line);
}
.ayur-worldnav__inner {
  max-width: var(--ay2-max);
  display: flex; align-items: center; gap: .75rem;
  /* Thin on purpose. It sits directly under the 70px platform bar, so anything taller than
     this reads as two competing headers rather than a header plus a section nav. */
  min-height: 48px;
}
/* Today: the world's "now" link. Separated from the studio list by a hairline so the bar reads as
   one current action, then six places to learn something. */
.ayur-worldnav__today {
  display: inline-flex; align-items: center; gap: .4rem; flex: none;
  min-height: 38px; padding: .45rem .7rem; border-radius: 12px;
  font-size: .9rem; font-weight: 750; text-decoration: none;
  color: var(--ay2-forest-strong); background: var(--ay2-mist);
  margin-right: .55rem; position: relative;
}
.ayur-worldnav__today:hover { background: #e3ece2; }
.ayur-worldnav__today.is-active { background: var(--ay2-forest); color: #fff; }
.ayur-worldnav__today svg { flex: none; opacity: .85; }
.ayur-worldnav__today::after {
  content: ""; position: absolute; right: -.3rem; top: 20%; bottom: 20%;
  width: 1px; background: var(--ay2-line);
}
.ayur-worldnav .v2-desktop-nav { margin-left: 0; margin-right: auto; overflow: visible; gap: .1rem; }
.ayur-worldnav .v2-desktop-nav a, .ayur-worldnav .v2-more-toggle {
  min-height: 38px; padding: .45rem .6rem; font-size: .88rem; font-weight: 650;
}
.ayur-worldnav .v2-more-toggle { display: inline-flex; align-items: center; gap: .25rem; cursor: pointer; }
.ayur-worldnav .v2-more-toggle svg { transform: rotate(90deg); opacity: .6; }
.ayur-worldnav__actions { display: flex; align-items: center; gap: .3rem; flex: none; }
.ayur-worldnav__actions .btn { gap: .35rem; min-height: 38px; padding: .4rem .65rem; font-size: .85rem; }
.ayur-worldnav__burger { display: none; }
.v2-more-menu__btn {
  display: flex; align-items: center; width: 100%; border: 0; background: transparent;
  text-align: left; cursor: pointer; font: inherit; color: inherit;
}

.v2-mobile-bottom { display: none; }
.v2-mobile-more {
  display: none; position: fixed; inset: auto .75rem 5.5rem .75rem; z-index: 95; background: #fff;
  border: 1px solid var(--ay2-line); border-radius: var(--ay2-r3); box-shadow: var(--ay2-s2); padding: 1rem;
}
.v2-mobile-more.is-open { display: block; }
.v2-mobile-more__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: .75rem; }
.v2-mobile-more__grid { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.v2-mobile-more a { text-decoration: none; color: var(--ay2-ink); background: var(--ay2-cream); border-radius: 14px; padding: .8rem; font-weight: 650; }

/* Homepage */
.v2-home-hero { padding: clamp(2.6rem, 7vw, 6.5rem) 0 clamp(2rem, 5vw, 4rem); }
.v2-home-hero__grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(380px,.95fr); gap: clamp(1.75rem, 3.2vw, 3.25rem); align-items: center; }
.v2-home-hero h1 { font-size: clamp(2rem, 3.9vw, 3.3rem); max-width: 21ch; letter-spacing: -.025em; text-wrap: balance; }
.v2-home-hero__lead { font-size: clamp(1.05rem, 1.5vw, 1.25rem); color: var(--ay2-ink-soft); max-width: 55ch; }
.v2-home-hero__actions { display: flex; gap: .75rem; flex-wrap: wrap; margin-top: 1.5rem; }
.v2-home-hero__panel { background: rgba(255,255,255,.86); border: 1px solid var(--ay2-line); border-radius: var(--ay2-r3); box-shadow: var(--ay2-s2); padding: clamp(1rem, 2.5vw, 1.5rem); }
.v2-home-hero__panel h2 { margin: 0 0 1rem; font-size: 1.3rem; }

.v2-goal-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; grid-auto-rows: 1fr; align-items: stretch; }
.v2-goal-card { position: relative; display: flex; align-items: center; gap: .6rem; min-height: 84px; height: 100%; background: #fff; border: 1px solid var(--ay2-line); border-radius: var(--ay2-r2); padding: .7rem 1.6rem .7rem .7rem; color: var(--ay2-ink); text-decoration: none; transition: .18s ease; }
.v2-goal-card:hover { transform: translateY(-2px); border-color: #b8c8bc; box-shadow: var(--ay2-s1); }
.v2-goal-card__icon { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 11px; color: var(--ay2-forest); background: var(--ay2-mist); flex: 0 0 auto; }
.v2-goal-card__icon svg { width: 20px; height: 20px; }
.v2-goal-card__body { display: grid; gap: .15rem; min-width: 0; flex: 1; }
.v2-goal-card__body strong { font-size: .96rem; line-height: 1.25; overflow-wrap: break-word; }
.v2-goal-card__body span { color: var(--ay2-ink-soft); font-size: .78rem; }
.v2-goal-card.is-held { background: #faf8f2; }
/* Review-gated goal cards: badge sits under the label instead of competing for width. */
/* Arrow sits out of flow so the label keeps the full card width. */
.v2-goal-card__go { position: absolute; top: .5rem; right: .55rem; display: grid; place-items: center; color: var(--ay2-forest); opacity: .45; transition: opacity .18s ease; }
.v2-goal-card:hover .v2-goal-card__go { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .v2-goal-card__go { transition: none; } }
.v2-goal-card__body .v2-status { justify-self: start; width: max-content; max-width: 100%; margin-top: .2rem; font-size: .62rem; padding: .16rem .4rem; line-height: 1.3; }

.v2-trust-strip { display: grid; grid-template-columns: repeat(4,1fr); gap: 1rem; border: 1px solid var(--ay2-line); border-radius: var(--ay2-r2); background: rgba(255,255,255,.8); padding: 1rem; }
.v2-trust-strip > div { display: flex; gap: .7rem; }
.v2-trust-strip strong { display: block; font-size: .9rem; }
.v2-trust-strip span { display: block; font-size: .78rem; color: var(--ay2-ink-soft); }

.v2-studio-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1rem; grid-auto-rows: 1fr; align-items: stretch; }
/* Visual stacks above the copy; a side-by-side column starved the text of width. */
.v2-studio-card { display: grid; grid-template-columns: 1fr; grid-template-rows: auto 1fr; gap: .35rem; align-content: start; min-height: 220px; height: 100%; padding: 1.35rem; background: #fff; border: 1px solid var(--ay2-line); border-radius: var(--ay2-r2); color: var(--ay2-ink); text-decoration: none; box-shadow: var(--ay2-s1); transition: .18s ease; }
.v2-studio-card > div { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
.v2-studio-card__visual { width: 100%; }
.v2-studio-card .v2-inline-cta { margin-top: auto; padding-top: .6rem; }
.v2-studio-card:hover { transform: translateY(-3px); box-shadow: var(--ay2-s2); }
.v2-studio-card__icon { width: 50px; height: 50px; border-radius: 15px; display: grid; place-items: center; background: var(--ay2-mist); color: var(--ay2-forest); }
.v2-studio-card__eyebrow { color: var(--ay2-forest); font-size: .76rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.v2-studio-card h3 { font-size: 1.2rem; margin: .3rem 0 .25rem; line-height: 1.25; text-wrap: balance; }
.v2-studio-card p { color: var(--ay2-ink-soft); font-size: .9rem; line-height: 1.5; margin: 0; }
.v2-inline-cta { display: inline-flex; align-items: center; gap: .35rem; font-weight: 750; color: var(--ay2-forest); margin-top: .5rem; }
.v2-studio-card.is-held { background: #fbfaf6; box-shadow: none; }

/* Studio */
.v2-studio-hero { padding: clamp(2.4rem,5vw,5rem) 0 2rem; }
.v2-studio-hero__grid { display: grid; grid-template-columns: minmax(0,1fr) 320px; gap: 2.5rem; align-items: end; }
.v2-studio-hero h1 { font-size: clamp(2.25rem,4.6vw,4rem); max-width: 15ch; }
.v2-studio-hero p { color: var(--ay2-ink-soft); font-size: 1.15rem; max-width: 60ch; }
.v2-studio-hero__aside { border: 1px solid var(--ay2-line); border-radius: var(--ay2-r2); background: #fff; padding: 1rem; }
.v2-studio-hero__aside strong { display: block; margin-bottom: .2rem; }
.v2-studio-hero__aside span { color: var(--ay2-ink-soft); font-size: .9rem; }

/* "This module covers" — plain tags, only for the stages the module actually has.
   Deliberately not a rail, not numbered, and with no absent/greyed entries: there is nothing
   here that could be mistaken for a sequence of steps to click through. */
.v2-covers { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem .7rem; margin: 1.25rem 0 0; }
.v2-covers__label { font-size: .74rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #8b968f; }
html[lang="hi"] .v2-covers__label { text-transform: none; letter-spacing: 0; font-size: .82rem; }
.v2-covers__list { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; }
.v2-covers__tag {
  display: inline-flex; align-items: center; gap: .35rem;
  padding: .3rem .65rem; border-radius: 999px;
  background: var(--ay2-mist); color: var(--ay2-forest);
  font-size: .82rem; font-weight: 700; line-height: 1.3; white-space: nowrap;
}
.v2-covers__tag svg { flex: none; opacity: .8; }
.v2-covers__tag.is-current { background: var(--ay2-forest); color: #fff; }
.v2-covers__tag.is-current svg { opacity: 1; }

.v2-module-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 1rem; }
.v2-module-card { min-height: 220px; display: flex; flex-direction: column; background: #fff; color: var(--ay2-ink); text-decoration: none; border: 1px solid var(--ay2-line); border-radius: var(--ay2-r2); padding: 1.25rem; box-shadow: var(--ay2-s1); }
.v2-module-card:hover { border-color: #b7c9bd; }
.v2-module-card__top { display: flex; align-items: center; justify-content: space-between; gap: .7rem; }
.v2-module-card h3 { margin: .9rem 0 .45rem; font-size: 1.35rem; }
.v2-module-card p { color: var(--ay2-ink-soft); flex: 1; }
.v2-module-card.is-held { background: #faf8f2; box-shadow: none; }
.v2-stage, .v2-status { display: inline-flex; align-items: center; gap: .3rem; border-radius: 999px; padding: .28rem .6rem; font-size: .72rem; font-weight: 800; }
.v2-stage { background: var(--ay2-mist); color: var(--ay2-forest); }
.v2-status--ready { background: #e9f4e8; color: #2d6639; }
.v2-status--held { background: #f8ecdf; color: #8a5a27; }

/* Module */
.v2-module-hero { padding: clamp(2rem,5vw,4.5rem) 0 1.5rem; }
.v2-module-hero__grid { display: grid; grid-template-columns: minmax(0,1fr) 340px; gap: clamp(1.5rem,4vw,3.5rem); align-items: start; }
.v2-module-hero h1 { font-size: clamp(2.2rem,4.6vw,4rem); max-width: 16ch; }
.v2-module-hero__promise { color: var(--ay2-ink-soft); font-size: 1.15rem; max-width: 60ch; }
.v2-module-start { position: sticky; top: 95px; background: #fff; border: 1px solid var(--ay2-line); border-radius: var(--ay2-r3); padding: 1.35rem; box-shadow: var(--ay2-s2); }
.v2-module-start__meta { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.v2-module-start p { color: var(--ay2-ink-soft); font-size: .92rem; }
/* The CTA is full-width inside the panel but must not also inherit .btn-lg's oversized
   padding/font — at 340px wide that produced a slab-like button. */
.v2-module-start .btn { width: 100%; }
.v2-module-start .btn.btn-lg {
  padding: .9rem 1.1rem; font-size: 1rem; min-height: 52px; border-radius: 14px;
  /* !important because .btn/.btn-lg in app.css set their own margins and this must win
     regardless of which sheet loads last. The note below was sitting flush against the
     button's bottom edge; the gap has to be unmissable, not marginal. */
  margin: 0 0 1.75rem !important;
}
.v2-module-start__note {
  display: flex; gap: .5rem; align-items: flex-start;
  margin: 0 !important; padding-top: 1.1rem;
  border-top: 1px solid var(--ay2-line);
  font-size: .8rem; line-height: 1.55; color: var(--ay2-ink-soft);
}
.v2-module-start__note svg { flex: none; margin-top: .15rem; opacity: .65; }
.v2-module-start__time { display: flex; align-items: baseline; gap: .4rem; margin: 0 0 1.25rem; font-size: .88rem; }
.v2-input-contract { display: grid; grid-template-columns: repeat(2,1fr); gap: .75rem; margin-top: 1rem; }
.v2-input-contract > div { border: 1px solid var(--ay2-line); border-radius: 14px; background: #fff; padding: .9rem; }
.v2-input-contract strong { display: block; margin-bottom: .2rem; }
.v2-input-contract span { color: var(--ay2-ink-soft); font-size: .9rem; }

.v2-result-preview { border: 1px solid var(--ay2-line); border-radius: var(--ay2-r3); overflow: hidden; background: #fff; box-shadow: var(--ay2-s1); }
.v2-result-preview__head { padding: 1.3rem 1.4rem; background: linear-gradient(135deg,var(--ay2-mist),#fff); }
.v2-result-preview__head h2 { margin: .35rem 0 0; }
.v2-result-preview__grid { display: grid; grid-template-columns: 1fr 1fr; }
.v2-result-preview__grid > div { padding: 1.1rem 1.3rem; border-top: 1px solid var(--ay2-line); }
.v2-result-preview__grid > div:nth-child(odd) { border-right: 1px solid var(--ay2-line); }
.v2-result-preview__grid strong { display: block; color: var(--ay2-forest); margin-bottom: .25rem; }
.v2-result-preview__grid span { color: var(--ay2-ink-soft); font-size: .9rem; }

.v2-action-plan { counter-reset: ay2day; display: grid; gap: .65rem; padding: 0; list-style: none; }
.v2-action-plan li { counter-increment: ay2day; display: grid; grid-template-columns: 42px 1fr; gap: .8rem; align-items: start; background: #fff; border: 1px solid var(--ay2-line); border-radius: 14px; padding: .8rem; }
.v2-action-plan li::before { content: counter(ay2day); width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: var(--ay2-mist); color: var(--ay2-forest); font-weight: 800; }

/* Search + states */
.v2-search-box { position: relative; max-width: 760px; }
.v2-search-box input { width: 100%; min-height: 56px; border: 1px solid var(--ay2-line); border-radius: 18px; background: #fff; padding: 0 1rem 0 3rem; font: inherit; color: var(--ay2-ink); }
.v2-search-box svg { position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); color: var(--ay2-forest); }
.v2-search-results { display: grid; gap: .75rem; margin-top: 1.25rem; }
.v2-search-result { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .9rem; background: #fff; border: 1px solid var(--ay2-line); border-radius: 16px; padding: .9rem; text-decoration: none; color: var(--ay2-ink); }
.v2-search-result__icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 13px; background: var(--ay2-mist); color: var(--ay2-forest); }
.v2-search-result small { display: block; color: var(--ay2-ink-soft); }

.v2-state-card, .v2-review-state { display: grid; grid-template-columns: auto 1fr; gap: 1rem; background: #fff; border: 1px solid var(--ay2-line); border-radius: var(--ay2-r3); padding: clamp(1.2rem,3vw,2rem); }
.v2-state-card__icon, .v2-review-state > span:first-child { width: 52px; height: 52px; display: grid; place-items: center; border-radius: 15px; background: var(--ay2-mist); color: var(--ay2-forest); }
.v2-review-state { background: #fbf8f1; border-color: #eadcc7; }

/* Upgrade legacy journey/report surfaces without changing their data logic */
.is-play .play-wrap { max-width: 900px; }
.is-play .journey-shell, .is-play .journey, .report { border-radius: var(--ay2-r3) !important; }
.report { background: #fff; border: 1px solid var(--ay2-line); box-shadow: var(--ay2-s2); overflow: hidden; }
.report__cover { background: linear-gradient(145deg,var(--ay2-forest-strong),var(--ay2-forest)); color: #fff; padding: clamp(1.5rem,4vw,3rem); }
.report__cover .report__title, .report__cover .report__subtitle, .report__cover .muted { color: #fff; }
.report__section { padding: clamp(1.15rem,3vw,2rem); border-bottom: 1px solid var(--ay2-line); }
.report__section h2 { font-size: 1.35rem; }
.report__disclaimer { margin: 1rem; border-radius: 14px; }
.report__plan { display: grid; gap: .5rem; }
.report__plan li { background: var(--ay2-cream); border-radius: 12px; padding: .75rem .9rem; }

@media (max-width: 1040px) {
  .v2-desktop-nav a:nth-child(5), .v2-desktop-nav a:nth-child(6) { display: none; }
  .v2-studio-grid { grid-template-columns: repeat(2,1fr); }
}

@media (max-width: 820px) {
  body { padding-bottom: 76px; }
  .site-header__inner { min-height: 62px; }
  .brand__sub { display: none; }
  .v2-desktop-nav { display: none; }
  .site-header__actions .lang-switch, .site-header__actions > .btn:not(.v2-search-trigger) { display: none; }
  .v2-mobile-bottom { display: grid; grid-template-columns: repeat(5,1fr); position: fixed; z-index: 90; inset: auto 0 0; padding: .45rem max(.35rem,env(safe-area-inset-right)) calc(.45rem + env(safe-area-inset-bottom)) max(.35rem,env(safe-area-inset-left)); background: rgba(255,255,255,.97); border-top: 1px solid var(--ay2-line); box-shadow: 0 -8px 30px rgba(25,45,39,.08); }
  .v2-mobile-bottom a, .v2-mobile-bottom button { appearance: none; border: 0; background: transparent; color: var(--ay2-ink-soft); text-decoration: none; display: grid; justify-items: center; gap: .18rem; padding: .38rem .15rem; font: inherit; font-size: .68rem; font-weight: 700; border-radius: 10px; }
  .v2-mobile-bottom a.is-active, .v2-mobile-bottom button.is-active { color: var(--ay2-forest); background: var(--ay2-mist); }
  .v2-home-hero__grid, .v2-studio-hero__grid, .v2-module-hero__grid { grid-template-columns: 1fr; }
  .v2-home-hero h1 { max-width: 22ch; }
  .v2-home-hero__panel { order: 2; }
  .v2-module-start { position: static; }
  .v2-trust-strip { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 900px) {
  .ayur-worldnav .v2-desktop-nav { display: none; }
  /* Today survives the collapse — it is the one link a returning user needs, and the mobile
     bottom bar carries it too. The divider goes, since there is nothing to divide from. */
  .ayur-worldnav__today { margin-right: auto; }
  .ayur-worldnav__today::after { display: none; }
  .ayur-worldnav__burger { display: inline-flex; }
  .ayur-worldnav__actionlabel { display: none; }
  .ayur-worldnav__inner { justify-content: flex-end; min-height: 52px; }
  /* Back to a full 44px target once these are the only controls in the bar. */
  .ayur-worldnav__actions .btn { min-height: 44px; min-width: 44px; justify-content: center; }
}

@media (max-width: 620px) {
  .v2-section { padding-block: 2.25rem; }
  .v2-home-hero { padding-top: 2.2rem; }
  .v2-home-hero h1, .v2-studio-hero h1, .v2-module-hero h1 { font-size: clamp(1.85rem,8vw,2.5rem); }
  .v2-home-hero h1 { max-width: 20ch; }
  .v2-goal-grid, .v2-studio-grid, .v2-module-grid, .v2-input-contract, .v2-result-preview__grid { grid-template-columns: 1fr; }
  .v2-goal-grid, .v2-studio-grid { grid-auto-rows: auto; }
  .v2-goal-card { min-height: 76px; height: auto; }
  .v2-studio-card { min-height: 0; height: auto; }
  .v2-result-preview__grid > div:nth-child(odd) { border-right: 0; }
  .v2-trust-strip { grid-template-columns: 1fr; }
  .v2-section-head { display: block; }
  .v2-section-head .btn { margin-top: 1rem; }
  .v2-mobile-more__grid { grid-template-columns: 1fr; max-height: 60vh; overflow: auto; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .001ms !important; animation-duration: .001ms !important; animation-iteration-count: 1 !important; }
}

@media print {
  .v2-mobile-bottom, .v2-mobile-more, .site-header, .ayur-worldnav, .topbar-safety, .site-footer, .report-actions { display: none !important; }
  body { padding: 0 !important; background: #fff !important; }
  .report { box-shadow: none; border: 0; }
}

/* ---------------------------------------------------------------------------
 * P11R-RC1 — Canonical reference library (foods / spices / herbs)
 * Appended so the owner's existing rules above are untouched. The library now
 * renders 25 canonical food records instead of the single legacy file that
 * happened to parse, so the grid needs equal-height cards and a clamped card
 * face with the full contract behind a disclosure.
 * ------------------------------------------------------------------------- */
.library__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; grid-auto-rows: 1fr; align-items: stretch; }
.library__grid > .lib-card { display: flex; flex-direction: column; height: 100%; min-width: 0; }
.lib-card__top { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.lib-card__name { margin: 0; font-size: 1.05rem; line-height: 1.25; }
.lib-card__tag { flex: 0 0 auto; font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--ay2-forest, #174C42); background: var(--ay2-mist, #eef3ee); border-radius: 999px; padding: .16rem .5rem; white-space: nowrap; }
.lib-card__summary { margin: .5rem 0 .6rem; font-size: .88rem; line-height: 1.5; color: var(--ay2-ink-soft, #4a5a52);
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.lib-card__chips { list-style: none; margin: 0 0 .6rem; padding: 0; display: flex; flex-wrap: wrap; gap: .3rem; }
.lib-chip-flag { font-size: .66rem; line-height: 1.3; padding: .16rem .45rem; border-radius: 6px; background: rgba(23,76,66,.07); color: var(--ay2-ink-soft, #4a5a52); }
.lib-chip-flag--allergen { background: rgba(196,120,40,.13); color: #7a4a12; font-weight: 600; }
.lib-card__more { margin-top: auto; border-top: 1px solid var(--ay2-line, #e3e8e3); padding-top: .5rem; }
.lib-card__more > summary { cursor: pointer; font-size: .78rem; font-weight: 700; color: var(--ay2-forest, #174C42); }
.lib-card__moreBody { padding-top: .5rem; }
.lib-card__moreBody p { margin: .4rem 0; font-size: .8rem; line-height: 1.5; }
.lib-card__sources { margin: .3rem 0 0; padding-left: 1.1rem; font-size: .76rem; line-height: 1.5; }
.lib-card__sources a { color: var(--ay2-forest, #174C42); }
.lib-verified { font-size: .62rem; text-transform: uppercase; letter-spacing: .04em; color: #2f6b4f; }
.lib-split { font-size: .82rem; }
@media (max-width: 620px) {
  .library__grid { grid-template-columns: 1fr; grid-auto-rows: auto; }
  .library__grid > .lib-card { height: auto; }
  .lib-card__summary { -webkit-line-clamp: 6; }
}

/* =============================================================================
   R8.1 — fixes reported from live screenshots.
   Access badge, platform-header contrast on the Ayurveda accent, section rhythm.
   Appended so the whole change set is auditable in one place; later source order
   lets each rule win over the base rule it corrects at equal specificity.
   ============================================================================= */

/* --- ACCESS BADGE ---------------------------------------------------------
   The shared lvone_access_badge() output was UNSTYLED on world pages: its CSS
   lives only in assets/css/lvone-landing.css, which a world never loads. So the
   screen-reader sentence rendered as visible body text — the reported
   "3 creditsCosts 3 credits per use. Requires sign-in and an active membership."
   line — and the chip had no shape. Hide the SR sentence (it is for assistive
   tech only) and render the visible chip as one compact pill. */
.lvo-sr {
  position: absolute !important; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}
.lvo-badge {
  display: inline-flex; align-items: center; gap: .34rem;
  border-radius: 999px; padding: .24rem .62rem;
  font-size: .72rem; font-weight: 800; line-height: 1; letter-spacing: .02em;
  border: 1px solid transparent; white-space: nowrap; vertical-align: middle;
}
.lvo-badge__ic { width: 13px; height: 13px; flex: none; }
.lvo-badge--free     { background: var(--lv-access-free-bg,#d1e7dd);     color: var(--lv-access-free-fg,#0f5132); }
.lvo-badge--included { background: var(--lv-access-included-bg,#cfe2ff); color: var(--lv-access-included-fg,#084298); }
.lvo-badge--credits  { background: var(--lv-access-credits-bg,#fff3cd);  color: var(--lv-access-credits-fg,#664d03); }
.lvo-badge--unknown  { background: var(--lv-access-unknown-bg,#e2e3e5);  color: var(--lv-access-unknown-fg,#41464b); }

/* Card top row: keep the stage chip and the access pill tidy, wrapping if narrow. */
.v2-module-card__top { flex-wrap: wrap; row-gap: .4rem; }
.v2-module-card__top .lvo-badge { margin-left: auto; }

/* --- PLATFORM HEADER CONTRAST ON THE AYURVEDA ACCENT ----------------------
   Accent is dark teal (#0E4A45 -> #2c7a52). The shared header sets the Sign-in
   CTA and active-language pill text to near-black (#1a1230), invisible on a dark
   accent. Scoped to #lvh AND only shipped in THIS world's stylesheet, so no other
   world is affected; the [data-theme] attribute lifts specificity above the
   header's own injected inline rule. */
#lvh[data-theme] .lvh-cta { color: #fff; }
#lvh[data-theme] .lvh-cta .lvh-ic { stroke: #fff; }
#lvh[data-theme] .lvh-lang a.on { color: #fff; }

/* --- SECTION RHYTHM -------------------------------------------------------
   The breadcrumb, the hero's top padding and the first section's padding stacked
   into large empty bands (reported between breadcrumb->hero and hero->modules).
   Tighten the hero that follows a breadcrumb, and the gap into the first section. */
.breadcrumb { padding-top: .8rem; }
.breadcrumb + .v2-module-hero,
.breadcrumb + .v2-studio-hero { padding-top: clamp(.6rem, 1.5vw, 1.2rem); }
.v2-module-hero { padding-block: clamp(1.2rem, 3vw, 2.2rem) clamp(.8rem, 1.6vw, 1.3rem); }
.v2-studio-hero { padding-block: clamp(1.2rem, 3vw, 2.2rem) clamp(.8rem, 1.6vw, 1.3rem); }
.v2-module-hero + .v2-section,
.v2-module-hero + .v2-section--tight,
.v2-studio-hero + .v2-section,
.v2-studio-hero + .v2-section--tight,
.v2-section--tight + .v2-section { padding-block: clamp(1.3rem, 2.6vw, 2.4rem); }
.v2-covers { margin-top: .7rem; }

/* ============================================================================
 * Content v3 — read+listen destinations (Wisdom, Āhāra, Rhythm, Kitchen Check).
 * upgrade.md P4/P5. Reuses the --ay2-* token set; calm knowledge surfaces, no
 * course/exam/streak styling (upgrade.md §55).
 * ========================================================================== */

/* Card grid (lessons / guides). Matches the 1–3 col rhythm of the studio grid. */
.ayc-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; align-items: stretch; }
.ayc-grid--one { grid-template-columns: 1fr; max-width: var(--ay2-reading); }
.ayc-card { display: grid; grid-template-rows: auto auto 1fr auto; gap: .4rem; padding: 1.2rem 1.25rem;
  background: #fff; border: 1px solid var(--ay2-line); border-radius: var(--ay2-r2); color: var(--ay2-ink);
  text-decoration: none; box-shadow: var(--ay2-s1); transition: transform .18s ease, box-shadow .18s ease; }
.ayc-card:hover { transform: translateY(-2px); box-shadow: var(--ay2-s2); }
.ayc-card.is-read { border-color: #cfe0d0; background: #fbfdfb; }
.ayc-card__chips { display: flex; flex-wrap: wrap; gap: .35rem; }
.ayc-card__title { font-size: 1.08rem; line-height: 1.3; margin: 0; color: var(--ay2-forest-strong); }
.ayc-card__summary { font-size: .92rem; color: var(--ay2-ink-soft); margin: 0; }
.ayc-chip { display: inline-flex; align-items: center; gap: .25rem; font-size: .72rem; font-weight: 600;
  padding: .18rem .5rem; border-radius: 999px; background: var(--ay2-mist); color: var(--ay2-forest); }
.ayc-chip--read { background: #d1e7dd; color: #0f5132; }
.ayc-time { font-size: .78rem; color: var(--ay2-ink-soft); }

/* Landing (public, unentitled) */
.ayc-landing__cta { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin-top: 1rem; }
.ayc-landing__note { margin-top: .6rem; max-width: 52ch; }
.ayc-collection-card { min-height: 0; }
.ayc-activate { margin: 0; }

/* Article (detail) — comfortable long-form reading column */
.ayc-article__sub { color: var(--ay2-ink-soft); font-size: 1.02rem; margin: .1rem 0 0; }
.ayc-article__meta { display: flex; flex-wrap: wrap; gap: 1rem; color: var(--ay2-ink-soft); font-size: .84rem; margin-top: .6rem; }
.ayc-article__meta span { display: inline-flex; align-items: center; gap: .3rem; }
.ayc-body { max-width: var(--ay2-reading); }
.ayc-body > p, .ayc-body > ul, .ayc-body > ol { font-size: 1.02rem; line-height: 1.75; color: var(--ay2-ink); }
.ayc-body .ayc-h { color: var(--ay2-forest-strong); margin: 1.6rem 0 .5rem; line-height: 1.3; }
.ayc-bullets, .ayc-steps { padding-left: 1.3rem; display: grid; gap: .4rem; }
.ayc-keypoints { list-style: none; padding: 0; display: grid; gap: .55rem; }
.ayc-keypoints li { display: grid; grid-template-columns: auto 1fr; gap: .55rem; align-items: start; }
.ayc-keypoints svg { color: var(--ay2-forest); margin-top: .15rem; }

/* Callouts + safety */
.ayc-callout, .ayc-safety { border-radius: var(--ay2-r1); padding: 1rem 1.1rem; margin: 1.2rem 0;
  border: 1px solid var(--ay2-line); background: var(--ay2-cream); }
.ayc-callout__label, .ayc-safety__label { display: block; font-size: .74rem; font-weight: 700;
  text-transform: none; letter-spacing: 0; color: var(--ay2-ink-soft); margin-bottom: .25rem; }
.ayc-callout__title { display: block; margin-bottom: .2rem; }
.ayc-callout--traditional { background: #f6f1e6; border-color: #e6dbc4; }
.ayc-callout--evidence { background: #eef3f6; border-color: #cfe0e8; }
.ayc-callout--info, .ayc-callout--note { background: var(--ay2-mist); border-color: var(--ay2-line); }
.ayc-safety { background: #fbf3f0; border-color: #ecd3ca; }
.ayc-safety__label { color: var(--ay2-clay); display: inline-flex; align-items: center; gap: .3rem; }

/* Table — stacks on small screens, no forced horizontal scroll (upgrade.md §13, §47) */
.ayc-tablewrap { margin: 1.2rem 0; }
.ayc-table { width: 100%; border-collapse: collapse; font-size: .95rem; }
.ayc-table th, .ayc-table td { text-align: left; padding: .55rem .7rem; border-bottom: 1px solid var(--ay2-line); vertical-align: top; }
.ayc-table th { color: var(--ay2-forest-strong); }

/* Sources + related */
.ayc-sources { max-width: var(--ay2-reading); }
.ayc-source-list { list-style: none; padding: 0; display: grid; gap: .5rem; }
.ayc-source { display: grid; gap: .1rem; }
.ayc-source__type { font-size: .72rem; font-weight: 700; color: var(--ay2-ink-soft); }
.ayc-source__title { font-size: .92rem; color: var(--ay2-ink); }
.ayc-relwrap { display: flex; flex-wrap: wrap; gap: .5rem; }
.ayc-relchip { display: inline-flex; align-items: center; padding: .4rem .8rem; border-radius: 999px;
  background: #fff; border: 1px solid var(--ay2-line); color: var(--ay2-forest); text-decoration: none; font-size: .9rem; box-shadow: var(--ay2-s1); }
.ayc-relchip:hover { border-color: var(--ay2-leaf); }

/* Audio player */
.ayc-player { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem; padding: .9rem 1rem;
  background: #fff; border: 1px solid var(--ay2-line); border-radius: var(--ay2-r2); box-shadow: var(--ay2-s1); max-width: var(--ay2-reading); }
.ayc-player__bar { display: flex; align-items: center; gap: .6rem; flex: 1 1 220px; }
.ayc-player__bar .js-ayc-seek { flex: 1; min-width: 120px; accent-color: var(--ay2-forest); }
.ayc-player__time { font-size: .8rem; color: var(--ay2-ink-soft); white-space: nowrap; }
.ayc-player__speed select { border: 1px solid var(--ay2-line); border-radius: var(--ay2-r1); padding: .3rem .5rem; background: #fff; color: var(--ay2-ink); min-height: 40px; }

@media (max-width: 1040px) { .ayc-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) {
  .ayc-grid { grid-template-columns: 1fr; }
  .ayc-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .ayc-table, .ayc-table tbody, .ayc-table tr, .ayc-table td { display: block; width: 100%; }
  .ayc-table tr { border: 1px solid var(--ay2-line); border-radius: var(--ay2-r1); margin-bottom: .6rem; padding: .3rem .5rem; }
  .ayc-table td { border: 0; padding: .35rem .2rem; }
}

/* Kitchen Check panel — comfortable reading width, same block vocabulary as lessons */
.ayc-check { max-width: var(--ay2-reading); }
.ayc-check .ayc-h:first-of-type { margin-top: .4rem; }

/* Cross-surface "read + listen" suggestion (Today / Weekly Review). Restrained, one line. */
.ayc-suggest { display: flex; align-items: center; gap: .8rem; padding: .9rem 1.1rem; text-decoration: none;
  background: #fff; border: 1px solid var(--ay2-line); border-radius: var(--ay2-r2); color: var(--ay2-ink); box-shadow: var(--ay2-s1); }
.ayc-suggest:hover { border-color: var(--ay2-leaf); box-shadow: var(--ay2-s2); }
.ayc-suggest__ic { flex: none; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 12px; background: var(--ay2-mist); color: var(--ay2-forest); }
.ayc-suggest__body { display: grid; gap: .1rem; flex: 1; }
.ayc-suggest__body strong { color: var(--ay2-forest-strong); }
.ayc-suggest__body small { color: var(--ay2-ink-soft); font-size: .8rem; }

/* Offline-download control on the audio player */
.ayc-player .js-ayc-download.is-saved { color: var(--ay2-forest); border-color: var(--ay2-leaf); }

/* Classical Shloka Card & Audio Hub (Upgrade) */
.ayur-shloka-card {
  background: linear-gradient(135deg, #fffdf8 0%, #fbf7ef 100%);
  border: 1.5px solid #e2d7c0;
  border-left: 5px solid var(--ay2-saffron);
  border-radius: var(--ay2-r2);
  padding: 1.4rem 1.6rem;
  margin: 1.6rem 0;
  box-shadow: 0 4px 18px rgba(201, 135, 46, 0.08);
  max-width: var(--ay2-reading);
}
.ayur-shloka-card__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 0.8rem;
}
.ayur-shloka-source {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--ay2-forest);
  background: rgba(23, 76, 66, 0.08);
  padding: 0.25rem 0.65rem;
  border-radius: 999px;
}
.ayur-shloka-quote {
  font-family: var(--font-sanskrit, "Noto Serif Devanagari", "Tiro Devanagari Sanskrit", Georgia, serif);
  font-size: 1.35rem;
  line-height: 1.8;
  color: var(--ay2-forest-strong);
  margin: 0.6rem 0 0.4rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.ayur-shloka-translit {
  font-size: 0.95rem;
  font-style: italic;
  color: var(--ay2-ink-soft);
  margin-bottom: 1.2rem;
  line-height: 1.5;
}
.ayur-audio-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px dashed #e2d7c0;
}
.ayur-audio-controls .btn {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.88rem;
  font-weight: 600;
  padding: 0.45rem 0.9rem;
  border-radius: 999px;
  cursor: pointer;
  transition: all 0.2s ease;
}
.ayur-audio-controls .btn.is-playing {
  background: var(--ay2-saffron) !important;
  color: #fff !important;
  border-color: var(--ay2-saffron) !important;
  box-shadow: 0 0 12px rgba(201, 135, 46, 0.4);
  animation: ayur-pulse 1.8s infinite;
}
.ayur-audio-controls .btn.is-paused {
  opacity: 0.85;
}
.ayur-audio-hub__playback {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.8rem;
  padding: 0.5rem 0.9rem;
  margin-top: 0.8rem;
  background: rgba(23, 76, 66, 0.06);
  border-radius: var(--ay2-r1);
  font-size: 0.85rem;
  color: var(--ay2-forest-strong);
  transition: all 0.3s ease;
}
.ayur-audio-hub__playback.is-idle {
  display: none;
}
.ayur-monograph-body {
  margin-top: 1.6rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--ay2-line);
}
.ayur-monograph-body p {
  line-height: 1.75;
  font-size: 1.05rem;
}
.ayur-lang-toggle {
  display: inline-flex;
  gap: 0.4rem;
  margin-bottom: 1rem;
  background: var(--ay2-mist);
  padding: 0.25rem;
  border-radius: 999px;
}
.ayur-lang-btn {
  border: 0;
  background: transparent;
  padding: 0.35rem 0.85rem;
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--ay2-ink-soft);
  border-radius: 999px;
  cursor: pointer;
  transition: all 0.2s;
}
.ayur-lang-btn.is-active {
  background: #fff;
  color: var(--ay2-forest);
  box-shadow: var(--ay2-s1);
}
.ayur-lang-pane:not(.is-active) {
  display: none !important;
}
.ayur-audio-pulse-indicator {
  display: inline-block;
  color: var(--ay2-saffron);
  margin-right: 0.35rem;
  animation: ayur-pulse 1.2s infinite;
}

@keyframes ayur-pulse {
  0% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.3); opacity: 0.7; }
  100% { transform: scale(1); opacity: 1; }
}

/* --- BOTANICAL PHOTOGRAPHY INTEGRATION --- */
.lib-rec__hero-grid {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2.2rem;
}
.lib-rec__hero-text {
  flex: 1 1 auto;
  min-width: 0;
}
.lib-rec__hero-media {
  flex: 0 0 250px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.lib-rec__hero-img {
  width: 250px;
  height: 250px;
  border-radius: 20px;
  object-fit: cover;
  box-shadow: 0 12px 32px rgba(23,76,66,0.14), 0 2px 8px rgba(0,0,0,0.06);
  border: 3px solid #fff;
  background: var(--ay2-mist);
  transition: transform 0.3s ease;
}
.lib-rec__hero-img:hover {
  transform: scale(1.02);
}

@media (max-width: 768px) {
  .lib-rec__hero-grid {
    flex-direction: column-reverse;
    text-align: left;
    gap: 1.4rem;
  }
  .lib-rec__hero-media {
    flex: 0 0 auto;
    width: 100%;
    justify-content: flex-start;
  }
  .lib-rec__hero-img {
    width: 180px;
    height: 180px;
  }
}

/* Card listing with thumbnail */
.lib-card__head-wrap {
  display: flex;
  gap: 0.85rem;
  align-items: flex-start;
  margin-bottom: 0.4rem;
}
.lib-card__thumb {
  width: 68px;
  height: 68px;
  flex: 0 0 68px;
  border-radius: 12px;
  object-fit: cover;
  box-shadow: 0 3px 10px rgba(23,76,66,0.08);
  border: 1.5px solid rgba(23,76,66,0.08);
  background: var(--ay2-mist);
}
.lib-card__head-meta {
  flex: 1 1 auto;
  min-width: 0;
}

/* Studio cards with hero banners */
.v2-studio-card--cover-wrap {
  position: relative;
  overflow: hidden;
}
.v2-studio-card__cover-img {
  width: 100%;
  height: 150px;
  object-fit: cover;
  border-radius: calc(var(--ay2-r2) - 2px) calc(var(--ay2-r2) - 2px) 0 0;
  display: block;
}
.v2-studio-card--with-cover .v2-studio-card__inner {
  padding: 1.4rem;
}
