/* Glorify the King / Glorifica al Rey — celestial landing styles.
 *
 * The visual language: deep twilight sky → soft violet → mauve foot,
 * gold accents everywhere, hand-drawn Trinitarian sigils as SVG.
 * Liturgical-color overrides shift the accent by season so the page
 * itself observes the Church's calendar.
 */

* { box-sizing: border-box; margin: 0; padding: 0; }

:root {
    /* Deep-twilight cathedral palette. Lightness range tightened to L9–24
       so every section retains high contrast against white text and gold
       accents — the old gradient peaked at L42 (#b46084) and washed
       out body copy + starfield in the mid-page band. */
    --bg-top: #08062e;
    --bg-mid: #18103a;
    --bg-low: #2a1850;
    --bg-foot: #1a0e30;
    --accent: #d4a84a;
    --accent-bright: #f5d282;
    --accent-deep: #8a5a18;
    --text: #fffaf0;
    --text-muted: rgba(255, 250, 240, 0.72);
    --text-faint: rgba(255, 250, 240, 0.45);
    --serif-display: "Cinzel", "Trajan Pro", Georgia, serif;
    --serif-body: "EB Garamond", "Garamond", Georgia, serif;
    --hairline: rgba(212, 168, 74, 0.36);
    --section-pad: clamp(56px, 8vh, 96px);
}

/* Liturgical-color overrides — class on <body> = season-<n>.
   Section accents (cross arms, dividers, ornament diamonds, form
   border) all read from --accent, so a single class flip retints
   the whole page. */
