/* =========================================================================
 * v1.4.4 festival: /festivals and /festival/<key>  (assets/css/festival-pages.css; views festivals.php, festival-theme.php)
 * The hero and the "band" sections wear the festival's own dark ground (--t-bg → --t-bg2, computed on the server so
 * Parchment text reads at ≥ 7.5:1, with --t-accent-ink ≥ 7:1); the reading sections follow the site's light / Temple Dark
 * choice with AAA ink. Motion: transform / opacity only, and none under prefers-reduced-motion.
 * v1.5.0: .ftp-model, the hero's 3D prop on /festival/<key> (the index stays 2D: one WebGL context per card would be too many).
 * ========================================================================= */
.ftp {
  --p-bg: #FCFBF7; --p-card: #FFFFFF; --p-ink: #241311; --p-muted: #4E3B35; --p-head: #5E0E24; --p-line: rgba(120, 18, 43, 0.16); --p-link: #7A1230;
  --p-chip: #F6EEE2; --p-chip-on: #5E0E24; --p-chip-on-ink: #FFF7EE;
  background: var(--p-bg); color: var(--p-ink); overflow-x: clip;
}
[data-theme="dark"] .ftp {
  --p-bg: #0D0B09; --p-card: #161311; --p-ink: #FCFBF7; --p-muted: #D9CBBD; --p-head: #F7D58A; --p-line: rgba(217, 119, 6, 0.25); --p-link: #FCD34D;
  --p-chip: #1F1A16; --p-chip-on: #F2C14E; --p-chip-on-ink: #1A0F0E;
}
.ftp a:not(.ftp-btn):not(.ftp-other):not(.fi-card__link) { color: var(--p-link); text-underline-offset: 3px; }
.ftp :focus-visible { outline: 3px solid #D97706; outline-offset: 2px; }
.ftp h2, .ftp h3 { overflow-wrap: break-word; }
.ftp-small { font-size: 0.88rem; color: var(--p-muted); line-height: 1.5; }
.ftp-note { color: var(--p-muted); line-height: 1.55; }
.ftp-sub { max-width: 64ch; color: var(--p-muted); line-height: 1.6; margin: 0 0 1.2em; }

/* ---------- the hero: the festival's own night ---------- */
.ftp-hero {
  position: relative; isolation: isolate; overflow: hidden; color: #FCFBF7;
  padding: clamp(28px, 5vw, 64px) 0 clamp(40px, 6vw, 80px);
  background: linear-gradient(160deg, var(--t-bg, #3A0815) 0%, var(--t-bg2, #0D0B09) 100%);
}
.ftp-hero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: linear-gradient(90deg, transparent, var(--t-accent, #D97706) 20%, var(--t-accent, #D97706) 80%, transparent); opacity: 0.85; }
.ftp-hero__glow { position: absolute; inset: -10% -10% auto auto; z-index: -1; width: min(80vw, 760px); aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--t-accent, #D97706) 22%, transparent), transparent); pointer-events: none; }
.ftp-hero__grid { display: grid; gap: clamp(16px, 3vw, 40px); align-items: center; }
@media (min-width: 900px) { .ftp-hero__grid { grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr); } }
.ftp-hero__art { justify-self: center; width: min(78vw, 340px); }
@media (max-width: 899px) { .ftp-hero__art { order: -1; width: min(62vw, 240px); } }
.ftp-motif { display: block; width: 100%; height: auto; filter: drop-shadow(0 18px 40px rgba(0, 0, 0, 0.45)); }
.ftp-crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 16px; padding: 0; font-size: 0.9rem; }
.ftp-crumbs li + li::before { content: "›"; margin-right: 6px; }
.ftp-hero .ftp-crumbs, .ftp-hero .ftp-crumbs a { color: #FCFBF7; }
.ftp-eyebrow { margin: 0 0 8px; font: 700 0.8rem/1.4 var(--sans, system-ui); letter-spacing: 0.16em; text-transform: uppercase; color: var(--t-accent-ink, #FCD34D); }
.ftp-title { margin: 0.1em 0 0.35em; font-family: var(--serif, Georgia, serif); font-weight: 600; font-size: clamp(2.2rem, 1.5rem + 3.6vw, 4.4rem); line-height: 1.04; color: #FCFBF7; overflow-wrap: break-word; }
.ftp-title span { display: block; color: var(--t-accent-ink, #FCD34D); }
.ftp-lead { max-width: 60ch; margin: 0 0 14px; font-size: clamp(1.04rem, 1rem + 0.35vw, 1.25rem); line-height: 1.6; color: #FCFBF7; }
.ftp-hero .gloss__en { color: #FCFBF7; }
.ftp-status { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 4px 0 0; padding: 8px 14px; border-radius: 999px; font-size: 0.92rem;
  background: rgba(13, 11, 9, 0.45); border: 1px solid color-mix(in srgb, var(--t-accent-ink, #FCD34D) 55%, transparent); color: #FCFBF7; }
.ftp-status__dot { width: 9px; height: 9px; border-radius: 50%; background: #94A3B8; }
.ftp-status--live .ftp-status__dot { background: #4ADE80; box-shadow: 0 0 0 4px rgba(74, 222, 128, 0.25); }
.ftp-status--upcoming .ftp-status__dot { background: var(--t-accent-ink, #FCD34D); }
.ftp-status__tbc { font-style: italic; }
.ftp-go { display: flex; flex-wrap: wrap; gap: 10px; margin: 22px 0 0; }

/* ---------- buttons, chips, cards ---------- */
.ftp-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 10px 20px; box-sizing: border-box;
  border-radius: 999px; border: 1px solid currentColor; background: transparent; color: inherit; font: 600 1rem/1.2 var(--sans, system-ui);
  text-decoration: none; cursor: pointer; text-align: center; }
.ftp-hero .ftp-btn, .ftp-sec--band .ftp-btn { border-color: var(--t-accent-ink, #FCD34D); color: #FCFBF7; background: rgba(13, 11, 9, 0.35); }
.ftp-sec:not(.ftp-sec--band) .ftp-btn { color: var(--p-link); }
.ftp .ftp-btn--gold, .ftp-sec:not(.ftp-sec--band) .ftp-btn--gold { background: linear-gradient(135deg, #FFE7A3, #F2B54C 50%, #E0A23A); color: #2A0612; border-color: transparent;
  box-shadow: 0 10px 26px -14px rgba(217, 119, 6, 0.9); }
.ftp-btn--lg { min-height: 56px; padding-inline: 26px; font-size: 1.06rem; }
.ftp .ftp-btn--wa { border-color: #25D366; }
.ftp-btn[disabled] { opacity: 0.55; cursor: not-allowed; }
.ftp-card { padding: clamp(18px, 2.4vw, 28px); border-radius: 20px; background: var(--p-card); border: 1px solid var(--p-line); box-shadow: 0 18px 40px -30px rgba(42, 6, 18, 0.5); }
.ftp-chips { border: 0; margin: 0 0 14px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; min-width: 0; }
.ftp-chips legend { font-weight: 700; margin-bottom: 8px; padding: 0; }
.ftp-chip { position: relative; display: inline-flex; max-width: 100%; }
.ftp-chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.ftp-chip span { display: inline-flex; align-items: center; min-height: 44px; padding: 8px 16px; box-sizing: border-box; border-radius: 999px; background: var(--p-chip);
  border: 1px solid var(--p-line); line-height: 1.3; overflow-wrap: anywhere; }
.ftp-chip input:checked + span { background: var(--p-chip-on); color: var(--p-chip-on-ink); border-color: transparent; }
.ftp-chip input:focus-visible + span { outline: 3px solid #D97706; outline-offset: 2px; }
.ftp label:not(.ftp-chip):not(.chant__tempo):not(.chant__snd):not(.ftp-tp__speed):not(.ftp-tp__pick) { display: block; font-weight: 600; margin: 0 0 6px; }
.ftp input[type="text"], .ftp input:not([type]), .ftp select { width: 100%; max-width: 32rem; min-height: 48px; box-sizing: border-box; margin: 0 0 14px; padding: 10px 14px;
  border-radius: 12px; border: 1px solid var(--p-line); background: var(--p-bg); color: var(--p-ink); font: inherit; }
.ftp-sec--band input:not([type]), .ftp-sec--band select { background: rgba(13, 11, 9, 0.5); color: #FCFBF7; border-color: color-mix(in srgb, var(--t-accent-ink, #FCD34D) 50%, transparent); }

/* ---------- sections ---------- */
.ftp-sec { padding: clamp(44px, 6vw, 84px) 0; }
.ftp-sec + .ftp-sec:not(.ftp-sec--band) { border-top: 1px solid var(--p-line); }
.ftp-sec h2 { margin: 0 0 0.45em; font-family: var(--serif, Georgia, serif); font-weight: 600; font-size: clamp(1.75rem, 1.35rem + 1.5vw, 2.6rem); line-height: 1.12; color: var(--p-head); }
.ftp-eyebrow2 { margin: 0 0 6px; font: 700 0.78rem/1.4 var(--sans, system-ui); letter-spacing: 0.16em; text-transform: uppercase; color: var(--p-link); }
.ftp-sec--band { color: #FCFBF7; background: linear-gradient(165deg, var(--t-bg, #3A0815), var(--t-bg2, #0D0B09)); }
.ftp-sec--band h2, .ftp-sec--band .ftp-sub, .ftp-sec--band .ftp-note { color: #FCFBF7; }
.ftp-sec--band .ftp-eyebrow2 { color: var(--t-accent-ink, #FCD34D); }
.ftp-sec--band .ftp-card { background: rgba(13, 11, 9, 0.55); border-color: color-mix(in srgb, var(--t-accent-ink, #FCD34D) 35%, transparent); color: #FCFBF7; }
.ftp-meaning__grid { display: grid; gap: clamp(20px, 3vw, 44px); }
@media (min-width: 960px) { .ftp-meaning__grid { grid-template-columns: minmax(0, 1.4fr) minmax(0, 0.8fr); align-items: start; } }
.ftp-meaning p { max-width: 66ch; font-size: 1.06rem; line-height: 1.75; }
.ftp-observe h3 { margin: 0 0 10px; font-family: var(--serif, Georgia, serif); font-size: 1.4rem; color: var(--p-head); }
.ftp-observe ul { margin: 0 0 12px; padding-left: 1.2em; line-height: 1.6; }
.ftp-observe li + li { margin-top: 6px; }

/* ---------- card maker ---------- */
.ftp-cardmaker { display: grid; gap: clamp(20px, 3vw, 40px); }
@media (min-width: 960px) { .ftp-cardmaker { grid-template-columns: minmax(0, 1fr) minmax(0, 0.8fr); align-items: start; } }
.cm__stage canvas { display: block; width: 100%; max-width: 440px; height: auto; aspect-ratio: 1080 / 1350; margin-inline: auto; border-radius: 18px; background: linear-gradient(160deg, var(--t-bg, #3A0815), var(--t-bg2, #0D0B09)); box-shadow: 0 24px 50px -28px rgba(0, 0, 0, 0.7); }
.cm__actions { display: flex; flex-wrap: wrap; gap: 10px; }
.cm__actions[hidden], [data-cm-share][hidden] { display: none; }

/* ---------- Diwali: the sangat map ---------- */
.dm { display: grid; gap: clamp(16px, 2.5vw, 32px); }
@media (min-width: 1000px) { .dm { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); align-items: start; } }
.dm__map { position: relative; border-radius: 20px; overflow: hidden; background: radial-gradient(120% 90% at 50% 0%, #1F2A44, #0B1020 60%, #05070E); border: 1px solid rgba(245, 158, 11, 0.35); }
.dm__map svg { display: block; width: 100%; height: auto; }
.dm__map .dm-centre { fill: #FDE68A; }
.dm__map .dm-label { fill: #FCFBF7; font: 600 13px/1 var(--sans, system-ui); paint-order: stroke; stroke: #05070E; stroke-width: 3px; }
.dm__lit { transform-box: fill-box; transform-origin: 50% 100%; }
@media (prefers-reduced-motion: no-preference) {
  .dm__lit .dm-flame { transform-box: fill-box; transform-origin: 50% 100%; animation: ftp-flick 2.2s ease-in-out infinite; }
  .dm__new { animation: ftp-pop 0.9s cubic-bezier(.2, .9, .3, 1.3) both; }
}
@keyframes ftp-flick { 0%, 100% { transform: scale(1); } 40% { transform: scale(0.9, 1.1); } 70% { transform: scale(1.05, 0.95); } }
@keyframes ftp-pop { from { opacity: 0; transform: scale(0.4); } to { opacity: 1; transform: none; } }

/* ---------- countdown ---------- */
.ftp-cd { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; max-width: 40rem; margin: 10px 0 12px; }
.ftp-cd > div { padding: 14px 4px; border-radius: 16px; text-align: center; background: rgba(13, 11, 9, 0.5); border: 1px solid color-mix(in srgb, var(--t-accent-ink, #FCD34D) 45%, transparent); }
.ftp-cd span { display: block; font: 700 clamp(1.6rem, 1.2rem + 2vw, 2.8rem)/1.1 var(--sans, system-ui); font-variant-numeric: tabular-nums; color: #FCFBF7; }
.ftp-cd small { font-size: 0.78rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--t-accent-ink, #FCD34D); }

/* ---------- Dussehra: the ten heads ---------- */
.ego__progress { font-weight: 700; color: var(--p-head); }
.ego { list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); }
.ego__head { position: relative; display: flex; flex-direction: column; gap: 6px; height: 100%; box-sizing: border-box; padding: 16px; border-radius: 18px; background: var(--p-card); border: 1px solid var(--p-line); }
.ego__n { font: 700 0.75rem var(--sans, system-ui); letter-spacing: 0.14em; text-transform: uppercase; color: var(--p-link); }
.ego__name { margin: 0; font-family: var(--serif, Georgia, serif); font-size: 1.35rem; color: var(--p-head); }
.ego__name small { display: block; font-family: var(--sans, system-ui); font-size: 0.85rem; color: var(--p-muted); }
.ego__head p { margin: 0; line-height: 1.55; }
.ego__practice { font-size: 0.92rem; color: var(--p-muted); }
.ego__head .ftp-btn { margin-top: auto; align-self: flex-start; min-height: 44px; padding: 8px 16px; font-size: 0.92rem; }
.ego__head.is-offered { background: linear-gradient(160deg, var(--t-bg, #3A0815), var(--t-bg2, #0D0B09)); color: #FCFBF7; border-color: transparent; }
.ego__head.is-offered .ego__name, .ego__head.is-offered .ego__n, .ego__head.is-offered .ego__practice, .ego__head.is-offered .ego__name small { color: #FCFBF7; }
.ego__head.is-offered .ftp-btn { color: #FCFBF7; border-color: var(--t-accent-ink, #FCD34D); }
@media (prefers-reduced-motion: no-preference) { .ego__head.is-burning { animation: ftp-burn 0.9s ease-out; } }
@keyframes ftp-burn { 0% { transform: scale(1); } 40% { transform: scale(0.96) rotate(-1deg); filter: brightness(1.4); } 100% { transform: none; } }

/* ---------- Lohri: the fire ---------- */
.fire { display: grid; gap: clamp(16px, 3vw, 40px); align-items: center; }
@media (min-width: 900px) { .fire { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); } }
.fire__stage { position: relative; width: min(80vw, 360px); justify-self: center; }
.fire__art { display: block; width: 100%; height: auto; }
.fire__seeds { position: absolute; inset: 0; pointer-events: none; }
.fire__seed { position: absolute; left: 50%; top: 4%; width: 7px; height: 9px; border-radius: 50% 50% 45% 45%; background: #FEF3C7; }
.fire__seed--gur { background: #B45309; width: 9px; height: 8px; border-radius: 3px; }
@media (prefers-reduced-motion: no-preference) { .fire__seed { animation: ftp-toss 1.3s cubic-bezier(.3, .1, .5, 1) forwards; } }
@media (prefers-reduced-motion: reduce) { .fire__seed { display: none; } }
@keyframes ftp-toss { 0% { transform: translate(var(--x0, 0), 0); opacity: 1; } 70% { opacity: 1; } 100% { transform: translate(var(--x1, 0), 170px) scale(0.4); opacity: 0; } }

/* ---------- Holi: the inner colours ---------- */
.rang { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr)); margin-bottom: 16px; }
.rang__btn { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; min-height: 96px; padding: 14px; box-sizing: border-box; border-radius: 18px; border: 2px solid var(--p-line);
  background: var(--p-card); color: var(--p-ink); font: inherit; text-align: left; cursor: pointer; }
.rang__btn[aria-checked="true"] { border-color: var(--p-head); box-shadow: 0 0 0 3px color-mix(in srgb, var(--p-head) 25%, transparent); }
.rang__sw { width: 44px; height: 44px; border-radius: 50%; box-shadow: inset 0 -6px 10px rgba(0, 0, 0, 0.2), 0 6px 14px -6px rgba(0, 0, 0, 0.5); }
.rang__btn strong { font-size: 1rem; } .rang__btn small { color: var(--p-muted); }
.rang__out h3 { margin: 0 0 8px; font-family: var(--serif, Georgia, serif); font-size: 1.6rem; color: var(--p-head); }
.rang__out p { margin: 0 0 10px; line-height: 1.65; }

/* ---------- Janmashtami: the makhan handis ---------- */
.mk { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); }
.mk__pot { display: flex; flex-direction: column; align-items: center; gap: 8px; width: 100%; min-height: 150px; padding: 14px; box-sizing: border-box; border-radius: 18px;
  border: 1px solid var(--p-line); background: var(--p-card); color: var(--p-ink); font: inherit; cursor: pointer; }
.mk__rope { width: 2px; height: 26px; background: #B45309; }
.mk__clay { width: 74px; height: 62px; border-radius: 46% 46% 40% 40% / 38% 38% 60% 60%; background: radial-gradient(circle at 35% 30%, #FDBA74, #C2410C 55%, #7C2D12); position: relative; }
.mk__clay::before { content: ""; position: absolute; left: 20px; right: 20px; top: -6px; height: 10px; border-radius: 6px; background: #FEF3C7; }
.mk__clay::after { content: ""; position: absolute; left: 6px; right: 6px; top: 24px; height: 6px; background: repeating-linear-gradient(90deg, #FDE68A 0 6px, transparent 6px 10px); opacity: 0.8; }
.mk__pot strong { font-size: 0.98rem; }
.mk__text { margin: 0; text-align: left; line-height: 1.6; }
.mk__item.is-open .mk__pot { cursor: default; background: linear-gradient(160deg, var(--t-bg, #0B1530), var(--t-bg2, #0D0B09)); color: #FCFBF7; border-color: transparent; }
.mk__item.is-open .mk__clay { background: radial-gradient(circle at 50% 30%, #FFFBEB, #FDE68A 60%, #F59E0B); }
@media (prefers-reduced-motion: no-preference) {
  .mk__clay { animation: ftp-sway 4s ease-in-out infinite; transform-origin: 50% -26px; }
  .mk__item.is-opening .mk__clay { animation: ftp-crack 0.6s ease-out; }
}
@keyframes ftp-sway { 0%, 100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } }
@keyframes ftp-crack { 0% { transform: scale(1); } 50% { transform: scale(1.15) rotate(6deg); } 100% { transform: scale(1); } }

/* ---------- Shivratri: prahars and the chant ---------- */
.pr { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr)); }
.pr__item { display: flex; flex-direction: column; gap: 8px; padding: 16px; border-radius: 18px; background: rgba(13, 11, 9, 0.5); border: 1px solid color-mix(in srgb, var(--t-accent-ink, #7DD3FC) 35%, transparent); }
.pr__item.is-now { border-color: var(--t-accent-ink, #7DD3FC); box-shadow: 0 0 0 3px color-mix(in srgb, var(--t-accent-ink, #7DD3FC) 30%, transparent); }
.pr__item h3 { margin: 0; font-family: var(--serif, Georgia, serif); font-size: 1.35rem; color: #FCFBF7; }
.pr__time { margin: 0; font-variant-numeric: tabular-nums; }
.pr__item label { display: flex !important; align-items: center; gap: 10px; min-height: 44px; font-weight: 600; cursor: pointer; }
.pr__item input[type="checkbox"] { width: 24px; height: 24px; accent-color: var(--t-accent, #38BDF8); }
.chant { display: grid; gap: clamp(16px, 3vw, 40px); align-items: center; }
@media (min-width: 900px) { .chant { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.chant__ctl { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.chant__tempo, .chant__snd { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-weight: 600; }
.chant__tempo input { width: 140px; accent-color: var(--p-head); }
.chant__snd input { width: 22px; height: 22px; }
.chant__count { font: 700 1.3rem var(--sans, system-ui); color: var(--p-head); font-variant-numeric: tabular-nums; }
.chant__syl { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 12px; margin: 0; padding: clamp(18px, 3vw, 32px); border-radius: 24px;
  background: linear-gradient(160deg, var(--t-bg, #0A0F1D), var(--t-bg2, #05070E)); font-family: var(--serif, Georgia, serif); font-size: clamp(2rem, 1.4rem + 3vw, 3.6rem); color: rgba(252, 251, 247, 0.55); }
.chant__syl span.is-on { color: #FCFBF7; text-shadow: 0 0 22px var(--t-accent-ink, #7DD3FC); }

/* ---------- prompter ---------- */
.ftp-tp { border-radius: 22px; overflow: hidden; border: 1px solid var(--p-line); background: #0D0B09; color: #FCFBF7; }
.ftp-tp__bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 10px; background: #161311; border-bottom: 1px solid rgba(217, 119, 6, 0.3); }
.ftp-tp__pick select { min-height: 44px; margin: 0; max-width: 100%; background: #0D0B09; color: #FCFBF7; border: 1px solid rgba(217, 119, 6, 0.45); border-radius: 10px; padding: 6px 10px; font: inherit; }
.ftp-tp__btn { min-height: 44px; min-width: 44px; padding: 6px 12px; border-radius: 10px; border: 1px solid rgba(217, 119, 6, 0.55); background: transparent; color: #FCFBF7; font: 600 0.95rem var(--sans, system-ui); cursor: pointer; }
.ftp-tp__btn[aria-pressed="true"] { background: #F2C14E; color: #1A0F0E; }
.ftp-tp__speed { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; color: #FCFBF7; font-weight: 600; }
.ftp-tp__screen { --tp-size: 1.9rem; max-height: min(64vh, 560px); overflow-y: auto; padding: clamp(18px, 3vw, 40px); scroll-behavior: auto; overscroll-behavior: contain; }
.ftp-tp__screen:fullscreen { max-height: none; height: 100vh; background: #0D0B09; }
.ftp-tp__text h3 { margin: 0 0 4px; font-family: var(--serif, Georgia, serif); font-size: 1.6rem; color: #F7D58A; }
.ftp-tp__src { margin: 0 0 20px; color: #D9CBBD; font-size: 0.9rem; }
.ftp-tp__src a { color: #FCD34D; }
.ftp-tp__line { display: flex; flex-direction: column; gap: 4px; margin: 0 0 1.1em; }
.ftp-tp__deva { font-family: var(--deva, serif); font-size: var(--tp-size); line-height: 1.5; color: #FCFBF7; }
.ftp-tp__roman { font-size: calc(var(--tp-size) * 0.58); color: #F7D58A; font-style: italic; }
.ftp-tp__mean { font-size: calc(var(--tp-size) * 0.48); color: #D9CBBD; }
.ftp-tp.is-noroman .ftp-tp__roman { display: none; }
.ftp-tp__empty { max-width: 46rem; }

/* ---------- Kumbh: Maanas Snan ---------- */
.snan { display: grid; gap: clamp(18px, 3vw, 40px); align-items: center; }
@media (min-width: 900px) { .snan { grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr); } }
.snan__ring { position: relative; justify-self: center; width: min(62vw, 260px); aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(circle, rgba(224, 242, 254, 0.35), rgba(29, 78, 216, 0.25) 55%, transparent 72%); border: 1px solid color-mix(in srgb, var(--t-accent-ink, #FCD34D) 50%, transparent); }
.snan__ring span { position: absolute; inset: 22%; border-radius: 50%; background: radial-gradient(circle at 40% 35%, #FFFBEB, #FCD34D 45%, #F97316 80%); opacity: 0.9; }
@media (prefers-reduced-motion: no-preference) { .snan.is-on .snan__ring span { animation: ftp-breathe 10s ease-in-out infinite; } }
@keyframes ftp-breathe { 0%, 100% { transform: scale(0.7); } 40% { transform: scale(1.1); } 50% { transform: scale(1.1); } }
.snan__step { min-height: 5.2em; font-size: clamp(1.08rem, 1rem + 0.4vw, 1.3rem); line-height: 1.6; }
.snan__meta { font-variant-numeric: tabular-nums; }
.snan__ctl { display: flex; flex-wrap: wrap; gap: 10px; }

/* ---------- New Year: the year in sadhna ---------- */
.yr__tiles { list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 180px), 1fr)); }
.yr__tiles li { padding: 18px; border-radius: 18px; background: var(--p-card); border: 1px solid var(--p-line); }
.yr__tiles strong { display: block; font: 700 2rem/1.1 var(--sans, system-ui); color: var(--p-head); font-variant-numeric: tabular-nums; }
.yr__list { padding-left: 1.2em; line-height: 1.7; }

/* ---------- programs, more festivals, the switch ---------- */
.ftp-programs { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); }
.ftp-programs h3 { margin: 4px 0; font-size: 1.15rem; }
.ftp-links { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 28px; }
.ftp-others { list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); }
.ftp-other { display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 10px 14px; border-radius: 16px; background: var(--p-card); border: 1px solid var(--p-line); color: var(--p-ink); text-decoration: none; }
.ftp-other img { flex: none; width: 56px; height: 56px; }
.ftp-other strong { display: block; color: var(--p-head); }
.ftp-other small { color: var(--p-muted); }
.ftp-other:hover strong { text-decoration: underline; }
.ftp-pref { margin-top: 28px; padding-top: 20px; border-top: 1px solid var(--p-line); }
.ftp-pref p { max-width: 62ch; color: var(--p-muted); }

/* ---------- /festivals ---------- */
.fi-grid { list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.fi-card__link { display: flex; gap: 14px; align-items: center; height: 100%; box-sizing: border-box; padding: 14px; border-radius: 20px; text-decoration: none; color: #FCFBF7;
  background: linear-gradient(150deg, var(--t-bg), var(--t-bg2)); border: 1px solid color-mix(in srgb, var(--t-accent-ink) 30%, transparent); }
.fi-card__link img { flex: none; width: 96px; height: 96px; }
.fi-card__body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.fi-card__status { font: 700 0.72rem/1.3 var(--sans, system-ui); letter-spacing: 0.14em; text-transform: uppercase; color: var(--t-accent-ink); }
.fi-card__name { font-family: var(--serif, Georgia, serif); font-size: 1.3rem; line-height: 1.15; }
.fi-card__when, .fi-card__h { font-size: 0.9rem; line-height: 1.4; }
.fi-card--live .fi-card__link { box-shadow: 0 0 0 3px var(--t-accent-ink); }
.fi-card__link:hover .fi-card__name { text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 420px) { .fi-card__link img { width: 72px; height: 72px; } }
@media print { .ftp-hero, .ftp-sec--band { background: none !important; color: #000; } .ftp-hero * , .ftp-sec--band * { color: #000 !important; } }
@media (forced-colors: active) { .ftp-chip input:checked + span { outline: 2px solid Highlight; } }

/* v1.5.0: the hero art as a 3D prop (figure.model-stage, assets/js/model-stage.js); the motif inside is its fallback and
   keeps the figure's square box, so nothing shifts when the model fades in. */
.ftp-model { position: relative; margin: 0; border-radius: 28px; }
.ftp-model .model-stage__canvas { filter: drop-shadow(0 18px 40px rgba(0, 0, 0, .45)); }
.ftp-model .model-stage__canvas:focus-visible { outline: 2px solid var(--t-accent-ink, #FCD34D); outline-offset: 4px; }
