/* Liturgical season themes (Vinci's design package, 2026-10-06).
   GENERATED by scripts/seasons/build_theme.py from this template and
   scripts/seasons/palettes.py -- edit those, not assets/css/seasons.css.

   assets/js/seasons.js sets html[data-season="advent|christmas|ordinary1|lent|
   triduum|easter|ordinary2"] from content/seasons/seasons.json. Every rule here
   is scoped to html[data-season], so without a season the site keeps its usual
   cream look. Always light, on every device (Savio, 2026-10-07): no dark styles.
   Colours only: no text on any page is changed. */

:root[data-season="advent"] {
  --bg: #FAF6EE;
  --surface: #FFFCF7;
  --ink: #1C1914;
  --soft: #5C5346;
  --accent: #4B2E83;
  --edge: #D4C4A0;
  --btn-bg: #7A1F2B;
  --btn-ink: #FFFFFF;
  --banner-bg: #3B2A74;
  --banner-ink: #F4F0FF;
  --glow: rgba(0,0,0,0);
  --d-leaf1: #4C8A58;
  --d-leaf2: #2F6240;
  --d-candle: #6A44B5;
  --d-candle-rose: #D07BA0;
  --d-stem: #2F6240;
  --shadow: rgba(40,30,20,0.12);
  --edge-soft: var(--edge);
}

:root[data-season="christmas"] {
  --bg: #FAF6EE;
  --surface: #FFFCF7;
  --ink: #1C1914;
  --soft: #5C5346;
  --accent: #1F5A3C;
  --edge: #D4C4A0;
  --btn-bg: #7A1F2B;
  --btn-ink: #FFFFFF;
  --banner-bg: #1F4A34;
  --banner-ink: #FFF4D6;
  --glow: rgba(0,0,0,0);
  --hero-ground: #FFFFFF;
  --d-hill-far: #DDE9E0;
  --d-pine: #2D6A47;
  --d-star: #D9A62E;
  --wire: #6B5A3A;
  --lights-glow: rgba(255,190,90,0.30);
  --flake-fill: #FFFFFF;
  --flake-edge: rgba(60,95,80,0.45);
  --shadow: rgba(40,30,20,0.12);
  --edge-soft: var(--edge);
}

:root[data-season="ordinary1"] {
  --bg: #FAF6EE;
  --surface: #FFFCF7;
  --ink: #1C1914;
  --soft: #5C5346;
  --accent: #2D6A3E;
  --edge: #D4C4A0;
  --btn-bg: #7A1F2B;
  --btn-ink: #FFFFFF;
  --banner-bg: #2D6A3E;
  --banner-ink: #F3FAF0;
  --glow: rgba(0,0,0,0);
  --d-leaf1: #5FA06C;
  --d-leaf2: #3F7F50;
  --d-stem: #3F7F50;
  --shadow: rgba(40,30,20,0.12);
  --edge-soft: var(--edge);
}

:root[data-season="ordinary2"] {
  --bg: #FAF6EE;
  --surface: #FFFCF7;
  --ink: #1C1914;
  --soft: #5C5346;
  --accent: #2D6A3E;
  --edge: #D4C4A0;
  --btn-bg: #7A1F2B;
  --btn-ink: #FFFFFF;
  --banner-bg: #2D6A3E;
  --banner-ink: #F3FAF0;
  --glow: rgba(0,0,0,0);
  --d-leaf1: #5FA06C;
  --d-leaf2: #3F7F50;
  --d-stem: #3F7F50;
  --shadow: rgba(40,30,20,0.12);
  --edge-soft: var(--edge);
}

:root[data-season="lent"] {
  --bg: #FAF6EE;
  --surface: #FFFCF7;
  --ink: #1C1914;
  --soft: #5C5346;
  --accent: #5C4870;
  --edge: #D4C4A0;
  --btn-bg: #7A1F2B;
  --btn-ink: #FFFFFF;
  --banner-bg: #5C4870;
  --banner-ink: #F8F5FB;
  --glow: rgba(0,0,0,0);
  --shadow: rgba(40,30,20,0.12);
  --edge-soft: var(--edge);
}

:root[data-season="triduum"] {
  --bg: #FAF6EE;
  --surface: #FFFCF7;
  --ink: #1C1914;
  --soft: #5C5346;
  --accent: #7A1F24;
  --edge: #D4C4A0;
  --btn-bg: #7A1F2B;
  --btn-ink: #FFFFFF;
  --banner-bg: #6B1A1F;
  --banner-ink: #FFF4F2;
  --glow: rgba(0,0,0,0);
  --shadow: rgba(40,30,20,0.12);
  --edge-soft: var(--edge);
}