body.season-lent, body.season-advent { --accent: #a87fc0; --accent-bright: #c8a5e6; }
body.season-easter, body.season-christmas { --accent: #d4a84a; --accent-bright: #f5d282; }
body.season-triduum { --accent: #b23232; --accent-bright: #eb6e6e; }
body.season-ordinary { --accent: #769e5c; --accent-bright: #aad282; }

html { scroll-behavior: smooth; }
html, body {
    /* Gradient is now drawn by body::before (fixed-position pseudo-element)
       instead of background-attachment: fixed — the latter triggers a full
       repaint on every scroll frame in iOS Safari. Pseudo-element approach
       is GPU-composited and smooth on mobile. */
    background: var(--bg-top);
    color: var(--text);
    font-family: var(--serif-body);
    font-size: 18px;
    line-height: 1.6;
    min-height: 100dvh;
    overflow-x: hidden;
}
body::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    background: linear-gradient(
        180deg,
        var(--bg-top) 0%,
        var(--bg-mid) 30%,
        var(--bg-low) 70%,
        #3a1e58 92%,
        var(--bg-foot) 100%
    );
    pointer-events: none;
}

/* Skip-to-content link — visually hidden until focused */
.skip-link {
    position: absolute;
    left: -9999px;
    top: 12px;
    background: var(--accent-bright);
    color: #1a0e30;
    padding: 12px 20px;
    border-radius: 8px;
    font-family: var(--serif-display);
    font-size: 13px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    text-decoration: none;
    font-weight: 700;
    z-index: 9999;
}
.skip-link:focus {
    left: 12px;
    outline: 3px solid var(--accent);
    outline-offset: 2px;
}

/* Custom thin gold scrollbar (WebKit + Firefox) */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: rgba(0,0,0,0.15); }
::-webkit-scrollbar-thumb { background: rgba(212,168,74,0.5); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: rgba(245,210,130,0.7); }
html { scrollbar-width: thin; scrollbar-color: rgba(212,168,74,0.5) rgba(0,0,0,0.15); }

/* Container */
.public {
    max-width: 880px;
    margin: 0 auto;
    padding: 0 24px;
}

/* Fade-in (handled by IntersectionObserver) */
.fade-in {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 700ms ease, transform 700ms ease;
}
.fade-in.is-visible { opacity: 1; transform: none; }

/* ──────────────────────────────────────────────────────────────
   HERO — Beneath the Father's heavens
   ────────────────────────────────────────────────────────────── */
.hero {
    position: relative;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    padding: 80px 24px 64px;
    overflow: hidden;
    isolation: isolate;
}
#stars-canvas {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
}
/* Eight-pointed Star watermark in the hero — extreme low opacity */
.hero-watermark {
    position: absolute;
    inset: 0;
    z-index: 0;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><g fill='none' stroke='%23f5d282' stroke-width='0.5' opacity='0.025'><circle cx='100' cy='100' r='60'/><polygon points='100,40 110,90 160,100 110,110 100,160 90,110 40,100 90,90'/><polygon points='100,55 105,95 145,100 105,105 100,145 95,105 55,100 95,95' transform='rotate(45 100 100)'/></g></svg>");
    background-position: center;
    background-repeat: no-repeat;
    background-size: 120vmin;
    pointer-events: none;
}
.hero-rays {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    transition: transform 800ms cubic-bezier(0.22, 1, 0.36, 1);
}
.hero-rays svg { width: 100%; height: 100%; display: block; }
.hero-rays polygon {
    fill: #fff8d7;
    opacity: 0.06;
    filter: blur(38px);
    animation: hero-sway 16s ease-in-out infinite;
    transform-origin: 50% 14%;
}
.hero-rays polygon:nth-child(2) { animation-duration: 18s; animation-delay: -3s; }
.hero-rays polygon:nth-child(3) { animation-duration: 21s; animation-delay: -8s; }
@keyframes hero-sway {
    0%, 100% { transform: rotate(-0.6deg); }
    50%      { transform: rotate(0.6deg); }
}

/* Guiding star — gentle pulse */
.guiding-star {
    position: absolute;
    top: 14%;
    left: 50%;
    transform: translateX(-50%);
    width: 32px;
    height: 32px;
    z-index: 2;
    pointer-events: none;
    animation: guiding-pulse 5s ease-in-out infinite;
}
.guiding-star svg { width: 100%; height: 100%; display: block; }
@keyframes guiding-pulse {
    0%, 100% { opacity: 0.55; transform: translateX(-50%) scale(0.92); }
    50%      { opacity: 1.0;  transform: translateX(-50%) scale(1.08); }
}

.hero-inner {
    position: relative;
    z-index: 5;
    max-width: 640px;
}

.hero-ornament {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 22px;
    color: var(--accent-bright);
    margin-bottom: 30px;
    opacity: 0;
    animation: fade-down 1200ms 100ms ease both;
}
.hero-ornament svg { width: 18px; height: 18px; opacity: 0.85; }
.hero-ornament .ornament-rule {
    width: 80px; height: 1px;
    background: linear-gradient(90deg, transparent, var(--accent), transparent);
}
@keyframes fade-down {
    from { opacity: 0; transform: translateY(-8px); }
    to   { opacity: 1; transform: none; }
}

/* Wordmark — letter-by-letter fade-in */
.wordmark {
    font-family: var(--serif-display);
    font-weight: 700;
    font-size: clamp(26px, 8vw, 78px);
    letter-spacing: 0.04em;
    line-height: 1.05;
    color: var(--accent-bright);
    /* Layered gold glow + subtle inner shadow for celestial depth.
       (Earlier `background-clip:text` gradient broke when applied to
        a parent whose per-character spans are inline-block — children
        inherit `color:transparent` but lose the parent's clipped fill.) */
    text-shadow:
        0 2px 22px rgba(245, 210, 130, 0.32),
        0 0 60px  rgba(245, 210, 130, 0.10),
        0 1px 0   rgba(0, 0, 0, 0.35);
    /* Refined OpenType: discretionary ligatures + contextual alternates
       + kerning, all of which Cinzel ships with. */
    font-feature-settings: "kern" 1, "liga" 1, "dlig" 1, "salt" 1;
    font-variant-ligatures: common-ligatures discretionary-ligatures;
}
.wordmark .ch {
    display: inline-block;
    opacity: 0;
    color: inherit;
    /* Per-character vertical gradient using background-clip:text — each
       character is its own block, so applying it here works where it
       failed on the parent. */
    background: linear-gradient(
        180deg,
        var(--accent-bright) 0%,
        var(--accent) 60%,
        var(--accent-deep) 100%
    );
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: ch-rise 700ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
/* Safari with no background-clip:text support falls back to color */
@supports not (-webkit-background-clip: text) {
    .wordmark .ch { -webkit-text-fill-color: var(--accent-bright); }
}
.wordmark .sp { display: inline-block; width: 0.4em; }

/* Allow wrap as a safety net — the wordmark is built of inline-block
   per-character spans which normally don't break, so we enable
   line-break opportunities at the .sp spans. */
.wordmark { white-space: normal; overflow-wrap: normal; }
.wordmark .sp {
    display: inline;
    width: auto;
    margin: 0 0.18em;
}

/* Narrow phones (≤480px covers iPhone SE through 14 Pro Max).
   Cinzel cap widths are wide; floor must be small enough that
   "GLORIFICA AL REY" fits within the 24px side-padding. */
@media (max-width: 480px) {
    .wordmark {
        font-size: clamp(20px, 7vw, 32px);
        letter-spacing: 0.008em;
    }
    .wordmark .sp { margin: 0 0.12em; }
}
/* Mid-range tablets / small phones in landscape */
@media (min-width: 481px) and (max-width: 640px) {
    .wordmark {
        font-size: clamp(30px, 7.5vw, 48px);
        letter-spacing: 0.02em;
    }
}
@keyframes ch-rise {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: none; }
}

/* Golden underline that sweeps in */
.wordmark-underline {
    display: block;
    margin: 22px auto 0;
    height: 1.5px;
    width: 0;
    background: linear-gradient(90deg, transparent, var(--accent), transparent);
    animation: underline-draw 1600ms 800ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
@keyframes underline-draw {
    to { width: min(420px, 70%); }
}

.tagline {
    font-family: var(--serif-body);
    font-style: italic;
    color: var(--accent-bright);
    font-size: clamp(18px, 2.6vw, 24px);
    margin-top: 22px;
    letter-spacing: 0.02em;
    opacity: 0;
    animation: fade-down 900ms 1100ms ease both;
}
.subtagline {
    font-family: var(--serif-display);
    font-size: 11px;
    letter-spacing: 0.32em;
    color: var(--text-muted);
    text-transform: uppercase;
    margin-top: 10px;
    opacity: 0;
    animation: fade-down 900ms 1400ms ease both;
}

.gloria-patri {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin-top: 38px;
    opacity: 0;
    animation: fade-down 1100ms 1800ms ease both;
}
.gloria-patri .gp-rule {
    width: clamp(40px, 12vw, 110px);
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--accent), transparent);
}
.gloria-patri .gp-text {
    font-family: var(--serif-display);
    font-size: clamp(10px, 2.4vw, 12px);
    letter-spacing: 0.22em;
    color: var(--accent);
    text-transform: uppercase;
    text-align: center;
    font-feature-settings: "kern" 1, "smcp" 1;
    /* Wrap on narrow screens so the full doxology stays visible — was
       `nowrap` which clipped on phones. */
    white-space: normal;
}
@media (max-width: 420px) {
    .gloria-patri { flex-direction: column; gap: 6px; }
    .gloria-patri .gp-rule { width: 80%; }
    .gloria-patri .gp-text { letter-spacing: 0.14em; line-height: 1.4; }
}

