/* css/app.css — MassFinder v3 */

/* ── Self-hosted fonts (variable weight, latin + latin-ext subsets) ── */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600 700;
  font-display: swap;
  src: url('/assets/fonts/playfair-display-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600 700;
  font-display: swap;
  src: url('/assets/fonts/playfair-display-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('/assets/fonts/source-sans-3-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('/assets/fonts/source-sans-3-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* ── Lora — prayer serif (regular + italic, latin + latin-ext subsets) ── */
@font-face {
  font-family: 'Lora';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/fonts/lora-regular-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Lora';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/fonts/lora-regular-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Lora';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/fonts/lora-italic-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Lora';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/fonts/lora-italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── SLV-01: @property registrations for animated CSS custom properties ── */
@property --color-accent {
  syntax: '<color>';
  inherits: true;
  initial-value: #B8963F;
}
@property --color-accent-text {
  syntax: '<color>';
  inherits: true;
  initial-value: #7D6520;
}
@property --color-accent-light {
  syntax: '<color>';
  inherits: true;
  initial-value: #D4B05C;
}
@property --color-accent-pale {
  syntax: '<color>';
  inherits: true;
  initial-value: #F5EDD8;
}

:root {
  --color-primary: #2C3E5A;
  --color-primary-light: #3D5278;
  --color-primary-muted: #6B7A94;
  --color-accent: #B8963F;
  --color-accent-text: #7D6520;
  --color-accent-light: #D4B05C;
  --color-accent-pale: #F5EDD8;
  /* ── Sacred content — fixed warm gold, never shifts with season ── */
  --color-sacred: #B8963F;
  --color-sacred-text: #7D6520;
  --color-sacred-pale: #F5EDD8;
  /* ── Service type — fixed, always distinguishable from each other and season ── */
  --color-svc-adoration: #B87514;
  --color-svc-adoration-pale: #FDF3E3;
  --color-svc-devotion: #8B5A6D;
  --color-svc-devotion-pale: #F5ECF0;
  /* ── Event category — fixed except liturgical (inherits seasonal accent) ── */
  --color-cat-devotional: #8B3A62;
  --color-cat-devotional-pale: #F7ECF2;
  --color-cat-social: #0D7377;
  --color-cat-social-pale: #E6F5F5;
  --color-cat-volunteering: #B85C38;
  --color-cat-volunteering-pale: #FBF0EB;
  /* ── Temporal urgency — fixed warm amber, never shifts ── */
  --color-soon: #C8850D;
  --color-soon-text: #8B5E06;
  --color-soon-pale: #FEF6E7;
  /* ── Notice banners — fixed warm tone for fasting/HDO ── */
  --color-notice: #A16B2A;
  --color-notice-pale: #FDF5E6;
  --color-bg: #F8F7F4;
  --color-surface: #FFFFFF;
  --color-surface-hover: #F5F3EF;
  --color-text-primary: #1A1E26;
  --color-text-secondary: #5C6370;
  --color-text-tertiary: #8B919C;
  --color-heading: #1A1E26;
  --color-text-inverse: #FFFFFF;
  --color-verified: #4A7C59;
  --color-verified-bg: #EDF5F0;
  --color-warning: #D97706;
  --color-warning-bg: #FEF5E7;
  --color-error: #B91C1C;
  --color-info: #3478C6;
  --color-info-bg: #EFF6FF;
  --color-border: #E5E2DC;
  --color-border-light: #EFECE7;
  --color-primary-bg: rgba(44,62,90,0.04);
  --color-fav: #E11D48;
  --color-stations: #8B2252;
  --color-stations-pale: rgba(139, 34, 82, 0.08);
  --font-display: 'Playfair Display', Georgia, serif;
  --font-heading: 'Playfair Display', Georgia, serif;
  --font-body: 'Source Sans 3', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-prayer: 'Lora', Georgia, 'Playfair Display', serif;
  --text-xs: 0.8125rem; --text-sm: 0.9375rem; --text-base: 1.0625rem;
  --text-lg: 1.125rem; --text-xl: 1.25rem; --text-2xl: 1.5rem; --text-3xl: 1.75rem;
  --weight-regular: 400; --weight-medium: 500; --weight-semibold: 600; --weight-bold: 700;
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
  --space-5: 20px; --space-6: 24px; --space-8: 32px; --space-12: 48px;
  --max-width: 680px;
  --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-full: 999px;
  --shadow-card: 0 1px 3px rgba(26,30,38,0.06), 0 4px 12px rgba(26,30,38,0.04);
  --shadow-card-hover: 0 2px 8px rgba(26,30,38,0.08), 0 8px 24px rgba(26,30,38,0.06);
  --shadow-elevated: 0 4px 16px rgba(26,30,38,0.10), 0 12px 40px rgba(26,30,38,0.08);
  --shadow-sacred-glow: 0 0 20px rgba(15,12,5,0.08);
  --shadow-sacred-glow: 0 0 20px color-mix(in srgb, var(--color-sacred) 8%, transparent);
  --color-surface-sacred: linear-gradient(135deg, #FFFFFF 60%, #FFFCF5 100%);
  /* ── Reading surface — flat colors for immersive sacred reading contexts ── */
  --color-reading-surface: #FAF8F5;
  --reading-font-size: 18px;
  --reading-line-height: 1.6;
  --reading-margin: 24px;
  --shadow-tab-bar: 0 -1px 0 rgba(0,0,0,0.06), 0 -4px 16px rgba(0,0,0,0.04);
  --ease-out: cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --transition-fast: 150ms var(--ease-out);
  --transition-base: 250ms var(--ease-out);
  --tab-bar-height: 64px;
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --header-height: 56px;
  /* SLV-01: Season accent transitions — colors shift like vestment changes */
  transition: --color-accent 1.5s ease-in-out,
              --color-accent-text 1.5s ease-in-out,
              --color-accent-light 1.5s ease-in-out,
              --color-accent-pale 1.5s ease-in-out;
}
/* SLV-01: Per-element fallback transitions for browsers without @property support */
.formation-card,
.reader-header::after {
  transition: background 1.5s ease-in-out, border-color 1.5s ease-in-out, box-shadow 1.5s ease-in-out, color 1.5s ease-in-out;
}
/* ARC-F: Suppress season accent transition on reader header only; allow all other transitions */
#readerOverlay .reader-header::after { transition: none !important; }
#readerBody { transition: opacity 200ms ease !important; }
/* DARK MODE — override all color variables */
html[data-theme="dark"] {
  --color-primary: #8FA8C8;
  --color-primary-light: #A8BFDA;
  --color-primary-muted: #6B7A94;
  --color-accent: #D4A84B;
  --color-accent-text: #D4A84B;
  --color-accent-light: #E8C26A;
  --color-accent-pale: #2E2618;
  --color-sacred: #D4A84B;
  --color-sacred-text: #D4A84B;
  --color-sacred-pale: #2E2618;
  --color-svc-adoration: #E5A33D;
  --color-svc-adoration-pale: #2A1F0A;
  --color-svc-devotion: #C48A9E;
  --color-svc-devotion-pale: #2A1A22;
  --color-cat-devotional: #C46B96;
  --color-cat-devotional-pale: #2A1520;
  --color-cat-social: #38B2AC;
  --color-cat-social-pale: #0A2626;
  --color-cat-volunteering: #E07C56;
  --color-cat-volunteering-pale: #2A1810;
  --color-soon: #E5A33D;
  --color-soon-text: #E5A33D;
  --color-soon-pale: #2A1F0A;
  --color-notice: #D4A84B;
  --color-notice-pale: #2A2010;
  --color-bg: #1B1916;
  --color-surface: #242119;
  --color-surface-hover: #2E2A22;
  --color-text-primary: #F0EDE6;
  --color-text-secondary: #B0A99C;
  --color-text-tertiary: #7A7268;
  --color-heading: #F0EDE6;
  --color-text-inverse: #1B1916;
  --color-verified: #6AAF84;
  --color-verified-bg: #1A2E22;
  --color-warning: #F59E0B;
  --color-warning-bg: #2A1F0A;
  --color-error: #F87171;
  --color-info: #60A5FA;
  --color-info-bg: #1C1A14;
  --color-border: #3A3530;
  --color-border-light: #302B26;
  --color-primary-bg: rgba(143,168,200,0.08);
  --color-fav: #FB7185;
  --color-stations: #C75B8F;
  --color-stations-pale: rgba(199, 91, 143, 0.06);
  --shadow-card: 0 1px 3px rgba(20,15,8,0.3), 0 4px 12px rgba(20,15,8,0.2);
  --shadow-card-hover: 0 2px 8px rgba(20,15,8,0.4), 0 8px 24px rgba(20,15,8,0.3);
  --shadow-elevated: 0 4px 16px rgba(20,15,8,0.4), 0 12px 40px rgba(20,15,8,0.3);
  --shadow-tab-bar: 0 -1px 0 rgba(255,255,255,0.04), 0 -4px 16px rgba(20,15,8,0.2);
  --shadow-sacred-glow: 0 0 24px rgba(25,20,9,0.20);
  --shadow-sacred-glow: 0 0 24px color-mix(in srgb, var(--color-sacred) 20%, transparent);
  --color-surface-sacred: linear-gradient(135deg, var(--color-surface) 60%, #292a2f 100%);
  --color-surface-sacred: linear-gradient(135deg, var(--color-surface) 60%, color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)) 100%);
  --color-reading-surface: #1C1B18;
}

/* Dark mode: YC card / saved compact hardcoded cream gradient */
html[data-theme="dark"] .yc-card,
html[data-theme="dark"] .saved-compact-yc {
  background: var(--color-surface);
}

/* Dark mode: seasonal body gradients */
html[data-theme="dark"][data-season="ordinary"] body {
  background: radial-gradient(ellipse at 50% 0%, rgba(74,124,89,0.04) 0%, transparent 70%), #1D1B18;
}
html[data-theme="dark"][data-season="advent"] body {
  background: radial-gradient(ellipse at 50% 0%, rgba(123,75,160,0.10) 0%, transparent 70%), #1E1A20;
}
html[data-theme="dark"][data-season="lent"] body {
  background: radial-gradient(ellipse at 50% 0%, rgba(107,77,138,0.08) 0%, transparent 70%), #1C1A1E;
}
html[data-theme="dark"][data-season="easter"] body {
  background: radial-gradient(ellipse at 50% 0%, rgba(212,168,75,0.14) 0%, transparent 70%), #1E1B16;
}
html[data-theme="dark"][data-season="christmas"] body {
  background: radial-gradient(ellipse at 50% 0%, rgba(212,168,75,0.12) 0%, transparent 70%), #1F1C16;
}
/* Dark mode: neutralize lent/advent accent-text for readability */
html[data-theme="dark"][data-season="lent"],
html[data-theme="dark"][data-season="advent"] { --color-accent-text:#A8AEBC; }

/* ═══════════════════════════════════════════════════════════════
   READING SURFACE — Immersive sacred reading context base styles
   WCAG AAA: light #1A1E26 on #FAF8F5 = 15.3:1
             dark  #EEF0F4 on #1C1B18 = 15.1:1
   ═══════════════════════════════════════════════════════════════ */
.reading-surface {
  font-family: var(--font-prayer);
  font-size: var(--reading-font-size);
  line-height: var(--reading-line-height);
  color: var(--color-text-primary);
  background-color: var(--color-reading-surface);
  padding-left: var(--reading-margin);
  padding-right: var(--reading-margin);
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
}

/* Dark mode: hardcoded badge colors */
html[data-theme="dark"] .schedule-lang-badge { color: #93C5FD; background: #1D1B30; }
html[data-theme="dark"] .schedule-season-badge { color: #C4B5FD; background: #2D1B69; }
html[data-theme="dark"] .yc-social-tag { color: #5EEAD4; background: #0D2320; }
html[data-theme="dark"] .evt-countdown { color: #86EFAC; background: #1A2E22; }
html[data-theme="dark"] .evt-countdown.imminent { color: #FCD34D; background: #2A1D0A; }
html[data-theme="dark"] .evt-cat-icon { background: rgba(255,255,255,0.06); }
html[data-theme="dark"] .evt-cat-icon { background: color-mix(in srgb, white 4%, var(--color-surface)); }
html[data-theme="dark"] .evt-info-card { background: rgba(255,255,255,0.04); }
html[data-theme="dark"] .evt-info-card { background: color-mix(in srgb, white 3%, var(--color-surface)); }
html[data-theme="dark"] .evt-notes { background: rgba(255,255,255,0.04); border-left-color: var(--color-border); }
html[data-theme="dark"] .evt-notes { background: color-mix(in srgb, white 3%, var(--color-surface)); border-left-color: var(--color-border); }
html[data-theme="dark"] .evt-action-btn { background: rgba(255,255,255,0.04); border-color: var(--color-border); }
html[data-theme="dark"] .evt-action-btn { background: color-mix(in srgb, var(--color-primary) 4%, var(--color-surface)); border-color: var(--color-border); }
html[data-theme="dark"] .evt-footer-link-inner { background: rgba(255,255,255,0.04); }
html[data-theme="dark"] .evt-footer-link-inner { background: color-mix(in srgb, var(--color-primary) 4%, var(--color-surface)); }
html[data-theme="dark"] .evt-contact { background: rgba(255,255,255,0.04); }
html[data-theme="dark"] .evt-contact { background: color-mix(in srgb, white 3%, var(--color-surface)); }
html[data-theme="dark"] .evt-detail-row { background: rgba(255,255,255,0.04); }
html[data-theme="dark"] .evt-detail-row { background: color-mix(in srgb, white 3%, var(--color-surface)); }
html[data-theme="dark"] .evt-yc-banner { background: rgba(22,18,8,0.12); border-left-color: var(--color-sacred); }
html[data-theme="dark"] .evt-yc-banner { background: color-mix(in srgb, var(--color-sacred) 12%, transparent); border-left-color: var(--color-sacred); }
html[data-theme="dark"] .evt-yc-banner svg { color: var(--color-sacred); }
html[data-theme="dark"] .evt-yc-banner span { color: var(--color-sacred); }
html[data-theme="dark"] .loc-site-dir { background: var(--color-surface-hover); border-color: var(--color-border); }

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; -webkit-font-smoothing: antialiased; }
body {
  font-family: var(--font-body); font-size: var(--text-base);
  font-weight: var(--weight-regular); line-height: 1.6;
  color: var(--color-text-primary); background: var(--color-bg);
  min-height: 100vh; min-height: 100dvh; overflow-x: hidden;
  padding-bottom: calc(var(--tab-bar-height) + var(--safe-bottom) + var(--space-4));
}
a { color: var(--color-info); text-decoration: none; }
a:hover { text-decoration: underline; }
button { font-family: inherit; font-size: inherit; cursor: pointer; border: none; background: none; color: inherit; -webkit-tap-highlight-color: transparent; }
input { font-family: inherit; font-size: inherit; border: none; outline: none; background: none; color: inherit; -webkit-tap-highlight-color: transparent; }

/* HEADER */
.top-header { display: none; }

/* LTR-01: Liturgical teaser — full-width atmospheric zone */
.liturgical-teaser-wrap { width: 100%; }
.liturgical-teaser-wrap:empty { display: none; }
.daily-card {
  padding: var(--space-5) var(--space-4) var(--space-4);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: opacity var(--transition-fast);
  animation: fadeIn 0.3s ease-out;
  /* LTR-02: seasonal background — ordinary time base */
  background: linear-gradient(180deg, color-mix(in srgb, var(--color-accent) 4%, var(--color-bg)) 0%, var(--color-bg) 100%);
  border-bottom: 1px solid var(--color-border-light);
}
.daily-card:active { opacity: 0.92; }
.daily-card-inner { max-width: var(--max-width); margin: 0 auto; }
.daily-card-row { display: flex; align-items: flex-start; gap: 10px; }
.daily-card-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; margin-top: 10px; box-shadow: 0 0 4px color-mix(in srgb, currentColor 30%, transparent); }
.daily-card-body { flex: 1; min-width: 0; }
.daily-card-name { font-family: var(--font-display); font-size: var(--text-2xl); font-weight: var(--weight-bold); color: var(--color-text-primary); line-height: 1.25; letter-spacing: -0.01em; }
.daily-card-rank { font-family: var(--font-body); font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--color-accent-text); text-transform: uppercase; letter-spacing: 0.06em; margin-top: 6px; }
.daily-card-secondary { font-size: var(--text-xs); color: var(--color-text-secondary); font-style: italic; margin-top: 1px; }

/* LTR-02: Seasonal background overrides */
html[data-season="advent"] .daily-card { background: linear-gradient(180deg, color-mix(in srgb, #6B21A8 3%, var(--color-bg)) 0%, var(--color-bg) 100%); }
html[data-season="lent"] .daily-card { background: linear-gradient(180deg, color-mix(in srgb, #6B21A8 3%, var(--color-bg)) 0%, var(--color-bg) 100%); }
html[data-season="christmas"] .daily-card { background: linear-gradient(180deg, color-mix(in srgb, var(--color-sacred) 5%, var(--color-bg)) 0%, var(--color-bg) 100%); }
html[data-season="easter"] .daily-card { background: linear-gradient(180deg, color-mix(in srgb, var(--color-sacred) 5%, var(--color-bg)) 0%, var(--color-bg) 100%); }

/* LTR-03: Content teaser zone */
.daily-card-content { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--color-border-light); }
.daily-card-quote { font-family: var(--font-prayer); font-size: var(--text-sm); font-style: italic; color: var(--color-text-secondary); line-height: 1.55; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.daily-card-attribution { font-family: var(--font-body); font-size: var(--text-xs); color: var(--color-text-tertiary); margin-top: var(--space-1); }
.daily-card-bio { font-family: var(--font-body); font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.daily-card-ccc-label { font-family: var(--font-body); font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-sacred-text); text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: var(--space-1); }
.daily-card-ccc { font-family: var(--font-prayer); font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.55; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* LTR-04: Content-aware CTA */
.daily-card-cta { font-family: var(--font-body); font-size: var(--text-xs); color: var(--color-accent); margin-top: var(--space-3); display: flex; align-items: center; gap: 4px; }
.daily-card-cta svg { flex-shrink: 0; color: var(--color-accent); transition: transform 0.15s ease; width: 14px; height: 14px; }
.daily-card:hover .daily-card-cta svg, .daily-card:active .daily-card-cta svg { transform: translateX(2px); }

/* LTR-05: Dark mode atmospheric treatment */
html[data-theme="dark"] .daily-card { background: linear-gradient(180deg, color-mix(in srgb, var(--color-sacred) 8%, var(--color-surface)) 0%, var(--color-bg) 100%); border-bottom: 1px solid var(--color-border); }
html[data-theme="dark"][data-season="advent"] .daily-card { background: linear-gradient(180deg, color-mix(in srgb, #6B21A8 6%, var(--color-surface)) 0%, var(--color-bg) 100%); }
html[data-theme="dark"][data-season="lent"] .daily-card { background: linear-gradient(180deg, color-mix(in srgb, #6B21A8 6%, var(--color-surface)) 0%, var(--color-bg) 100%); }
html[data-theme="dark"][data-season="christmas"] .daily-card { background: linear-gradient(180deg, color-mix(in srgb, var(--color-sacred) 10%, var(--color-surface)) 0%, var(--color-bg) 100%); }
html[data-theme="dark"][data-season="easter"] .daily-card { background: linear-gradient(180deg, color-mix(in srgb, var(--color-sacred) 10%, var(--color-surface)) 0%, var(--color-bg) 100%); }
html[data-theme="dark"] .daily-card-dot { box-shadow: 0 0 8px currentColor; }
html[data-theme="dark"] .daily-card-content { border-top-color: var(--color-border); }
html[data-theme="dark"] .daily-card-name { color: var(--color-text-primary); text-shadow:0 0 30px rgba(28,23,9,0.12); }
html[data-theme="dark"] .daily-card-name { color: var(--color-text-primary); text-shadow:0 0 30px color-mix(in srgb, var(--color-sacred) 12%, transparent); }
html[data-theme="dark"] .daily-card-secondary { color: var(--color-text-secondary); }
html[data-theme="dark"] .daily-card-rank { color: var(--color-accent); }

/* LTR-06: Desktop centering */
@media (min-width: 768px) {
  .daily-card-row { justify-content: center; }
  .daily-card-body { text-align: center; flex: initial; }
  .daily-card-content { text-align: center; }
}

/* SEARCH */
.search-section { max-width: var(--max-width); margin: 0 auto; padding: var(--space-4) var(--space-4) var(--space-2); }
.search-bar { display: flex; align-items: center; height: 44px; border: none; border-bottom: 1.5px solid var(--color-border); background: transparent; padding: 0; gap: var(--space-2); transition: border-color var(--transition-fast); outline: none; -webkit-tap-highlight-color: transparent; border-radius: 0; }
.search-bar:focus-within { border-bottom-color: var(--color-sacred); }
.search-bar svg { width: 20px; height: 20px; color: var(--color-sacred); opacity: 0.5; flex-shrink: 0; transition: opacity var(--transition-fast); }
.search-bar:focus-within svg { opacity: 0.8; }
.search-bar input { flex: 1; height: 100%; font-size: var(--text-base); outline: none; border: none; background: transparent; -webkit-appearance: none; font-family: var(--font-body); color: var(--color-text-primary); }
.search-bar input:focus { outline: none; }
.search-bar input::placeholder { color: var(--color-text-tertiary); }
.search-clear { width: 44px; height: 44px; border-radius: var(--radius-full); display: none; align-items: center; justify-content: center; color: var(--color-text-tertiary); margin: 0 -8px 0 0; }
.search-clear.visible { display: flex; }

@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
.daily-card:hover { box-shadow:var(--shadow-card); }
.daily-card:active { opacity:0.9; }
.daily-card-row { display:flex;align-items:center;gap:var(--space-3); }
.daily-card-text { flex:1;min-width:0; }
.daily-card-name { font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.daily-card-progress { font-size:var(--text-xs);color:var(--color-text-secondary);margin-top:1px; }
.daily-card-secondary { font-size:var(--text-xs);color:var(--color-text-secondary);font-style:italic;margin-top:1px; }
.daily-card-prompt { font-size:var(--text-xs);color:var(--color-text-secondary);font-style:italic;padding:var(--space-2) var(--space-3) 0;border-top:1px solid var(--color-border-light);margin-top:var(--space-2); }
.daily-card-color { width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:2px;align-self:flex-start;box-shadow:0 0 4px color-mix(in srgb, currentColor 30%, transparent); }
.daily-card-rank { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-accent);text-transform:uppercase;letter-spacing:0.05em;line-height:1;margin-bottom:2px; }
.daily-card-teaser { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-1);display:flex;align-items:center;gap:4px; }
.daily-card-teaser svg { flex-shrink:0;color:var(--color-text-tertiary);transition:transform 0.15s ease; }
.daily-card:hover .daily-card-teaser svg,.daily-card:active .daily-card-teaser svg { transform:translateX(2px); }
/* Dark mode — daily card */
html[data-theme="dark"] .daily-card { background:linear-gradient(135deg, rgba(15,12,5,0.08) 0%, var(--color-surface) 100%);border:1px solid var(--color-border); }
html[data-theme="dark"] .daily-card { background:linear-gradient(135deg, color-mix(in srgb, var(--color-sacred) 8%, transparent) 0%, var(--color-surface) 100%);border:1px solid var(--color-border); }
html[data-theme="dark"] .daily-card-name { color:var(--color-text-primary); }
html[data-theme="dark"] .daily-card-secondary { color:var(--color-text-secondary); }
html[data-theme="dark"] .daily-card-rank { color:var(--color-accent); }
html[data-theme="dark"] .daily-card-teaser { color:var(--color-text-secondary); }
html[data-theme="dark"] .daily-card-color { box-shadow:0 0 6px color-mix(in srgb, currentColor 40%, transparent); }

/* INV-01: Whispered Invitation — Find Tab */
.whispered-invitation {
  padding: var(--space-6) var(--space-4);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  animation: fadeIn 0.3s ease-out;
}
.whispered-invitation__text {
  font-family: var(--font-prayer);
  font-size: var(--text-lg);
  font-style: italic;
  font-weight: var(--weight-regular);
  color: var(--color-text-primary);
  line-height: 1.6;
  opacity: 0.92;
}
.whispered-invitation__cta {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  margin-top: var(--space-3);
  display: flex;
  align-items: center;
  gap: 4px;
}
.whispered-invitation__cta svg {
  flex-shrink: 0;
  transition: transform 0.15s ease;
}
.whispered-invitation:hover .whispered-invitation__cta svg,
.whispered-invitation:active .whispered-invitation__cta svg {
  transform: translateX(2px);
}
/* INV-01: Loading shimmer */
.whispered-invitation--loading .whispered-invitation__text {
  height: 1.6em;
  background: linear-gradient(90deg, var(--color-border-light) 25%, transparent 50%, var(--color-border-light) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
  border-radius: var(--radius-sm);
  max-width: 280px;
}
@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
/* INV-01: Centering (all sizes) */
.whispered-invitation { text-align: center; }
.whispered-invitation__cta { justify-content: center; }
.whispered-invitation--loading .whispered-invitation__text { margin: 0 auto; }
/* INV-01: Dark mode */
html[data-theme="dark"] .whispered-invitation__text {
  color: var(--color-sacred-text);
  opacity: 0.88;
}
html[data-theme="dark"] .whispered-invitation__cta {
  color: var(--color-text-secondary);
}
html[data-theme="dark"] .whispered-invitation--loading .whispered-invitation__text {
  background: linear-gradient(90deg, var(--color-border) 25%, transparent 50%, var(--color-border) 75%);
  background-size: 200% 100%;
}
/* INV-01: Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .whispered-invitation--loading .whispered-invitation__text { animation: none; }
}

/* More tab daily prompt */
.more-daily-prompt { font-size:var(--text-sm);color:var(--color-text-secondary);font-style:italic;text-align:center;padding:var(--space-3) var(--space-4) 0; }
/* Daily Formation card (MT-02: Baltimore Q&A) */
.formation-card { background:var(--color-surface-sacred);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-card), var(--shadow-sacred-glow);border-left:3px solid var(--color-sacred); }
.formation-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-sacred-text);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--space-2); }
.formation-deeper { margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid rgba(37,30,13,0.20); }
.formation-deeper { margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid color-mix(in srgb, var(--color-sacred) 20%, transparent); }
.formation-deeper-toggle { display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-sacred-text);cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent; }
.formation-deeper-toggle::-webkit-details-marker { display:none; }
.formation-deeper[open] .formation-deeper-toggle svg { transform:rotate(180deg); }
.formation-deeper-body { margin-top:var(--space-3); }
html[data-theme="dark"] .formation-card { background:var(--color-surface-sacred);border-left-color:var(--color-sacred); }
html[data-theme="dark"] .formation-deeper { border-top-color:rgba(28,23,9,0.15); }
html[data-theme="dark"] .formation-deeper { border-top-color:color-mix(in srgb, var(--color-sacred) 15%, transparent); }
html[data-theme="dark"] .formation-label { text-shadow:0 0 30px rgba(28,23,9,0.12); }
html[data-theme="dark"] .formation-label { text-shadow:0 0 30px color-mix(in srgb, var(--color-sacred) 12%, transparent); }
/* Baltimore Q&A elements (used in formation card) */
.reflection-question { font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text-primary);line-height:1.4;font-weight:var(--weight-semibold);margin-bottom:var(--space-2); }
.reflection-answer { font-family:var(--font-prayer);font-size:var(--text-base);color:var(--color-text-secondary);line-height:1.6;font-style:italic; }
.reflection-ccc-link { color:var(--color-primary);cursor:pointer;font-style:normal; }
/* Gospel reflection within formation card */
.reflection-gospel-ref { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-secondary);margin-bottom:var(--space-2);letter-spacing:0.02em; }
.reflection-prompt { font-family:var(--font-prayer);font-size:var(--text-sm);line-height:1.75;color:var(--color-text); }
.formation-divider { height:1px;background:var(--color-border, rgba(14,15,17,0.15));margin:var(--space-4) 0; }
.formation-divider { height:1px;background:var(--color-border, color-mix(in srgb, var(--color-text-secondary) 15%, transparent));margin:var(--space-4) 0; }
.reflection-ccc-link:hover { text-decoration:underline; }
.reflection-cite { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-1); }
/* Holy Week Editorial Content (HWE) */
.formation-hwe-thread { font-family:var(--font-display);font-size:1.1rem;font-style:italic;color:var(--color-sacred);margin-bottom:0.75rem; }
.formation-hwe-reflection p { font-family:var(--font-body);font-size:0.95rem;line-height:1.65;margin-bottom:0.75rem;color:var(--color-text); }
.formation-hwe-reflection p:last-child { margin-bottom:0; }
.formation-hwe-reference { font-family:var(--font-body);font-size:0.8rem;color:var(--color-text-secondary);margin-bottom:0.5rem; }
.formation-hwe-text p { font-family:var(--font-prayer);font-size:0.93rem;line-height:1.6;margin-bottom:0.6rem;color:var(--color-text); }
.formation-hwe-text p:last-child { margin-bottom:0; }
.formation-hwe-quote { font-family:var(--font-prayer);font-size:0.95rem;font-style:italic;line-height:1.55;color:var(--color-text);margin-bottom:0.25rem; }
.formation-hwe-attribution { font-family:var(--font-body);font-size:0.8rem;color:var(--color-text-secondary); }
/* Slot 3: Saint Quote */
.saint-quote-text { font-family:var(--font-prayer);font-size:1.05rem;font-style:italic;color:var(--color-text-primary);line-height:1.6;margin-bottom:var(--space-1); }
.saint-quote-attribution { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary); }
/* Slot 4: Spiritual Reading */
.reading-type-label { font-family:var(--font-display);font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:0.04em;color:var(--color-sacred-text);margin-bottom:var(--space-1); }
.reading-source { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);margin-bottom:var(--space-2); }
.reading-text { font-family:var(--font-prayer);font-size:var(--text-sm);line-height:1.6;color:var(--color-text-secondary); }
.reading-text-collapsed { max-height:6em;overflow:hidden;position:relative; }
.reading-text-collapsed::after { content:'';position:absolute;bottom:0;left:0;right:0;height:2em;background:linear-gradient(transparent, #FFFCF5); }
html[data-theme="dark"] .reading-text-collapsed::after { background:linear-gradient(transparent, color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface))); }
.read-more-toggle { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-sacred-text);cursor:pointer;margin-top:var(--space-1);-webkit-tap-highlight-color:transparent; }
/* YOUR CHURCHES ROW (Change 5+21) */
.yc-row-wrap { max-width:var(--max-width);margin:0 auto;padding:var(--space-2) 0 0; }
.yc-row-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;padding:0 var(--space-4);margin-bottom:var(--space-2); }
.yc-row-scroll { display:flex;gap:var(--space-3);overflow-x:auto;padding:0 var(--space-4) var(--space-2);scrollbar-width:none;-webkit-overflow-scrolling:touch; }
.yc-row-scroll::-webkit-scrollbar { display:none; }
.yc-compact { flex-shrink:0;width:140px;padding:var(--space-3);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:0 1px 3px rgba(0,0,0,0.06);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:box-shadow var(--transition-fast); }
.yc-compact:hover { box-shadow:var(--shadow-card); }
.yc-compact:active { opacity:0.85; }
.yc-compact-name { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-heading);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.yc-compact-time { font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-primary);margin-top:var(--space-1); }
.yc-compact-label { font-size:var(--text-xs);color:var(--color-text-secondary);margin-top:2px; }
.yc-compact-events { font-size:var(--text-xs);color:var(--color-sacred-text);font-weight:var(--weight-semibold);margin-top:var(--space-1); }

/* PRAYER ACTIVITY (Change 19) */
.prayer-activity { display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md); }
.prayer-activity-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;margin-right:auto; }
.prayer-stat { display:flex;align-items:center;gap:4px;background:var(--color-verified-bg);padding:4px 10px;border-radius:var(--radius-pill);border:1px solid var(--color-verified); }
.prayer-stat-icon { font-size:14px; }
.prayer-stat-count { font-size:var(--text-sm);font-weight:var(--weight-bold);color:var(--color-text-primary); }
.prayer-stat-label { font-size:var(--text-xs);color:var(--color-text-secondary); }

/* WELCOME BANNER (Change 4) */
.welcome-wrap { max-width:var(--max-width);margin:0 auto;padding:var(--space-3) var(--space-4) 0; }
.welcome-banner { display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);background:var(--color-primary);border-radius:var(--radius-md); }
.welcome-text { flex:1; }
.welcome-title { font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text-inverse);margin-bottom:var(--space-1); }
.welcome-desc { font-size:var(--text-sm);color:var(--color-text-inverse);opacity:0.85;line-height:1.5; }
.welcome-dismiss { flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:var(--text-xs);color:var(--color-text-inverse);opacity:0.6; }
.welcome-dismiss:hover { opacity:1;background:rgba(255,255,255,0.15); }

/* RETURN VISIT CARD (Change 18) */
.return-card-wrap { max-width:var(--max-width);margin:0 auto;padding:var(--space-2) var(--space-4) 0; }
.return-card { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface-hover);border-radius:var(--radius-md); }
.return-text { flex:1;font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.4; }
.return-dismiss { flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:var(--text-xs);color:var(--color-text-tertiary);opacity:0.6; }
.return-dismiss:hover { opacity:1;background:rgba(0,0,0,0.05); }

/* CONFESSION PROMPT (Change 20) */
.conf-prompt-wrap { max-width:var(--max-width);margin:0 auto;padding:0 var(--space-4); }
.conf-nudge { font-size:var(--text-xs);color:var(--color-verified);font-weight:var(--weight-medium);cursor:pointer;padding:var(--space-2) 0;-webkit-tap-highlight-color:transparent; }
.conf-nudge:hover { text-decoration:underline; }

/* SHAPED SKELETONS (Change 10) */
.skel-card { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-card);animation:pulse 1.5s ease-in-out infinite; }
.skel-title { width:55%;height:14px;background:var(--color-surface-hover);border-radius:4px;margin-bottom:var(--space-3); }
.skel-line { width:80%;height:10px;background:var(--color-surface-hover);border-radius:4px;margin-bottom:var(--space-2); }
.skel-line--short { width:45%; }
.skel-badges { display:flex;gap:var(--space-2);margin-top:var(--space-3); }
.skel-badge { width:60px;height:22px;background:var(--color-surface-hover);border-radius:var(--radius-full); }

/* TEXT SIZE PREFERENCE — anchored up for older audience */
html { font-size:17px; }
[data-text-size="small"] { font-size:15px; }
[data-text-size="large"] { font-size:19px; }
[data-text-size="x-large"] { font-size:22px; }
.footer-controls { display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3); }
.text-size-control { display:flex;align-items:center;gap:var(--space-2); }
.text-size-label { font-size:var(--text-xs);color:var(--color-text-tertiary); }
.text-size-btns { display:flex;gap:2px;background:var(--color-surface-hover);border-radius:var(--radius-md);padding:2px; }
.text-size-btn { width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:calc(var(--radius-md) - 2px);font-size:12px;color:var(--color-text-secondary);font-weight:var(--weight-semibold);transition:all var(--transition-fast); }
.text-size-btn--md { font-size:15px; }
.text-size-btn--lg { font-size:18px; }
.text-size-btn.active { background:var(--color-surface);color:var(--color-text-primary);box-shadow:0 1px 2px rgba(0,0,0,0.1); }

/* CHIPS */
.chip-bar-wrap { position: relative; }
.chip-bar { max-width: var(--max-width); margin: 0 auto; padding: var(--space-2) 0 var(--space-1); overflow-x: auto; display: flex; gap: var(--space-2); scrollbar-width: none; -webkit-overflow-scrolling: touch; -webkit-mask-image: linear-gradient(to right, black 88%, transparent 100%); mask-image: linear-gradient(to right, black 88%, transparent 100%); transition: mask-image 0.2s; -webkit-overscroll-behavior: contain; overscroll-behavior: contain; touch-action: pan-x; align-items: center; min-height: 44px; }
.chip-bar.scrolled { -webkit-mask-image: none; mask-image: none; }
.chip-bar::-webkit-scrollbar { display: none; }
.chip-bar::before, .chip-bar::after { content: ''; flex-shrink: 0; width: var(--space-4); }
.chip { flex-shrink: 0; height: 34px; padding: 0 var(--space-3); border-radius: var(--radius-full); font-size: var(--text-sm); font-weight: var(--weight-regular); line-height: 34px; white-space: nowrap; background: transparent; color: var(--color-text-secondary); border: 1px solid var(--color-border); transition: all var(--transition-fast); user-select: none; -webkit-tap-highlight-color: transparent; }
.chip:hover { border-color: var(--color-text-tertiary); }
.chip:active { transform: scale(0.97); }
.chip.active { background: var(--color-accent-pale); color: var(--color-accent-text); border-color: color-mix(in srgb, var(--color-accent) 20%, transparent); font-weight: var(--weight-semibold); }
html[data-theme="dark"] .chip.active { background: color-mix(in srgb, var(--color-accent) 10%, transparent); color: var(--color-accent); border-color: color-mix(in srgb, var(--color-accent) 25%, transparent); }
/* D20: Sacred chip modifier — Confession, Adoration */
.chip--sacred { border-color: color-mix(in srgb, var(--color-sacred) 25%, var(--color-border)); }
.chip--sacred.active { background: var(--color-sacred-pale); color: var(--color-sacred-text); border-color: color-mix(in srgb, var(--color-sacred) 30%, transparent); }
html[data-theme="dark"] .chip--sacred.active { background: color-mix(in srgb, var(--color-sacred) 10%, transparent); color: var(--color-sacred); border-color: color-mix(in srgb, var(--color-sacred) 25%, transparent); }
.chip.more-filters { border-style: dashed; }
.chip.season-chip { border-color: var(--color-verified); color: var(--color-verified); }
.chip.season-chip.active { background: color-mix(in srgb, var(--color-accent) 8%, transparent); color: var(--color-accent-text); border-color: color-mix(in srgb, var(--color-accent) 20%, transparent); font-weight: var(--weight-semibold); }
.chip .chip-count { display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,0.25); border-radius: var(--radius-full); font-size: 11px; min-width: 18px; height: 18px; padding: 0 5px; margin-left: 4px; }

@media (max-width: 767px) {
.more-section p, .more-section li, .coming-soon-details div { font-size: var(--text-base) !important; }
  .saved-evt .ce-item-title { font-size: var(--text-base); }
  .saved-evt .ce-item-when { font-size: var(--text-sm); }
  .saved-compact-yc .ce-item-title { font-size: var(--text-base); }
  .saved-compact-yc .ce-item-when { font-size: var(--text-sm); }
}

/* ACTIVE FILTER PILLS */
.active-filters { max-width: var(--max-width); margin: 0 auto; padding: 0 var(--space-4); display: flex; flex-wrap: wrap; gap: var(--space-2); }
.active-filters:empty { display: none; }
.filter-pill { display: inline-flex; align-items: center; gap: 4px; font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--color-primary); background: var(--color-info-bg); padding: 4px 8px 4px 10px; border-radius: var(--radius-full); }
.filter-pill button { width: 44px; height: 44px; margin: -12px -16px -12px -8px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--color-primary-muted); font-size: 14px; }
.filter-pill button:hover { background: rgba(44,62,90,0.1); }

/* RESULTS */
.results-info { max-width: var(--max-width); margin: 0 auto; padding: var(--space-2) var(--space-4); display: flex; align-items: center; justify-content: space-between; min-height: 0; }
.results-count { font-size: var(--text-xs); color: var(--color-text-tertiary); font-weight: var(--weight-regular); display: flex; align-items: center; gap: var(--space-2); }
.quick-filter-clear { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-primary); background: var(--color-surface-hover); border: 1px solid var(--color-border); border-radius: var(--radius-full); padding: 1px 8px; cursor: pointer; line-height: 1.6; white-space: nowrap; }
.results-sort { font-size: var(--text-xs); color: var(--color-text-tertiary); font-weight: var(--weight-regular); display: flex; align-items: center; gap: var(--space-1); padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); min-height: 44px; }
.results-sort:hover { background: var(--color-surface-hover); }
.results-sort svg { display: none; }

/* REFRESH BUTTON */
.results-refresh { color: var(--color-text-tertiary); padding: var(--space-2); border-radius: var(--radius-sm); min-height: 44px; min-width: 44px; display: flex; align-items: center; justify-content: center; }
.results-refresh:hover { background: var(--color-surface-hover); }
.results-refresh svg { width: 16px; height: 16px; transition: transform 0.3s ease; }
.results-refresh.spinning svg { animation: spin 0.8s linear infinite; }
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

/* PULL-TO-REFRESH INDICATOR */
.pull-indicator { text-align: center; overflow: hidden; height: 0; transition: height 0.2s ease; }
.pull-indicator-inner { padding: var(--space-2) 0; display: flex; align-items: center; justify-content: center; gap: var(--space-2); font-size: var(--text-xs); color: var(--color-text-tertiary); }
.pull-indicator svg { width: 18px; height: 18px; color: var(--color-text-tertiary); transition: transform 0.2s ease; }
.pull-indicator.ready svg { transform: rotate(180deg); color: var(--color-accent); }
.pull-indicator.refreshing svg { animation: spin 0.8s linear infinite; color: var(--color-accent); }

/* PWA INSTALL BANNER (compact) */
.install-banner { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md);margin-bottom:var(--space-3); }
.install-banner-icon { flex-shrink:0;color:var(--color-text-tertiary); }
.install-banner-text { flex:1;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-tertiary); }
.install-banner-action { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-primary);background:none;border:1px solid var(--color-border-light);border-radius:var(--radius-sm);padding:4px var(--space-2);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:28px; }
.install-banner-action:active { opacity:0.7; }
.install-banner-close { display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;color:var(--color-text-tertiary);border-radius:50%;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.install-banner-close:active { background:var(--color-surface-hover); }

/* VISUAL INSTALL GUIDE */
.ig-overlay { position:fixed;inset:0;z-index:var(--z-install-guide);background:var(--color-surface);display:flex;align-items:center;justify-content:center;overflow-y:auto; }
.ig-container { width:100%;max-width:400px;padding:var(--space-6) var(--space-4);text-align:center;position:relative; }
.ig-close { position:absolute;top:var(--space-2);right:var(--space-2);width:44px;height:44px;display:flex;align-items:center;justify-content:center;color:var(--color-text-tertiary);font-size:1.2rem;border-radius:50%;z-index:1; }
.ig-close:hover { background:var(--color-surface-hover); }
.ig-step-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-4); }
.ig-visual { display:flex;justify-content:center;margin-bottom:var(--space-5); }
.ig-caption { font-size:var(--text-lg);color:var(--color-text-primary);line-height:1.4;margin-bottom:var(--space-4);min-height:3.5em; }
.ig-caption strong { color:var(--color-primary);font-weight:var(--weight-semibold); }
.ig-dots { display:flex;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-5); }
.ig-dot { width:8px;height:8px;border-radius:50%;background:var(--color-border);transition:background 0.2s; }
.ig-dot.active { background:var(--color-primary);width:24px;border-radius:4px; }
.ig-nav { display:flex;justify-content:space-between;align-items:center;gap:var(--space-3); }
.ig-nav-btn { min-height:48px;padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);font-size:var(--text-base);font-weight:var(--weight-semibold);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.ig-nav-back { color:var(--color-text-secondary);background:var(--color-surface-hover); }
.ig-nav-next { color:white;background:var(--color-primary);flex:1; }
.ig-picker-title { font-size:var(--text-xl);font-weight:var(--weight-bold);text-align:center;margin-bottom:var(--space-6);color:var(--color-text-primary); }
.ig-picker { display:flex;gap:var(--space-4);justify-content:center; }
.ig-picker-btn { display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-8);border-radius:var(--radius-lg);background:var(--color-surface-hover);border:2px solid var(--color-border-light);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color 0.15s,transform 0.15s;min-width:140px; }
.ig-picker-btn:active { transform:scale(0.97);border-color:var(--color-primary); }
.ig-picker-icon { font-size:40px;line-height:1; }
.ig-picker-label { font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary); }
/* Phone frame */
.ig-phone { width:220px;height:400px;background:#1a1a1a;border-radius:32px;padding:8px;position:relative;box-shadow:0 8px 24px rgba(0,0,0,0.15); }
.ig-phone--android { border-radius:20px; }
.ig-phone-screen { width:100%;height:100%;background:#f8f8f8;border-radius:24px;overflow:hidden;display:flex;flex-direction:column;position:relative; }
.ig-phone--android .ig-phone-screen { border-radius:14px; }
/* Status bar */
.ig-status-bar { display:flex;justify-content:center;padding:4px 16px;font-size:10px;font-weight:600;color:#333;background:#f2f2f7; }
/* Screen content */
.ig-screen-content { flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-3);background:white; }
.ig-screen-content.ig-scrim { background:rgba(0,0,0,0.3); }
.ig-app-preview { text-align:center; }
.ig-app-preview.ig-dimmed { opacity:0.3; }
.ig-app-icon { width:52px;height:52px;background:var(--color-primary);color:white;border-radius:14px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:18px;margin:0 auto var(--space-2); }
.ig-app-label { font-size:12px;color:#666;font-weight:500; }
/* iOS Safari bottom bar (iOS 15+) */
.ig-safari-bottom { background:#f2f2f7;padding:6px 10px 8px;border-top:1px solid #ddd; }
.ig-safari-pill { background:white;border-radius:10px;padding:6px 12px;font-size:11px;color:#666;text-align:center;margin-bottom:6px; }
.ig-safari-toolbar { display:flex;justify-content:space-around;align-items:center; }
/* iOS Chrome bottom bar */
.ig-chrome-bottom { background:#f2f2f7;padding:6px 10px 8px;border-top:1px solid #ddd; }
.ig-chrome-pill { background:white;border-radius:10px;padding:6px 12px;font-size:11px;color:#666;text-align:center;margin-bottom:6px; }
.ig-chrome-toolbar { display:flex;justify-content:space-around;align-items:center; }
/* Toolbar buttons (shared iOS) */
.ig-tb-btn { width:36px;height:32px;display:flex;align-items:center;justify-content:center;font-size:18px;color:#007AFF;border-radius:8px; }
.ig-tb-btn.dim { opacity:0.25; }
.ig-tb-btn.highlight { background:rgba(0,122,255,0.15);color:#007AFF; }
/* Android top bar */
.ig-android-topbar { display:flex;align-items:center;gap:8px;padding:8px 10px;background:#f2f2f7;border-bottom:1px solid #ddd; }
.ig-android-pill { flex:1;background:white;border-radius:20px;padding:8px 14px;font-size:12px;color:#666;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ig-android-dots { width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;color:#444;border-radius:50%;flex-shrink:0; }
.ig-android-dots.highlight { background:rgba(0,122,255,0.15); }
.ig-android-navbar { display:flex;justify-content:space-around;align-items:center;padding:6px 0;background:#f2f2f7;border-top:1px solid #ddd;font-size:14px;color:#999; }
/* Android dropdown menu */
.ig-android-dropdown { position:absolute;top:44px;right:8px;width:70%;background:white;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,0.2);z-index:2;overflow:hidden; }
/* Share sheet (iOS) */
.ig-share-sheet { flex:1;display:flex;flex-direction:column;justify-content:flex-end;background:rgba(0,0,0,0.25); }
.ig-sheet-content { background:#f2f2f7;border-radius:12px 12px 0 0;padding-bottom:8px; }
.ig-sheet-handle { width:36px;height:4px;background:#bbb;border-radius:2px;margin:10px auto; }
.ig-sheet-header { font-size:11px;color:#888;text-align:center;padding:0 16px 8px;border-bottom:1px solid #ddd; }
.ig-sheet-row { display:flex;align-items:center;padding:12px 16px;font-size:13px;color:#333;border-bottom:1px solid #eee; }
.ig-sheet-row.dim { opacity:0.35; }
.ig-sheet-row.highlight { background:rgba(0,122,255,0.1);border-radius:8px;font-weight:600;color:#007AFF;opacity:1; }
/* Android dialog */
.ig-android-dialog { background:white;border-radius:16px;box-shadow:0 4px 24px rgba(0,0,0,0.15);margin:auto 12px;padding:20px; }
.ig-dialog-title { font-size:16px;font-weight:600;color:#222;margin-bottom:16px; }
.ig-dialog-preview { display:flex;flex-direction:column;align-items:center;gap:4px;margin-bottom:20px; }
.ig-dialog-actions { display:flex;justify-content:flex-end;gap:12px; }
.ig-dialog-btn { font-size:13px;font-weight:600;padding:8px 16px;border-radius:20px;cursor:pointer; }
.ig-dialog-btn.dim { color:#999; }
.ig-dialog-btn.highlight { color:white;background:#007AFF; }
/* Confirm dialog (iOS) */
.ig-confirm-dialog { flex:1;display:flex;flex-direction:column;background:#f8f8f8; }
.ig-confirm-bar { display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #ddd; }
.ig-confirm-cancel { font-size:14px;color:#007AFF; }
.ig-confirm-title { font-size:14px;font-weight:600;color:#222; }
.ig-confirm-add { font-size:14px;font-weight:600;color:#007AFF; }
.ig-confirm-add.highlight { background:rgba(0,122,255,0.12);padding:6px 12px;border-radius:6px; }
.ig-confirm-preview { flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px; }
.ig-confirm-icon { width:52px;height:52px;background:var(--color-primary);color:white;border-radius:12px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:18px; }
.ig-confirm-name { font-size:14px;font-weight:600;color:#222; }
.ig-confirm-url { font-size:11px;color:#999; }
/* Tap ring — JS-positioned on .highlight element */
.ig-tap-ring { position:absolute;width:44px;height:44px;border:3px solid #007AFF;border-radius:50%;animation:ig-ring 1.5s infinite;pointer-events:none; }
@keyframes ig-ring { 0%{transform:scale(0.8);opacity:0.8} 50%{transform:scale(1.3);opacity:0.2} 100%{transform:scale(0.8);opacity:0.8} }
/* IGM-01: Safari URL bar */
.ig-safari-urlbar { display:flex;align-items:center;gap:6px;background:white;border-radius:10px;padding:6px 10px;margin-bottom:6px;font-size:11px;color:#666; }
.ig-safari-domain { flex:1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ig-safari-lock { flex-shrink:0;opacity:0.5; }
/* IGM-02: iOS share sheet rebuild */
.ig-sheet-ios { background:#f2f2f7;border-radius:12px 12px 0 0;overflow:hidden; }
.ig-sheet-hdr { display:flex;align-items:center;gap:8px;padding:12px 12px 8px; }
.ig-sheet-app-icon { width:32px;height:32px;background:var(--color-primary);color:var(--color-accent);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;flex-shrink:0; }
.ig-sheet-hdr-text { min-width:0; }
.ig-sheet-hdr-title { font-size:11px;font-weight:600;color:#222;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.ig-sheet-hdr-domain { font-size:10px;color:#888; }
.ig-sheet-targets { display:flex;gap:10px;padding:8px 12px;border-top:1px solid #ddd;border-bottom:1px solid #ddd; }
.ig-sheet-target { display:flex;flex-direction:column;align-items:center;gap:4px;font-size:8px;color:#666; }
.ig-target-circle { width:36px;height:36px;background:#e0e0e0;border-radius:50%; }
.ig-sheet-actions { display:flex;gap:10px;padding:8px 12px;border-bottom:1px solid #ddd; }
.ig-sheet-action { display:flex;flex-direction:column;align-items:center;gap:4px;font-size:8px;color:#666;text-align:center;line-height:1.2; }
.ig-action-circle { width:36px;height:36px;background:#e0e0e0;border-radius:50%; }
.ig-sheet-group { background:white;border-radius:10px;margin:6px 8px;overflow:hidden; }
.ig-sheet-group .ig-sheet-row { border-bottom:1px solid #f0f0f0; }
.ig-sheet-group .ig-sheet-row:last-child { border-bottom:none; }
/* IGM-03: Chrome bar */
.ig-chrome-bar { display:flex;align-items:center;gap:6px;padding:4px 6px; }
.ig-chrome-circle { width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;color:#666;background:#e0e0e0;border-radius:50%;flex-shrink:0; }
.ig-chrome-circle.highlight { background:rgba(0,122,255,0.15);color:#007AFF; }
.ig-chrome-circle.dim { opacity:0.5; }
.ig-chrome-url { flex:1;background:#e8e8ed;border-radius:16px;padding:6px 10px;font-size:10px;color:#666;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
/* IGM-04/05: Chrome menu */
.ig-chrome-menu { position:absolute;bottom:48px;left:12px;right:12px;background:#2c2c2e;border-radius:14px;overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,0.4);z-index:2; }
.ig-chrome-menu-item { display:flex;align-items:center;gap:8px;padding:10px 14px;font-size:12px;color:#fff;border-bottom:1px solid #3a3a3c; }
.ig-chrome-menu-item.dim { opacity:0.4; }
.ig-chrome-menu-item.highlight { opacity:1;background:rgba(0,122,255,0.15);color:#64ACFF; }
.ig-chrome-menu-sep { height:6px;background:#1c1c1e; }
.ig-chrome-menu-footer { display:flex;border-top:1px solid #3a3a3c; }
.ig-chrome-footer-btn { flex:1;text-align:center;padding:10px 0;font-size:11px;font-weight:600;color:#fff;opacity:0.5; }
.ig-chrome-footer-btn + .ig-chrome-footer-btn { border-left:1px solid #3a3a3c; }
/* IGM dark mode for share sheet */
.dark .ig-sheet-ios { background:#1c1c1e; }
.dark .ig-sheet-hdr-title { color:#fff; }
.dark .ig-sheet-hdr-domain { color:#8e8e93; }
.dark .ig-sheet-targets,.dark .ig-sheet-actions { border-color:#38383a; }
.dark .ig-target-circle,.dark .ig-action-circle { background:#3a3a3c; }
.dark .ig-sheet-target,.dark .ig-sheet-action { color:#aaa; }
.dark .ig-sheet-group { background:#2c2c2e; }
.dark .ig-sheet-group .ig-sheet-row { color:#ddd;border-color:#38383a; }
.dark .ig-safari-urlbar { background:#2c2c2e;color:#aaa; }
.dark .ig-chrome-circle { background:#3a3a3c; }
.dark .ig-chrome-url { background:#2c2c2e;color:#aaa; }

/* CARDS */
.card-list { max-width: var(--max-width); margin: 0 auto; padding: var(--space-2) var(--space-4); display: flex; flex-direction: column; gap: var(--space-3); }
.parish-card { background: var(--color-surface); border-radius: var(--radius-md); padding: var(--space-5); box-shadow: var(--shadow-card); cursor: pointer; transition: box-shadow var(--transition-base), transform var(--transition-fast); position: relative; display: flex; flex-direction: column; gap: var(--space-2); }
/* DSN-02: Saved state gold border */
.parish-card--saved { border-left: 3px solid var(--color-sacred); background: color-mix(in srgb, var(--color-sacred) 2%, var(--color-surface)); }
.parish-card:hover { box-shadow: var(--shadow-card-hover); }
.parish-card:active { transform: scale(0.98); }
.card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-2); }
.card-name-row { display: flex; align-items: center; gap: 6px; flex: 1; min-width: 0; }
.card-name { font-size: var(--text-lg); font-weight: var(--weight-semibold); color: var(--color-text-primary); line-height: 1.3; }
.card-verified { color: var(--color-verified); flex-shrink: 0; width: 16px; height: 16px; }
.card-right { display: flex; align-items: center; gap: var(--space-2); flex-shrink: 0; }
.card-distance { font-size: var(--text-xs); color: var(--color-text-tertiary); font-weight: var(--weight-medium); white-space: nowrap; }
.card-fav { width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--color-text-tertiary); transition: all var(--transition-fast); margin: -6px -6px -6px 0; }
.card-fav:hover { background: var(--color-surface-hover); color: var(--color-fav); }
.card-fav.is-fav { color: var(--color-fav); }
.card-fav svg { width: 18px; height: 18px; }
.card-list-separator { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0; }
.card-list-separator span { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;white-space:nowrap; }
.card-list-separator::after { content:'';flex:1;height:1px;background:var(--color-border-light); }
.card-town { font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.3; }
.card-search-match { font-size:var(--text-xs);color:var(--color-text-secondary);margin-top:var(--space-1);padding:var(--space-1) var(--space-2);background:var(--color-verified-bg);border-radius:var(--radius-sm);line-height:1.4; }
.card-match-label { font-weight:var(--weight-semibold);color:var(--color-primary);font-size:var(--text-xs);margin-bottom:2px; }
/* DSN-02: Contextual badge row */
.card-badge-row { display:flex;gap:var(--space-1);flex-wrap:wrap;margin-top:2px; }
.card-badge { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-medium);padding:2px 8px;border-radius:var(--radius-full);white-space:nowrap; }
.card-badge--seasonal { color:var(--color-accent);background:var(--color-accent-pale); }
.card-badge--confession { color:var(--color-verified);background:var(--color-verified-bg); }
.card-badge--lang { color:var(--color-text-secondary);background:var(--color-surface-hover); }
.card-evt-row { display:flex;align-items:center;gap:4px;font-size:var(--text-xs);color:var(--color-text-secondary);margin-top:var(--space-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.card-next-service { display: flex; align-items: baseline; gap: var(--space-2); margin-top: var(--space-1); flex-wrap: wrap; }
.card-next-time { font-size: var(--text-2xl); font-weight: var(--weight-semibold); color: var(--color-primary); line-height: 1.15; letter-spacing: -0.02em; }
.card-next-label { font-size: var(--text-sm); color: var(--color-text-secondary); font-weight: var(--weight-medium); }
.card-next-day { font-size: var(--text-xs); color: var(--color-text-tertiary); }
.card-soon-badge { display: inline-flex; align-items: center; gap: var(--space-1); font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-soon-text); background: var(--color-soon-pale); padding: 2px var(--space-2); border-radius: var(--radius-full); }
.card-soon-badge .pulse-dot { width: 6px; height: 6px; background: var(--color-soon); border-radius: 50%; animation: pulse 2s ease-in-out infinite; }
.card-live-badge { display: inline-flex; align-items: center; gap: var(--space-1); font-size: var(--text-xs); font-weight: var(--weight-semibold); color: #fff; background: var(--color-verified); padding: 2px var(--space-2); border-radius: var(--radius-full); }
.card-live-badge .pulse-dot { width: 6px; height: 6px; background: #fff; border-radius: 50%; animation: pulse 1.5s ease-in-out infinite; }
@keyframes pulse { 0%,100% { opacity:1; } 50% { opacity:0.4; } }
.no-results { text-align: center; padding: var(--space-12) var(--space-4); }
/* FT-08: Live/Soon card visual tinting */
.parish-card--live { border-left:3px solid var(--color-verified);background:linear-gradient(135deg, var(--color-verified-bg) 0%, var(--color-surface) 60%); }
.parish-card--soon { border-left:3px solid var(--color-soon);background:linear-gradient(135deg, var(--color-soon-pale) 0%, var(--color-surface) 60%); }
/* SFD-01-A: Imminent tier card — elevated, accent border */
.parish-card--imminent { border-left:3px solid var(--color-soon);box-shadow:0 2px 8px rgba(0,0,0,0.12); }
/* DSN-08: Saved + live/soon stacking */
.parish-card--saved.parish-card--live { background: linear-gradient(135deg, color-mix(in srgb, var(--color-sacred) 2%, var(--color-verified-bg)) 0%, color-mix(in srgb, var(--color-sacred) 2%, var(--color-surface)) 60%); }
.parish-card--saved.parish-card--soon { background: linear-gradient(135deg, color-mix(in srgb, var(--color-sacred) 2%, var(--color-soon-pale)) 0%, color-mix(in srgb, var(--color-sacred) 2%, var(--color-surface)) 60%); }
.card-imminent-badge { display:inline-flex;align-items:center;font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-soon-text);background:var(--color-soon-pale);padding:2px 8px;border-radius:var(--radius-full); }
/* SFD-01-A: Muted badges for non-imminent Live/Soon */
.card-live-badge--muted, .card-soon-badge--muted { font-size:11px;padding:1px 6px;opacity:0.75; }
/* SFD-01-B: Find tab section dividers */
.find-section-divider { display:flex;align-items:center;gap:var(--space-3);margin:var(--space-4) 0 var(--space-2); }
.find-section-divider span { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;white-space:nowrap; }
.find-section-divider::before, .find-section-divider::after { content:'';flex:1;height:1px;background:var(--color-border-light); }
html[data-theme="dark"] .parish-card--imminent { box-shadow:0 2px 8px rgba(0,0,0,0.3); }
html[data-theme="dark"] .parish-card--live { background:linear-gradient(135deg, rgba(74,124,89,0.08) 0%, var(--color-surface) 60%); }
html[data-theme="dark"] .parish-card--soon { background:linear-gradient(135deg, rgba(12,8,1,0.06) 0%, var(--color-surface) 60%); }
html[data-theme="dark"] .parish-card--soon { background:linear-gradient(135deg, color-mix(in srgb, var(--color-soon) 6%, transparent) 0%, var(--color-surface) 60%); }
/* DSN-08: Saved parish warmth — dark mode */
html[data-theme="dark"] .parish-card--saved { background: color-mix(in srgb, var(--color-sacred) 3%, var(--color-surface)); }
html[data-theme="dark"] .parish-card--saved.parish-card--live { background: linear-gradient(135deg, color-mix(in srgb, var(--color-sacred) 3%, rgba(74,124,89,0.08)) 0%, color-mix(in srgb, var(--color-sacred) 3%, var(--color-surface)) 60%); }
html[data-theme="dark"] .parish-card--saved.parish-card--soon { background: linear-gradient(135deg, color-mix(in srgb, var(--color-sacred) 3%, color-mix(in srgb, var(--color-soon) 6%, transparent)) 0%, color-mix(in srgb, var(--color-sacred) 3%, var(--color-surface)) 60%); }
/* FT-11: Bulletin link fallback */
.card-bulletin-link { font-size:var(--text-sm);color:var(--color-info);font-weight:var(--weight-medium);text-decoration:none; }
.card-bulletin-link:active { text-decoration:underline; }
/* FT-10: Filter match structured rows */
.card-match-row { display:flex;align-items:center;gap:var(--space-2);padding:1px 0; }
.card-match-time { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-primary);min-width:65px;font-variant-numeric:tabular-nums; }
.card-match-day { font-size:var(--text-xs);color:var(--color-text-tertiary); }
.card-match-more { font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic; }
/* FRO-05: Filter match block — replaces next-service when service filter active */
.card-filter-match { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-primary);margin-top:var(--space-1);padding:var(--space-2) var(--space-3);background:var(--color-verified-bg);border-radius:var(--radius-sm);line-height:1.4; }
.card-filter-match-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-primary);margin-bottom:2px; }
.card-filter-match-label:not(:first-child) { margin-top:var(--space-2); }
.card-filter-match-line { display:flex;align-items:center;gap:var(--space-2);padding:2px 0; }
.card-filter-match-dot { width:8px;height:8px;border-radius:50%;flex-shrink:0; }
.card-filter-match-dot--confession { background:var(--color-verified); }
.card-filter-match-dot--adoration { background:var(--color-svc-adoration); }
.card-filter-match-dot--latin { background:var(--color-primary); }
.card-filter-match-dot--spanish { background:var(--color-primary); }
.card-filter-match-dot--lent { background:var(--color-accent); }
.card-filter-match-more { font-size:var(--text-xs);color:var(--color-text-secondary);padding-left:var(--space-4); }
.card-filter-match-live { color:var(--color-verified);font-weight:var(--weight-semibold); }
html[data-theme="dark"] .card-filter-match { color:var(--color-text-primary);background:color-mix(in srgb, var(--color-verified) 6%, var(--color-surface)); }
html[data-theme="dark"] .card-filter-match-more { color:var(--color-text-secondary); }
/* ── STC-02: Service card — prompt-triggered filter results ── */
/* DSN-38: border-top with seasonal accent tint */
.service-card { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-card);border-top:1.5px solid color-mix(in srgb, var(--color-accent) 15%, transparent);cursor:pointer;transition:box-shadow var(--transition-base), transform var(--transition-fast);display:flex;flex-direction:column;gap:var(--space-2); }
.service-card:hover { box-shadow:var(--shadow-card-hover); }
.service-card:active { transform:scale(0.98); }
.service-card--saved { border-left:3px solid var(--color-sacred); }
/* DSN-39: Live card state — mirrors parish-card--live */
.service-card--live { border-left:3px solid var(--color-verified);background:linear-gradient(135deg, var(--color-verified-bg) 0%, var(--color-surface) 60%); }
.service-card-header { display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2); }
.service-card-name { font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0; }
.service-card-dist { font-size:var(--text-xs);color:var(--color-text-tertiary);font-weight:var(--weight-medium);white-space:nowrap;flex-shrink:0; }
.service-card-town { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:-4px; }
/* DSN-37: Time row accent line + dot structure */
.service-card-times { display:flex;flex-direction:column;gap:0;border-left:2px solid color-mix(in srgb, var(--color-accent) 25%, transparent);margin-left:var(--space-1); }
.service-card-time { font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.4;padding:var(--space-1) 0 var(--space-1) var(--space-3);display:flex;align-items:center;gap:var(--space-2); }
.service-card-time--live { color:var(--color-verified); }
.service-card-dot { width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--color-accent); }
.service-card-dot--confession { background:var(--color-verified); }
.service-card-dot--adoration { background:var(--color-svc-adoration); }
.service-card-dot--latin { background:var(--color-primary); }
.service-card-dot--spanish { background:var(--color-primary); }
.service-card-dot--lent { background:var(--color-accent); }
.service-card-time--live .service-card-dot { background:var(--color-verified);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-verified) 20%, transparent);animation:dot-pulse 2s ease-in-out infinite; }
/* DSN-41: Type label chips for mixed-type results */
.service-card-type-label { display:inline-flex;align-items:center;gap:var(--space-1);font-family:var(--font-body);font-size:11px;font-weight:var(--weight-semibold);color:var(--color-accent-text);letter-spacing:0.03em;text-transform:uppercase;padding:2px var(--space-2);background:color-mix(in srgb, var(--color-accent) 8%, transparent);border-radius:var(--radius-sm);margin-top:var(--space-2);margin-bottom:var(--space-1);margin-left:var(--space-3); }
.service-card-type-label:first-child { margin-top:0; }
.service-card-type-dot { width:5px;height:5px;border-radius:50%;flex-shrink:0; }
.service-card-more { font-size:var(--text-xs);color:var(--color-text-tertiary);padding-left:var(--space-3); }
/* Dark mode */
html[data-theme="dark"] .service-card { background:var(--color-surface);box-shadow:var(--shadow-card);border-top-color:color-mix(in srgb, var(--color-accent) 10%, transparent); }
html[data-theme="dark"] .service-card--live { background:linear-gradient(135deg, rgba(74,124,89,0.08) 0%, var(--color-surface) 60%); }
html[data-theme="dark"] .service-card-name { color:var(--color-text-secondary); }
html[data-theme="dark"] .service-card-time { color:var(--color-text-primary); }
html[data-theme="dark"] .service-card-time--live { color:var(--color-verified); }
html[data-theme="dark"] .service-card-times { border-left-color:color-mix(in srgb, var(--color-accent) 15%, transparent); }
html[data-theme="dark"] .service-card-dot { opacity:0.85; }
html[data-theme="dark"] .service-card-type-label { color:var(--color-accent-light);background:color-mix(in srgb, var(--color-accent) 10%, var(--color-surface)); }
/* ── STC-04 / DSN-40: Service results header ── */
.service-header { text-align:center;padding:var(--space-6) var(--space-4) var(--space-4); }
.service-header-title { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--color-text-primary);line-height:1.2;margin:0; }
.service-header-scope { font-weight:var(--weight-regular);color:var(--color-text-secondary); }
.service-header-meta { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-1); }
.service-header-clear { font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-primary);margin-top:var(--space-3);cursor:pointer;min-height:44px;display:inline-flex;align-items:center;justify-content:center; }
html[data-theme="dark"] .service-header-title { color:var(--color-text-primary); }
html[data-theme="dark"] .service-header-scope { color:var(--color-text-secondary); }
html[data-theme="dark"] .service-header-meta { color:var(--color-text-secondary); }
html[data-theme="dark"] .service-header-clear { color:var(--color-primary-light); }
/* FT-12: No-results recovery actions */
.no-results-actions { display:flex;gap:var(--space-2);justify-content:center;margin-top:var(--space-4);flex-wrap:wrap; }
.no-results-action { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary);background:var(--color-surface);border:1.5px solid var(--color-primary);border-radius:var(--radius-full);padding:var(--space-2) var(--space-4);min-height:44px;cursor:pointer; }
.no-results-action:active { background:var(--color-primary-bg); }
/* FT-19: Sparse message inline */
.sparse-msg-inline { font-size:var(--text-xs);color:var(--color-text-secondary);text-align:center;padding:var(--space-3) var(--space-4);line-height:1.5; }
.sparse-msg-inline button { color:var(--color-info);font-weight:var(--weight-semibold); }
/* FT-20: Confession chip nudge */
.chip--nudge { border-color:var(--color-verified);color:var(--color-verified);animation:chipNudge 3s ease-in-out 1; }
@keyframes chipNudge { 0%,100% { box-shadow:none; } 50% { box-shadow:0 0 0 3px rgba(74,124,89,0.15); } }
/* FT-05: First-use tip card */
.first-use-tip { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-primary-bg);border:1px solid rgba(44,62,90,0.12);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.4; }
.first-use-tip button { flex-shrink:0;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--color-text-tertiary);font-size:var(--text-base); }
html[data-theme="dark"] .first-use-tip { border-color:var(--color-border-light); }

/* YC EVENT CARDS */
.yc-chip { border-color: var(--color-sacred); color: var(--color-sacred-text); border-style: solid; }
.yc-chip.active { background: var(--color-sacred); color: white; border-color: var(--color-sacred); }
.yc-card { background: var(--color-surface); border-left: 3px solid var(--color-sacred); border-radius: var(--radius-md); padding: var(--space-5); box-shadow: var(--shadow-card); cursor: pointer; transition: box-shadow var(--transition-base), transform var(--transition-fast); }
.yc-card:hover { box-shadow: var(--shadow-card-hover); }
.yc-card:active { transform: scale(0.995); }
.yc-card-top { display: flex; justify-content: space-between; align-items: flex-start; }
.yc-cal-btn { background: none; border: 1.5px solid var(--color-sacred); border-radius: var(--radius-sm); padding: 6px; min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; cursor: pointer; color: var(--color-sacred-text); flex-shrink: 0; transition: background var(--transition-fast); }
.yc-cal-btn:hover { background: rgba(18,15,6,0.10); }
.yc-cal-btn:hover { background: color-mix(in srgb, var(--color-sacred) 10%, transparent); }
.yc-cal-btn svg { width: 20px; height: 20px; }
.yc-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: var(--weight-semibold); color: var(--color-sacred-text); background: rgba(28,23,9,0.15); padding: 3px 10px; border-radius: var(--radius-full); text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: var(--space-2); }
.yc-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: var(--weight-semibold); color: var(--color-sacred-text); background: color-mix(in srgb, var(--color-sacred) 15%, transparent); padding: 3px 10px; border-radius: var(--radius-full); text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: var(--space-2); }
.yc-badge svg { width: 13px; height: 13px; }
.yc-title { font-size: var(--text-lg); font-weight: var(--weight-semibold); color: var(--color-text-primary); line-height: 1.3; margin-bottom: 2px; }
.yc-church { font-size: var(--text-sm); color: var(--color-text-secondary); margin-bottom: var(--space-2); }
.yc-datetime { display: flex; align-items: baseline; gap: var(--space-2); flex-wrap: wrap; }
.yc-date { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--color-primary); }
.yc-time { font-size: var(--text-sm); color: var(--color-text-secondary); font-weight: var(--weight-medium); }
.yc-social-tag { display: inline-flex; align-items: center; gap: 4px; font-size: var(--text-xs); font-weight: var(--weight-medium); color: #0F766E; background: #E0F7F5; padding: 3px 8px; border-radius: var(--radius-full); margin-top: var(--space-2); }
.yc-section-header { max-width: var(--max-width); margin: 0 auto; padding: var(--space-4) var(--space-4) var(--space-2); display: flex; align-items: center; gap: var(--space-2); border: none; }
.yc-section-title { font-family: var(--font-display); font-size: var(--text-xl); font-weight: 700; color: var(--color-text-primary); }
.yc-section-count { font-size: var(--text-xs); color: var(--color-sacred-text); font-weight: var(--weight-semibold); background: var(--color-sacred-pale); padding: 2px 8px; border-radius: var(--radius-full); }
.no-results-prayer { font-family: var(--font-prayer); font-size: var(--text-base); font-style: italic; color: var(--color-text-secondary); line-height: 1.6; margin-bottom: var(--space-3); }
html[data-theme="dark"] .no-results-prayer { color: var(--color-sacred-text); }
.no-results p { font-size: var(--text-sm); color: var(--color-text-tertiary); }
/* ── Sacred Empty States (IDEA-281) ── */
.sacred-empty-state { text-align:center;padding:var(--space-12) var(--space-6);max-width:327px;margin:0 auto; }
.sacred-empty-rule { width:32px;height:2px;background:var(--color-sacred);margin:0 auto var(--space-6) auto;border-radius:1px; }
.sacred-empty-text { font-family:var(--font-display);font-size:22px;line-height:1.5;color:var(--color-text-primary);margin:0 0 var(--space-4) 0; }
.sacred-empty-ref { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-tertiary);font-style:italic;margin:0; }
html[data-theme="dark"] .sacred-empty-text { color:var(--color-heading); }

/* DETAIL PANEL */
.detail-backdrop { position: fixed; inset: 0; z-index: var(--z-detail-backdrop); background: rgba(26,30,38,0.4); opacity: 0; pointer-events: none; transition: opacity 0.3s var(--ease-out); }
.detail-backdrop.open { opacity: 1; pointer-events: auto; }
.detail-panel { position: fixed; bottom: 0; left: 0; right: 0; z-index: var(--z-detail-panel); background: var(--color-surface); border-radius: var(--radius-lg) var(--radius-lg) 0 0; max-height: 92vh; max-height: 92dvh; overflow-y: auto; -webkit-overflow-scrolling: touch; transform: translateY(100%); transition: transform 0.35s var(--ease-out); box-shadow: var(--shadow-elevated); -webkit-overscroll-behavior: contain; overscroll-behavior: contain; }
.detail-panel.open { transform: translateY(0); }
@media (min-width: 768px) { .detail-panel { left: 50%; right: auto; width: 100%; max-width: var(--max-width); transform: translate(-50%, 100%); } .detail-panel.open { transform: translate(-50%, 0); } }
.detail-handle { display: flex; justify-content: center; padding: var(--space-4) 0 var(--space-2); position: sticky; top: 0; background: var(--color-surface); z-index: 2; border-radius: var(--radius-lg) var(--radius-lg) 0 0; cursor: grab; }
.detail-handle-bar { width: 36px; height: 4px; background: var(--color-border); border-radius: 2px; }
.detail-header { padding: var(--space-2) var(--space-5) var(--space-4); }
.detail-header-top { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3); }
.detail-name { font-family: var(--font-display); font-size: var(--text-3xl); font-weight: 700; color: var(--color-text-primary); line-height: 1.2; flex: 1; }
.detail-actions { display: flex; gap: var(--space-2); flex-shrink: 0; }
.detail-action-btn { width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--color-text-secondary); transition: all var(--transition-fast); }
.detail-action-btn:hover { background: var(--color-surface-hover); }
.detail-action-btn.fav-active { color: var(--color-fav); }
.detail-action-btn svg { width: 22px; height: 22px; }
.detail-town { font-size: var(--text-sm); color: var(--color-text-secondary); margin-top: var(--space-1); }
.detail-badges { display: flex; gap: var(--space-2); flex-wrap: wrap; margin-top: var(--space-3); }
.detail-badge { display: inline-flex; align-items: center; gap: 4px; font-size: var(--text-xs); font-weight: var(--weight-medium); padding: 4px 10px; border-radius: var(--radius-full); }
.detail-badge.verified { color: var(--color-verified); background: var(--color-verified-bg); }
.detail-badge.county { color: var(--color-text-secondary); background: var(--color-surface-hover); }
.detail-badge.unverified { color: var(--color-warning); background: var(--color-warning-bg); }
.detail-badge svg { width: 14px; height: 14px; }
.detail-badge.accessible { color:var(--color-primary);background:var(--color-info-bg); }
.detail-address { font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:2px; }
.detail-next { display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);margin-top:var(--space-3);background:var(--color-surface-hover);border-radius:var(--radius-md); }
.detail-next-time { font-size:var(--text-2xl);font-weight:var(--weight-semibold);color:var(--color-primary);font-variant-numeric:tabular-nums;min-width:80px; }
.detail-next-info { display:flex;flex-direction:column;gap:2px; }
.detail-next-label { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary); }
.detail-next-day { font-size:var(--text-xs);color:var(--color-text-tertiary); }
.detail-next-badge { font-size:var(--text-xs);font-weight:var(--weight-semibold);display:inline-flex;align-items:center;gap:var(--space-1); }
.detail-next-badge.live { color:var(--color-verified); }
.detail-next-badge.live .pulse-dot { width:6px;height:6px;background:var(--color-verified);border-radius:50%;animation:pulse 1.5s ease-in-out infinite; }
.detail-next-badge.soon { color:var(--color-soon-text); }
.detail-next--live { background:linear-gradient(135deg, var(--color-verified-bg) 0%, var(--color-surface) 60%);border-left:3px solid var(--color-verified); }
.detail-next--soon { background:var(--color-soon-pale);border:1px solid rgba(24,16,2,0.12); }
.detail-next--soon { background:var(--color-soon-pale);border:1px solid color-mix(in srgb, var(--color-soon) 12%, transparent); }
.detail-next--tomorrow { background:linear-gradient(135deg, var(--color-primary-bg) 0%, var(--color-surface) 60%);border-left:3px solid var(--color-primary); }
.detail-visitation { margin:var(--space-3) 0;padding:var(--space-3) var(--space-4);background:var(--color-verified-bg);border-radius:var(--radius-md);display:flex;align-items:flex-start;gap:var(--space-3); }
.detail-visitation::before { content:'';width:3px;align-self:stretch;background:var(--color-verified);border-radius:2px;flex-shrink:0; }
.detail-visitation-label { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-verified); }
.detail-visitation-hours { font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:2px; }
.contact-role { font-size:var(--text-xs);color:var(--color-text-tertiary); }
.detail-body { padding: 0 var(--space-5) var(--space-8); }
/* OW-23: Coming Up section */
.detail-coming-up { margin:var(--space-3) 0 var(--space-4);padding:var(--space-3) var(--space-4);background:linear-gradient(135deg, var(--color-soon-pale) 0%, var(--color-surface) 60%);border-radius:var(--radius-md);border-left:3px solid var(--color-soon); }
.detail-coming-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-soon-text);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-2); }
.detail-coming-row { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0; }
.detail-coming-row + .detail-coming-row { border-top:1px solid var(--color-border-light); }
.detail-coming-time { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);white-space:nowrap;min-width:70px; }
.detail-coming-info { flex:1;min-width:0; }
.detail-coming-type { font-size:var(--text-sm);color:var(--color-text-secondary);display:block; }
.detail-coming-loc { font-size:var(--text-xs);color:var(--color-text-tertiary);display:block; }
.detail-coming-day { font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);white-space:nowrap; }
/* SFD-04: Today/tomorrow visual separation in Coming Up */
.detail-coming-separator { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;padding:var(--space-2) 0 var(--space-1);margin-top:var(--space-1);border-top:1px solid var(--color-border-light); }
.detail-coming-row--tomorrow .detail-coming-time { color:var(--color-text-secondary); }
.detail-coming-row--tomorrow { opacity:0.85; }
.detail-coming-row--today .detail-coming-time { color:var(--color-primary);font-weight:var(--weight-bold); }
.detail-coming-row--soon { border-left:3px solid var(--color-soon);padding-left:var(--space-3); }
.detail-coming-row--live { border-left:3px solid var(--color-verified);padding-left:var(--space-3); }
html[data-theme="dark"] .detail-coming-up { background:linear-gradient(135deg, rgba(12,8,1,0.06) 0%, var(--color-surface) 60%); }
html[data-theme="dark"] .detail-coming-up { background:linear-gradient(135deg, color-mix(in srgb, var(--color-soon) 6%, transparent) 0%, var(--color-surface) 60%); }
html[data-theme="dark"] .detail-coming-row + .detail-coming-row { border-top-color:var(--color-border); }
html[data-theme="dark"] .detail-coming-separator { border-top-color:var(--color-border); }
html[data-theme="dark"] .detail-next--live { background:linear-gradient(135deg, rgba(74,124,89,0.08) 0%, var(--color-surface) 60%); }
html[data-theme="dark"] .detail-next--tomorrow { background:linear-gradient(135deg, rgba(143,168,200,0.08) 0%, var(--color-surface) 60%); }
.detail-next-day-header { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-2);width:100%; }
.detail-next:has(.detail-next-day-header) { flex-wrap:wrap; }
.detail-next-multi-row { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-1) 0;width:100%; }
.detail-next-multi-row + .detail-next-multi-row { border-top:1px solid var(--color-border-light); }
.detail-next-multi-row .detail-next-time { font-size:var(--text-lg);min-width:80px; }
.detail-next-multi-row .detail-next-label { font-size:var(--text-sm); }
html[data-theme="dark"] .detail-next-multi-row + .detail-next-multi-row { border-top-color:var(--color-border); }
.detail-next-overflow { width:100%;font-size:var(--text-xs);color:var(--color-primary);font-weight:var(--weight-medium);padding:var(--space-2) 0;text-align:right;display:flex;align-items:center;justify-content:flex-end;gap:var(--space-1);cursor:pointer;-webkit-tap-highlight-color:transparent;background:none;border:none;font-family:var(--font-body);min-height:44px; }
.detail-next-overflow:active { opacity:0.7; }
.detail-next-overflow svg { opacity:0.6; }
html[data-theme="dark"] .detail-next-overflow { color:var(--color-primary-light); }
/* CDF-01: Type dot group in tomorrow snapshot */
.detail-next-type-group { display:flex;align-items:center;gap:var(--space-2); }
/* CDF-02: Temporal weighting — hero row emphasis */
.detail-next-multi-row--hero .detail-next-time { font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--color-primary); }
.detail-next-multi-row--hero .detail-next-label { font-weight:var(--weight-semibold); }
.detail-next-multi-row:not(.detail-next-multi-row--hero) .detail-next-time { font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text-secondary); }
.detail-next-multi-row:not(.detail-next-multi-row--hero) .detail-next-label { font-size:var(--text-sm);color:var(--color-text-secondary); }

/* EVENT DETAIL PANEL */
.event-detail-panel { position: fixed; bottom: 0; left: 0; right: 0; z-index: var(--z-event-detail); background: var(--color-surface); border-radius: var(--radius-lg) var(--radius-lg) 0 0; max-height: 92vh; max-height: 92dvh; overflow-y: auto; -webkit-overflow-scrolling: touch; transform: translateY(100%); transition: transform 0.35s var(--ease-out); box-shadow: var(--shadow-elevated); -webkit-overscroll-behavior: contain; overscroll-behavior: contain; }
.event-detail-panel.open { transform: translateY(0); }
@media (min-width: 768px) { .event-detail-panel { left: 50%; right: auto; width: 100%; max-width: var(--max-width); transform: translate(-50%, 100%); } .event-detail-panel.open { transform: translate(-50%, 0); } }

/* ── Event Detail Panel — Header ── */
.evt-handle { display: flex; justify-content: center; padding: var(--space-2) 0 var(--space-1); }
.evt-handle-bar { width: 36px; height: 4px; border-radius: 2px; background: var(--color-border); }
.evt-header { padding: 0 var(--space-5) var(--space-4); }
.evt-header-top { display: flex; align-items: flex-start; gap: var(--space-3); }
.evt-cat-icon { width: 40px; height: 40px; border-radius: var(--radius-sm); background: var(--color-bg); display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 2px; }
.evt-cat-icon svg { width: 20px; height: 20px; color: var(--color-primary); }
.evt-header-text { flex: 1; min-width: 0; }
.evt-title { font-family: var(--font-display); font-size: var(--text-2xl); font-weight: 700; color: var(--color-text-primary); line-height: 1.25; }
.evt-subtitle { font-size: var(--text-xs); color: var(--color-text-tertiary); margin-top: 2px; font-weight: var(--weight-medium); text-transform: uppercase; letter-spacing: 0.03em; }
.evt-close, .evt-back { width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--color-text-secondary); transition: all var(--transition-fast); flex-shrink: 0; margin: -4px -8px 0 0; }
.evt-close:hover, .evt-back:hover { background: var(--color-surface-hover); }
.evt-close svg, .evt-back svg { width: 22px; height: 22px; }

/* Seasonal header tints */
.evt-header.evt-season-lent { background: linear-gradient(180deg, rgba(124,58,237,0.06) 0%, transparent 100%); }
.evt-header.evt-season-advent { background: linear-gradient(180deg, rgba(124,58,237,0.06) 0%, transparent 100%); }
.evt-header.evt-season-easter { background: linear-gradient(180deg, rgba(217,119,6,0.06) 0%, transparent 100%); }
.evt-header.evt-season-christmas { background: linear-gradient(180deg, rgba(217,119,6,0.06) 0%, transparent 100%); }

/* Countdown banner */
.evt-countdown { text-align: center; font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-verified); background: var(--color-verified-bg); padding: var(--space-1) var(--space-4); border-radius: var(--radius-full); margin-top: var(--space-3); display: inline-block; }
.evt-header { text-align: left; }
.evt-countdown { margin-left: auto; margin-right: auto; display: table; }
.evt-countdown.imminent { color: #B45309; background: #FEF3C7; }

/* ── Event Detail Panel — Body ── */
.evt-body { padding: 0 var(--space-5) var(--space-6); }

/* Hero image */
.evt-hero { margin: 0 calc(-1 * var(--space-5)) var(--space-4); }
.evt-hero img { width: 100%; max-height: 200px; object-fit: cover; display: block; }

/* When + Where info card */
.evt-info-card { background: var(--color-bg); border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); margin-top: var(--space-3); display: flex; flex-direction: column; gap: var(--space-1); }
.evt-info-row { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-2) 0; }
.evt-info-row.evt-info-clickable { cursor: pointer; border-radius: var(--radius-sm); margin: 0 calc(-1 * var(--space-2)); padding-left: var(--space-2); padding-right: var(--space-2); transition: background var(--transition-fast); }
.evt-info-row.evt-info-clickable:hover { background: var(--color-surface-hover); }
.evt-info-icon { flex-shrink: 0; width: 20px; height: 20px; color: var(--color-text-tertiary); margin-top: 1px; }
.evt-info-icon svg { width: 20px; height: 20px; }
.evt-info-text { flex: 1; min-width: 0; }
.evt-info-primary { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-primary); line-height: 1.4; }
.evt-info-secondary { font-size: var(--text-xs); color: var(--color-text-tertiary); margin-top: 1px; }

/* Multi-date series */
.evt-series { margin-top: var(--space-3); }
.evt-series-toggle { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-text-secondary); cursor: pointer; display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) 0; list-style: none; }
.evt-series-toggle::-webkit-details-marker { display: none; }
.evt-series-toggle svg { transition: transform var(--transition-fast); flex-shrink: 0; color: var(--color-text-tertiary); }
.evt-series[open] .evt-series-toggle svg { transform: rotate(180deg); }
.evt-series-list { padding: var(--space-2) 0 var(--space-2) var(--space-2); display: flex; flex-direction: column; gap: var(--space-1); }
.evt-series-date { display: flex; align-items: center; gap: var(--space-2); font-size: var(--text-xs); color: var(--color-text-secondary); padding: var(--space-1) 0; }
.evt-series-date.past { color: var(--color-text-tertiary); text-decoration: line-through; }
.evt-series-date.past svg { color: var(--color-verified); }
.evt-series-date.today { font-weight: var(--weight-semibold); color: var(--color-primary); }
.evt-series-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--color-border); flex-shrink: 0; }
.evt-series-dot.today { background: var(--color-primary); }

/* Notes callout */
.evt-notes { display: flex; align-items: flex-start; gap: var(--space-3); margin-top: var(--space-4); padding: var(--space-3) var(--space-4); background: var(--color-bg); border-radius: var(--radius-sm); border-left: 3px solid var(--color-border); }
.evt-notes svg { width: 16px; height: 16px; flex-shrink: 0; color: var(--color-text-tertiary); margin-top: 1px; }
.evt-notes span { font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.5; font-style: italic; }

/* Description */
.evt-desc { margin-top: var(--space-4); }
.evt-desc p { font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.6; }

/* Detail rows — price, registration, contact */
.evt-detail-row { display: flex; align-items: flex-start; gap: var(--space-3); margin-top: var(--space-3); padding: var(--space-3) var(--space-4); background: var(--color-bg); border-radius: var(--radius-sm); }
.evt-detail-row-icon { width: 18px; height: 18px; flex-shrink: 0; color: var(--color-primary); margin-top: 1px; }
.evt-detail-row-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.evt-detail-row-label { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: 0.03em; }
.evt-detail-row-value { font-size: var(--text-sm); color: var(--color-text-primary); line-height: 1.5; }
.evt-detail-row-value a { color: var(--color-info); text-decoration: none; }
.evt-detail-row-value a:hover { text-decoration: underline; }
.evt-detail-row-value strong { font-weight: var(--weight-semibold); }

/* YC banner */
.evt-yc-banner { display: flex; align-items: center; gap: var(--space-2); margin-top: var(--space-3); padding: var(--space-2) var(--space-3); background: rgba(15,12,5,0.08); border-radius: var(--radius-sm); border-left: 3px solid var(--color-sacred); }
.evt-yc-banner { display: flex; align-items: center; gap: var(--space-2); margin-top: var(--space-3); padding: var(--space-2) var(--space-3); background: color-mix(in srgb, var(--color-sacred) 8%, transparent); border-radius: var(--radius-sm); border-left: 3px solid var(--color-sacred); }
.evt-yc-banner svg { color: var(--color-sacred); flex-shrink: 0; }
.evt-yc-banner span { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-sacred-text); letter-spacing: 0.02em; }

/* Time approximate */
.evt-time-approx { font-size: var(--text-xs); color: var(--color-text-tertiary); font-style: italic; }

/* Actions — 2-col grid */
.evt-actions { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); margin-top: var(--space-5); }
.evt-action-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-1); padding: var(--space-3); border-radius: var(--radius-md); background: var(--color-bg); transition: background var(--transition-fast); text-decoration: none; min-height: 44px; cursor: pointer; border: 1px solid var(--color-border-light); }
.evt-action-btn:hover { background: var(--color-surface-hover); text-decoration: none; }
.evt-action-btn svg { width: 20px; height: 20px; color: var(--color-primary); }
.evt-action-btn span { font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--color-text-secondary); text-align: center; }
.evt-action-btn.evt-action-primary { background: var(--color-primary); border-color: var(--color-primary); }
.evt-action-btn.evt-action-primary svg { color: var(--color-text-inverse); }
.evt-action-btn.evt-action-primary span { color: var(--color-text-inverse); }
.evt-action-btn.evt-action-primary:hover { background: var(--color-primary-light); }

/* Footer parish link */
.evt-footer-link { margin-top: var(--space-5); cursor: pointer; transition: background var(--transition-fast); }
.evt-footer-link-inner { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4); background: var(--color-bg); border-radius: var(--radius-md); transition: background var(--transition-fast); }
.evt-footer-link:hover .evt-footer-link-inner { background: var(--color-surface-hover); }
.evt-footer-link-inner svg:first-child { width: 18px; height: 18px; color: var(--color-primary); flex-shrink: 0; }
.evt-footer-link-inner span { flex: 1; font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-primary); }
.evt-footer-link-inner svg:last-child { color: var(--color-text-tertiary); flex-shrink: 0; }

/* COMMUNITY EVENTS in parish detail */
.community-events-section { margin-top: var(--space-4); border-top: 1px solid var(--color-border-light); padding-top: var(--space-4); }
.community-events-header { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-3); }
.community-events-header svg { width: 20px; height: 20px; color: var(--color-sacred-text); flex-shrink: 0; }
.community-events-title { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--color-text-primary); }
.community-events-count { font-size: var(--text-xs); color: var(--color-sacred-text); font-weight: var(--weight-medium); background: var(--color-sacred-pale); padding: 2px 8px; border-radius: var(--radius-full); }
.community-events-collapsible summary { cursor:pointer;list-style:none; }
.community-events-collapsible summary::-webkit-details-marker { display:none; }
.community-events-chevron { width:18px;height:18px;color:var(--color-text-tertiary);transition:transform 0.2s;flex-shrink:0;margin-left:auto; }
.community-events-collapsible[open] .community-events-chevron { transform:rotate(180deg); }
/* CDC-06-D: Stronger section separators */
.ce-group-label { font-size: var(--text-xs); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: 0.04em; color: var(--color-text-secondary); padding: var(--space-3) 0 var(--space-2); margin-top: var(--space-2); border-top: 1px solid var(--color-border-light); }
.ce-group-label:first-child { margin-top: 0; border-top: none; }
.ce-item { display: flex; gap: var(--space-3); padding: var(--space-3) 0; border-bottom: 1px solid var(--color-border-light); align-items: flex-start; }
.ce-item:last-child { border-bottom: none; }
.ce-item-accent { width: 3px; border-radius: 2px; flex-shrink: 0; align-self: stretch; min-height: 24px; }
/* CDC-06-E: Category-colored accent bars */
.ce-item-accent.liturgical { background: var(--color-accent); }
.ce-item-accent.devotional { background: var(--color-cat-devotional); }
.ce-item-accent.educational { background: var(--color-info); }
.ce-item-accent.social { background: var(--color-cat-social); }
.ce-item-accent.fellowship { background: var(--color-cat-social); }
.ce-item-accent.community { background: var(--color-primary); }
.ce-item-accent.volunteering { background: var(--color-cat-volunteering); }
.ce-item-accent.yc { background: var(--color-primary); }
/* CDC-06-A: Category icon */
.ce-item-icon { width: 28px; height: 28px; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: var(--color-surface-hover); margin-top: 1px; }
.ce-item-icon svg { width: 14px; height: 14px; color: var(--color-text-secondary); }
.ce-item-icon--liturgical { background: var(--color-accent-pale); }
.ce-item-icon--liturgical svg { color: var(--color-accent-text); }
.ce-item-icon--devotional { background: var(--color-cat-devotional-pale); }
.ce-item-icon--devotional svg { color: var(--color-cat-devotional); }
.ce-item-icon--educational { background: var(--color-info-bg); }
.ce-item-icon--educational svg { color: var(--color-info); }
.ce-item-icon--social { background: var(--color-cat-social-pale); }
.ce-item-icon--social svg { color: var(--color-cat-social); }
.ce-item-icon--fellowship { background: var(--color-cat-social-pale); }
.ce-item-icon--fellowship svg { color: var(--color-cat-social); }
.ce-item-icon--volunteering { background: var(--color-cat-volunteering-pale); }
.ce-item-icon--volunteering svg { color: var(--color-cat-volunteering); }
.ce-item-icon--community { background: var(--color-primary-bg); }
.ce-item-icon--community svg { color: var(--color-primary); }
.ce-item-icon--yc { background: var(--color-primary-bg); }
.ce-item-icon--yc svg { color: var(--color-primary); }
html[data-theme="dark"] .ce-item-icon { background: rgba(255,255,255,0.06); }
html[data-theme="dark"] .ce-item-icon { background: color-mix(in srgb, white 4%, var(--color-surface)); }
html[data-theme="dark"] .ce-item-icon--liturgical { background: var(--color-accent-pale); }
html[data-theme="dark"] .ce-item-icon--devotional { background: var(--color-cat-devotional-pale); }
html[data-theme="dark"] .ce-item-icon--devotional svg { color: var(--color-cat-devotional); }
.ce-item-body { flex: 1; min-width: 0; }
.ce-item-title { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-primary); line-height: 1.3; }
.ce-item-when { font-size: var(--text-xs); color: var(--color-text-secondary); margin-top: 1px; }
.ce-item-cat-label { font-weight: var(--weight-medium); color: var(--color-text-secondary); }
.ce-item-when .ce-countdown { color: var(--color-text-secondary); font-weight: var(--weight-medium); }
/* CDC-06-B: Notes 2-line clamp, tap to expand */
.ce-item-notes { font-size: var(--text-xs); color: var(--color-text-tertiary); font-style: italic; margin-top: 2px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; cursor: pointer; }
.ce-item-notes.expanded { -webkit-line-clamp: unset; }
.ce-item-chevron { color:var(--color-text-tertiary);font-size:1.3rem;flex-shrink:0;align-self:center; }

/* Contact & Actions */
.detail-contact { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-5) 0; border-bottom: 1px solid var(--color-border-light); }
.contact-row { display: flex; align-items: center; gap: var(--space-3); }
.contact-row svg { width: 20px; height: 20px; color: var(--color-text-tertiary); flex-shrink: 0; }
.contact-row a, .contact-row span { font-size: var(--text-sm); }
.contact-row a { color: var(--color-info); }
.contact-row span { color: var(--color-text-secondary); }
.detail-quick-actions { display: flex; gap: var(--space-3); padding: var(--space-4) 0; border-bottom: 1px solid var(--color-border-light); }
.quick-action { flex: 1; display: flex; flex-direction: column; align-items: center; gap: var(--space-1); padding: var(--space-3); border-radius: var(--radius-md); background: var(--color-surface-hover); border: 1px solid var(--color-border-light); transition: background var(--transition-fast); text-decoration: none; min-height: 44px; }
.quick-action:hover { background: var(--color-surface-hover); text-decoration: none; }
.quick-action svg { width: 22px; height: 22px; color: var(--color-primary); }
.quick-action span { font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--color-text-secondary); }

/* SFD-03-A: Primary/secondary CTA layout */
.detail-primary-action { padding:var(--space-3) 0 0; }
.detail-primary-action a { display:flex;width:100%;padding:var(--space-3) var(--space-4);background:var(--color-primary);color:var(--color-text-inverse);border-radius:var(--radius-md);font-size:var(--text-base);font-weight:var(--weight-semibold);align-items:center;justify-content:center;gap:var(--space-2);min-height:48px;text-decoration:none; }
.detail-primary-action a svg { color:var(--color-text-inverse); }
.detail-secondary-actions { display:flex;gap:var(--space-2);justify-content:center;padding:var(--space-3) 0;border-bottom:1px solid var(--color-border-light); }
.detail-secondary-action { padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--text-sm);color:var(--color-primary);background:transparent;display:inline-flex;align-items:center;gap:var(--space-1);min-height:44px;text-decoration:none;cursor:pointer; }
.detail-secondary-action svg { color:var(--color-primary); }
.detail-secondary-action:active { background:var(--color-surface-hover); }
/* Contact disclosure + card */
.detail-contact-disclosure { margin:var(--space-3) 0; }
.detail-contact-summary { display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);font-family:var(--font-body);font-size:0.9rem;font-weight:var(--weight-semibold);color:var(--color-text-secondary);cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent;min-height:44px;background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md); }
.detail-contact-summary::-webkit-details-marker { display:none; }
.detail-contact-summary svg { transition:transform 0.2s ease;color:var(--color-text-tertiary); }
details[open].detail-contact-disclosure > .detail-contact-summary { border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent; }
details[open].detail-contact-disclosure > .detail-contact-summary svg { transform:rotate(180deg); }
.detail-contact-card { display:flex;flex-direction:column;gap:0;padding:0;background:var(--color-surface);border-radius:0 0 var(--radius-md) var(--radius-md);border:1px solid var(--color-border-light);border-top:none;margin:0; }
.contact-row-item { display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-light); }
.contact-row-item:last-child { border-bottom:none; }
.contact-row-item svg { color:var(--color-text-tertiary);flex-shrink:0;margin-top:2px; }
.contact-row-item a { color:var(--color-info);text-decoration:none;font-size:var(--text-sm); }
.contact-row-item a:active { opacity:0.7; }
.contact-pastor-name { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary); }
.contact-pastor-role { font-size:var(--text-xs);color:var(--color-text-tertiary); }
.contact-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:2px; }
.contact-detail-text { font-size:var(--text-sm);color:var(--color-text-secondary);font-variant-numeric:tabular-nums;line-height:1.5; }
.contact-social-row { display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4); }
.contact-social-link { display:inline-flex;align-items:center;color:var(--color-text-tertiary);min-height:44px; }
.contact-social-link:active { color:var(--color-info); }
html[data-theme="dark"] .detail-contact-summary { background:var(--color-surface);border-color:var(--color-border);color:var(--color-text-secondary); }
html[data-theme="dark"] .detail-contact-card { background:var(--color-surface);border-color:var(--color-border); }
html[data-theme="dark"] .contact-row-item { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .detail-primary-action a { background:var(--color-primary); }
html[data-theme="dark"] .detail-secondary-action { border-color:var(--color-border); }

/* Accordions */
.detail-section { border-bottom: 1px solid var(--color-border-light); }
.detail-section:last-of-type { border-bottom: none; }
.accordion-header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-4) 0; width: 100%; text-align: left; min-height: 48px; flex-wrap: wrap; }
.accordion-header-left { display: flex; align-items: center; gap: var(--space-3); flex: 1; min-width: 0; }
.accordion-header-left svg { width: 20px; height: 20px; color: var(--color-primary-muted); flex-shrink: 0; }
.accordion-title { font-size: var(--text-base); font-weight: var(--weight-semibold); }
.accordion-count { font-size: var(--text-xs); color: var(--color-text-tertiary); font-weight: var(--weight-medium); background: var(--color-bg); padding: 2px 8px; border-radius: var(--radius-full); margin-left: var(--space-2); }
/* DSN-25 + UXI-DC Issue 3: Accordion header right zone */
.accordion-header-right { display:flex;align-items:center;gap:var(--space-2);margin-left:auto;flex-shrink:1;padding-left:var(--space-2);min-width:0;overflow:hidden; }
.accordion-next-regular,.accordion-next-seasonal { display:flex;flex-direction:column;align-items:flex-end;line-height:1.2;font-family:var(--font-body);font-variant-numeric:tabular-nums; }
.accordion-next-day { font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-tertiary); }
.accordion-next-time { font-size:var(--text-base);font-weight:var(--weight-semibold); }
.accordion-next-regular .accordion-next-time { color:var(--color-primary); }
.accordion-next-seasonal .accordion-next-time { color:var(--color-accent); }
.accordion-next-sep { font-size:var(--text-xs);color:var(--color-text-tertiary); }
.accordion-next--today { color:var(--color-primary);font-weight:var(--weight-bold); }
.accordion-next--unavailable { color:var(--color-text-tertiary);font-style:italic;font-weight:var(--weight-regular); }
/* SAX-01: Accordion highlight hero rows removed */
.accordion-chevron { width: 20px; height: 20px; color: var(--color-text-tertiary); transition: transform 0.25s var(--ease-out); flex-shrink: 0; }
.accordion-header[aria-expanded="true"] .accordion-chevron { transform: rotate(180deg); }
.accordion-body { display:grid;grid-template-rows:0fr;transition:grid-template-rows 0.35s cubic-bezier(0.28,0.11,0.32,1); }
.accordion-body.open { grid-template-rows:1fr; }
.accordion-body-inner { overflow:hidden;min-width:0;padding-top:var(--space-3); }
.accordion-body-inner > :last-child { margin-bottom:var(--space-4); }

/* Schedule rows */
.schedule-day { margin-bottom: var(--space-4); padding-top: var(--space-2); }
.schedule-day:first-child { padding-top: 0; }
.schedule-day:last-child { margin-bottom: 0; }
.schedule-day + .schedule-day { border-top: 1px solid var(--color-border-light); }
.schedule-day-label { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--color-text-primary); margin-bottom: var(--space-2); padding-bottom: 0; border-bottom: none; letter-spacing: 0.01em; }
/* DSN-25: Compact day-row format */
.schedule-compact-row { display:flex;gap:10px;padding:7px 0;border-bottom:1px solid var(--color-border-light);align-items:baseline;min-height:44px; }
.schedule-compact-row:last-child { border-bottom:none; }
.schedule-compact-day { width:90px;flex-shrink:0;font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--space-2); }
.schedule-compact-times { font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text-secondary);flex:1;min-width:0;line-height:1.6; }
.schedule-compact-sep { color:var(--color-text-tertiary);margin:0 2px; }
.schedule-compact-note { font-size:var(--text-sm);color:var(--color-text-tertiary);font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;cursor:pointer;margin-top:2px;line-height:1.4; }
.schedule-compact-note.schedule-note--expanded { white-space:normal;overflow:visible; }
.schedule-compact-note--shared { font-style:italic;opacity:0.85;padding-left:0;margin-bottom:2px; }
.schedule-compact-row--seasonal .schedule-compact-day,.schedule-compact-row--seasonal .schedule-compact-times { color:var(--color-accent); }
.schedule-seasonal-badge { display:inline-block;font-size:10px;font-weight:var(--weight-semibold);background:var(--color-accent-pale);color:var(--color-accent-text);padding:1px 6px;border-radius:4px;margin-left:4px;vertical-align:middle; }
/* SAX-02: Compact today — badge only, no background/border */
.schedule-compact-row.schedule-day--today { }
.schedule-compact-row--appt { color:var(--color-text-tertiary); }
.schedule-loc-inline { color:var(--color-text-tertiary);font-size:var(--text-sm); }
.schedule-compact-row--appt .schedule-compact-day { color:var(--color-text-tertiary); }
html[data-theme="dark"] .schedule-compact-row { border-bottom-color:var(--color-border-light); }
/* CDF-04: Type-grouped schedule layout */
.schedule-type-group { display:flex;flex-wrap:wrap;gap:2px var(--space-2);align-items:baseline;padding:2px 0; }
.schedule-type-group + .schedule-type-group { border-top:1px solid var(--color-border-light);margin-top:2px;padding-top:4px; }
.schedule-type-header { font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);white-space:nowrap; }
.schedule-type-header::after { content:'\2014';margin-left:var(--space-2);color:var(--color-text-tertiary);font-weight:var(--weight-regular); }
.schedule-type-times { font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text-secondary);line-height:1.6; }
.schedule-time-token { white-space:nowrap; }
html[data-theme="dark"] .schedule-type-group + .schedule-type-group { border-top-color:var(--color-border); }

.schedule-row { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-3) 0; min-height: 44px; }
.schedule-row--has-range { padding-top: var(--space-2); padding-bottom: var(--space-2); }
.schedule-time { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--color-primary); min-width: 90px; max-width: 110px; flex-shrink: 0; font-variant-numeric: tabular-nums; }
.schedule-time-end { display: block; font-size: var(--text-xs); font-weight: var(--weight-regular); color: var(--color-text-secondary); margin-top: 1px; }
html[data-theme="dark"] .schedule-time-end { color: var(--color-text-secondary); }
.schedule-meta { flex: 1; }
.schedule-badges { display:flex;flex-wrap:wrap;gap:var(--space-1);margin-bottom:var(--space-1); }
.schedule-location { font-size: var(--text-base); color: var(--color-text-secondary); }
.schedule-note { font-size: var(--text-sm); color: var(--color-text-tertiary); font-style: italic; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; cursor: pointer; }
.schedule-note--expanded { white-space: normal; overflow: visible; }
.schedule-lang-badge { display: inline-block; font-size: var(--text-xs); font-weight: var(--weight-medium); padding: 2px 8px; border-radius: var(--radius-full); color: #1E40AF; background: #DBEAFE; }
.schedule-season-badge { display: inline-flex; align-items: center; gap: 3px; font-size: var(--text-xs); font-weight: var(--weight-medium); padding: 2px 8px; border-radius: var(--radius-full); letter-spacing: 0.01em; }
.schedule-season-badge--lent { color: #7C3AED; background: #F3E8FF; }
.schedule-season-badge--summer { color: #D97706; background: var(--color-warning-bg); }
.schedule-season-badge--academic { color: var(--color-info); background: var(--color-info-bg); }
.schedule-appt { font-size: var(--text-sm); color: var(--color-text-tertiary); font-style: italic; padding: var(--space-2) 0; }
.first-devotion-highlight { margin-bottom:var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border-light); }
.schedule-day.first-friday { border-left: 3px solid #B91C1C; padding-left: var(--space-3); margin-left: calc(-1 * var(--space-1)); }
.schedule-day.first-friday .schedule-day-label { color: #B91C1C; }
.schedule-day.first-saturday { border-left: 3px solid #2563EB; padding-left: var(--space-3); margin-left: calc(-1 * var(--space-1)); }
.schedule-day.first-saturday .schedule-day-label { color: #2563EB; }
.schedule-day-subtitle { font-size: var(--text-xs); color: var(--color-text-tertiary); font-weight: var(--weight-normal); font-style: italic; margin-bottom: var(--space-1); }

/* Today row — dot indicator + bold day name */
.schedule-day--today { padding-top: var(--space-3); }
.schedule-day--today .schedule-day-label { color: var(--color-primary); }
.schedule-day--today .schedule-compact-day { color:var(--color-primary);font-weight:var(--weight-bold); }
.schedule-today-dot { width:6px;height:6px;background:var(--color-primary);border-radius:50%;flex-shrink:0; }
html[data-theme="dark"] .schedule-today-dot { background:var(--color-primary); }

/* Inline compact time display: "8:30 · 10:00 · 11:30 AM" */
.schedule-inline { display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1);padding:var(--space-2) 0;min-height:36px; }
/* SFD-02-C: Increased inline time legibility */
.schedule-inline-time { font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-primary);font-variant-numeric:tabular-nums;white-space:nowrap; }
.schedule-inline-time .schedule-lang-badge, .schedule-inline-time .schedule-season-badge, .schedule-inline-time .schedule-vigil-badge { margin-left:var(--space-1); }
.schedule-inline-dot { color:var(--color-text-tertiary);font-size:var(--text-sm);margin:0 var(--space-1); }
.schedule-inline-suffix { font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);margin-left:var(--space-1); }

/* DC-03: AM/PM divider */
.schedule-ampm-break { height: 1px; background: var(--color-border-light); margin: var(--space-1) 0; margin-left: 82px; }

/* DC-05: Vigil badge */
/* SFD-02-D: Vigil badge — larger, bolder, uses primary color system */
.schedule-vigil-badge { display: inline-block; font-size: 12px; font-weight: var(--weight-semibold); padding: 2px 8px; border-radius: var(--radius-full); color: var(--color-primary); background: var(--color-primary-bg); }
html[data-theme="dark"] .schedule-vigil-badge { color: var(--color-primary); background: var(--color-primary-bg); }
.schedule-lang-badge, .schedule-season-badge, .schedule-vigil-badge { min-height:22px;line-height:1; }

/* DC-06: Communion service muted row */
.schedule-row--communion .schedule-time { color: var(--color-text-tertiary); }
.schedule-row--communion .schedule-location { color: var(--color-text-tertiary); }

/* DC-08: Season badge dark mode variants */
html[data-theme="dark"] .schedule-season-badge--lent { color: #C4B5FD; background: #2D1B69; }
html[data-theme="dark"] .schedule-season-badge--summer { color: #FBBF24; background: #422006; }
html[data-theme="dark"] .schedule-season-badge--academic { color: #93C5FD; background: #1D1B30; }

/* DC-10: Recurrence badge */
.schedule-recurrence-badge { display: inline-flex; align-items: center; font-size: 11px; font-weight: var(--weight-semibold); color: var(--color-primary); background: var(--color-primary-bg); padding: 2px 8px; border-radius: var(--radius-full); margin-bottom: 2px; }
html[data-theme="dark"] .schedule-recurrence-badge { color: var(--color-primary); background: var(--color-primary-bg); }

/* DC-04: Multi-location grouping */
.schedule-loc-group { margin-bottom: var(--space-2); }
.schedule-loc-group:last-child { margin-bottom: 0; }
.schedule-loc-header { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-primary); padding: var(--space-1) 0; display: flex; align-items: center; gap: var(--space-2); }
.schedule-loc-header::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--color-primary); flex-shrink: 0; opacity: 0.5; }


/* DC-12: Footer actions */
/* DSN-27: Pray Along section — 3-tile promoted layout */
.pray-along-section { margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-border-light); }
.prayer-promoted-quote { font-family:var(--font-prayer);font-size:var(--text-sm);font-style:italic;color:var(--color-text-tertiary);margin-top:var(--space-2);line-height:1.4; }
/* CTAs inside promoted card */
.pray-along-card-actions { display:flex;flex-direction:column;gap:var(--space-2);margin-top:auto;padding-top:var(--space-3); }
/* "Pray with parish" — tap to reveal split actions */
.pray-along-join-wrap { position:relative; }
.pray-along-join { display:block;width:100%;text-align:center;padding:var(--space-2) var(--space-3);background:var(--color-primary);color:#fff;font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);border-radius:var(--radius-sm);text-decoration:none;min-height:36px;line-height:36px;cursor:pointer;border:none; }
.pray-along-join:active { opacity:0.8; }
.pray-along-popover { display:none;position:absolute;bottom:calc(100% + var(--space-2));left:0;right:0;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card),0 4px 16px rgba(0,0,0,0.12);z-index:10; }
.pray-along-popover--open .pray-along-popover { display:flex; }
.pray-along-popover--open::before { content:'';position:fixed;inset:0;z-index:9; }
.pray-along-popover-btn { display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-primary);color:#fff;font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);border-radius:var(--radius-sm);text-decoration:none;min-height:44px;cursor:pointer;border:none; }
.pray-along-popover-btn:active { opacity:0.8; }
.pray-along-popover-btn svg { flex-shrink:0; }
html[data-theme="dark"] .pray-along-popover { background:var(--color-surface);box-shadow:0 4px 16px rgba(0,0,0,0.4); }
.pray-along-home { display:block;text-align:center;padding:var(--space-2) var(--space-3);background:none;border:1px solid rgba(255,255,255,0.3);color:var(--color-text-secondary);font-family:var(--font-prayer);font-style:italic;font-size:var(--text-xs);border-radius:var(--radius-sm);cursor:pointer;min-height:36px; }
.pray-along-home:active { opacity:0.8; }
html[data-theme="dark"] .pray-along-home { border-color:var(--color-border); }

.detail-footer-row { margin-top: var(--space-4); padding-top: var(--space-3); border-top: 1px solid var(--color-border-light); }
.detail-footer-actions { display: flex; gap: var(--space-3); margin-top: var(--space-3); }
.detail-footer-btn { display: inline-flex; align-items: center; gap: var(--space-1); font-size: var(--text-xs); color: var(--color-text-tertiary); padding: var(--space-2) var(--space-3); border-radius: var(--radius-full); background: var(--color-bg); transition: all var(--transition-fast); }
.detail-footer-btn:hover { color: var(--color-text-secondary); background: var(--color-surface-hover); }
.detail-footer-btn svg { color: var(--color-text-tertiary); }

/* DC-20: Perpetual Adoration card */
.schedule-perpetual-card { background: var(--color-svc-adoration-pale); border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); margin-bottom: var(--space-3); border-left: 3px solid var(--color-svc-adoration); }
.schedule-perpetual-title { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-svc-adoration); }
.schedule-perpetual-subtitle { font-size: var(--text-xs); color: var(--color-text-secondary); margin-top: 2px; }
html[data-theme="dark"] .schedule-perpetual-card { background: var(--color-svc-adoration-pale); }
html[data-theme="dark"] .schedule-perpetual-title { color: var(--color-svc-adoration); }

/* CDC-03: Next available confession callout */
.schedule-next-available { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); background: var(--color-primary-bg); border-radius: var(--radius-sm); margin-bottom: var(--space-3); font-size: var(--text-sm); }
.schedule-next-available-time { font-weight: var(--weight-semibold); color: var(--color-primary); }
.schedule-next-available-day { color: var(--color-text-secondary); }
html[data-theme="dark"] .schedule-next-available { background: rgba(44,62,90,0.18); }

/* CDC-05: Prayer & Devotion progressive disclosure */
.schedule-summary-list { font-size: var(--text-sm); color: var(--color-text-secondary); padding-left: var(--space-4); margin: 0 0 var(--space-3) 0; }
.schedule-full summary.schedule-full-toggle { font-size: var(--text-sm); color: var(--color-primary); cursor: pointer; padding: var(--space-2) 0; display: block; list-style: none; }
.schedule-full summary.schedule-full-toggle::-webkit-details-marker { display: none; }
.schedule-full summary.schedule-full-toggle::before { content: '\25BE  '; }
details.schedule-full[open] summary.schedule-full-toggle::before { content: '\25B4  '; }

/* DC-22: Confession duration */
.schedule-duration { font-size: var(--text-xs); font-weight: var(--weight-regular); color: var(--color-text-tertiary); margin-left: var(--space-1); }

/* Verify prompt */
.verify-prompt { margin-top: var(--space-4); padding: var(--space-3) var(--space-4); background: var(--color-bg); border-radius: var(--radius-md); text-align: center; }
.verify-prompt p { font-size: var(--text-xs); color: var(--color-text-tertiary); margin-bottom: var(--space-2); }
.verify-prompt-btns { display: flex; gap: var(--space-2); justify-content: center; }
.verify-btn { display: inline-flex; align-items: center; gap: var(--space-1); padding: var(--space-1) var(--space-3); border-radius: var(--radius-full); font-size: var(--text-xs); font-weight: var(--weight-semibold); min-height: 36px; transition: all var(--transition-fast); }
.verify-btn.yes { background: var(--color-verified-bg); color: var(--color-verified); }
.verify-btn.yes:hover { background: #D4EDDA; }
.verify-btn.no { background: var(--color-surface-hover); color: var(--color-text-secondary); }
.verify-btn.no:hover { background: var(--color-border-light); }
.verify-thanks { font-size: var(--text-sm); color: var(--color-verified); font-weight: var(--weight-medium); display: none; padding: var(--space-4) 0; text-align: center; }
.corr-form-label { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-primary); margin-bottom: var(--space-2); margin-top: var(--space-4); display: block; }
.corr-pills { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.corr-pill { padding: var(--space-2) var(--space-3); border-radius: var(--radius-full); font-size: var(--text-sm); font-weight: var(--weight-medium); border: 1.5px solid var(--color-border); background: var(--color-surface); color: var(--color-text-secondary); min-height: 44px; display: inline-flex; align-items: center; cursor: pointer; transition: all var(--transition-fast); }
.corr-pill:hover { border-color: var(--color-primary); color: var(--color-primary); }
.corr-pill.selected { background: var(--color-primary); color: white; border-color: var(--color-primary); }
.corr-input { width: 100%; font-family: inherit; font-size: var(--text-sm); padding: var(--space-3); border: 1.5px solid var(--color-border); border-radius: var(--radius-sm); resize: vertical; background: var(--color-surface); color: var(--color-text-primary); margin-top: var(--space-2); box-sizing: border-box; }
.corr-submit-btn { margin-top:var(--space-3);width:100%;padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-primary);color:white;font-size:var(--text-sm);font-weight:var(--weight-semibold);min-height:44px;border:none;cursor:pointer;transition:opacity 0.15s;-webkit-tap-highlight-color:transparent; }
.corr-submit-btn:active { opacity:0.85; }
.detail-footer-meta { display:grid;grid-template-columns:auto 1fr;gap:var(--space-1) var(--space-3);font-size:var(--text-xs);color:var(--color-text-tertiary); }
.detail-footer-meta-item { display:contents; }
.detail-footer-meta-label { font-weight:var(--weight-medium);color:var(--color-text-secondary);white-space:nowrap; }
.detail-footer-meta-value { color:var(--color-text-tertiary); }

/* MORE FILTERS OVERLAY */
.filters-overlay { position: fixed; inset: 0; z-index: var(--z-filter-panel); background: var(--color-surface); transform: translateY(100%); transition: transform 0.35s var(--ease-out); overflow-y: auto; -webkit-overflow-scrolling: touch; }
.filters-overlay.open { transform: translateY(0); }
.filters-backdrop { position: fixed; inset: 0; z-index: var(--z-filter-backdrop); background: rgba(26,30,38,0.35); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); opacity: 0; pointer-events: none; transition: opacity 0.3s var(--ease-out); }
.filters-backdrop.open { opacity: 1; pointer-events: auto; }
@media(min-width:769px){ .filters-overlay { inset: 10vh auto auto 50%; transform: translateX(-50%) translateY(30px); width: min(560px, 90vw); max-height: 80vh; border-radius: var(--radius-lg); box-shadow: var(--shadow-elevated); opacity: 0; pointer-events: none; transition: transform 0.3s var(--ease-out), opacity 0.3s var(--ease-out); } .filters-overlay.open { transform: translateX(-50%) translateY(0); opacity: 1; pointer-events: auto; } }
.filters-header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-4) var(--space-5); border-bottom: 1px solid var(--color-border-light); position: sticky; top: 0; background: var(--color-surface); z-index: 2; }
.filters-header h2 { font-family: var(--font-display); font-size: var(--text-xl); font-weight: var(--weight-semibold); }
.filters-close { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--color-text-secondary); }
.filters-close:hover { background: var(--color-surface-hover); }
.filters-close svg { width: 24px; height: 24px; }
.filters-body { padding: var(--space-4) var(--space-5) var(--space-12); }
.filter-group { margin-bottom: var(--space-6); }
.filter-group-title { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: var(--space-3); }
.filter-group-grid { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.filter-checkbox { display: flex; align-items: center; padding: var(--space-2) var(--space-3); border: 1.5px solid var(--color-border); border-radius: var(--radius-sm); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--color-text-secondary); min-height: 44px; cursor: pointer; transition: all var(--transition-fast); user-select: none; }
.filter-checkbox:hover { border-color: var(--color-text-tertiary); }
.filter-checkbox.checked { background: var(--color-primary); color: var(--color-text-inverse); border-color: var(--color-primary); }
.filters-footer { position: sticky; bottom: 0; padding: var(--space-4) var(--space-5); background: var(--color-surface); border-top: 1px solid var(--color-border-light); display: flex; gap: var(--space-3); }
.filters-footer button { flex: 1; padding: var(--space-3); border-radius: var(--radius-md); font-size: var(--text-base); font-weight: var(--weight-semibold); min-height: 48px; }
.btn-clear { background: var(--color-bg); color: var(--color-text-secondary); }
.btn-apply { background: var(--color-primary); color: var(--color-text-inverse); }

/* TAB BAR */
.tab-bar { position: fixed; bottom: 0; left: 0; right: 0; z-index: 100; background: var(--color-surface); box-shadow: var(--shadow-tab-bar); padding-bottom: var(--safe-bottom); border-top: none; }
.tab-bar::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, var(--color-border-light) 0%, color-mix(in srgb, var(--color-accent) 20%, var(--color-border-light)) 50%, var(--color-border-light) 100%); }
.tab-bar-inner { display: flex; justify-content: space-around; max-width: var(--max-width); margin: 0 auto; height: var(--tab-bar-height); }
.tab-item { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; color: var(--color-text-tertiary); transition: color var(--transition-fast); min-width: 44px; min-height: 44px; padding: var(--space-2) 0; position: relative; }
.tab-item:hover { color: var(--color-text-secondary); }
.tab-item.active { color: var(--color-primary); }
/* D16: Tab bar accent arc — active indicator */
.tab-item.active::after {
  content: '';
  position: absolute;
  top: 0;
  left: 20%;
  right: 20%;
  height: 2px;
  background: var(--color-accent);
  border-radius: 0 0 2px 2px;
  opacity: 0.6;
}
html[data-theme="dark"] .tab-item.active::after {
  box-shadow: 0 0 6px color-mix(in srgb, var(--color-accent) 40%, transparent);
}
/* D16: Sacristy tab — sacred gold when active */
.tab-item.sacristy-tab.active { color: var(--color-sacred-text); }
html[data-theme="dark"] .tab-item.sacristy-tab.active { color: var(--color-sacred); }
.tab-item svg { width: 24px; height: 24px; }
.tab-item span { font-size: 11px; font-weight: var(--weight-medium); }
.tab-saved-badge { position:absolute;top:8px;right:calc(50% - 16px);width:8px;height:8px;background:var(--color-accent);border-radius:50%;display:none;pointer-events:none; }
.tab-saved-badge.visible { display:block; }
.tab-more-badge { position:absolute;top:8px;right:calc(50% - 16px);width:8px;height:8px;background:var(--color-accent);border-radius:50%;display:none;pointer-events:none; }
.tab-more-badge.visible { display:block; }
.tab-panel { display: none; }
.tab-panel.active { display: block; }
.stub-panel { max-width: var(--max-width); margin: 0 auto; padding: var(--space-12) var(--space-4); text-align: center; color: var(--color-text-tertiary); }
.stub-panel svg { width: 48px; height: 48px; margin-bottom: var(--space-4); opacity: 0.4; }
.stub-panel h2 { font-family: var(--font-display); font-size: var(--text-2xl); font-weight: var(--weight-semibold); color: var(--color-text-secondary); margin-bottom: var(--space-2); }
.stub-panel p { font-size: var(--text-sm); }

/* ANIMATION */
@media (prefers-reduced-motion: no-preference) {
  .parish-card, .service-card { animation: cardEnter 0.35s var(--ease-out) both; }
  @keyframes cardEnter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
}

/* REDUCED MOTION — disable all transitions and animations */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .detail-panel, .event-detail-panel, .filters-overlay, .ccc-sheet, .exam-overlay,
  .detail-backdrop, .filters-backdrop { transition: none !important; }
  .pulse-dot { animation: none !important; }
}

/* FOCUS VISIBLE — keyboard navigation indicator */
button:focus-visible,
a:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible,
.chip:focus-visible,
.tab-item:focus-visible,
.filter-checkbox:focus-visible {
  outline: 2px solid var(--color-primary-muted);
  outline-offset: 2px;
}
.evt-action-btn:focus-visible,
.quick-action:focus-visible { outline-offset: -2px; }

/* RESPONSIVE */
@media (min-width: 768px) {
  .parish-card { padding: var(--space-6); }
  .detail-body { padding: 0 var(--space-8) var(--space-8); }
  .detail-header { padding: var(--space-2) var(--space-8) var(--space-4); }
}
@media print {
  /* Hide app chrome */
  .top-header, .tab-bar, .search-section, .chip-bar, .results-info,
  .detail-backdrop, .active-filters, .events-widget, #sparseMsg,
  #pullIndicator, .toast, .ccc-overlay, .ccc-sheet, .rosary-overlay, .exam-overlay, .stations-overlay, .novena-overlay,
  .detail-handle, .card-fav, .detail-fav-btn,
  .evt-handle, .evt-close, .evt-back, .evt-action-btn, .evt-footer-link,
  .saved-evt-actions, .detail-btn-row, .detail-verify,
  .detail-actions, .loc-site-dir, #panelMap,
  button[onclick*="expressInterest"], button[onclick*="downloadEventIcal"] { display: none !important; }

  /* Reset layout */
  body { padding: 0 !important; background: white !important; color: #1A1E26 !important; font-size: 11pt !important; }
  * { box-shadow: none !important; text-shadow: none !important; }

  /* Panel printing — make panels static, full-width, visible */
  .detail-panel, .event-detail-panel {
    position: static !important; transform: none !important;
    max-height: none !important; overflow: visible !important;
    border-radius: 0 !important; width: 100% !important;
    max-width: 100% !important; left: auto !important;
  }
  .detail-panel.open, .event-detail-panel.open { transform: none !important; }

  /* Hide non-active tab panels when printing from card list */
  .tab-panel:not(.active) { display: none !important; }

  /* Cards */
  .parish-card { break-inside: avoid; box-shadow: none !important; border: 1px solid #ddd; margin-bottom: 8pt; padding: 8pt; page-break-inside: avoid; }
  .card-right { display: none !important; }

  /* Detail panel: schedule-friendly layout */
  .detail-content { padding: 0 !important; }
  .detail-name { font-size: 16pt !important; margin-bottom: 4pt; }
  .detail-town { font-size: 10pt !important; }
  .detail-section { border-color: #ddd !important; padding: 8pt 0 !important; }
  .detail-section summary, .detail-section-toggle { font-size: 11pt !important; font-weight: 600 !important; }

  /* Schedule rows */
  .schedule-day { margin-bottom: 6pt; break-inside: avoid; }
  .schedule-day-label { font-size: 10pt !important; border-bottom: 1px solid #ddd !important; }
  .schedule-row { padding: 2pt 0 !important; }
  .schedule-time { font-size: 11pt !important; color: #1A1E26 !important; }
  .schedule-location { font-size: 9pt !important; }
  .schedule-lang-badge, .schedule-season-badge { border: 1px solid #999 !important; background: transparent !important; color: #333 !important; font-size: 8pt !important; }

  /* Event detail panel */
  .evt-header { padding: 8pt 0 !important; }
  .evt-cat-icon { display: none !important; }
  .evt-title { font-size: 14pt !important; }
  .evt-subtitle { font-size: 9pt !important; }
  .evt-countdown { border: 1px solid #999 !important; background: transparent !important; color: #333 !important; }
  .evt-info-card { background: transparent !important; border: 1px solid #ddd; padding: 6pt !important; }
  .evt-info-icon svg { color: #333 !important; }
  .evt-notes { background: transparent !important; border-left: 2px solid #999 !important; }
  .evt-series-date.past { text-decoration: line-through; color: #999 !important; }

  /* Community events in detail panel */
  .ce-item { break-inside: avoid; }
  .ce-item-accent { print-color-adjust: exact; -webkit-print-color-adjust: exact; }

  /* Saved tab */
  .saved-evt-unified { break-inside: avoid; }

  /* More tab: readings, devotional guides */
  .reading-section { break-inside: avoid; }
  .conf-exam, .conf-act { break-inside: avoid; }

  /* Links: show URL */
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 8pt; color: #666; word-break: break-all; }
  a[href^="tel"]::after { content: " (" attr(href) ")"; font-size: 8pt; color: #666; }

  /* Footer with app name */
  body::after { content: "Printed from MassFinder \2022  massfinder.app"; display: block; text-align: center; font-size: 8pt; color: #999; margin-top: 16pt; padding-top: 8pt; border-top: 1px solid #ddd; }

  /* Page setup */
  @page { margin: 0.5in; }
}
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
.skip-link { position: absolute; top: -100%; left: 0; padding: 8px 16px; background: var(--color-primary); color: white; z-index: var(--z-skip-link); font-size: var(--text-sm); font-weight: var(--weight-semibold); text-decoration: none; border-radius: 0 0 var(--radius-sm) 0; }
.skip-link:focus { position: fixed; top: 0; left: 0; outline: 2px solid var(--color-accent); outline-offset: 2px; }

/* MAP TAB */
body.map-active { overflow: hidden; }
#panelMap { padding: 0; box-sizing: border-box; overflow: hidden; position:relative; }
#mapContainer { width: 100%; height: calc(100vh - var(--header-height) - var(--tab-bar-height) - var(--safe-bottom)); height: calc(100dvh - var(--header-height) - var(--tab-bar-height) - var(--safe-bottom)); overflow: hidden; }
.leaflet-container { background: var(--color-bg); font-family: var(--font-body); }
.map-cluster {
  background: rgba(44,62,90,0.15); border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
}
.map-cluster div {
  background: var(--color-primary); color: var(--color-text-inverse);
  border-radius: 50%; text-align: center; font-size: 13px; font-weight: var(--weight-semibold);
  display: flex; align-items: center; justify-content: center;
}

/* MAP CHIP BAR — standalone filter chips overlaid on map */
.map-chip-bar { position:absolute;bottom:var(--space-3);left:var(--space-3);right:var(--space-3);z-index:501;display:flex;gap:var(--space-2);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:var(--space-1);justify-content:center; }
.map-chip-bar::-webkit-scrollbar { display:none; }
.map-chip { flex-shrink:0;padding:var(--space-2) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary);box-shadow:var(--shadow-card);min-height:36px;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.map-chip.active { background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary); }
.map-chip:active { opacity:0.85; }
html[data-theme="dark"] .map-chip { background:var(--color-surface);border-color:var(--color-border);color:var(--color-text-secondary);box-shadow:0 1px 4px rgba(0,0,0,0.3); }
html[data-theme="dark"] .map-chip.active { background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary); }

/* MAP FILTER PILL — floating indicator showing active filter */
.map-filter-pill { position:absolute;top:76px;left:50%;transform:translateX(-50%);z-index:500;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-surface);border-radius:var(--radius-full);box-shadow:var(--shadow-elevated);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary);white-space:nowrap;cursor:default;max-width:calc(100% - 120px); }
.map-chip-bar ~ .map-filter-pill { top:auto;bottom:calc(var(--space-3) + 48px); }
.map-filter-pill-dot { width:8px;height:8px;border-radius:50%;background:var(--color-primary);flex-shrink:0; }
.map-filter-pill-label { overflow:hidden;text-overflow:ellipsis; }
.map-filter-pill-clear { width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--color-text-tertiary);font-size:var(--text-xs);flex-shrink:0;cursor:pointer;margin:-2px -8px -2px 0;-webkit-tap-highlight-color:transparent;background:none;border:none; }
.map-filter-pill-clear:hover { background:var(--color-surface-hover);color:var(--color-text-secondary); }

/* MAP POPUP */
.map-popup { padding: 0; }
.map-popup .leaflet-popup-content-wrapper { border-radius: var(--radius-md); box-shadow: var(--shadow-card); padding: 0; }
.map-popup .leaflet-popup-content { margin: 0; width: 260px !important; }
.map-popup .leaflet-popup-tip { border-top-color: var(--color-surface); }
.popup-card { padding: var(--space-4); cursor: pointer; }
.popup-card:active { background: var(--color-surface-hover); }
.popup-top { display:flex;align-items:flex-start;gap:var(--space-2);margin-bottom:var(--space-2); }
.popup-info { flex:1;min-width:0; }
.popup-name { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--color-text-primary); line-height: 1.3; }
.popup-town { font-size: var(--text-xs); color: var(--color-text-secondary); margin-top:1px; }
.popup-fav { width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--color-text-tertiary);flex-shrink:0;margin:-4px -4px 0 0;-webkit-tap-highlight-color:transparent;transition:color var(--transition-fast);background:none;border:none;cursor:pointer; }
.popup-fav:hover { background:var(--color-surface-hover); }
.popup-fav--active { color:var(--color-fav); }
.popup-next { display: flex; align-items: baseline; gap: var(--space-2); }
.popup-time { font-size: var(--text-xl); font-weight: var(--weight-semibold); color: var(--color-primary); }
.popup-label { font-size: var(--text-xs); color: var(--color-text-secondary); font-weight: var(--weight-medium); }
.popup-day { font-size: var(--text-xs); color: var(--color-text-tertiary); margin-top: 2px; }
.popup-dist { font-size: var(--text-xs); color: var(--color-text-tertiary); margin-top: var(--space-1); }

/* MAP LOCATE BUTTON */
.map-locate-btn {
  width: 40px; height: 40px; background: var(--color-surface); border: 2px solid rgba(0,0,0,0.15);
  border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center;
  cursor: pointer; box-shadow: var(--shadow-card);
}
.map-locate-btn:hover { background: var(--color-surface-hover); }
.map-locate-btn svg { width: 20px; height: 20px; color: var(--color-primary); }
.map-locate-loading svg { animation: spin 0.8s linear infinite; color: var(--color-accent); }

/* MAP DARK MODE */
html[data-theme="dark"] .leaflet-container { background: #1C1914; }
html[data-theme="dark"] .map-popup .leaflet-popup-content-wrapper { background: var(--color-surface); }
html[data-theme="dark"] .map-popup .leaflet-popup-tip { border-top-color: var(--color-surface); }
html[data-theme="dark"] .map-locate-btn { background: var(--color-surface); border-color: rgba(255,255,255,0.1); }
html[data-theme="dark"] .map-cluster { background: rgba(143,168,200,0.2); }
html[data-theme="dark"] .map-cluster div { background: var(--color-primary); }
html[data-theme="dark"] .map-filter-pill { background:var(--color-surface);box-shadow:var(--shadow-elevated); }

/* ══════════════════════════════════════════════════════════
   SAVED TAB — "Your Parishes" personal dashboard
   ══════════════════════════════════════════════════════════ */

/* ── Layout shell ── */
.saved-content { max-width:var(--max-width);margin:0 auto;padding:var(--space-4); }
/* SFD-06-A: Compressed greeting — saves ~40px vertical space */
.saved-header { padding:var(--space-2) 0 var(--space-2);display:flex;align-items:center;gap:var(--space-3); }
.saved-header h2 { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--color-heading); }
.saved-list { display:flex;flex-direction:column;gap:0; }

/* ── Empty state ── */
.saved-empty { text-align:center;padding:var(--space-12) 0; }
.saved-empty-icon { width:56px;height:56px;margin:0 auto var(--space-4);border-radius:50%;background:var(--color-surface-hover);display:flex;align-items:center;justify-content:center; }
.saved-empty-icon svg { width:28px;height:28px;color:var(--color-text-tertiary); }
.saved-empty h3 { font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-semibold);color:var(--color-text-secondary);margin-bottom:var(--space-2); }
.saved-empty p { font-size:var(--text-sm);color:var(--color-text-tertiary);line-height:1.5; }
.saved-empty-btn { display:inline-flex;align-items:center;gap:var(--space-2);margin-top:var(--space-4);padding:var(--space-3) var(--space-5);background:var(--color-primary);color:var(--color-text-inverse);font-size:var(--text-sm);font-weight:var(--weight-semibold);border-radius:var(--radius-full);min-height:44px; }
.saved-empty-hint { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-2); }
.saved-empty-btn:hover { background:var(--color-primary-light); }

/* ── Section divider labels ── */
.saved-divider { display:flex;align-items:center;gap:var(--space-3);margin:var(--space-6) 0 var(--space-3); }
.saved-divider:first-child { margin-top:0; }
.saved-divider span { font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-tertiary);white-space:nowrap; }
.saved-divider::before,.saved-divider::after { content:'';flex:1;height:1px;background:var(--color-border-light); }
.saved-divider--editable::after { display:none; }

/* ── TODAY card ── */
.saved-today-card { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-card); }
.saved-today-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-primary);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--space-3); }
.saved-today-date { font-weight:var(--weight-medium);text-transform:none;letter-spacing:0;color:var(--color-text-tertiary); }
/* UXI-MP-03: deprecated — today events merged into unified timeline */
/* .saved-today-divider { height:1px;background:var(--color-border-light);margin:var(--space-3) 0; } */

/* ── DSN-08: Today Hero Card ── */

/* UXI-RF-01: Hero lives inside .saved-today-card — no separate surface */
.today-hero-card { padding:var(--space-4) var(--space-4) var(--space-6);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.today-hero-card:active { opacity:0.92; }
.today-hero-top { display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-2); }
.today-hero-label { font-family:var(--font-body);font-size:12px;font-weight:var(--weight-bold);color:var(--color-sacred-text);text-transform:uppercase;letter-spacing:2px; }
.today-hero-main { display:flex;flex-direction:column;gap:2px; }
.today-hero-badge { display:inline-flex;align-items:center;gap:4px;font-family:var(--font-body);font-size:13px;font-weight:var(--weight-bold);padding:2px 0;margin-bottom:2px; }
.today-hero-badge--live { color:var(--color-verified); }
.today-hero-badge--soon { color:var(--color-soon-text); }
.today-hero-badge--imminent { color:var(--color-soon-text);opacity:0.7; }
.today-hero-dot { width:8px;height:8px;border-radius:50%;background:var(--color-soon);flex-shrink:0; }
.today-hero-dot--imminent { width:7px;height:7px;opacity:0.7; }
.today-hero-time { font-family:var(--font-body);font-size:1.625rem;font-weight:var(--weight-semibold);color:var(--color-primary);line-height:1.2; }
.today-hero-parish { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary); }
.today-hero-dist { color:var(--color-text-tertiary); }
.today-hero-lang { font-size:10px;font-weight:var(--weight-semibold);background:var(--color-surface-hover);color:var(--color-text-secondary);padding:1px 5px;border-radius:var(--radius-full);margin-left:var(--space-1);vertical-align:middle; }
.today-hero-seasonal { font-size:var(--text-sm);color:var(--color-accent);font-weight:var(--weight-medium);margin-left:var(--space-1); }
.today-hero-empty { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-card); }
.today-hero-empty-text { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);text-align:center; }

/* ── DSN-08: Compressed Dot Timeline ── */
/* UXI-RF-01: Timeline inside card — no separate surface */
.today-timeline { padding:var(--space-4) var(--space-4) var(--space-3);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.today-timeline:active { opacity:0.92; }
/* Dot timeline container */
.today-timeline-dots { display:flex;justify-content:space-around;align-items:flex-start;padding:var(--space-3) var(--space-3) var(--space-2);position:relative; }
/* Connecting hairline — calc: padding-top + half dot height */
.today-timeline-dots::before { content:'';position:absolute;left:var(--space-4);right:var(--space-4);top:calc(var(--space-3) + 5px);height:1px;background:var(--color-border-light);z-index:0; }
/* Dot items */
.today-dot-item { display:flex;flex-direction:column;align-items:center;gap:4px;flex:1;min-width:0;position:relative;z-index:1; }
.today-dot { width:10px;height:10px;border-radius:50%;flex-shrink:0; }
.today-dot-time { font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);white-space:nowrap; }
.today-dot-type { font-family:var(--font-body);font-size:11px;color:var(--color-text-tertiary);text-align:center;line-height:1; }
.today-dot-overflow { font-family:var(--font-body);font-size:11px;color:var(--color-text-tertiary);white-space:nowrap;padding:0 var(--space-1); }
/* Single item — no connecting line, centered */
.sched-dots--single { justify-content:center; }
.sched-dots--single::before { display:none; }
.sched-dots--single .today-dot { width:14px;height:14px; }
/* Sparse: 2-3 items — larger dots */
.sched-dots--sparse .today-dot { width:14px;height:14px; }
.sched-dots--sparse .today-dot-item { min-width:60px; }
.sched-dots--sparse::before { top:calc(var(--space-3) + 7px); }
/* Dense: 7+ items — compact */
.sched-dots--dense .today-dot { width:8px;height:8px; }
.sched-dots--dense::before { top:calc(var(--space-3) + 4px); }
.sched-dots--dense .today-dot-time { font-size:11px; }
.sched-dots--dense .today-dot-type { font-size:9px; }
/* Active dot pulse */
.today-dot--active { width:14px !important;height:14px !important;box-shadow:0 0 0 3px color-mix(in srgb, currentColor 15%, transparent);animation:dot-pulse 2s ease-in-out infinite; }
@keyframes dot-pulse { 0%,100%{box-shadow:0 0 0 3px color-mix(in srgb, currentColor 15%, transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb, currentColor 8%, transparent)} }
@media (prefers-reduced-motion:reduce) { .today-dot--active { animation:none; } }
/* Expand/collapse */
.today-timeline[aria-expanded="true"] .today-timeline-dots { display:none; }
/* TDH-01: Compact summary for 5+ services */
.today-timeline-summary { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-3); }
.today-timeline-summary .today-dot { width:10px;height:10px;flex-shrink:0; }
.today-timeline-summary-text { font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-primary);flex:1; }
.today-timeline-summary-hint { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);flex-shrink:0; }
.today-timeline[aria-expanded="true"] .today-timeline-summary { display:none; }
.today-timeline-expanded { display:none; }
.today-timeline[aria-expanded="true"] .today-timeline-expanded { display:block; }

/* UXI-RF-01: Divider between hero and timeline */
.today-timeline-divider { height:0;border-top:0.5px solid var(--color-border-light);margin:0; }

/* ── UXI-RF-03 + TLR: Timeline Row — two-line layout with legibility hierarchy ── */
.timeline-row { display:flex;align-items:flex-start;gap:10px;padding:14px 16px;border-left:3px solid transparent;min-height:52px;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.timeline-row:nth-child(even) { background:rgba(1,1,1,0.03); }
.timeline-row:nth-child(even) { background:color-mix(in srgb, var(--color-text-primary) 3%, transparent); }
.timeline-row:active { opacity:0.85; }
.timeline-row--past { opacity:0.4; }
.timeline-row--past .today-expanded-time { text-decoration:line-through; }
.timeline-row--live .today-expanded-time,.timeline-row--live .today-expanded-label { font-weight:var(--weight-bold);color:var(--color-primary); }
.timeline-row--event { background:rgba(3,4,4,0.03); }
.timeline-row--event { background:color-mix(in srgb, var(--timeline-evt-color, var(--color-primary-muted)) 3%, transparent); }
.timeline-row-icon { flex-shrink:0;width:14px;height:14px;display:flex;align-items:center;justify-content:center;margin-top:3px; }
.timeline-row-icon svg { width:14px;height:14px; }

.today-expanded-time { font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);min-width:0;text-align:right;font-variant-numeric:tabular-nums;flex-shrink:0;line-height:1.3;white-space:nowrap; }
.today-expanded-info { flex:1;min-width:0; }
.today-expanded-label { font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-bold);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--space-1);flex-wrap:wrap;line-height:1.3; }
.today-expanded-church { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);display:block;margin-top:2px;line-height:1.3; }
.today-expanded-seasonal { color:var(--color-accent);font-weight:var(--weight-medium); }
.today-expanded-lang { font-size:10px;font-weight:var(--weight-semibold);background:var(--color-surface-hover);color:var(--color-text-secondary);padding:1px 5px;border-radius:var(--radius-full); }
.today-expanded-status { flex-shrink:0;margin-left:auto;align-self:center; }
.today-expanded-badge { font-size:11px;font-weight:var(--weight-semibold);padding:2px 8px;border-radius:var(--radius-full);white-space:nowrap;display:inline-flex;align-items:center;gap:3px; }
.today-expanded-badge--live { color:#fff;background:var(--color-primary); }
.today-expanded-badge--live .pulse-dot { width:6px;height:6px; }
.today-expanded-badge--soon { color:var(--color-soon-text);background:var(--color-soon-pale); }
/* DSN-08 Amendment: Collapsed count + parish abbreviation */
/* UXI-MP-01: Collapsed count label */
.today-expanded-collapsed { color:var(--color-text-tertiary);font-size:var(--text-xs);font-family:var(--font-body);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.today-expanded-collapsed:active { color:var(--color-primary); }
/* UXI-MP-01: Parish abbreviation below dot */
.today-dot-parish { font-family:var(--font-body);font-size:9px;color:var(--color-text-tertiary);text-align:center;line-height:1;margin-top:1px; }
/* UXI-MP-03: Event ring dot (stroke only, no fill) */
.sched-type-dot--event { background:transparent !important;border:1.5px solid var(--color-text-tertiary);box-sizing:border-box; }
/* UXI-MP-02: Earlier today summary line */
.sched-earlier { display:flex;align-items:center;padding:6px var(--space-3);border-left:2px solid var(--color-border-light);margin-bottom:var(--space-5);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:44px; }
.sched-earlier-label { font-family:var(--font-body);font-size:12px;color:var(--color-text-tertiary); }
.sched-earlier[aria-expanded="true"] .sched-earlier-label { color:var(--color-text-secondary); }
.sched-earlier-expand { opacity:0.4; }
.sched-earlier-expand[hidden] { display:none; }
/* "Show all" toggle for full uncollapsed timeline */
.timeline-show-all-toggle { padding:10px 16px;font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary);cursor:pointer;-webkit-tap-highlight-color:transparent;text-align:center;border-top:1px solid var(--color-border-light); }
.timeline-show-all-toggle:active { opacity:0.7; }
.timeline-show-all[hidden] { display:none; }
.timeline-show-all { border-top:1px solid var(--color-border-light); }
/* UXI-MP dark mode */
html[data-theme="dark"] .today-expanded-collapsed { color:var(--color-text-tertiary); }
html[data-theme="dark"] .today-expanded-collapsed:active { color:var(--color-primary); }
html[data-theme="dark"] .today-dot-parish { color:var(--color-text-tertiary); }
html[data-theme="dark"] .sched-type-dot--event { border-color:var(--color-text-tertiary); }
html[data-theme="dark"] .sched-earlier { border-left-color:var(--color-border-light); }

/* DSN-08: Pulse dot animation */
@keyframes hero-pulse { 0%,100%{opacity:1;transform:scale(1)}50%{opacity:0.5;transform:scale(1.3)} }
.today-hero-badge--live .pulse-dot { width:8px;height:8px;border-radius:50%;background:var(--color-verified);animation:hero-pulse 2s ease-in-out infinite; }
@media (prefers-reduced-motion:reduce) {
  .today-hero-badge--live .pulse-dot { animation:none; }
}

/* DSN-08: Dark mode overrides */
/* UXI-RF-01: sacred glow on the parent card in dark mode */
html[data-theme="dark"] .saved-today-card { box-shadow:var(--shadow-card),0 0 24px rgba(22,18,8,0.12); }
html[data-theme="dark"] .saved-today-card { box-shadow:var(--shadow-card),0 0 24px color-mix(in srgb,var(--color-sacred) 12%,transparent); }
html[data-theme="dark"] .timeline-row--event { background:rgba(5,6,7,0.05); }
html[data-theme="dark"] .timeline-row--event { background:color-mix(in srgb, var(--timeline-evt-color, var(--color-primary-muted)) 5%, transparent); }

/* ── Schedule timeline rows ── */
.sched-row { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border-light);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.sched-row:last-child { border-bottom:none; }
.sched-row:active { opacity:0.85; }
.sched-row:nth-child(even):not(.sched-live):not(.sched-past) { background:var(--color-primary-bg); }
html[data-theme="dark"] .sched-row:nth-child(even):not(.sched-live):not(.sched-past) { background:rgba(255,255,255,0.02); }
.sched-time { font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);min-width:110px;flex-shrink:0;font-variant-numeric:tabular-nums;text-align:right; }
.sched-info { display:flex;flex-direction:column;gap:1px;min-width:0;flex:1; }
.sched-type { font-size:var(--text-base);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--space-2); }
.sched-church { font-size:var(--text-sm);color:var(--color-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.sched-past { opacity:0.35; }
.sched-past .sched-time { text-decoration:line-through; }
.sched-live { background:var(--color-primary-bg);border-left:3px solid var(--color-primary);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);border-bottom:none;margin:var(--space-1) 0; }
.sched-live .sched-time { color:var(--color-primary); }
.sched-live-badge { font-size:11px;font-weight:var(--weight-semibold);color:#fff;background:var(--color-primary);padding:2px 8px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;gap:4px;margin-left:var(--space-2);white-space:nowrap; }
.sched-live-badge .pulse-dot { width:8px;height:8px; }
.sched-soon { border-left:2px solid var(--color-soon);padding-left:var(--space-3); }
.sched-soon .sched-time { color:var(--color-primary); }
.sched-soon-badge { font-size:11px;font-weight:var(--weight-medium);color:var(--color-soon-text);background:var(--color-soon-pale);padding:2px 8px;border-radius:var(--radius-sm);margin-left:var(--space-2);white-space:nowrap; }
.sched-done { font-size:var(--text-sm);color:var(--color-text-tertiary);font-style:italic;padding:var(--space-2) 0; }
/* Type dot indicators (ST-04) */
.sched-type-dot { width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block;vertical-align:middle;margin-right:4px; }
.sched-type-dot--mass { background:var(--color-primary); }
.sched-type-dot--sacr { background:var(--color-verified); }
.sched-type-dot--ador { background:var(--color-svc-adoration); }
.sched-type-dot--devot { background:var(--color-svc-devotion); }
/* Inline hero row (ST-01 — replaces detached hero card) */
/* SFD-06-B: Hero service elevation — visual anchor of Saved tab */
.sched-row--hero { padding:var(--space-3);border-radius:var(--radius-md); }
.sched-row--hero .sched-time { font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--color-primary);min-width:110px; }
.sched-row--hero .sched-church { font-size:var(--text-base); }
.sched-row-directions { display:inline-block;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-primary);text-decoration:none;margin-top:2px;padding:var(--space-1) var(--space-3); }
.sched-row-directions:active { opacity:0.7; }
/* Past services summary (ST-06) */
.sched-past-summary { font-size:var(--text-xs);color:var(--color-text-tertiary);padding:var(--space-1) 0 var(--space-2);font-style:italic; }
/* Today done + tomorrow preview (ST-05) */
.sched-done-tomorrow { padding:var(--space-2) 0; }
.sched-done-label { font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic;margin-bottom:var(--space-3); }
.sched-done-next-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-primary);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--space-1); }
/* Tomorrow card (ST-03) */
/* SFD-06-C: Tomorrow card visually subdued vs Today */
.saved-tomorrow-card { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);box-shadow:none;opacity:0.9; }
.saved-tomorrow-card .sched-time { color:var(--color-text-secondary); }
.sched-more-count { font-size:var(--text-xs);color:var(--color-text-tertiary);padding:var(--space-2) 0;font-style:italic; }
.sched-overflow { font-size:var(--text-xs);color:var(--color-primary);font-weight:var(--weight-medium);padding:var(--space-2) 0;cursor:pointer; }
.sched-overflow:hover { text-decoration:underline; }

/* ── Event rows ── */
.saved-evt-unified { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-border-light);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.saved-evt-unified:last-child { border-bottom:none; }
.saved-evt-unified:active { opacity:0.85; }
.saved-evt-icon { width:28px;height:28px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--color-surface-hover); }
.saved-evt-icon svg { width:16px;height:16px; }
.saved-evt-icon--liturgical { background:var(--color-accent-pale);color:var(--color-accent); }
.saved-evt-icon--devotional { background:var(--color-cat-devotional-pale);color:var(--color-cat-devotional); }
.saved-evt-icon--educational { background:var(--color-info-bg, rgba(59,130,246,0.08));color:var(--color-info, #3B82F6); }
.saved-evt-icon--social, .saved-evt-icon--fellowship { background:var(--color-cat-social-pale);color:var(--color-cat-social); }
.saved-evt-icon--community { background:var(--color-primary-bg, rgba(44,62,90,0.06));color:var(--color-primary); }
.saved-evt-icon--volunteering { background:var(--color-cat-volunteering-pale);color:var(--color-cat-volunteering); }
.saved-evt-icon--yc { background:var(--color-sacred-pale);color:var(--color-sacred); }
.saved-evt-unified-body { flex:1;min-width:0; }
.saved-evt-unified-title { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;gap:var(--space-2); }
.saved-evt-unified-when { font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:2px; }
.saved-evt-unified-church { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:1px; }
.saved-evt-unified-note { font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.saved-evt-cat-label { font-weight:var(--weight-medium); }
.saved-evt-cat--liturgical { color:var(--color-accent-text); }
.saved-evt-cat--devotional { color:var(--color-cat-devotional); }
.saved-evt-cat--educational { color:var(--color-info, #3B82F6); }
.saved-evt-cat--social, .saved-evt-cat--fellowship { color:var(--color-cat-social); }
.saved-evt-cat--community { color:var(--color-primary); }
.saved-evt-cat--volunteering { color:var(--color-cat-volunteering); }
.saved-evt-cat--yc { color:var(--color-sacred-text); }
.saved-evt-chevron { flex-shrink:0;color:var(--color-text-tertiary); }
.saved-evt-today { border-left:3px solid var(--color-soon);padding-left:var(--space-3);border-bottom:none;margin:var(--space-1) 0;background:rgba(8,5,1,0.04);border-radius:var(--radius-sm); }
.saved-evt-today { border-left:3px solid var(--color-soon);padding-left:var(--space-3);border-bottom:none;margin:var(--space-1) 0;background:color-mix(in srgb, var(--color-soon) 4%, transparent);border-radius:var(--radius-sm); }
html[data-theme="dark"] .saved-evt-today { background:rgba(12,8,1,0.06); }
html[data-theme="dark"] .saved-evt-today { background:color-mix(in srgb, var(--color-soon) 6%, transparent); }
.saved-evt-unified.saved-evt-season-lent { border-left:3px solid var(--color-accent);padding-left:var(--space-3);background:rgba(6,5,2,0.03); }
.saved-evt-unified.saved-evt-season-lent { border-left:3px solid var(--color-accent);padding-left:var(--space-3);background:color-mix(in srgb, var(--color-accent) 3%, transparent); }
html[data-theme="dark"] .saved-evt-unified.saved-evt-season-lent { background:rgba(11,9,4,0.06); }
html[data-theme="dark"] .saved-evt-unified.saved-evt-season-lent { background:color-mix(in srgb, var(--color-accent) 6%, transparent); }
.saved-evt-unified.saved-evt-season-advent { border-left:3px solid var(--color-accent);padding-left:var(--space-3);background:rgba(6,5,2,0.03); }
.saved-evt-unified.saved-evt-season-advent { border-left:3px solid var(--color-accent);padding-left:var(--space-3);background:color-mix(in srgb, var(--color-accent) 3%, transparent); }
.saved-evt-unified.saved-evt-season-christmas { border-left:3px solid var(--color-accent);padding-left:var(--space-3);background:rgba(6,5,2,0.03); }
.saved-evt-unified.saved-evt-season-christmas { border-left:3px solid var(--color-accent);padding-left:var(--space-3);background:color-mix(in srgb, var(--color-accent) 3%, transparent); }
.saved-evt-unified.saved-evt-season-easter { border-left:3px solid var(--color-verified);padding-left:var(--space-3);background:rgba(74,124,89,0.03); }
html[data-theme="dark"] .saved-evt-icon--devotional { background:var(--color-cat-devotional-pale);color:var(--color-cat-devotional); }
html[data-theme="dark"] .saved-evt-cat--devotional { color:var(--color-cat-devotional); }
/* UXI-MP-03: deprecated — today events merged into unified timeline */
/* .saved-evt-today-badge { font-size:var(--text-xs);font-weight:var(--weight-bold, 700);text-transform:uppercase;letter-spacing:0.06em;color:var(--color-soon-text);padding:var(--space-2) 0 var(--space-1); } */
.evt-yc-row { background:rgba(7,6,3,0.04);border-radius:var(--radius-sm);padding-left:var(--space-3);padding-right:var(--space-3);margin:0 calc(-1 * var(--space-2)); }
.evt-yc-row { background:color-mix(in srgb, var(--color-sacred) 4%, transparent);border-radius:var(--radius-sm);padding-left:var(--space-3);padding-right:var(--space-3);margin:0 calc(-1 * var(--space-2)); }
html[data-theme="dark"] .evt-yc-row { background:rgba(11,9,4,0.06); }
html[data-theme="dark"] .evt-yc-row { background:color-mix(in srgb, var(--color-sacred) 6%, transparent); }
.evt-yc-badge { font-size:10px;font-weight:var(--weight-semibold);color:var(--color-sacred-text);background:var(--color-sacred-pale);padding:1px 6px;border-radius:var(--radius-full);white-space:nowrap; }
.saved-week-date-header { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-secondary);padding:var(--space-2) 0 var(--space-1);margin-top:var(--space-3); }
.saved-week-date-header:first-child { margin-top:0; }
.saved-more-details summary { list-style:none;font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-primary);cursor:pointer;padding:var(--space-2) 0; }
.saved-more-details summary::-webkit-details-marker { display:none; }
.saved-more-details summary:hover { text-decoration:underline; }

/* ── Compact church rows ── */
.saved-churches-card { background:var(--color-surface);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-card); }
/* SFD-05-B: Increased min-height for accessibility */
.saved-church-row { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-4);border-bottom:1px solid var(--color-border-light);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background var(--transition-fast);min-height:72px; }
.saved-church-row:last-child { border-bottom:none; }
.saved-church-row:active { background:var(--color-surface-hover); }
.saved-church-info { flex:1;min-width:0; }
.saved-church-name { font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.saved-church-name .card-verified { width:14px;height:14px;vertical-align:-2px;margin-left:4px; }
.saved-church-meta { font-size:var(--text-sm);color:var(--color-text-tertiary);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.saved-church-meta .saved-evt-count { margin-left:0; }
.saved-church-next { display:flex;align-items:center;gap:var(--space-2);margin-top:3px; }
/* SFD-05-B: Increased typography for next-service line */
.saved-church-next-time { font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-primary);font-variant-numeric:tabular-nums; }
.saved-church-next-label { font-size:var(--text-sm);color:var(--color-text-secondary); }
.saved-church-next-day { font-size:var(--text-sm);color:var(--color-text-tertiary); }
.saved-church-status { flex-shrink:0; }
.saved-church-chevron { flex-shrink:0;color:var(--color-text-tertiary); }
/* Edit mode (ST-10) */
/* SFD-05-C: Ensure 44x44 tap target */
.saved-edit-btn { font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-primary);margin-left:auto;padding:var(--space-3) var(--space-3);min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center; }
.saved-church-remove { display:none;width:44px;height:44px;border-radius:50%;align-items:center;justify-content:center;color:var(--color-error, #DC2626);flex-shrink:0;transition:background var(--transition-fast); }
.saved-church-remove:active { background:rgba(185,28,28,0.08); }
.saved-churches-card.editing .saved-church-remove { display:flex; }
.saved-churches-card.editing .saved-church-chevron { display:none; }
.saved-churches-card.editing .saved-church-status { display:none; }
.saved-evt-count { font-size:var(--text-xs);color:var(--color-info);font-weight:var(--weight-medium);background:var(--color-info-bg);padding:1px 6px;border-radius:var(--radius-full);margin-left:var(--space-1); }
/* SFD-05-D: Tappable event badge */
.saved-evt-count--tap { cursor:pointer;-webkit-tap-highlight-color:transparent; }
.saved-evt-count--tap:active { opacity:0.7; }

/* ── Activity card (prayer life) ── */
.saved-activity-card { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-card); }
/* Warm recency text (replaces dot tracker) */
.activity-recency { display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary); }
.activity-recency-icon { color:var(--color-verified);flex-shrink:0; }
/* Prayer invite (no history) */
.activity-invite { font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-3);font-family:var(--font-prayer);font-style:italic; }
/* Confession nudge card (ST-20) */
.saved-confession-card { display:flex;align-items:flex-start;gap:var(--space-3);background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);margin-top:var(--space-3);box-shadow:var(--shadow-card);border-left:3px solid var(--color-verified); }
.saved-confession-icon { color:var(--color-verified);flex-shrink:0;margin-top:2px; }
.saved-confession-text { font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.4; }
.saved-confession-action { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-primary);margin-top:var(--space-2);display:inline-block; }
.saved-confession-action:active { opacity:0.7; }
/* Prayer life — contemplative text list */
.activity-pray-list { display:flex;flex-direction:column;gap:0; }
.activity-pray-item { display:flex;flex-direction:column;align-items:flex-start;padding:var(--space-4) var(--space-3);border-bottom:1px solid var(--color-border-light);transition:background var(--transition-fast);text-align:left;width:100%; }
.activity-pray-item:last-child { border-bottom:none; }
.activity-pray-item:active { background:var(--color-surface-hover); }
.activity-pray-name { font-family:var(--font-prayer);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.activity-pray-desc { font-size:var(--text-sm);color:var(--color-text-tertiary);margin-top:2px;line-height:1.4; }
/* Contextual greeting header (ST-22) */
.saved-header-season { font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-accent);letter-spacing:0.03em; }
.saved-header-daily { font-family:var(--font-prayer);font-size:var(--text-xs);color:var(--color-text-tertiary);line-height:1.5;margin-top:var(--space-1);font-style:italic; }
.saved-header-daily-attr { font-style:normal;opacity:0.7; }

/* ── Saved tab badge on tab bar ── */
.tab-saved-badge { position:absolute;top:8px;right:calc(50% - 16px);width:8px;height:8px;background:var(--color-accent);border-radius:50%;display:none;pointer-events:none; }
.tab-saved-badge.visible { display:block; }

/* ── YC list (used by Find tab YC filter) ── */
.yc-list-header { display:flex;align-items:center;justify-content:center;gap:var(--space-3);margin-bottom:var(--space-4); }
.yc-list-title { font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-semibold);color:var(--color-text-primary); }

/* MORE TAB */
.more-content { max-width: var(--max-width); margin: 0 auto; padding: var(--space-3) var(--space-4) var(--space-12); }
.more-section { padding: var(--space-4) 0; border-bottom: none; }
.more-section--tight { padding: var(--space-2) 0; border-bottom:none; }
.more-section--tight + .more-section--tight { padding-top:var(--space-3); }
.more-section:last-child { border-bottom: none; }
.more-section-title { font-family: var(--font-display); font-size: var(--text-base); font-weight: 700; color: var(--color-heading); margin-bottom: var(--space-3); letter-spacing:0.01em; }
.more-section-collapsible { cursor:pointer;display:flex;align-items:center;justify-content:space-between;list-style:none;color:var(--color-heading); }
.more-section-collapsible::-webkit-details-marker { display:none; }
details.more-section[open] > .more-section-collapsible svg { transform:rotate(180deg); }
details.more-section:not([open]) > .more-section-collapsible { margin-bottom:0; }
.more-section p { font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.6; margin-bottom: var(--space-3); }
.more-section p:last-child { margin-bottom: 0; }
.more-section--zone-inner { padding: var(--space-3) 0 0; }

/* ── Zone containers (MTR-01) ── */
.more-zone { margin-bottom: 0; }
/* STL-07: Today zone — simplified to spacing container */
.more-zone--today { padding: var(--space-4) 0 var(--space-2); margin-bottom: 0; }
.more-zone--today .more-section { border-bottom: none; padding: var(--space-2) 0; }
.more-zone--practice { padding: 0; }
.more-zone--practice .more-section { border-bottom: none; }
.more-zone--practice .more-section--zone-inner { padding: 0; }

/* Zone seam — breathing room with micro-ornament */
.more-zone-seam { display: flex; align-items: center; justify-content: center; padding: var(--space-3) 0; }
.more-zone-seam::after { content: ''; width: 40px; height: 0; border-top: 1px solid var(--color-border-light); opacity: 0.5; }
.more-zone-ornament { display: flex; align-items: center; justify-content: center; padding: var(--space-4) 0; color: rgba(37,30,13,0.20); }
.more-zone-ornament { display: flex; align-items: center; justify-content: center; padding: var(--space-4) 0; color: color-mix(in srgb, var(--color-sacred) 20%, transparent); }
.more-zone-ornament svg { display: block; }
html[data-theme="dark"] .more-zone-ornament { color: rgba(28,23,9,0.15); }
html[data-theme="dark"] .more-zone-ornament { color: color-mix(in srgb, var(--color-sacred) 15%, transparent); }

/* STL-01: Temporal Psalm Header */
.psalm-header { padding: var(--space-5) var(--space-4) var(--space-3); text-align: center; }
.psalm-header__text { font-family: var(--font-prayer); font-size: var(--text-lg); font-style: italic; font-weight: var(--weight-regular); color: var(--color-text-primary); line-height: 1.6; max-width: 320px; margin: 0 auto var(--space-2); opacity: 0.9; }
.psalm-header__cite { font-family: var(--font-body); font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--color-text-tertiary); letter-spacing: 0.3px; }
html[data-theme="dark"] .psalm-header__text { opacity: 0.85; }

/* STL-03: Missal CTA Bridge Card */
.missal-cta { display: flex; align-items: center; gap: var(--space-4); background: var(--color-surface); border: 1px solid var(--color-border-light); border-radius: var(--radius-md); padding: var(--space-4) var(--space-5); cursor: pointer; min-height: 56px; transition: background var(--transition-fast); }
.missal-cta:active { background: var(--color-surface-hover); }
.missal-cta__icon { flex-shrink: 0; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-radius: var(--radius-sm); background: var(--color-accent-pale); color: var(--color-accent-text); }
.missal-cta__body { flex: 1; min-width: 0; }
.missal-cta__title { font-family: var(--font-body); font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--color-text-primary); line-height: 1.3; }
.missal-cta__sub { font-family: var(--font-body); font-size: var(--text-sm); font-weight: var(--weight-regular); color: var(--color-text-secondary); line-height: 1.3; margin-top: 2px; }
.missal-cta__chevron { font-size: 1.25rem; color: var(--color-text-tertiary); flex-shrink: 0; }
html[data-theme="dark"] .missal-cta { border-color: var(--color-border); box-shadow: 0 0 16px color-mix(in srgb, var(--color-accent) 6%, transparent); }

/* INV-04: Threshold Moment — Sacristy Tab */
.threshold-moment { padding: 0; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: opacity var(--transition-fast); }
.threshold-moment:active { opacity: 0.88; }
.threshold-moment__rule-top,
.threshold-moment__rule-bottom { height: 1px; background: var(--color-border-light); margin: 0 var(--space-4); }
.threshold-moment__body { text-align: center; padding: var(--space-8) var(--space-4); }
.threshold-moment__mark { font-size: 4px; color: var(--color-sacred); margin-bottom: var(--space-3); letter-spacing: 2px; }
.threshold-moment__label { font-family: var(--font-display); font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.06em; font-variant: small-caps; margin-bottom: var(--space-2); }
.threshold-moment__title { font-family: var(--font-prayer); font-size: var(--text-lg); font-style: italic; font-weight: var(--weight-regular); color: var(--color-text-primary); line-height: 1.5; max-width: 300px; margin: 0 auto var(--space-3); }
.threshold-moment__cta { font-family: var(--font-body); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--color-text-tertiary); display: inline-flex; align-items: center; gap: 6px; }
.threshold-moment__cta svg { transition: transform 0.15s ease; }
.threshold-moment:hover .threshold-moment__cta svg,
.threshold-moment:active .threshold-moment__cta svg { transform: translateX(3px); }
/* INV-04: Threshold dark mode */
html[data-theme="dark"] .threshold-moment__rule-top,
html[data-theme="dark"] .threshold-moment__rule-bottom { background: var(--color-border); }
html[data-theme="dark"] .threshold-moment__mark { color: var(--color-sacred-text); text-shadow: 0 0 8px color-mix(in srgb, var(--color-sacred) 30%, transparent); }
html[data-theme="dark"] .threshold-moment__title { color: color-mix(in srgb, var(--color-text-primary) 85%, var(--color-sacred) 15%); }
html[data-theme="dark"] .threshold-moment__cta { color: var(--color-text-secondary); }

/* INV-04b: Compact threshold — mobile return-to-missal state */
.threshold-moment--compact { display: flex; align-items: center; padding: var(--space-3) var(--space-4); gap: var(--space-2); }
.threshold-moment__inline-label { font-family: var(--font-display); font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.06em; white-space: nowrap; }
.threshold-moment__inline-sep { color: var(--color-text-tertiary); }
.threshold-moment__inline-title { font-family: var(--font-prayer); font-size: var(--text-sm); font-style: italic; color: var(--color-text-primary); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.threshold-moment__inline-cta { font-family: var(--font-body); font-size: var(--text-xs); color: var(--color-text-tertiary); white-space: nowrap; display: inline-flex; align-items: center; gap: 3px; margin-left: auto; }
.threshold-moment__inline-cta svg { transition: transform 0.15s ease; }
.threshold-moment--compact:hover .threshold-moment__inline-cta svg,
.threshold-moment--compact:active .threshold-moment__inline-cta svg { transform: translateX(2px); }
html[data-theme="dark"] .threshold-moment__inline-title { color: color-mix(in srgb, var(--color-text-primary) 85%, var(--color-sacred) 15%); }
html[data-theme="dark"] .threshold-moment__inline-cta { color: var(--color-text-secondary); }

/* ── SAC1-04: Journey Section Label ── */
.more-section-title--journey { font-family: var(--font-display); font-size: var(--text-lg); font-weight: var(--weight-regular); color: var(--color-text-secondary); letter-spacing: 0.02em; margin-top: var(--space-6); margin-bottom: var(--space-4); padding: 0 var(--space-4); }

/* ── SAC1-06: Prayer Streak ── */
.prayer-streak { padding: var(--space-3) var(--space-4); margin-bottom: var(--space-4); }
.prayer-streak-labels, .prayer-streak-dots { display: grid; grid-template-columns: repeat(7, 1fr); }
.prayer-streak-labels { margin-bottom: 6px; }
.prayer-streak-label { font-family: var(--font-body); font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--color-text-tertiary); text-align: center; }
.prayer-streak-dots { justify-items: center; }
.prayer-streak-dot { width: 28px; height: 28px; border-radius: 50%; background: transparent; border: 1.5px solid var(--color-border); box-sizing: border-box; }
.prayer-streak-dot--filled { background: color-mix(in srgb, var(--color-accent) 12%, transparent); border: 1.5px solid var(--color-accent); }
.prayer-streak-dot--today { border: 2px solid var(--color-accent); }
.prayer-streak-dot--today.prayer-streak-dot--filled { background: color-mix(in srgb, var(--color-accent) 15%, transparent); border-color: var(--color-accent); }
.prayer-streak-dot--future { border-color: var(--color-border-light); opacity: 0.4; }
.prayer-streak-count { font-family: var(--font-body); font-size: var(--text-xs); color: var(--color-text-tertiary); margin-top: var(--space-2); text-align: center; }
html[data-theme="dark"] .prayer-streak-dot--today { border-color: color-mix(in srgb, var(--color-accent-light) 60%, transparent); }
html[data-theme="dark"] .prayer-streak-dot--filled { background: color-mix(in srgb, var(--color-accent) 15%, transparent); }
html[data-theme="dark"] .prayer-streak-dot--future { opacity: 0.3; }

/* INV-06: Living Calendar */
.living-calendar { padding: var(--space-5) 0 var(--space-5); }
.living-calendar__heading { font-family: var(--font-display); font-size: var(--text-sm); font-weight: var(--weight-regular); color: var(--color-text-secondary); text-align: center; margin-bottom: var(--space-4); letter-spacing: 0.02em; padding: 0 var(--space-4); }
.living-calendar__week { display: grid; grid-template-columns: repeat(7, 1fr); gap: 0; justify-items: center; margin-bottom: var(--space-3); }
.living-calendar__day { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: var(--space-2) 0; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.living-calendar__day-label { font-family: var(--font-body); font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--color-text-tertiary); }
.living-calendar__day-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--color-border); transition: transform 0.15s ease; }
.living-calendar__day:active .living-calendar__day-dot { transform: scale(1.2); }
.living-calendar__day-dot--notable { background: var(--day-color, var(--color-accent)); width: 13px; height: 13px; }
.living-calendar__day-dot--major { background: var(--day-color, var(--color-accent)); width: 16px; height: 16px; box-shadow: 0 0 4px color-mix(in srgb, var(--day-color, var(--color-accent)) 40%, transparent); }
.living-calendar__day-dot--today { border: 2px solid var(--color-accent); background: color-mix(in srgb, var(--color-accent) 15%, transparent); width: 16px; height: 16px; }
.living-calendar__day-dot--active { border: 2px solid var(--color-accent); animation: living-calendar-pulse 2s ease-in-out infinite; }
@keyframes living-calendar-pulse {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--day-color, var(--color-accent)) 40%, transparent); }
  50% { box-shadow: 0 0 8px 3px color-mix(in srgb, var(--day-color, var(--color-accent)) 25%, transparent); }
}
/* Inline name list — whisper style */
.living-calendar__names { text-align: center; padding: 0 var(--space-4); margin-bottom: var(--space-2); }
.living-calendar__name-item { font-family: var(--font-prayer); font-size: 12px; font-style: italic; color: var(--color-text-tertiary); line-height: 1.5; cursor: pointer; transition: color 0.15s ease, font-weight 0.15s ease; -webkit-tap-highlight-color: transparent; }
.living-calendar__name-item--active { font-style: normal; font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-primary); }
.living-calendar__detail { text-align: center; padding: 0 var(--space-4); min-height: 0; animation: fadeIn 0.15s ease-out; }
.living-calendar__detail-note { font-family: var(--font-body); font-size: var(--text-xs); font-style: italic; color: var(--color-text-secondary); margin-top: var(--space-1); }
/* INV-06: Living Calendar dark mode */
html[data-theme="dark"] .living-calendar__day-dot { background: var(--color-border); }
html[data-theme="dark"] .living-calendar__day-dot--notable { box-shadow: 0 0 4px color-mix(in srgb, var(--day-color, var(--color-accent)) 30%, transparent); }
html[data-theme="dark"] .living-calendar__day-dot--major { box-shadow: 0 0 6px color-mix(in srgb, var(--day-color, var(--color-accent)) 50%, transparent); }
html[data-theme="dark"] .living-calendar__day-dot--today { border-color: color-mix(in srgb, var(--color-accent-light) 60%, transparent); }
html[data-theme="dark"] .living-calendar__name-item--active { color: var(--color-text-primary); }

/* Zone 3: Go Deeper — collapsible reference */
.more-zone--deeper { background: transparent; border-radius: var(--radius-md); overflow: hidden; }
.more-zone-deeper-header { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) 0; min-height: 44px; }
.more-zone-deeper-header .more-section-title { margin-bottom: 0; flex: 1; }
.more-zone-deeper-count { font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--color-text-tertiary); background: var(--color-surface-hover); padding: 2px var(--space-2); border-radius: var(--radius-full); }
.more-zone-deeper-body { padding: var(--space-2) 0 var(--space-4); }

/* Zone dark mode */
html[data-theme="dark"] .more-zone-seam::after { opacity: 0.3; }
html[data-theme="dark"] .more-zone-deeper-count { background: var(--color-surface); }

/* Library teaser between zones */
#libraryTeaser { padding: 0 0 var(--space-2); }
#libraryTeaser .library-teaser { margin-top: 0; }

/* STL-05: Zone 1 internal spacing — saintSection/seasonalMoment/readingsSection removed */

/* ── Section title typography (MTR-02) ── */
.more-section-title--today { color: var(--color-sacred-text); font-size: var(--text-sm); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: 0.06em; }
.more-section-title--practice { font-family: var(--font-body); font-weight: var(--weight-semibold); color: var(--color-text-primary); font-size: var(--text-base); letter-spacing: 0; }
.more-section-title--pray { font-family: var(--font-body); font-weight: var(--weight-semibold); color: var(--color-text-primary); font-size: var(--text-base); letter-spacing: 0; }
/* Whisper section divider with emanating lines */
.section-whisper { display:flex;align-items:center;gap:var(--space-3);margin:var(--space-3) 0 var(--space-2);padding:0 var(--space-2); }
.section-whisper::before,.section-whisper::after { content:'';flex:1;height:1px;background:linear-gradient(to var(--_dir, right),var(--color-border),transparent); }
.section-whisper::before { --_dir:left; }
.section-whisper::after { --_dir:right; }
.section-whisper-text { font-family:var(--font-prayer);font-size:13px;font-style:italic;color:var(--color-text-tertiary);letter-spacing:0.5px;flex-shrink:0; }
.more-section-title--deeper { font-family: var(--font-body); color: var(--color-text-secondary); font-size: var(--text-sm); font-weight: var(--weight-semibold); letter-spacing: 0.01em; }


/* ═══════════════════════════════════════════════════════════
   MSB: Missal Reader Component Styles
   Used by: src/missal.js (reader overlay)
   ═══════════════════════════════════════════════════════════ */

/* ── Shared label (all card types) ── */
.msb-label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--color-accent-text);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: var(--space-2);
}

/* ── DSN-40: Hero — sits on page, no card ── */
.msb-hero {
  padding: var(--space-5) 0 var(--space-4) 0;
  border-bottom: 1px solid var(--color-border-light);
  cursor: default;
  -webkit-tap-highlight-color: transparent;
}

.msb-hero__title {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  color: var(--color-heading);
  line-height: 1.3;
  margin: 0 0 var(--space-3) 0;
  letter-spacing: -0.01em;
}

.msb-hero__body {
  font-family: var(--font-prayer);
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  line-height: 1.7;
  max-height: 4.8em;
  overflow: hidden;
  position: relative;
}
.msb-hero__body p {
  margin: 0 0 var(--space-3) 0;
}
.msb-hero__body p:last-child {
  margin-bottom: 0;
}

.msb-hero__body::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 1.5em;
  background: linear-gradient(transparent, var(--color-bg));
  pointer-events: none;
}

.msb-hero__attribution {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  margin-top: var(--space-2);
}

html[data-theme="dark"] .msb-hero {
  border-bottom-color: var(--color-border);
}
html[data-theme="dark"] .msb-hero__body::after {
  background: linear-gradient(transparent, var(--color-bg));
}

/* ── MSB-03 + DSN-VW + GRD-05: Content Card ── */
.msb-card {
  background: var(--color-surface);
  border-radius: var(--radius-md);
  padding: var(--space-4);
  box-shadow: var(--shadow-card);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: box-shadow var(--transition-fast);
  display: flex;
  flex-direction: column;
}

.msb-card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-1);
}

.msb-card__label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--color-accent-text);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.msb-card__title {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--color-heading);
  line-height: 1.3;
  margin: 0 0 var(--space-2) 0;
}

.msb-card__body {
  font-family: var(--font-prayer);
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  line-height: 1.7;
  max-height: 4.8em;
  overflow: hidden;
  position: relative;
  flex: 1 1 auto;
}

.msb-card__body::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 1.5em;
  background: linear-gradient(transparent, var(--color-surface));
  pointer-events: none;
}

.msb-card__attribution {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  margin-top: auto;
  padding-top: var(--space-2);
}

html[data-theme="dark"] .msb-card {
  box-shadow: var(--shadow-card), 0 0 16px color-mix(in srgb, var(--color-accent) 4%, transparent);
}
html[data-theme="dark"] .msb-card__body::after {
  background: linear-gradient(transparent, var(--color-surface));
}

/* ── DSN-VW: Formation modifier (visual silence) ── */
/* MER-07: Formation card separation */
.msb-card--formation {
  box-shadow: none;
  border-top: 1px solid var(--color-border-light);
  padding-top: var(--space-5);
  margin-top: var(--space-2);
}
.msb-card--formation .msb-card__title {
  font-size: var(--text-base);
  font-weight: var(--weight-medium);
}
.msb-card--formation .msb-card__body {
  font-family: var(--font-prayer);
  color: var(--color-text-tertiary);
  font-style: italic;
  max-height: 6.8em; /* 4 lines at line-height 1.7 */
  overflow: hidden;
  position: relative;
  transition: max-height 0.4s ease;
}
.msb-card--formation .msb-card__body::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 2em;
  background: linear-gradient(transparent, var(--color-bg));
  pointer-events: none;
  transition: opacity 0.3s ease;
}
/* MER-06: Expanded state */
.msb-card--formation.msb-card--expanded .msb-card__body {
  max-height: 3000px; /* Generous ceiling for transition */
  font-style: normal;
  color: var(--color-text-secondary);
}
.msb-card--formation.msb-card--expanded .msb-card__body::after {
  opacity: 0;
}
html[data-theme="dark"] .msb-card--formation .msb-card__body::after {
  background: linear-gradient(transparent, var(--color-bg));
}
.msb-card--formation .msb-card__label {
  color: color-mix(in srgb, var(--color-accent-text) 60%, var(--color-text-tertiary));
}
.msb-card--formation:active {
  box-shadow: none;
  background: var(--color-surface-hover);
}
html[data-theme="dark"] .msb-card--formation {
  box-shadow: none;
  border-top-color: var(--color-border);
}
/* DSN-49b: Formation text paragraph spacing */
.msb-card--formation .msb-card__body p {
  margin: 0 0 var(--space-3) 0;
}
.msb-card--formation .msb-card__body p:last-child {
  margin-bottom: 0;
}

/* ── DSN-41: Pull Quote — full-width wash ── */
.msb-pullquote {
  margin-left: calc(-1 * var(--space-4));
  margin-right: calc(-1 * var(--space-4));
  padding: var(--space-6) var(--space-5);
  background: linear-gradient(135deg,
    color-mix(in srgb, var(--color-accent) 6%, var(--color-bg)) 0%,
    color-mix(in srgb, var(--color-accent) 3%, var(--color-bg)) 100%
  );
  text-align: center;
  position: relative;
}
.msb-pullquote::before {
  content: '\201C';
  position: absolute;
  top: var(--space-2);
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-display);
  font-size: 4rem;
  line-height: 1;
  color: var(--color-accent);
  opacity: 0.07;
  pointer-events: none;
  z-index: 0;
}
.msb-pullquote__text {
  font-family: var(--font-prayer);
  font-size: var(--text-base);
  font-style: italic;
  color: var(--color-heading);
  line-height: 1.6;
  margin: 0 auto;
  max-width: 340px;
  position: relative;
  z-index: 1;
}
.msb-pullquote__source {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  margin-top: var(--space-2);
  letter-spacing: 0.03em;
  text-align: center;
  position: relative;
  z-index: 1;
}

html[data-theme="dark"] .msb-pullquote {
  background: linear-gradient(135deg,
    color-mix(in srgb, var(--color-accent) 10%, var(--color-bg)) 0%,
    color-mix(in srgb, var(--color-accent) 5%, var(--color-bg)) 100%
  );
}
html[data-theme="dark"] .msb-pullquote::before {
  opacity: 0.06;
}

/* ── MSB-04 + DSN-VW: Readings Card ── */
.msb-readings {
  padding: var(--space-4) 0 var(--space-3);
  border-top: 1px solid var(--color-border-light);
}
html[data-theme="dark"] .msb-readings {
  border-top-color: var(--color-border);
}

/* ── MRD-02: Tappable Scripture citations ── */
.missal-ref {
  font-family: var(--font-prayer);
  font-style: italic;
  font-size: var(--text-base);
  color: var(--color-sacred-text);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: color var(--transition-fast);
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  min-height: 44px;
  padding: var(--space-1) 0;
}
.missal-ref::after {
  content: '';
  display: inline-block;
  width: 14px;
  height: 14px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z'/%3E%3Cpath d='M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z'/%3E%3Cpath d='M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z'/%3E%3C/svg%3E") center/contain no-repeat;
  opacity: 0.5;
  flex-shrink: 0;
}
.missal-ref:active {
  color: var(--color-sacred);
  opacity: 0.85;
}

html[data-theme="dark"] .missal-ref {
  color: var(--color-sacred-light);
}
html[data-theme="dark"] .missal-ref:active {
  color: var(--color-sacred);
}

/* ── MRD-02: Gospel label ── */
.reading-heading--gospel {
  color: var(--color-sacred-text);
  font-weight: var(--weight-semibold);
}
.reading-heading--gospel::before {
  content: '\2726';
  color: var(--color-sacred);
  margin-right: 0.35em;
}
html[data-theme="dark"] .reading-heading--gospel {
  color: var(--color-sacred-light);
}

/* ── DSN-44 + VF-09: All readings start collapsed, expand with warm tint ── */
.msb-readings .reading-text {
  display: block;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s ease-out, opacity 0.25s ease;
  opacity: 0;
}
.msb-readings .expanded .reading-text {
  max-height: 5000px;
  opacity: 1;
  padding: var(--space-3) var(--space-3) var(--space-4);
  background: color-mix(in srgb, var(--color-sacred) 2%, transparent);
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  margin: var(--space-2) calc(-1 * var(--space-2)) 0;
}
html[data-theme="dark"] .msb-readings .expanded .reading-text {
  background: color-mix(in srgb, var(--color-sacred) 3%, transparent);
}

/* ── VF-02: Readings ref subtitle ── */
.msb-readings__ref {
  font-family: var(--font-body);
  font-size: 11px;
  color: var(--color-accent-text);
  margin-top: 2px;
  margin-bottom: var(--space-2);
}

/* ── VF-11: Verse number consistency (match gospel card treatment) ── */
.msb-readings .verse-num {
  color: var(--color-accent);
  font-family: var(--font-body);
  font-size: 0.75em;
  font-weight: var(--weight-semibold);
  margin-right: 2px;
  vertical-align: super;
  line-height: 0;
}
html[data-theme="dark"] .msb-readings .verse-num {
  color: var(--color-accent-light);
}

/* ── VF-12: Expanded entry bottom breathing room ── */
.msb-readings .expanded {
  margin-bottom: var(--space-1);
}

/* ── MRD-05: Reading entry visual separation ── */
.msb-readings .reading-entry + .reading-entry {
  border-top: 1px solid var(--color-border-light);
  margin-top: 0;
  padding-top: 0;
}
.msb-readings .reading-entry--gospel {
  border-top: 1px solid color-mix(in srgb, var(--color-sacred) 25%, var(--color-border-light));
  margin-top: 0;
  padding-top: 0;
}
.msb-readings .reading-entry:first-child {
  border-top: none;
  margin-top: 0;
  padding-top: 0;
}
/* DSN-48b: Compact reading entries in Missal card */
.msb-readings .reading-entry {
  padding: 0;
  margin-bottom: 0;
}
.msb-readings .reading-heading {
  margin-bottom: 0;
}
.msb-readings .reading-ref {
  margin-top: 0;
}
/* DSN-49a: Horizontal reading entry rows in Missal */
.msb-readings .reading-entry-header {
  min-height: 44px;
  align-items: center;
}
.msb-readings .reading-entry-header > div {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  flex: 1;
  min-width: 0;
}
.msb-readings .reading-heading {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  text-transform: none;
  letter-spacing: 0;
  flex-shrink: 0;
  margin-bottom: 0;
}
.msb-readings .missal-ref {
  font-size: var(--text-sm);
  margin-left: auto;
  text-align: right;
  min-height: 0;
  padding: 0;
}
.msb-readings .missal-ref::after {
  display: none;
}
.msb-readings .reading-expand-icon {
  margin-left: var(--space-2);
}
html[data-theme="dark"] .msb-readings .reading-entry + .reading-entry {
  border-top-color: var(--color-border);
}
html[data-theme="dark"] .msb-readings .reading-entry--gospel {
  border-top-color: color-mix(in srgb, var(--color-sacred) 20%, var(--color-border));
}

/* ── MRD-08: USCCB link ── */
.missal-usccb-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  text-decoration: none;
  min-height: 44px;
  padding: var(--space-2) var(--space-3);
}
.missal-usccb-link:active {
  color: var(--color-text-secondary);
}

/* ── MSB-06 + GRD-07: Section Divider ── */
.msb-divider {
  grid-column: 1 / -1;
  text-align: center;
  color: var(--color-accent);
  opacity: 0.35;
  padding: var(--space-1) 0;
  pointer-events: none;
}
html[data-theme="dark"] .msb-divider {
  opacity: 0.25;
}

/* ── GRD-10 + DSN-40: Tap States (hero de-carded, card only) ── */
.msb-card:active {
  box-shadow: var(--shadow-card), 0 0 0 1px color-mix(in srgb, var(--color-accent) 20%, transparent);
}
html[data-theme="dark"] .msb-card:active {
  box-shadow: var(--shadow-card),
    0 0 16px color-mix(in srgb, var(--color-accent) 4%, transparent),
    0 0 0 1px color-mix(in srgb, var(--color-accent) 15%, transparent);
}

/* MLF-06: Remove false tap affordance on reader-context cards */
.missal-bulletin-flow .msb-card {
  cursor: default;
  -webkit-tap-highlight-color: transparent;
}
.missal-bulletin-flow .msb-card:active {
  box-shadow: var(--shadow-card);
}
html[data-theme="dark"] .missal-bulletin-flow .msb-card:active {
  box-shadow: var(--shadow-card),
    0 0 16px color-mix(in srgb, var(--color-accent) 4%, transparent);
}

/* ── MXT-06: Section Transition Weight System ── */
/* MLF-02: Tightened divider margins for reading flow */
.missal-divider--heavy {
  height: 1px;
  background: var(--color-accent);
  margin: 24px 0 20px 0;
  border: none;
  opacity: 0.4; /* MER-12: Divider softening */
}
.missal-divider--medium {
  height: 1px;
  background: var(--color-border);
  margin: 20px 0 16px 0;
  border: none;
}
.missal-divider--light {
  text-align: center;
  color: var(--color-text-tertiary);
  font-size: 8px;
  line-height: 1;
  margin: 16px 0;
  display: flex;
  align-items: center;
  gap: var(--space-3);
}
.missal-divider--light::before,
.missal-divider--light::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--color-border-light);
}
.missal-divider--closing {
  height: 64px;
  border: none;
  background: none;
}

html[data-theme="dark"] .missal-divider--heavy {
  background: color-mix(in srgb, var(--color-accent) 60%, transparent);
  opacity: 0.3; /* MER-12: Divider softening dark */
}
html[data-theme="dark"] .missal-divider--medium {
  background: #444444;
}
html[data-theme="dark"] .missal-divider--light::before,
html[data-theme="dark"] .missal-divider--light::after {
  background: var(--color-border);
}
html[data-theme="dark"] .missal-divider--light {
  color: var(--color-text-tertiary);
}

/* ── MXT-07: Sacred Mark Dark Mode Glow ── */
html[data-theme="dark"] .missal-divider--light {
  text-shadow: 0 0 3px color-mix(in srgb, var(--color-sacred) 15%, transparent);
}

/* MLF-02: Tighter light dividers within readings zone */
.missal-zone--scripture .missal-divider--light {
  margin: 16px 0;
}

/* DSN-40: msb-hero--lead removed (no card = no border accent) */

/* ── DSN-41: Three-tier pull-quote sizing (inherits wash from parent) ── */
.msb-pullquote--epigraph {
  padding: var(--space-8) var(--space-6);
}
.msb-pullquote--epigraph .msb-pullquote__text {
  font-size: var(--text-lg);
  line-height: 1.7;
}
.msb-pullquote--epigraph::before {
  font-size: 3rem;
  opacity: 0.12;
}

.msb-pullquote--proclamation .msb-pullquote__text {
  font-size: var(--text-base);
  line-height: 1.7;
}

.msb-pullquote--passage .msb-pullquote__text {
  font-size: var(--text-sm);
  line-height: 1.7;
}
.msb-pullquote--passage::before {
  font-size: 2.5rem;
  opacity: 0.10;
}

/* ── VF-01: Gospel Wayfinder Card ── */
.missal-gospel-wayfinder {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  background: color-mix(in srgb, var(--color-accent) 4%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-accent) 10%, transparent);
  border-radius: var(--radius-md);
  margin-top: var(--space-4);
}
.missal-gospel-wayfinder__icon {
  color: var(--color-accent);
  flex-shrink: 0;
}
.missal-gospel-wayfinder__label {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: var(--weight-semibold);
  color: var(--color-accent);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.missal-gospel-wayfinder__ref {
  font-family: var(--font-body);
  font-size: 13px;
  color: var(--color-text-secondary);
  margin-top: 1px;
}
html[data-theme="dark"] .missal-gospel-wayfinder {
  background: color-mix(in srgb, var(--color-accent) 6%, transparent);
  border-color: color-mix(in srgb, var(--color-accent) 12%, transparent);
}

/* ── MXT-01: Gospel Thread Echo (patristic attribution) ── */
.msb-pullquote__gospel-ref {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: var(--weight-semibold);
  color: var(--color-accent);
  margin-top: var(--space-2);
  position: relative;
  z-index: 1;
}
.msb-pullquote__gospel-ref .missal-ref {
  font-size: inherit;
  min-height: 0;
  padding: 0;
}
html[data-theme="dark"] .msb-pullquote__gospel-ref {
  color: var(--color-accent-light);
}

/* ── Reading entries compact in Today zone (MTR-04, MZP-03) ── */
.more-zone--today .reading-entry { padding: 4px 0; margin-bottom: 0; }
.more-zone--today .reading-heading { display: none; }
.more-zone--today .reading-entry.expanded .reading-heading { display: block; font-size: 11px; letter-spacing: 0.08em; }
.more-zone--today .reading-ref { font-size: var(--text-sm); }
/* MZP-04: Warm hover/expand in Today zone */
.more-zone--today .reading-entry:hover {
  background: rgba(8,7,3,0.04);
  background: color-mix(in srgb, var(--color-sacred) 4%, transparent);
}
.more-zone--today .reading-entry.expanded {
  background: rgba(6,5,2,0.03);
  background: color-mix(in srgb, var(--color-sacred) 3%, transparent);
}
html[data-theme="dark"] .more-zone--today .reading-entry:hover {
  background: rgba(6,5,2,0.03);
  background: color-mix(in srgb, var(--color-sacred) 3%, transparent);
}
html[data-theme="dark"] .more-zone--today .reading-entry.expanded {
  background: rgba(4,3,2,0.02);
  background: color-mix(in srgb, var(--color-sacred) 2%, transparent);
}

/* ── MXT-04: Colophon ── */
.missal-colophon {
  font-family: var(--font-body);
  font-size: 13px;
  color: var(--color-text-tertiary);
  line-height: 1.5;
  margin-top: var(--space-12); /* MER-11: 48px, down from 64px */
  padding-bottom: 64px; /* MER-11: Reduced from 80px for proportion */
  max-width: 480px;
  text-align: center;
}
.missal-colophon p {
  margin: 0;
}
.missal-colophon p + p {
  margin-top: var(--space-1);
}
html[data-theme="dark"] .missal-colophon {
  color: color-mix(in srgb, var(--color-text-tertiary) 80%, transparent);
}
html[data-theme="dark"] .missal-ccc-num {
  opacity: 0.20;
}

/* ── MVO-04: Closing Benediction ── */
.missal-benediction {
  text-align: center;
  padding: var(--space-6) var(--space-6) 0;
}
.missal-benediction__ornament {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
.missal-benediction__line {
  width: 40px;
  height: 1px;
  background: linear-gradient(to right, transparent, var(--color-border));
}
.missal-benediction__line:last-of-type {
  background: linear-gradient(to left, transparent, var(--color-border));
}
.missal-benediction__cross {
  color: var(--color-border);
}
.missal-benediction__text {
  font-family: var(--font-prayer);
  font-style: italic;
  font-size: 13px;
  color: var(--color-text-tertiary);
  line-height: 1.6;
  margin: 0;
}
html[data-theme="dark"] .missal-benediction__line {
  background: linear-gradient(to right, transparent, var(--color-border-light));
}
html[data-theme="dark"] .missal-benediction__line:last-of-type {
  background: linear-gradient(to left, transparent, var(--color-border-light));
}
html[data-theme="dark"] .missal-benediction__cross {
  color: var(--color-border-light);
}
html[data-theme="dark"] .missal-benediction__text {
  color: color-mix(in srgb, var(--color-text-tertiary) 80%, transparent);
}

/* ── MXT-08: Gradual Reveal Animation ── */
.msb-pullquote__text p {
  animation: missalReveal 0.4s ease both;
}
.msb-pullquote__text p:nth-child(1) { animation-delay: 0.1s; }
.msb-pullquote__text p:nth-child(2) { animation-delay: 0.35s; }
.msb-pullquote__text p:nth-child(3) { animation-delay: 0.6s; }

@keyframes missalReveal {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

@supports (animation-timeline: view()) {
  .missal-bulletin-flow > .msb-card,
  .missal-bulletin-flow > .msb-readings,
  .missal-bulletin-flow > .missal-colophon {
    opacity: 0.92;
    animation: missalSectionEmerge linear forwards;
    animation-timeline: view();
    animation-range: entry 0% entry 20%;
  }
  @keyframes missalSectionEmerge {
    to { opacity: 1; }
  }
}

@media (prefers-reduced-motion: reduce) {
  .msb-pullquote__text p {
    animation: none;
    opacity: 1;
    transform: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  @supports (animation-timeline: view()) {
    .missal-bulletin-flow > .msb-card,
    .missal-bulletin-flow > .msb-readings,
    .missal-bulletin-flow > .missal-colophon {
      animation: none;
      opacity: 1;
    }
  }
}

/* ── MRD-01: Readings card sub-components ── */
.msb-readings__subtitle {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-top: var(--space-1);
}
.msb-readings__footer {
  margin-top: var(--space-4);
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border-light);
  text-align: center;
}
html[data-theme="dark"] .msb-readings__footer {
  border-top-color: var(--color-border);
}
/* ── MRD-03: Entry header cursor + expand icon ── */
.msb-readings .reading-entry-header { cursor: pointer; }
.msb-readings .reading-expand-icon {
  transition: transform 0.3s ease;
  flex-shrink: 0;
}
.msb-readings .reading-entry.expanded .reading-expand-icon {
  transform: rotate(180deg);
}

/* ── MXV-04 + MQR-06: CCC section treatment ── */
.missal-ccc {
  margin-top: var(--space-4);
  border-left: 2px solid var(--color-sacred);
  padding-left: var(--space-4);
}
html[data-theme="dark"] .missal-ccc {
  border-left-color: color-mix(in srgb, var(--color-sacred) 60%, transparent);
}
.missal-ccc-label {
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: var(--weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-sacred-text);
  margin-bottom: var(--space-3);
}
/* BRT-01: Bridge text — contextual subline for theme-matched content */
.bridge-text {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: var(--weight-regular);
  font-style: italic;
  line-height: 1.4;
  color: var(--color-text-tertiary);
  margin-top: var(--space-1);
  margin-bottom: var(--space-2);
}
/* bridge-text in pull-quote context: centered */
.msb-pullquote .bridge-text {
  text-align: center;
}
.missal-ccc-num {
  font-family: var(--font-display);
  font-size: 28px;
  font-weight: 700;
  color: var(--color-accent);
  opacity: 0.25;
  line-height: 1;
  margin-bottom: var(--space-2);
  letter-spacing: -0.02em;
}
.missal-ccc-text {
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.5;
  color: var(--color-text-primary);
  margin-top: var(--space-2);
}
.missal-ccc-xref {
  font-family: var(--font-body);
  font-size: 13px;
  color: var(--color-text-tertiary);
  margin-top: var(--space-3);
}
/* MLF-05: 44pt touch target on CCC xref links */
.missal-ccc-xref-link {
  color: var(--color-accent);
  font-weight: var(--weight-semibold);
  text-decoration: none;
  cursor: pointer;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-2);
}

/* ── MXV-05: Gospel first-letter accent ── */
.missal-first-letter {
  font-family: var(--font-display);
  font-size: 36px;
  font-weight: 700;
  float: left;
  line-height: 0.85;
  margin-right: 4px;
  margin-top: 4px;
  color: var(--color-accent);
}

/* ── MXV-07 + MQR-08: Progress thread (sits between header and scroll body) ── */
.missal-progress {
  width: 100%;
  height: 2px;
  flex-shrink: 0;
  background: transparent;
  pointer-events: none;
}
.missal-progress-bar {
  height: 100%;
  width: 0%;
  background: var(--color-accent);
  transition: width 100ms linear;
}

/* ── MXV-03: Psalm refinement for Missal reader ── */
.msb-readings .reading-entry .psalm-refrain {
  font-family: 'Lora', var(--font-prayer);
  font-size: 15px;
  font-weight: 600;
  font-style: italic;
  color: var(--color-accent);
  text-align: center;
  padding: var(--space-2) 0;
  border-left: none;
  background: transparent;
}
.msb-readings .reading-entry .psalm-verse {
  font-family: 'Lora', var(--font-prayer);
  color: var(--color-text-secondary);
}
.msb-readings .reading-entry .psalm-r-marker,
.msb-readings .reading-entry .psalm-r-inline {
  color: var(--color-accent);
  text-align: center;
}

/* ── MXV-01: Typographic Voice System ── */

/* Rhetoric voice — Patristic quotes (Church Fathers at the ambo) */
.voice-rhetoric {
  font-family: 'Lora', var(--font-prayer);
  font-style: italic;
  font-size: 18px;
  line-height: 1.7;
  text-align: center;
}
.voice-rhetoric--large {
  font-size: 20px;
  line-height: 1.75;
}

/* Prayer voice — Scripture readings (the Word proclaimed) */
.voice-prayer {
  font-family: 'Lora', var(--font-prayer);
  font-size: 18px;
  line-height: 1.7;
  text-align: left;
}

/* Teaching voice — CCC paragraphs (the Magisterium instructing) */
.voice-teaching {
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.5;
  text-align: left;
}

/* Narrative voice — Saint biography (a story being told) */
.voice-narrative {
  font-family: 'Lora', var(--font-prayer);
  font-size: 18px;
  line-height: 1.6;
  text-align: left;
}

/* Flat fallback — toggle via single class on parent */
.voice-flat .voice-rhetoric,
.voice-flat .voice-prayer,
.voice-flat .voice-teaching,
.voice-flat .voice-narrative {
  font-family: 'Lora', var(--font-prayer);
  font-size: 18px;
  line-height: 1.6;
  text-align: left;
  font-style: normal;
}

/* ── MXV-06: Dark mode Missal refinements ── */
html[data-theme="dark"] .missal-divider--heavy { opacity: 0.6; }
html[data-theme="dark"] .missal-divider--light { opacity: 0.4; }

/* Liturgical left edge glow in dark mode */
html[data-theme="dark"] .msb-hero--lead {
  border-left-color: var(--color-accent);
  border-left-width: 2px;
  box-shadow: -4px 0 12px -2px color-mix(in srgb, var(--color-accent) 25%, transparent);
}

/* Gospel left border glow */
html[data-theme="dark"] .reading-entry--gospel {
  box-shadow: -4px 0 12px -2px color-mix(in srgb, var(--color-accent) 20%, transparent);
}

/* Drop quote mark glow */
html[data-theme="dark"] .msb-pullquote__mark {
  color: var(--color-sacred);
  opacity: 0.1;
}

/* Progress thread glow */
html[data-theme="dark"] .missal-progress-bar {
  box-shadow: 0 1px 6px color-mix(in srgb, var(--color-accent) 30%, transparent);
}

/* Reading text in dark mode */
html[data-theme="dark"] .voice-prayer,
html[data-theme="dark"] .voice-rhetoric,
html[data-theme="dark"] .voice-narrative { color: #DEDEDE; }

/* Psalm refrain in dark mode */
html[data-theme="dark"] .msb-readings .reading-entry .psalm-refrain { color: var(--color-accent); }

/* ═══════════════════════════════════════════════════════════
   END MISSAL READER COMPONENTS
   ═══════════════════════════════════════════════════════════ */

/* ── Secondary tools disclosure (MTR-03) ── */
.prayer-tools-more { margin-top: var(--space-3); }
.prayer-tools-more-toggle { display: flex; align-items: center; justify-content: center; gap: var(--space-1); padding: var(--space-2); cursor: pointer; list-style: none; font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--color-text-tertiary); -webkit-tap-highlight-color: transparent; min-height: 36px; }
.prayer-tools-more-toggle::-webkit-details-marker { display: none; }
.prayer-tools-more-chevron { transition: transform 0.2s var(--ease-out); color: var(--color-text-tertiary); }
.prayer-tools-more[open] .prayer-tools-more-chevron { transform: rotate(180deg); }
.prayer-tools-more-toggle:active { opacity: 0.7; }
/* PMV: retire after v2 stable */
/* .prayer-tool-card--secondary, .prayer-tools-secondary, .prayer-tools-more */

/* PMV-02: Guided grid min-height */
.prayer-tool-card--primary { min-height:88px; }

/* PMV-03: Prayer Book gateway card */
.prayerbook-gateway { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-top:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border-light);border-left:3px solid var(--color-sacred);border-radius:var(--radius-md);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:56px;transition:box-shadow 0.15s, transform 0.15s; }
.prayerbook-gateway:hover { box-shadow:var(--shadow-card-hover);transform:translateY(-1px); }
.prayerbook-gateway:active { transform:scale(0.98); }
.prayerbook-gateway-icon { width:40px;height:40px;border-radius:50%;background:var(--color-sacred-pale);color:var(--color-sacred);display:flex;align-items:center;justify-content:center;flex-shrink:0; }
.prayerbook-gateway-icon svg { width:22px;height:22px; }
.prayerbook-gateway-body { flex:1;min-width:0; }
.prayerbook-gateway-title { font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.prayerbook-gateway-subtitle { font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:2px;line-height:1.3; }
.prayerbook-gateway-chevron { width:16px;height:16px;color:var(--color-text-tertiary);flex-shrink:0; }
.prayerbook-gateway-favs { color:var(--color-sacred-text);font-weight:var(--weight-medium);margin-left:var(--space-2); }
html[data-theme="dark"] .prayerbook-gateway { border-left-color:var(--color-sacred);background:var(--color-surface); }
html[data-theme="dark"] .prayerbook-gateway-favs { color:var(--color-sacred); }

/* PLD-01: Pray Now contextual card */
.pray-now-card { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-surface-sacred);border-radius:var(--radius-lg);border-left:3px solid var(--color-sacred);box-shadow:var(--shadow-card);cursor:pointer;-webkit-tap-highlight-color:transparent;margin-bottom:var(--space-4);min-height:64px; }
.pray-now-card:active { transform:scale(0.98); }
.pray-now-icon { flex-shrink:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--color-sacred-pale);border-radius:50%;color:var(--color-sacred); }
.pray-now-body { flex:1;min-width:0; }
.pray-now-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-sacred-text);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:2px; }
.pray-now-title { font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.pray-now-subtitle { font-size:var(--text-xs);color:var(--color-text-secondary);margin-top:2px; }
.pray-now-prayer-name { font-family: var(--font-prayer); }
html[data-theme="dark"] .pray-now-card { background:var(--color-surface-sacred);border-left-color:var(--color-sacred); }

/* PLD-05: Faith Guides gateway */
.faith-guides-gateway { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border-radius:var(--radius-lg);border-left:3px solid var(--color-accent);box-shadow:var(--shadow-card);cursor:pointer;-webkit-tap-highlight-color:transparent;margin:var(--space-4) 0; }
.faith-guides-gateway:active { transform:scale(0.98); }
.faith-guides-gateway-icon { flex-shrink:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--color-accent-pale);border-radius:50%;color:var(--color-accent); }
.faith-guides-gateway-icon svg { width:22px;height:22px; }
.faith-guides-gateway-body { flex:1;min-width:0; }
.faith-guides-gateway-title { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary); }
.faith-guides-gateway-subtitle { font-size:var(--text-xs);color:var(--color-text-secondary);margin-top:2px; }
html[data-theme="dark"] .faith-guides-gateway { background:var(--color-surface);border-left-color:var(--color-accent); }

/* PLD-05/06: Faith Guide cards in reader */
.faith-guides-welcome { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6;padding:var(--space-4);margin-bottom:var(--space-2); }
.faith-guides-list { padding:0 var(--space-2); }
.faith-guide-card { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border-radius:var(--radius-md);border-left:3px solid var(--color-border-light);margin-bottom:var(--space-2);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:56px; }
.faith-guide-card:active { background:var(--color-surface-hover); }
.faith-guide-card-icon { flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary); }
.faith-guide-card-icon svg { width:20px;height:20px; }
.faith-guide-card-body { flex:1;min-width:0; }
.faith-guide-card-title { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary); }
.faith-guide-card-subtitle { font-size:var(--text-xs);color:var(--color-text-secondary);margin-top:2px; }
/* PLD-06: Emergency card */
.faith-guide-card--emergency { border:2px solid var(--color-accent);border-left-width:2px;background:#fdfcf9; }
.faith-guide-card--emergency { border:2px solid var(--color-accent);border-left-width:2px;background:color-mix(in srgb, var(--color-accent) 3%, var(--color-surface)); }
.faith-guide-card--emergency .faith-guide-card-icon { color:var(--color-accent); }
html[data-theme="dark"] .faith-guide-card { background:var(--color-surface);border-left-color:var(--color-border); }
html[data-theme="dark"] .faith-guide-card--emergency { border-color:var(--color-accent);background:#fbfaf5; }
html[data-theme="dark"] .faith-guide-card--emergency { border-color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 5%, var(--color-surface)); }
.faith-guide-group-header { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;padding:var(--space-4) var(--space-2) var(--space-2);margin-top:var(--space-2); }
/* FGR-02: Category header spacing */
.faith-guide-card + .faith-guide-group-header { margin-top:var(--space-5); }
/* FGR-03: Seasonal card highlight */
.faith-guide-card--seasonal { border-left:3px solid var(--color-accent);background:color-mix(in srgb, var(--color-accent) 4%, var(--color-surface)); }
html[data-theme="dark"] .faith-guide-card--seasonal { background:color-mix(in srgb, var(--color-accent) 6%, var(--color-surface)); }

/* PMV-04: Practice strip */
.practice-strip-label { font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-2);margin-top:var(--space-4); }
.practice-strip { display:flex;gap:var(--space-2);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:var(--space-1); }
.practice-strip::-webkit-scrollbar { display:none; }
.practice-card { flex-shrink:0;min-width:160px;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:48px;transition:background 0.15s; }
.practice-card:active { background:var(--color-border-light); }
.practice-card-icon { width:28px;height:28px;border-radius:50%;background:var(--color-surface);color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;flex-shrink:0; }
.practice-card-icon svg { width:14px;height:14px; }
.practice-card--active .practice-card-icon { background:var(--color-sacred-pale);color:var(--color-sacred); }
.practice-card-body { flex:1;min-width:0; }
.practice-card-title { font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-primary);line-height:1.2; }
.practice-card-subtitle { font-size:var(--text-xs);color:var(--color-text-secondary);line-height:1.3;margin-top:1px; }
.practice-card--active .practice-card-subtitle { color:var(--color-verified);font-weight:var(--weight-medium); }
html[data-theme="dark"] .practice-card { background:var(--color-surface);border-color:var(--color-border); }
html[data-theme="dark"] .practice-card:active { background:var(--color-surface-hover); }
html[data-theme="dark"] .practice-card-icon { background:var(--color-surface-hover); }
.novena-arc { flex-shrink: 0; }
.novena-arc-text { font-family: var(--font-body); font-size: 9px; font-weight: var(--weight-semibold); fill: var(--color-text-secondary); }
html[data-theme="dark"] .novena-arc-text { fill: var(--color-text-secondary); }

/* YPR-02: Practice group — unified container */
.practice-group { margin-top:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);overflow:hidden; }
.more-zone-ornament + .practice-group { margin-top:0; }
.practice-row { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:56px;border-left:3px solid transparent;transition:background 0.15s; }
.practice-row:active { background:var(--color-surface-hover); }
.practice-row--promoted { border-left-color:var(--color-accent); }
.practice-row-icon { width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0; }
.practice-row-icon svg { width:18px;height:18px; }
.practice-row-body { flex:1;min-width:0; }
.practice-row-title { font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.practice-row-subtitle { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:2px;line-height:1.3; }
.practice-row-chevron { width:16px;height:16px;color:var(--color-text-tertiary);flex-shrink:0; }
.practice-group-divider { height:0;border-top:0.5px solid var(--color-border-light);margin-left:60px; }
html[data-theme="dark"] .practice-group { background:var(--color-surface);border-color:var(--color-border-light); }
html[data-theme="dark"] .practice-row--promoted { border-left-color:var(--color-accent); }

/* ── PSC-01: Prayer Book anchor row ── */
.prayer-anchor { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border-radius:var(--radius-lg);border-left:3px solid var(--color-sacred);box-shadow:var(--shadow-card);cursor:pointer;-webkit-tap-highlight-color:transparent;margin:var(--space-4) 0 0;min-height:64px; }
.prayer-anchor:active { transform:scale(0.98); }
.prayer-anchor-icon { flex-shrink:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--color-sacred-pale);border-radius:50%;color:var(--color-sacred); }
.prayer-anchor-body { flex:1;min-width:0; }
.prayer-anchor-title { font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.prayer-anchor-subtitle { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-primary);margin-top:2px;line-height:1.3; }
.prayer-anchor-count { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:2px; }
.prayer-anchor-chevron { width:16px;height:16px;color:var(--color-text-tertiary);flex-shrink:0; }
html[data-theme="dark"] .prayer-anchor { background:var(--color-surface);border-left-color:var(--color-sacred);box-shadow:var(--shadow-card), 0 0 16px color-mix(in srgb, var(--color-sacred) 8%, transparent); }

/* ── PSC-02: Contextual slots container ── */
.contextual-slots { margin-top:var(--space-3); }
.contextual-slots:empty { display:none; }
.ctx-slot { display:flex;flex-direction:column;background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-2);transition:opacity 200ms ease, max-height 200ms ease, margin 200ms ease; }
.ctx-slot.ctx-slot--dismissing { opacity:0;max-height:0 !important;margin-bottom:0;overflow:hidden;pointer-events:none; }
.ctx-slot-row { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:56px; }
.ctx-slot-row:active { background:var(--color-surface-hover); }
.ctx-slot-icon { width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0; }
.ctx-slot-icon svg { width:18px;height:18px; }
.ctx-slot-body { flex:1;min-width:0; }
.ctx-slot-title { font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.ctx-slot-subtitle { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:2px;line-height:1.3; }
.ctx-slot-actions { display:flex;align-items:center;flex-shrink:0; }
.ctx-slot-chevron { width:16px;height:16px;color:var(--color-text-tertiary); }
html[data-theme="dark"] .ctx-slot { background:var(--color-surface);border-color:var(--color-border-light); }
/* Type-specific: active states get sacred gold left border */
.ctx-slot[data-ctx-type="novena-active"] { border-left:3px solid var(--color-sacred); }
.ctx-slot[data-ctx-type="novena-active"] .ctx-slot-icon { background:var(--color-sacred-pale);color:var(--color-sacred); }
.ctx-slot[data-ctx-type="firstfrisat-active"] { border-left:3px solid var(--color-sacred); }
.ctx-slot[data-ctx-type="firstfrisat-active"] .ctx-slot-icon { background:var(--color-sacred-pale);color:var(--color-sacred); }
/* Type-specific: suggestions/nudges get accent styling, no left border */
.ctx-slot[data-ctx-type="novena-suggestion"] .ctx-slot-icon { background:var(--color-accent-pale);color:var(--color-accent); }
.ctx-slot[data-ctx-type="firstfrisat-nudge"] .ctx-slot-icon { background:var(--color-accent-pale);color:var(--color-accent); }
/* Dismiss button — 44×44 hit target, 20×20 visual icon */
.ctx-slot-dismiss { width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--color-text-tertiary);cursor:pointer;-webkit-tap-highlight-color:transparent;padding:0;margin:0;flex-shrink:0; }
.ctx-slot-dismiss:active { color:var(--color-text-secondary); }
html[data-theme="dark"] .ctx-slot-dismiss { color:var(--color-text-tertiary); }

/* ── PSC-03: Formation zone ── */
.more-zone--formation { padding:var(--space-4) 0 0; }
.more-section-title--formation { font-family:var(--font-body);color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:0.01em;margin-bottom:var(--space-3);padding:0 var(--space-4); }

/* CON-18: Prayer Book intro */
.prayerbook-intro { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-tertiary);text-align:center;padding:var(--space-3) 0 var(--space-1);letter-spacing:0.02em; }
/* PBR-02: Quick access pills */
.prayerbook-quick { display:flex;gap:var(--space-2);overflow-x:auto;scrollbar-width:none;padding:var(--space-2) 0 var(--space-3);-webkit-overflow-scrolling:touch; }
.prayerbook-quick::-webkit-scrollbar { display:none; }
.prayerbook-quick-pill { flex-shrink:0;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-light);border-radius:var(--radius-full);font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-secondary);background:var(--color-surface);cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap;min-height:36px;display:flex;align-items:center; }
.prayerbook-quick-pill:active { background:var(--color-surface-hover); }
html[data-theme="dark"] .prayerbook-quick-pill { background:var(--color-surface);border-color:var(--color-border); }

/* PLR-03: Guided section (elevated to top) */
.prayerbook-guided-section { margin-bottom:var(--space-5);padding:var(--space-3) var(--space-3) var(--space-4);background:rgba(6,5,2,0.03);border-radius:var(--radius-md);border-bottom:none; }
.prayerbook-guided-section { margin-bottom:var(--space-5);padding:var(--space-3) var(--space-3) var(--space-4);background:color-mix(in srgb, var(--color-sacred) 3%, transparent);border-radius:var(--radius-md);border-bottom:none; }
html[data-theme="dark"] .prayerbook-guided-section { background:rgba(7,6,3,0.04); }
html[data-theme="dark"] .prayerbook-guided-section { background:color-mix(in srgb, var(--color-sacred) 4%, transparent); }
/* PLR-02: Active filter chip */
.prayerbook-quick-pill--active { background:var(--color-sacred-pale);color:var(--color-sacred-text);border-color:var(--color-sacred); }
html[data-theme="dark"] .prayerbook-quick-pill--active { background:rgba(28,23,9,0.15);color:var(--color-sacred);border-color:var(--color-sacred); }
html[data-theme="dark"] .prayerbook-quick-pill--active { background:color-mix(in srgb, var(--color-sacred) 15%, transparent);color:var(--color-sacred);border-color:var(--color-sacred); }
/* PLR-04: Favorite button on prayer rows */
.prayerbook-fav-btn { background:none;border:none;padding:var(--space-2);min-width:36px;min-height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent;flex-shrink:0; }
.prayerbook-fav-icon { fill:none;stroke:var(--color-text-tertiary);stroke-width:1.5; }
.prayerbook-fav-icon--active { fill:var(--color-sacred);stroke:var(--color-sacred); }

/* PBR-04: Length indicators */
.prayerbook-length { font-size:10px;font-weight:var(--weight-medium);color:var(--color-text-tertiary);margin-left:auto;padding:0 var(--space-2);white-space:nowrap; }

.stat-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-3); margin-bottom: var(--space-3); }
.stat-card { background: var(--color-surface); border-radius: var(--radius-md); padding: var(--space-4); text-align: center; box-shadow: var(--shadow-card); }
.stat-value { font-size: var(--text-3xl); font-weight: var(--weight-semibold); color: var(--color-primary); line-height: 1.2; }
.stat-label { font-size: var(--text-xs); color: var(--color-text-tertiary); font-weight: var(--weight-medium); margin-top: var(--space-1); }
.county-list { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-3); }
.county-chip { font-size: var(--text-sm); font-weight: var(--weight-medium); padding: var(--space-2) var(--space-3); border-radius: var(--radius-full); background: var(--color-surface); color: var(--color-text-secondary); border: 1px solid var(--color-border); }
.more-link-row {
  display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) 0;
  font-size: var(--text-base); color: var(--color-text-primary); font-weight: var(--weight-medium);
  cursor: pointer; transition: color var(--transition-fast);
  background: none; border: none; text-align: left; width: 100%; text-decoration: none;
}
.more-link-row:hover { color: var(--color-info); }
.more-link-row svg { width: 22px; height: 22px; color: var(--color-primary-muted); flex-shrink: 0; }
.more-link-row .arrow { margin-left: auto; width: 18px; height: 18px; color: var(--color-text-tertiary); }
.more-links-inline { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-4); }
.more-link-pill { display: inline-flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); background: var(--color-surface-hover); border: 1.5px solid var(--color-border); border-radius: var(--radius-full); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--color-text-primary); cursor: pointer; text-decoration: none; transition: all var(--transition-fast); min-height: 44px; }
.more-link-pill:hover { border-color: var(--color-primary); color: var(--color-primary); }
.more-link-pill svg { width: 16px; height: 16px; flex-shrink: 0; }
/* More tab footer links (MT-10) */
.more-footer-links { margin-top:var(--space-5); }
.more-footer-link { display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-3);margin-bottom:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary);cursor:pointer;min-height:48px;-webkit-tap-highlight-color:transparent;transition:all var(--transition-fast); }
.more-footer-link:active { transform:scale(0.98);background:var(--color-surface-hover); }
.more-footer-link--disabled { opacity:0.45;cursor:default;pointer-events:none; }
.more-footer-soon { font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);font-style:italic; }
.more-footer-chevron { color:var(--color-text-tertiary);font-size:1.3rem;transition:transform var(--transition-fast); }
.more-footer-link:active .more-footer-chevron { transform:translateX(2px); }
.more-version { text-align:center;padding:var(--space-4) 0;font-size:var(--text-xs);color:var(--color-text-tertiary);font-family:var(--font-display);letter-spacing:0.03em; }
.more-closing-line { font-family: var(--font-prayer); font-size: var(--text-sm); font-style: italic; color: var(--color-text-secondary); text-align: center; line-height: 1.7; margin: var(--space-8) var(--space-4) var(--space-4); padding: 0 var(--space-4); }
html[data-theme="dark"] .more-closing-line { color: var(--color-sacred-text); }
.whisper-content { text-align:center;padding:var(--space-6) var(--space-5) var(--space-4);max-width:320px;margin:0 auto; }
.whisper-content__text { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-tertiary);line-height:1.6;font-style:italic; }
.whisper-content__attr { display:block;font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-2);opacity:0.7;font-style:normal; }
.more-footer { text-align: center; padding: var(--space-2) 0 var(--space-3); font-size: var(--text-xs); color: var(--color-text-tertiary); line-height: 1.6; }
.more-footer a { color: var(--color-info); }
.theme-toggle { display: inline-flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-3); padding: var(--space-2) var(--space-4); border-radius: var(--radius-full); border: 1.5px solid var(--color-border); background: var(--color-surface); color: var(--color-text-secondary); font-size: var(--text-sm); font-weight: var(--weight-medium); cursor: pointer; transition: all var(--transition-fast); min-height: 40px; }
.theme-toggle:hover { border-color: var(--color-primary); color: var(--color-primary); }

/* SEASONAL BADGE on cards */
.card-seasonal-badge { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; font-weight: var(--weight-semibold); color: var(--color-verified); background: var(--color-verified-bg); padding: 2px 8px; border-radius: var(--radius-full); }

/* EVENTS WIDGET */
/* Inline YC discovery strip (in search results feed) */
.inline-yc-strip { padding:var(--space-3) var(--space-4);margin:var(--space-2) 0; }
.inline-yc-header { display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-2); }
.inline-yc-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:0.03em;color:var(--color-text-tertiary); }
.inline-yc-seeall { font-size:var(--text-xs);color:var(--color-primary);font-weight:var(--weight-medium);background:none;border:none;cursor:pointer;padding:0; }
.inline-yc-scroll { display:flex;gap:var(--space-3);overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;padding-bottom:var(--space-1); }
.inline-yc-scroll::-webkit-scrollbar { display:none; }
.inline-yc-card { flex-shrink:0;width:200px;scroll-snap-align:start;display:flex;gap:var(--space-2);padding:var(--space-3);background:rgba(18,15,6,0.10);border:1px solid rgba(46,38,16,0.25);border-radius:var(--radius-md);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.inline-yc-card { flex-shrink:0;width:200px;scroll-snap-align:start;display:flex;gap:var(--space-2);padding:var(--space-3);background:color-mix(in srgb, var(--color-sacred) 10%, transparent);border:1px solid color-mix(in srgb, var(--color-sacred) 25%, transparent);border-radius:var(--radius-md);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.inline-yc-card:active { transform:scale(0.98); }
.inline-yc-date { display:flex;flex-direction:column;align-items:center;justify-content:center;width:36px;flex-shrink:0; }
.inline-yc-mon { font-size:10px;font-weight:var(--weight-semibold);color:var(--color-sacred-text);text-transform:uppercase;letter-spacing:0.05em; }
.inline-yc-day { font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--color-text-primary);line-height:1; }
.inline-yc-info { min-width:0;flex:1; }
.inline-yc-title { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.inline-yc-meta { font-size:var(--text-xs);color:var(--color-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px; }
.events-widget-wrap { max-width: var(--max-width); margin: 0 auto; padding-bottom: var(--space-2); }
.events-widget-wrap:empty { display: none; }
.events-widget-header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-3) var(--space-4) var(--space-2); }
.events-widget-label { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: 0.06em; }
.events-widget-seeall { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-sacred-text); }
.events-widget-strip { display: flex; gap: var(--space-3); overflow-x: auto; padding: 0 var(--space-4) var(--space-2); scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.events-widget-strip::-webkit-scrollbar { display: none; }
.event-mini-card { flex-shrink: 0; width: 200px; display: flex; align-items: center; gap: var(--space-2); background: var(--color-surface); border-left: 2px solid var(--color-sacred); border-radius: var(--radius-sm); padding: var(--space-2) var(--space-3); cursor: pointer; box-shadow: var(--shadow-card); transition: box-shadow var(--transition-fast); }
.event-mini-card:hover { box-shadow: var(--shadow-card-hover); }
.event-mini-fav { display: flex; align-items: center; gap: 3px; font-size: 10px; font-weight: var(--weight-semibold); color: var(--color-fav); margin-bottom: 2px; }
.event-mini-church { font-size: 11px; color: var(--color-text-tertiary); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.event-mini-title { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-text-primary); line-height: 1.3; margin-bottom: 2px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.event-mini-date { font-size: 11px; font-weight: var(--weight-semibold); color: var(--color-sacred-text); margin-bottom: 2px; }
.event-mini-date-badge { flex-shrink: 0; width: 36px; text-align: center; background: var(--color-sacred-pale); border-radius: var(--radius-sm); padding: 2px 0; }
.event-mini-date-month { font-size: 9px; font-weight: var(--weight-semibold); color: var(--color-sacred-text); text-transform: uppercase; line-height: 1.2; }
.event-mini-date-day { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-primary); line-height: 1.2; }
.event-mini-info { flex: 1; min-width: 0; }
.event-mini-time { font-size: 11px; font-weight: var(--weight-medium); color: var(--color-text-secondary); margin-bottom: 1px; }
.event-mini-near { display: inline-flex; align-items: center; gap: 3px; font-size: 10px; color: var(--color-info); font-weight: var(--weight-semibold); margin-bottom: 2px; }

/* SPARSE MESSAGE */
.sparse-msg { max-width: var(--max-width); margin: 0 auto; padding: 0 var(--space-4) var(--space-2); }
.sparse-msg-inner { background: var(--color-info-bg); border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.5; }
.sparse-msg-inner button { color: var(--color-info); font-weight: var(--weight-semibold); }

/* DAILY READINGS */
.reading-day-name { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--color-sacred-text); margin-bottom: var(--space-4); line-height: 1.3; }
.reading-entry { padding: var(--space-3) 0; margin-bottom: var(--space-1); cursor: pointer; user-select: none; }
.reading-heading { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:0.06em; }
.reading-ref { font-family:var(--font-prayer);font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text-primary);font-style:italic;margin-top:2px; }
.reading-section-subtitle { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);font-style:italic;margin-top:calc(-1 * var(--space-2));margin-bottom:var(--space-3); }

.reading-usccb { display: inline-flex; align-items: center; gap: var(--space-2); margin-top: var(--space-4); padding: var(--space-3) var(--space-4); background: var(--color-info-bg); border-radius: var(--radius-md); font-size: var(--text-sm); color: var(--color-info); font-weight: var(--weight-medium); text-decoration: none; }
.reading-usccb:hover { text-decoration: none; background: #dbeafe; }
.reading-fallback-note { font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic;margin-bottom:var(--space-3); }
.reading-loading { font-size: var(--text-sm); color: var(--color-text-tertiary); font-style: italic; }
.reading-entry-header { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.reading-expand-icon { flex-shrink: 0; color: var(--color-text-tertiary); transition: transform 0.2s ease; }
.reading-entry.expanded .reading-expand-icon { transform: rotate(180deg); }
.reading-text { display: none; font-family:var(--font-prayer); font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.7; margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--color-border-light); }
.reading-text .reading-para { margin: 0 0 var(--space-4) 0; }
.reading-text .reading-para:last-child { margin-bottom: 0; }
.reading-entry.expanded .reading-text { display: block; }
.reading-loading { color:var(--color-text-secondary);font-style:italic;padding:var(--space-sm) 0; }
.reading-listen-btn { display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);background:transparent;border:1px solid var(--color-border-light);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--color-text-tertiary);cursor:pointer;margin-top:var(--space-2);min-height:28px;transition:all 0.15s;-webkit-tap-highlight-color:transparent; }
.reading-listen-btn:active { transform:scale(0.97); }
.reading-listen-btn.speaking { background:var(--color-primary);color:white;border-color:var(--color-primary); }
.reading-listen-btn.speaking svg { stroke:white; }
.reading-entry:hover { background:var(--color-surface-hover); }
.reading-entry:active { opacity:0.85; }
/* MQR-03: Suppress hover background inside readings card */
.msb-readings .reading-entry:hover { background: transparent; }
.msb-readings .reading-entry:active { background: transparent; opacity: 0.85; }
.msb-readings .reading-entry.expanded {
  border-left: 2px solid var(--color-accent);
  padding-left: calc(var(--space-3) - 2px);
}
html[data-theme="dark"] .msb-readings .reading-entry.expanded {
  border-left-color: var(--color-accent);
}

/* UPDATE BANNER */
.mf-update-banner { position:fixed;bottom:calc(var(--tab-bar-height) + var(--safe-bottom) + var(--space-3));left:50%;transform:translateX(-50%) translateY(12px);background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border);padding:var(--space-2) var(--space-3) var(--space-2) var(--space-4);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);display:flex;align-items:center;gap:var(--space-2);opacity:0;pointer-events:none;transition:opacity 0.3s ease,transform 0.3s ease;z-index:var(--z-pwa-banner);box-shadow:var(--shadow-elevated);white-space:nowrap; }
.mf-update-banner.show { opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto; }
.mf-update-banner-btn { background:var(--color-primary);border:none;color:#fff;padding:3px var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-semibold);cursor:pointer;min-height:32px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent; }
.mf-update-banner-btn:active { opacity:0.85; }
.mf-update-banner-btn svg.spin { animation:spin 0.8s linear infinite; }
.mf-update-banner-btn:disabled { opacity:0.7;cursor:default; }
html[data-theme="dark"] .mf-update-banner { background:var(--color-surface);border-color:var(--color-border); }

/* TOAST NOTIFICATION */
.mf-toast { position: fixed; bottom: calc(80px + env(safe-area-inset-bottom)); left: 50%; transform: translateX(-50%) translateY(20px); background: var(--color-text-primary); color: var(--color-surface); padding: var(--space-3) var(--space-5); border-radius: var(--radius-full); font-size: var(--text-sm); font-weight: var(--weight-medium); opacity: 0; pointer-events: none; transition: opacity 0.25s ease, transform 0.25s ease; z-index: var(--z-toast); white-space: nowrap; box-shadow: 0 4px 12px rgba(0,0,0,0.15); }
.mf-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* QR Modal (LIB-03) */
.qr-modal { position:fixed;inset:0;z-index:var(--z-qr-modal);background:rgba(0,0,0,0.5);display:flex;align-items:center;justify-content:center;padding:var(--space-4); }
.qr-modal-card { background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6);text-align:center;max-width:320px;width:100%;box-shadow:var(--shadow-elevated,0 8px 32px rgba(0,0,0,0.3)); }
.qr-modal-title { font-family:var(--font-display);font-size:var(--text-base);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-4); }
.qr-modal-subtitle { font-size:var(--text-xs);color:var(--color-text-secondary);line-height:1.4;margin-bottom:var(--space-3);margin-top:calc(-1 * var(--space-3)); }
.qr-canvas-wrap { display:flex;justify-content:center;min-height:200px;align-items:center; }
.qr-canvas-wrap canvas { border-radius:var(--radius-md); }
.qr-modal-url { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-3);word-break:break-all; }
.qr-modal-close { margin-top:var(--space-4);padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);background:var(--color-primary);color:white;font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;min-height:44px; }
.qr-loading { font-size:var(--text-sm);color:var(--color-text-tertiary); }

/* LITURGICAL CALENDAR */
.litu-event { display: flex; align-items: flex-start; gap: var(--space-4); padding: var(--space-3) 0; border-bottom: 1px solid var(--color-border-light); }
.litu-event:last-child { border-bottom: none; }
.litu-date-badge { flex-shrink: 0; background: var(--color-primary); color: white; border-radius: var(--radius-sm); padding: 4px var(--space-2); text-align: center; min-width: 46px; }
.litu-month { font-size: 10px; font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: 0.06em; opacity: 0.75; }
.litu-day { font-size: var(--text-xl); font-weight: var(--weight-semibold); line-height: 1.2; }
.litu-name { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-primary); }
.litu-type { font-size: var(--text-xs); color: var(--color-text-tertiary); margin-top: 2px; }
.litu-soon { display: inline-block; margin-top: 4px; font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-soon-text); background: var(--color-soon-pale); padding: 1px 8px; border-radius: var(--radius-full); }
.litu-hdo { display: inline-block; margin-left: var(--space-2); font-size: 10px; font-weight: var(--weight-semibold); color: white; background: var(--color-primary); padding: 1px 6px; border-radius: var(--radius-full); vertical-align: middle; }

/* PRAYER TOOLS GRID — PMG: always 2-column primary + 3-up secondary */
.prayer-tools-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); }
/* DSN-14: 3-card promoted grid */
.prayer-grid-promoted { grid-template-columns:3fr 2fr;grid-template-rows:1fr 1fr;min-height:170px; }
/* PAT-03: Adaptive grid variants */
.prayer-grid-single { display:block; }
.prayer-grid-pair { grid-template-columns:1fr 1fr; }
.prayer-grid-pair .prayer-promoted-card { grid-row:auto; }
.prayer-promoted-card { grid-row:1/3;display:flex;flex-direction:column;justify-content:space-between;padding:var(--space-4);border-radius:var(--radius-md);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.prayer-promoted-card:active { opacity:0.92; }
.prayer-promoted-icon { width:24px;height:24px;margin-bottom:var(--space-2); }
.prayer-promoted-icon svg { width:24px;height:24px; }
.prayer-promoted-title { font-family:var(--font-display);font-size:20px;font-weight:var(--weight-semibold);line-height:1.2;color:var(--color-text-primary); }
.prayer-promoted-subtitle { font-family:var(--font-prayer);font-size:14px;font-style:italic;color:var(--color-text-secondary);margin-top:var(--space-2);line-height:1.5; }
.prayer-promoted-time { display:block;font-family:var(--font-body);font-size:var(--text-xs);font-style:normal;font-weight:var(--weight-medium);color:var(--color-text-tertiary);margin-top:2px; }
.prayer-promoted-badge { align-self:flex-start;font-family:var(--font-body);font-size:12px;font-weight:var(--weight-semibold);padding:3px 10px;border-radius:4px;margin-top:var(--space-3); }
.prayer-compact-card { display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--space-1);padding:var(--space-3);border-radius:var(--radius-md);cursor:pointer;-webkit-tap-highlight-color:transparent;background:var(--color-surface);box-shadow:var(--shadow-card); }
.prayer-compact-card:active { transform:scale(0.98); }
.prayer-compact-icon { width:18px;height:18px; }
.prayer-compact-icon svg { width:18px;height:18px; }
.prayer-compact-title { font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);text-align:center; }
.prayer-compact-subtitle { font-family:var(--font-body);font-size:12px;color:var(--color-text-tertiary); }
/* PTG-02: Full-width 4th prayer tool card */
.prayer-fourth-card { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-top:var(--space-2);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:52px; }
.prayer-fourth-card:active { transform:scale(0.98);opacity:0.92; }
.prayer-fourth-icon { width:32px;height:32px;min-width:32px;border-radius:50%;display:flex;align-items:center;justify-content:center; }
.prayer-fourth-icon svg { width:16px;height:16px; }
.prayer-fourth-body { flex:1;min-width:0; }
.prayer-fourth-title { font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.prayer-fourth-sub { font-family:var(--font-body);font-size:12px;color:var(--color-text-tertiary);line-height:1.3; }
.prayer-fourth-chevron { font-size:var(--text-lg);color:var(--color-text-tertiary);flex-shrink:0; }
.prayer-promoted-card--sacred { background:linear-gradient(135deg,var(--color-surface) 60%,var(--color-sacred-pale) 100%);border:2px solid var(--color-sacred);box-shadow:var(--shadow-card),var(--shadow-sacred-glow); }
.prayer-promoted-card--seasonal { background:var(--color-accent-pale);border:2px solid var(--color-accent); }
html[data-theme="dark"] .prayer-promoted-card--sacred { background:linear-gradient(135deg,var(--color-surface) 60%,rgba(11,9,4,0.06) 100%); }
html[data-theme="dark"] .prayer-promoted-card--sacred { background:linear-gradient(135deg,var(--color-surface) 60%,color-mix(in srgb,var(--color-sacred) 6%,transparent) 100%); }
html[data-theme="dark"] .prayer-promoted-card--seasonal { background:#f9f7f0; }
html[data-theme="dark"] .prayer-promoted-card--seasonal { background:color-mix(in srgb,var(--color-accent) 8%,var(--color-surface)); }
.prayer-tools-secondary { display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-2);margin-top:var(--space-2); }
.prayer-tool-card { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md);transition:box-shadow 0.15s, transform 0.15s;cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:48px; }
.prayer-tool-card:not(.coming-soon):hover { box-shadow:var(--shadow-card-hover);transform:translateY(-1px); }
.prayer-tool-card--promoted:not(.coming-soon):hover { box-shadow:var(--shadow-card-hover), var(--shadow-sacred-glow); }
/* MZP-01: Promoted card breathing glow */
@keyframes sacred-breathe {
  0%, 100% { box-shadow: var(--shadow-card), 0 0 16px rgba(11,8,4,0.05); }
  0%, 100% { box-shadow: var(--shadow-card), 0 0 16px color-mix(in srgb, var(--color-sacred) 5%, transparent); }
  50% { box-shadow: var(--shadow-card), 0 0 28px rgba(47,37,17,0.22); }
  50% { box-shadow: var(--shadow-card), 0 0 28px color-mix(in srgb, var(--color-sacred) 22%, transparent); }
}
.prayer-tool-card--promoted { animation: sacred-breathe 3.5s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) {
  .prayer-tool-card--promoted { animation: none; }
}
.prayer-tool-card:not(.coming-soon):active { transform:scale(0.98); }
.prayer-tool-card.coming-soon { opacity:0.5;cursor:default; }
.prayer-tool-icon { width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0; }
.prayer-tool-icon svg { width:18px;height:18px; }
.prayer-tool-card--promoted { border-left:3px solid var(--color-sacred);background:linear-gradient(135deg, var(--color-surface) 60%, var(--color-sacred-pale) 100%);padding:var(--space-4) var(--space-4);box-shadow:var(--shadow-card), var(--shadow-sacred-glow); }
.prayer-tool-body { flex:1;min-width:0; }
.prayer-tool-title { font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.prayer-tool-subtitle { font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:2px;line-height:1.3; }
.prayer-tool-subtitle--active { color:var(--color-verified);font-weight:var(--weight-medium); }
.prayer-tool-subtitle--nudge { color:var(--color-warning, #D97706); }
.library-teaser { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius-md);opacity:0.6;margin-top:var(--space-3); }
.library-teaser .prayer-tool-title { font-size:var(--text-base);color:var(--color-text-secondary); }
.library-teaser .prayer-tool-subtitle { font-size:var(--text-sm);color:var(--color-text-tertiary); }
.library-teaser.coming-soon { opacity:0.5;cursor:default;pointer-events:none; }
html[data-theme="dark"] .prayer-tool-card--promoted { background:linear-gradient(135deg, var(--color-surface) 60%, rgba(11,9,4,0.06) 100%); }
html[data-theme="dark"] .prayer-tool-card--promoted { background:linear-gradient(135deg, var(--color-surface) 60%, color-mix(in srgb, var(--color-sacred) 6%, transparent) 100%); }
html[data-theme="dark"] .prayer-tool-card--promoted { animation-name: sacred-breathe-dark; }
@keyframes sacred-breathe-dark {
  0%, 100% { box-shadow: var(--shadow-card), 0 0 20px rgba(17,13,6,0.08); }
  0%, 100% { box-shadow: var(--shadow-card), 0 0 20px color-mix(in srgb, var(--color-sacred) 8%, transparent); }
  50% { box-shadow: var(--shadow-card), 0 0 32px rgba(53,42,19,0.25); }
  50% { box-shadow: var(--shadow-card), 0 0 32px color-mix(in srgb, var(--color-sacred) 25%, transparent); }
}
html[data-theme="dark"] .library-teaser { border-color:var(--color-border); }

/* PMG-03: Primary card — vertical layout (icon top, text below) */
.prayer-tool-card--primary { flex-direction:column;align-items:flex-start;gap:var(--space-2);padding:var(--space-3);min-height:80px; }
.prayer-tool-card--primary .prayer-tool-icon { width:36px;height:36px; }
.prayer-tool-card--primary .prayer-tool-icon svg { width:20px;height:20px; }
.prayer-tool-card--primary .prayer-tool-title { font-size:var(--text-sm);line-height:1.3; }
.prayer-tool-card--primary .prayer-tool-subtitle { font-size:var(--text-xs);line-height:1.3; }

/* PMG-03: Secondary card — compact horizontal (icon left, title right, no subtitle visible) */
.prayer-tool-card--secondary { gap:var(--space-2);padding:var(--space-2) var(--space-3);min-height:44px; }
.prayer-tool-card--secondary .prayer-tool-icon { width:28px;height:28px; }
.prayer-tool-card--secondary .prayer-tool-icon svg { width:15px;height:15px; }
.prayer-tool-card--secondary .prayer-tool-title { font-size:var(--text-xs);line-height:1.2; }
.prayer-tool-card--secondary .prayer-tool-subtitle { display:none; }

/* PMG-04: Promoted secondary — show it has contextual relevance */
.prayer-tool-card--secondary.prayer-tool-card--promoted { border-left-width:2px; }
.prayer-tool-card--secondary.prayer-tool-card--promoted .prayer-tool-subtitle { display:block;font-size:var(--text-xs); }

/* PMD-02: Divine Mercy Chaplet styles */
.chaplet-intro { display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-8) var(--space-4);min-height:60vh;justify-content:center; }
.chaplet-intro-cross { color:var(--color-sacred);margin-bottom:var(--space-4); }
.chaplet-intro-title { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--color-heading);margin-bottom:var(--space-2); }
.chaplet-intro-origin { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-sacred-text);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--space-5); }
.chaplet-intro-quote { font-family:var(--font-prayer);font-size:var(--text-sm);font-style:italic;color:var(--color-text-secondary);line-height:1.7;max-width:280px;margin:0 0 var(--space-6);border:none;padding:0; }
.chaplet-intro-ref { font-family:var(--font-body);font-style:normal;font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-1); }
.chaplet-begin { padding:var(--space-3) var(--space-8);background:var(--color-sacred);color:white;border:none;border-radius:var(--radius-full);font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);cursor:pointer;min-height:48px;-webkit-tap-highlight-color:transparent; }
.chaplet-begin:active { transform:scale(0.97); }
.chaplet-prayer { display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-4);min-height:60vh;justify-content:center; }
.chaplet-decade-label { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--space-4); }
.chaplet-step-title { font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;color:var(--color-heading);margin-bottom:var(--space-4); }
.chaplet-prayer-text { font-family:var(--font-prayer);font-size:var(--text-base);color:var(--color-text-primary);line-height:1.75;max-width:400px; }
.chaplet-beads { display:flex;gap:6px;justify-content:center;margin-bottom:var(--space-4); }
.chaplet-bead { width:12px;height:12px;border-radius:50%;border:1.5px solid var(--color-border);background:transparent;transition:all 0.2s; }
.chaplet-bead.done { background:var(--color-sacred);border-color:var(--color-sacred);opacity:0.5; }
.chaplet-bead.active { background:var(--color-sacred);border-color:var(--color-sacred);opacity:1;transform:scale(1.2); }
.chaplet-final { padding-top:var(--space-8); }
.chaplet-final-cross { color:var(--color-sacred);margin-bottom:var(--space-5); }
html[data-theme="dark"] .chaplet-intro-title { color:var(--color-heading); }
html[data-theme="dark"] .chaplet-intro-quote { color:var(--color-text-secondary); }
html[data-theme="dark"] .chaplet-prayer-text { color:var(--color-text-primary); }
html[data-theme="dark"] .chaplet-begin { background:var(--color-sacred); }

/* PMB: Prayer Book styles */
/* PBZ-01: Moment zone */
.prayerbook-moment { padding:var(--space-4); }
.prayerbook-moment-card { background:#fbf9f3;border-left:3px solid var(--color-accent);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform 0.15s; }
.prayerbook-moment-card { background:color-mix(in srgb, var(--color-accent) 6%, var(--color-surface));border-left:3px solid var(--color-accent);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform 0.15s; }
.prayerbook-moment-card:active { transform:scale(0.98); }
.prayerbook-moment-icon { color:var(--color-accent);margin-bottom:var(--space-3); }
.prayerbook-moment-icon svg { width:24px;height:24px; }
.prayerbook-moment-title { font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--color-text-primary);line-height:1.3; }
.prayerbook-moment-subtitle { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-1);line-height:1.4; }
.prayerbook-moment-action { display:inline-flex;align-items:center;gap:var(--space-1);margin-top:var(--space-3);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-accent); }
.prayerbook-dontknow { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin:var(--space-2) var(--space-4) 0;background:var(--color-surface);border:1px solid var(--color-border-light);border-left:3px solid var(--color-sacred);border-radius:var(--radius-md);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:52px;transition:transform 0.15s; }
.prayerbook-dontknow:active { transform:scale(0.98); }
.prayerbook-dontknow-icon { flex-shrink:0;width:36px;height:36px;border-radius:50%;background:var(--color-sacred-pale);color:var(--color-sacred);display:flex;align-items:center;justify-content:center; }
.prayerbook-dontknow-icon svg { width:20px;height:20px; }
.prayerbook-dontknow-body { flex:1;min-width:0; }
.prayerbook-dontknow-title { font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.prayerbook-dontknow-subtitle { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:1px;line-height:1.3; }
html[data-theme="dark"] .prayerbook-dontknow { background:var(--color-surface);border-color:var(--color-border);border-left-color:var(--color-sacred); }
html[data-theme="dark"] .prayerbook-moment-card { background:#f9f7f0;border-left-color:var(--color-accent); }
html[data-theme="dark"] .prayerbook-moment-card { background:color-mix(in srgb, var(--color-accent) 8%, var(--color-surface));border-left-color:var(--color-accent); }
/* PBZ-02: Guided experiences zone */
.prayerbook-guided { padding:0 var(--space-4) var(--space-3); }
.prayerbook-guided-label { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;padding:var(--space-3) 0 var(--space-2); }
.prayerbook-guided-card { display:flex;flex-direction:column;gap:var(--space-1);background:var(--color-surface);border:1px solid var(--color-border-light);border-left:3px solid var(--color-sacred);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-2);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:52px;transition:transform 0.15s; }
.prayerbook-guided-card:active { transform:scale(0.98); }
.prayerbook-guided-title { font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.prayerbook-guided-hook { font-family:var(--font-prayer);font-size:var(--text-sm);font-style:italic;color:var(--color-text-secondary);margin-top:var(--space-1);line-height:1.5; }
.prayerbook-guided-modes { font-family:var(--font-body);font-size:11px;color:var(--color-text-tertiary);margin-top:var(--space-2); }
.prayerbook-guided-all { display:block;padding:var(--space-2) 0;font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-tertiary);text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;background:none;border:none;width:100%; }
.prayerbook-guided-all:active { color:var(--color-accent); }
html[data-theme="dark"] .prayerbook-guided-card { background:var(--color-surface);border-color:var(--color-border);border-left-color:var(--color-sacred); }
/* PBP-05: Zone seam between guided and library */
.prayerbook-zone-seam { display:flex;align-items:center;justify-content:center;padding:var(--space-4) 0; }
.prayerbook-zone-seam::after { content:'';width:40px;height:0;border-top:1px solid var(--color-border-light);opacity:0.5; }
.prayerbook-library-label { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;padding:0 var(--space-4) var(--space-2); }
.prayerbook-list { padding:var(--space-2) 0; }
.prayerbook-search { position:sticky;top:calc(-1 * var(--space-5));z-index:10;background:var(--color-bg);padding:var(--space-5) 0 var(--space-2);margin:calc(-1 * var(--space-2)) 0 0; }
.prayerbook-search-input { width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-light);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font-body);background:var(--color-surface);color:var(--color-text-primary);outline:none;-webkit-appearance:none; }
.prayerbook-search-input:focus { border-color:var(--color-sacred);box-shadow:0 0 0 2px rgba(28,23,9,0.15); }
.prayerbook-search-input:focus { border-color:var(--color-sacred);box-shadow:0 0 0 2px color-mix(in srgb, var(--color-sacred) 15%, transparent); }
.prayerbook-category { margin-bottom:var(--space-5); }
.prayerbook-category:first-child { margin-top:0; }
.prayerbook-category-title { display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border-light); }
.prayerbook-category-count { font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);background:var(--color-surface-hover);padding:1px var(--space-2);border-radius:var(--radius-full); }
html[data-theme="dark"] .prayerbook-category-count { background:rgba(255,255,255,0.06); }
html[data-theme="dark"] .prayerbook-category-count { background:color-mix(in srgb, white 4%, var(--color-surface)); }
.prayerbook-category--favorites .prayerbook-category-title { color:var(--color-sacred-text);border-bottom-color:var(--color-sacred); }
html[data-theme="dark"] .prayerbook-category--favorites .prayerbook-category-title { color:var(--color-sacred);border-bottom-color:var(--color-sacred); }
.prayerbook-row { border:1px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-surface);margin-bottom:var(--space-2);overflow:hidden;transition:box-shadow 0.15s; }
.prayerbook-row-header { display:flex;align-items:center;width:100%;min-height:44px; }
.prayerbook-row-tap { display:flex;align-items:center;flex:1;min-width:0;padding:var(--space-3) 0 var(--space-3) var(--space-4);background:none;border:none;cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent;gap:var(--space-2); }
.prayerbook-row-info { flex:1;min-width:0; }
.prayerbook-row-title { font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text-primary); }
.prayerbook-row-preview { display:block;font-family:var(--font-prayer);font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic;line-height:1.4;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%; }
.prayerbook-row--guided { display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md);cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent;min-height:44px;margin-bottom:var(--space-1); }
.prayerbook-row--guided:active { transform:scale(0.98); }
.prayerbook-guided-badge { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-sacred-text);background:var(--color-sacred-pale);padding:2px 8px;border-radius:var(--radius-full);flex-shrink:0; }
.prayerbook-empty { text-align:center;color:var(--color-text-tertiary);font-size:var(--text-sm);padding:var(--space-6) 0; }

/* PMB-05: V/R formatting */
.vr-line { display:block;margin-bottom:2px; }
.vr-label { font-family:var(--font-prayer);font-weight:var(--weight-semibold);color:var(--color-sacred-text);font-style:italic; }
.vr-response { font-weight:var(--weight-semibold); }

/* PMB-06: Litany step-through */
.litany-step { display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-6) var(--space-4);min-height:60vh;justify-content:center; }
.litany-counter { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--space-3); }
.litany-progress { width:100%;max-width:200px;height:4px;background:var(--color-border-light);border-radius:var(--radius-full);overflow:hidden;margin-bottom:var(--space-6); }
.litany-progress-fill { height:100%;background:var(--color-sacred);border-radius:var(--radius-full);transition:width 0.3s ease-out; }
/* CLM: Litany mode toggle — discrete sacred labels */
.litany-mode-toggle { display:flex;justify-content:center;gap:var(--space-5);margin:var(--space-4) 0 var(--space-2); }
.litany-mode-opt { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:0.03em;padding:var(--space-1) 0;color:var(--color-text-tertiary);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;min-height:36px;-webkit-tap-highlight-color:transparent;transition:color var(--transition-fast),border-color var(--transition-fast); }
.litany-mode-opt--active { color:var(--color-sacred-text);border-bottom-color:var(--color-sacred);font-weight:var(--weight-semibold); }
.litany-mode-opt:not(.litany-mode-opt--active):active { color:var(--color-text-secondary); }
/* CLM: Contemplative layout */
.litany-step--contemplative { background:radial-gradient(ellipse at 50% 40%, rgba(7,6,3,0.04) 0%, transparent 70%); }
.litany-step--contemplative { background:radial-gradient(ellipse at 50% 40%, color-mix(in srgb, var(--color-sacred) 4%, transparent) 0%, transparent 70%); }
.litany-contemplative-petition { min-height:120px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:0 0.3em;max-width:380px; }
.litany-phrase { opacity:0;transform:translateX(-3px);filter:blur(4px);font-family:var(--font-prayer);font-size:var(--text-xl);color:var(--color-text-primary);line-height:1.75;display:inline; }
.litany-phrase--key { font-weight:700;letter-spacing:0.01em; }
.litany-phrase--visible { opacity:1;transform:translateX(0);filter:blur(0); }
.litany-contemplative-response { min-height:48px;margin-top:var(--space-6); }
.litany-phrase-response { opacity:0;transform:translateY(3px) scale(0.96);filter:blur(3px);font-family:var(--font-prayer);font-size:var(--text-xl);font-style:italic;color:var(--color-sacred-text);line-height:1.6;display:inline-block;text-shadow:0 0 0 transparent; }
.litany-phrase-response.litany-phrase--visible { opacity:1;transform:translateY(0) scale(1);filter:blur(0);text-shadow:0 0 24px rgba(46,38,16,0.25); }
.litany-phrase-response.litany-phrase--visible { opacity:1;transform:translateY(0) scale(1);filter:blur(0);text-shadow:0 0 24px color-mix(in srgb, var(--color-sacred) 25%, transparent); }
.litany-pause-dot { display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--color-sacred);margin-left:var(--space-2);vertical-align:middle;animation:litanyPausePulse 1.5s ease-in-out infinite; }
@keyframes litanyPausePulse { 0%,100% { opacity:0.4; } 50% { opacity:1; } }
/* CLM: Read Along glow — text breathes with sacred light */
.litany-invocation--glow { text-shadow:0 0 20px rgba(28,23,9,0.15);animation:litanyTextGlow 4s ease-in-out infinite; }
.litany-invocation--glow { text-shadow:0 0 20px color-mix(in srgb, var(--color-sacred) 15%, transparent);animation:litanyTextGlow 4s ease-in-out infinite; }
@keyframes litanyTextGlow { 0%,100% { text-shadow:0 0 12px rgba(15,12,5,0.08); } 50% { text-shadow:0 0 28px rgba(37,30,13,0.20); } }
@keyframes litanyTextGlow { 0%,100% { text-shadow:0 0 12px color-mix(in srgb, var(--color-sacred) 8%, transparent); } 50% { text-shadow:0 0 28px color-mix(in srgb, var(--color-sacred) 20%, transparent); } }
html[data-theme="dark"] .litany-mode-opt--active { color:var(--color-sacred);border-bottom-color:var(--color-sacred); }
html[data-theme="dark"] .litany-invocation--glow { text-shadow:0 0 24px rgba(37,30,13,0.20);animation:litanyTextGlowDark 4s ease-in-out infinite; }
html[data-theme="dark"] .litany-invocation--glow { text-shadow:0 0 24px color-mix(in srgb, var(--color-sacred) 20%, transparent);animation:litanyTextGlowDark 4s ease-in-out infinite; }
@keyframes litanyTextGlowDark { 0%,100% { text-shadow:0 0 16px rgba(22,18,8,0.12); } 50% { text-shadow:0 0 36px rgba(46,38,16,0.25); } }
@keyframes litanyTextGlowDark { 0%,100% { text-shadow:0 0 16px color-mix(in srgb, var(--color-sacred) 12%, transparent); } 50% { text-shadow:0 0 36px color-mix(in srgb, var(--color-sacred) 25%, transparent); } }
html[data-theme="dark"] .litany-step--contemplative { background:radial-gradient(ellipse at 50% 40%, rgba(11,9,4,0.06) 0%, transparent 70%); }
html[data-theme="dark"] .litany-step--contemplative { background:radial-gradient(ellipse at 50% 40%, color-mix(in srgb, var(--color-sacred) 6%, transparent) 0%, transparent 70%); }
[data-text-size="large"] .litany-phrase { font-size:calc(var(--text-xl) + 2px); }
[data-text-size="x-large"] .litany-phrase { font-size:calc(var(--text-xl) + 4px); }
[data-text-size="large"] .litany-phrase-response { font-size:calc(var(--text-lg) + 2px); }
[data-text-size="x-large"] .litany-phrase-response { font-size:calc(var(--text-lg) + 4px); }
.litany-invocation { font-family:var(--font-prayer);font-size:var(--text-lg);color:var(--color-text-primary);line-height:1.7;max-width:360px;margin-bottom:var(--space-5); }
.litany-response { font-family:var(--font-prayer);font-size:var(--text-base);font-style:italic;color:var(--color-sacred-text);line-height:1.6;max-width:320px; }

/* ── IPV-08: Universal prayer splash system ── */
.prayer-splash { display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-8) var(--space-5);min-height:60vh;justify-content:center;max-width:400px;margin:0 auto;background:radial-gradient(ellipse at 50% 35%, rgba(18,15,6,0.10) 0%, rgba(6,5,2,0.03) 50%, transparent 80%); }
.prayer-splash { display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-8) var(--space-5);min-height:60vh;justify-content:center;max-width:400px;margin:0 auto;background:radial-gradient(ellipse at 50% 35%, color-mix(in srgb, var(--color-accent) 10%, transparent) 0%, color-mix(in srgb, var(--color-accent) 3%, transparent) 50%, transparent 80%); }
.prayer-splash-icon { color:var(--color-sacred);opacity:0.7;margin-bottom:var(--space-4);filter:drop-shadow(0 0 12px rgba(37,30,13,0.20)); }
.prayer-splash-icon { color:var(--color-sacred);opacity:0.7;margin-bottom:var(--space-4);filter:drop-shadow(0 0 12px color-mix(in srgb, var(--color-sacred) 20%, transparent)); }
.prayer-splash-icon svg { width:40px;height:52px; }
.prayer-splash-title { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--color-heading);margin-bottom:var(--space-2);text-shadow:0 0 40px rgba(22,18,8,0.12); }
.prayer-splash-title { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--color-heading);margin-bottom:var(--space-2);text-shadow:0 0 40px color-mix(in srgb, var(--color-sacred) 12%, transparent); }
.prayer-splash-subtitle { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-sacred-text);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--space-5); }
.prayer-splash-desc { font-family:var(--font-prayer);font-size:var(--text-sm);font-style:italic;color:var(--color-text-secondary);line-height:1.7;max-width:300px;margin:0 0 var(--space-4); }
.prayer-splash-hint { font-size:var(--text-xs);color:var(--color-text-tertiary);line-height:1.6;max-width:280px;margin-bottom:var(--space-6); }
.prayer-splash-begin { padding:var(--space-3) var(--space-8);background:var(--color-sacred);color:white;border:none;border-radius:var(--radius-full);font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);cursor:pointer;min-height:48px;-webkit-tap-highlight-color:transparent;box-shadow:0 0 20px rgba(28,23,9,0.15);transition:transform var(--transition-fast); }
.prayer-splash-begin { padding:var(--space-3) var(--space-8);background:var(--color-sacred);color:white;border:none;border-radius:var(--radius-full);font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);cursor:pointer;min-height:48px;-webkit-tap-highlight-color:transparent;box-shadow:0 0 20px color-mix(in srgb, var(--color-sacred) 15%, transparent);transition:transform var(--transition-fast); }
.prayer-splash-begin:active { transform:scale(0.97); }
.prayer-splash-prayer-text { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.7;max-width:320px;margin-bottom:var(--space-5);max-height:25vh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--space-3);background:rgba(6,5,2,0.03);border-radius:var(--radius-sm); }
.prayer-splash-prayer-text { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.7;max-width:320px;margin-bottom:var(--space-5);max-height:25vh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--space-3);background:color-mix(in srgb, var(--color-sacred) 3%, transparent);border-radius:var(--radius-sm); }
html[data-theme="dark"] .prayer-splash { background:radial-gradient(ellipse at 50% 35%, rgba(22,18,8,0.12) 0%, rgba(7,6,3,0.04) 50%, transparent 80%); }
html[data-theme="dark"] .prayer-splash { background:radial-gradient(ellipse at 50% 35%, color-mix(in srgb, var(--color-accent) 12%, transparent) 0%, color-mix(in srgb, var(--color-accent) 4%, transparent) 50%, transparent 80%); }
html[data-theme="dark"] .prayer-splash-icon { filter:drop-shadow(0 0 16px rgba(46,38,16,0.25)); }
html[data-theme="dark"] .prayer-splash-icon { filter:drop-shadow(0 0 16px color-mix(in srgb, var(--color-sacred) 25%, transparent)); }
html[data-theme="dark"] .prayer-splash-title { text-shadow:0 0 30px rgba(28,23,9,0.12); }
html[data-theme="dark"] .prayer-splash-title { text-shadow:0 0 30px color-mix(in srgb, var(--color-sacred) 12%, transparent); }
html[data-theme="dark"] .prayer-splash-begin { box-shadow:0 0 24px rgba(37,30,13,0.25); }
html[data-theme="dark"] .prayer-splash-begin { box-shadow:0 0 24px color-mix(in srgb, var(--color-sacred) 25%, transparent); }

/* PMB-07: Lectio Divina */
.lectio-step { display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-6) var(--space-4);min-height:60vh;justify-content:flex-start;padding-top:var(--space-8); }
.lectio-step .lectio-dots { flex-shrink:0; }
.lectio-step .lectio-label { flex-shrink:0; }
.lectio-step .lectio-english { flex-shrink:0; }
.lectio-step .lectio-instruction { flex-shrink:0; }
.lectio-step .lectio-gospel,
.lectio-step .lectio-gospel--faded,
.lectio-step .lectio-gospel-placeholder,
.lectio-step .lectio-pray-icon,
.lectio-step .lectio-rest { flex:1;display:flex;align-items:center;justify-content:center;width:100%; }
.lectio-intro .lectio-title { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--color-heading);margin-bottom:var(--space-1); }
.lectio-subtitle { font-family:var(--font-prayer);font-size:var(--text-sm);font-style:italic;color:var(--color-sacred-text);margin-bottom:var(--space-4); }
.lectio-desc { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);max-width:320px;line-height:1.6;margin-bottom:var(--space-3); }
.lectio-gospel-ref { font-size:var(--text-xs);color:var(--color-text-tertiary); }
.lectio-dots { display:flex;gap:8px;justify-content:center;margin-bottom:var(--space-5); }
.lectio-dot { width:10px;height:10px;border-radius:50%;border:1.5px solid var(--color-border);background:transparent; }
.lectio-dot.done { background:var(--color-sacred);border-color:var(--color-sacred); }
.lectio-dot.active { background:var(--color-sacred);border-color:var(--color-sacred);box-shadow:0 0 0 3px rgba(37,30,13,0.20); }
.lectio-dot.active { background:var(--color-sacred);border-color:var(--color-sacred);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-sacred) 20%, transparent); }
.lectio-label { font-family:var(--font-prayer);font-size:var(--text-sm);font-style:italic;color:var(--color-sacred-text);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:var(--space-1); }
.lectio-english { font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;color:var(--color-heading);margin-bottom:var(--space-4); }
.lectio-instruction { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);max-width:340px;line-height:1.6;margin-bottom:var(--space-5); }
.lectio-gospel { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-primary);line-height:1.85;max-width:400px;text-align:left;font-style:italic; }
.lectio-gospel--faded { opacity:0.5; }
.lectio-gospel-placeholder { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-tertiary);font-style:italic;max-width:320px; }
.lectio-pray-icon { color:var(--color-sacred);margin:var(--space-4) 0; }
.lectio-rest { min-height:30vh; }
html[data-theme="dark"] .prayerbook-search-input { background:var(--color-surface);border-color:var(--color-border);color:var(--color-text-primary); }
html[data-theme="dark"] .prayerbook-guided-badge { background:rgba(28,23,9,0.15); }
html[data-theme="dark"] .prayerbook-guided-badge { background:color-mix(in srgb, var(--color-sacred) 15%, transparent); }

/* ── PLD-07: Section headers (flat grouped list) ── */
.prayerbook-section-header { font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--color-heading);padding:var(--space-5) 0 var(--space-2);border-bottom:1px solid var(--color-border-light);margin-bottom:var(--space-2); }
.prayerbook-section-desc { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-bottom:var(--space-3);line-height:1.5; }
.prayerbook-section-intro { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.7;padding:var(--space-3) 0;margin-bottom:var(--space-2);font-style:italic; }
html[data-theme="dark"] .prayerbook-section-header { color:var(--color-heading);border-bottom-color:var(--color-border); }

/* ── PLD-08: Subcategory dividers ── */
.prayerbook-subcategory { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;padding:var(--space-4) 0 var(--space-2);position:relative; }
.prayerbook-subcategory::after { content:'';display:block;width:32px;height:2px;background:var(--color-accent);margin-top:var(--space-1);border-radius:1px; }

/* ── PLD-09: Favorites chip + star button ── */
.prayerbook-quick-pill--favorites { background:#f9f7f0;border-color:var(--color-sacred);color:var(--color-sacred-text); }
.prayerbook-quick-pill--favorites { background:color-mix(in srgb, var(--color-sacred) 8%, var(--color-surface));border-color:var(--color-sacred);color:var(--color-sacred-text); }
.prayerbook-quick-pill--favorites.prayerbook-quick-pill--active { background:var(--color-sacred);color:white; }
.prayerbook-row-fav { flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--color-text-tertiary);-webkit-tap-highlight-color:transparent;padding:0; }
.prayerbook-row-fav--active { color:var(--color-sacred); }
.prayerbook-row--guided-wrap { display:flex;align-items:center;justify-content:space-between;border:1px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-surface);margin-bottom:var(--space-2);min-height:44px;overflow:hidden; }
.prayerbook-row-guided-tap { display:flex;align-items:center;justify-content:space-between;flex:1;min-width:0;padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);background:none;border:none;cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent;gap:var(--space-2); }
.prayerbook-row-guided-tap:active { opacity:0.8; }
html[data-theme="dark"] .prayerbook-row--guided-wrap { background:var(--color-surface);border-color:var(--color-border); }

/* ── PLD-14: Search empty state ── */
.prayerbook-empty-title { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-secondary);margin-bottom:var(--space-3); }
.prayerbook-empty-hints { font-size:var(--text-xs);line-height:1.8;color:var(--color-text-tertiary); }

/* ── PLD-10: Cross-section search results ── */
.prayerbook-related-header { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.05em;padding:var(--space-4) 0 var(--space-2);margin-top:var(--space-3); }
.prayerbook-related-card { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:#fdfcf9;border:1px solid var(--color-border-light);border-radius:var(--radius-md);cursor:pointer;min-height:48px;margin-bottom:var(--space-2);-webkit-tap-highlight-color:transparent; }
.prayerbook-related-card { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:color-mix(in srgb, var(--color-accent) 3%, var(--color-surface));border:1px solid var(--color-border-light);border-radius:var(--radius-md);cursor:pointer;min-height:48px;margin-bottom:var(--space-2);-webkit-tap-highlight-color:transparent; }
.prayerbook-related-card:active { transform:scale(0.98); }
.prayerbook-related-badge { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-accent-text);background:var(--color-accent-pale);padding:2px var(--space-2);border-radius:var(--radius-full);white-space:nowrap;flex-shrink:0; }
html[data-theme="dark"] .prayerbook-related-card { background:rgba(7,6,3,0.04); }
html[data-theme="dark"] .prayerbook-related-card { background:color-mix(in srgb, var(--color-accent) 4%, transparent); }
html[data-theme="dark"] .prayerbook-related-badge { background:rgba(28,23,9,0.15);color:var(--color-accent); }
html[data-theme="dark"] .prayerbook-related-badge { background:color-mix(in srgb, var(--color-accent) 15%, transparent);color:var(--color-accent); }

/* ── PLD-13: Chip wrapper with fade gradient ── */
.prayerbook-quick-wrapper { position:relative;overflow:hidden; }
.prayerbook-quick-wrapper::after { content:'';position:absolute;right:0;top:0;bottom:0;width:32px;background:linear-gradient(to right, transparent, var(--color-bg));pointer-events:none; }
html[data-theme="dark"] .prayerbook-quick-wrapper::after { background:linear-gradient(to right, transparent, var(--color-bg)); }

/* ── PLD-23: Intent-based discovery cards ── */
.prayerbook-intents { display:grid;grid-template-columns:repeat(3, 1fr);gap:var(--space-2);padding:var(--space-3) 0; }
.prayerbook-intent { padding:var(--space-3) var(--space-2);background:#fcfbf7;border:1px solid var(--color-border-light);border-radius:var(--radius-md);cursor:pointer;text-align:center;-webkit-tap-highlight-color:transparent;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);min-height:72px;justify-content:center;transition:border-color var(--transition-fast), background var(--transition-fast); }
.prayerbook-intent { padding:var(--space-3) var(--space-2);background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface));border:1px solid var(--color-border-light);border-radius:var(--radius-md);cursor:pointer;text-align:center;-webkit-tap-highlight-color:transparent;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);min-height:72px;justify-content:center;transition:border-color var(--transition-fast), background var(--transition-fast); }
.prayerbook-intent:active { transform:scale(0.97); }
.prayerbook-intent--active { background:var(--color-sacred-pale);border-color:var(--color-sacred);box-shadow:0 0 0 1px rgba(37,30,13,0.20); }
.prayerbook-intent--active { background:var(--color-sacred-pale);border-color:var(--color-sacred);box-shadow:0 0 0 1px color-mix(in srgb, var(--color-sacred) 20%, transparent); }
.prayerbook-intent-icon { width:24px;height:24px;color:var(--color-sacred-text); }
.prayerbook-intent-icon svg { width:24px;height:24px; }
.prayerbook-intent-label { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.prayerbook-intent--active .prayerbook-intent-label { color:var(--color-sacred-text); }
.prayerbook-intent-header { font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--color-heading);padding:var(--space-4) 0 var(--space-1); }
.prayerbook-intent-desc { font-family:var(--font-prayer);font-size:var(--text-xs);font-style:italic;color:var(--color-text-secondary);margin-bottom:var(--space-3);line-height:1.5; }
.prayerbook-intent-escape { display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-3) var(--space-4);margin-top:var(--space-3);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary);background:none;border:1px dashed var(--color-border);border-radius:var(--radius-md);cursor:pointer;min-height:44px;-webkit-tap-highlight-color:transparent; }
.prayerbook-intent-escape:active { background:var(--color-surface-hover); }
html[data-theme="dark"] .prayerbook-intent { background:#fbf9f3;border-color:var(--color-border); }
html[data-theme="dark"] .prayerbook-intent { background:color-mix(in srgb, var(--color-sacred) 6%, var(--color-surface));border-color:var(--color-border); }
html[data-theme="dark"] .prayerbook-intent--active { background:rgba(28,23,9,0.15);border-color:var(--color-sacred); }
html[data-theme="dark"] .prayerbook-intent--active { background:color-mix(in srgb, var(--color-sacred) 15%, transparent);border-color:var(--color-sacred); }
html[data-theme="dark"] .prayerbook-intent--active .prayerbook-intent-label { color:var(--color-sacred); }
html[data-theme="dark"] .prayerbook-intent-icon { color:var(--color-sacred); }
html[data-theme="dark"] .prayerbook-intent-escape { color:var(--color-primary);border-color:var(--color-border); }
.prayerbook-intents-toggle { display:block;width:100%;padding:var(--space-2) 0;font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);background:none;border:none;cursor:pointer;text-align:center;-webkit-tap-highlight-color:transparent; }
.prayerbook-intents-toggle:active { color:var(--color-text-secondary); }

/* Quick-jump: Essential + Guided split buttons */
.prayerbook-quickjump { display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);padding:var(--space-2) 0 var(--space-3); }
.prayerbook-quickjump-btn { display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-3);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-primary);cursor:pointer;min-height:44px;-webkit-tap-highlight-color:transparent;transition:border-color var(--transition-fast), background var(--transition-fast); }
.prayerbook-quickjump-btn:active { transform:scale(0.97); }
.prayerbook-quickjump-btn--active { background:var(--color-sacred-pale);border-color:var(--color-sacred);color:var(--color-sacred-text); }
.prayerbook-quickjump-icon { width:18px;height:18px;color:var(--color-sacred-text);flex-shrink:0; }
.prayerbook-quickjump-icon svg { width:18px;height:18px; }
html[data-theme="dark"] .prayerbook-quickjump-btn { background:var(--color-surface);border-color:var(--color-border); }
html[data-theme="dark"] .prayerbook-quickjump-btn--active { background:rgba(28,23,9,0.15);border-color:var(--color-sacred);color:var(--color-sacred); }
html[data-theme="dark"] .prayerbook-quickjump-btn--active { background:color-mix(in srgb, var(--color-sacred) 15%, transparent);border-color:var(--color-sacred);color:var(--color-sacred); }

/* ── PLD-15: Prayer reading view (bottom sheet) ── */
.prayer-sheet-scrim { position:absolute;inset:0;background:rgba(0,0,0,0.4);opacity:0;transition:opacity 200ms ease;display:none;z-index:50;-webkit-tap-highlight-color:transparent; }
.prayer-sheet-scrim--visible { opacity:1; }
.prayer-sheet { position:absolute;bottom:0;left:0;right:0;z-index:51;background:var(--color-surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;transform:translateY(100%);transition:transform 300ms cubic-bezier(0.32, 0.72, 0, 1);display:none;flex-direction:column;box-shadow:var(--shadow-elevated);overflow:hidden; }
.prayer-sheet--open { transform:translateY(0);display:flex; }
.prayer-sheet--brief { max-height:40vh; }
.prayer-sheet--standard { max-height:65vh; }
.prayer-sheet--long { max-height:85vh; }
.prayer-sheet--browse { height:80vh;max-height:80vh; }
.prayer-sheet--browse .prayer-sheet-text { text-align:center;font-size:var(--text-lg); }
.prayer-sheet--browse .prayer-sheet-title { font-size:var(--text-lg); }
.prayer-sheet-handle { width:40px;height:4px;background:var(--color-border);border-radius:2px;margin:var(--space-3) auto var(--space-2);flex-shrink:0; }
.prayer-sheet-header { text-align:center;padding:0 var(--space-5) var(--space-3);flex-shrink:0;position:relative; }
.prayer-sheet-title { font-family:var(--font-display);font-weight:700;color:var(--color-heading);letter-spacing:0.03em; }
.prayer-sheet--brief .prayer-sheet-title { font-size:var(--text-base); }
.prayer-sheet--standard .prayer-sheet-title { font-size:var(--text-lg); }
.prayer-sheet--long .prayer-sheet-title { font-size:var(--text-xl); }
.prayer-sheet-aka { font-family:var(--font-prayer);font-size:var(--text-xs);font-style:italic;color:var(--color-text-tertiary);margin-top:2px; }
.prayer-sheet-close { position:absolute;top:0;right:var(--space-3);width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--color-text-tertiary);-webkit-tap-highlight-color:transparent; }
.prayer-sheet-close:active { color:var(--color-text-secondary); }
.prayer-sheet-body { flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--space-3) var(--space-6) var(--space-8);position:relative;background:radial-gradient(ellipse at 50% 20%, rgba(9,8,3,0.05) 0%, transparent 70%); }
.prayer-sheet-body { flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--space-3) var(--space-6) var(--space-8);position:relative;background:radial-gradient(ellipse at 50% 20%, color-mix(in srgb, var(--color-sacred) 5%, transparent) 0%, transparent 70%); }
.prayer-sheet-text { font-family:var(--font-prayer);font-style:italic;color:var(--color-text-primary);line-height:1.85;opacity:0;transition:opacity 200ms ease 150ms; }
.prayer-sheet--open .prayer-sheet-text { opacity:1; }
.prayer-sheet--brief .prayer-sheet-text,
.prayer-sheet--standard .prayer-sheet-text { text-align:center;font-size:var(--text-lg); }
.prayer-sheet--long .prayer-sheet-text { text-align:left;font-size:var(--text-base); }
.prayer-sheet-text p { margin:0 0 var(--space-3); }
.prayer-sheet-fav { position:absolute;top:var(--space-2);right:var(--space-4);width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.prayer-sheet-footer { flex-shrink:0;padding:0 var(--space-6); }
.prayer-sheet-footer:empty { display:none; }
.prayer-sheet-browse-nav { display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) 0;border-top:1px solid var(--color-border-light); }
.prayer-sheet-browse-btn { display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-sacred-text);background:none;border:none;cursor:pointer;min-height:44px;-webkit-tap-highlight-color:transparent; }
.prayer-sheet-browse-btn:active { opacity:0.7; }
.prayer-sheet-browse-btn:disabled { color:var(--color-text-tertiary);cursor:default; }
.prayer-sheet-browse-btn:disabled:active { opacity:1; }
.prayer-sheet-browse-btn svg { width:16px;height:16px; }
.prayer-sheet-browse-count { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary); }
[data-text-size="large"] .prayer-sheet--brief .prayer-sheet-text,
[data-text-size="large"] .prayer-sheet--standard .prayer-sheet-text { font-size:calc(var(--text-lg) + 2px); }
[data-text-size="x-large"] .prayer-sheet--brief .prayer-sheet-text,
[data-text-size="x-large"] .prayer-sheet--standard .prayer-sheet-text { font-size:calc(var(--text-lg) + 4px); }
[data-text-size="large"] .prayer-sheet--long .prayer-sheet-text { font-size:calc(var(--text-base) + 2px); }
[data-text-size="x-large"] .prayer-sheet--long .prayer-sheet-text { font-size:calc(var(--text-base) + 4px); }
[data-text-size="large"] .prayer-sheet--browse .prayer-sheet-text { font-size:calc(var(--text-lg) + 2px); }
[data-text-size="x-large"] .prayer-sheet--browse .prayer-sheet-text { font-size:calc(var(--text-lg) + 4px); }
html[data-theme="dark"] .prayer-sheet { box-shadow:0 -4px 24px rgba(0,0,0,0.5);background:var(--color-surface); }
html[data-theme="dark"] .prayer-sheet-scrim { background:rgba(0,0,0,0.6); }
html[data-theme="dark"] .prayer-sheet-body { background:radial-gradient(ellipse at 50% 20%, rgba(15,12,5,0.08) 0%, transparent 70%); }
html[data-theme="dark"] .prayer-sheet-body { background:radial-gradient(ellipse at 50% 20%, color-mix(in srgb, var(--color-sacred) 8%, transparent) 0%, transparent 70%); }
html[data-theme="dark"] .prayer-sheet-browse-nav { border-top-color:var(--color-border); }
html[data-theme="dark"] .prayer-sheet-browse-btn { color:var(--color-sacred); }
html[data-theme="dark"] .prayer-sheet-browse-btn:disabled { color:var(--color-text-tertiary); }
@media (min-width: 768px) {
  .prayer-sheet { max-width:min(480px, 90vw);left:50%;right:auto;transform:translateX(-50%) translateY(100%);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:0 -8px 40px rgba(0,0,0,0.15); }
  .prayer-sheet--open { transform:translateX(-50%) translateY(0); }
  .prayer-sheet-scrim { background:rgba(0,0,0,0.3);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px); }
}

html[data-theme="dark"] .litany-progress { background:var(--color-border); }

.seasonal-nudge { font-size:var(--text-sm);color:var(--color-text-secondary);font-style:italic;margin-bottom:var(--space-3);line-height:1.5; }

/* SEASONAL MOMENT ZONE (SOT-01) */
#seasonalMoment:empty { display:none; }
#seasonalMoment { padding:var(--space-2) 0; }
.seasonal-card { background:var(--color-surface);border:1px solid var(--color-border-light);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);overflow:hidden;-webkit-tap-highlight-color:transparent;transition:box-shadow 0.15s; }
.seasonal-card + .seasonal-card { margin-top:var(--space-2); }
.seasonal-card summary { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);cursor:pointer;list-style:none;min-height:48px; }
.seasonal-card summary::-webkit-details-marker { display:none; }
.seasonal-card summary:active { transform:scale(0.98); }
.seasonal-card-icon { width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--color-accent-pale);color:var(--color-accent); }
.seasonal-card-icon svg { width:18px;height:18px; }
.seasonal-card-body { flex:1;min-width:0; }
.seasonal-card-title { font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.seasonal-card-subtitle { font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:2px;line-height:1.3; }
.seasonal-card-chevron { width:16px;height:16px;color:var(--color-text-tertiary);flex-shrink:0;transition:transform 0.2s; }
.seasonal-card[open] .seasonal-card-chevron { transform:rotate(180deg); }
.seasonal-card-expanded { padding:var(--space-3) var(--space-4) var(--space-4);border-top:1px solid var(--color-border-light);font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.75;max-height:280px;overflow-y:auto; }
.seasonal-card-expanded p { margin-bottom:var(--space-3); }
.seasonal-card-expanded p:last-child { margin-bottom:0; }
.seasonal-card-action { display:inline-flex;align-items:center;gap:var(--space-2);margin-top:var(--space-3);color:var(--color-info);font-family:var(--font-body);font-weight:var(--weight-semibold);font-size:var(--text-sm);cursor:pointer; }
html[data-theme="dark"] .seasonal-card { background:var(--color-surface);border-color:var(--color-border-light);border-left-color:var(--color-accent); }
.seasonal-card--fav { background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md);transition:background 0.15s; }
.seasonal-card--fav:active { background:var(--color-surface-hover); }
html[data-theme="dark"] .seasonal-card--fav { border-color:var(--color-border); }

/* DEVOTIONAL CARDS */
.devot-card { border: 1px solid var(--color-border-light); border-radius: var(--radius-md); margin-bottom: var(--space-3); overflow: hidden; background: var(--color-surface); transition: border-left-color var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast); }
.devot-card:last-child { margin-bottom: 0; }
.devot-card summary { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4); cursor: pointer; list-style: none; font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-primary); min-height: 56px; -webkit-tap-highlight-color: transparent; }
.devot-card summary::-webkit-details-marker { display: none; }
.devot-header { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4); font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-primary); min-height: 56px; }
.devot-title { flex: 1; }
.devot-chevron { width: 18px; height: 18px; color: var(--color-text-tertiary); transition: transform 0.2s; flex-shrink: 0; }
.devot-card[open] .devot-chevron { transform: rotate(180deg); }
.devot-icon { width:36px;height:36px;border-radius:var(--radius-sm);background:var(--color-sacred-pale);display:flex;align-items:center;justify-content:center;flex-shrink:0; }
.devot-icon svg { width:18px;height:18px;color:var(--color-sacred-text); }
html[data-theme="dark"] .devot-icon { background:var(--color-sacred-pale); }
.devot-card[open] { border-left:3px solid var(--color-sacred);background:linear-gradient(135deg, var(--color-sacred-pale) 0%, var(--color-surface) 60%);box-shadow:var(--shadow-card-hover); }
html[data-theme="dark"] .devot-card[open] { background:linear-gradient(135deg, rgba(11,9,4,0.06) 0%, var(--color-surface) 40%);box-shadow:var(--shadow-card-hover);border-left-color:var(--color-sacred); }
html[data-theme="dark"] .devot-card[open] { background:linear-gradient(135deg, color-mix(in srgb, var(--color-sacred) 6%, transparent) 0%, var(--color-surface) 40%);box-shadow:var(--shadow-card-hover);border-left-color:var(--color-sacred); }
html[data-theme="dark"] .devot-card[open] .conf-exam-body { color:var(--color-text-secondary); }
html[data-theme="dark"] .devot-card[open] .conf-exam-body p { color:var(--color-text-primary); }
/* Seasonal guide pinned to top */
.devot-card--seasonal { border-left:3px solid var(--color-accent);background:linear-gradient(135deg, var(--color-accent-pale) 0%, var(--color-surface) 80%); }
.devot-card--seasonal .devot-icon { background:rgba(28,23,9,0.15); }
.devot-card--seasonal .devot-icon { background:color-mix(in srgb, var(--color-accent) 15%, transparent); }
html[data-theme="dark"] .devot-card--seasonal { background:linear-gradient(135deg, rgba(7,6,3,0.04) 0%, var(--color-surface) 60%);border-left-color:var(--color-accent); }
html[data-theme="dark"] .devot-card--seasonal { background:linear-gradient(135deg, color-mix(in srgb, var(--color-accent) 4%, transparent) 0%, var(--color-surface) 60%);border-left-color:var(--color-accent); }
.devot-body { padding: 0 var(--space-4) var(--space-5); font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.75; }
.devot-body p { margin-bottom: var(--space-3); }
.devot-body p:last-child { margin-bottom: 0; }
.devot-body strong { color: var(--color-text-primary); font-weight: var(--weight-semibold); }
.devot-body ol { padding-left: var(--space-5); margin-bottom: var(--space-3); }
.devot-body ol li { margin-bottom: var(--space-2); }
.devot-body ul { padding-left: var(--space-5); margin-bottom: var(--space-3); }
.devot-body ul li { margin-bottom: var(--space-2); }
.devot-body blockquote { font-family:var(--font-prayer);font-style:italic;line-height:1.8; }
.devot-body .devot-prayer-inline { font-family: var(--font-prayer); font-style: italic; line-height: 1.8; }
/* AGC-01: At a Glance orientation card */
.devot-glance { font-family:var(--font-body);font-size:var(--text-sm);line-height:1.65;color:var(--color-text-secondary);background:color-mix(in srgb, var(--color-sacred) 6%, transparent);border-left:3px solid var(--color-sacred);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4); }
.devot-glance strong { color:var(--color-text-primary);font-weight:var(--weight-semibold); }
html[data-theme="dark"] .devot-glance { background:color-mix(in srgb, var(--color-sacred) 8%, transparent);border-left-color:var(--color-sacred); }
/* FGR-08: Info callout variant */
.reader-guide-tip { font-family:var(--font-body);font-size:var(--text-sm);line-height:1.65;color:var(--color-text-secondary);background:color-mix(in srgb, var(--color-info) 6%, transparent);border-left:3px solid var(--color-info);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4); }
.reader-guide-tip strong { color:var(--color-text-primary);font-weight:var(--weight-semibold); }
html[data-theme="dark"] .reader-guide-tip { background:color-mix(in srgb, var(--color-info) 8%, transparent); }
/* Reader guide overlay — used by confession/adoration/latin guides when opened from filter hints */
.reader-guide { max-width:540px;margin:0 auto;padding:var(--space-2) var(--space-4) var(--space-6); }
.reader-guide-body { font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.75; }
.reader-guide-body p { margin-bottom:var(--space-3); }
.reader-guide-body p:last-child { margin-bottom:0; }
.reader-guide-body p:first-of-type { font-size:var(--text-base);color:var(--color-text-primary);line-height:1.65; }
.reader-guide-body strong { color:var(--color-text-primary);font-weight:var(--weight-semibold); }
.reader-guide-body ul,.reader-guide-body ol { padding-left:var(--space-5);margin-bottom:var(--space-3); }
.reader-guide-body ul li,.reader-guide-body ol li { margin-bottom:var(--space-2); }
.reader-guide-body blockquote { font-family:var(--font-prayer);font-style:italic;line-height:1.8;margin:var(--space-4) 0;padding-left:var(--space-4);border-left:3px solid var(--color-sacred);color:var(--color-text-secondary); }
.reader-guide-body em { color:var(--color-text-primary); }
/* FGR-04: Reader guide headings */
.reader-guide-body h3 { font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);margin:var(--space-5) 0 var(--space-2) 0;letter-spacing:0.01em;line-height:1.4; }
.reader-guide-body h3:first-child { margin-top:0; }
/* FGR-06: List treatment */
.reader-guide-body ul { list-style-type:disc; }
.reader-guide-body ol { list-style-type:decimal; }
.reader-guide-body li { padding-left:var(--space-1);line-height:1.65; }
.reader-guide-body li strong { color:var(--color-text-primary);font-weight:var(--weight-semibold); }
/* FGR-09: Inline links in reader context */
.reader-guide-body .devot-inline-link { color:var(--color-info);font-weight:var(--weight-semibold);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.reader-guide-body .devot-inline-link:active { opacity:0.7; }
.reader-guide-body details { margin:var(--space-4) 0;border:1px solid var(--color-border-light);border-radius:var(--radius-md);overflow:hidden; }
.reader-guide-body details summary { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);font-weight:var(--weight-semibold);color:var(--color-text-primary);font-size:var(--text-sm);cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent;min-height:48px;background:var(--color-surface-hover); }
.reader-guide-body details summary::-webkit-details-marker { display:none; }
/* FGR-07: Chevron animation + summary tinting */
.reader-guide-body details summary svg { flex-shrink:0;width:16px;height:16px;color:var(--color-text-tertiary);transition:transform 0.2s ease; }
.reader-guide-body details[open] summary svg { transform:rotate(180deg); }
.reader-guide-body details[open] summary { border-bottom:1px solid var(--color-border-light); }
.reader-guide-body details .devot-expand,.reader-guide-body details .conf-exam-body,.reader-guide-body details > p { padding:var(--space-3) var(--space-4); }
.reader-guide-cta { display:block;width:100%;padding:var(--space-3) var(--space-4);background:var(--color-primary);color:white;border:none;border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;min-height:48px;margin-top:var(--space-6);transition:background var(--transition-fast), transform 0.1s ease;-webkit-tap-highlight-color:transparent; }
.reader-guide-cta:active { transform:scale(0.98); }
/* FGN-01: Browse all guides link */
.fg-browse-link {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-6);
  padding: var(--space-3) 0;
  border-top: 1px solid var(--color-border-light);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-info);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.fg-browse-link:active { opacity: 0.7; }
.fg-browse-link svg { flex-shrink: 0; color: var(--color-info); }
html[data-theme="dark"] .fg-browse-link { border-top-color: var(--color-border); }
html[data-theme="dark"] .reader-guide-body p:first-of-type { color:var(--color-text-primary); }
html[data-theme="dark"] .reader-guide-body details { border-color:var(--color-border); }
html[data-theme="dark"] .reader-guide-body details summary { background:color-mix(in srgb, var(--color-surface-hover) 80%, transparent); }
html[data-theme="dark"] .reader-guide-body details[open] summary { border-bottom-color:var(--color-border); }
.devot-find-link { display: inline-flex; align-items: center; gap: var(--space-2); margin-top: var(--space-3); color: var(--color-info); font-weight: var(--weight-semibold); cursor: pointer; font-size: var(--text-sm); }
.devot-group-body { padding: var(--space-3) var(--space-4) var(--space-4); background: var(--color-bg); border-top: 1px solid var(--color-border-light); }
.devot-sub { margin-bottom: var(--space-2); border: 1px solid var(--color-border-light); border-radius: var(--radius-md); overflow: hidden; }
.devot-sub:last-child { margin-bottom: 0; }
.devot-sub summary { padding: var(--space-3) var(--space-4); min-height: 44px; background: var(--color-surface-hover); }
.devot-sub[open] summary { border-bottom: 1px solid var(--color-border-light); }
.devot-sub .devot-body { padding: var(--space-3) var(--space-4) var(--space-4); }
.devot-show-all { display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-3) var(--space-4);margin-top:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary);background:none;border:1px dashed var(--color-border);border-radius:var(--radius-md);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:44px; }
.devot-show-all:active { background:var(--color-surface-hover); }
.devot-show-all svg { color:var(--color-text-tertiary);transition:transform 0.2s; }
html[data-theme="dark"] .devot-show-all { color:var(--color-primary);border-color:var(--color-border); }

/* UX-07: Term Definition Popovers */
.term-trigger { color:var(--color-primary);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.term-trigger:hover { text-decoration-style:solid; }
.term-popover { position:fixed;z-index:var(--z-reader-modal);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-elevated,0 8px 32px rgba(0,0,0,0.18));max-width:320px;font-size:var(--text-sm);line-height:1.6;animation:termFadeIn 0.15s ease; }
@keyframes termFadeIn { from { opacity:0;transform:translateY(4px); } to { opacity:1;transform:translateY(0); } }
.term-popover-word { display:block;font-weight:var(--weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-1);font-size:var(--text-base); }
.term-popover-def { color:var(--color-text-secondary); }
html[data-theme="dark"] .term-popover { background:var(--color-surface);border-color:var(--color-border);box-shadow:0 8px 32px rgba(0,0,0,0.5); }

/* WHAT'S HAPPENING — two-column equal layout */
.wh-grid { display: grid; grid-template-columns: 1fr 1px 1fr; gap: 0 var(--space-4); margin-top: var(--space-2); }
.wh-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); margin-top: var(--space-2); }
/* two-column always — no mobile stacking */
.wh-divider { background: var(--color-border-light); }
.wh-col { min-width: 0; }
/* YC badge in unified event list */
.evt-yc-badge { display:inline-block;font-size:10px;font-weight:var(--weight-semibold);color:var(--color-sacred-text);background:var(--color-sacred-pale);padding:1px 5px;border-radius:var(--radius-sm);vertical-align:middle;margin-left:var(--space-1); }
.wh-col-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-3); padding-bottom: var(--space-2); border-bottom: 2px solid var(--color-border-light); }
.wh-col-label { font-size: var(--text-xs); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: 0.06em; }
.wh-col-label.yc-label { color: var(--color-sacred-text); }
.wh-col-label.community-label { color: var(--color-primary); }
.wh-col-seeall { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-info); }
.wh-event-card { padding: var(--space-3) 0; border-bottom: 1px solid var(--color-border-light); cursor: pointer; transition: background var(--transition-fast); }
.wh-event-card:last-child { border-bottom: none; }
.wh-event-card:hover { background: var(--color-surface-hover); margin: 0 calc(-1 * var(--space-2)); padding-left: var(--space-2); padding-right: var(--space-2); border-radius: var(--radius-sm); }
.wh-event-date { font-size: 11px; font-weight: var(--weight-semibold); color: var(--color-sacred-text); margin-bottom: 2px; }
.wh-event-title { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-primary); line-height: 1.3; margin-bottom: 2px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.wh-event-church { font-size: var(--text-xs); color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wh-event-time { font-size: var(--text-xs); color: var(--color-text-tertiary); margin-top: 2px; }
.wh-event-fav { display: inline-flex; align-items: center; gap: 2px; font-size: 10px; color: var(--color-fav); font-weight: var(--weight-semibold); margin-bottom: 2px; }
.wh-event-near { font-size: 10px; color: var(--color-info); font-weight: var(--weight-semibold); margin-bottom: 2px; }
.wh-empty { font-size: var(--text-xs); color: var(--color-text-tertiary); font-style: italic; }
.fb-type-grid { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-3); }
.fb-type-btn { padding: var(--space-2) var(--space-3); border: 1.5px solid var(--color-border); border-radius: var(--radius-full); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--color-text-secondary); background: var(--color-surface); transition: all var(--transition-fast); min-height: 40px; }
.fb-type-btn.selected { background: var(--color-primary); color: white; border-color: var(--color-primary); }
.fb-submit { width: 100%; padding: var(--space-3); border-radius: var(--radius-md); background: var(--color-primary); color: white; font-size: var(--text-sm); font-weight: var(--weight-semibold); min-height: 44px; margin-top: var(--space-3); transition: opacity var(--transition-fast); }
.fb-submit:disabled { opacity: 0.5; }
.fb-thanks { text-align: center; padding: var(--space-4); font-size: var(--text-sm); color: var(--color-verified); font-weight: var(--weight-medium); display: none; }

/* SCHEDULE LOCATION BADGE (multi-location detail panel) */
.schedule-loc-badge { display: inline-flex; align-items: center; font-size: 11px; font-weight: var(--weight-semibold); color: var(--color-primary); background: var(--color-info-bg); border: 1px solid rgba(52,120,198,0.2); padding: 2px 8px; border-radius: var(--radius-full); margin-top: 3px; }

/* WORSHIP SITES SECTION (multi-location detail panel) */
.loc-sites { margin: var(--space-3) 0; }
.loc-sites-hdr { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-2); }
.loc-sites-title { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: 0.05em; }
.loc-site-card { display: flex; align-items: center; justify-content: space-between; padding: var(--space-3) var(--space-4); background: var(--color-info-bg); border-radius: var(--radius-md); margin-bottom: var(--space-2); }
.loc-site-card:last-child { margin-bottom: 0; }
.loc-site-info { flex: 1; min-width: 0; }
.loc-site-name { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-primary); }
.loc-site-addr { font-size: var(--text-xs); color: var(--color-text-secondary); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.loc-site-dir { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: var(--radius-full); background: white; border: 1px solid var(--color-border-light); flex-shrink: 0; margin-left: var(--space-3); color: var(--color-primary); transition: background var(--transition-fast); text-decoration: none; }
.loc-site-dir:hover { background: var(--color-surface-hover); }

/* STL-05: Saint card CSS removed — saint info is in the Missal reader */

/* STL-05: Threshold card CSS removed — content now in the Missal reader */


/* LITURGICAL SEASON — ambient accent color (app-wide) */
:root[data-season="lent"]     { --color-accent:#7C3AED;--color-accent-text:#5C6170;--color-accent-light:#9C67F5;--color-accent-pale:#F7F5FA; }
:root[data-season="advent"]   { --color-accent:#7C3AED;--color-accent-text:#5C6170;--color-accent-light:#9C67F5;--color-accent-pale:#F7F5FA; }
:root[data-season="easter"]   { --color-accent:#D97706;--color-accent-text:#B45309;--color-accent-light:#F59E0B;--color-accent-pale:#FBF9F3; }
:root[data-season="christmas"]{ --color-accent:#D97706;--color-accent-text:#B45309;--color-accent-light:#F59E0B;--color-accent-pale:#FBF9F3; }
:root[data-season="ordinary"] { --color-accent:#16A34A;--color-accent-text:#15803D;--color-accent-light:#4ADE80;--color-accent-pale:#F5F8F5; }

/* ── SAC-07: Seasonal atmospheric tinting ── */
:root { --color-accent-tint: transparent; }
:root[data-season="lent"]     { --color-accent-tint: rgba(92,75,32,0.50); }
:root[data-season="lent"]     { --color-accent-tint: color-mix(in srgb, var(--color-accent) 1.5%, transparent); }
:root[data-season="advent"]   { --color-accent-tint: rgba(92,75,32,0.50); }
:root[data-season="advent"]   { --color-accent-tint: color-mix(in srgb, var(--color-accent) 1.5%, transparent); }
:root[data-season="easter"]   { --color-accent-tint: rgba(4,3,1,0.02); }
:root[data-season="easter"]   { --color-accent-tint: color-mix(in srgb, var(--color-sacred) 2%, transparent); }
:root[data-season="christmas"]{ --color-accent-tint: rgba(4,3,1,0.02); }
:root[data-season="christmas"]{ --color-accent-tint: color-mix(in srgb, var(--color-sacred) 2%, transparent); }
:root[data-season="ordinary"] { --color-accent-tint: transparent; }

/* SLV-04: Seasonal emotional temperature — timing overrides */
:root[data-season="lent"],
:root[data-season="advent"] {
  --transition-fast: 180ms var(--ease-out);
  --transition-base: 300ms var(--ease-out);
}
:root[data-season="easter"],
:root[data-season="christmas"] {
  --transition-fast: 130ms cubic-bezier(0.34, 1.56, 0.64, 1);
  --transition-base: 220ms cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* SLV-01: Body seasonal gradient transition (DSN-346: synced to 200ms for toggle parity) */
body { transition: background-color 200ms ease, color 200ms ease; }
.tab-bar { transition: background-color 200ms ease, box-shadow 200ms ease; }
/* LITURGICAL SEASON — ambient background wash */
:root[data-season="lent"] body     { background:linear-gradient(180deg, #F8F7F4 0%, #F5F3F7 100%); }
:root[data-season="advent"] body   { background:linear-gradient(180deg, #F8F7F4 0%, #F5F3F7 100%); }
:root[data-season="easter"] body   { background:linear-gradient(180deg, #F8F7F4 0%, #F8F7F2 100%); }
:root[data-season="christmas"] body{ background:linear-gradient(180deg, #F8F7F4 0%, #F8F7F2 100%); }

/* LITURGICAL SEASON — header accent bar removed (season expresses via body gradient, card accents, transitions) */

/* ── Sacred Pause — shared contemplative overlay (SLV-07) ── */
.sacred-pause { position:fixed;inset:0;z-index:var(--z-sacred-pause);display:flex;align-items:center;justify-content:center;background:var(--color-bg);opacity:1;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.sacred-pause.dismissing { animation:none;opacity:0;transition:opacity 0.8s ease-in-out;pointer-events:none; }
.sacred-pause-content { text-align:center;padding:var(--space-8);max-width:340px; }
.sacred-pause-label { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:0.12em;text-transform:uppercase;color:var(--color-accent);margin-bottom:var(--space-4);opacity:0;animation:sacredPauseText 0.5s ease-out 0.2s forwards; }
.sacred-pause-title { font-family:var(--font-display);font-size:var(--text-3xl);font-weight:var(--weight-bold);color:var(--color-text-primary);line-height:1.2;margin-bottom:var(--space-4);letter-spacing:0.015em;opacity:0;animation:sacredPauseText 0.5s ease-out 0.35s forwards; }
.sacred-pause-message { font-family:var(--font-prayer);font-size:var(--text-lg);font-style:italic;color:var(--color-text-secondary);line-height:1.5;white-space:pre-line;opacity:0;animation:sacredPauseText 0.5s ease-out 0.5s forwards; }
@keyframes sacredPauseText { from { opacity:0;transform:translateY(6px); } to { opacity:1;transform:translateY(0); } }
/* Seasonal backgrounds */
:root[data-season="lent"] .sacred-pause,
:root[data-season="advent"] .sacred-pause { background:linear-gradient(180deg, var(--color-bg) 0%, #F5F3F7 100%); }
:root[data-season="easter"] .sacred-pause,
:root[data-season="christmas"] .sacred-pause { background:linear-gradient(180deg, var(--color-bg) 0%, #FBF9F3 100%); }
:root[data-season="ordinary"] .sacred-pause { background:linear-gradient(180deg, var(--color-bg) 0%, #F5F8F5 100%); }
html[data-theme="dark"][data-season="lent"] .sacred-pause,
html[data-theme="dark"][data-season="advent"] .sacred-pause { background:linear-gradient(180deg, var(--color-bg) 0%, #1C1A22 100%); }
html[data-theme="dark"][data-season="easter"] .sacred-pause,
html[data-theme="dark"][data-season="christmas"] .sacred-pause { background:linear-gradient(180deg, var(--color-bg) 0%, #1E1C18 100%); }
html[data-theme="dark"][data-season="ordinary"] .sacred-pause { background:linear-gradient(180deg, var(--color-bg) 0%, #1A1E1A 100%); }

/* ── OBW: First-Launch Onboarding Walkthrough ── */
.ob-overlay { position:fixed;inset:0;z-index:var(--z-onboarding);background:rgba(211,210,207,0.85);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 0.5s ease, backdrop-filter 0.6s ease, -webkit-backdrop-filter 0.6s ease; }
.ob-overlay { position:fixed;inset:0;z-index:var(--z-onboarding);background:color-mix(in srgb, var(--color-bg) 85%, transparent);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 0.5s ease, backdrop-filter 0.6s ease, -webkit-backdrop-filter 0.6s ease; }
.ob-overlay.open { opacity:1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px); }
.ob-overlay.dismissing { opacity:0;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);transition:opacity 0.5s ease, backdrop-filter 0.4s ease, -webkit-backdrop-filter 0.4s ease;pointer-events:none; }
/* Per-step gradient shift — warm gold → rose → navy → green */
.ob-overlay[data-ob-step="0"] { background:radial-gradient(ellipse 80% 60% at 50% 40%, #f4f1e9 0%, var(--color-bg) 100%); }
.ob-overlay[data-ob-step="0"] { background:radial-gradient(ellipse 80% 60% at 50% 40%, color-mix(in srgb, var(--color-sacred) 6%, var(--color-bg)) 0%, var(--color-bg) 100%); }
.ob-overlay[data-ob-step="1"] { background:radial-gradient(ellipse 80% 60% at 50% 40%, #f7eeed 0%, var(--color-bg) 100%); }
.ob-overlay[data-ob-step="1"] { background:radial-gradient(ellipse 80% 60% at 50% 40%, color-mix(in srgb, var(--color-fav) 4%, var(--color-bg)) 0%, var(--color-bg) 100%); }
.ob-overlay[data-ob-step="2"] { background:radial-gradient(ellipse 80% 60% at 50% 40%, #eeeeec 0%, var(--color-bg) 100%); }
.ob-overlay[data-ob-step="2"] { background:radial-gradient(ellipse 80% 60% at 50% 40%, color-mix(in srgb, var(--color-primary) 5%, var(--color-bg)) 0%, var(--color-bg) 100%); }
.ob-overlay[data-ob-step="3"] { background:radial-gradient(ellipse 80% 60% at 50% 40%, #eff1ec 0%, var(--color-bg) 100%); }
.ob-overlay[data-ob-step="3"] { background:radial-gradient(ellipse 80% 60% at 50% 40%, color-mix(in srgb, var(--color-verified) 5%, var(--color-bg)) 0%, var(--color-bg) 100%); }
.ob-container { width:100%;max-width:400px;padding:var(--space-6) var(--space-5);padding-bottom:calc(var(--tab-bar-height) + var(--safe-bottom) + var(--space-6));text-align:center;position:relative; }
/* Floating background orbs */
.ob-container::before,.ob-container::after { content:'';position:fixed;border-radius:50%;pointer-events:none;animation:obFloat 12s ease-in-out infinite; }
.ob-container::before { width:180px;height:180px;background:radial-gradient(circle, rgba(9,8,3,0.05) 0%, transparent 70%);top:10%;right:-40px; }
.ob-container::before { width:180px;height:180px;background:radial-gradient(circle, color-mix(in srgb, var(--color-sacred) 5%, transparent) 0%, transparent 70%);top:10%;right:-40px; }
.ob-container::after { width:120px;height:120px;background:radial-gradient(circle, rgba(2,2,4,0.04) 0%, transparent 70%);bottom:15%;left:-30px;animation-delay:4s; }
.ob-container::after { width:120px;height:120px;background:radial-gradient(circle, color-mix(in srgb, var(--color-primary) 4%, transparent) 0%, transparent 70%);bottom:15%;left:-30px;animation-delay:4s; }
@keyframes obFloat { 0%,100% { opacity:0.4;transform:translateY(0) scale(1); } 25% { opacity:0.7;transform:translateY(-15px) scale(1.05); } 50% { opacity:0.5;transform:translateY(-8px) scale(0.98); } 75% { opacity:0.6;transform:translateY(-20px) scale(1.03); } }
.ob-skip { position:absolute;top:calc(-1 * var(--space-8));right:0;font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-tertiary);background:none;border:none;padding:var(--space-3);min-height:44px;min-width:44px;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.ob-skip:hover { color:var(--color-text-secondary); }
/* Content area — children animate themselves */
.ob-content { display:flex;flex-direction:column;align-items:center;min-height:280px;justify-content:center; }
.ob-content.exiting { opacity:0;transform:translateY(-6px) scale(0.96);transition:opacity 0.25s ease, transform 0.25s ease; }
/* Staggered child entrance — sacred pause pattern */
.ob-content:not(.exiting) .ob-illustration { opacity:0;animation:obElementIn 0.5s ease-out 0.1s forwards; }
.ob-content:not(.exiting) .ob-headline { opacity:0;animation:obElementIn 0.5s ease-out 0.35s forwards; }
.ob-content:not(.exiting) .ob-subtitle { opacity:0;animation:obElementIn 0.5s ease-out 0.55s forwards; }
@keyframes obElementIn { from { opacity:0;transform:translateY(8px); } to { opacity:1;transform:translateY(0); } }
/* First step — bouncy grand entrance */
.ob-overlay[data-ob-step="0"] .ob-content:not(.exiting) .ob-illustration { animation:obFirstEntrance 0.7s cubic-bezier(0.34,1.56,0.64,1) 0.2s forwards; }
@keyframes obFirstEntrance { from { opacity:0;transform:scale(0.7) translateY(12px); } to { opacity:1;transform:scale(1) translateY(0); } }
/* Illustration — elevated with glow + concentric rings */
.ob-illustration { width:120px;height:120px;border-radius:50%;background:var(--color-sacred-pale);display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-5);flex-shrink:0;position:relative;box-shadow:0 0 24px rgba(22,18,8,0.12); }
.ob-illustration { width:120px;height:120px;border-radius:50%;background:var(--color-sacred-pale);display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-5);flex-shrink:0;position:relative;box-shadow:0 0 24px color-mix(in srgb, var(--color-sacred) 12%, transparent); }
.ob-illustration::before,.ob-illustration::after { content:'';position:absolute;inset:-8px;border-radius:50%;border:1.5px solid rgba(28,23,9,0.15);animation:obRingPulse 3s ease-in-out infinite;pointer-events:none; }
.ob-illustration::before,.ob-illustration::after { content:'';position:absolute;inset:-8px;border-radius:50%;border:1.5px solid color-mix(in srgb, var(--color-sacred) 15%, transparent);animation:obRingPulse 3s ease-in-out infinite;pointer-events:none; }
.ob-illustration::after { inset:-20px;border-color:rgba(15,12,5,0.08);animation-delay:0.75s; }
.ob-illustration::after { inset:-20px;border-color:color-mix(in srgb, var(--color-sacred) 8%, transparent);animation-delay:0.75s; }
@keyframes obRingPulse { 0%,100% { transform:scale(1);opacity:0.7; } 50% { transform:scale(1.08);opacity:0.3; } }
/* Install step green rings */
.ob-illustration.ob-install::before,.ob-illustration.ob-install::after { border-color:rgba(11,19,13,0.15); }
.ob-illustration.ob-install::before,.ob-illustration.ob-install::after { border-color:color-mix(in srgb, var(--color-verified) 15%, transparent); }
.ob-illustration.ob-install::after { border-color:rgba(6,10,7,0.08); }
.ob-illustration.ob-install::after { border-color:color-mix(in srgb, var(--color-verified) 8%, transparent); }
/* SVG draw-on animation */
.ob-illustration svg { width:44px;height:44px;stroke:var(--color-sacred);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;fill:none;stroke-dasharray:200;stroke-dashoffset:200; }
.ob-content:not(.exiting) .ob-illustration svg { animation:obDrawOn 0.8s ease-out 0.15s forwards; }
@keyframes obDrawOn { to { stroke-dashoffset:0; } }
.ob-illustration.ob-install { background:var(--color-verified-bg);box-shadow:0 0 24px rgba(9,15,11,0.12); }
.ob-illustration.ob-install { background:var(--color-verified-bg);box-shadow:0 0 24px color-mix(in srgb, var(--color-verified) 12%, transparent); }
.ob-illustration.ob-install svg { stroke:var(--color-verified); }
.ob-headline { font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.35;margin-bottom:var(--space-2);letter-spacing:0.01em;max-width:280px; }
.ob-subtitle { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.55;max-width:260px; }
/* Footer: dots + buttons */
.ob-footer { display:flex;flex-direction:column;align-items:center;gap:var(--space-3);margin-top:var(--space-6); }
.ob-dots { display:flex;justify-content:center;gap:var(--space-2); }
.ob-dot { width:8px;height:8px;border-radius:50%;background:var(--color-border);transition:background 0.3s ease, width 0.3s ease, border-radius 0.3s ease; }
.ob-dot.active { background:var(--color-primary);width:24px;border-radius:4px;box-shadow:0 0 8px rgba(9,12,18,0.20); }
.ob-dot.active { background:var(--color-primary);width:24px;border-radius:4px;box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 20%, transparent); }
.ob-dot.done { background:#9ba0a8;animation:obDotDone 0.3s cubic-bezier(0.34,1.56,0.64,1); }
.ob-dot.done { background:color-mix(in srgb, var(--color-primary) 40%, var(--color-border));animation:obDotDone 0.3s cubic-bezier(0.34,1.56,0.64,1); }
@keyframes obDotDone { 0% { transform:scale(1); } 50% { transform:scale(1.4); } 100% { transform:scale(1); } }
.ob-btn { width:100%;max-width:320px;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:var(--font-body); }
.ob-btn:active { transform:scale(0.98); }
.ob-btn-primary { min-height:48px;border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-text-inverse);font-size:var(--text-sm);font-weight:var(--weight-semibold);transition:background 0.3s ease, transform 0.1s ease;box-shadow:0 2px 8px rgba(44,62,90,0.12); }
.ob-btn-primary.ob-btn-accent { background:var(--color-sacred);animation:obBtnGlow 2.5s ease-in-out infinite; }
@keyframes obBtnGlow { 0%,100% { box-shadow:0 2px 8px rgba(184,150,63,0.15); } 50% { box-shadow:0 4px 20px rgba(184,150,63,0.3), 0 0 40px rgba(184,150,63,0.08); } }
.ob-btn-ghost { min-height:44px;border-radius:var(--radius-md);background:transparent;color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:var(--weight-medium);transition:color 0.15s ease; }
.ob-btn-ghost:hover { color:var(--color-text-primary); }
/* OBW dark mode */
html[data-theme="dark"] .ob-illustration { background:var(--color-sacred-pale); }
html[data-theme="dark"] .ob-illustration svg { stroke:var(--color-sacred); }
html[data-theme="dark"] .ob-illustration.ob-install { background:var(--color-verified-bg); }
html[data-theme="dark"] .ob-illustration.ob-install svg { stroke:var(--color-verified); }
html[data-theme="dark"] .ob-dot.active { background:var(--color-primary);box-shadow:0 0 8px rgba(11,16,23,0.25); }
html[data-theme="dark"] .ob-dot.active { background:var(--color-primary);box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 25%, transparent); }
html[data-theme="dark"] .ob-dot.done { background:#89909b; }
html[data-theme="dark"] .ob-dot.done { background:color-mix(in srgb, var(--color-primary) 50%, var(--color-border)); }
html[data-theme="dark"] .ob-btn-primary { background:var(--color-primary); }
html[data-theme="dark"] .ob-btn-primary.ob-btn-accent { background:var(--color-sacred);animation:obBtnGlowDark 2.5s ease-in-out infinite; }
@keyframes obBtnGlowDark { 0%,100% { box-shadow:0 2px 8px rgba(212,168,75,0.2); } 50% { box-shadow:0 4px 20px rgba(212,168,75,0.35), 0 0 40px rgba(212,168,75,0.12); } }
/* OBW desktop */
@media (min-width: 769px) {
  .ob-overlay[data-ob-step="0"],.ob-overlay[data-ob-step="1"],.ob-overlay[data-ob-step="2"],.ob-overlay[data-ob-step="3"] { background:rgba(26,30,38,0.35);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px); }
  .ob-container { background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-elevated);max-width:440px;padding:var(--space-8) var(--space-6);padding-bottom:var(--space-8); }
  .ob-skip { top:var(--space-2);right:var(--space-2); }
}
@media (min-width: 769px) {
  html[data-theme="dark"] .ob-overlay[data-ob-step="0"],html[data-theme="dark"] .ob-overlay[data-ob-step="1"],html[data-theme="dark"] .ob-overlay[data-ob-step="2"],html[data-theme="dark"] .ob-overlay[data-ob-step="3"] { background:rgba(26,28,34,0.5); }
  html[data-theme="dark"] .ob-container { background:var(--color-surface); }
}

/* HOLY DAY OF OBLIGATION BANNER */
.hdo-banner { background:var(--color-notice-pale);border:1px solid var(--color-notice);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-4); }
.hdo-banner-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-notice);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-1); }
.hdo-banner-title { font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--color-text-primary);line-height:1.3;margin-bottom:var(--space-3); }
.hdo-banner-cta { background:none;border:none;padding:0;cursor:pointer;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-notice);font-family:var(--font-body); }

/* FASTING & ABSTINENCE BANNER (PAT-03 / BT1-02) */
.fasting-banner { display:flex;align-items:center;gap:var(--space-4);background:var(--color-notice-pale);border:1px solid rgba(40,27,11,0.25);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-4); }
.fasting-banner { display:flex;align-items:center;gap:var(--space-4);background:var(--color-notice-pale);border:1px solid color-mix(in srgb, var(--color-notice) 25%, transparent);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-4); }
.fasting-banner--full { border-color:rgba(56,37,15,0.35); }
.fasting-banner--full { border-color:color-mix(in srgb, var(--color-notice) 35%, transparent); }
.fasting-banner-text { flex:1; }
.fasting-banner-title { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);margin-bottom:2px; }
.fasting-banner-desc { font-size:var(--text-xs);color:var(--color-text-secondary);line-height:1.4; }
.fasting-banner-dismiss { flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--color-text-tertiary);margin-left:auto;-webkit-tap-highlight-color:transparent; }
.fasting-banner-dismiss:active { opacity:0.5; }
html[data-theme="dark"] .fasting-banner { background:var(--color-notice-pale);border-color:rgba(32,21,8,0.20); }
html[data-theme="dark"] .fasting-banner { background:var(--color-notice-pale);border-color:color-mix(in srgb, var(--color-notice) 20%, transparent); }
html[data-theme="dark"] .fasting-banner--full { border-color:rgba(48,32,13,0.30); }
html[data-theme="dark"] .fasting-banner--full { border-color:color-mix(in srgb, var(--color-notice) 30%, transparent); }

/* ICS CALENDAR DOWNLOAD — compact collapsible */
.ics-collapse { margin-top:var(--space-3); }
.ics-collapse-toggle { display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);cursor:pointer;list-style:none;padding:var(--space-1) 0; }
.ics-collapse-toggle::-webkit-details-marker { display:none; }
.ics-collapse-toggle svg { color:var(--color-text-tertiary); }
.ics-btn-group { display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2); }
.ics-card-btn { display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);background:var(--color-primary);color:#fff;font-size:var(--text-xs);font-weight:var(--weight-semibold);border:none;border-radius:var(--radius-full);cursor:pointer;font-family:var(--font-body);min-height:32px;transition:background 0.15s,color 0.15s; }
.ics-card-btn--outline { background:transparent;color:var(--color-primary);border:1.5px solid var(--color-primary); }

/* ── UNIVERSAL READER ── */
/* Z-index system (ARC-G normalized) */
:root {
  /* Layer 0: Tab content */
  --z-header:90; --z-tab-bar:100; --z-map-pill:200;
  /* Layer 1: Panels (below reader) */
  --z-detail-backdrop:500; --z-detail-panel:501;
  --z-filter-backdrop:600; --z-filter-panel:601;
  --z-event-detail:602;
  --z-popover:700;
  /* Layer 2: Reader */
  --z-skip-link:999; --z-reader:1000; --z-reader-modal:1100; --z-modal:2000;
  /* Layer 3: Notifications */
  --z-qr-modal:3000; --z-toast:3000;
  /* Layer 4: System overlays */
  --z-onboarding:9000; --z-sacred-pause:9500; --z-install-guide:9500; --z-pwa-banner:9900;
}
.reader-overlay { position:fixed;inset:0;z-index:var(--z-reader);background:linear-gradient(180deg,#F8F6F1 0%,#F0EDE5 100%);display:flex;flex-direction:column;transform:translateY(100%);transition:transform 0.5s cubic-bezier(0.28,0.11,0.32,1);-webkit-overscroll-behavior:contain;overscroll-behavior:contain;overflow:hidden;touch-action:none;-webkit-overflow-scrolling:auto; }
.reader-overlay.open { transform:translateY(0); }
/* QW1-02: Prayer modules fade in instead of slide up */
.reader-overlay--prayer { transform:none !important;opacity:0;pointer-events:none;transition:opacity 0.5s ease !important; }
.reader-overlay--prayer.open { opacity:1;pointer-events:auto; }
/* ── Departing Breath (IDEA-282) ── */
@keyframes departing-breath { 0% { opacity:1;transform:scale(1); } 100% { opacity:0;transform:scale(0.98); } }
.reader-departing { animation:departing-breath 400ms ease-out forwards;pointer-events:none; }
@media (prefers-reduced-motion:reduce) { .reader-departing { animation:none;opacity:0; } }
/* IDEA-303 Fix 2: Shared crossfade transition classes */
.reader-xfade-out { opacity:0;transition:opacity var(--xfade-out,150ms) ease; }
.reader-xfade-in { transition:opacity var(--xfade-in,200ms) ease; }
.reader-header { display:flex;align-items:center;padding:var(--space-3) var(--space-4);padding-top:max(var(--space-3),env(safe-area-inset-top));border-bottom:0.5px solid var(--color-border-light);background:rgba(248,246,241,0.85);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);gap:var(--space-2);flex-shrink:0;position:relative;z-index:1;will-change:transform; }
.reader-header::after { content:'';position:absolute;bottom:0;left:20%;right:20%;height:2px;background:var(--color-sacred);opacity:0.25;border-radius:1px;box-shadow:0 0 12px color-mix(in srgb, var(--color-sacred) 15%, transparent); }
.reader-back-btn { display:flex;align-items:center;gap:var(--space-1);background:none;border:none;color:var(--color-primary);cursor:pointer;padding:var(--space-1);-webkit-tap-highlight-color:transparent;flex-shrink:0; }
.reader-back-label { font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis; }
.reader-title { flex:1;text-align:center;font-family:var(--font-display);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-secondary);letter-spacing:0.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.reader-close-btn { width:44px;height:44px;border-radius:50%;background:rgba(142,142,147,0.12);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);flex-shrink:0;transition:background 0.15s;-webkit-tap-highlight-color:transparent; }
.reader-close-btn:active { background:rgba(142,142,147,0.24); }
.reader-header-extra { flex-shrink:0;border-bottom:0.5px solid var(--color-border-light);background:rgba(248,246,241,0.85);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);padding:0 var(--space-4); }
.reader-body { flex:1;overflow-y:auto;-webkit-overflow-scrolling:auto;touch-action:pan-y;padding:var(--space-5) var(--space-5) var(--space-8);-webkit-overscroll-behavior:contain;overscroll-behavior:contain;will-change:scroll-position;contain:layout style; }
.reader-body > * { max-width:540px;margin-left:auto;margin-right:auto; }
.reader-footer { flex-shrink:0;border-top:1px solid var(--color-border-light);padding:var(--space-3) var(--space-4);padding-bottom:max(var(--space-4),env(safe-area-inset-bottom)); }
.reader-footer > * { max-width:540px;margin-left:auto;margin-right:auto; }
/* Liturgical season tints */
:root[data-season="lent"] .reader-overlay { background:linear-gradient(180deg,#F6F4F8 0%,#F4F2F6 100%); }
:root[data-season="advent"] .reader-overlay { background:linear-gradient(180deg,#F6F4F8 0%,#F4F2F6 100%); }
:root[data-season="easter"] .reader-overlay { background:linear-gradient(180deg,#F8F6F1 0%,#F6F4EE 100%); }
:root[data-season="christmas"] .reader-overlay { background:linear-gradient(180deg,#F8F6F1 0%,#F6F4EE 100%); }
:root[data-season="ordinary"] .reader-overlay { background:linear-gradient(180deg,#F6F8F5 0%,#F3F6F2 100%); }
/* Dark mode — :root needed to beat seasonal specificity */
:root[data-theme="dark"] .reader-overlay { background:linear-gradient(180deg,#1C1914 0%,#131110 100%); }
html[data-theme="dark"] .reader-header { background:rgba(26,28,34,0.85);border-bottom-color:var(--color-border); }
html[data-theme="dark"] .reader-close-btn { background:rgba(142,142,147,0.2); }
html[data-theme="dark"] .reader-header-extra { background:rgba(26,28,34,0.85);border-bottom-color:var(--color-border); }
html[data-theme="dark"] .reader-footer { border-top-color:var(--color-border); }
/* PHF-01a: Confession guide nudge inside Sacraments accordion */
.conf-guide-nudge { display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:rgba(3,6,10,0.05);border:1px solid rgba(6,14,24,0.12);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-secondary);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:44px;transition:background 0.15s; }
.conf-guide-nudge { display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:color-mix(in srgb, var(--color-info) 5%, transparent);border:1px solid color-mix(in srgb, var(--color-info) 12%, transparent);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-secondary);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:44px;transition:background 0.15s; }
.conf-guide-nudge:active { background:rgba(5,12,20,0.10); }
.conf-guide-nudge:active { background:color-mix(in srgb, var(--color-info) 10%, transparent); }
.conf-guide-nudge svg { color:var(--color-info); }
.conf-guide-nudge-link { color:var(--color-info);font-weight:var(--weight-semibold); }
html[data-theme="dark"] .conf-guide-nudge { background:rgba(3,7,12,0.06);border-color:rgba(5,12,20,0.10); }
html[data-theme="dark"] .conf-guide-nudge { background:color-mix(in srgb, var(--color-info) 6%, transparent);border-color:color-mix(in srgb, var(--color-info) 10%, transparent); }

/* CLH-01: Contextual filter hints (generalized from PHF-01b) */
/* DSN-03: Contextual search prompts */
.search-context-prompt { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:rgba(7,6,3,0.04);cursor:pointer;-webkit-tap-highlight-color:transparent;margin-bottom:var(--space-1); }
.search-context-prompt { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-accent) 4%, transparent);cursor:pointer;-webkit-tap-highlight-color:transparent;margin-bottom:var(--space-1); }
.search-context-prompt:active { opacity:0.8; }
.search-context-prompt-dot { width:5px;height:5px;border-radius:50%;flex-shrink:0; }
.search-context-prompt-text { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);flex:1; }
.search-context-prompt-chevron { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary); }
/* DSN-06: Map popup enrichments */
.popup-badge { font-size:10px;font-weight:var(--weight-semibold);padding:1px 6px;border-radius:var(--radius-full);margin-left:var(--space-1);white-space:nowrap; }
.popup-badge--live { color:#fff;background:var(--color-verified); }
.popup-badge--live .pulse-dot { width:5px;height:5px; }
.popup-badge--soon { color:var(--color-soon-text);background:var(--color-soon-pale); }
.popup-seasonal { display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--color-accent);margin-top:2px; }
.popup-seasonal-dot { width:4px;height:4px;border-radius:50%;background:var(--color-accent);flex-shrink:0; }
.filter-hint { padding:0 var(--space-4);max-width:var(--max-width);margin:0 auto; }
.filter-hint-inner { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:rgba(2,5,8,0.04);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--color-text-secondary);margin-bottom:var(--space-2); }
.filter-hint-inner { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:color-mix(in srgb, var(--color-info) 4%, transparent);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--color-text-secondary);margin-bottom:var(--space-2); }
.filter-hint-link { color:var(--color-info);font-weight:var(--weight-semibold);cursor:pointer;white-space:nowrap; }
.filter-hint-dismiss { margin-left:auto;background:none;border:none;color:var(--color-text-tertiary);cursor:pointer;padding:var(--space-2);min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent; }
html[data-theme="dark"] .filter-hint-inner { background:rgba(3,6,10,0.05); }
html[data-theme="dark"] .filter-hint-inner { background:color-mix(in srgb, var(--color-info) 5%, transparent); }
/* DSN-10: Pastoral filter hint variant — confession */
.filter-hint-inner--pastoral {
  background: color-mix(in srgb, var(--color-sacred) 4%, transparent);
}
.filter-hint-inner--pastoral > span:first-child {
  font-family: var(--font-prayer);
  font-style: italic;
}
.filter-hint-inner--pastoral .filter-hint-link {
  font-family: var(--font-body);
  font-style: normal;
  color: var(--color-sacred-text);
}
html[data-theme="dark"] .filter-hint-inner--pastoral {
  background: color-mix(in srgb, var(--color-sacred) 5%, transparent);
}

/* PHF-02b: Persistent swipe cue in rosary footer */
.rosary-nav-swipe-cue { text-align:center;font-size:var(--text-xs);color:var(--color-text-tertiary);padding-top:var(--space-2);opacity:0.5;letter-spacing:0.02em; }

/* PHF-02c: Prayer text boost at large text size inside reader */
[data-text-size="large"] .reader-body .rosary-prayer-text,
[data-text-size="large"] .reader-body .chaplet-prayer-text,
[data-text-size="large"] .reader-body .stations-meditation-text,
[data-text-size="large"] .reader-body .stations-prayer-text,
[data-text-size="x-large"] .reader-body .rosary-prayer-text,
[data-text-size="x-large"] .reader-body .chaplet-prayer-text,
[data-text-size="x-large"] .reader-body .stations-meditation-text,
[data-text-size="x-large"] .reader-body .stations-prayer-text { font-size:calc(var(--text-base) + 2px);line-height:1.9; }
[data-text-size="large"] .reader-body .stations-versicle,
[data-text-size="large"] .reader-body .stations-response { font-size:calc(1.05rem + 2px);line-height:1.8; }
[data-text-size="x-large"] .reader-body .stations-versicle,
[data-text-size="x-large"] .reader-body .stations-response { font-size:calc(1.05rem + 2px);line-height:1.8; }
[data-text-size="large"] .reader-body .novena-day-meditation p,
[data-text-size="large"] .reader-body .novena-day-prayer p,
[data-text-size="large"] .reader-body .novena-day-response p,
[data-text-size="large"] .reader-body .novena-day-closing p { font-size:calc(var(--text-base) + 2px);line-height:1.9; }
[data-text-size="x-large"] .reader-body .novena-day-meditation p,
[data-text-size="x-large"] .reader-body .novena-day-prayer p,
[data-text-size="x-large"] .reader-body .novena-day-response p,
[data-text-size="x-large"] .reader-body .novena-day-closing p { font-size:calc(var(--text-base) + 2px);line-height:1.9; }
[data-text-size="large"] .reader-body .rosary-mystery-meditation,
[data-text-size="x-large"] .reader-body .rosary-mystery-meditation { font-size:calc(var(--text-sm) + 2px); }
[data-text-size="large"] .reader-body .rosary-mystery-title,
[data-text-size="x-large"] .reader-body .rosary-mystery-title { font-size:calc(var(--text-2xl) + 2px); }
[data-text-size="large"] .reader-body .exam-section-body,
[data-text-size="x-large"] .reader-body .exam-section-body { font-size:calc(var(--text-base) + 2px);line-height:1.9; }

/* PHF-02d: Subtle continuity cue at bottom of reader overlay */
.reader-overlay::after { content:'';position:fixed;bottom:0;left:0;right:0;height:3px;background:var(--color-primary);opacity:0.15;pointer-events:none;z-index:1; }
html[data-theme="dark"] .reader-overlay::after { opacity:0.1; }

/* PTR-01: Prevent iOS scroll bleed-through when reader is open */
body.reader-open { overflow:hidden;position:fixed;width:100%;left:0; }
/* PTR-02: Desktop — full-screen backdrop + centered card */
@media (min-width:768px) {
  .reader-overlay { background:transparent;display:flex;flex-direction:column;align-items:center;left:0;right:0;width:100%;max-width:none;transform:translateY(100%); }
  .reader-overlay.open { transform:translateY(0); }
  .reader-overlay::before { content:'';position:fixed;inset:0;background:rgba(26,30,38,0.55);z-index:-1; }
  .reader-header, .reader-header-extra, .reader-body, .reader-footer { width:min(600px,90vw); }
  .reader-header { border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin-top:3vh;backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(248,246,241,0.97); }
  .reader-body { background:linear-gradient(180deg,#F8F6F1 0%,#F0EDE5 100%);max-height:calc(94vh - 140px);box-shadow:0 8px 40px rgba(0,0,0,0.12); }
  .reader-footer { border-radius:0 0 var(--radius-lg) var(--radius-lg);background:rgba(248,246,241,0.97); }
}
/* PTR-02: Desktop seasonal tints on card body (not overlay) */
@media (min-width:768px) {
  :root[data-season="lent"] .reader-body, :root[data-season="advent"] .reader-body { background:linear-gradient(180deg,#F6F4F8 0%,#F4F2F6 100%); }
  :root[data-season="easter"] .reader-body, :root[data-season="christmas"] .reader-body { background:linear-gradient(180deg,#F8F6F1 0%,#F6F4EE 100%); }
  :root[data-season="ordinary"] .reader-body { background:linear-gradient(180deg,#F6F8F5 0%,#F3F6F2 100%); }
}
/* PTR-02: Dark mode desktop — :root needed to beat seasonal tint specificity */
@media (min-width:768px) {
  :root[data-theme="dark"] .reader-overlay::before { background:rgba(0,0,0,0.65); }
  :root[data-theme="dark"] .reader-body { background:var(--color-bg);box-shadow:0 8px 40px rgba(0,0,0,0.4); }
  :root[data-theme="dark"] .reader-header { background:rgba(26,28,34,0.97); }
  :root[data-theme="dark"] .reader-footer { background:rgba(26,28,34,0.97); }
}

/* ── CCC Reader (Reading Room) ── */
/* CCC container/header CSS removed — now uses universal reader overlay */
/* Back button */
.ccc-back-btn { display:none;background:none;border:none;color:var(--color-primary);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;padding:var(--space-1) 0;-webkit-tap-highlight-color:transparent; }
.ccc-back-btn:active { opacity:0.6; }
/* Title — centered */
.ccc-sheet-title { flex:1;text-align:center;font-family:var(--font-display);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-secondary);letter-spacing:0.02em; }
/* Scrollable body — centered column */
.ccc-sheet-scroll { flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--space-5) var(--space-5) var(--space-8);-webkit-overscroll-behavior:contain;overscroll-behavior:contain;transition:opacity 0.15s ease; }
.ccc-sheet-scroll > * { max-width:540px;margin-left:auto;margin-right:auto; }
/* CCC Search (LIB-02) */
.ccc-search-wrap { margin-bottom:var(--space-4); }
.ccc-search-input { width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font-body);background:var(--color-bg);color:var(--color-text-primary);outline:none;-webkit-appearance:none; }
.ccc-search-input:focus { border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(59,130,246,0.15); }
.ccc-search-results { max-height:60vh;overflow-y:auto; }
.ccc-search-item { padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--color-border-light);cursor:pointer; }
.ccc-search-item:active { background:var(--color-bg); }
.ccc-search-item-top { display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:2px; }
.ccc-search-num { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary); }
.ccc-search-ctx { font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic; }
.ccc-search-preview { font-size:var(--text-xs);color:var(--color-text-secondary);line-height:1.4; }
.ccc-search-empty { padding:var(--space-4);text-align:center;font-size:var(--text-sm);color:var(--color-text-tertiary); }
/* CCC-06: Section context */
.ccc-section-context { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-bottom:var(--space-2);font-style:italic; }
/* CCC-05: Paragraph number — quiet accent anchor */
.ccc-para-num { font-family:var(--font-display);font-size:var(--text-sm);font-weight:600;color:var(--color-sacred-text);margin-bottom:var(--space-3);margin-top:var(--space-5);letter-spacing:0.02em; }
.ccc-para-num--first { margin-top:0; }
/* RD-04: Body text — sacred reading typography */
.ccc-para-text { font-family:var(--font-prayer);font-size:1.125rem;color:var(--color-text-primary);line-height:2.0;margin-bottom:var(--space-4); }
.ccc-para-text:last-child { margin-bottom:0; }
/* CCC-11: Italic emphasis */
.ccc-para-text em, .ccc-blockquote em { font-style:italic;color:var(--color-text-primary); }
/* RD-04: Blockquotes — voice of the Fathers */
.ccc-blockquote { margin:var(--space-5) 0;padding:var(--space-4) var(--space-5);border-left:3px solid var(--color-sacred);background:rgba(7,6,3,0.04);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-family:var(--font-prayer);font-style:italic;color:var(--color-text-secondary);font-size:var(--text-base);line-height:1.8; }
.ccc-blockquote { margin:var(--space-5) 0;padding:var(--space-4) var(--space-5);border-left:3px solid var(--color-sacred);background:color-mix(in srgb, var(--color-sacred) 4%, transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-family:var(--font-prayer);font-style:italic;color:var(--color-text-secondary);font-size:var(--text-base);line-height:1.8; }
.ccc-blockquote p { margin:0 0 var(--space-2); }
.ccc-blockquote p:last-child { margin-bottom:0; }
/* CCC-07: Related teachings — invitation cards */
.ccc-related-section { margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-border-light); }
.ccc-related-header { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-3); }
.ccc-related-item { padding:var(--space-3) var(--space-4);margin:0 calc(-1 * var(--space-4)) var(--space-2);border-radius:var(--radius-md);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background var(--transition-fast); }
.ccc-related-item:hover { background:var(--color-surface-hover); }
.ccc-related-item:active { background:var(--color-border-light); }
.ccc-related-top { display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-1); }
.ccc-related-num { font-family:var(--font-display);font-size:var(--text-sm);font-weight:600;color:var(--color-sacred-text);white-space:nowrap; }
.ccc-related-context { font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ccc-related-preview { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.65;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden; }
/* CCC-13: Loading state — contemplative pause */
.ccc-loading { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-tertiary);font-style:italic;padding:var(--space-8) 0;text-align:center; }
/* Baltimore companion card (OW-19) */
.ccc-baltimore-card { margin-top:var(--space-5);padding:var(--space-4);background:var(--color-surface-hover);border-radius:var(--radius-md);border-left:3px solid var(--color-sacred); }
.ccc-baltimore-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-sacred-text);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-2); }
.ccc-baltimore-q { font-family:var(--font-prayer);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.6;margin-bottom:var(--space-2); }
.ccc-baltimore-a { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.65; }
.ccc-ref { cursor:pointer;color:var(--color-text-tertiary);font-size:var(--text-xs);font-weight:var(--weight-medium);text-decoration:none;background:var(--color-surface-hover);padding:2px 8px;border-radius:var(--radius-full);white-space:nowrap;transition:background var(--transition-fast),color var(--transition-fast);display:inline-flex;align-items:center;line-height:1.4; }
/* refs.js — tappable reference spans (CCC, Bible, etc.) */
.ref-tap { cursor:pointer;color:var(--color-text-tertiary);font-size:var(--text-xs);font-weight:var(--weight-medium);text-decoration:none;background:var(--color-surface-hover);padding:2px 8px;border-radius:var(--radius-full);white-space:nowrap;-webkit-tap-highlight-color:transparent;transition:background var(--transition-fast),color var(--transition-fast);display:inline-flex;align-items:center;vertical-align:baseline;line-height:1.4; }
.ref-tap:hover { background:var(--color-border-light);color:var(--color-text-secondary); }
.ref-tap:active { background:var(--color-border); }
.ref-tap:focus-visible { outline:2px solid var(--color-primary-muted);outline-offset:1px; }

/* ── Inline reference snippets (Tier 1) ── */
.ref-snippet { margin:var(--space-3) 0;background:var(--color-surface);border:0.5px solid var(--color-border-light);border-radius:12px;box-shadow:0 1px 4px rgba(0,0,0,0.06);animation:snippetIn 0.25s ease;overflow:hidden; }
@keyframes snippetIn { from { opacity:0;transform:translateY(-8px); } to { opacity:1;transform:translateY(0); } }
.ref-snippet-header { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:0.5px solid var(--color-border-light); }
.ref-snippet-source { width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:var(--weight-bold);flex-shrink:0;color:white; }
.ref-snippet-source--ccc { background:var(--color-primary); }
.ref-snippet-source--bible { background:var(--color-sacred); }
.ref-snippet-addr { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);flex:1;min-width:0; }
.ref-snippet-close { background:none;border:none;padding:var(--space-1);cursor:pointer;color:var(--color-text-tertiary);flex-shrink:0;-webkit-tap-highlight-color:transparent;margin-left:auto; }
.ref-snippet-close:active { opacity:0.5; }
.ref-snippet-body { padding:var(--space-3) var(--space-4); }
.ref-snippet-text { font-family:var(--font-prayer);font-size:var(--text-sm);line-height:1.85;color:var(--color-text-secondary); }
.ref-snippet-text em { font-style:italic; }
.ref-snippet-text--bible { font-family:var(--font-prayer);line-height:1.85; }
.ref-snippet-text--expanded { max-height:50vh;overflow-y:auto;-webkit-overflow-scrolling:touch; }
.ref-snippet-text--empty { color:var(--color-text-tertiary);font-style:italic; }
.ref-snippet-verse--hidden { display:none; }
.ref-snippet-verse-num { font-size:var(--text-xs);font-weight:var(--weight-bold);color:var(--color-sacred);vertical-align:super;margin-right:1px; }
.ref-snippet-verse--target { background:rgba(40,33,14,0.22);border-radius:4px;padding:2px 4px;border-left:2px solid var(--color-sacred);margin-left:-2px; }
.ref-snippet-verse--target { background:color-mix(in srgb, var(--color-sacred) 22%, transparent);border-radius:4px;padding:2px 4px;border-left:2px solid var(--color-sacred);margin-left:-2px; }
.ref-snippet-actions { display:flex;gap:var(--space-2);padding:var(--space-2) var(--space-4) var(--space-3);border-top:0.5px solid var(--color-border-light); }
.ref-snippet-btn { display:flex;align-items:center;justify-content:center;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:var(--weight-semibold);border:none;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background var(--transition-fast),transform 0.1s; }
.ref-snippet-btn:active { transform:scale(0.97); }
.ref-snippet-btn--expand,.ref-snippet-btn--collapse { background:var(--color-surface-hover);color:var(--color-text-secondary);border:1px solid var(--color-border-light); }
.ref-snippet-loading { text-align:center;color:var(--color-text-tertiary);font-size:var(--text-sm);padding:var(--space-4) 0; }
.ref-snippet--ccc .ref-snippet-header { border-left:3px solid var(--color-primary); }
.ref-snippet--bible .ref-snippet-header { border-left:3px solid var(--color-sacred); }
/* Dark mode */
html[data-theme="dark"] .ref-snippet { background:var(--color-surface);border-color:var(--color-border);box-shadow:0 1px 6px rgba(0,0,0,0.2); }
html[data-theme="dark"] .ref-snippet-header { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .ref-snippet-actions { border-top-color:var(--color-border); }
html[data-theme="dark"] .ref-snippet-btn--expand,html[data-theme="dark"] .ref-snippet-btn--collapse { background:rgba(255,255,255,0.06);border-color:var(--color-border); }
html[data-theme="dark"] .ref-snippet-btn--expand,html[data-theme="dark"] .ref-snippet-btn--collapse { background:color-mix(in srgb, var(--color-primary) 6%, var(--color-surface));border-color:var(--color-border); }
html[data-theme="dark"] .ref-snippet-verse--target { background:rgba(46,38,16,0.25);border-left-color:var(--color-sacred); }
html[data-theme="dark"] .ref-snippet-verse--target { background:color-mix(in srgb, var(--color-sacred) 25%, transparent);border-left-color:var(--color-sacred); }

.saint-feast { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-sacred-text); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: var(--space-2); }
.saint-name { font-family: var(--font-display); font-size: var(--text-2xl); font-weight: 700; color: var(--color-text-primary); line-height: 1.25; }
.saint-also { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-2); }
.saint-color { font-size:var(--text-xs);color:var(--color-text-secondary);margin-top:var(--space-2);display:flex;align-items:center;gap:var(--space-2); }
.saint-color-dot { width:8px;height:8px;border-radius:50%;flex-shrink:0; }
.saint-prompt { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);font-style:italic;margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border-light);line-height:1.6; }
.saint-verse { font-family:var(--font-prayer);font-style: italic; font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.6; margin-top: var(--space-3);padding:var(--space-3);background:rgba(7,6,3,0.04);border-radius:var(--radius-sm);border-left:2px solid var(--color-sacred); }
.saint-verse { font-family:var(--font-prayer);font-style: italic; font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.6; margin-top: var(--space-3);padding:var(--space-3);background:color-mix(in srgb, var(--color-sacred) 4%, transparent);border-radius:var(--radius-sm);border-left:2px solid var(--color-sacred); }
html[data-theme="dark"] .saint-verse { background:rgba(11,9,4,0.06); }
html[data-theme="dark"] .saint-verse { background:color-mix(in srgb, var(--color-sacred) 6%, transparent); }
.saint-verse-ref { font-style: normal; font-size: var(--text-xs); color: var(--color-sacred-text); white-space: nowrap; font-family:var(--font-body); }
/* Patristic quote attribution */
.patristic-quote { display:block; }
.patristic-attr { display:block;margin-top:var(--space-1);font-size:var(--text-xs);font-style:normal;color:var(--color-text-tertiary);text-align:right; }
.threshold-attribution { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-2);text-align:right; }
.more-closing-attribution { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-1);font-style:italic;text-align:right; }
/* Saint biography from Catholic Encyclopedia */
.saint-bio { margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border-light); }
.saint-bio-text { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6;margin:0; }
.saint-bio-source { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-2); }
.saint-bio-source a { color:var(--color-accent-text);text-decoration:none; }
/* Saint card — upcoming observances */

/* READING TEXT — Lectionary formatting */
.reading-text .verse-num { font-size: 0.85em; font-weight: var(--weight-semibold); color: var(--color-sacred-text); vertical-align: baseline; margin-right: 4px; }
.reading-text .psalm-refrain { display: block; font-family:var(--font-prayer); font-style: italic; font-weight: var(--weight-bold); color: var(--color-text-primary); margin: var(--space-4) 0 var(--space-3); padding: var(--space-3) var(--space-4); border-left: 3px solid var(--color-sacred); background: rgba(9,8,3,0.05); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; line-height: 1.6; font-size: var(--text-sm); }
.reading-text .psalm-refrain { display: block; font-family:var(--font-prayer); font-style: italic; font-weight: var(--weight-bold); color: var(--color-text-primary); margin: var(--space-4) 0 var(--space-3); padding: var(--space-3) var(--space-4); border-left: 3px solid var(--color-sacred); background: color-mix(in srgb, var(--color-sacred) 5%, transparent); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; line-height: 1.6; font-size: var(--text-sm); }
.reading-text .psalm-r-inline { color: #DC2626; font-weight: var(--weight-bold); font-style: italic; }
.reading-text .psalm-verse { display: block; margin: var(--space-3) 0 var(--space-3) var(--space-4); font-family:var(--font-prayer); font-size:var(--text-sm); color:var(--color-text-secondary); line-height: 1.8; }
.reading-text .psalm-verse-line { display: block; padding-left: var(--space-3); text-indent: calc(-1 * var(--space-3)); }
.reading-text .reading-intro { display: block; font-style: italic; color: var(--color-text-tertiary); margin-bottom: var(--space-3); font-size: var(--text-xs); letter-spacing: 0.02em; }
.reading-text .reading-conclusion { display: block; font-weight: var(--weight-semibold); color: var(--color-text-primary); margin-top: var(--space-5); font-size: var(--text-xs); text-transform: uppercase; letter-spacing: 0.06em; }
.reading-text .reading-verse { margin: var(--space-2) 0; font-family:var(--font-prayer); font-size:var(--text-sm); color:var(--color-text-secondary); line-height: 1.8; }
.reading-text .psalm-r-marker { display: block; font-family: var(--font-prayer); font-style: italic; font-weight: var(--weight-bold); color: #DC2626; margin: var(--space-4) 0 var(--space-3); font-size: var(--text-base); line-height: 1.6; text-align: center; letter-spacing: 0.05em; }
.reading-text .psalm-indent { padding-left: var(--space-5); }
.reading-copyright { font-size: var(--text-xs); color: var(--color-text-tertiary); margin-top: var(--space-4); line-height: 1.4; }

/* SLV-02: Drop cap on first reading paragraph */
.reading-text > .reading-verse:first-child::first-letter,
.reading-text > .reading-para:first-child::first-letter,
.reading-text > p:first-of-type::first-letter {
  font-family: var(--font-display);
  font-size: 3.2em;
  float: left;
  line-height: 0.8;
  padding-right: 0.08em;
  padding-top: 0.05em;
  color: var(--color-accent);
  font-weight: var(--weight-bold);
}
/* Suppress drop cap on gospel reading inside accordion */
.reading-entry--gospel .reading-text > p::first-letter,
.reading-entry--gospel .reading-text > .reading-verse::first-letter,
.reading-entry--gospel .reading-text > .reading-para::first-letter {
  font-size: inherit;
  float: none;
  line-height: inherit;
  padding-right: 0;
  padding-top: 0;
  font-weight: inherit;
  color: inherit;
}
/* SLV-02: Small-caps LORD — typographic convention for the Tetragrammaton */
.sc {
  font-variant: small-caps;
  text-transform: lowercase;
  letter-spacing: 0.05em;
}
/* SLV-02: Heading letter-spacing for hand-set feel */
.saint-name { letter-spacing: 0.015em; }
.sacred-pause-title { letter-spacing: 0.015em; }
.reader-title { letter-spacing: 0.02em; }
/* SLV-02: Sacred text warm shadow (dark mode only) */
html[data-theme="dark"] .reader-body {
  text-shadow: 0 0 30px rgba(212, 168, 75, 0.04);
}
html[data-theme="dark"] .reading-text {
  text-shadow: 0 0 30px rgba(212, 168, 75, 0.04);
}
html[data-theme="dark"] .ccc-body,
html[data-theme="dark"] .ccc-paragraph {
  text-shadow: 0 0 30px rgba(212, 168, 75, 0.04);
}

/* CONFESSION GUIDE ENHANCEMENTS */
.conf-act { background: var(--color-sacred-pale); border: 1px solid rgba(46,38,16,0.25); border-radius: var(--radius-md); padding: var(--space-4); margin-top: var(--space-4); }
.conf-act { background: var(--color-sacred-pale); border: 1px solid color-mix(in srgb, var(--color-sacred) 25%, transparent); border-radius: var(--radius-md); padding: var(--space-4); margin-top: var(--space-4); }
.conf-act-label { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--color-sacred-text); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: var(--space-2); }
.conf-act-text { font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.8; font-style: italic; }
.conf-exam { margin-top: var(--space-4); border: 1px solid var(--color-border-light); border-radius: var(--radius-md); overflow: hidden; }
.conf-exam summary { display: flex; align-items: center; justify-content: space-between; padding: var(--space-3) var(--space-4); cursor: pointer; list-style: none; font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--color-text-secondary); background: var(--color-surface-hover); min-height: 44px; }
.conf-exam summary::-webkit-details-marker { display: none; }
.conf-exam[open] summary { border-bottom: 1px solid var(--color-border-light); }
.conf-exam-body { padding: var(--space-4); font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.75; }
.conf-exam-body p { font-weight: var(--weight-semibold); color: var(--color-text-primary); margin: var(--space-3) 0 var(--space-2); }
.conf-exam-body p:first-child { margin-top: 0; }
.conf-exam-body ul { padding-left: var(--space-5); }
.conf-exam-body ul li { margin-bottom: var(--space-1); }

/* ── GUIDED ROSARY ── */
/* Rosary container/header CSS removed — now uses universal reader overlay */
.rosary-progress { padding:var(--space-2) 0; }
.rosary-dots { display:flex;justify-content:center;gap:16px;padding:var(--space-3); }
.rosary-dot { width:8px;height:8px;border-radius:50%;background:var(--color-border-light);border:none;padding:0;cursor:pointer;transition:all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);-webkit-tap-highlight-color:transparent; }
.rosary-dot:hover { background:var(--color-primary-muted); }
.rosary-dot.active { background:var(--set-color, var(--color-primary));transform:scale(1.5);box-shadow:0 0 0 3px rgba(44,62,90,0.10),0 0 6px var(--set-color, var(--color-primary)); }
.rosary-dot.done { background:var(--set-color, var(--color-primary));opacity:1; }
.rosary-body { flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--space-4);padding-bottom:var(--space-6);-webkit-overscroll-behavior:contain;overscroll-behavior:contain; }
.rosary-body > * { max-width:540px;margin-left:auto;margin-right:auto; }
.rosary-nav { display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border-light);padding-bottom:max(var(--space-4),env(safe-area-inset-bottom)); }
.rosary-nav-btn { flex:1;padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;min-height:44px;border:none;transition:all 0.15s; }
.rosary-nav-primary { background:var(--color-primary);color:white; }
.rosary-nav-primary:hover { background:var(--color-primary-light); }
.rosary-nav-primary:active { transform:scale(0.98); }
.rosary-nav-secondary { background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border-light); }
.rosary-nav-secondary:hover { background:var(--color-surface-hover); }

/* Loading state */
.rosary-loading { text-align:center;padding:var(--space-6) 0;color:var(--color-text-tertiary); }
.rosary-loading-spinner { width:28px;height:28px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin 0.8s linear infinite;margin:0 auto var(--space-3); }
.rosary-loading p { font-size:var(--text-sm); }

/* Select screen */
.rosary-select { text-align:center;max-width:420px;margin:0 auto; }
.rosary-select-intro { margin-bottom:var(--space-4); }
.rosary-cross-svg { width:36px;height:48px;color:var(--color-primary);margin-bottom:var(--space-3);opacity:0.5; }
.rosary-select-day { font-size:var(--text-sm);color:var(--color-text-tertiary); }
.rosary-select-rec { color:var(--color-text-secondary);font-size:var(--text-sm);margin-top:var(--space-2); }
.rosary-select-set-name { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--color-text-primary);display:block;margin-top:var(--space-1); }
.rosary-select-season { font-size:var(--text-xs);color:#7C3AED;font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:0.05em;margin-top:var(--space-1); }
.rosary-begin-btn { display:block;width:100%;padding:var(--space-4);margin-bottom:var(--space-4);border:none;border-radius:var(--radius-md);background:var(--set-color,var(--color-primary));color:white;font-size:var(--text-base);font-weight:var(--weight-bold);cursor:pointer;min-height:52px;transition:all 0.15s; }
.rosary-begin-btn:hover { opacity:0.9; }
.rosary-begin-btn:active { transform:scale(0.98); }
.rosary-select-divider { display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);color:var(--color-text-tertiary);font-size:var(--text-xs); }
.rosary-select-divider::before,.rosary-select-divider::after { content:'';flex:1;height:1px;background:var(--color-border-light); }
.rosary-set-grid { display:grid;gap:var(--space-3); }
@media (min-width:480px) { .rosary-set-grid { grid-template-columns:1fr 1fr; } }
.rosary-set-btn { display:block;width:100%;text-align:left;padding:var(--space-3) var(--space-4);border:2px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;transition:all 0.2s; }
.rosary-set-btn:hover { border-color:var(--set-color);background:var(--color-surface-hover); }
.rosary-set-btn:active { transform:scale(0.98); }
.rosary-set-name { font-size:var(--text-sm);font-weight:var(--weight-bold);color:var(--color-text-primary); }
.rosary-set-day { display:block;font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:2px; }
.rosary-mystery-desc { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-1); }

/* Mystery card */
.rosary-mystery { border-left:3px solid var(--set-color);padding:var(--space-5);margin-bottom:var(--space-4);background:var(--color-surface);border-radius:0 var(--radius-md) var(--radius-md) 0; }
.rosary-mystery[style*="--set-color: #4A90D9"] { background-image:linear-gradient(135deg, rgba(74,144,217,0.05) 0%, transparent 60%); }
.rosary-mystery[style*="--set-color: #C0392B"] { background-image:linear-gradient(135deg, rgba(192,57,43,0.05) 0%, transparent 60%); }
.rosary-mystery[style*="--set-color: #D4A017"] { background-image:linear-gradient(135deg, rgba(212,160,23,0.05) 0%, transparent 60%); }
.rosary-mystery[style*="--set-color: #27AE60"] { background-image:linear-gradient(135deg, rgba(39,174,96,0.05) 0%, transparent 60%); }
.rosary-mystery-num { font-size:var(--text-xs);text-transform:uppercase;letter-spacing:0.05em;color:var(--set-color);font-weight:var(--weight-semibold);margin-bottom:var(--space-1); }
.rosary-mystery-title { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--color-text-primary);margin-bottom:var(--space-3);line-height:1.25; }
.rosary-mystery-scripture { display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm);color:var(--color-info);cursor:pointer;margin-bottom:var(--space-2);padding:var(--space-1) 0; }
.rosary-mystery-scripture:hover { text-decoration:underline; }
.rosary-mystery-meditation { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.75;font-style:italic;margin:var(--space-3) 0;padding:var(--space-3) 0;border-top:1px solid var(--color-border-light);border-bottom:1px solid var(--color-border-light); }
.rosary-mystery-fruit { font-size:var(--text-sm);color:var(--color-text-secondary); }
.rosary-mystery-fruit-inline { font-weight:var(--weight-normal);color:var(--color-text-tertiary); }
.rosary-mystery-meta { display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-2); }
.rosary-mystery-meta-sep { color:var(--color-text-tertiary);font-size:var(--text-xs); }
.rosary-mystery-refs { display:inline-flex;gap:var(--space-2);flex-wrap:wrap; }

/* Bead counter */
.rosary-hm-section { text-align:center;margin-bottom:var(--space-4);padding:var(--space-4);background:var(--color-surface);border-radius:var(--radius-md);transition:background 0.3s;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:180px;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.rosary-hm-section.complete { background:rgba(44,62,90,0.06); }
.rosary-hm-header { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);margin-bottom:var(--space-2);text-transform:uppercase;letter-spacing:0.05em; }
.rosary-beads { display:flex;flex-wrap:wrap;justify-content:center;gap:0.375rem;padding:var(--space-4);cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none; }
.rosary-bead { width:1.375rem;height:1.375rem;border-radius:50%;border:2px solid var(--color-border);background:transparent;transition:all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.06); }
.rosary-bead.filled { background:var(--set-color, var(--color-primary));border-color:var(--set-color, var(--color-primary));box-shadow:0 1px 4px rgba(0,0,0,0.18); }
.rosary-bead.latest { animation:beadPop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); }
@keyframes beadPop { 0% { transform:scale(1); } 50% { transform:scale(1.25); } 100% { transform:scale(1); } }
.rosary-hm-section.complete .rosary-bead.filled { background:var(--color-verified);border-color:var(--color-verified); }
.rosary-bead-label { font-size:var(--text-lg);color:var(--color-text-secondary);margin-top:var(--space-2);font-weight:var(--weight-semibold); }
.rosary-hm-section.complete .rosary-bead-label { color:var(--color-verified); }
.rosary-bead-hint { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-1); }

/* Prayer blocks (opening/closing) — always expanded */
.rosary-section-title { font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--color-text-primary);text-align:center;margin-bottom:var(--space-4); }
.rosary-prayer-block { margin-bottom:var(--space-4);padding:var(--space-4);background:var(--color-surface);border-radius:var(--radius-md); }
.rosary-prayer-name { font-size:var(--text-base);font-weight:var(--weight-bold);color:var(--color-primary);margin-bottom:var(--space-2);list-style:none; }
.rosary-prayer-name::-webkit-details-marker { display:none; }
.rosary-prayer-sub { font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic;margin-bottom:var(--space-2); }
.rosary-prayer-text { font-family:var(--font-prayer);font-size:var(--text-base);color:var(--color-text-secondary);line-height:1.85; }
.rosary-prayer-text p { margin-bottom:var(--space-2); }

/* Collapsible prayer blocks (decade screen) */
.rosary-prayer-collapsible { cursor:default; }
.rosary-prayer-collapsible > summary { display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none;padding-bottom:0; }
.rosary-prayer-collapsible[open] > summary { margin-bottom:var(--space-2); }
.rosary-prayer-chev { width:16px;height:16px;color:var(--color-text-tertiary);flex-shrink:0;transition:transform 0.2s; }
.rosary-prayer-collapsible:not([open]) .rosary-prayer-chev { transform:rotate(-90deg); }
.rosary-mode-toggle { display:flex;justify-content:flex-end;padding:0 0 var(--space-2); }
.rosary-mode-btn { font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);background:none;border:1px solid var(--color-border);border-radius:var(--radius-full);padding:var(--space-1) var(--space-3);cursor:pointer;min-height:32px;-webkit-tap-highlight-color:transparent;transition:all var(--transition-fast); }
.rosary-mode-btn.active { color:var(--color-primary);border-color:var(--color-primary);background:var(--color-primary-bg); }
.rosary-mode-btn:active { opacity:0.85; }
.rosary-condensed-summary { font-size:var(--text-sm);color:var(--color-text-secondary);text-align:center;padding:var(--space-4);font-family:var(--font-prayer);font-style:italic;line-height:2; }
html[data-theme="dark"] .rosary-mode-btn { border-color:var(--color-border);color:var(--color-text-tertiary); }
html[data-theme="dark"] .rosary-mode-btn.active { color:var(--color-primary);border-color:var(--color-primary);background:var(--color-primary-bg); }

/* RFR-12: rosary-complete-screen removed — now uses shared .prayer-exit-screen */
@keyframes prayer-fadein { from{opacity:0;transform:translateY(12px)} to{opacity:1;transform:translateY(0)} }
.rosary-bead-nudge { color:var(--color-sacred-text);font-weight:var(--weight-semibold);animation:rosary-nudge 0.3s ease; }
@keyframes rosary-nudge { 0%,100%{transform:translateX(0)} 25%{transform:translateX(-4px)} 75%{transform:translateX(4px)} }
.rosary-swipe-hint { text-align:center;font-size:var(--text-xs);color:var(--color-text-tertiary);padding:var(--space-3) 0;opacity:0.7;animation:prayer-fadein 0.3s ease; }

/* Entry button in devotional guides */
.rosary-start-btn { display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-primary);color:white;border:none;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;min-height:44px;transition:all 0.15s; }
.rosary-start-btn:hover { background:var(--color-primary-light); }
.rosary-start-btn:active { transform:scale(0.98); }

/* Dark mode overrides for rosary */
html[data-theme="dark"] .rosary-overlay { background:linear-gradient(180deg, #1C1914 0%, #131110 100%); }
html[data-theme="dark"] .rosary-header { background:rgba(26,28,34,0.85); }
html[data-theme="dark"] .rosary-close-btn { background:rgba(142,142,147,0.2); }
html[data-theme="dark"] .rosary-close-btn:active { background:rgba(142,142,147,0.35); }
html[data-theme="dark"] .rosary-set-btn { background:var(--color-surface);border-color:var(--color-border); }
html[data-theme="dark"] .rosary-begin-btn { opacity:0.95; }
html[data-theme="dark"] .rosary-mystery { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .rosary-mystery { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .rosary-mystery[style*="--set-color: #4A90D9"] { background-image:linear-gradient(135deg, rgba(74,144,217,0.08) 0%, transparent 60%); }
html[data-theme="dark"] .rosary-mystery[style*="--set-color: #C0392B"] { background-image:linear-gradient(135deg, rgba(192,57,43,0.08) 0%, transparent 60%); }
html[data-theme="dark"] .rosary-mystery[style*="--set-color: #D4A017"] { background-image:linear-gradient(135deg, rgba(212,160,23,0.08) 0%, transparent 60%); }
html[data-theme="dark"] .rosary-mystery[style*="--set-color: #27AE60"] { background-image:linear-gradient(135deg, rgba(39,174,96,0.08) 0%, transparent 60%); }
html[data-theme="dark"] .rosary-prayer-block { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .rosary-prayer-block { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .rosary-hm-section { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .rosary-hm-section { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .rosary-hm-section.complete { background:rgba(74,124,89,0.12); }
html[data-theme="dark"] .rosary-bead { border-color:var(--color-border);box-shadow:inset 0 1px 2px rgba(0,0,0,0.2); }
html[data-theme="dark"] .rosary-bead.filled { background:var(--color-sacred);border-color:var(--color-sacred);box-shadow:0 1px 4px rgba(0,0,0,0.3); }
html[data-theme="dark"] .rosary-hm-section.complete .rosary-bead.filled { background:#5DAE73;border-color:#5DAE73; }
html[data-theme="dark"] .rosary-dot.active { box-shadow:0 0 0 3px rgba(255,255,255,0.1); }
/* PTR-06-B: Larger beads on desktop */
@media (min-width:768px) { .rosary-bead { width:1.75rem;height:1.75rem; } .rosary-beads { gap:0.5rem; } }

/* Set-specific ambient backgrounds (RC-07) */
.rosary-overlay[data-rosary-set="joyful"] { background:linear-gradient(180deg, #F0F4FA 0%, #E6ECF5 100%); }
.rosary-overlay[data-rosary-set="sorrowful"] { background:linear-gradient(180deg, #FAF0F0 0%, #F5E6E6 100%); }
.rosary-overlay[data-rosary-set="glorious"] { background:linear-gradient(180deg, #FAF7F0 0%, #F5EFE6 100%); }
.rosary-overlay[data-rosary-set="luminous"] { background:linear-gradient(180deg, #F0FAF4 0%, #E6F5EC 100%); }
html[data-theme="dark"] .rosary-overlay[data-rosary-set="joyful"] { background:linear-gradient(180deg, #1A1E28 0%, #161A24 100%); }
html[data-theme="dark"] .rosary-overlay[data-rosary-set="sorrowful"] { background:linear-gradient(180deg, #281A1A 0%, #241616 100%); }
html[data-theme="dark"] .rosary-overlay[data-rosary-set="glorious"] { background:linear-gradient(180deg, #28241A 0%, #241F16 100%); }
html[data-theme="dark"] .rosary-overlay[data-rosary-set="luminous"] { background:linear-gradient(180deg, #1A281E 0%, #162418 100%); }

/* ── Stations of the Cross (MOD-04) ── */
/* Stations container/header CSS removed — now uses universal reader overlay */

/* Progress dots — 14 stations, compact */
.stations-progress { padding:var(--space-2) var(--space-4); }
.stations-dots { display:flex;justify-content:center;gap:8px;flex-wrap:nowrap; }
.stations-dot { width:8px;height:8px;border-radius:50%;background:var(--color-border);border:none;padding:0;cursor:pointer;transition:all 0.2s;-webkit-tap-highlight-color:transparent; }
.stations-dot.active { background:var(--color-stations);transform:scale(1.3);box-shadow:0 0 0 3px var(--color-stations-pale); }
.stations-dot.done { background:var(--color-stations);opacity:0.5; }

/* Body */
.stations-body { flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--space-4);padding-bottom:var(--space-6);-webkit-overscroll-behavior:contain;overscroll-behavior:contain; }
.stations-body > * { max-width:540px;margin-left:auto;margin-right:auto; }

/* Nav bar — mirror rosary */
.stations-nav { display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border-light);padding-bottom:max(var(--space-4),env(safe-area-inset-bottom)); }
/* RFR-12: stations-nav-btn removed — now uses shared .rosary-nav-btn */
.stations-nav-primary { background:var(--color-stations);color:white; }
.stations-nav-primary:hover { opacity:0.9; }
.stations-nav-primary:active { transform:scale(0.98); }
.stations-nav-secondary { background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border-light); }
.stations-nav-secondary:hover { background:var(--color-surface-hover); }

/* Loading — mirror rosary */
.stations-loading { text-align:center;padding:var(--space-6) 0;color:var(--color-text-tertiary); }
.stations-loading-spinner { width:28px;height:28px;border:3px solid var(--color-border);border-top-color:var(--color-stations);border-radius:50%;animation:spin 0.8s linear infinite;margin:0 auto var(--space-3); }
.stations-loading p { font-size:var(--text-sm); }

/* Intro screen — mirror exam-opening */
.stations-intro { display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-5);max-width:420px;margin:0 auto;min-height:60vh;justify-content:center; }
.stations-intro-icon { color:var(--color-stations);opacity:0.6;margin-bottom:var(--space-4); }
.stations-intro-title { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--color-heading);margin-bottom:var(--space-4); }
.stations-intro-text { font-family:var(--font-prayer);font-size:var(--text-base);line-height:1.8;color:var(--color-text-secondary);margin-bottom:var(--space-3); }
.stations-intro-instruction { font-size:var(--text-sm);color:var(--color-text-tertiary);line-height:1.6; }

/* Station prayer screen */
.stations-prayer { padding:var(--space-2) 0; }
.stations-num { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-stations);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:var(--space-1); }
.stations-station-title { font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--color-heading);line-height:1.35;margin-bottom:var(--space-2); }
.stations-scripture { margin-bottom:var(--space-4); }
.stations-scripture .ref-tap { font-size:var(--text-sm); }

/* Versicle & Response — inline V/R labels for compact single-viewport stations */
.stations-versicle, .stations-response { font-family:var(--font-prayer);font-size:1.05rem;line-height:1.6;margin:0 0 var(--space-1) 0;color:var(--color-text-primary); }
.stations-response { margin-bottom:var(--space-4);font-weight:var(--weight-semibold); }
.stations-vr-label { font-family:var(--font-prayer);font-size:0.8rem;font-weight:var(--weight-bold);color:var(--color-sacred);margin-right:var(--space-1);vertical-align:baseline; }
.stations-vr-label--response { color:var(--color-text-secondary); }

/* Meditation & Prayer blocks */
.stations-meditation, .stations-prayer-block { margin-bottom:var(--space-4);padding:var(--space-4);background:var(--color-surface);border-radius:var(--radius-md); }
.stations-meditation-label, .stations-prayer-label { font-size:11px;font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-2); }
.stations-meditation-text { font-family:var(--font-prayer);font-size:var(--text-base);line-height:1.85;color:var(--color-text-primary); }
.stations-prayer-text { font-family:var(--font-prayer);font-size:var(--text-base);font-style:italic;line-height:1.85;color:var(--color-text-primary); }
.stations-meditation-text p, .stations-prayer-text p { margin-bottom:var(--space-2); }
.stations-meditation-text p:last-child, .stations-prayer-text p:last-child { margin-bottom:0; }

/* Closing prayers — mirror rosary */
.stations-closing-prayers { padding:var(--space-2) 0; }
.stations-section-title { font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--color-heading);margin-bottom:var(--space-4);text-align:center; }
.stations-closing-block { margin-bottom:var(--space-4);padding:var(--space-4);background:var(--color-surface);border-radius:var(--radius-md); }
.stations-closing-name { font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-heading);margin-bottom:var(--space-2); }
.stations-closing-text { font-family:var(--font-prayer);font-size:var(--text-base);line-height:1.85;color:var(--color-text-secondary); }
.stations-closing-text p { margin-bottom:var(--space-2); }

/* Completion screen — mirror rosary */
/* RFR-12: stations-complete-screen removed — now uses shared .prayer-exit-screen */

/* Swipe hint — mirror rosary */
.stations-swipe-hint { text-align:center;font-size:var(--text-xs);color:var(--color-text-tertiary);padding:var(--space-3);opacity:0;animation:prayer-fadein 0.3s ease 0.5s forwards; }

/* ── Stations Dark Mode ── */
html[data-theme="dark"] .stations-overlay { background:linear-gradient(180deg, #1C1914 0%, #131110 100%); }
html[data-theme="dark"] .stations-header { background:rgba(26,28,34,0.85); }
html[data-theme="dark"] .stations-close-btn { background:rgba(142,142,147,0.2); }
html[data-theme="dark"] .stations-close-btn:active { background:rgba(142,142,147,0.35); }
html[data-theme="dark"] .stations-dot { background:var(--color-border); }
/* V/R labels use --color-accent and --color-text-secondary — no dark override needed */
html[data-theme="dark"] .stations-meditation, html[data-theme="dark"] .stations-prayer-block { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .stations-meditation, html[data-theme="dark"] .stations-prayer-block { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .stations-closing-block { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .stations-closing-block { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }

/* ── Novena Tracker (MOD-05) ── */
/* Novena container/header CSS removed — now uses universal reader overlay */

/* Loading */
.novena-loading { text-align:center;padding:var(--space-6) 0;color:var(--color-text-tertiary); }
.novena-loading-spinner { width:28px;height:28px;border:3px solid var(--color-border);border-top-color:#1E6B4A;border-radius:50%;animation:spin 0.8s linear infinite;margin:0 auto var(--space-3); }
.novena-loading p { font-size:var(--text-sm); }

/* Select screen */
.novena-select { padding:var(--space-2) 0; }
/* Master progress card (multi-novena) */
.novena-master-card { background:var(--color-card-bg);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-4); }
.novena-master-label { font-size:var(--text-sm);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:0.05em;color:var(--color-text-tertiary);margin-bottom:var(--space-3); }
.novena-master-row { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border-light);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.novena-master-row:last-child { border-bottom:none; }
.novena-master-row:active { opacity:0.85; }
.novena-master-info { flex:1;min-width:0; }
.novena-master-title { font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary); }
.novena-master-progress { font-size:var(--text-sm);color:var(--color-text-tertiary); }
.novena-master-dots { display:flex;gap:5px; }
.novena-master-dot { width:10px;height:10px;border-radius:50%;border:1.5px solid var(--color-border);background:transparent; }
.novena-master-dot.done { background:var(--color-sacred);border-color:var(--color-sacred); }
.novena-master-chevron { color:var(--color-text-tertiary);font-size:18px; }

/* PMD-05: Progress bar for high day-count novenas (>12 days) */
.novena-progress-bar { width:80px;height:6px;background:var(--color-border-light);border-radius:var(--radius-full);overflow:hidden;flex-shrink:0; }
.novena-progress-bar--prayer { width:100%;max-width:200px;height:8px;margin:0 auto var(--space-3); }
.novena-progress-fill { height:100%;background:var(--color-sacred);border-radius:var(--radius-full);transition:width 0.3s ease-out; }
html[data-theme="dark"] .novena-progress-bar { background:var(--color-border); }

.novena-intro { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-tertiary);text-align:center;padding:var(--space-2) var(--space-4) var(--space-4);line-height:1.6; }
.novena-list-label { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:var(--space-3);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-border-light); }
.novena-list-label:first-child { margin-top:0;padding-top:0;border-top:none; }
.novena-list-item { display:flex;align-items:center;width:100%;background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-2);cursor:pointer;text-align:left;transition:all 0.15s;-webkit-tap-highlight-color:transparent;gap:var(--space-2); }
.novena-list-item:active { transform:scale(0.98); }
.novena-list-item.active { border-color:var(--color-sacred);border-left:3px solid var(--color-sacred);background:#fbf9f3;box-shadow:var(--shadow-card); }
.novena-list-item.active { border-color:var(--color-sacred);border-left:3px solid var(--color-sacred);background:color-mix(in srgb, var(--color-sacred) 6%, var(--color-surface));box-shadow:var(--shadow-card); }
.novena-list-item.active .novena-list-desc { color:var(--color-sacred-text);font-weight:var(--weight-medium); }
.novena-list-item-body { flex:1;min-width:0; }
.novena-list-title { font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-heading);margin-bottom:2px; }
.novena-list-desc { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; }
.novena-item--suggested { border-left:3px solid var(--color-accent);background:linear-gradient(135deg, var(--color-accent-pale) 0%, var(--color-surface) 80%);border-color:var(--color-accent);box-shadow:0 0 0 1px rgba(28,23,9,0.15); }
.novena-item--suggested { border-left:3px solid var(--color-accent);background:linear-gradient(135deg, var(--color-accent-pale) 0%, var(--color-surface) 80%);border-color:var(--color-accent);box-shadow:0 0 0 1px color-mix(in srgb, var(--color-accent) 15%, transparent); }
.novena-item--suggested .novena-list-title { color:var(--color-accent-text); }
.novena-item--suggested .novena-list-desc { color:var(--color-accent-text);font-weight:var(--weight-medium);font-style:italic; }
html[data-theme="dark"] .novena-item--suggested { background:linear-gradient(135deg, rgba(15,12,5,0.08) 0%, var(--color-surface) 60%);border-color:var(--color-accent);box-shadow:0 0 0 1px rgba(18,15,6,0.10); }
html[data-theme="dark"] .novena-item--suggested { background:linear-gradient(135deg, color-mix(in srgb, var(--color-accent) 8%, transparent) 0%, var(--color-surface) 60%);border-color:var(--color-accent);box-shadow:0 0 0 1px color-mix(in srgb, var(--color-accent) 10%, transparent); }
html[data-theme="dark"] .novena-item--suggested .novena-list-title { color:var(--color-accent-light); }
html[data-theme="dark"] .novena-item--suggested .novena-list-desc { color:var(--color-accent-light); }
.novena-list-chevron { color:var(--color-text-tertiary);font-size:var(--text-xl);flex-shrink:0; }
.novena-day-badge { font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);background:var(--color-surface-hover);padding:2px var(--space-2);border-radius:var(--radius-full);white-space:nowrap;flex-shrink:0; }
html[data-theme="dark"] .novena-day-badge { background:rgba(255,255,255,0.06); }
html[data-theme="dark"] .novena-day-badge { background:color-mix(in srgb, white 4%, var(--color-surface)); }
/* novena-more-note removed (BT6-06) */

/* Prayer screen */
.novena-prayer { padding:var(--space-2) 0; }
.novena-back-btn { background:none;border:none;color:var(--color-text-secondary);font-size:var(--text-sm);cursor:pointer;padding:0;margin-bottom:var(--space-3);-webkit-tap-highlight-color:transparent; }
.novena-back-btn:active { opacity:0.7; }
.novena-dots { display:flex;justify-content:center;gap:12px;flex-wrap:nowrap;margin-bottom:var(--space-3); }
.novena-dot { width:10px;height:10px;border-radius:50%;background:var(--color-border);border:none;padding:0;cursor:pointer;transition:all 0.2s;-webkit-tap-highlight-color:transparent; }
.novena-dot.active { background:var(--color-primary);transform:scale(1.4); }
.novena-dot.done { background:var(--color-primary);opacity:0.5; }
.novena-dot.locked { opacity:0.2;cursor:default;pointer-events:none; }

.novena-day-num { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-sacred-text);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:var(--space-1);text-align:center; }
.novena-day-title { font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--color-heading);line-height:1.35;margin-bottom:var(--space-4);text-align:center; }
.novena-intention { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-family:var(--font-prayer);font-size:var(--text-base);line-height:1.7;color:var(--color-text-secondary); }
.novena-intention-label { font-weight:var(--weight-semibold);color:#1E6B4A; }
.novena-day-meditation { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-5); }
.novena-day-meditation p { font-family:var(--font-prayer);font-size:var(--text-base);line-height:1.85;color:var(--color-text-secondary);margin-bottom:var(--space-2); }
.novena-day-meditation p:last-child { margin-bottom:0; }
.novena-day-prayer { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-5); }
.novena-day-prayer p { font-family:var(--font-prayer);font-size:var(--text-base);line-height:1.85;color:var(--color-text-secondary);margin-bottom:var(--space-2); }
.novena-day-prayer p:last-child { margin-bottom:0; }
.novena-day-response { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-5); }
.novena-block-label { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-2);display:flex;align-items:center;gap:var(--space-2); }
.novena-block-label::before { content:'';width:16px;height:2px;background:var(--color-accent);border-radius:var(--radius-full);flex-shrink:0; }
html[data-theme="dark"] .novena-block-label::before { background:var(--color-accent-light); }
.novena-day-response p { font-family:var(--font-prayer);font-size:var(--text-base);line-height:1.85;color:var(--color-text-secondary);margin-bottom:var(--space-2); }
.novena-day-response p:last-child { margin-bottom:0; }
.novena-day-closing { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-5); }
.novena-day-closing p { font-family:var(--font-prayer);font-size:var(--text-base);line-height:1.85;color:var(--color-text-secondary);margin-bottom:var(--space-2); }
.novena-day-closing p:last-child { margin-bottom:0; }

/* Nav bar */
.novena-nav { padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border-light);padding-bottom:max(var(--space-4),env(safe-area-inset-bottom)); }
.novena-nav-inner { display:flex;justify-content:center;align-items:center;gap:var(--space-3); }
.novena-mark-btn { padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;min-height:44px;border:none;background:#1E6B4A;color:white;transition:all 0.15s;-webkit-tap-highlight-color:transparent; }
.novena-mark-btn:hover { opacity:0.9; }
.novena-mark-btn:active { transform:scale(0.98); }
.novena-completed-badge { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:#1E6B4A;padding:var(--space-3); }
.novena-tomorrow-note { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-tertiary);font-style:italic;padding:var(--space-3);text-align:center; }
.novena-done-btn { padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;min-height:36px;border:1px solid var(--color-border-light);background:var(--color-surface);color:var(--color-text-secondary);transition:all 0.15s;-webkit-tap-highlight-color:transparent; }
.novena-done-btn:active { transform:scale(0.98); }
/* RFR-12: novena-nav-close-btn removed — now uses shared .rosary-nav-btn */

/* Complete screen */
/* RFR-12: novena-complete-screen removed — now uses shared .prayer-exit-screen */

/* UXR-03: Shared exit/completion screen pattern for all guided prayer modules */
.prayer-exit-screen { display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center;padding:var(--space-6);animation:prayer-fadein 0.5s ease; }
.prayer-exit-icon { color:var(--color-sacred);margin-bottom:var(--space-3); }
.prayer-exit-icon svg { width:28px;height:38px; }
.prayer-exit-title { font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--color-text-primary);margin:var(--space-4) 0 var(--space-2); }
.prayer-exit-quote { font-family:var(--font-prayer);font-size:var(--text-lg);line-height:1.7;color:var(--color-text-secondary);font-style:italic;margin-bottom:var(--space-2);max-width:320px; }
.prayer-exit-ref { font-size:var(--text-xs);color:var(--color-text-tertiary);font-weight:var(--weight-medium);letter-spacing:0.02em;margin-bottom:var(--space-5); }
.prayer-exit-msg { font-family:var(--font-prayer);font-size:var(--text-base);color:var(--color-text-secondary);font-style:italic;line-height:1.8;margin-bottom:var(--space-5); }
.novena-complete-new-btn { padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;border:1px solid var(--color-border-light);background:var(--color-surface);color:var(--color-text-secondary);transition:all 0.15s; }
.novena-complete-new-btn:hover { background:var(--color-surface-hover); }
.novena-complete-new-btn:active { transform:scale(0.98); }

/* ── Novena Dark Mode ── */
html[data-theme="dark"] .novena-overlay { background:linear-gradient(180deg, #1C1914 0%, #131110 100%); }
html[data-theme="dark"] .novena-header { background:rgba(26,28,34,0.85); }
html[data-theme="dark"] .novena-close-btn { background:rgba(142,142,147,0.2); }
html[data-theme="dark"] .novena-close-btn:active { background:rgba(142,142,147,0.35); }
html[data-theme="dark"] .novena-dot { background:var(--color-border); }
html[data-theme="dark"] .novena-master-card { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .novena-master-card { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .novena-list-item { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .novena-list-item { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .novena-list-item.active { background:rgba(184,150,63,0.08);border-color:var(--color-sacred); }
html[data-theme="dark"] .novena-intention { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .novena-intention { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .novena-day-meditation { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .novena-day-meditation { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .novena-day-prayer { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .novena-day-prayer { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .novena-day-response { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .novena-day-response { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .novena-day-closing { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .novena-day-closing { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }
html[data-theme="dark"] .novena-complete-new-btn { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .novena-complete-new-btn { background:color-mix(in srgb, var(--color-sacred) 4%, var(--color-surface)); }

/* ── Novena Rebuild: UXI styles ── */

/* UXI-02: Newcomer intro card */
.novena-newcomer-intro { background:var(--color-accent-pale);border-radius:var(--radius-md);padding:var(--space-4) var(--space-4) var(--space-3);margin-bottom:var(--space-4); }
.novena-newcomer-title { font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-heading);margin-bottom:var(--space-2); }
.novena-newcomer-body { font-family:var(--font-prayer);font-size:var(--text-base);line-height:1.7;color:var(--color-text-secondary);margin-bottom:var(--space-3); }
.novena-newcomer-dismiss { background:none;border:none;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-accent-text);cursor:pointer;padding:var(--space-2) 0;min-height:44px;-webkit-tap-highlight-color:transparent; }
.novena-newcomer-dismiss:active { opacity:0.7; }
html[data-theme="dark"] .novena-newcomer-intro { background:#f8f5ec; }
html[data-theme="dark"] .novena-newcomer-intro { background:color-mix(in srgb, var(--color-accent) 10%, var(--color-surface)); }
html[data-theme="dark"] .novena-newcomer-title { color:var(--color-accent-light); }
html[data-theme="dark"] .novena-newcomer-dismiss { color:var(--color-accent-light); }

/* UXI-02: Recommendation card */
.novena-recommendation { margin-bottom:var(--space-5); }
.novena-recommendation-label { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-accent-text);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:var(--space-2); }
.novena-recommendation-card { background:var(--color-surface);border:1px solid var(--color-accent);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);padding:var(--space-4);cursor:pointer;-webkit-tap-highlight-color:transparent;box-shadow:var(--shadow-card); }
.novena-recommendation-card:active { transform:scale(0.98); }
.novena-recommendation-icon { width:28px;height:28px;color:var(--color-accent);margin-bottom:var(--space-2); }
.novena-recommendation-icon svg { width:100%;height:100%; }
.novena-recommendation-title { font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-semibold);color:var(--color-heading);margin-bottom:var(--space-2); }
.novena-recommendation-copy { font-family:var(--font-prayer);font-size:var(--text-sm);line-height:1.6;color:var(--color-text-secondary);margin-bottom:var(--space-3); }
.novena-recommendation-meta { display:flex;gap:var(--space-3);font-size:var(--text-xs);color:var(--color-text-tertiary);margin-bottom:var(--space-3); }
.novena-recommendation-begin { background:var(--color-accent);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;min-height:44px;width:100%;-webkit-tap-highlight-color:transparent; }
.novena-recommendation-begin:active { opacity:0.85; }
html[data-theme="dark"] .novena-recommendation-card { background:var(--color-card-bg);border-color:var(--color-accent);box-shadow:none; }
html[data-theme="dark"] .novena-recommendation-label { color:var(--color-accent-light); }
html[data-theme="dark"] .novena-recommendation-title { color:var(--color-accent-light); }
html[data-theme="dark"] .novena-recommendation-begin { background:var(--color-accent);color:var(--color-text-inverse); }

/* UXI-05: Guided step container */
.novena-guided-step { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-4);min-height:120px; }
.novena-step-content p { font-family:var(--font-prayer);font-size:var(--text-base);line-height:1.85;color:var(--color-text-secondary);margin-bottom:var(--space-2); }
.novena-step-content p:last-child { margin-bottom:0; }
html[data-theme="dark"] .novena-guided-step { background:var(--color-card-bg); }

/* UXI-05: Step indicator */
.novena-step-indicator { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-3);text-align:center; }

/* UXI-05: Continue button */
.novena-continue-btn { width:100%;max-width:320px;padding:var(--space-3) var(--space-5);border-radius:var(--radius-full);font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);cursor:pointer;min-height:50px;border:none;background:var(--color-accent);color:var(--color-text-inverse);transition:all 0.15s;-webkit-tap-highlight-color:transparent; }
.novena-continue-btn:active { opacity:0.85;transform:scale(0.98); }
html[data-theme="dark"] .novena-continue-btn { background:var(--color-accent);color:var(--color-text-inverse); }

/* UXI-06b: Mode toggle */
.novena-mode-toggle { display:flex;justify-content:center;gap:0;margin-bottom:var(--space-3); }
.novena-mode-option { display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);background:var(--color-surface);border:1px solid var(--color-border-light);cursor:pointer;min-height:32px;-webkit-tap-highlight-color:transparent;transition:all 0.15s; }
.novena-mode-option:first-child { border-radius:var(--radius-md) 0 0 var(--radius-md);border-right:none; }
.novena-mode-option:last-child { border-radius:0 var(--radius-md) var(--radius-md) 0; }
.novena-mode-option--active { background:var(--color-accent);color:var(--color-text-inverse);border-color:var(--color-accent);font-weight:var(--weight-semibold); }
.novena-mode-option svg { width:14px;height:14px; }
.novena-mode-option:active { opacity:0.85; }
html[data-theme="dark"] .novena-mode-option { background:var(--color-card-bg);border-color:var(--color-border);color:var(--color-text-tertiary); }
html[data-theme="dark"] .novena-mode-option--active { background:var(--color-accent);color:var(--color-text-inverse);border-color:var(--color-accent); }

/* UXI-03c: Master card encouragement */
.novena-master-encouragement { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-accent-text);font-style:italic;margin-bottom:var(--space-2); }
html[data-theme="dark"] .novena-master-encouragement { color:var(--color-accent-light); }

/* UXI-02: Newcomer intro re-show link */
.novena-intro-link { text-align:center;padding:var(--space-4) 0; }
.novena-intro-link-btn { background:none;border:none;font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-accent-text);cursor:pointer;padding:var(--space-2);min-height:44px;-webkit-tap-highlight-color:transparent; }
.novena-intro-link-btn:active { opacity:0.7; }
html[data-theme="dark"] .novena-intro-link-btn { color:var(--color-accent-light); }

/* ── Examination of Conscience (Apple HIG) ── */
/* Exam container/header CSS removed — now uses universal reader overlay */

/* Scroll progress bar — lives in readerHeaderExtra, outside scroll area */
.exam-progress-track { height:2px;background:var(--color-border-light);overflow:hidden; }
.exam-progress-bar { height:100%;background:var(--color-primary);transform:scaleX(0);transform-origin:left;transition:transform 0.1s linear;will-change:transform; }
.reader-overlay[data-mode="examination"] .reader-header-extra { padding:0;border-bottom:none; }

/* Scrolling body */
.exam-body { flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--space-5) var(--space-4);padding-bottom:calc(var(--space-12) + env(safe-area-inset-bottom));-webkit-overscroll-behavior:contain;overscroll-behavior:contain; }
.exam-body > * { max-width:600px;margin-left:auto;margin-right:auto; }

/* ── iOS Inset Grouped List ── */

/* Group label — iOS-style floating section header */
.exam-group-label { font-size:var(--text-sm);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:0.04em;color:var(--color-text-tertiary);padding:var(--space-6) var(--space-4) var(--space-2);margin:0; }
.exam-group-label:first-child { padding-top:0; }

/* Group container — shared rounded corners (iOS Settings style) */
.exam-group { background:var(--color-surface);border-radius:var(--radius-md);overflow:hidden;margin-bottom:var(--space-2); }

/* Row — each commandment within the group */
.exam-row { border-bottom:0.5px solid var(--color-border-light); }
.exam-row--last { border-bottom:none; }

/* Row header — tappable, with number badge and chevron */
.exam-row-header { display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);background:transparent;border:none;cursor:pointer;text-align:left;min-height:52px;-webkit-tap-highlight-color:transparent;transition:background 0.15s; }
.exam-row-header:active { background:rgba(0,0,0,0.04); }
.exam-row.expanded > .exam-row-header { background:rgba(44,62,90,0.03); }

/* Commandment number badge */
.exam-num { width:28px;height:28px;border-radius:50%;background:var(--color-surface-hover);color:var(--color-text-secondary);font-size:13px;font-weight:var(--weight-semibold);display:flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1;border:1.5px solid var(--color-border); }
.exam-row.expanded > .exam-row-header .exam-num { background:var(--color-primary);color:white;border-color:var(--color-primary); }
.exam-num--icon { background:var(--color-surface-hover);color:var(--color-text-tertiary);font-size:14px; }

/* Row title */
.exam-row-title { flex:1;font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-heading);line-height:1.35; }

/* Chevron — rotates 90deg on expand (iOS disclosure style) */
.exam-chev { width:16px;height:16px;flex-shrink:0;color:var(--color-text-tertiary);transition:transform 0.3s cubic-bezier(0.28,0.11,0.32,1);opacity:0.6; }
.exam-row.expanded > .exam-row-header .exam-chev { transform:rotate(90deg); }

/* Animated expand/collapse body — CSS grid transition */
.exam-row-body { display:grid;grid-template-rows:0fr;transition:grid-template-rows 0.35s cubic-bezier(0.28,0.11,0.32,1); }
.exam-row.expanded > .exam-row-body { grid-template-rows:1fr; }
.exam-row-inner { overflow:hidden;padding:0 var(--space-4);opacity:0;transition:opacity 0.25s ease 0.1s; }
.exam-row.expanded > .exam-row-body > .exam-row-inner { padding-bottom:var(--space-4);opacity:1; }

/* CCC ref badge within expanded section */
.exam-ccc-ref { font-family:var(--font-body);font-size:var(--text-sm);line-height:1.4;color:var(--color-text-tertiary);margin-bottom:var(--space-2);padding-top:var(--space-1); }

/* Questions — with checkbox and inline CCC */
.exam-q { padding:var(--space-4) 0;border-top:1px solid var(--color-border-light);display:flex;align-items:flex-start;gap:var(--space-3);transition:background 0.2s;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.exam-q:active { background:rgba(0,0,0,0.02); }
.exam-q:first-of-type { border-top:none; }
.exam-q.checked { background:var(--color-verified-bg);margin:0 calc(var(--space-4) * -1);padding-left:var(--space-4);padding-right:var(--space-4);border-radius:var(--radius-sm);border-left:3px solid var(--color-verified); }
.exam-q.checked .exam-q-text { color:var(--color-text-secondary); }

/* iOS-style round checkbox */
.exam-check { flex-shrink:0;display:flex;align-items:center;padding-top:2px;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.exam-checkbox { position:absolute;opacity:0;width:0;height:0; }
.exam-checkmark { width:24px;height:24px;border:2px solid var(--color-border);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all 0.2s cubic-bezier(0.28,0.11,0.32,1);background:transparent; }
.exam-checkmark svg { width:14px;height:14px;opacity:0;transform:scale(0.5) rotate(-45deg);transition:all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1); }
.exam-checkbox:checked + .exam-checkmark { background:var(--color-primary);border-color:var(--color-primary); }
.exam-checkbox:checked + .exam-checkmark svg { opacity:1;transform:scale(1) rotate(0deg);stroke:white; }

.exam-q-content { flex:1;min-width:0;display:flex;flex-direction:column;gap:4px; }
.exam-q-text { font-family:var(--font-body);font-size:16px;line-height:1.5;text-align:left;color:var(--color-text-secondary); }
.exam-q-ref { align-self:flex-start; }
.exam-q-ref .ref-tap { display:inline-block;min-height:32px;line-height:32px;padding:0 var(--space-3); }
/* CFR1: Pastoral note for Q31 */
.exam-pastoral-note { margin:var(--space-4) 0;padding:var(--space-5) var(--space-4);border-left:none;background:transparent;border-radius:0;text-align:center; }
.exam-pastoral-support { font-family:'Lora',var(--font-prayer);font-size:20px;line-height:1.7;text-align:center;color:var(--color-text-secondary);font-style:normal;margin:0 0 var(--space-3) 0; }
.exam-pastoral-link { color:var(--color-accent);font-weight:var(--weight-semibold);text-decoration:underline; }
.exam-pastoral-quote { font-family:'Lora',var(--font-prayer);font-size:18px;font-style:italic;line-height:1.7;text-align:center;color:var(--color-text-secondary);margin:0; }
.exam-pastoral-cite { font-style:normal;font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary); }
html[data-theme="dark"] .exam-pastoral-note { background:transparent; }
/* PCI-06: Baltimore catechism link from exam */
.exam-baltimore-link { display:none;font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-sacred-text);margin-top:var(--space-1);padding:var(--space-1) 0;min-height:44px;line-height:44px;cursor:pointer;-webkit-tap-highlight-color:transparent;background:none;border:none;text-align:left;width:100%; }
.exam-q.checked .exam-baltimore-link { display:block; }
.exam-baltimore-expand { margin:var(--space-2) 0 var(--space-1); }
.exam-q-noted { display:inline-block;font-size:var(--text-xs);color:var(--color-verified);font-weight:var(--weight-semibold);margin-left:var(--space-2);white-space:nowrap; }
.exam-expand-hint { font-size:var(--text-xs);color:var(--color-text-tertiary);text-align:center;margin-bottom:var(--space-2);font-style:italic; }

/* Inline CCC expansion card — Apple HIG elevated card */
.exam-ccc-card { margin-top:var(--space-3);margin-bottom:var(--space-3);padding:0;background:var(--color-surface);border-radius:12px;border:none;box-shadow:0 1px 3px rgba(0,0,0,0.08),0 4px 12px rgba(0,0,0,0.04);overflow:hidden;animation:examCCCIn 0.3s cubic-bezier(0.28,0.11,0.32,1); }
@keyframes examCCCIn { from { opacity:0;transform:translateY(-6px) scale(0.98); } to { opacity:1;transform:translateY(0) scale(1); } }
.exam-ccc-card-header { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:rgba(74,124,89,0.06);border-bottom:0.5px solid var(--color-border-light); }
.exam-ccc-card-icon { width:22px;height:22px;border-radius:6px;background:var(--color-primary);color:white;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:var(--weight-bold);flex-shrink:0; }
.exam-ccc-card-label { font-size:12px;font-weight:var(--weight-semibold);color:var(--color-primary);text-transform:uppercase;letter-spacing:0.03em;flex:1; }
.exam-ccc-card-num { font-size:12px;font-weight:var(--weight-semibold);color:var(--color-primary);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--space-1);padding:var(--space-3) var(--space-4) 0; }
.exam-ccc-card-num:not(:first-child) { padding-top:var(--space-3);border-top:0.5px solid var(--color-border-light); }
.exam-ccc-card-body { padding:0 var(--space-4) var(--space-3); }
.exam-ccc-card-text { font-size:var(--text-sm);line-height:1.7;color:var(--color-text-secondary);margin-bottom:var(--space-1); }
.exam-ccc-card-text:last-child { margin-bottom:0; }
.exam-ccc-card-quote { font-size:var(--text-sm);line-height:1.7;color:var(--color-text-tertiary);font-style:italic;margin-bottom:var(--space-1);padding-left:var(--space-3);border-left:2px solid var(--color-border-light); }
.exam-ccc-card-more { font-size:var(--text-xs);color:var(--color-primary);cursor:pointer;padding:var(--space-2) var(--space-4) var(--space-3);margin:0;font-weight:var(--weight-medium);display:block; }

/* Active ref-tap highlight */
.ref-tap--active { background:var(--color-primary);color:white;border-radius:var(--radius-full);padding:2px 8px;margin:0; }

/* ── Prayers ── */
.exam-prayer { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-3); }
.exam-prayer-head { display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3); }
.exam-prayer-icon { font-size:20px;line-height:1; }
.exam-prayer-title { font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-heading); }
.exam-prayer-text { font-family:var(--font-prayer);font-size:var(--text-lg);line-height:1.8;color:var(--color-text-secondary);margin-bottom:var(--space-3); }
.exam-prayer-text:last-child { margin-bottom:0; }

/* ── How to Confess (details/summary) ── */
.exam-howto { background:var(--color-surface);border-radius:var(--radius-md);overflow:hidden;margin-bottom:var(--space-3); }
.exam-howto-header { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);cursor:pointer;list-style:none;min-height:52px;-webkit-tap-highlight-color:transparent; }
.exam-howto-header::-webkit-details-marker { display:none; }
.exam-howto-header .exam-chev { margin-left:auto;transition:transform 0.3s cubic-bezier(0.28,0.11,0.32,1); }
.exam-howto[open] > .exam-howto-header .exam-chev { transform:rotate(90deg); }
.exam-howto-label { flex:1;font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-heading); }
.exam-howto-steps { padding:0 var(--space-4) var(--space-4) calc(var(--space-4) + 28px + var(--space-3));margin:0; }
.exam-howto-steps li { font-size:var(--text-lg);line-height:1.7;color:var(--color-text);padding:var(--space-2) 0;border-top:0.5px solid var(--color-border-light); }
.exam-howto-steps li:first-child { border-top:none; }

/* ── Tracker ── */
/* ── Act of Contrition — elevated presentation ── */
.exam-contrition { text-align:center;padding:var(--space-8) var(--space-4);margin-top:64px;border-top:1px solid var(--color-border-light);border-bottom:1px solid var(--color-border-light); }
.exam-contrition-title { font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--color-heading);margin-bottom:var(--space-5); }
.exam-contrition-text { font-family:'Lora',var(--font-prayer);font-size:18px;line-height:1.7;text-align:center;color:var(--color-text-primary);margin-bottom:var(--space-3); }
.exam-contrition-text:last-child { margin-bottom:0; }
.exam-prayer-divider { width:60px;height:1px;background:var(--color-border-light);margin:0 auto; }

/* ── Opening prayer centering screen ── */
/* IPV-09: Exam opening prayer screen (between splash and checklist) */
.exam-prayer-screen { display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:var(--space-6) var(--space-5);text-align:center;background-color:var(--color-reading-surface); }
.exam-prayer-text { font-family:var(--font-prayer);font-size:var(--text-base);color:var(--color-text-secondary);line-height:1.8;max-width:380px; }

/* ── Summary preamble — confessional format ── */
.exam-summary-preamble { font-family:var(--font-prayer);font-size:var(--text-base);color:var(--color-text-secondary);line-height:1.7;font-style:italic;margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border-light); }
.exam-summary-preamble p { margin-bottom:var(--space-2); }
.exam-summary-preamble p:last-child { margin-bottom:0; }

.exam-tracker { text-align:center;padding:var(--space-5) 0 var(--space-3); }
.exam-tracker-status { font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-3); }
.exam-tracker-btn { display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text);cursor:pointer;min-height:44px;transition:all 0.2s cubic-bezier(0.28,0.11,0.32,1);-webkit-tap-highlight-color:transparent; }
.exam-tracker-btn:active { transform:scale(0.96);background:var(--color-surface-hover); }
.exam-tracker-btn.confirmed { background:var(--color-verified-bg);color:var(--color-verified);border-color:var(--color-verified);transform:scale(1.02); }

/* ── Summary section ── */
.exam-summary { background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-5);margin-top:48px;margin-bottom:var(--space-4);border-left:4px solid var(--color-primary);box-shadow:0 2px 8px rgba(44,62,90,0.08),0 0 0 1px rgba(44,62,90,0.06); }
.exam-summary-header { display:flex;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border-light); }
.exam-summary-icon { flex-shrink:0;color:var(--color-primary);margin-top:2px; }
.exam-summary-title { font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--color-heading);margin-bottom:2px; }
.exam-summary-title span { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-tertiary); }
.exam-summary-privacy { font-size:12px;color:var(--color-text-tertiary);font-style:italic; }
.exam-summary-empty { font-size:var(--text-sm);color:var(--color-text-tertiary);padding:var(--space-3) 0; }
.exam-summary--revealed { animation:examSummaryPulse 1.5s ease; }
@keyframes examSummaryPulse { 0%,100%{box-shadow:none} 30%{box-shadow:0 0 0 4px rgba(44,62,90,0.12)} 70%{box-shadow:0 0 0 4px rgba(44,62,90,0.08)} }
.exam-summary-group { margin-bottom:var(--space-5); }
.exam-summary-group:last-child { margin-bottom:0; }
.exam-summary-cmd { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary);text-transform:uppercase;letter-spacing:0.03em;margin-bottom:var(--space-2); }
.exam-summary-items { list-style:none;padding:0;margin:0; }
.exam-summary-items li { font-size:var(--text-base);line-height:1.6;color:var(--color-text);padding:var(--space-2) 0;padding-left:var(--space-3);position:relative; }
.exam-summary-items li::before { content:'\2022';position:absolute;left:0;color:var(--color-primary); }

/* ── Floating footer bar (checked items count) ── */
.exam-footer { display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-5);padding-bottom:max(var(--space-3), env(safe-area-inset-bottom));background:var(--color-surface);border-top:0.5px solid var(--color-border-light);flex-shrink:0;transform:translateY(100%);transition:transform 0.3s cubic-bezier(0.28,0.11,0.32,1);box-shadow:0 -2px 10px rgba(0,0,0,0.06); }
.exam-footer.visible { transform:translateY(0); }
.exam-footer-count { font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary); }
.exam-footer-btn { padding:var(--space-2) var(--space-4);background:var(--color-primary);color:white;border:none;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;min-height:36px;transition:all 0.15s;-webkit-tap-highlight-color:transparent; }
.exam-footer-btn:active { transform:scale(0.95);opacity:0.85; }

/* ── Find Confession — prominent iOS-style filled button ── */
.exam-find-btn { display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-4);background:var(--color-primary);color:white;border:none;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:var(--weight-semibold);cursor:pointer;min-height:52px;transition:all 0.2s cubic-bezier(0.28,0.11,0.32,1);margin-bottom:var(--space-4);-webkit-tap-highlight-color:transparent; }
.exam-find-btn:active { transform:scale(0.97);opacity:0.85; }

/* ── Exam graceful ending ── */
.exam-ending { display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-8) var(--space-5) var(--space-6);margin-top:var(--space-4);border-top:1px solid var(--color-border-light); }
.exam-ending-icon { color:var(--color-primary);opacity:0.5;margin-bottom:var(--space-3); }
.exam-ending-text { font-family:var(--font-prayer);font-size:var(--text-base);font-style:italic;color:var(--color-text-secondary);line-height:1.7;margin-bottom:var(--space-5); }
.exam-ending-btn { padding:var(--space-3) var(--space-6);background:transparent;color:var(--color-primary);border:1.5px solid var(--color-primary);border-radius:var(--radius-full);font-size:var(--text-base);font-weight:var(--weight-semibold);cursor:pointer;min-height:48px;transition:all 0.15s;-webkit-tap-highlight-color:transparent; }
.exam-ending-btn:active { transform:scale(0.97);background:rgba(44,62,90,0.06); }
/* IPV-06: Exam completion moment */
.exam-complete-screen { display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center;padding:var(--space-6); }
.exam-complete-icon { color:var(--color-sacred);margin-bottom:var(--space-3); }
.exam-complete-icon svg { width:28px;height:38px; }
.exam-complete-title { font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--color-text-primary);margin:var(--space-4) 0 var(--space-2); }
.exam-complete-quote { font-family:var(--font-prayer);font-size:var(--text-lg);line-height:1.7;color:var(--color-text-secondary);font-style:italic;margin-bottom:var(--space-2);max-width:320px; }
.exam-complete-ref { font-size:var(--text-xs);color:var(--color-text-tertiary);font-weight:var(--weight-medium);letter-spacing:0.02em;margin-bottom:var(--space-5); }
.exam-complete-btn { padding:var(--space-3) var(--space-6);background:var(--color-primary);color:white;border:none;border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;min-height:44px; }
.exam-complete-btn:active { transform:scale(0.98); }

/* ── Confession tracker on More tab ── */
.confession-tracker { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-3); }
.confession-tracker-icon { color:var(--color-sacred);font-weight:var(--weight-bold); }
.confession-tracker-nudge { color:var(--color-text-tertiary); }
.confession-tracker-nudge a { color:var(--color-primary);text-decoration:none; }

/* ── Dark mode ── */
html[data-theme="dark"] .exam-overlay { background:linear-gradient(180deg, #1C1914 0%, #131110 100%); }
html[data-theme="dark"] .exam-header { background:rgba(26,28,34,0.85); }
html[data-theme="dark"] .exam-close-btn { background:rgba(142,142,147,0.2); }
html[data-theme="dark"] .exam-close-btn:active { background:rgba(142,142,147,0.35); }
html[data-theme="dark"] .exam-group { background:var(--color-surface); }
html[data-theme="dark"] .exam-row-header:active { background:rgba(255,255,255,0.06); }
html[data-theme="dark"] .exam-row-header:active { background:color-mix(in srgb, var(--color-primary) 6%, var(--color-surface)); }
html[data-theme="dark"] .exam-row.expanded > .exam-row-header { background:rgba(255,255,255,0.03); }
html[data-theme="dark"] .exam-prayer { background:var(--color-surface); }
html[data-theme="dark"] .exam-howto { background:var(--color-surface); }
html[data-theme="dark"] .exam-tracker-btn.confirmed { background:rgba(74,124,89,0.15);color:var(--color-verified);border-color:var(--color-verified); }
html[data-theme="dark"] .exam-q.checked { background:rgba(74,124,89,0.1);border-left:3px solid var(--color-verified); }
html[data-theme="dark"] .exam-checkmark { border-color:var(--color-border); }
html[data-theme="dark"] .exam-ccc-card { background:var(--color-surface);box-shadow:0 1px 4px rgba(0,0,0,0.3),0 4px 16px rgba(0,0,0,0.15); }
html[data-theme="dark"] .exam-ccc-card-header { background:rgba(74,124,89,0.1); }
html[data-theme="dark"] .exam-ccc-card-icon { background:var(--color-sacred); }
html[data-theme="dark"] .exam-summary { background:var(--color-surface);box-shadow:0 2px 8px rgba(0,0,0,0.2),0 0 0 1px rgba(255,255,255,0.06); }
/* IDEA-286: Confession sacred surface dark mode */
html[data-theme="dark"] .exam-contrition { border-top-color:rgba(255,255,255,0.08);border-bottom-color:rgba(255,255,255,0.08); }
html[data-theme="dark"] .exam-contrition-text { color:#DEDEDE; }
html[data-theme="dark"] .exam-footer { background:var(--color-surface);box-shadow:0 -2px 10px rgba(0,0,0,0.2); }
html[data-theme="dark"] .ref-tap { background:rgba(255,255,255,0.06);color:var(--color-text-tertiary); }
html[data-theme="dark"] .ref-tap { background:color-mix(in srgb, var(--color-primary) 6%, var(--color-surface));color:var(--color-text-tertiary); }
html[data-theme="dark"] .ref-tap:hover { background:rgba(255,255,255,0.1); }
html[data-theme="dark"] .ref-tap--active { background:var(--color-primary);color:white; }

/* ── PTR-03/04: Section-by-section navigation ── */
.exam-header-extra-row { display:flex;align-items:center;justify-content:center;padding:var(--space-2) var(--space-4);position:relative; }
.exam-howto-icon-btn { position:absolute;right:var(--space-4);background:none;border:none;color:var(--color-text-tertiary);cursor:pointer;padding:var(--space-1);min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent; }
.exam-howto-icon-btn:active { color:var(--color-primary); }
.exam-section-hero { text-align:center;padding:var(--space-6) var(--space-4) var(--space-4); }
.exam-section-num { display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:var(--text-xl);font-weight:var(--weight-bold);margin-bottom:var(--space-3); }
.exam-section-title { font-family:var(--font-prayer);font-size:var(--text-lg);color:var(--color-text-primary);line-height:1.5;max-width:480px;margin:0 auto var(--space-2); }
.exam-section-ccc { margin-top:var(--space-1);margin-bottom:var(--space-4); }
.exam-section-questions { padding-bottom:var(--space-4); }
/* PTR-04: Dot navigation */
.exam-dots { display:flex;justify-content:center;align-items:center;gap:8px;flex-wrap:nowrap; }
.exam-dot-btn { background:none;border:none;padding:10px 4px;min-height:44px;cursor:pointer;display:flex;align-items:center;-webkit-tap-highlight-color:transparent; }
.exam-dot { width:8px;height:8px;border-radius:50%;background:var(--color-text-tertiary);opacity:0.4;transition:all 0.3s; }
.exam-dot.active, .exam-dot.done, .exam-dot.has-items { opacity:1; }
.exam-dot.active { background:var(--color-primary);transform:scale(1.4); }
.exam-dot.done { background:var(--color-primary); }
.exam-dot.has-items { background:var(--color-verified); }
/* Section nav footer */
.exam-nav { display:flex;align-items:center;justify-content:space-between;width:100%;padding:0; }
.exam-nav-back, .exam-nav-next { background:none;border:none;color:var(--color-primary);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;padding:var(--space-2) var(--space-3);min-height:44px;-webkit-tap-highlight-color:transparent; }
.exam-nav-back:disabled { opacity:0.3;pointer-events:none; }
.exam-nav-back:active, .exam-nav-next:active { opacity:0.6; }
.exam-nav-count { font-size:var(--text-xs);color:var(--color-text-secondary);text-align:center;flex:1; }
.exam-nav-count--link { background:var(--color-verified-bg);border:none;color:var(--color-verified);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;-webkit-tap-highlight-color:transparent;flex:1;text-align:center;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full); }
/* How-to-Confess modal */
.exam-howto-modal { position:absolute;inset:0;z-index:var(--z-modal);background:rgba(0,0,0,0.4);display:flex;align-items:flex-end;justify-content:center;opacity:0;transition:opacity 0.2s ease; }
.exam-howto-modal.visible { opacity:1; }
.exam-howto-modal-inner { background:var(--color-bg);border-radius:0;padding:var(--space-5) var(--space-4);padding-top:max(var(--space-5), env(safe-area-inset-top));padding-bottom:max(var(--space-5), env(safe-area-inset-bottom));height:100%;overflow-y:auto;width:100%;max-width:600px; }
.exam-howto-steps { padding-left:var(--space-5);color:var(--color-text-primary);font-size:var(--text-sm);line-height:1.7; }
.exam-howto-steps li { margin-bottom:var(--space-2); }
/* Dark mode */
html[data-theme="dark"] .exam-section-title { color:var(--color-text-primary); }
html[data-theme="dark"] .exam-section-num { background:var(--color-primary); }
html[data-theme="dark"] .exam-nav-back, html[data-theme="dark"] .exam-nav-next { color:var(--color-primary-light); }
html[data-theme="dark"] .exam-nav-count--link { color:var(--color-primary-light); }
html[data-theme="dark"] .exam-howto-modal-inner { background:var(--color-bg); }

/* ── Exam exit confirmation dialog ── */
.exam-exit-dialog-wrap { position:absolute;inset:0;z-index:10;background:rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;padding:var(--space-5);opacity:0;transition:opacity 0.2s ease; }
.exam-exit-dialog-wrap.visible { opacity:1; }
.exam-exit-dialog { background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6) var(--space-5);max-width:320px;width:100%;text-align:center;box-shadow:0 8px 32px rgba(0,0,0,0.18);transform:scale(0.95);transition:transform 0.2s cubic-bezier(0.28,0.11,0.32,1); }
.exam-exit-dialog-wrap.visible .exam-exit-dialog { transform:scale(1); }
.exam-exit-icon { color:var(--color-text-tertiary);margin-bottom:var(--space-3); }
.exam-exit-title { font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--color-heading);margin-bottom:var(--space-2); }
.exam-exit-msg { font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--space-5); }
.exam-exit-actions { display:flex;flex-direction:column;gap:var(--space-2); }
.exam-exit-btn { padding:var(--space-3);border:none;border-radius:var(--radius-full);font-size:var(--text-base);font-weight:var(--weight-semibold);cursor:pointer;min-height:48px;transition:all 0.15s;-webkit-tap-highlight-color:transparent; }
.exam-exit-btn:active { transform:scale(0.97); }
.exam-exit-btn--cancel { background:var(--color-primary);color:white; }
.exam-exit-btn--confirm { background:transparent;color:var(--color-text-tertiary);font-weight:var(--weight-medium); }
.exam-exit-btn--confirm:active { background:rgba(0,0,0,0.04); }
html[data-theme="dark"] .exam-exit-dialog { background:var(--color-surface);box-shadow:0 8px 32px rgba(0,0,0,0.4); }
html[data-theme="dark"] .exam-exit-btn--confirm:active { background:rgba(255,255,255,0.06); }
html[data-theme="dark"] .exam-exit-btn--confirm:active { background:color-mix(in srgb, var(--color-primary) 6%, var(--color-surface)); }
/* CCC-08: Dark mode treatment */
/* CCC liturgical season tints */
:root[data-season="lent"] .ccc-sheet { background:linear-gradient(180deg,#F6F4F8 0%,#F4F2F6 100%); }
:root[data-season="advent"] .ccc-sheet { background:linear-gradient(180deg,#F6F4F8 0%,#F4F2F6 100%); }
:root[data-season="easter"] .ccc-sheet { background:linear-gradient(180deg,#F8F6F1 0%,#F6F4EE 100%); }
:root[data-season="christmas"] .ccc-sheet { background:linear-gradient(180deg,#F8F6F1 0%,#F6F4EE 100%); }
:root[data-season="ordinary"] .ccc-sheet { background:linear-gradient(180deg,#F6F8F5 0%,#F3F6F2 100%); }
/* CR-01: Page nav */
.ccc-page-nav { display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) 0 var(--space-4);margin-top:var(--space-4);border-top:1px solid rgba(0,0,0,0.06); }
.ccc-nav-btn { padding:var(--space-2) var(--space-3);background:rgba(255,255,255,0.6);border:1px solid var(--color-border-light);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-primary);cursor:pointer;min-height:44px;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;display:flex;align-items:center; }
.ccc-nav-btn:active { transform:scale(0.96);background:rgba(255,255,255,0.9); }
.ccc-nav-pos { font-size:var(--text-xs);color:var(--color-text-tertiary); }
.ccc-nav-spacer { width:44px; }
/* CR-02: Section picker */
.ccc-section-picker-btn { display:flex;align-items:center;gap:var(--space-1);background:none;border:none;cursor:pointer;font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic;font-family:var(--font-body);padding:var(--space-1) 0;margin-bottom:var(--space-2);-webkit-tap-highlight-color:transparent; }
.ccc-section-picker-btn:active { opacity:0.6; }
.ccc-section-picker { padding:var(--space-2) 0;margin-bottom:var(--space-4);border-bottom:1px solid var(--color-border-light); }
.ccc-section-btn { display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--space-3);border:none;background:none;cursor:pointer;border-radius:var(--radius-sm);font-size:var(--text-sm);text-align:left;min-height:44px;-webkit-tap-highlight-color:transparent;transition:background var(--transition-fast); }
.ccc-section-btn:active { background:var(--color-surface-hover); }
.ccc-section-btn span:first-child { font-weight:var(--weight-medium);color:var(--color-text-secondary); }
.ccc-section-range { font-size:var(--text-xs);color:var(--color-text-tertiary);white-space:nowrap; }
.ccc-section-active { background:rgba(255,255,255,0.6); }
.ccc-section-active span:first-child { color:var(--color-primary);font-weight:var(--weight-semibold); }
/* CCC dark mode */
html[data-theme="dark"] .ccc-sheet { background:linear-gradient(180deg,#1C1914 0%,#131110 100%); }
html[data-theme="dark"] .ccc-header { background:rgba(26,28,34,0.85);border-bottom-color:var(--color-border); }
html[data-theme="dark"] .ccc-close-btn { background:rgba(142,142,147,0.2); }
html[data-theme="dark"] .ccc-related-item:hover { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .ccc-related-item:hover { background:color-mix(in srgb, var(--color-primary) 4%, var(--color-surface)); }
html[data-theme="dark"] .ccc-related-item:active { background:rgba(255,255,255,0.08); }
html[data-theme="dark"] .ccc-baltimore-card { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .ccc-baltimore-card { background:color-mix(in srgb, white 3%, var(--color-surface)); }
html[data-theme="dark"] .ccc-page-nav { border-top-color:rgba(255,255,255,0.06); }
html[data-theme="dark"] .ccc-nav-btn { background:rgba(255,255,255,0.06);border-color:var(--color-border); }
html[data-theme="dark"] .ccc-nav-btn { background:color-mix(in srgb, var(--color-primary) 6%, var(--color-surface));border-color:var(--color-border); }
html[data-theme="dark"] .ccc-section-picker { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .ccc-section-active { background:rgba(255,255,255,0.04); }
html[data-theme="dark"] .ccc-section-active { background:color-mix(in srgb, var(--color-primary) 4%, var(--color-surface)); }
/* CCC Sources / Footnotes collapsible section */
.ccc-sources { margin-top:var(--space-3);border-top:1px solid var(--color-border-light); }
.ccc-sources-header { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) 0;font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);cursor:pointer;list-style:none; }
.ccc-sources-header::-webkit-details-marker { display:none; }
.ccc-sources-count { background:rgba(0,0,0,0.04);padding:0 6px;border-radius:var(--radius-full);font-size:10px; }
.ccc-sources-body { padding-bottom:var(--space-3); }
.ccc-source-item { display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1);padding:var(--space-1) 0;font-size:var(--text-xs);color:var(--color-text-secondary); }
.ccc-source-type { font-weight:var(--weight-semibold);color:var(--color-text-tertiary);min-width:80px; }
.ccc-source-name { font-weight:var(--weight-medium); }
.ccc-source-work { font-style:italic; }
.ccc-source-ref { color:var(--color-text-tertiary); }
html[data-theme="dark"] .ccc-sources { border-top-color:var(--color-border); }
html[data-theme="dark"] .ccc-sources-count { background:rgba(255,255,255,0.08); }
/* CCC/Bible Explore button */
.ccc-explore-btn, .bible-explore-btn { display:block;width:100%;margin-top:var(--space-4);padding:var(--space-3);background:none;border:1px solid var(--color-border-light);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-sacred-text);cursor:pointer;text-align:center;-webkit-tap-highlight-color:transparent;transition:background var(--transition-fast); }
.ccc-explore-btn:hover, .bible-explore-btn:hover { background:var(--color-surface-hover); }
html[data-theme="dark"] .ccc-explore-btn, html[data-theme="dark"] .bible-explore-btn { border-color:var(--color-border); }
/* v1 prod gate: hide Explore entry points until Explore ships — remove this block when ready */
.ccc-explore-btn, .bible-explore-btn { display:none; }

/* ── EXPLORE MODULE ── */
/* Explore container/header CSS removed — now uses universal reader overlay */
.explore-trail { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);overflow-x:auto;flex-shrink:0;border-bottom:1px solid var(--color-border-light);-webkit-mask-image:linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);mask-image:linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%); }
.explore-crumb { font-family:var(--font-display);font-size:var(--text-xs);color:var(--color-sacred-text);cursor:pointer;white-space:nowrap;opacity:0.5;transition:opacity var(--transition-fast);-webkit-tap-highlight-color:transparent; }
.explore-crumb:hover { opacity:0.8; }
.explore-crumb--active { color:var(--color-text-primary);font-weight:var(--weight-semibold);opacity:1;cursor:default; }
.explore-crumb-sep { font-size:10px;color:var(--color-border);flex-shrink:0; }
.explore-body { flex:1;overflow-y:auto;padding:var(--space-4);-webkit-overflow-scrolling:touch;transition:opacity 0.15s; }
.explore-body > * { max-width:540px;margin-left:auto;margin-right:auto; }
@keyframes exploreEnter { from { opacity:0;transform:translateY(8px); } to { opacity:1;transform:translateY(0); } }
@keyframes exploreReturn { from { opacity:0;transform:translateY(-6px); } to { opacity:1;transform:translateY(0); } }
.explore-body--entering { animation:exploreEnter 0.25s ease-out both; }
.explore-body--returning { animation:exploreReturn 0.2s ease-out both; }
.explore-loading { font-family:var(--font-prayer);font-size:var(--text-base);color:var(--color-text-tertiary);font-style:italic;padding:var(--space-8) 0;text-align:center; }
.explore-heading { display:flex;align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border-light); }
.explore-primary-num { font-family:var(--font-display);font-size:var(--text-3xl);font-weight:700;color:var(--color-sacred-text);line-height:1;flex-shrink:0; }
.explore-context { font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-tertiary);line-height:1.3; }
.explore-primary-text { font-family:var(--font-prayer);font-size:var(--text-base);color:var(--color-text-primary);line-height:1.9;margin-bottom:var(--space-5); }
.explore-primary-text p { margin:0 0 var(--space-4) 0; }
.explore-primary-text p:last-child { margin-bottom:0; }
.explore-primary-text blockquote { margin:var(--space-4) 0;padding:var(--space-4) var(--space-5);border-left:3px solid var(--color-sacred);background:var(--color-sacred-pale);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-style:italic;color:var(--color-text-secondary);font-size:var(--text-sm);line-height:1.8; }
.explore-muted { color:var(--color-text-tertiary);font-style:italic; }
.explore-open-btn { display:inline-block;margin:var(--space-3) 0;padding:var(--space-2) var(--space-4);background:none;border:1px solid var(--color-border-light);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-sacred-text);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.explore-baltimore-inline { background:var(--color-sacred-pale);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-5);border-left:3px solid var(--color-sacred); }
.explore-baltimore-label { font-family:var(--font-display);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-sacred-text);margin-bottom:var(--space-2); }
.explore-baltimore-q { font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.4;margin-bottom:var(--space-2); }
.explore-baltimore-a { font-family:var(--font-prayer);font-size:var(--text-base);color:var(--color-text-secondary);line-height:1.7;font-style:italic; }
/* Connection tabs */
.explore-conn-tabs { display:flex;gap:0;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--color-border-light); }
.explore-conn-tabs::-webkit-scrollbar { display:none; }
.explore-conn-tab { flex-shrink:0;padding:var(--space-3) var(--space-4);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);white-space:nowrap;border-bottom:2px solid transparent;transition:all var(--transition-fast);min-height:40px;display:flex;align-items:center;gap:var(--space-1);background:none;border-top:none;border-left:none;border-right:none;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.explore-conn-tab--active { color:var(--color-primary);border-bottom-color:var(--color-primary); }
.explore-conn-panel { padding:var(--space-3) 0;animation:fadeIn 0.2s ease; }
/* RFR-12: duplicate @keyframes fadeIn removed — canonical version at line 281 */
.explore-conn-item { padding:var(--space-2) 0;border-bottom:1px solid var(--color-border-light); }
.explore-conn-item:last-child { border-bottom:none; }
.explore-conn-item--tap { cursor:pointer;-webkit-tap-highlight-color:transparent; }
.explore-conn-item--tap:active { opacity:0.7; }
.explore-conn-item-label { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary); }
.explore-conn-item-context { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:1px; }
.explore-conn-item-preview { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.5;margin-top:var(--space-1);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden; }
/* Items */
.explore-item { padding:var(--space-2) 0;border-bottom:1px solid var(--color-border-light);transition:background var(--transition-fast); }
.explore-item:last-child { border-bottom:none; }
.explore-item--tap { cursor:pointer;-webkit-tap-highlight-color:transparent; }
.explore-item--tap:active { background:var(--color-surface-hover);margin:0 calc(-1 * var(--space-3));padding-left:var(--space-3);padding-right:var(--space-3);border-radius:var(--radius-sm); }
.explore-item-label { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary); }
.explore-item-context { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:1px; }
.explore-item-detail { font-family:var(--font-prayer);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6;margin-top:var(--space-1);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden; }
.explore-empty { font-size:var(--text-sm);color:var(--color-text-tertiary);font-style:italic;text-align:center;padding:var(--space-8) 0; }
/* Landing opener */
.explore-opener { text-align:center;padding:var(--space-6) var(--space-4) var(--space-5);margin-bottom:var(--space-4);border-bottom:1px solid var(--color-border-light); }
.explore-opener-text { font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--color-text-primary);line-height:1.3;margin-bottom:var(--space-2); }
.explore-opener-answer { font-family:var(--font-prayer);font-size:var(--text-base);color:var(--color-text-secondary);font-style:italic;line-height:1.6;margin-bottom:var(--space-3); }
.explore-opener-link { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-sacred-text);display:inline-block;background:none;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.explore-opener-link:active { opacity:0.7; }
/* Search */
.explore-search-wrap { margin-bottom:var(--space-5); }
.explore-search-bar { display:flex;align-items:center;background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-md);padding:0 var(--space-3);height:44px;gap:var(--space-2); }
.explore-search-bar svg { color:var(--color-text-tertiary);flex-shrink:0; }
.explore-search-bar input { flex:1;height:100%;font-family:var(--font-body);font-size:var(--text-sm);border:none;background:transparent;outline:none;color:var(--color-text-primary); }
.explore-search-results { margin-top:var(--space-2); }
.explore-search-group { margin-bottom:var(--space-3); }
.explore-search-group-label { font-size:10px;font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--space-1);padding:0 var(--space-1); }
.explore-search-more { font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic;padding:var(--space-1) var(--space-3); }
.explore-search-empty { font-size:var(--text-sm);color:var(--color-text-tertiary);font-style:italic;padding:var(--space-3);text-align:center; }
/* Section labels */
.explore-section-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:var(--space-3);margin-top:var(--space-5); }
.explore-section-label:first-child { margin-top:0; }
/* REF-01: Source cards + CCC collapsible */
.explore-source-grid { display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3); }
.explore-source-card { padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-md);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all var(--transition-fast);min-height:64px;display:flex;flex-direction:column;justify-content:center; }
.explore-source-card:active { transform:scale(0.98);box-shadow:var(--shadow-card); }
/* Source card identity via left border */
.explore-source-card:nth-child(1) { border-left:3px solid var(--color-primary); }
.explore-source-card:nth-child(2) { border-left:3px solid var(--color-sacred); }
.explore-source-card:nth-child(3) { border-left:3px solid var(--color-verified); }
.explore-source-card:nth-child(4) { border-left:3px solid var(--color-primary-muted); }
.explore-source-card:nth-child(5) { border-left:3px solid #7C3AED; }
.explore-source-title { font-family:var(--font-display);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);line-height:1.3; }
.explore-source-subtitle { font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-1); }
/* REF-05: Bible genre grouping */
.explore-bible-genre-label { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);padding:var(--space-2) 0 var(--space-1); }
.explore-bible-books { display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);margin-bottom:var(--space-3); }
@media (min-width:480px) { .explore-bible-books { grid-template-columns:1fr 1fr 1fr; } }
.explore-bible-book { display:flex;flex-direction:column;padding:var(--space-2) var(--space-3);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);text-align:left;cursor:pointer;min-height:40px;justify-content:center;transition:background var(--transition-fast); }
.explore-bible-book:active { background:var(--color-surface-hover); }
.explore-bible-book-name { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary); }
/* BUG-05: Lectionary season grouping */
.explore-lect-season { margin-bottom:var(--space-4); }
.explore-lect-season-label { font-family:var(--font-display);font-size:var(--text-base);font-weight:700;color:var(--color-text-primary);padding:var(--space-3) 0 var(--space-2);border-bottom:1px solid var(--color-border-light);margin-bottom:var(--space-1); }
.explore-lect-day { border-bottom:1px solid var(--color-border-light); }
.explore-lect-day-header { display:flex;align-items:center;padding:var(--space-3) 0;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);cursor:pointer;list-style:none;min-height:44px; }
.explore-lect-day-header::-webkit-details-marker { display:none; }
.explore-lect-day-body { padding-bottom:var(--space-3); }
.explore-lect-reading { display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-2) 0;cursor:pointer;-webkit-tap-highlight-color:transparent; }
.explore-lect-reading:active { opacity:0.7; }
.explore-lect-type { font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);min-width:100px;flex-shrink:0; }
.explore-lect-ref { font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary); }
/* REF-03: Baltimore show all */
.explore-show-all-btn { display:block;width:100%;padding:var(--space-3);text-align:center;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-primary);cursor:pointer;margin-top:var(--space-2);background:none;border:none;-webkit-tap-highlight-color:transparent; }
.explore-show-all-btn:active { opacity:0.7; }
/* P2-03: Page navigation bar */
.explore-page-nav { display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) 0;margin-top:var(--space-5);border-top:1px solid var(--color-border-light); }
.explore-nav-btn { width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--text-lg);color:var(--color-primary);background:var(--color-surface);border:1px solid var(--color-border-light);cursor:pointer;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent; }
.explore-nav-btn:active { background:var(--color-surface-hover);transform:scale(0.95); }
.explore-nav-pos { font-size:var(--text-xs);color:var(--color-text-tertiary);font-variant-numeric:tabular-nums; }
.explore-nav-spacer { width:44px; }
/* P2-04: Connection container + overflow */
.explore-conn { margin-top:var(--space-5);border-top:1px solid var(--color-border-light); }
.explore-conn-tab-count { font-size:10px;color:var(--color-text-tertiary);background:var(--color-bg);padding:0 4px;border-radius:var(--radius-full);min-width:16px;text-align:center;margin-left:var(--space-1); }
.explore-conn-overflow-btn { font-size:var(--text-xs);color:var(--color-text-tertiary);cursor:pointer;padding:var(--space-2) 0;list-style:none; }
.explore-conn-overflow-btn::-webkit-details-marker { display:none; }
/* P2-05: CCC Hierarchy TOC */
.explore-hier-part { border-bottom:1px solid var(--color-border-light); }
.explore-hier-part-header { display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) 0;cursor:pointer;list-style:none;min-height:48px; }
.explore-hier-part-header::-webkit-details-marker { display:none; }
.explore-hier-part-title { font-family:var(--font-display);font-size:var(--text-base);font-weight:700;color:var(--color-text-primary);line-height:1.3; }
.explore-hier-range { font-size:var(--text-xs);color:var(--color-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:var(--space-3); }
.explore-hier-section { padding-left:var(--space-3); }
.explore-hier-section-header { display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) 0;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-primary);cursor:pointer;list-style:none;min-height:44px; }
.explore-hier-section-header::-webkit-details-marker { display:none; }
.explore-hier-chapter { padding-left:var(--space-3); }
.explore-hier-chapter-header { display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) 0;font-size:var(--text-sm);color:var(--color-text-secondary);cursor:pointer;list-style:none;min-height:40px; }
.explore-hier-chapter-header::-webkit-details-marker { display:none; }
/* Dark mode overrides */
html[data-theme="dark"] .explore-overlay { background:linear-gradient(180deg,#1C1914 0%,#131110 100%); }
html[data-theme="dark"] .explore-header { background:rgba(26,28,34,0.85);border-bottom-color:var(--color-border); }
html[data-theme="dark"] .explore-trail { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .explore-item--tap:active { background:rgba(255,255,255,0.08); }
html[data-theme="dark"] .explore-conn-tabs { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .explore-open-btn { border-color:var(--color-border); }
html[data-theme="dark"] .explore-baltimore-inline { background:var(--color-sacred-pale);border-left-color:var(--color-sacred); }
html[data-theme="dark"] .explore-source-card { background:rgba(255,255,255,0.03);border-color:var(--color-border); }
html[data-theme="dark"] .explore-search-bar { background:var(--color-surface);border-color:var(--color-border); }
html[data-theme="dark"] .explore-heading { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .explore-lect-season-label { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .explore-page-nav { border-top-color:var(--color-border); }
html[data-theme="dark"] .explore-nav-btn { background:var(--color-surface);border-color:var(--color-border); }
html[data-theme="dark"] .explore-conn { border-top-color:var(--color-border); }
html[data-theme="dark"] .explore-hier-part { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .explore-conn-item { border-bottom-color:var(--color-border); }

/* ── Bible Reader (Reading Room) ── */
/* Bible container/header CSS removed — now uses universal reader overlay */
.bible-loading { text-align:center;padding:var(--space-6);color:var(--color-text-tertiary);font-size:var(--text-sm); }
.bible-error { text-align:center;padding:var(--space-6);color:var(--color-text-tertiary);font-size:var(--text-sm);font-style:italic; }

/* RD-03: Section context & header — centered chapter heading */
.bible-section-context { font-size:var(--text-xs);color:var(--color-text-tertiary);font-weight:var(--weight-medium);text-align:center;letter-spacing:0.04em;text-transform:uppercase;margin-bottom:var(--space-1); }
.bible-ref-header { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--color-text-primary);text-align:center;margin-bottom:var(--space-1);line-height:1.2; }
.bible-translation-label { font-size:var(--text-xs);color:var(--color-text-tertiary);text-align:center;margin-bottom:var(--space-6);letter-spacing:0.02em; }

/* RD-02: Verse text — sacred reading typography */
.bible-verse-text { font-family:var(--font-prayer);font-size:1.125rem;line-height:2.0;color:var(--color-text-primary);letter-spacing:0.005em; }
.bible-verse-num { font-size:0.6em;color:var(--color-text-tertiary);vertical-align:super;font-weight:var(--weight-medium);font-family:var(--font-body);margin-right:2px;opacity:0.6; }

/* RD-09: Target verse highlight — gradient feathered */
.bible-verse--target { background:linear-gradient(to bottom,transparent 0%,var(--color-sacred-pale) 8%,var(--color-sacred-pale) 92%,transparent 100%);border-radius:2px;padding:2px 4px;margin:-2px -4px; }
.bible-verse-gap { height:0.75em;border-bottom:1px solid var(--color-border, #e0e0e0);margin:0.5em 2em;opacity:0.4; }

/* BR-03: Chapter picker */
.bible-chapter-picker-btn { font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--color-primary);background:none;border:none;cursor:pointer;display:inline-flex;align-items:center;-webkit-tap-highlight-color:transparent; }
.bible-chapter-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:var(--space-1);padding:var(--space-3) 0;margin-bottom:var(--space-3);border-bottom:1px solid var(--color-border-light); }
.bible-ch-btn { display:flex;align-items:center;justify-content:center;height:36px;font-size:var(--text-sm);color:var(--color-text-primary);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);cursor:pointer;-webkit-tap-highlight-color:transparent; }
.bible-ch-btn:active { background:var(--color-surface-hover); }
.bible-ch-active { background:var(--color-primary);color:white;border-color:var(--color-primary);font-weight:var(--weight-semibold); }

/* BR-05: Book picker */
.bible-book-picker-btn { font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--color-text-primary);background:none;border:none;cursor:pointer;display:inline-flex;align-items:center;-webkit-tap-highlight-color:transparent; }
.bible-book-picker { max-height:50vh;overflow-y:auto;padding:var(--space-3) 0;border-bottom:1px solid var(--color-border-light); }
.bible-genre-label { font-size:10px;font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.04em;padding:var(--space-2) 0 var(--space-1); }
.bible-book-list { display:flex;flex-wrap:wrap;gap:var(--space-1);margin-bottom:var(--space-2); }
.bible-book-btn { padding:var(--space-1) var(--space-2);font-size:var(--text-xs);color:var(--color-text-primary);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);cursor:pointer;min-height:32px;-webkit-tap-highlight-color:transparent; }
.bible-book-btn:active { background:var(--color-surface-hover); }
.bible-book-active { background:var(--color-primary);color:white;border-color:var(--color-primary); }

/* Listen button */
.bible-listen-btn { display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:rgba(255,255,255,0.6);border:1px solid var(--color-border-light);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary);cursor:pointer;margin-bottom:var(--space-4);min-height:36px;transition:all 0.15s;-webkit-tap-highlight-color:transparent; }
.bible-listen-btn:active { transform:scale(0.97);background:rgba(255,255,255,0.9); }
.bible-listen-btn.speaking { background:var(--color-primary);color:white;border-color:var(--color-primary); }
.bible-listen-btn.speaking svg { stroke:white; }

/* RD-07: Chapter navigation — pill buttons */
.bible-chapter-nav { display:flex;align-items:center;justify-content:space-between;padding:var(--space-6) 0 var(--space-4);margin-top:var(--space-5);border-top:1px solid rgba(0,0,0,0.06);gap:var(--space-3); }
.bible-nav-btn { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:rgba(255,255,255,0.6);border:1px solid var(--color-border-light);border-radius:var(--radius-full);cursor:pointer;min-height:44px;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent; }
.bible-nav-btn:active { transform:scale(0.96);background:rgba(255,255,255,0.9); }
.bible-nav-arrow { font-size:var(--text-base);color:var(--color-primary); }
.bible-nav-label { font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-primary); }
.bible-nav-pos { font-size:var(--text-xs);color:var(--color-text-tertiary);text-align:center;flex-shrink:1;min-width:0; }
.bible-nav-spacer { width:44px; }

/* RD-08: Cross-references — quiet margin notes */
.bible-refs-section { margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid rgba(0,0,0,0.04); }
.bible-refs-summary { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-tertiary);cursor:pointer;list-style:none;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0; }
.bible-refs-summary::-webkit-details-marker { display:none; }
.bible-refs-count { background:rgba(0,0,0,0.04);padding:1px 6px;border-radius:var(--radius-full);font-size:10px;font-variant-numeric:tabular-nums; }
.bible-related-item { padding:var(--space-2) var(--space-3);margin:0 calc(-1 * var(--space-3));border-radius:var(--radius-sm);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background 0.15s; }
.bible-related-item:active { background:rgba(0,0,0,0.06); }
.bible-related-ref { font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-primary); }
.bible-related-genre { font-size:10px;color:var(--color-text-tertiary);font-style:italic; }

/* Liturgical season tints — now applied to reader overlay via data-mode="bible" */

/* Bible dark mode */
html[data-theme="dark"] .bible-sheet { background:linear-gradient(180deg,#1C1914 0%,#131110 100%); }
html[data-theme="dark"] .bible-header { background:rgba(26,28,34,0.85);border-bottom-color:var(--color-border); }
html[data-theme="dark"] .bible-close-btn { background:rgba(142,142,147,0.2); }
html[data-theme="dark"] .bible-listen-btn { background:var(--color-surface);border-color:var(--color-border); }
html[data-theme="dark"] .bible-nav-btn { background:rgba(255,255,255,0.06);border-color:var(--color-border); }
html[data-theme="dark"] .bible-nav-btn { background:color-mix(in srgb, var(--color-primary) 6%, var(--color-surface));border-color:var(--color-border); }
html[data-theme="dark"] .bible-chapter-nav { border-top-color:rgba(255,255,255,0.06); }
html[data-theme="dark"] .bible-refs-section { border-top-color:rgba(255,255,255,0.04); }
html[data-theme="dark"] .bible-refs-count { background:rgba(255,255,255,0.06); }
html[data-theme="dark"] .bible-refs-count { background:color-mix(in srgb, white 4%, var(--color-surface)); }
html[data-theme="dark"] .bible-related-item:active { background:rgba(255,255,255,0.08); }
html[data-theme="dark"] .bible-ch-btn { border-color:var(--color-border); }
html[data-theme="dark"] .bible-book-btn { border-color:var(--color-border); }
html[data-theme="dark"] .bible-chapter-grid { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .bible-book-picker { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .bible-verse-gap { border-color:var(--color-border-dark, #444); }

/* ── Settings (OW-25) ── */
/* Settings container/header CSS removed — now uses universal reader overlay */

.settings-group { margin-bottom:var(--space-5); }
.settings-group-title { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:var(--space-3); }
.settings-row { display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) 0;border-bottom:1px solid var(--color-border-light); }
.settings-label { font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary); }

/* Toggle switch */
.settings-toggle { position:relative;width:44px;height:26px;border-radius:13px;background:var(--color-border);border:none;cursor:pointer;transition:background 0.2s;-webkit-tap-highlight-color:transparent;flex-shrink:0; }
.settings-toggle.on { background:var(--color-verified); }
.settings-toggle-knob { position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:white;box-shadow:0 1px 3px rgba(0,0,0,0.2);transition:transform 0.2s; }
.settings-toggle.on .settings-toggle-knob { transform:translateX(18px); }

/* Segmented control */
.settings-seg { display:flex;background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);overflow:hidden; }
.settings-seg-btn { padding:var(--space-2) var(--space-4);border:none;background:none;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-tertiary);cursor:pointer;transition:all 0.15s;-webkit-tap-highlight-color:transparent; }
.settings-seg-btn.active { background:var(--color-primary);color:white; }
.settings-seg-btn:not(:last-child) { border-right:1px solid var(--color-border-light); }
.settings-seg-sm { font-size:var(--text-xs); }
.settings-seg-lg { font-size:var(--text-base);font-weight:var(--weight-semibold); }
.settings-seg-xl { font-size:21px; }

/* Action buttons (privacy) */
.settings-action-btn { display:block;width:100%;text-align:left;padding:var(--space-3) 0;border:none;background:none;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-primary);cursor:pointer;border-bottom:1px solid var(--color-border-light);-webkit-tap-highlight-color:transparent; }
.settings-action-btn:active { opacity:0.7; }
.settings-action-danger { color:var(--color-fav); }

/* About section */
.settings-about { opacity:1; }
.settings-about-row { font-size:var(--text-xs);color:var(--color-text-tertiary);padding:var(--space-1) 0; }
.settings-about-row a { color:var(--color-primary);text-decoration:none; }
.settings-about-block { padding:0; }
.settings-about-text { font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--space-3); }
.settings-about-text:last-of-type { margin-bottom:0; }
.settings-about-text strong { color:var(--color-text-primary);font-weight:var(--weight-semibold); }
.settings-link-btn { background:none;border:none;color:var(--color-primary);font-size:var(--text-xs);font-weight:var(--weight-medium);cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent; }
.settings-contact-field { display:block;width:100%;box-sizing:border-box;font-size:var(--text-sm);font-family:var(--font-body);color:var(--color-text-primary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);resize:vertical;line-height:1.5; }
.settings-contact-field:focus { outline:none;border-color:var(--color-primary); }
.settings-contact-btn { background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;min-height:40px;-webkit-tap-highlight-color:transparent; }
.settings-contact-btn:disabled { opacity:0.5;cursor:default; }

/* ── SET-01: Zone divider ── */
.settings-zone-divider { margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-border); }

/* ── SET-02/SET-03: Collapsible disclosure sections ── */
.settings-disclosure { border:none; }
.settings-disclosure-header { display:flex;align-items:center;justify-content:space-between;cursor:pointer;list-style:none;padding:var(--space-1) 0;-webkit-tap-highlight-color:transparent; }
.settings-disclosure-header::-webkit-details-marker { display:none; }
.settings-disclosure-chevron { color:var(--color-text-tertiary);transition:transform 0.2s ease;flex-shrink:0; }
details.settings-disclosure[open] .settings-disclosure-chevron { transform:rotate(180deg); }
.settings-disclosure-body { padding-top:var(--space-3); }
.settings-info-text { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6;margin:0 0 var(--space-3) 0; }
.settings-info-text:last-child { margin-bottom:0; }
.settings-info-list { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6;margin:0 0 var(--space-3) 0;padding-left:20px; }
.settings-info-list li { margin-bottom:6px; }
.settings-info-list li:last-child { margin-bottom:0; }

/* ── SET-03: Developer section ── */
.settings-dev-stack { font-family:'SF Mono','Menlo','Consolas',monospace;font-size:var(--text-xs);color:var(--color-text-tertiary);background:var(--color-surface-hover);padding:var(--space-3);border-radius:var(--radius-sm);line-height:1.5; }
.settings-dev-github { display:inline-flex;align-items:center;gap:var(--space-2);margin-top:var(--space-3);padding:var(--space-2) var(--space-4);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-inverse);background:var(--color-primary);border-radius:var(--radius-sm);text-decoration:none;min-height:44px;-webkit-tap-highlight-color:transparent;transition:opacity 0.15s; }
.settings-dev-github:active { opacity:0.7; }
.settings-dev-github svg { flex-shrink:0; }

/* ── SET-04: About section enriched ── */
.settings-about-link { color:var(--color-primary);text-decoration:none;font-weight:var(--weight-semibold); }
.settings-about-link:active { opacity:0.7; }
.settings-about-meta { display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-3);font-size:var(--text-xs);color:var(--color-text-tertiary); }
/* Source information rows */
.settings-sources { display:flex;flex-direction:column;gap:var(--space-2); }
.settings-source-row { font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.5;display:flex;flex-direction:column;gap:1px; }
.settings-source-row strong { font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-primary);text-transform:uppercase;letter-spacing:0.03em; }
.settings-source-note { font-size:var(--text-xs);color:var(--color-text-tertiary);font-style:italic;margin-top:var(--space-2);margin-bottom:0; }

html[data-theme="dark"] .settings-contact-field { background:var(--color-surface-hover);border-color:var(--color-border); }

/* More tab — Settings card */

/* Dark mode — Settings */
html[data-theme="dark"] .settings-close-btn:active { background:rgba(255,255,255,0.08); }
html[data-theme="dark"] .settings-toggle { background:var(--color-border); }
html[data-theme="dark"] .settings-toggle.on { background:var(--color-verified); }
html[data-theme="dark"] .settings-seg { background:var(--color-surface);border-color:var(--color-border); }
html[data-theme="dark"] .settings-seg-btn:not(:last-child) { border-color:var(--color-border); }
html[data-theme="dark"] .settings-action-btn { border-color:var(--color-border); }
html[data-theme="dark"] .settings-row { border-color:var(--color-border); }
html[data-theme="dark"] .settings-seg-btn { color:var(--color-text-secondary); }
html[data-theme="dark"] .settings-seg-btn.active { background:var(--color-primary);color:white; }

/* ── SET-05: Dark mode for new settings sections ── */
html[data-theme="dark"] .settings-zone-divider { border-top-color:var(--color-border); }
html[data-theme="dark"] .settings-info-text { color:var(--color-text-secondary); }
html[data-theme="dark"] .settings-dev-stack { background:rgba(255,255,255,0.05);color:var(--color-text-secondary); }
html[data-theme="dark"] .settings-dev-github { background:var(--color-primary-light); }

/* ══════════════════════════════════════════════════════════════════════════════
   DESKTOP RESPONSIVE — centered panels, contained overlays, better grids
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── Bible sheet: center on desktop (matches CCC sheet pattern) ── */
@media (min-width:768px) {
  .bible-sheet { left:50%;right:auto;width:100%;max-width:var(--max-width);transform:translate(-50%,100%); }
  .bible-sheet.open { transform:translate(-50%,0); }
}

/* ── Explore overlay: constrained centered panel on desktop ── */
@media (min-width:768px) {
  .explore-overlay { background:rgba(26,30,38,0.35);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);justify-content:flex-start;align-items:center;padding-top:2vh;transform:translateY(100%); }
  .explore-overlay.open { transform:translateY(0); }
  .explore-header { width:min(640px,90vw);background:var(--color-bg);border-radius:var(--radius-lg) var(--radius-lg) 0 0;flex-shrink:0; }
  .explore-trail { width:min(640px,90vw);background:var(--color-bg); }
  .explore-body { width:min(640px,90vw);max-height:calc(96vh - 100px);background:var(--color-bg);border-radius:0 0 var(--radius-lg) var(--radius-lg);box-shadow:0 8px 40px rgba(0,0,0,0.12); }
}

/* ── Settings overlay: backdrop + centered card on desktop ── */
@media (min-width:768px) {
  .settings-overlay { background:rgba(26,30,38,0.35);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);justify-content:flex-start;align-items:center;padding-top:5vh; }
  .settings-overlay.active { opacity:1; }
  .settings-header { width:min(520px,90vw);background:var(--color-bg);border-radius:var(--radius-lg) var(--radius-lg) 0 0;flex-shrink:0; }
  .settings-body { width:min(520px,90vw);max-height:calc(90vh - 60px);background:var(--color-bg);border-radius:0 0 var(--radius-lg) var(--radius-lg);box-shadow:0 8px 40px rgba(0,0,0,0.15); }
}

/* PTR-08: Dead overlay CSS removed — old .rosary-overlay, .exam-overlay, .stations-overlay, .novena-overlay classes no longer exist in DOM (replaced by universal reader overlay) */

/* PMG: Removed — prayer tools grid is always 2-column now */

/* ── Rosary mystery grid: 2x2 on wider screens ── */
@media (min-width:680px) {
  .rosary-set-grid { grid-template-columns:1fr 1fr; }
}

/* ── Dark mode desktop overrides ── */
@media (min-width:768px) {
  html[data-theme="dark"] .settings-overlay,
  html[data-theme="dark"] .explore-overlay { background:rgba(0,0,0,0.5); }

  html[data-theme="dark"] .settings-header,
  html[data-theme="dark"] .settings-body { background:var(--color-bg); }
  html[data-theme="dark"] .settings-body { box-shadow:0 8px 40px rgba(0,0,0,0.5); }

  html[data-theme="dark"] .explore-header,
  html[data-theme="dark"] .explore-trail,
  html[data-theme="dark"] .explore-body { background:var(--color-bg); }
  html[data-theme="dark"] .explore-body { box-shadow:0 8px 40px rgba(0,0,0,0.5); }
}

/* ═══════════════════════════════════════════════════════════════
   DSN-37: Morning Missal Interior — Design Visual Treatment
   ═══════════════════════════════════════════════════════════════ */

/* ── MRL-01: Missal reader bulletin flow (single-column card layout) ── */
/* MLF-01: Zone container layout — zones manage their own spacing */
.missal-bulletin-flow {
  display: flex;
  flex-direction: column;
  gap: 0;
  contain: content;
  content-visibility: auto;
}

/* MLF-01: Zone spacing — vertical rhythm between zones */
.missal-zone--context {
  margin-bottom: var(--space-5);
}
.missal-zone--primary {
  margin-bottom: 0; /* Heavy divider provides the zone gap */
  padding-bottom: 0; /* DSN-48d: Tighter zone transitions */
}
.missal-zone--secondary {
  margin-bottom: 0; /* Medium divider provides the zone gap */
}
.missal-zone--scripture {
  margin-bottom: var(--space-6);
}
.missal-zone--formation {
  margin-bottom: 0;
  padding-top: 0; /* DSN-48e: Tighter zone transitions */
}

/* MLF-01: Intra-zone spacing */
.missal-zone--primary > * + * {
  margin-top: var(--space-4);
}
.missal-zone--secondary > * + * {
  margin-top: var(--space-4);
}
.missal-zone--scripture > * + * {
  margin-top: var(--space-3);
}
.missal-zone--formation > * + * {
  margin-top: var(--space-4);
}

/* ── MRL-02: Expanded card modifiers (full content, no truncation) ── */
.msb-hero--expanded .msb-hero__body {
  max-height: none;
  overflow: visible;
}
.msb-hero--expanded .msb-hero__body::after {
  display: none;
}
.msb-card--expanded .msb-card__body {
  max-height: none;
  overflow: visible;
}
.msb-card--expanded .msb-card__body::after {
  display: none;
}

/* ── MER-01: Hero content-aware clamp ── */
.msb-hero--clamped .msb-hero__body {
  max-height: 8em; /* ~5 lines at line-height 1.7 × text-sm */
  overflow: hidden;
  position: relative;
}
.msb-hero--clamped .msb-hero__body::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 2.5em;
  background: linear-gradient(transparent, var(--color-bg));
  pointer-events: none;
}

/* Expand state */
.msb-hero--clamped.msb-hero--expanded .msb-hero__body {
  max-height: none;
  overflow: visible;
}
.msb-hero--clamped.msb-hero--expanded .msb-hero__body::after {
  display: none;
}
.msb-hero--clamped.msb-hero--expanded .msb-hero__read-more {
  color: var(--color-text-tertiary);
}

/* Dark mode */
html[data-theme="dark"] .msb-hero--clamped .msb-hero__body::after {
  background: linear-gradient(transparent, var(--color-bg));
}

/* ── MER-02: Hero read-more CTA ── */
.msb-hero__read-more {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--color-accent-text);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: var(--space-2) 0;
  min-height: 44px;
  display: flex;
  align-items: center;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  background: none;
  border: none;
  text-align: left;
}
.msb-hero__read-more:active {
  opacity: 0.7;
}
html[data-theme="dark"] .msb-hero__read-more {
  color: var(--color-accent-light);
}
/* MQR-07: Formation card read-more button */
.msb-card__read-more {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-accent);
  background: none;
  border: none;
  padding: var(--space-2) 0;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.msb-card--expanded .msb-card__read-more {
  color: var(--color-text-tertiary);
}

/* ── Content container ── */
.missal-content { max-width:540px;margin:0 auto;padding:0; }

/* ── Header zone ── */
.missal-header { padding:0 0 var(--space-3);margin-bottom:28px;border-bottom:none; }
.missal-header:has(.missal-gospel-wayfinder) { margin-bottom: 40px; }
.missal-header::after { content:'\2726';display:block;text-align:center;font-size:10px;color:var(--color-accent);opacity:0.35;margin-top:var(--space-3); }
.missal-rank-row { display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2); }
.missal-color-dot { width:10px;height:10px;border-radius:50%;flex-shrink:0; }
.missal-rank { font-family:var(--font-display);font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:0.06em;color:var(--color-accent); }
.missal-saint-name { font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--color-text-primary);line-height:1.25;margin-bottom:var(--space-1);letter-spacing:-0.01em; }
.missal-season-line { font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary); }
.missal-fasting-line { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-notice);font-style:italic;margin-top:var(--space-1); }

/* ── Loading state ── */
.missal-loading { display:flex;align-items:center;gap:var(--space-2);padding:var(--space-5) 0;font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-tertiary); }
.missal-loading-dot { width:6px;height:6px;border-radius:50%;background:var(--color-accent);animation:missalPulse 1.5s ease infinite; }
@keyframes missalPulse { 0%,100% { opacity:0.3; } 50% { opacity:1; } }

/* ═══ DSN-37: Dark mode overrides ═══ */
html[data-theme="dark"] .missal-header::after { opacity:0.25; }
html[data-theme="dark"] .missal-fasting-line { color:var(--color-notice); }

/* ── MVO-06: Accent top border ── */
.missal-accent-border {
  height: 2px;
  background: var(--color-accent);
  border-radius: 1px;
  margin-bottom: var(--space-6);
  opacity: 0.8;
}
html[data-theme="dark"] .missal-accent-border {
  opacity: 0.6;
  box-shadow: 0 1px 4px color-mix(in srgb, var(--color-accent) 20%, transparent);
}

/* ── MVO-06: Tagline ── */
.missal-tagline {
  font-family: var(--font-body);
  font-size: 13px;
  font-style: italic;
  color: var(--color-text-tertiary);
  margin-bottom: var(--space-2);
}

/* ── MVO-07: Patristic pullquote — bordered, transparent ── */
.msb-pullquote--patristic {
  background: transparent;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
  margin-left: 0;
  margin-right: 0;
  padding: var(--space-5) var(--space-2);
}
.msb-pullquote--patristic::before {
  font-size: 48px;
  color: var(--color-accent);
  opacity: 0.15;
}
.msb-pullquote--patristic .msb-pullquote__text {
  font-family: var(--font-prayer);
  font-style: italic;
  font-size: 16px;
  color: var(--color-heading);
  line-height: 1.7;
}
.msb-pullquote--patristic .msb-pullquote__source {
  font-size: 13px;
  font-weight: var(--weight-medium);
  color: var(--color-text-secondary);
}
html[data-theme="dark"] .msb-pullquote--patristic {
  background: transparent;
  border-top-color: var(--color-border-light);
  border-bottom-color: var(--color-border-light);
}
html[data-theme="dark"] .msb-pullquote--patristic::before {
  opacity: 0.10;
}

/* ── Gospel reading entry accent ── */
.msb-readings .reading-heading--gospel {
  color: var(--color-accent);
}
html[data-theme="dark"] .msb-readings .reading-heading--gospel {
  color: var(--color-accent-light);
}
html[data-theme="dark"] .missal-color-dot { box-shadow:0 0 6px color-mix(in srgb, currentColor 40%, transparent); }

/* ═══ Reduced motion ═══ */
@media (prefers-reduced-motion:reduce) {
  .missal-loading-dot { animation:none;opacity:0.6; }
}

/* ── Release Notes Link + Content (IDEA-326) ── */
.settings-release-notes-link { display:inline;background:none;border:none;padding:0;font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-accent);font-weight:var(--weight-semibold);cursor:pointer;min-height:44px;line-height:44px;-webkit-tap-highlight-color:transparent; }
.settings-release-notes-link:active { opacity:0.7; }
.release-notes-content { font-family:var(--font-body);color:var(--color-text-primary);line-height:1.7;padding:0 var(--space-4) var(--space-6); }
.release-notes-content p { font-size:var(--text-sm);margin:0 0 var(--space-3); }
.release-notes-content h3 { font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-semibold);margin:var(--space-4) 0 var(--space-2);color:var(--color-text-primary); }
.release-notes-content ul { font-size:var(--text-sm);padding-left:var(--space-5);margin:0 0 var(--space-3); }
.release-notes-content li { margin:0 0 var(--space-2);line-height:1.6; }
.release-notes-content code { font-size:0.85em;background:var(--color-surface-alt,rgba(0,0,0,0.06));padding:2px 5px;border-radius:var(--radius-xs); }
.release-notes-content strong { font-weight:var(--weight-semibold);color:var(--color-text-primary); }
html[data-theme="dark"] .release-notes-content code { background:rgba(255,255,255,0.08); }
/* Release notes accordion sections */
.rn-section { margin-bottom:var(--space-3);border:1px solid var(--color-border-light);border-radius:var(--radius-md);overflow:hidden; }
.rn-section--latest { border-left:3px solid var(--color-accent); }
.rn-heading { display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);cursor:default; }
.rn-heading > div { flex:1;min-width:0; }
.rn-headline { font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-primary);display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap; }
.rn-version { font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:2px; }
details.rn-section > .rn-heading { cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent;min-height:48px; }
details.rn-section > .rn-heading::-webkit-details-marker { display:none; }
.rn-chevron { flex-shrink:0;color:var(--color-text-tertiary);transition:transform 0.2s ease; }
details.rn-section[open] .rn-chevron { transform:rotate(180deg); }
details.rn-section[open] > .rn-heading { border-bottom:1px solid var(--color-border-light); }
.rn-badge { font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 10%, transparent);padding:2px 8px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:0.04em; }
.rn-body { padding:var(--space-3) var(--space-4); }
html[data-theme="dark"] .rn-section { border-color:var(--color-border); }
html[data-theme="dark"] .rn-section--latest { border-left-color:var(--color-accent); }
html[data-theme="dark"] details.rn-section[open] > .rn-heading { border-bottom-color:var(--color-border); }
html[data-theme="dark"] .rn-badge { background:color-mix(in srgb, var(--color-accent) 15%, transparent); }