:root[data-season="easter"] {
  --bg: #FAF6EE;
  --surface: #FFFCF7;
  --ink: #1C1914;
  --soft: #5C5346;
  --accent: #7D5A0E;
  --edge: #D4C4A0;
  --btn-bg: #7A1F2B;
  --btn-ink: #FFFFFF;
  --banner-bg: #F3D77A;
  --banner-ink: #33260A;
  --glow: rgba(0,0,0,0);
  --d-ray: rgba(236,196,84,0.28);
  --d-petal: #FFFFFF;
  --d-petal-edge: #B8902F;
  --d-lily-leaf: #8DB38A;
  --d-stem: #7FA37C;
  --shadow: rgba(40,30,20,0.12);
  --edge-soft: var(--edge);
}

/* ---- shared helpers (not season colours) ---- */
:root[data-season]{
  color-scheme:light;
  --sr-tint: color-mix(in srgb, var(--accent) 8%, var(--surface));
  --sr-tint-strong: color-mix(in srgb, var(--accent) 15%, var(--surface));
  --sr-line: color-mix(in srgb, var(--edge) 45%, var(--surface));
  --sr-good:#2F5E37; --sr-bad:#8A3A24; --sr-red:#A12A24;
  --parchment-line: var(--sr-line);
  --gold: var(--accent);
  --gold-deep: var(--accent);
}

/* the hero photo stays as it is in every season (Savio, 2026-10-07) */
/* the Rosary page: always cream, only the banner shows the season */
html.rz-page[data-season]{ color-scheme:light; }
html.rz-page .sr-hero, html.rz-page .sr-lights, html.rz-page #srSnow{ display:none !important; }

/* ---- page: season background and glow (no glow in Lent and the Triduum) ---- */
html[data-season] body{
  color:var(--ink);
  background:var(--bg);
  background-image:radial-gradient(ellipse 900px 460px at 50% -40px, var(--glow) 0%, transparent 78%);
  background-repeat:no-repeat;
  padding-top:0;
}
html[data-season] body::before, html[data-season] .orb{ display:none; }

/* ---- sticky header, 44px menu button top-right (full-bleed bar) ---- */
html[data-season] .site-head{
  position:sticky; top:0; z-index:30;
  margin:0; padding:calc(7px + env(safe-area-inset-top)) 0 7px;
  background:var(--surface);
  box-shadow:0 0 0 100vmax var(--surface), 0 1px 0 100vmax var(--edge-soft);
  clip-path:inset(0 -100vmax -1px -100vmax);
}
html[data-season] .site-name{ color:var(--ink); }
html[data-season] .site-date{ color:var(--soft); }
html[data-season] .menu-btn{ background:var(--surface); border:1.5px solid var(--edge); box-shadow:none; }
html[data-season] .menu-btn span{ background:var(--ink); }
html[data-season] .menu-panel{ background:var(--surface); }
html[data-season] .menu-close{ color:var(--soft); }
html[data-season] .menu-item{ color:var(--ink); }
html[data-season] .menu-item-btn{ color:var(--accent); }
html[data-season] .menu-item:hover,
html[data-season] .menu-item.active,
html[data-season] .menu-item[aria-current="page"]{ background:var(--sr-tint-strong); color:var(--ink); }
html[data-season] :focus-visible,
html[data-season] .menu-btn:focus-visible,
html[data-season] .menu-close:focus-visible,
html[data-season] .menu-item:focus-visible,
html[data-season] a.ghost:focus-visible{ outline:3px solid var(--accent); outline-offset:2px; }