/* Scroll-cue at hero bottom */
.scroll-cue {
    position: absolute;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 5;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    color: var(--text-faint);
    font-family: var(--serif-display);
    font-size: 10px;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    animation: scroll-bob 2.4s ease-in-out infinite;
    /* iOS HIG tap target */
    padding: 16px 24px;
    text-decoration: none;
    min-height: 44px;
    min-width: 44px;
    justify-content: center;
}
.scroll-cue .cue-glyph {
    font-size: 18px;
    color: var(--accent-bright);
}
@keyframes scroll-bob {
    0%, 100% { transform: translateX(-50%) translateY(0); opacity: 0.55; }
    50%      { transform: translateX(-50%) translateY(6px); opacity: 1; }
}

/* ──────────────────────────────────────────────────────────────
   SECTION FRAME — used by every below-the-fold section
   ────────────────────────────────────────────────────────────── */
.section {
    padding: var(--section-pad) 0;
    position: relative;
}
.section-divider {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin: 0 auto;
    max-width: 540px;
    opacity: 0.85;
}
.section-divider::before, .section-divider::after {
    content: "";
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--hairline), transparent);
}
.section-divider .dv-dot {
    width: 6px; height: 6px;
    background: var(--accent);
    border-radius: 50%;
    flex-shrink: 0;
    box-shadow: 0 0 12px rgba(212,168,74,0.6);
}
.section h2.eyebrow {
    font-family: var(--serif-display);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.28em;
    color: var(--accent);
    text-align: center;
    margin-bottom: 20px;
    font-weight: 500;
}

/* ──────────────────────────────────────────────────────────────
   PSALM ANCHOR — the Father's promise
   ────────────────────────────────────────────────────────────── */
.psalm-anchor {
    text-align: center;
    max-width: 720px;
    margin: 0 auto;
    padding: 0 16px;
}
.psalm-anchor .psalm-glyph {
    color: var(--accent-bright);
    font-family: var(--serif-display);
    font-size: 18px;
    letter-spacing: 0.4em;
    margin-bottom: 28px;
    opacity: 0.85;
}
.psalm-anchor blockquote {
    font-family: var(--serif-body);
    font-style: italic;
    font-size: clamp(22px, 3.4vw, 34px);
    line-height: 1.45;
    color: var(--text);
    text-wrap: balance;
    padding: 0 8px;
}
.psalm-anchor .psalm-ref {
    margin-top: 22px;
    font-family: var(--serif-display);
    font-size: 12px;
    letter-spacing: 0.2em;
    color: var(--accent);
    text-transform: uppercase;
}
.psalm-anchor .father-promise {
    margin-top: 38px;
    font-size: clamp(16px, 2.2vw, 19px);
    color: var(--text-muted);
    line-height: 1.65;
    font-style: italic;
}

/* ──────────────────────────────────────────────────────────────
   TODAY CARD — elevated
   ────────────────────────────────────────────────────────────── */
.today-card-wrap {
    text-align: center;
}
.today-card-stage {
    margin: 0 auto;
    max-width: 540px;
}
.today-card-img {
    width: 100%;
    max-width: 480px;
    height: auto;
    border-radius: 22px;
    box-shadow:
        0 36px 90px rgba(0, 0, 0, 0.7),
        0 8px 22px rgba(0, 0, 0, 0.45),
        0 0 60px rgba(245, 210, 130, 0.12),
        0 0 0 1px rgba(255, 250, 230, 0.06) inset;
    aspect-ratio: 9 / 16;
    object-fit: cover;
    display: block;
    margin: 0 auto;
    transition: transform 280ms cubic-bezier(0.22, 1, 0.36, 1),
                box-shadow 280ms ease;
}
.today-card-img:hover {
    transform: translateY(-6px);
    box-shadow:
        0 44px 110px rgba(0, 0, 0, 0.75),
        0 12px 30px rgba(0, 0, 0, 0.5),
        0 0 80px rgba(245, 210, 130, 0.18);
}
.today-day {
    margin-top: 28px;
    font-family: var(--serif-body);
    font-style: italic;
    color: var(--text-muted);
    font-size: clamp(15px, 2vw, 17px);
    line-height: 1.5;
}
.today-day strong {
    color: var(--accent-bright);
    font-style: normal;
    font-family: var(--serif-display);
    font-size: 11px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    display: block;
    margin-top: 4px;
}
.today-ctas {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 14px;
    margin-top: 28px;
}

/* ──────────────────────────────────────────────────────────────
   PER IPSUM — full-width Latin bar (the Son)
   ────────────────────────────────────────────────────────────── */
.per-ipsum {
    position: relative;
    text-align: center;
    padding: clamp(40px, 6vh, 64px) 16px;
    margin: clamp(40px, 6vh, 64px) 0;
    background: linear-gradient(180deg, rgba(0,0,0,0.0), rgba(0,0,0,0.18), rgba(0,0,0,0.0));
    border-top: 1px solid var(--hairline);
    border-bottom: 1px solid var(--hairline);
}
.per-ipsum::before, .per-ipsum::after {
    content: "";
    position: absolute;
    left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--accent), transparent);
}
.per-ipsum::before { top: -1px; animation: shimmer 8s linear infinite; }
.per-ipsum::after  { bottom: -1px; animation: shimmer 9s linear infinite reverse; }
@keyframes shimmer {
    0%, 100% { opacity: 0.4; }
    50%      { opacity: 1; }
}
.per-ipsum-cross {
    color: var(--accent-bright);
    font-size: 20px;
    margin-bottom: 18px;
    letter-spacing: 0.4em;
}
.per-ipsum-latin {
    font-family: var(--serif-display);
    font-size: clamp(20px, 3.2vw, 30px);
    letter-spacing: 0.18em;
    color: var(--accent-bright);
    text-transform: uppercase;
    line-height: 1.4;
}
.per-ipsum-vernacular {
    margin-top: 10px;
    font-family: var(--serif-body);
    font-style: italic;
    font-size: clamp(15px, 2vw, 18px);
    color: var(--text-muted);
}

/* ──────────────────────────────────────────────────────────────
   TWILIGHT RHYTHM — morning + evening side by side
   ────────────────────────────────────────────────────────────── */
.twilight {
    text-align: center;
}
.twilight h2 {
    font-family: var(--serif-display);
    font-weight: 500;
    font-size: clamp(28px, 4.4vw, 42px);
    letter-spacing: 0.03em;
    color: var(--text);
    margin-bottom: 8px;
}
.twilight .twilight-sub {
    color: var(--text-muted);
    font-size: clamp(15px, 2.2vw, 19px);
    margin-bottom: 36px;
    font-style: italic;
}
.twilight-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
    max-width: 740px;
    margin: 0 auto;
    padding: 0 8px;
}
.twilight-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
}
.twilight-card .twilight-label {
    font-family: var(--serif-display);
    font-size: 11px;
    letter-spacing: 0.22em;
    color: var(--accent);
    text-transform: uppercase;
}
.twilight-card img {
    width: 100%;
    max-width: 280px;
    border-radius: 14px;
    box-shadow: 0 18px 50px rgba(0, 0, 0, 0.55), 0 0 40px rgba(245,210,130,0.08);
    aspect-ratio: 9 / 16;
    object-fit: cover;
}
@media (max-width: 580px) {
    .twilight-cards { grid-template-columns: 1fr; }
}

/* ──────────────────────────────────────────────────────────────
   TODAY IN THE CHURCH
   ────────────────────────────────────────────────────────────── */