/* ---- Christmas string lights, above the header ---- */
.sr-lights{ display:none; }
html[data-season="christmas"] .sr-lights{
  display:block; position:relative; height:34px;
  background:var(--surface); box-shadow:0 0 0 100vmax var(--surface); clip-path:inset(0 -100vmax);
}
.sr-lights .lights{ width:100%; height:34px; display:block; overflow:visible; }
.sr-lights .wire{ stroke:var(--wire); stroke-width:1.6; }
.sr-lights .cap{ fill:var(--wire); }
.sr-lights .bu{ fill:var(--bulb); }
.sr-lights .b1{ --bulb:#F2B84B; } .sr-lights .b2{ --bulb:#E8794B; } .sr-lights .b3{ --bulb:#F7DD92; } .sr-lights .b4{ --bulb:#8CC79A; }
.sr-lights .halo{ fill:var(--bulb); opacity:.5; filter:blur(3px); animation:sr-twinkle 5s ease-in-out infinite; }
.sr-lights .t1 .halo{ animation-delay:-1.7s; animation-duration:6s; }
.sr-lights .t2 .halo{ animation-delay:-3.2s; animation-duration:7s; }
@keyframes sr-twinkle{ 0%,100%{ opacity:.35; } 50%{ opacity:.75; } }

/* ---- thin season banner ---- */
.sr-banner{ display:none; }
html[data-season] .sr-banner{
  display:flex; align-items:center; justify-content:center; gap:8px;
  min-height:40px; padding:4px 0; margin:0;
  background:var(--banner-bg); color:var(--banner-ink);
  box-shadow:0 0 0 100vmax var(--banner-bg); clip-path:inset(0 -100vmax);
  font-family:'Fraunces', Georgia, serif; font-weight:600; font-size:18px; line-height:1.2;
}
/* the page starts below the strip with the same space it had below the header */
html[data-season] .sr-banner.sr-banner-gap{ margin-bottom:28px; }
.sr-glyph{ width:20px; height:20px; flex:none; display:block; }
.sr-glyph svg{ width:100%; height:100%; display:block; }

/* ---- hero art (none in Lent and the Triduum) ---- */
.sr-hero{ display:none; }
html[data-season] .sr-hero{ display:block; text-align:center; margin:0 0 24px; }
html[data-season="lent"] .sr-hero, html[data-season="triduum"] .sr-hero{ margin-bottom:28px; }
.sr-hero-art{ height:150px; width:100%; max-width:560px; margin:0 auto; padding-top:10px; }
.sr-hero-art .art{ width:100%; height:100%; display:block; }
html[data-season="christmas"] .sr-hero{
  background:var(--hero-ground); box-shadow:0 0 0 100vmax var(--hero-ground); clip-path:inset(0 -100vmax);
  padding-bottom:14px;
}
html[data-season="christmas"] .sr-hero-art{ max-width:none; padding-top:0; height:130px; overflow:visible; }
@media (min-width:700px){
  .sr-hero-art{ height:190px; }
  html[data-season="christmas"] .sr-hero-art{ height:160px; }
}
.sr-snow-row{ display:none; }
html[data-season="christmas"] .sr-snow-row{ display:block; margin-top:6px; }
#srSnowBtn[data-paused="true"] .sr-when-playing, #srSnowBtn[data-paused="false"] .sr-when-paused{ display:none; }
#srSnow{ display:none; }
html[data-season="christmas"] #srSnow{ display:block; position:fixed; inset:0; width:100%; height:100%; z-index:2; pointer-events:none; }

/* art colours (decoration only) */
.art .wl1{ fill:var(--d-leaf1); } .art .wl2{ fill:var(--d-leaf2); }
.art .cv{ fill:var(--d-candle); } .art .cr{ fill:var(--d-candle-rose); } .art .cw{ fill:#fff; opacity:.28; } .art .wick{ stroke:#3a2f26; stroke-width:1.4; }
.art .fl{ fill:#F3B53F; } .art .glow{ fill:#FFD27A; opacity:.35; }
.art .flame{ animation:sr-flicker 3.4s ease-in-out infinite; }
.art .flame:nth-of-type(2){ animation-delay:-1.3s; }
@keyframes sr-flicker{ 0%,100%{ transform:scale(1,1); } 50%{ transform:scale(.94,1.06); } }
.art .hill-far{ fill:var(--d-hill-far); } .art .hill-near{ fill:var(--hero-ground); } .art .pine{ fill:var(--d-pine); } .art .star{ fill:var(--d-star); }
.art .stem{ stroke:var(--d-stem); stroke-width:2.4; stroke-linecap:round; }
.art .sl1{ fill:var(--d-leaf1); } .art .sl2{ fill:var(--d-leaf2); } .art .faint{ opacity:.45; }
.art .ray{ fill:var(--d-ray); }
.art .pet{ fill:var(--d-petal); stroke:var(--d-petal-edge); stroke-width:1.6; stroke-linejoin:round; }
.art .lf{ fill:var(--d-lily-leaf); } .art .sta{ stroke:var(--d-petal-edge); stroke-width:1.4; stroke-linecap:round; } .art .stc{ fill:var(--d-petal-edge); }
html.sr-snow-paused .sr-lights .halo, html.sr-snow-paused .art .flame{ animation-play-state:paused; }
@media (prefers-reduced-motion: reduce){
  .sr-lights .halo, .art .flame{ animation:none; }
}

/* ---- surfaces: cards, strips, panels, fields ---- */
html[data-season] .card,
html[data-season] .reading-strip,
html[data-season] .path-card,
html[data-season] .thought,
html[data-season] .article-item,
html[data-season] .ask-topic,
html[data-season] .nv-card{
  background:var(--surface); border:1.5px solid var(--edge); box-shadow:0 6px 20px var(--shadow);
}
html[data-season] .ask-topic.unverified{ border-style:dashed; }
html[data-season] .reading-chip,
html[data-season] .reading-expand,
html[data-season] .ask-trusted,
html[data-season] .ask-none,
html[data-season] .gp-day-link,
html[data-season] .page-btn,
html[data-season] .ask-example,
html[data-season] .ask-debug pre,
html[data-season] .ask-feedback,
html[data-season] .ask-feedback-btn,
html[data-season] .nv-edition,
html[data-season] .nv-lang,
html[data-season] .nv-day,
html[data-season] .nv-dayd,
html[data-season] .opt,
html[data-season] textarea,
html[data-season] input[type=text],
html[data-season] input[type=email],
html[data-season] .dev-banner{
  background:var(--surface); border-color:var(--edge); color:var(--ink);
}
html[data-season] .review-queue{ background:var(--surface); }
html[data-season] .prayer-block,
html[data-season] .audio-player{ background:var(--sr-tint); border-color:var(--sr-line); }
html[data-season] .reading-chip[aria-expanded="true"],
html[data-season] .page-btn.active{ background:var(--sr-tint-strong); border-color:var(--accent); color:var(--ink); }
html[data-season] .nv-daybar{
  top:var(--sr-head-h, 0px);
  background:color-mix(in srgb, var(--surface) 96%, transparent); border-bottom-color:var(--sr-line);
}
html[data-season] .nv-h{ scroll-margin-top:calc(var(--sr-head-h, 0px) + 70px); }
html[data-season] .nv-dayd{ scroll-margin-top:calc(var(--sr-head-h, 0px) + 12px); }
html[data-season] .authors-figure img{ box-shadow:0 6px 20px var(--shadow); border-color:var(--edge); }

/* quiz answers */
html[data-season] .opt:hover{ border-color:var(--accent); }
html[data-season] .opt.correct{ background:color-mix(in srgb, #6B8F71 24%, var(--surface)); border-color:#6B8F71; color:var(--ink); }
html[data-season] .opt.wrong{ background:color-mix(in srgb, #A6543C 20%, var(--surface)); border-color:#A6543C; color:var(--ink); }
html[data-season] .feedback.good{ color:var(--sr-good); }
html[data-season] .feedback.bad{ color:var(--sr-bad); }
html[data-season] .nv-red{ color:var(--sr-red); }

/* ---- buttons: primary takes the season colour; ghost buttons stay cream ---- */
html[data-season] button.primary,
html[data-season] .ask-private-btn,
html[data-season] .nv-pray:not(.nv-pray-small),
html[data-season] .nv-today,
html[data-season] .nv-lang.active,
html[data-season] .nv-day.active{
  background:var(--btn-bg); border-color:var(--btn-bg); color:var(--btn-ink);
}
html[data-season] button.primary{ box-shadow:0 6px 16px var(--shadow); }
html[data-season] .ghost,
html[data-season] a.ghost,
html[data-season] a.ghost:visited,
html[data-season] button.ghost{ background:#FFFEF9; border:1px solid rgba(200,180,130,0.6); color:#5B5540; }
html[data-season] .nv-pray-small,
html[data-season] .nv-listen:not([aria-pressed="true"]){ background:#FFFEF9; border-color:#4A3D1F; color:#4A3D1F; }
html[data-season] .nv-listen[aria-pressed="true"]{ background:#4A3D1F; border-color:#4A3D1F; color:#FFFDF7; }

/* ---- text: main ink ---- */
html[data-season] .lede,
html[data-season] .chip-cite,
html[data-season] .path-card h3,
html[data-season] .gospel-title,
html[data-season] .gospel-text,
html[data-season] .reading-expand p,
html[data-season] .q-prompt,
html[data-season] .score-num,
html[data-season] .reflection-body,
html[data-season] .lessons-list,
html[data-season] .prose,
html[data-season] .prose strong,
html[data-season] .thought p,
html[data-season] .article-item h3,
html[data-season] .ask-section-title,
html[data-season] .ask-topic h3,
html[data-season] .consent-row,
html[data-season] .consent-row label,
html[data-season] .ask-sensitive-intro,
html[data-season] .authors-figure figcaption,
html[data-season] .authors-heading,
html[data-season] .nv-group-title,
html[data-season] .nv-card h3,
html[data-season] .nv-version,
html[data-season] .nv-shared,
html[data-season] .nv-front,
html[data-season] .nv-back,
html[data-season] .nv-h,
html[data-season] .nv-p.nv-label,
html[data-season] .nv-before,
html[data-season] .nv-days,
html[data-season] .nv-after,
html[data-season] .nv-today-any,
html[data-season] .nv-song-title,
html[data-season] .nv-daynum,
html[data-season] .coming-soon,
html[data-season] .ask-intro,
html[data-season] .ask-ed-line,
html[data-season] .ask-feedback-q,
html[data-season] .quiet-peace,
html[data-season] .prayer-block,
html[data-season] .card p[style]{ color:var(--ink); }

/* ---- text: softer lines (dates, labels, notes) ---- */
html[data-season] .lede-sub,
html[data-season] .reading-strip-date,
html[data-season] .reading-strip-haiku,
html[data-season] .chip-label,
html[data-season] .chip-caret,
html[data-season] .path-card p,
html[data-season] .peek-link,
html[data-season] .step-label,
html[data-season] .sample-note,
html[data-season] .q-count,
html[data-season] .score-line,
html[data-season] .signoff,
html[data-season] label,
html[data-season] .char-count,
html[data-season] .thought .who,
html[data-season] .thought .report,
html[data-season] .empty-state,
html[data-season] .loading,
html[data-season] .placeholder-note,
html[data-season] .article-count,
html[data-season] .article-date,
html[data-season] .page-btn,
html[data-season] .ask-examples,
html[data-season] .ask-example,
html[data-season] .ask-section-note,
html[data-season] .ask-topic-desc,
html[data-season] .ask-why,
html[data-season] .ask-debug,
html[data-season] .gp-passage-label,
html[data-season] .site-footer,
html[data-season] .nv-meta,
html[data-season] .nv-edition small,
html[data-season] .nv-edition-label,
html[data-season] .nv-daybar-label,
html[data-season] .nv-shared-label,
html[data-season] .nv-credit,
html[data-season] .nv-p.nv-cue,
html[data-season] .nv-ui,
html[data-season] .nv-today-note,
html[data-season] .nv-daytitle,
html[data-season] .reading-range,
html[data-season] .reading-gap,
html[data-season] .reading-source,
html[data-season] .reading-expand p.reading-expand-placeholder,
html[data-season] .gospel-text p.reading-expand-placeholder,
html[data-season] .attribution,
html[data-season] .byline,
html[data-season] .quiet-next{ color:var(--soft); }

/* ---- accent: links, labels, marks ---- */
html[data-season] .citation,
html[data-season] .score-tier,
html[data-season] .reading-strip-link,
html[data-season] .path-card .mark,
html[data-season] .path-card .go,
html[data-season] .wall-count,
html[data-season] .promise-label,
html[data-season] .audio-player-label,
html[data-season] .gp-progress,
html[data-season] .nv-today-feast,
html[data-season] .nv-daytoday,
html[data-season] .nv-dayd > summary::after,
html[data-season] .nv-p.nv-verse::first-letter,
html[data-season] .prose a,
html[data-season] .quiet-next a,
html[data-season] .ask-ed-line a,
html[data-season] .ask-none a,
html[data-season] .ask-verses a,
html[data-season] .reading-source a,
html[data-season] .site-footer a,
html[data-season] .attribution a,
html[data-season] .nv-ui a,
html[data-season] .nv-video-link a,
html[data-season] .nv-version a,
html[data-season] .nv-shared a,
html[data-season] .nv-front a,
html[data-season] .nv-back a{ color:var(--accent); }

/* the crisis box keeps its own warm, light colours in every season and mode */
html[data-season] .ask-crisis{ background:#FFF6EE; color:#3A3220; }
html[data-season] .ask-crisis a{ color:#8A4230; }