.church-today {
    text-align: center;
    max-width: 680px;
    margin: 0 auto;
}
.church-stripe {
    height: 4px;
    width: clamp(100px, 30vw, 220px);
    margin: 0 auto 30px;
    background: var(--accent);
    border-radius: 2px;
    box-shadow: 0 0 18px var(--accent-bright);
}
.church-today h2 {
    font-family: var(--serif-display);
    font-size: clamp(20px, 3vw, 26px);
    letter-spacing: 0.06em;
    color: var(--text);
    margin-bottom: 22px;
}
.church-day-name {
    font-family: var(--serif-body);
    font-style: italic;
    font-size: clamp(20px, 3vw, 28px);
    color: var(--accent-bright);
    line-height: 1.4;
    margin-bottom: 8px;
}
.church-saint {
    font-size: clamp(15px, 2vw, 17px);
    color: var(--text-muted);
    font-style: italic;
    margin-bottom: 22px;
}
.church-saint .saint-name { color: var(--accent-bright); }
.church-pill-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
    margin-top: 24px;
}
.church-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    border: 1px solid var(--hairline);
    border-radius: 999px;
    font-family: var(--serif-display);
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--text-muted);
}
.church-pill .pill-dot {
    width: 8px; height: 8px;
    border-radius: 50%;
}
.pill-dot.color-white { background: #fffaf0; box-shadow: 0 0 8px rgba(255,250,240,0.55); }
.pill-dot.color-red { background: #eb6e6e; box-shadow: 0 0 8px rgba(235,110,110,0.55); }
.pill-dot.color-green { background: #aad282; box-shadow: 0 0 8px rgba(170,210,130,0.55); }
.pill-dot.color-violet { background: #c8a5e6; box-shadow: 0 0 8px rgba(200,165,230,0.55); }
.pill-dot.color-rose { background: #f0b4c8; box-shadow: 0 0 8px rgba(240,180,200,0.55); }

/* ──────────────────────────────────────────────────────────────
   HOW IT WORKS — 3 steps
   ────────────────────────────────────────────────────────────── */
.how-it-works { text-align: center; }
.how-it-works h2 {
    font-family: var(--serif-display);
    font-size: clamp(24px, 3.6vw, 32px);
    color: var(--text);
    margin-bottom: 38px;
    letter-spacing: 0.04em;
}
.howit-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    max-width: 880px;
    margin: 0 auto;
}
@media (max-width: 720px) { .howit-grid { grid-template-columns: 1fr; gap: 36px; } }
.howit-step {
    text-align: center;
    padding: 28px 20px;
    background: rgba(0,0,0,0.18);
    border: 1px solid var(--hairline);
    border-radius: 14px;
    transition: transform 240ms ease, border-color 240ms ease;
}
.howit-step:hover { transform: translateY(-3px); border-color: var(--accent); }
.howit-step .step-num {
    font-family: var(--serif-display);
    color: var(--accent);
    font-size: 12px;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    margin-bottom: 14px;
}
.howit-step .step-icon {
    width: 52px;
    height: 52px;
    margin: 0 auto 18px;
    color: var(--accent-bright);
}
.howit-step h3 {
    font-family: var(--serif-display);
    font-weight: 500;
    font-size: 19px;
    letter-spacing: 0.04em;
    color: var(--text);
    margin-bottom: 10px;
}
.howit-step p {
    font-size: 14px;
    color: var(--text-muted);
    line-height: 1.55;
}

/* ──────────────────────────────────────────────────────────────
   SUBSCRIBE FORM — more presence
   ────────────────────────────────────────────────────────────── */
.subscribe-wrap {
    background: rgba(10, 6, 30, 0.55);
    border: 2px solid var(--hairline);
    border-radius: 18px;
    padding: clamp(28px, 4vw, 48px) clamp(20px, 4vw, 56px);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: 0 20px 60px rgba(0,0,0,0.5), inset 0 0 40px rgba(245,210,130,0.05);
    max-width: 640px;
    margin: 0 auto;
}
.subscribe-wrap h2 {
    font-family: var(--serif-display);
    font-weight: 500;
    font-size: clamp(24px, 4vw, 36px);
    letter-spacing: 0.04em;
    color: var(--accent-bright);
    text-align: center;
}
.subscribe-lead {
    color: var(--text-muted);
    text-align: center;
    font-size: clamp(15px, 2vw, 17px);
    margin: 16px 0 32px;
    line-height: 1.6;
}
.subscribe-form { display: flex; flex-direction: column; gap: 4px; }
.subscribe-form label {
    font-family: var(--serif-display);
    font-size: 10px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--text-faint);
    margin-top: 16px;
}
.subscribe-form input[type="text"],
.subscribe-form input[type="tel"] {
    background: rgba(0, 0, 0, 0.42);
    border: 1px solid var(--hairline);
    border-radius: 10px;
    padding: 14px 16px;
    color: var(--text);
    font-family: var(--serif-body);
    font-size: 18px;
    transition: border-color 220ms ease, background 220ms ease;
    margin-top: 8px;
}
.subscribe-form input:focus {
    outline: none;
    border-color: var(--accent-bright);
    background: rgba(0, 0, 0, 0.55);
    box-shadow: 0 0 0 3px rgba(245,210,130,0.10);
}
.subscribe-form .consent {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    color: var(--text-muted);
    font-size: 14px;
    line-height: 1.5;
    margin-top: 22px;
    font-family: var(--serif-body);
    text-transform: none;
    letter-spacing: normal;
}
.subscribe-form .consent input[type="checkbox"] {
    margin-top: 4px;
    accent-color: var(--accent);
    width: 16px; height: 16px;
}
.btn-primary {
    background: linear-gradient(180deg, var(--accent-bright), var(--accent));
    color: #1a0e30;
    border: none;
    border-radius: 999px;
    padding: 16px 32px;
    font-family: var(--serif-display);
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    cursor: pointer;
    margin-top: 28px;
    box-shadow: 0 8px 28px rgba(245, 210, 130, 0.3);
    transition: transform 160ms ease, box-shadow 220ms ease;
    text-decoration: none;
    text-align: center;
    display: inline-block;
}
.btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 38px rgba(245, 210, 130, 0.45);
}
.btn-secondary {
    background: transparent;
    color: var(--accent-bright);
    border: 1px solid var(--accent);
    border-radius: 999px;
    padding: 12px 24px;
    font-family: var(--serif-display);
    font-size: 11px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    text-decoration: none;
    display: inline-block;
    cursor: pointer;
    transition: background 200ms ease, color 200ms ease;
}
.btn-secondary:hover {
    background: var(--accent);
    color: #1a0e30;
}
.form-result {
    margin-top: 18px;
    color: var(--text);
    font-size: 14px;
    min-height: 1em;
    text-align: center;
}
.form-result.ok { color: #b5e4a6; }
.form-result.err { color: #f5a8a8; }
.subscribe-sign {
    margin-top: 24px;
    text-align: center;
    color: var(--text-muted);
    font-size: 13px;
    font-style: italic;
    line-height: 1.6;
}

/* ──────────────────────────────────────────────────────────────
   PAGE-WIDE TRIQUETRA WATERMARK
   Trinity-symbolic, fixed-position, extremely faint
   ────────────────────────────────────────────────────────────── */
.triquetra-watermark {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 60vmin;
    height: 60vmin;
    z-index: 0;
    pointer-events: none;
    opacity: 0.025;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><g fill='none' stroke='%23f5d282' stroke-width='1.2'><circle cx='100' cy='75' r='35'/><circle cx='78' cy='110' r='35'/><circle cx='122' cy='110' r='35'/></g></svg>");
    background-size: contain;
    background-repeat: no-repeat;
}

/* ──────────────────────────────────────────────────────────────
   FOOTER
   ────────────────────────────────────────────────────────────── */
.public-footer {
    margin: 80px auto 36px;
    padding: 36px 24px 0;
    border-top: 1px solid var(--hairline);
    text-align: center;
    max-width: 880px;
    position: relative;
    z-index: 5;
}
.public-footer .gloria-final {
    font-family: var(--serif-display);
    font-size: 11px;
    letter-spacing: 0.26em;
    color: var(--accent);
    text-transform: uppercase;
    margin-bottom: 8px;
}
.public-footer .gloria-vernacular {
    font-family: var(--serif-body);
    font-style: italic;
    font-size: 14px;
    color: var(--accent-bright);
}
.public-footer .brand-stamp {
    font-family: var(--serif-display);
    font-size: 10px;
    letter-spacing: 0.22em;
    color: var(--text-faint);
    text-transform: uppercase;
    margin-top: 18px;
}
.public-footer .footer-nav {
    margin-top: 26px;
    display: flex;
    justify-content: center;
    gap: 28px;
    flex-wrap: wrap;
}
.public-footer .footer-nav a {
    color: var(--text-muted);
    font-family: var(--serif-body);
    text-decoration: none;
    font-size: 13px;
    letter-spacing: 0.02em;
    transition: color 200ms ease;
    /* iOS HIG: minimum 44x44pt tappable area */
    padding: 12px 8px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
}
.public-footer .footer-nav a:hover { color: var(--accent-bright); }
.public-footer .soli-deo-gloria {
    margin-top: 22px;
    font-family: var(--serif-display);
    font-size: 11px;
    letter-spacing: 0.28em;
    color: var(--accent);
    text-transform: uppercase;
}

/* ──────────────────────────────────────────────────────────────
   INNER PAGE CHROME (today.html / about.html)
   ────────────────────────────────────────────────────────────── */
.page-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 28px 24px 18px;
    border-bottom: 1px solid var(--hairline);
    max-width: 880px;
    margin: 0 auto;
}
.brand-link {
    color: var(--accent-bright);
    font-family: var(--serif-display);
    font-size: 16px;
    text-decoration: none;
    letter-spacing: 0.06em;
}
.day-name {
    color: var(--text-muted);
    font-style: italic;
    font-size: 14px;
}
.today-main, .about-main { padding: 32px 0 60px; }
.verse-detail { margin-top: 36px; text-align: center; }
.verse-text {
    font-family: var(--serif-body);
    font-style: italic;
    font-size: clamp(22px, 4.4vw, 34px);
    color: var(--text);
    line-height: 1.55;
    padding: 0 12px;
    text-wrap: balance;
    /* Refined OpenType: kerning, common + discretionary ligatures, and
       old-style figures so numerals sit on the baseline like in a
       missal. */
    font-feature-settings: "kern" 1, "liga" 1, "dlig" 1, "onum" 1;
    text-shadow: 0 0 24px rgba(245, 210, 130, 0.10);
}
.verse-text::first-letter {
    /* Subtle illuminated drop-cap effect — slightly larger and tinted. */
    font-size: 1.18em;
    color: var(--accent-bright);
}
.verse-ref {
    font-family: var(--serif-display);
    font-weight: 500;
    font-size: 13px;
    color: var(--accent);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-top: 18px;
    font-feature-settings: "kern" 1, "smcp" 1;
}
.verse-source {
    font-family: var(--serif-body);
    font-style: italic;
    font-size: 12px;
    color: var(--text-muted);
    margin-top: 6px;
    letter-spacing: 0.02em;
    opacity: 0.85;
}
.hope-line {
    margin-top: 26px;
    color: var(--text-muted);
    font-style: italic;
    font-size: 16px;
    padding: 0 24px;
}
.examen-block {
    margin-top: 60px;
    padding: 32px 24px;
    background: rgba(10, 6, 30, 0.55);
    border: 1px solid var(--hairline);
    border-radius: 14px;
}
.examen-block h2 {
    font-family: var(--serif-display);
    font-size: 20px;
    letter-spacing: 0.06em;
    color: var(--accent-bright);
    text-align: center;
}
.examen-lead {
    color: var(--text-muted);
    font-size: 14px;
    text-align: center;
    margin: 14px 0 20px;
}
.examen-prompts { counter-reset: prompt; list-style: none; padding: 0; margin: 0; }
.examen-prompts li {
    counter-increment: prompt;
    position: relative;
    padding: 14px 0 14px 50px;
    border-bottom: 1px solid rgba(212, 168, 74, 0.12);
    font-style: italic;
    color: var(--text);
    font-size: 16px;
    line-height: 1.55;
}
.examen-prompts li:last-child { border-bottom: none; }
.examen-prompts li::before {
    content: counter(prompt);
    position: absolute;
    left: 0; top: 14px;
    width: 30px; height: 30px;
    background: var(--accent-bright);
    color: #1a0e30;
    border-radius: 50%;
    font-family: var(--serif-display);
    font-weight: 700;
    font-size: 13px;
    display: flex; align-items: center; justify-content: center;
}
.sign-of-cross {
    text-align: center;
    color: var(--text-muted);
    font-style: italic;
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid var(--hairline);
    font-size: 14px;
}
.cta-back { text-align: center; margin: 64px 0 0; }

/* About page */
.about-section { padding: 32px 0; }
.about-section h1 {
    font-family: var(--serif-display);
    font-weight: 500;
    font-size: clamp(26px, 5vw, 38px);
    color: var(--text);
    line-height: 1.2;
    margin-bottom: 28px;
}
.about-section h2 {
    font-family: var(--serif-display);
    font-size: 18px;
    letter-spacing: 0.06em;
    color: var(--accent-bright);
    margin-top: 36px;
    margin-bottom: 14px;
}
.about-section p {
    color: var(--text);
    margin-bottom: 18px;
    font-size: 17px;
    line-height: 1.65;
}
.about-section ul.rule { list-style: none; padding-left: 0; margin: 18px 0; }
.about-section ul.rule li {
    padding: 14px 18px;
    background: rgba(0, 0, 0, 0.25);
    border-left: 3px solid var(--accent);
    margin-bottom: 12px;
    border-radius: 6px;
    color: var(--text);
    font-size: 15px;
}
.about-section .closing {
    font-style: italic;
    color: var(--accent-bright);
    margin-top: 36px;
    text-align: center;
    font-size: 18px;
}

/* ──────────────────────────────────────────────────────────────
   Support / donate page (/apoya + /support)
   ────────────────────────────────────────────────────────────── */
.support-main {
    max-width: 720px;
    margin: 0 auto;
    padding: 16px 0 64px;
}
.support-hero {
    text-align: center;
    padding: 36px 0 24px;
}
.support-hero h1 {
    font-family: var(--serif-display);
    font-weight: 500;
    font-size: clamp(28px, 5.5vw, 40px);
    color: var(--text);
    line-height: 1.2;
    margin-bottom: 12px;
}
.support-subtitle {
    font-family: var(--serif-text);
    font-style: italic;
    color: var(--accent-bright);
    font-size: clamp(15px, 2.4vw, 18px);
    letter-spacing: 0.03em;
}
.support-rationale {
    padding: 0 4px 24px;
}
.support-rationale p {
    color: var(--text);
    margin-bottom: 18px;
    font-size: 17px;
    line-height: 1.65;
}
.support-rationale p.support-lead {
    font-style: italic;
    color: var(--accent-bright);
    text-align: center;
    margin-top: 28px;
    font-size: 17px;
}

/* Tier grid — 3 columns desktop, stacked on mobile. Buttons are
   anchors (links to Stripe Payment Link URLs) styled as cards. */
.support-tiers {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
    margin: 16px 0 28px;
}
@media (min-width: 600px) {
    .support-tiers {
        grid-template-columns: repeat(3, 1fr);
        gap: 18px;
    }
}
.support-tier {
    display: block;
    text-decoration: none;
    color: var(--text);
    background: rgba(0, 0, 0, 0.32);
    border: 1px solid rgba(245, 210, 130, 0.22);
    border-radius: 14px;
    padding: 24px 20px 22px;
    text-align: center;
    transition: transform 160ms ease, border-color 200ms ease, box-shadow 220ms ease;
    min-height: 156px;
}
.support-tier:hover, .support-tier:focus {
    transform: translateY(-3px);
    border-color: var(--accent);
    box-shadow: 0 12px 32px rgba(245, 210, 130, 0.18);
    outline: none;
}
.support-tier.featured {
    border-color: var(--accent);
    background: linear-gradient(180deg, rgba(245, 210, 130, 0.08), rgba(0, 0, 0, 0.32));
    box-shadow: 0 6px 20px rgba(245, 210, 130, 0.14);
}
.support-tier .tier-amount {
    font-family: var(--serif-display);
    font-weight: 700;
    font-size: 32px;
    color: var(--accent-bright);
    margin-bottom: 6px;
    letter-spacing: 0.01em;
}
.support-tier .tier-label {
    font-family: var(--serif-display);
    font-size: 13px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--text);
    margin-bottom: 10px;
}
.support-tier .tier-desc {
    font-family: var(--serif-text);
    color: var(--text);
    font-size: 14px;
    line-height: 1.45;
    opacity: 0.82;
}

.support-custom {
    text-align: center;
    margin: 12px 0 16px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    align-items: center;
}
.support-custom .btn-primary { margin-top: 8px; }
.support-monthly-link { margin-top: 0; }

.support-closing {
    margin-top: 48px;
    padding: 0 16px;
}
.support-closing .closing {
    font-style: italic;
    color: var(--accent-bright);
    text-align: center;
    font-size: 18px;
}

/* Inline donate CTA on the landing page (above the footer) */
.support-inline {
    margin: 64px auto 0;
    max-width: 600px;
    padding: 28px 24px;
    text-align: center;
    background: rgba(0, 0, 0, 0.25);
    border: 1px solid rgba(245, 210, 130, 0.18);
    border-radius: 14px;
}
.support-inline h3 {
    font-family: var(--serif-display);
    font-weight: 500;
    font-size: 20px;
    color: var(--accent-bright);
    margin-bottom: 10px;
    letter-spacing: 0.04em;
}
.support-inline p {
    color: var(--text);
    font-size: 15px;
    line-height: 1.6;
    margin-bottom: 18px;
    opacity: 0.92;
}
.support-inline .btn-secondary { margin-top: 0; }

/* ──────────────────────────────────────────────────────────────
   Responsive tweaks
   ────────────────────────────────────────────────────────────── */
@media (min-width: 720px) {
    .public { padding: 0 36px; }
}

@media (prefers-reduced-motion: reduce) {
    .hero-rays polygon,
    .guiding-star,
    .wordmark .ch,
    .wordmark-underline,
    .hero-ornament,
    .tagline,
    .subtagline,
    .gloria-patri,
    .scroll-cue,
    .per-ipsum::before,
    .per-ipsum::after {
        animation: none !important;
    }
    .fade-in { opacity: 1; transform: none; }
}

@media print {
    html, body { background: #fff; color: #1a1a1a; }
    #stars-canvas, .hero-rays, .guiding-star, .triquetra-watermark, .hero-watermark { display: none; }
    .btn-primary, .btn-secondary, .today-link { display: none; }
}
