/*
Theme Name: Boherlahan & Dualla Parish
Theme URI: https://boherlahanduallaparish.ie
Author: Boherlahan & Dualla Parish
Description: Custom theme for Boherlahan & Dualla Parish (Church of the Immaculate Conception, Boherlahan, and Our Lady of Fatima, Dualla). Built from website version 9. On activation it creates the parish pages (Home, Weekly Schedule, Sacraments, both churches and more) as normal WordPress pages that can be edited in the block editor. Mass times, contact details and office hours are kept once under Parish Details and appear everywhere automatically. Newsletters (weekly Missalette, monthly and special) and resources (prayer sheets, Gospel slides) are uploaded under Newsletters, and News & Events posts with an event date appear on the Home page while upcoming; page layouts are locked so staff can change text and photos without breaking the design.
Version: 1.3.34
Requires at least: 6.4
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: boherlahan-dualla
*/


  :root {
    --cream: #faf7f2;
    --warm-white: #f5f0e8;
    --parchment: #ede4d4;
    --gold: #b8960c;
    --gold-deep: #7d5f08;
    --gold-light: #d4aa3a;
    --gold-pale: #e8d5a0;
    --navy: #1a2744;
    --navy-mid: #243058;
    --stone: #7a7060;
    --stone-light: #b0a898;
    --text: #2c2620;
    --text-mid: #4a4238;
    --text-light: #6b6158;
    --border: #d8cfc0;
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }
  html { font-size: 18px; }

  html { scroll-behavior: smooth; }

  body {
    font-family: 'Source Sans 3', sans-serif;
    background: var(--cream);
    color: var(--text);
    overflow-x: hidden;
    line-height: 1.6;
  }

  /* ── UTILITY BAR ── */
  .utility-bar {
    background: var(--navy);
    color: #c8d4e8;
    font-size: 0.78rem;
    padding: 0.4rem 2rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    letter-spacing: 0.04em;
  }
  .utility-bar a { color: #c8d4e8; text-decoration: none; }
  .utility-bar a:hover { color: var(--gold-light); }
  .utility-left { display: flex; gap: 1.5rem; }
  .utility-right { display: flex; gap: 1.2rem; align-items: center; }
  
  

  /* ── HEADER ── */
  header {
    background: var(--cream);
    border-bottom: 1px solid var(--border);
    position: sticky;
    top: 0;
    z-index: 100;
    box-shadow: 0 2px 12px rgba(26,39,68,0.07);
  }
  .header-inner {
    max-width: 1400px;
    margin: 0 auto;
    padding: 0.9rem 1.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.2rem;
  }
  .logo-block {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    text-decoration: none;
  }
  .logo-cross {
    width: 38px; height: 38px;
    position: relative;
    flex-shrink: 0;
  }
  .logo-cross::before, .logo-cross::after {
    content: '';
    position: absolute;
    background: var(--gold);
    border-radius: 2px;
  }
  .logo-cross::before { width: 6px; height: 100%; left: 50%; transform: translateX(-50%); }
  .logo-cross::after { width: 100%; height: 6px; top: 30%; left: 0; }
  .logo-text { line-height: 1.2; }
  .logo-title {
    font-family: 'Cinzel', serif;
    font-size: 0.92rem;
    color: var(--navy);
    font-weight: 500;
    letter-spacing: 0.04em;
  }
  .logo-sub {
    font-family: 'Cormorant Garamond', serif;
    font-size: 0.8rem;
    color: var(--stone);
    font-style: italic;
  }

  nav { display: flex; gap: 0; align-items: center; flex-wrap: nowrap; }
  nav a {
    font-family: 'Source Sans 3', sans-serif;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--text-mid);
    text-decoration: none;
    padding: 0.5rem 0.55rem;
    border-radius: 4px;
    letter-spacing: 0.01em;
    white-space: nowrap;
    transition: color 0.2s, background 0.2s;
  }
  nav a:hover { color: var(--navy); background: var(--warm-white); }
  .nav-donate { margin-left: 0.4rem; }
  .nav-donate {
    background: var(--gold) !important;
    color: var(--navy) !important;
    padding: 0.5rem 1.1rem !important;
    border-radius: 4px;
    font-weight: 600 !important;
  }
  .nav-donate:hover { background: var(--gold-light) !important; }

  /* ── VISIBLE FOCUS STATES ── */
  nav a:focus-visible,
  .dropdown a:focus-visible,
  .btn-primary:focus-visible,
  .btn-ghost:focus-visible,
  .btn-outline:focus-visible,
  .footer-col a:focus-visible,
  .modal-close:focus-visible,
  .subpage-hero .breadcrumb a:focus-visible {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
  }

  /* ── HERO ── */
  .hero {
    position: relative;
    height: 88vh;
    min-height: 580px;
    overflow: hidden;
    display: flex;
    align-items: flex-end;
  }
  .hero-bg {
    position: absolute;
    inset: 0;
    background-image: url('assets/images/hero-bg.png');
    background-size: cover;
    background-position: center 30%;
    transform-origin: center;
    animation: slow-zoom 20s ease-in-out infinite alternate;
  }
  @keyframes slow-zoom {
    from { transform: scale(1); }
    to { transform: scale(1.04); }
  }
  .hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
      to top,
      rgba(8,14,32,0.82) 0%,
      rgba(8,14,32,0.55) 40%,
      rgba(8,14,32,0.2) 100%
    );
  }
  .hero-content {
    position: relative;
    z-index: 2;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 2rem 3.5rem;
    width: 100%;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 2rem;
    align-items: end;
  }
  .hero-text { max-width: 600px; }
  .hero-eyebrow {
    font-family: 'Cinzel', serif;
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.22em;
    color: var(--gold-pale);
    text-transform: uppercase;
    margin-bottom: 0.9rem;
    text-shadow: 0 1px 6px rgba(0,0,0,0.55);
    opacity: 0;
    animation: fade-up 0.8s 0.3s forwards;
  }
  .hero-title {
    font-family: 'Cormorant Garamond', serif;
    font-size: clamp(2.4rem, 5vw, 4rem);
    font-weight: 500;
    color: white;
    line-height: 1.1;
    margin-bottom: 1rem;
    text-shadow: 0 2px 10px rgba(0,0,0,0.5);
    opacity: 0;
    animation: fade-up 0.9s 0.5s forwards;
  }
  .hero-title em {
    font-style: italic;
    color: var(--gold-pale);
  }
  .hero-subtitle {
    font-size: 1rem;
    color: rgba(255,255,255,0.95);
    font-weight: 300;
    margin-bottom: 1.8rem;
    text-shadow: 0 1px 6px rgba(0,0,0,0.5);
    opacity: 0;
    animation: fade-up 0.9s 0.7s forwards;
  }
  .hero-ctas {
    display: flex;
    gap: 0.9rem;
    flex-wrap: wrap;
    opacity: 0;
    animation: fade-up 0.9s 0.9s forwards;
  }
  @keyframes fade-up {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
  }
  .btn-primary {
    background: var(--gold);
    color: var(--navy);
    padding: 0.75rem 1.6rem;
    border: none;
    font-family: 'Source Sans 3', sans-serif;
    font-size: 0.9rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    cursor: pointer;
    text-decoration: none;
    display: inline-block;
    transition: background 0.2s, transform 0.1s;
    border-radius: 3px;
  }
  .btn-primary:hover { background: var(--gold-light); transform: translateY(-1px); }
  .btn-ghost {
    background: transparent;
    color: white;
    padding: 0.75rem 1.6rem;
    border: 1px solid rgba(255,255,255,0.6);
    font-family: 'Source Sans 3', sans-serif;
    font-size: 0.9rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    cursor: pointer;
    text-decoration: none;
    display: inline-block;
    border-radius: 3px;
    transition: background 0.2s, border-color 0.2s;
  }
  .btn-ghost:hover { background: rgba(255,255,255,0.1); border-color: rgba(255,255,255,0.7); }

  /* Mass times card on hero */
  .hero-mass-card {
    background: rgba(250,247,242,0.97);
    border-top: 3px solid var(--gold);
    padding: 1.6rem 2.2rem;
    min-width: 340px;
    opacity: 0;
    animation: fade-up 0.9s 1.1s forwards;
    border-radius: 3px;
  }
  .mass-card-title {
    font-family: 'Cinzel', serif;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.16em;
    color: var(--gold-deep);
    text-transform: uppercase;
    margin-bottom: 0.9rem;
  }
  .mass-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 0.35rem 0;
    border-bottom: 1px solid var(--border);
  }
  .mass-row:last-of-type { border-bottom: none; }
  .hero-mass-group { padding-top: 0.2rem; }
  .hero-mass-group + .hero-mass-group {
    margin-top: 0.4rem;
    padding-top: 0.7rem;
    border-top: 1px solid var(--border);
  }
  .hero-mass-group-title {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-family: 'Cinzel', serif;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    color: var(--gold-deep);
    text-transform: uppercase;
    margin-bottom: 0.4rem;
  }
  .hero-mass-group-title::before {
    content: '';
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--gold);
    flex-shrink: 0;
  }
  .hero-mass-group .mass-row {
    padding: 0.28rem 0;
    border-bottom: none;
  }
  .mass-day {
    font-size: 0.82rem;
    color: var(--text-mid);
    font-weight: 500;
  }
  .mass-time {
    font-family: 'Cormorant Garamond', serif;
    font-size: 1rem;
    color: var(--navy);
    font-weight: 600;
  }
  .view-all-times {
    display: block;
    text-align: center;
    margin-top: 0.9rem;
    font-size: 0.78rem;
    color: var(--gold-deep);
    text-decoration: none;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }
  .view-all-times:hover { color: var(--navy); }

  /* ── SECTION STYLES ── */
  section { padding: 4.5rem 2rem; }
  .section-inner { max-width: 1200px; margin: 0 auto; }
  .section-label {
    font-family: 'Cinzel', serif;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    color: var(--gold-deep);
    text-transform: uppercase;
    margin-bottom: 0.6rem;
    display: block;
  }
  .section-title {
    font-family: 'Cormorant Garamond', serif;
    font-size: clamp(1.9rem, 3.5vw, 2.8rem);
    font-weight: 500;
    color: var(--navy);
    line-height: 1.2;
    margin-bottom: 1rem;
  }
  .section-intro {
    font-size: 1rem;
    color: var(--text-light);
    max-width: 560px;
    line-height: 1.7;
    margin-bottom: 2.5rem;
  }
  .divider {
    width: 48px;
    height: 2px;
    background: var(--gold);
    margin: 1rem 0 2rem;
  }

  /* ── WELCOME BAND ── */
  .welcome-band {
    background: var(--navy);
    padding: 3rem 2rem;
  }
  .welcome-band .section-inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4rem;
    align-items: center;
  }
  .welcome-quote {
    font-family: 'Cormorant Garamond', serif;
    font-size: clamp(1.5rem, 2.5vw, 2rem);
    font-style: italic;
    color: var(--gold-pale);
    line-height: 1.5;
    font-weight: 400;
  }
  .welcome-quote span { color: white; font-style: normal; }
  .welcome-body {
    color: #b0bccc;
    font-size: 0.95rem;
    line-height: 1.8;
  }
  .welcome-body p:where(:not(.bdp-p)) { margin-bottom: 1rem; }
  .welcome-body strong { color: white; }

  /* ── MASS TIMES FULL ── */
  .mass-section { background: var(--warm-white); }
  
  
  
  
  
  
  .church-panel-note {
    font-size: 0.85rem;
    color: var(--text-light);
    font-style: italic;
    margin-top: 1.6rem;
  }
  .mass-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
    margin-top: 2rem;
  }
  .mass-card {
    background: white;
    border: 1px solid var(--border);
    border-top: 3px solid var(--gold);
    padding: 1.8rem;
    border-radius: 3px;
  }
  .mass-card h3, .mass-card h4 {
    font-family: 'Cinzel', serif;
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.15em;
    color: var(--gold-deep);
    text-transform: uppercase;
    margin-bottom: 1.2rem;
  }
  .mass-entry {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 0.55rem 0;
    border-bottom: 1px solid #eee;
  }
  .mass-entry:last-child { border-bottom: none; }
  .mass-entry .day { font-size: 0.88rem; color: var(--text-mid); font-weight: 500; }
  .mass-entry .time {
    font-family: 'Cormorant Garamond', serif;
    font-size: 1.05rem;
    color: var(--navy);
    font-weight: 600;
  }

  /* ── SACRAMENTS ── */
  .sacraments-section { background: var(--cream); }
  
  
  
  
  
  

  /* ── NEWS SECTION ── */
  
  
  
  
  
  
  
  
  
  
  

  /* ── LIVE STREAM ── */
  .livestream-section {
    background: var(--navy);
    padding: 4rem 2rem;
  }
  .livestream-inner {
    max-width: 1200px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4rem;
    align-items: center;
  }
  .stream-text .section-label { color: var(--gold-light); }
  .stream-text .section-title { color: white; }
  .stream-text .section-intro { color: #8a9ab8; max-width: none; }
  .stream-screen {
    aspect-ratio: 16/9;
    background: #0d1629;
    border: 2px solid rgba(184,150,12,0.3);
    border-radius: 4px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    position: relative;
    overflow: hidden;
  }
  .stream-screen::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(184,150,12,0.05) 0%, transparent 60%);
  }
  .stream-play {
    width: 60px; height: 60px;
    background: var(--gold);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform 0.2s, background 0.2s;
    position: relative;
    z-index: 1;
  }
  .stream-play:hover { transform: scale(1.1); background: var(--gold-light); }
  .stream-play::after {
    content: '';
    border-left: 20px solid var(--navy);
    border-top: 13px solid transparent;
    border-bottom: 13px solid transparent;
    margin-left: 4px;
  }
  .stream-label {
    font-family: 'Cinzel', serif;
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.16em;
    color: #8a9ab8;
    text-transform: uppercase;
    position: relative;
    z-index: 1;
  }
  .stream-status {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.82rem;
    color: #c8d4e8;
    position: relative;
    z-index: 1;
  }

  /* ── BULLETIN / READINGS ── */
  .bulletin-section { background: var(--cream); }
  .bulletin-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    margin-top: 2rem;
  }
  .bulletin-card {
    background: white;
    border: 1px solid var(--border);
    border-radius: 3px;
    padding: 2rem;
    display: flex;
    gap: 1.5rem;
    align-items: flex-start;
    transition: box-shadow 0.2s;
  }
  .bulletin-card:hover { box-shadow: 0 4px 20px rgba(26,39,68,0.08); }
  .bulletin-icon {
    width: 50px;
    height: 50px;
    background: var(--warm-white);
    border: 1px solid var(--border);
    border-radius: 3px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    flex-shrink: 0;
  }
  .bulletin-info h3 {
    font-family: 'Cormorant Garamond', serif;
    font-size: 1.2rem;
    color: var(--navy);
    margin-bottom: 0.3rem;
  }
  .bulletin-info p:where(:not(.bdp-p)) {
    font-size: 0.85rem;
    color: var(--text-light);
    line-height: 1.6;
    margin-bottom: 0.8rem;
  }
  .btn-outline {
    display: inline-block;
    padding: 0.5rem 1.1rem;
    border: 1.5px solid var(--gold-deep);
    color: var(--gold-deep);
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    text-decoration: none;
    border-radius: 3px;
    transition: background 0.2s, color 0.2s;
  }
  .btn-outline:hover { background: var(--gold); color: var(--navy); }

  /* ── PARISH LOTTO ── */
  .lotto-section { background: var(--navy); }
  .lotto-section .section-label { color: var(--gold-light); }
  .lotto-section .section-title { color: white; }
  .lotto-section .section-intro { color: #a9b6cf; max-width: 620px; }
  .lotto-panel {
    display: grid;
    grid-template-columns: 1.3fr 1fr;
    gap: 2.5rem;
    align-items: center;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 6px;
    padding: 2.2rem;
    margin-top: 1rem;
  }
  .lotto-results-label {
    font-family: 'Cinzel', serif;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    color: var(--gold-light);
    text-transform: uppercase;
    margin-bottom: 0.8rem;
  }
  
  
  
  
  
  .lotto-cta {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 6px;
    padding: 1.8rem;
    text-align: center;
  }
  .lotto-cta p:where(:not(.bdp-p)) {
    font-size: 0.85rem;
    color: #a9b6cf;
    margin-bottom: 1.2rem;
    line-height: 1.6;
  }
  

  /* ── OUR TWO CHURCHES (photo preview) ── */
  .churches-preview-section { background: var(--warm-white); }
  .churches-preview-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
    margin-top: 2rem;
  }
  .church-preview-card {
    position: relative;
    display: block;
    height: 340px;
    border-radius: 4px;
    overflow: hidden;
    text-decoration: none;
  }
  .church-preview-card img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.4s ease;
  }
  .church-preview-card:hover img { transform: scale(1.06); }
  .church-preview-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(8,14,32,0.88) 0%, rgba(8,14,32,0.35) 55%, rgba(8,14,32,0.05) 100%);
  }
  .church-preview-text {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    padding: 1.6rem;
  }
  .church-preview-text .eyebrow {
    font-family: 'Cinzel', serif;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.16em;
    color: var(--gold-light);
    text-transform: uppercase;
    margin-bottom: 0.4rem;
  }
  .church-preview-text h3 {
    font-family: 'Cormorant Garamond', serif;
    font-size: 1.7rem;
    font-weight: 500;
    color: white;
    margin-bottom: 0.5rem;
    text-shadow: 0 2px 8px rgba(0,0,0,0.4);
  }
  .church-preview-text .link {
    display: inline-block;
    font-size: 0.82rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: white;
    border-bottom: 1.5px solid var(--gold-light);
    padding-bottom: 0.1rem;
  }

  /* ── SACRAMENTS PHOTO BANNER ── */
  .sacraments-photo-banner img {
    width: 100%;
    height: 280px;
    object-fit: cover;
    border-radius: 4px;
    margin: 0 0 2.5rem;
    display: block;
  }

  /* ── NEWS CARD THUMBNAILS ── */
  

  @media (max-width: 768px) {
    .churches-preview-grid { grid-template-columns: 1fr; }
    .safeguarding-inner { white-space: normal; flex-wrap: wrap; text-align: center; }
    .safeguarding-inner > div { white-space: normal; }
  }

  /* ── CONTACT & MAP ── */
  .contact-section { background: var(--cream); }
  .contact-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 3rem;
    margin-top: 2rem;
  }
  .contact-info h3 {
    font-family: 'Cormorant Garamond', serif;
    font-size: 1.4rem;
    color: var(--navy);
    margin-bottom: 1rem;
  }
  .contact-item {
    display: flex;
    gap: 0.7rem;
    padding: 0.6rem 0;
    border-bottom: 1px solid var(--border);
    align-items: flex-start;
  }
  .contact-item-icon { margin-top: 0.1rem; }
  .contact-item:last-of-type { border-bottom: none; }
  .contact-item-icon {
    width: 28px;
    height: 28px;
    background: var(--warm-white);
    border: 1px solid var(--border);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    flex-shrink: 0;
  }
  .contact-item-text { font-size: 0.88rem; color: var(--text-mid); line-height: 1.5; }
  .contact-item-text strong {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--stone);
    margin-right: 0.5rem;
  }
  .map-placeholder {
    background: #d4d0c8;
    border-radius: 3px;
    overflow: hidden;
    height: 320px;
    position: relative;
    border: 1px solid var(--border);
  }
  .map-placeholder iframe {
    width: 100%;
    height: 100%;
    border: none;
  }

  /* ── SAFEGUARDING STRIP ── */
  .safeguarding-strip {
    background: var(--warm-white);
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    padding: 1.2rem 2rem;
  }
  .safeguarding-inner {
    max-width: 1200px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: nowrap;
    white-space: nowrap;
    gap: 0.6rem;
    font-size: 0.82rem;
    color: var(--text-light);
  }
  .safeguarding-inner > div { white-space: nowrap; }
  .safeguarding-inner strong { color: var(--navy); }
  .safeguarding-inner a { color: var(--gold-deep); text-decoration: none; font-weight: 600; }

  /* ── FOOTER ── */
  footer {
    background: var(--navy);
    color: #a9b6cf;
    padding: 3.5rem 2rem 1.5rem;
  }
  .footer-inner {
    max-width: 1200px;
    margin: 0 auto;
  }
  .footer-top {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1fr;
    gap: 3rem;
    padding-bottom: 2.5rem;
    border-bottom: 1px solid rgba(255,255,255,0.08);
  }
  .footer-brand h2 {
    font-family: 'Cinzel', serif;
    font-size: 0.92rem;
    color: white;
    font-weight: 600;
    letter-spacing: 0.08em;
    margin-bottom: 0.3rem;
  }
  .footer-brand p:where(:not(.bdp-p)) {
    font-size: 0.8rem;
    line-height: 1.7;
    margin-top: 0.8rem;
    color: #a9b6cf;
  }
  .footer-col h3, .footer-col h4 {
    font-family: 'Cinzel', serif;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.16em;
    color: var(--gold-light);
    text-transform: uppercase;
    margin-bottom: 1rem;
  }
  .footer-col a {
    display: block;
    color: #b9c4da;
    text-decoration: none;
    font-size: 0.84rem;
    margin-bottom: 0.5rem;
    transition: color 0.2s;
  }
  .footer-col a:hover { color: white; }
  
  
  
  .footer-bottom {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 1.5rem;
    font-size: 0.75rem;
    color: #93a1bd;
    flex-wrap: wrap;
    gap: 0.5rem;
  }
  .footer-bottom a { color: #93a1bd; text-decoration: none; }
  .footer-bottom a:hover { color: white; }

  /* ── MODAL ── */
  .modal-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(10,18,40,0.7);
    z-index: 1000;
    align-items: center;
    justify-content: center;
    padding: 1rem;
  }
  .modal-overlay.open { display: flex; }
  .modal {
    background: white;
    max-width: 500px;
    width: 100%;
    padding: 2.5rem;
    border-radius: 4px;
    position: relative;
    border-top: 4px solid var(--gold);
    max-height: 80vh;
    overflow-y: auto;
  }
  .modal-close {
    position: absolute;
    top: 0.8rem; right: 0.8rem;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--warm-white);
    border: 1px solid var(--border);
    border-radius: 50%;
    font-size: 1.2rem;
    cursor: pointer;
    color: var(--text-mid);
    transition: background 0.15s, color 0.15s;
  }
  .modal-close:hover { background: var(--gold); color: var(--navy); }
  .modal h2 {
    font-family: 'Cormorant Garamond', serif;
    font-size: 1.8rem;
    color: var(--navy);
    margin-bottom: 1.2rem;
  }
  .modal p:where(:not(.bdp-p)) { font-size: 0.9rem; color: var(--text-light); line-height: 1.7; margin-bottom: 0.8rem; }
  .modal .field {
    margin-bottom: 1rem;
  }
  .modal label { display: block; font-size: 0.8rem; font-weight: 600; color: var(--text-mid); margin-bottom: 0.3rem; }
  .modal input, .modal select, .modal textarea {
    width: 100%;
    padding: 0.65rem 0.9rem;
    border: 1px solid var(--border);
    border-radius: 3px;
    font-size: 0.9rem;
    font-family: 'Source Sans 3', sans-serif;
    color: var(--text);
    background: white;
  }
  .form-note {
    display: none;
    margin-top: 0.7rem;
    padding: 0.6rem 0.8rem;
    background: var(--warm-white);
    border-left: 3px solid var(--gold);
    font-size: 0.82rem;
    color: var(--text-mid);
    border-radius: 2px;
  }
  .form-note.visible { display: block; }
  .modal input:focus, .modal select:focus, .modal textarea:focus {
    outline: none;
    border-color: var(--gold);
  }

  /* ── SCROLLBAR ── */
  ::-webkit-scrollbar { width: 6px; }
  ::-webkit-scrollbar-track { background: var(--warm-white); }
  ::-webkit-scrollbar-thumb { background: var(--stone-light); border-radius: 3px; }

  /* ── RESPONSIVE ── */
  @media (max-width: 768px) {
    .utility-bar { display: none; }
    .header-inner { padding: 0.7rem 1rem; }
    nav { display: none; }
    .hero-content { grid-template-columns: 1fr; }
    .hero-mass-card { display: none; }
    .welcome-band .section-inner { grid-template-columns: 1fr; gap: 1.5rem; }
    .livestream-inner { grid-template-columns: 1fr; }
    .bulletin-grid { grid-template-columns: 1fr; }
    .contact-grid { grid-template-columns: 1fr; }
    .footer-top { grid-template-columns: 1fr 1fr; }
    .mass-grid { grid-template-columns: 1fr; }
    section { padding: 3rem 1rem; }
  }

  /* ================= SITEMAP ADDITIONS ================= */

  /* ── MEGA MENU ── */
  .nav-item { position: relative; }
  .nav-item > a.nav-top { cursor: pointer; }
  .nav-item > a.nav-top::after {
    content: '';
    display: inline-block;
    margin-left: 0.4rem;
    width: 0;
    height: 0;
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-top: 6px solid var(--text-mid);
    vertical-align: middle;
    transition: transform 0.15s, border-top-color 0.15s;
  }
  .nav-item:hover > a.nav-top::after,
  .nav-item.open > a.nav-top::after {
    border-top-color: var(--navy);
    transform: translateY(2px);
  }
  .dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    background: var(--cream);
    border: 1px solid var(--border);
    border-radius: 4px;
    box-shadow: 0 10px 28px rgba(26,39,68,0.14);
    min-width: 210px;
    padding: 0.5rem 0;
    opacity: 0;
    visibility: hidden;
    transform: translateY(6px);
    transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s ease;
    z-index: 200;
  }
  .dropdown a {
    display: block;
    padding: 0.7rem 1.2rem;
    font-size: 0.9rem;
    font-weight: 400;
    color: var(--text-mid);
    white-space: nowrap;
    border-radius: 0;
  }
  .dropdown a:hover { background: var(--warm-white); color: var(--navy); }
  .nav-item.open .dropdown {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
  }
  .dropdown-wide { display: flex; min-width: 440px; padding: 0.9rem 0.6rem; gap: 0.5rem; }
  .dropdown-col { flex: 1; min-width: 170px; }
  .dropdown-col-title {
    font-family: 'Cinzel', serif;
    font-size: 0.76rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    color: var(--gold-deep);
    text-transform: uppercase;
    padding: 0.3rem 1.1rem 0.5rem;
  }

  /* ── PAGE ROUTING ── */
  .page { display: none; }
  .page.active { display: block; }

  /* ── SUBPAGE HERO / BREADCRUMB ── */
  .subpage-hero {
    background: var(--navy);
    padding: 3rem 2rem 2.4rem;
  }
  .subpage-hero .breadcrumb {
    font-size: 0.78rem;
    color: rgba(255,255,255,0.78);
    margin-bottom: 1rem;
    letter-spacing: 0.02em;
  }
  .subpage-hero .breadcrumb a {
    color: rgba(255,255,255,0.95);
    text-decoration: none;
    cursor: pointer;
  }
  .subpage-hero .breadcrumb a:hover { color: var(--gold-light); }
  .subpage-hero .section-label { color: var(--gold-light); }
  .subpage-hero .section-title { color: #fff; margin-bottom: 0; }

  /* ── PLACEHOLDER CONTENT ── */
  
  

  /* ── SUBPAGE PHOTO / GALLERY / MAP ── */
  
  .gallery-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 1rem;
    margin-top: 2rem;
  }
  .gallery-grid img {
    width: 100%;
    height: 190px;
    object-fit: cover;
    border-radius: 3px;
    display: block;
    cursor: zoom-in;
    transition: opacity 0.15s;
  }
  .gallery-grid img:hover { opacity: 0.85; }
  .lightbox-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(10,18,40,0.92);
    z-index: 1100;
    align-items: center;
    justify-content: center;
    padding: 2rem;
  }
  .lightbox-overlay.open { display: flex; }
  .lightbox-overlay img {
    max-width: 90vw;
    max-height: 85vh;
    border-radius: 3px;
    box-shadow: 0 10px 40px rgba(0,0,0,0.5);
  }
  .lightbox-close {
    position: absolute;
    top: 1.2rem; right: 1.4rem;
    width: 48px; height: 48px;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.4);
    color: #fff;
    font-size: 1.6rem;
    border-radius: 50%;
    cursor: pointer;
  }
  .lightbox-close:hover { background: rgba(255,255,255,0.2); }
  .subpage-map {
    width: 100%;
    height: 380px;
    border-radius: 3px;
    overflow: hidden;
    border: 1px solid var(--border);
    margin-top: 2rem;
  }
  .subpage-map iframe { width: 100%; height: 100%; border: 0; }

  @media (max-width: 768px) {
    .dropdown-wide { min-width: 260px; flex-direction: column; }
  }

  .skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    background: var(--navy);
    color: #fff;
    padding: 0.8rem 1.4rem;
    z-index: 2000;
    font-family: 'Source Sans 3', sans-serif;
    font-weight: 600;
    text-decoration: none;
    border-radius: 0 0 4px 0;
  }
  .skip-link:focus {
    left: 0;
  }

  .quick-links-strip {
    background: var(--warm-white);
    border-bottom: 1px solid var(--border);
  }
  .quick-links-inner {
    padding: 1rem 2rem;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.6rem 1.4rem;
  }
  .quick-links-label {
    font-family: 'Cinzel', serif;
    font-size: 0.72rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--gold-deep);
    font-weight: 600;
  }
  .quick-links-inner a {
    font-family: 'Source Sans 3', sans-serif;
    font-size: 0.92rem;
    font-weight: 600;
    color: var(--navy);
    text-decoration: none;
    border-bottom: 2px solid transparent;
    padding-bottom: 0.1rem;
    transition: border-color 0.15s;
  }
  .quick-links-inner a:hover,
  .quick-links-inner a:focus-visible {
    border-bottom-color: var(--gold);
  }
  @media (max-width: 768px) {
    .quick-links-inner { padding: 0.9rem 1rem; gap: 0.5rem 1rem; }
  }

  /* ================= MOBILE NAVIGATION (hamburger + drawer) ================= */

  .mobile-menu-toggle {
    display: none;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 5px;
    width: 42px;
    height: 42px;
    background: transparent;
    border: 1px solid var(--border);
    border-radius: 4px;
    cursor: pointer;
    flex-shrink: 0;
  }
  .mobile-menu-toggle span {
    display: block;
    width: 20px;
    height: 2px;
    background: var(--navy);
    border-radius: 2px;
  }
  .mobile-menu-toggle:focus-visible {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
  }

  /* ── Floating "Mass & Confession Times" quick-access button ── */
  .floating-mass-btn {
    display: none;
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    z-index: 500;
    background: var(--gold);
    color: var(--navy);
    font-family: 'Source Sans 3', sans-serif;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.01em;
    text-decoration: none;
    padding: 0.85rem 1.2rem;
    border-radius: 999px;
    box-shadow: 0 6px 20px rgba(26,39,68,0.35);
    align-items: center;
    gap: 0.5rem;
  }
  .floating-mass-btn:hover { background: var(--gold-light); }
  .floating-mass-btn:focus-visible {
    outline: 3px solid var(--navy);
    outline-offset: 3px;
  }
  .floating-mass-icon { font-size: 1rem; }
  @media (max-width: 1050px) {
    .floating-mass-btn { display: inline-flex; }
  }
  /* Keep the button from covering the footer / form controls */
  @media (max-width: 1050px) and (max-height: 480px) {
    .floating-mass-btn { padding: 0.65rem 0.9rem; font-size: 0.78rem; }
  }

  /* ── Drawer overlay + panel ── */
  .mobile-drawer-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(10,18,40,0.55);
    z-index: 900;
  }
  .mobile-drawer {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(340px, 86vw);
    background: var(--cream);
    z-index: 950;
    box-shadow: -8px 0 30px rgba(0,0,0,0.25);
    transform: translateX(100%);
    transition: transform 0.25s ease;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    padding: 1.2rem 1.2rem 2rem;
  }
  body.drawer-open .mobile-drawer-overlay { display: block; }
  body.drawer-open .mobile-drawer { transform: translateX(0); }
  body.drawer-open { overflow: hidden; }

  .mobile-drawer-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border);
    margin-bottom: 1rem;
  }
  .mobile-drawer-close {
    background: transparent;
    border: 1px solid var(--border);
    border-radius: 4px;
    width: 36px;
    height: 36px;
    font-size: 1.4rem;
    line-height: 1;
    color: var(--navy);
    cursor: pointer;
  }
  .mobile-drawer-close:focus-visible {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
  }

  .mobile-mass-cta {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    justify-content: center;
    background: var(--gold);
    color: var(--navy);
    font-weight: 700;
    text-decoration: none;
    padding: 0.9rem 1rem;
    border-radius: 4px;
    margin-bottom: 1.2rem;
    font-size: 0.95rem;
  }
  .mobile-mass-cta:focus-visible {
    outline: 3px solid var(--navy);
    outline-offset: 2px;
  }

  .mobile-nav { display: flex; flex-direction: column; }
  .mobile-nav > a {
    padding: 0.85rem 0.2rem;
    border-bottom: 1px solid var(--border);
    color: var(--navy);
    text-decoration: none;
    font-weight: 600;
    font-size: 0.95rem;
  }
  .mobile-nav-group { border-bottom: 1px solid var(--border); }
  .mobile-nav-top {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 0.85rem 0.2rem;
    font-family: 'Source Sans 3', sans-serif;
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--navy);
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  .mobile-nav-top::after {
    content: '+';
    font-size: 1.1rem;
    color: var(--gold-deep);
  }
  .mobile-nav-group.open .mobile-nav-top::after { content: '\2212'; }
  .mobile-nav-top:focus-visible {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
  }
  .mobile-nav-sub {
    display: none;
    flex-direction: column;
    padding: 0 0 0.6rem 0.6rem;
  }
  .mobile-nav-group.open .mobile-nav-sub { display: flex; }
  .mobile-nav-sub a {
    padding: 0.55rem 0.2rem;
    color: var(--text-mid);
    text-decoration: none;
    font-size: 0.9rem;
  }
  .mobile-nav-sub a:focus-visible {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
  }
  .mobile-nav-subhead {
    font-family: 'Cinzel', serif;
    font-size: 0.68rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--gold-deep);
    font-weight: 600;
    padding: 0.6rem 0.2rem 0.2rem;
  }

  .mobile-drawer-utility {
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
    margin-top: 1.2rem;
    padding-top: 1.2rem;
    border-top: 1px solid var(--border);
    font-size: 0.88rem;
  }
  .mobile-drawer-utility a { color: var(--text-mid); text-decoration: none; }
  .mobile-drawer-utility a:focus-visible {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
  }

  .mobile-drawer-donate {
    display: block;
    text-align: center;
    background: var(--gold);
    color: var(--navy);
    text-decoration: none;
    font-weight: 600;
    padding: 0.9rem 1rem;
    border-radius: 4px;
    margin-top: 1.2rem;
    font-size: 0.95rem;
  }
  .mobile-drawer-donate:hover { background: var(--gold-light); }
  .mobile-drawer-donate:focus-visible {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
  }

  /* Collapse the horizontal nav earlier than the general content breakpoint so
     tablets never see wrapped/crowded nav items -- they get the drawer instead.
     Placed after the base rules above so max-width overrides them at this width. */
  @media (max-width: 1050px) {
    nav { display: none; }
    .utility-bar { display: none; }
    .mobile-menu-toggle { display: flex; }
    .hero-content { grid-template-columns: 1fr; }
    .hero-mass-card { display: none; }
  }

  @media (min-width: 1051px) {
    .mobile-drawer-overlay,
    .mobile-drawer,
    .floating-mass-btn { display: none !important; }
  }

  /* ── v5 CONTENT COMPONENTS ── */
  .page-intro { max-width: 760px; color: var(--text-mid); font-size: 1rem; line-height: 1.8; margin-bottom: 1.2rem; }
  .page-note { max-width: 760px; color: var(--text-light); font-size: 0.9rem; line-height: 1.7; margin-top: 1.4rem; }
  .info-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.2rem; margin-top: 1.5rem; }
  .info-card { background: #fff; border: 1px solid var(--border); border-top: 3px solid var(--gold); border-radius: 4px; padding: 1.5rem 1.4rem; }
  .info-card .meta { font-size: 0.72rem; color: var(--gold-deep); text-transform: uppercase; letter-spacing: 0.1em; font-weight: 600; margin-bottom: 0.4rem; }
  .info-card h3 { font-family: 'Cormorant Garamond', serif; color: var(--navy); font-size: 1.35rem; font-weight: 600; margin-bottom: 0.5rem; }
  .info-card p:where(:not(.bdp-p)) { color: var(--text-mid); font-size: 0.92rem; line-height: 1.7; }
  .info-card a, .contact-cta a, .legal-text a, .visitor-note a { color: var(--gold-deep); }
  .loc-grid { max-width: 520px; margin-bottom: 1.5rem; }
  .contact-cta { margin-top: 2rem; padding: 1.2rem 1.4rem; background: var(--warm-white); border-left: 3px solid var(--gold); border-radius: 2px; max-width: 760px; font-size: 0.92rem; line-height: 1.7; color: var(--text-mid); }
  .facts { display: grid; grid-template-columns: max-content 1fr; gap: 0.6rem 1.4rem; margin: 1rem 0 1.4rem; font-size: 0.93rem; }
  .facts dt { font-weight: 600; color: var(--navy); }
  .facts dd { color: var(--text-mid); }
  .visitor-note { background: var(--warm-white); border-left: 3px solid var(--gold); padding: 0.9rem 1.1rem; font-size: 0.92rem; line-height: 1.65; color: var(--text-mid); margin-bottom: 1.4rem; }
  .btn-row { display: flex; gap: 0.8rem; flex-wrap: wrap; margin-top: 1.2rem; }
  .church-detail { display: grid; grid-template-columns: 1.1fr 1fr; gap: 2.5rem; align-items: start; }
  .church-detail-photo img { width: 100%; border-radius: 3px; display: block; object-fit: cover; aspect-ratio: 4 / 3; }
  .schedule-table-wrap { overflow-x: auto; margin-top: 1rem; }
  .schedule-table-wrap table { width: 100%; max-width: 860px; border-collapse: collapse; font-size: 0.93rem; background: #fff; }
  .schedule-table-wrap table th { text-align: left; background: var(--navy); color: #fff; font-weight: 600; padding: 0.7rem 0.9rem; font-size: 0.8rem; letter-spacing: 0.06em; text-transform: uppercase; }
  .schedule-table-wrap table td { padding: 0.7rem 0.9rem; border-bottom: 1px solid var(--border); color: var(--text-mid); vertical-align: top; }
  .schedule-table-wrap td.day { font-weight: 600; color: var(--navy); }
  .schedule-table-wrap td[colspan] { color: var(--text-light); font-style: italic; font-weight: 400; }
  .schedule-table-wrap table .place { display: block; font-size: 0.82rem; color: var(--gold-deep); margin-top: 0.15rem; }
  .legal-text { max-width: 760px; }
  .legal-text p:where(:not(.bdp-p)) { color: var(--text-mid); font-size: 0.95rem; line-height: 1.8; margin-bottom: 1rem; }
  .legal-text strong { color: var(--navy); }
  .support-panel { grid-template-columns: 1fr 1fr; align-items: stretch; }
  .support-panel .lotto-cta p:where(:not(.bdp-p)) { margin: 0.6rem 0 1.2rem; }
  .bulletin-grid { grid-template-columns: repeat(3, 1fr); }
  
  @media (max-width: 768px) {
    
    .bulletin-grid { grid-template-columns: 1fr; }
    .church-detail-photo img { max-height: 320px; }
    .safeguarding-inner, .safeguarding-inner > div { white-space: normal; flex-wrap: wrap; text-align: center; }
    .church-detail, .support-panel { grid-template-columns: 1fr; }
    .facts { grid-template-columns: 1fr; gap: 0.15rem; }
    .facts dd { margin-bottom: 0.6rem; }
  }

  /* ── v6 ACCESSIBILITY ── */
  .mobile-drawer { visibility: hidden; transition: transform 0.25s ease, visibility 0s linear 0.25s; }
  body.drawer-open .mobile-drawer { visibility: visible; transition: transform 0.25s ease, visibility 0s; }
  nav button.nav-top { font-family: 'Source Sans 3', sans-serif; font-size: 0.8rem; font-weight: 500; color: var(--text-mid); background: none; border: 0; padding: 0.5rem 0.55rem; border-radius: 4px; letter-spacing: 0.01em; white-space: nowrap; cursor: pointer; transition: color 0.2s, background 0.2s; }
  nav button.nav-top:hover { color: var(--navy); background: var(--warm-white); }
  .nav-item > button.nav-top::after { content: ''; display: inline-block; margin-left: 0.4rem; width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 6px solid var(--text-mid); vertical-align: middle; transition: transform 0.15s; }
  .nav-item.open > button.nav-top::after { transform: rotate(180deg); }
  nav button.nav-top:focus-visible, .gallery-thumb:focus-visible, .copy-btn:focus-visible, .lightbox-close:focus-visible, .church-preview-card:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
  .gallery-thumb { display: block; padding: 0; border: 0; background: none; cursor: zoom-in; border-radius: 3px; width: 100%; }
  .gallery-thumb img { pointer-events: none; }
  h1[tabindex="-1"]:focus, h2[tabindex="-1"]:focus { outline: none; }
  .church-times { margin-top: 2rem; }
  .church-times-title { font-family: 'Cormorant Garamond', serif; font-size: 1.6rem; color: var(--navy); font-weight: 600; margin-bottom: 0.9rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--border); }
  .church-times-title span { display: inline-block; margin-left: 0.6rem; font-family: 'Source Sans 3', sans-serif; font-size: 0.85rem; font-weight: 500; color: var(--gold-deep); letter-spacing: 0.04em; }
  .church-panel-note { margin-top: 1.8rem; }
  /* keep the wide Churches menu inside the window */
  .nav-item .dropdown-wide { left: auto; right: 0; }
  /* homepage sacraments strip */
  .sac-strip { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); background: #fff; border: 1px solid var(--border); border-top: 3px solid var(--gold); border-radius: 4px; margin-top: 2rem; overflow: hidden; }
  .sac-item { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 0.5rem; padding: 1.7rem 0.6rem 1.6rem; text-decoration: none; border-left: 1px solid var(--border); transition: background 0.2s; }
  .sac-item:first-child { border-left: 0; }
  .sac-item:hover { background: var(--warm-white); }
  .sac-item:focus-visible { outline: 3px solid var(--gold); outline-offset: -3px; }
  .sac-icon { font-size: 1.9rem; line-height: 1; margin-bottom: 0.2rem; }
  .sac-name { font-family: 'Cormorant Garamond', serif; font-size: 1.15rem; font-weight: 600; color: var(--navy); line-height: 1.2; }
  .sac-how { font-size: 0.74rem; font-weight: 600; letter-spacing: 0.03em; color: var(--gold-deep); line-height: 1.35; }
  .sac-strip-more { text-align: center; margin-top: 1.6rem; }
  @media (max-width: 959px) {
    .sac-strip { grid-template-columns: 1fr; }
    .sac-item { flex-direction: row; text-align: left; gap: 1rem; padding: 0.95rem 1.2rem; border-left: 0; border-top: 1px solid var(--border); }
    .sac-item:first-child { border-top: 0; }
    .sac-icon { font-size: 1.5rem; width: 2rem; text-align: center; margin: 0; }
    .sac-name { flex: 1; }
    .sac-how { text-align: right; }
  }
  @media (prefers-reduced-motion: reduce) { .sac-item { transition: none; } }
  @media (min-width: 900px) { #church-acorn .mass-card { max-width: calc((100% - 3rem) / 3); } }
  .mass-entry .time { white-space: nowrap; }
  
  .copy-btn { font: 600 0.75rem 'Source Sans 3', sans-serif; letter-spacing: 0.04em; color: var(--navy); background: var(--warm-white); border: 1px solid var(--border); border-radius: 3px; padding: 0.2rem 0.6rem; margin-left: 0.4rem; cursor: pointer; vertical-align: middle; }
  .copy-btn:hover { border-color: var(--gold); }
  .copy-email { font-size: 0.88rem; background: var(--warm-white); padding: 0.7rem 0.9rem; border-radius: 3px; margin: 0.8rem 0 1rem; }
  .copy-email-addr { font-weight: 600; color: var(--navy); word-break: break-all; }
  @media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation: none !important; transition: none !important; }
    .hero-eyebrow, .hero-title, .hero-subtitle, .hero-ctas, .hero-mass-card { opacity: 1 !important; transform: none !important; }
  }

  /* ================= CLARITY TUNING (same fonts, colours and layout as v7) ================= */
  :root { --text-light: #5e554c; --stone: #6e6555; }
  body { text-rendering: optimizeLegibility; }
  .hero-subtitle { font-weight: 400; }
  .hero-eyebrow { letter-spacing: 0.16em; }

  /* Small labels: a touch larger, slightly less letter-spacing */
  .utility-bar { font-size: 0.85rem; }
  .section-label { font-size: 0.82rem; letter-spacing: 0.14em; }
  .mass-card-title { font-size: 0.82rem; letter-spacing: 0.13em; }
  .hero-mass-group-title { font-size: 0.82rem; letter-spacing: 0.08em; }
  .view-all-times { font-size: 0.85rem; }
  .mass-card h3, .mass-card h4 { font-size: 0.84rem; letter-spacing: 0.12em; }
  .lotto-results-label { font-size: 0.82rem; letter-spacing: 0.12em; }
  
  .church-preview-text .eyebrow { font-size: 0.8rem; letter-spacing: 0.13em; }
  .stream-label { letter-spacing: 0.13em; color: #aebbd1; }
  .contact-item-text strong { font-size: 0.82rem; }
  .footer-col h3, .footer-col h4 { font-size: 0.82rem; letter-spacing: 0.13em; }
  .footer-bottom { font-size: 0.82rem; }
  .dropdown-col-title { font-size: 0.82rem; }
  .subpage-hero .breadcrumb { font-size: 0.85rem; }
  .quick-links-label { font-size: 0.8rem; }
  .mobile-nav-subhead { font-size: 0.78rem; }
  .info-card .meta { font-size: 0.8rem; }
  .sac-how { font-size: 0.82rem; }
  
  
  @media (max-width: 1050px) { .floating-mass-btn { font-size: 0.85rem; } }

  /* Mass times: same serif, slightly larger */
  .mass-day { font-size: 0.9rem; }
  .mass-time { font-size: 1.1rem; }
  .mass-entry .day { font-size: 0.95rem; }
  .mass-entry .time { font-size: 1.12rem; }
  @media (max-width: 480px) { .mass-entry .day { font-size: 0.88rem; } .mass-entry .time { font-size: 1.06rem; } }

  /* Paragraph text: slightly larger */
  .welcome-body { font-size: 1rem; }
  
  .bulletin-info p:where(:not(.bdp-p)), .lotto-cta p:where(:not(.bdp-p)) { font-size: 0.92rem; }
  .contact-item-text { font-size: 0.95rem; }
  .info-card p:where(:not(.bdp-p)) { font-size: 0.97rem; }
  .schedule-table-wrap table .place { font-size: 0.88rem; }
  .page-note { font-size: 0.95rem; }
  .church-panel-note { font-size: 0.92rem; }

  /* Light-on-navy text: same hue, a little brighter */
  .welcome-body { color: #c3cddb; }
  .welcome-quote > div { color: #93a3bd !important; }
  .stream-text .section-intro { color: #aebbd1; }
  .lotto-section .section-intro, .lotto-cta p:where(:not(.bdp-p)) { color: #bcc7db; }
  footer, .footer-brand p:where(:not(.bdp-p)) { color: #bcc7db; }
  .footer-bottom, .footer-bottom a { color: #aab6cc; }

  /* ================= ACCESSIBILITY: tap targets + new-tab announcements (no visual change) ================= */
  .sr-only {
    position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
  }
  @media (max-width: 1050px) {
    /* Invisible 44px-tall tap zones around small links and buttons */
    .contact-item-text a, .copy-btn, .quick-links-inner a, .safeguarding-inner a,
    .footer-bottom a, .mobile-drawer-utility a, .mobile-drawer-close, .view-all-times { position: relative; }
    .contact-item-text a::before, .copy-btn::before, .quick-links-inner a::before, .safeguarding-inner a::before,
    .footer-bottom a::before, .mobile-drawer-utility a::before, .mobile-drawer-close::before, .view-all-times::before {
      content: ''; position: absolute; left: -6px; right: -6px; top: 50%; height: 44px; transform: translateY(-50%);
    }
    /* A little more room between rows so the tap zones never overlap */
    .quick-links-inner { row-gap: 0.8rem; }
    .mobile-drawer-utility { gap: 1.1rem; }
    /* Stacked footer links: spacing moved into the link itself so each is a full 44px tap */
    .footer-col a { margin-bottom: 0; padding: 0.55rem 0; }
  }

  /* Contact map: match the height of the contact details on wider screens */
  @media (min-width: 769px) {
    .contact-grid .map-placeholder { height: auto; min-height: 320px; align-self: stretch; }
  }

  /* ================= ACCESSIBILITY & PRINT (group 1) ================= */
  /* Row headers in the weekly schedule look exactly like the old day cells */
  .schedule-table-wrap tbody th {
    background: none; color: var(--navy); font-weight: 600; font-size: inherit;
    text-transform: none; letter-spacing: normal; text-align: left;
    padding: 0.7rem 0.9rem; border-bottom: 1px solid var(--border); vertical-align: top;
  }
  /* Keyboard focus ring for the live stream play button */
  .stream-play:focus-visible { outline: 3px solid var(--gold-light); outline-offset: 4px; }
  /* Floating Mass times button steps aside when the footer is on screen */
  .floating-mass-btn { transition: opacity 0.2s, visibility 0.2s; }
  .floating-mass-btn.is-tucked { opacity: 0; visibility: hidden; pointer-events: none; }

  /* Printing: just the information, in black on white */
  @media print {
    .utility-bar, header, .mobile-drawer, .mobile-drawer-overlay, .floating-mass-btn, .skip-link,
    .hero-bg, .hero-overlay, .hero-ctas, .quick-links-strip, .churches-preview-section,
    .sacraments-photo-banner, .sac-strip-more, .livestream-section, .lotto-section,
    .map-placeholder, .subpage-map, .safeguarding-strip, footer, .modal-overlay, .lightbox-overlay,
    .btn-primary, .btn-ghost, .btn-outline, .copy-btn, .view-all-times, .gallery-grid, .church-detail-photo img { display: none !important; }
    /* Home page printout = Mass times + contact details */
    #page-home .welcome-band, #page-home .sacraments-section, #page-home .bulletin-section, #page-home .hero-mass-card { display: none !important; }
    *, *::before, *::after { animation: none !important; transition: none !important; box-shadow: none !important; text-shadow: none !important; }
    html { font-size: 12pt; }
    body { background: #fff !important; color: #000 !important; }
    section, .welcome-band, .subpage-hero { padding: 0.8rem 0 !important; background: #fff !important; }
    .hero { height: auto !important; min-height: 0 !important; display: block; }
    .hero-content { display: block !important; padding: 0 !important; }
    .hero-eyebrow, .hero-title, .hero-subtitle, .hero-mass-card { opacity: 1 !important; transform: none !important; color: #000 !important; }
    .hero-title em { color: #000 !important; }
    .hero-mass-card { border: 1px solid #999; margin-top: 0.6rem; }
    .welcome-quote, .welcome-quote span, .welcome-body, .welcome-body strong { color: #000 !important; }
    .schedule-table-wrap table thead th { background: #fff !important; color: #000 !important; border-bottom: 2px solid #000; }
    .mass-card, .info-card, .bulletin-card, .contact-item, .schedule-table-wrap table tr { break-inside: avoid; }
    a { color: #000 !important; text-decoration: none; }
    .mass-grid { grid-template-columns: repeat(3, 1fr) !important; gap: 0.6rem !important; margin-top: 0.6rem !important; }
    .mass-card { padding: 0.7rem 0.9rem !important; }
    .mass-entry { gap: 0.6rem; }
    .mass-card h3, .mass-card h4 { margin-bottom: 0.4rem !important; }
    .church-times { margin-top: 0.8rem !important; }
    .section-intro { margin-bottom: 0.8rem !important; }
    .divider { margin: 0.4rem 0 0.8rem !important; }
    h1, h2, h3, h4, .section-label, .church-times-title { break-after: avoid; page-break-after: avoid; }
    .church-times, .contact-info { break-inside: avoid; }
  }

  /* ================= v9 ================= */
  /* Mass times in the plain sans-serif, easier to read at a glance */
  .mass-time, .mass-entry .time { font-family: 'Source Sans 3', sans-serif; font-weight: 600; font-size: 1rem; }
  .church-times-note { font-size: 0.92rem; color: var(--text-mid); margin: -0.2rem 0 0.4rem; }
  .church-times-note a { color: var(--gold-deep); font-weight: 600; }
  /* Narrow phones: let long labels wrap instead of pushing the page sideways */
  .mass-grid > *, .sac-strip > *, .contact-grid > * { min-width: 0; }
  .mass-entry { gap: 0.8rem; }
  .sac-how { overflow-wrap: break-word; }
  /* Sacrament cards reached from the home page land below the sticky header */
  .info-card[id] { scroll-margin-top: 110px; }
  .info-card[id]:focus { outline: 3px solid var(--gold); outline-offset: 2px; }
  /* Live stream */
  .stream-caption { font-size: 0.88rem; color: #aebbd1; margin-top: 0.8rem; }
  /* Theme 1.3.16: the screen shows the ChurchCam Live holding slide, which carries
     its own title and Mass times, so only the play button sits on top. */
  .stream-screen {
    background: #0d1629 url('assets/images/livestream-slide.jpg') center / cover no-repeat;
  }
  .stream-screen::before { background: rgba(13,22,41,0.12); }
  .stream-screen .stream-label,
  .stream-screen .stream-status { display: none; }
  .stream-play { width: 68px; height: 68px; box-shadow: 0 4px 18px rgba(0,0,0,0.45); }
  /* Theme 1.3.17: after play is pressed the ChurchCam player fills the screen box */
  .stream-screen.is-playing { background: #0d1629; display: block; transition: height 0.3s ease; }
  .stream-screen.is-playing::before { display: none; }
  .stream-screen.is-playing iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
  /* Newsletter placeholder */
  .bulletin-status { font-size: 0.88rem !important; font-style: italic; color: var(--stone) !important; margin: 0 !important; }
  /* Contact */
  .urgent-note { background: var(--warm-white); border-left: 3px solid var(--gold); padding: 0.8rem 1rem; font-size: 0.95rem; line-height: 1.6; color: var(--text-mid); margin-bottom: 1rem; border-radius: 2px; }
  .urgent-note strong { color: var(--navy); }
  .urgent-note a { color: var(--gold-deep); font-weight: 600; text-decoration: none; white-space: nowrap; }
  .map-wrap { display: flex; flex-direction: column; }
  .contact-grid .map-wrap .map-placeholder { height: 340px; min-height: 0; }
  .map-caption { font-size: 0.88rem; color: var(--text-light); line-height: 1.6; margin-top: 0.6rem; }
  .map-caption a { color: var(--gold-deep); font-weight: 600; }
  .copy-email-addr { word-break: normal; overflow-wrap: break-word; }
  .contact-item-text { min-width: 0; overflow-wrap: break-word; }
  /* Mobile header: Call button beside the menu */
  .mobile-header-actions { display: flex; align-items: center; gap: 0.5rem; }
  .mobile-call-btn { display: none; align-items: center; gap: 0.35rem; height: 42px; padding: 0 0.8rem; border: 1px solid var(--gold-deep); border-radius: 4px; color: var(--navy); font-weight: 600; font-size: 0.9rem; text-decoration: none; }
  .mobile-call-btn:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
  @media (max-width: 1050px) {
    .mobile-call-btn { display: inline-flex; }
    /* Show the Mass times card on phones and tablets, under the welcome */
    .hero { height: auto; min-height: 0; }
    .hero-content { padding-top: 3.5rem; padding-bottom: 2rem; gap: 1.5rem; }
    .hero-mass-card { display: block; min-width: 0; width: 100%; max-width: 460px; padding: 1.3rem 1.4rem; }
    .hero-ctas .hero-cta-secondary { display: none; }
    .hero-subtitle { margin-bottom: 1.2rem; }
  }
  @media (max-width: 1050px) { .header-inner .logo-title { white-space: nowrap; } }
  @media (max-width: 440px) {
    .mobile-call-text { display: none; }
    .mobile-call-btn { padding: 0 0.75rem; }
  }
  @media (max-width: 420px) {
    .header-inner .logo-cross { width: 30px; height: 30px; }
    .header-inner .logo-block { gap: 0.6rem; }
    .header-inner .logo-title { font-size: 0.82rem; }
  }
  .mass-row { gap: 0.8rem; }
  @media (max-width: 1050px) {
    .church-times-note a, .map-caption a, .urgent-note a { position: relative; }
    .church-times-note a::before, .map-caption a::before, .urgent-note a::before {
      content: ''; position: absolute; left: -6px; right: -6px; top: 50%; height: 44px; transform: translateY(-50%);
    }
  }
  /* Floating Mass times button is not needed on the Weekly Schedule page */
  body[data-page="weekly-schedule"] .floating-mass-btn { display: none !important; }

/* ================= WORDPRESS ADDITIONS ================= */
/* Sticky header sits below the WordPress admin bar when an editor is logged in */
.admin-bar header { top: 32px; }
@media screen and (max-width: 782px) { .admin-bar header { top: 46px; } }
@media screen and (max-width: 600px) { .admin-bar header { top: 0; } }

/* Weekly schedule: WordPress wraps the table in a <figure> */
figure.schedule-table-wrap { margin: 1rem 0 0; }
.schedule-table-wrap table th, .schedule-table-wrap table td { border-left: 0; border-right: 0; }

/* Pages added later in WordPress (no designed hero in their content) */
.bdp-plain-content { max-width: 860px; }
.bdp-plain-content > * + * { margin-top: 1rem; }
.bdp-plain-content h2 { font-family: 'Cormorant Garamond', serif; color: var(--navy); font-size: 1.8rem; font-weight: 500; margin-top: 2rem; }
.bdp-plain-content h3 { font-family: 'Cormorant Garamond', serif; color: var(--navy); font-size: 1.4rem; font-weight: 500; margin-top: 1.5rem; }
.bdp-plain-content p, .bdp-plain-content li { color: var(--text-mid); font-size: 1rem; line-height: 1.8; }
.bdp-plain-content ul, .bdp-plain-content ol { padding-left: 1.4rem; }
.bdp-plain-content a { color: var(--gold-deep); }
.bdp-plain-content img { max-width: 100%; height: auto; border-radius: 4px; }
.bdp-plain-content .wp-block-button__link { display: inline-block; background: var(--gold); color: #fff; padding: 0.7rem 1.4rem; border-radius: 3px; text-decoration: none; }
.bdp-plain-content figure { margin: 1.5rem 0; }
.bdp-plain-content figcaption { font-size: 0.85rem; color: var(--text-light); margin-top: 0.4rem; }

/* Photos are WordPress Image and Gallery blocks (each wrapped in a <figure>) */
figure.church-detail-photo, figure.sacraments-photo-banner, .church-preview-card > figure, .gallery-grid > figure { margin: 0; }
.church-preview-card > figure { height: 100%; }
.church-preview-text .link a { color: inherit; text-decoration: none; }
/* the "Visit ..." link covers the whole card, so the whole card is clickable */
.church-preview-text .link a::after { content: ''; position: absolute; top: -1000px; left: 0; right: 0; bottom: 0; z-index: 2; }
.church-preview-card:focus-within { outline: 3px solid var(--gold); outline-offset: 2px; }
.church-preview-text .link a:focus-visible { outline: none; }
.gallery-grid img:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
/* Replaced photos of any size keep the designed frame */
.church-detail-photo img { height: auto; }
main.page .wp-block-gallery.gallery-grid { gap: 1rem; }

  /* ================= v1.2: editable church facts, newsletter archive ================= */
  .facts .fact-label { font-weight: 600; color: var(--navy); margin: 0; }
  .facts .fact-value { color: var(--text-mid); margin: 0; }
  @media (max-width: 700px) { .facts .fact-value { margin-bottom: 0.6rem; } }
  .section-intro.section-intro-follow { margin-top: -1rem; }
  .location-note { margin-top: 0.8rem; }
  .bulletin-previous { font-size: 0.8rem !important; color: var(--text-light); margin: 0.9rem 0 0 !important; }
  .bulletin-previous a { color: var(--gold-deep); }
  .welcome-quote .welcome-quote-text { margin: 0; }
  .welcome-quote .welcome-quote-ref { margin: 0.8rem 0 0; font-size: 0.85rem; font-style: normal; color: #93a3bd; font-family: 'Source Sans 3', sans-serif; }

/* ================= v1.3: newsletters, news & events, seasonal banner ================= */
/* Seasonal banner under the menu */
.season-banner { background: var(--navy); border-bottom: 3px solid var(--gold); }
.season-banner-inner { max-width: 1200px; margin: 0 auto; padding: 0.7rem 1.5rem; color: var(--warm-white); font-size: 0.95rem; line-height: 1.5; text-align: center; }
.season-banner .season-star { color: var(--gold-light); }
.season-banner a { color: var(--gold-light); font-weight: 600; white-space: nowrap; }
.season-banner a:hover, .season-banner a:focus-visible { color: #fff; }

/* Home newsletter card: latest issues */
.nl-latest { list-style: none; margin: 0.2rem 0 1rem; padding: 0; }
.nl-latest li { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; padding: 0.55rem 0; border-bottom: 1px solid var(--border); }
.nl-latest li:first-child { border-top: 1px solid var(--border); }
.nl-latest .nl-what { display: flex; flex-direction: column; min-width: 0; }
.nl-latest .nl-kind { font-weight: 600; color: var(--navy); font-size: 0.92rem; }
.nl-latest .nl-special .nl-kind { color: var(--gold-deep); }
.nl-latest .nl-date { font-size: 0.8rem; color: var(--text-light); }
.nl-latest .nl-dl { flex-shrink: 0; font-size: 0.8rem; font-weight: 600; color: var(--gold-deep); text-decoration: underline; text-underline-offset: 3px; }
.nl-latest .nl-dl:hover { color: var(--navy); }

/* Newsletters page */
.nl-filter { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 2rem 0 0.5rem; }
.nl-filter a { display: inline-flex; align-items: center; gap: 0.45rem; padding: 0.45rem 0.95rem; border: 1px solid var(--border); border-radius: 999px; color: var(--text-mid); text-decoration: none; font-size: 0.9rem; background: #fff; }
.nl-filter a span { font-size: 0.75rem; color: var(--text-light); }
.nl-filter a:hover { border-color: var(--gold); }
.nl-filter a[aria-current="page"] { background: var(--navy); border-color: var(--navy); color: #fff; }
.nl-filter a[aria-current="page"] span { color: var(--gold-pale); }
.nl-month { font-family: 'Cormorant Garamond', serif; color: var(--navy); font-size: 1.5rem; font-weight: 500; margin: 2rem 0 0.6rem; }
.nl-list { list-style: none; margin: 0; padding: 0; max-width: 860px; }
.nl-item { display: flex; align-items: center; gap: 1rem; background: #fff; border: 1px solid var(--border); border-radius: 3px; padding: 0.9rem 1.1rem; margin-bottom: 0.6rem; }
.nl-item .nl-badge { flex-shrink: 0; width: 110px; text-align: center; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--gold-deep); background: var(--warm-white); border: 1px solid var(--border); border-radius: 3px; padding: 0.3rem 0.4rem; }
.nl-item.nl-special .nl-badge { background: var(--navy); color: var(--gold-pale); border-color: var(--navy); }
.nl-item .nl-what { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.nl-item .nl-title { font-weight: 600; color: var(--navy); }
.nl-item .nl-date { font-size: 0.85rem; color: var(--text-light); }
.nl-item .btn-outline { flex-shrink: 0; }
.nl-empty, .news-empty { color: var(--text-mid); margin-top: 1.5rem; }
.nl-footnote { font-size: 0.85rem; color: var(--text-light); margin-top: 1.5rem; }
@media (max-width: 600px) {
  .nl-item { flex-wrap: wrap; }
  .nl-item .nl-what { flex-basis: calc(100% - 130px); }
  .nl-item .btn-outline { width: 100%; text-align: center; }
}

/* Events: Home section, News & Events page, Special Services */
.events-section { background: var(--warm-white); }
.event-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1.5rem; margin-top: 1.5rem; }
.event-card { position: relative; background: #fff; border: 1px solid var(--border); border-top: 3px solid var(--gold); border-radius: 4px; overflow: hidden; display: flex; flex-direction: column; transition: box-shadow 0.2s; }
.event-card:hover { box-shadow: 0 4px 20px rgba(26,39,68,0.1); }
.event-card:focus-within { outline: 3px solid var(--gold); outline-offset: 2px; }
.event-photo img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.event-body { position: relative; padding: 1.3rem 1.4rem 1.4rem; display: flex; flex-direction: column; flex: 1; }
.event-card.has-photo .event-badge { position: absolute; top: -2.2rem; left: 1.2rem; }
.event-badge { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; width: 56px; height: 60px; background: var(--navy); color: #fff; border-radius: 3px; margin: 0 0 0.7rem; line-height: 1; box-shadow: 0 2px 8px rgba(0,0,0,0.15); }
.event-card.has-photo .event-body { padding-top: 2.2rem; }
.event-badge .m { font-size: 0.68rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gold-light); font-weight: 600; }
.event-badge .d { font-family: 'Cormorant Garamond', serif; font-size: 1.7rem; font-weight: 600; margin-top: 2px; }
.event-meta { font-size: 0.78rem; font-weight: 600; letter-spacing: 0.04em; color: var(--gold-deep); margin: 0 0 0.35rem; }
.event-title { font-family: 'Cormorant Garamond', serif; font-size: 1.45rem; font-weight: 600; color: var(--navy); line-height: 1.25; margin: 0 0 0.5rem; }
.event-title a { color: inherit; text-decoration: none; }
.event-title a::after { content: ''; position: absolute; inset: 0; z-index: 1; }
.event-title a:focus-visible { outline: none; }
.event-card .event-photo { position: relative; }
.event-excerpt { font-size: 0.92rem; color: var(--text-mid); line-height: 1.65; margin: 0 0 0.8rem; }
.event-more { margin: auto 0 0; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--gold-deep); }
.events-all { margin: 2rem 0 0; text-align: center; }
.news-heading { font-family: 'Cormorant Garamond', serif; color: var(--navy); font-size: 1.8rem; font-weight: 500; margin: 2.5rem 0 0; }
.news-pages { display: flex; justify-content: space-between; gap: 1rem; margin-top: 2rem; }
.special-events { margin: 0.5rem 0 2rem; }
.special-events .news-heading { margin-top: 1.5rem; }

/* One News & Events post */
.bdp-post-content { max-width: 900px; }
.event-facts { display: flex; flex-wrap: wrap; gap: 0.6rem 2.2rem; background: var(--warm-white); border-left: 4px solid var(--gold); padding: 1rem 1.3rem; margin: 0 0 1.5rem; }
.event-facts dt { font-size: 0.72rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gold-deep); }
.event-facts dd { margin: 0.15rem 0 0; color: var(--navy); font-weight: 600; }
.news-date { font-size: 0.9rem; color: var(--text-light) !important; }
.event-cover img { width: 100%; max-height: 520px; object-fit: cover; }
.news-back { margin-top: 2.5rem !important; }
.bdp-post-content .wp-block-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 0.8rem; margin: 1.5rem 0; padding: 0; }
.bdp-post-content .wp-block-gallery figure { margin: 0; }
.bdp-post-content .wp-block-gallery img { width: 100%; height: 180px; object-fit: cover; border-radius: 3px; cursor: zoom-in; display: block; }
.bdp-post-content .wp-block-gallery img:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
.bdp-post-content .wp-block-gallery figcaption { font-size: 0.8rem; }
.bdp-post-content .wp-block-table { overflow-x: auto; }
.bdp-post-content table { width: 100%; border-collapse: collapse; background: #fff; font-size: 0.95rem; }
.bdp-post-content th, .bdp-post-content td { text-align: left; padding: 0.6rem 0.8rem; border-bottom: 1px solid var(--border); vertical-align: top; }
.bdp-post-content thead th { background: var(--navy); color: #fff; font-weight: 600; font-size: 0.85rem; letter-spacing: 0.04em; }
.bdp-post-content tbody tr:nth-child(even) { background: var(--cream); }
.bdp-post-content .aligncenter { margin-left: auto; margin-right: auto; text-align: center; }
.bdp-post-content .wp-block-image.alignleft, .bdp-post-content .alignleft { float: left; margin: 0.3rem 1.5rem 1rem 0; max-width: 50%; }
.bdp-post-content .wp-block-image.alignright, .bdp-post-content .alignright { float: right; margin: 0.3rem 0 1rem 1.5rem; max-width: 50%; }
.bdp-post-content .wp-block-embed iframe { max-width: 100%; }
.bdp-post-content::after { content: ''; display: table; clear: both; }
@media print {
  .season-banner, .nl-filter, .news-pages, .news-back, .event-more { display: none !important; }
}

/* ================= v1.3.1: document covers, Resources ================= */
.nl-cover-tile { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; background: linear-gradient(160deg, var(--warm-white), var(--gold-pale)); color: var(--gold-deep); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; font-size: 0.85rem; }
.nl-cover-tile.nl-cover-powerpoint { background: linear-gradient(160deg, #f6e6df, #e7b9a6); color: #8a3b1c; }
.nl-cover-tile.nl-cover-word { background: linear-gradient(160deg, #e3eaf6, #b4c6e6); color: #1d3f7a; }
/* Home card: small cover beside each issue */
.nl-latest .nl-thumb { flex-shrink: 0; display: block; width: 40px; height: 54px; overflow: hidden; border: 1px solid var(--border); border-radius: 2px; background: var(--warm-white); }
.nl-latest .nl-thumb img { width: 100%; height: 100%; object-fit: cover; object-position: top; display: block; }
.nl-latest .nl-thumb .nl-cover-tile { font-size: 0.55rem; letter-spacing: 0.02em; }
.nl-latest .nl-what { flex: 1; }
/* Newsletters and Resources pages: grid of covers */
.nl-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 1.4rem; }
.nl-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--border); border-radius: 4px; overflow: hidden; transition: box-shadow 0.2s, transform 0.2s; }
.nl-card:hover { box-shadow: 0 6px 22px rgba(26,39,68,0.12); transform: translateY(-2px); }
.nl-card-cover { position: relative; display: block; aspect-ratio: 3 / 4; overflow: hidden; background: var(--warm-white); border-bottom: 1px solid var(--border); }
.nl-card-cover img { width: 100%; height: 100%; object-fit: cover; object-position: top; display: block; }
.nl-card-cover .nl-badge { position: absolute; bottom: 0.6rem; left: 0.6rem; width: auto; font-size: 0.65rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--gold-deep); background: rgba(255,255,255,0.95); border: 1px solid var(--border); border-radius: 3px; padding: 0.2rem 0.5rem; }
.nl-card.nl-special .nl-badge { background: var(--navy); color: var(--gold-pale); border-color: var(--navy); }
.nl-card-body { padding: 0.9rem 1rem 1rem; display: flex; flex-direction: column; flex: 1; }
.nl-card .nl-title { font-family: 'Source Sans 3', sans-serif; font-size: 0.98rem; font-weight: 600; color: var(--navy); line-height: 1.35; margin: 0 0 0.25rem; }
.nl-card .nl-date { font-size: 0.82rem; color: var(--text-light); margin: 0; }
.nl-card .nl-note { font-size: 0.82rem; color: var(--text-mid); margin: 0.35rem 0 0; }
.nl-card-dl { margin-top: auto; padding-top: 0.8rem; font-size: 0.8rem; font-weight: 600; color: var(--gold-deep); text-decoration: underline; text-underline-offset: 3px; }
.nl-card-dl:hover { color: var(--navy); }
.nl-card:focus-within { outline: 3px solid var(--gold); outline-offset: 2px; }
.nl-footnote a { color: var(--gold-deep); }
@media (max-width: 600px) {
  .nl-grid { grid-template-columns: repeat(2, 1fr); gap: 0.9rem; }
  .nl-card-body { padding: 0.7rem 0.75rem 0.8rem; }
}
/* Landscape covers (PowerPoint slides) are shown whole */
.nl-card-cover img.nl-cover-wide, .nl-latest .nl-thumb img.nl-cover-wide { object-fit: contain; object-position: center; background: var(--navy); }
.bdp-admin-cover img.nl-cover-wide { object-fit: contain; background: #1a2744; }

/* ================= v1.3.2: pop-up announcement ================= */
.bdp-popup[hidden] { display: none !important; }
.bdp-popup { position: fixed; inset: 0; z-index: 10000; display: flex; align-items: center; justify-content: center; padding: 1rem; background: rgba(15, 22, 40, 0.6); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); opacity: 0; transition: opacity 0.25s ease; }
.bdp-popup.open { opacity: 1; }
html.bdp-popup-lock { overflow: hidden; }
.bdp-popup-box { position: relative; width: 100%; max-width: 520px; max-height: calc(100vh - 2rem); overflow-y: auto; background: #fff; border: 2px solid var(--gold); border-radius: 6px; box-shadow: 0 20px 60px rgba(0,0,0,0.35); text-align: center; transform: translateY(12px) scale(0.98); transition: transform 0.25s ease; }
.bdp-popup.open .bdp-popup-box { transform: none; }
.bdp-popup-img img { display: block; width: 100%; max-height: 240px; object-fit: cover; }
.bdp-popup-body { padding: 2rem 2rem 1.8rem; }
.bdp-popup-x { position: absolute; top: 0.7rem; right: 0.7rem; z-index: 1; width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--border); background: rgba(255,255,255,0.95); color: var(--navy); font-size: 1.4rem; line-height: 1; cursor: pointer; }
.bdp-popup-x:hover { border-color: var(--gold); }
.bdp-popup-x:focus-visible, .bdp-popup-actions a:focus-visible, .bdp-popup-actions button:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
.bdp-popup-kicker { margin: 0 0 0.4rem; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gold-deep); }
.bdp-popup-title { margin: 0 0 0.5rem; font-family: 'Cormorant Garamond', serif; font-size: 2.1rem; font-weight: 600; line-height: 1.15; color: var(--navy); }
.bdp-popup-when { margin: 0 0 1rem; font-weight: 700; color: var(--navy); }
.bdp-popup-msg p { margin: 0 0 0.8rem; color: var(--text-mid); line-height: 1.65; }
.bdp-popup-note { margin: 0 0 0.4rem; font-size: 0.95rem; color: var(--text); font-weight: 600; }
.bdp-popup-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem; margin: 1.2rem 0 0; }
.bdp-popup-actions .btn-outline { cursor: pointer; background: #fff; font-family: inherit; }
@media (max-width: 600px) {
  .bdp-popup-body { padding: 1.6rem 1.2rem 1.4rem; }
  .bdp-popup-title { font-size: 1.7rem; }
  .bdp-popup-actions a, .bdp-popup-actions button { flex: 1 1 100%; text-align: center; }
}
@media (prefers-reduced-motion: reduce) { .bdp-popup, .bdp-popup-box { transition: none; } }
@media print { .bdp-popup { display: none !important; } }

/* 1.3.4: resources on the Home page card */
.bulletin-info .nl-latest-head { font-family: inherit; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gold-deep); margin: 0.6rem 0 0.1rem; }
.nl-latest-res { margin-bottom: 1rem; }
.nl-latest-res .nl-kind { overflow-wrap: anywhere; }
.nl-latest-links { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.nl-latest-links .btn-outline { margin: 0; }

/* 1.3.5: welcome from the parish priest */
/* Same column as every other section: content starts at the left edge of the 1200px container. */
.welcome-band { padding: 4.5rem 2rem; }
.welcome-band .section-inner { display: block; max-width: 1200px; }
.welcome-band .welcome-quote { display: none; }
.welcome-priest { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 5rem; align-items: center; color: #c3cddb; }
.welcome-photo { width: 300px; height: 300px; border-radius: 50%; overflow: hidden; border: 3px solid var(--gold); box-shadow: 0 0 0 8px rgba(212,170,58,0.14), 0 14px 32px rgba(0,0,0,0.3); background: #fff; }
.welcome-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
.welcome-text .section-label { color: var(--gold-light); }
.welcome-text .welcome-title { color: #fff; margin-bottom: 0; }
.welcome-text .welcome-title::after { content: ""; display: block; width: 48px; height: 2px; background: var(--gold); margin: 1.1rem 0 1.4rem; }
.welcome-text > p:where(:not(.bdp-p)) { font-size: 1.1rem; line-height: 1.8; margin-bottom: 0.9rem; max-width: 46em; }
.welcome-sign { margin: 1.1rem 0 1.5rem; display: flex; flex-direction: column; line-height: 1.3; }
.welcome-sign-name { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 1.45rem; color: #fff; }
.welcome-sign-role { font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gold-pale); margin-top: 0.2rem; }
.welcome-more { display: inline-block; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--gold-pale); text-decoration: none; border: 1.5px solid var(--gold); border-radius: 3px; padding: 0.6rem 1.1rem; transition: background 0.2s, color 0.2s; }
.welcome-more:hover, .welcome-more:focus-visible { background: var(--gold); color: var(--navy); }
.welcome-draft { max-width: 46em; margin: 0 0 1rem; padding: 0.45rem 0.7rem; background: #fff4d6; border-left: 3px solid var(--gold); font-size: 0.82rem; line-height: 1.4; }
.welcome-draft, .welcome-draft a { color: #5a4300 !important; }
@media (max-width: 1100px) {
  .welcome-priest { grid-template-columns: 220px minmax(0, 1fr); gap: 3rem; }
  .welcome-photo { width: 220px; height: 220px; }
  .welcome-text > p:where(:not(.bdp-p)) { font-size: 1.02rem; }
}
@media (max-width: 860px) {
  .welcome-priest { grid-template-columns: 170px minmax(0, 1fr); gap: 2.25rem; }
  .welcome-photo { width: 170px; height: 170px; }
}
@media (max-width: 768px) {
  .welcome-band { padding: 3rem 1rem; }
}
@media (max-width: 680px) {
  .welcome-priest { grid-template-columns: 1fr; gap: 1.6rem; }
  .welcome-photo { width: 140px; height: 140px; }
}

.welcome-full { display: grid; grid-template-columns: minmax(200px, 280px) 1fr; gap: 2.5rem; align-items: start; background: #fff; border: 1px solid var(--border); border-top: 3px solid var(--gold); border-radius: 4px; padding: 2rem; margin: 1.5rem 0 2.5rem; scroll-margin-top: 110px; }
.welcome-full-photo { border-radius: 6px; overflow: hidden; aspect-ratio: 1; background: #fff; border: 1px solid var(--border); border-bottom: 3px solid var(--gold); }
.welcome-full-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center top; display: block; }
.welcome-full-text .section-label { margin: 0 0 0.3rem; }
.welcome-full-title { font-family: 'Cormorant Garamond', serif; font-size: clamp(1.6rem, 3vw, 2.1rem); color: var(--navy); margin: 0 0 1rem; line-height: 1.2; }
.welcome-full-text p:where(:not(.bdp-p)) { margin-bottom: 1rem; line-height: 1.75; }
.welcome-full .welcome-sign-name { color: var(--navy); font-size: 1.5rem; }
.welcome-full .welcome-sign-role { color: var(--gold-deep); }
@media (max-width: 760px) {
  .welcome-full { grid-template-columns: 1fr; padding: 1.4rem; gap: 1.4rem; }
  .welcome-full-photo { max-width: 220px; aspect-ratio: 1; border-radius: 12px; }
}
@media print { .welcome-draft { display: none !important; } }

/* 1.3.11: the "I'm looking for" strip lines up with the sections below it */
.quick-links-strip { padding: 0 2rem; }
.quick-links-strip .quick-links-inner { padding-left: 0; padding-right: 0; }
@media (max-width: 768px) {
  .quick-links-strip { padding: 0 1rem; }
}
@media (max-width: 680px) {
  .welcome-photo { margin-left: 6px; box-shadow: 0 0 0 6px rgba(212,170,58,0.14), 0 10px 24px rgba(0,0,0,0.3); }
  .welcome-more { font-size: 0.74rem; letter-spacing: 0.05em; padding: 0.6rem 0.9rem; }
}

/* ── CLICK-TO-LOAD MAPS (no Google cookies until the visitor asks) ── */
.bdp-map-consent {
  width: 100%;
  height: 100%;
  min-height: 260px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: var(--warm-white);
  padding: 1.5rem;
  box-sizing: border-box;
}
.bdp-map-consent-inner { max-width: 420px; }
.bdp-map-consent-title {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.3rem;
  color: var(--navy);
  margin: 0 0 1rem;
}
.bdp-map-consent .bdp-map-load { cursor: pointer; }
.bdp-map-consent-note {
  font-size: 0.82rem;
  color: var(--text-light);
  margin: 1rem 0 0;
  line-height: 1.5;
}
.bdp-map-consent-note a { color: var(--gold-deep); }

/* Static map background behind "Show map" (v1.3.13) */
.bdp-map-consent.has-static-map {
  position: relative;
  background-color: var(--warm-white);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  align-items: flex-end;
  padding: 0 1rem 2.2rem;
}
.bdp-map-consent.has-static-map .bdp-map-consent-inner {
  background: rgba(250, 247, 242, 0.94);
  border: 1px solid var(--border);
  border-radius: 4px;
  box-shadow: 0 6px 18px rgba(26, 39, 68, 0.14);
  padding: 0.8rem 1.2rem 0.85rem;
  max-width: 440px;
}
.bdp-map-consent.has-static-map .bdp-map-consent-title {
  font-size: 1.1rem;
  margin-bottom: 0.6rem;
}
.bdp-map-consent.has-static-map .bdp-map-consent-note {
  margin-top: 0.6rem;
  font-size: 0.76rem;
}
.bdp-map-credit {
  position: absolute;
  right: 0;
  bottom: 0;
  background: rgba(250, 247, 242, 0.85);
  font-size: 0.68rem;
  color: var(--text-mid);
  padding: 0.15rem 0.45rem;
  border-top-left-radius: 3px;
}
.bdp-map-credit a { color: var(--text-mid); }
@media (max-width: 600px) {
  .bdp-map-consent.has-static-map { padding: 0 0.6rem 1.8rem; }
  .bdp-map-consent.has-static-map .bdp-map-consent-title { display: none; }
}

/* =====================================================================
   1.3.18: compact Mass times and mobile polish
   ===================================================================== */

/* Phone icon (replaces the emoji, which looked different on every phone) */
.icon-phone { display: inline-block; vertical-align: -0.15em; flex-shrink: 0; color: var(--gold-deep); }
.mobile-call-btn .icon-phone { width: 18px; height: 18px; }
.has-phone-icon { display: inline-flex; align-items: center; gap: 0.4rem; }

/* Home "Mass & Confession Times" (1.3.21): one card per location, all the same height */
.mt-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; margin-top: 1.8rem; align-items: stretch; }
.mt-church { margin-top: 0 !important; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--border); border-top: 3px solid var(--gold); border-radius: 3px; padding: 1.5rem 1.5rem 1.3rem; min-width: 0; }
.mt-church .mt-title { font-size: 1.5rem; line-height: 1.2; margin-bottom: 0.6rem; padding-bottom: 0.7rem; min-height: 3.2em; }
.mt-church .mt-title span { display: block; margin: 0.25rem 0 0; font-size: 0.85rem; }
.mt-table { width: 100%; border-collapse: collapse; }
.mt-table th, .mt-table td { padding: 0.5rem 0; text-align: left; vertical-align: baseline; font-size: 0.97rem; }
.mt-table tr.mt-day-start + tr.mt-day-start th,
.mt-table tr.mt-day-start + tr.mt-day-start td,
.mt-table tr.mt-day-cont + tr.mt-day-start th,
.mt-table tr.mt-day-cont + tr.mt-day-start td { border-top: 1px solid var(--border); }
.mt-table tr.mt-day-cont th, .mt-table tr.mt-day-cont td { padding-top: 0; }
.mt-table th { width: 5.6em; font-weight: 600; color: var(--navy); padding-right: 0.5rem; }
.mt-table .mt-what { color: var(--text-mid); padding-right: 0.5rem; }
.mt-table .mt-time { text-align: right; font-weight: 600; color: var(--navy); min-width: 4.6em; }
/* Footer sits at the bottom of each card, so all three line up */
.mt-foot { margin-top: auto; padding-top: 1rem; }
.mt-note { margin: 0 0 0.7rem !important; padding-top: 0.8rem; border-top: 1px solid var(--border); font-size: 0.88rem !important; line-height: 1.5; }
.mt-note a { color: var(--gold-deep); font-weight: 600; }
.mt-more { display: inline-block; padding-top: 0.8rem; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--gold-deep); text-decoration: none; }
.mt-note + .mt-more { padding-top: 0; }
.mt-foot > .mt-more:first-child { width: 100%; border-top: 1px solid var(--border); }
.mt-more:hover, .mt-more:focus-visible { color: var(--navy); text-decoration: underline; text-underline-offset: 3px; }
.mass-section .church-panel-note { margin-top: 1.4rem; }
/* Tablets: still three across, a little tighter */
@media (max-width: 1100px) {
  .mt-grid { gap: 1rem; }
  .mt-church { padding: 1.3rem 1.1rem 1.1rem; }
  .mt-table th, .mt-table td { font-size: 0.93rem; }
}
/* Phones and small tablets: cards stack, heights follow their content */
@media (max-width: 860px) {
  .mt-grid { grid-template-columns: 1fr; gap: 1rem; }
  .mt-church .mt-title { min-height: 0; }
  .mt-church { padding: 1.2rem 1.1rem 1.1rem; }
  .mt-table th { width: 6.4em; }
  .mt-table th, .mt-table td { font-size: 0.97rem; }
}
@media (max-width: 480px) {
  .mt-church { padding: 1.1rem 1rem 1rem; }
  .mt-table th { width: 5.4em; }
  .mt-table th, .mt-table td { font-size: 0.95rem; }
}
@media print {
  .mt-grid { gap: 0.6rem !important; }
  .mt-church { padding: 0.6rem 0.8rem !important; }
  .mt-more { display: none; }
}

/* Hero on phones and tablets: show the welcome and Mass times straight away
   (laptops and desktops keep the original staggered fade-in) */
@media (max-width: 1050px) {
  .hero-eyebrow, .hero-title, .hero-subtitle, .hero-ctas, .hero-mass-card { opacity: 1; animation: none; }
  /* No slow zoom on phones and tablets (saves battery, keeps the photo still) */
  .hero-bg { animation: none; }
  /* Show the church, not a slice of the gable: the photo fills the top of the
     hero and fades into navy behind the Mass times card. */
  .hero { background: #0b1124; }
  .hero-bg { bottom: auto; height: 620px; background-position: 42% center; }
  .hero-overlay { bottom: auto; height: 620px; background: linear-gradient(to top, #0b1124 0%, rgba(11,17,36,0.6) 38%, rgba(8,14,32,0.2) 100%); }
}

/* "I'm looking for…" links look like buttons, and scroll sideways on phones */
.quick-links-inner a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 0.9rem; border: 1px solid var(--border); border-radius: 999px; background: #fff; border-bottom-width: 1px; white-space: nowrap; }
.quick-links-inner a:hover, .quick-links-inner a:focus-visible { border-color: var(--gold); border-bottom-color: var(--gold); }
@media (max-width: 768px) {
  .quick-links-strip { padding: 0; }
  .quick-links-strip .quick-links-inner { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; padding: 0.8rem 1rem; gap: 0.5rem; scroll-padding-left: 1rem; }
  .quick-links-strip .quick-links-inner::-webkit-scrollbar { display: none; }
  .quick-links-label { flex-shrink: 0; white-space: nowrap; }
  .quick-links-inner a::before { display: none; }
}

/* Church photo cards: gold label readable over a bright sky */
.church-preview-text .eyebrow { color: var(--gold-pale); text-shadow: 0 1px 6px rgba(0,0,0,0.7); }

/* Newsletter card on phones: one column, so titles are not squeezed letter by letter */
@media (max-width: 600px) {
  .bulletin-card { flex-direction: column; gap: 0.9rem; padding: 1.4rem 1.1rem; }
  .bulletin-icon { width: 42px; height: 42px; font-size: 1.2rem; }
  .bulletin-card .bulletin-info { width: 100%; min-width: 0; }
  .nl-latest-res .nl-kind { overflow-wrap: normal; word-break: normal; }
  .nl-latest li { gap: 0.7rem; }
  .nl-latest .nl-dl { position: relative; padding: 0.6rem 0; }
}

/* Lotto & Donations on phones: no card inside a card */
@media (max-width: 768px) {
  .lotto-panel.support-panel { background: none; border: 0; padding: 0; gap: 1rem; }
  .support-panel .lotto-cta { padding: 1.4rem 1.2rem; }
}

/* Floating Mass times button: not needed on the Home page (the times are on it) */
body[data-page="home"] .floating-mass-btn { display: none !important; }

/* 1.3.20: Weekly Schedule, streamed Masses */
.schedule-table-wrap .streamed { display: table; white-space: nowrap; margin: 0.3rem 0 0.15rem; padding: 0.05rem 0.45rem; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--gold-deep); background: var(--warm-white); border: 1px solid var(--gold-pale); border-radius: 3px; }
.schedule-live-note { max-width: 860px; box-sizing: border-box; margin: 1rem 0 0; padding: 0.8rem 1rem; background: var(--warm-white); border-left: 3px solid var(--gold); border-radius: 2px; font-size: 0.92rem; line-height: 1.6; color: var(--text-mid); }
@media (max-width: 480px) {
  .schedule-table-wrap .streamed { font-size: 0.64rem; letter-spacing: 0.03em; padding: 0.05rem 0.35rem; }
}
.schedule-live-note em { font-style: normal; font-weight: 600; color: var(--gold-deep); }
.schedule-live-note a { color: var(--gold-deep); font-weight: 600; }


/* 1.3.22: Home page tidy-up */
/* Newsletters, Resources and Readings: one card each; the resources card hides when empty, so the cards share the row. */
.bulletin-grid { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
@media (max-width: 768px) { .bulletin-grid { grid-template-columns: 1fr; } }
.bulletin-info p.bulletin-extra { margin: 1.2rem 0 0; padding-top: 0.9rem; border-top: 1px solid var(--border); }
.bulletin-extra a { color: var(--gold-deep); font-weight: 600; }
/* Special Masses & Services box under the Mass times */
.seasonal-box { margin-top: 1.6rem; background: #fff; border: 1px solid var(--border); border-left: 3px solid var(--gold); border-radius: 3px; padding: 1.2rem 1.4rem; }
.seasonal-box .seasonal-title { font-family: 'Cormorant Garamond', serif; font-size: 1.3rem; color: var(--navy); margin: 0 0 0.5rem; }
.seasonal-title span { color: var(--gold); font-size: 0.85em; }
.seasonal-list { list-style: none; margin: 0; padding: 0; }
.seasonal-list li { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 0.15rem 1.2rem; padding: 0.6rem 0; border-top: 1px solid var(--border); }
.seasonal-list li:first-child { border-top: 0; }
.seasonal-list a { color: var(--navy); font-weight: 600; text-decoration: none; }
.seasonal-list a:hover, .seasonal-list a:focus { color: var(--gold-deep); text-decoration: underline; }
.seasonal-meta { color: var(--text-mid); font-size: 0.92rem; }
.seasonal-box .seasonal-more { margin: 0.7rem 0 0; font-size: 0.9rem; }
.seasonal-more a { color: var(--gold-deep); font-weight: 600; }
/* Live-stream days and church beside the player */
.stream-text .stream-schedule { margin: -0.4rem 0 1.6rem; padding: 0.9rem 1.1rem; border: 1px solid rgba(212,170,58,0.35); border-radius: 3px; background: rgba(255,255,255,0.04); }
.stream-text .stream-schedule p { display: grid; grid-template-columns: 7.2rem 1fr; gap: 0 0.6rem; align-items: baseline; margin: 0; color: #dfe5ef; font-size: 0.95rem; line-height: 1.6; }
.stream-text .stream-schedule p + p { margin-top: 0.35rem; }
.stream-schedule-label { color: var(--gold-light); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; }
.stream-text .stream-schedule + .section-intro-follow { margin-top: 0; }
@media (max-width: 600px) { .stream-text .stream-schedule p { grid-template-columns: 1fr; } }
/* Directions to the churches under the Parochial House map */
.map-wrap .map-directions { margin-top: 0.8rem; }
.map-directions a { flex: 1 1 220px; text-align: center; }

/* 1.3.23: narrow phones (320 to 400 px). The logo text may wrap and shrink so
   the Call and menu buttons always stay on screen. */
@media (max-width: 400px) {
  .header-inner { gap: 0.5rem; }
  .header-inner .logo-block { min-width: 0; flex: 1 1 auto; gap: 0.5rem; }
  .header-inner .logo-text { min-width: 0; }
  .header-inner .logo-title { white-space: normal; font-size: 0.78rem; line-height: 1.15; }
  .header-inner .logo-sub { display: none; }
  .mobile-header-actions { flex-shrink: 0; gap: 0.35rem; }
  .mobile-call-btn { padding: 0 0.6rem; }
  /* Footer links in one column, and wide tables scroll inside their box, so nothing is cut off. */
  .footer-top { grid-template-columns: 1fr; gap: 2rem; }
  .schedule-table-wrap, .bdp-plain-content .wp-block-table { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .schedule-table-wrap th, .schedule-table-wrap td { padding-left: 0.5rem; padding-right: 0.5rem; }
}
/* 1.3.23: the long parish email address may break onto a second line on narrow phones. */
main a[href^="mailto:"] { overflow-wrap: anywhere; }

/* 1.3.24 / 1.3.30: Parish History page, set for comfortable reading.
   Larger text in a narrower column, short paragraphs with small subheadings,
   and an "On this page" menu built by site.js from the section headings
   (beside the text on wide screens and kept in view; above it on phones). */
.history-article { max-width: 720px; }
.history-article > * + * { margin-top: 1.25rem; }
.history-article .page-intro { max-width: none; font-family: 'Source Sans 3', sans-serif; font-size: 1.25rem; line-height: 1.75; color: var(--text); }
.history-article p { color: var(--text); font-size: 1.125rem; line-height: 1.85; }
.history-article h2 { font-family: 'Cormorant Garamond', serif; color: var(--navy); font-size: 2.1rem; font-weight: 500; line-height: 1.2; margin-top: 3.2rem; padding-top: 2rem; border-top: 1px solid var(--border); scroll-margin-top: 110px; }
.history-article h3 { font-family: 'Source Sans 3', sans-serif; font-size: 0.82rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gold-deep); margin-top: 2.2rem; }
.history-article h3 + p { margin-top: 0.6rem; }
.history-article p.history-quote { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 1.7rem; line-height: 1.4; color: var(--navy); text-align: center; margin: 2.2rem 0; padding: 1.6rem 0.5rem; border-top: 2px solid var(--gold); border-bottom: 1px solid var(--border); }
.history-article .history-photos { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; margin-top: 1.6rem; margin-bottom: 1.8rem; }
.history-article figure.history-photo { margin: 0; }
.history-article figure.history-photo img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; border-radius: 3px; }
.history-article .history-photos-wide figure.history-photo img { aspect-ratio: 4 / 3; }
.history-article figure.history-photo figcaption { font-size: 0.88rem; line-height: 1.5; color: var(--text-light); margin-top: 0.5rem; font-style: italic; }
.history-article .history-top { margin-top: 1.4rem; text-align: right; font-size: 0.9rem; }
.history-article .history-top a { color: var(--gold-deep); font-weight: 600; text-decoration: none; }
.history-article .history-top a:hover, .history-article .history-top a:focus-visible { text-decoration: underline; }

/* "On this page" menu */
.history-toc { scroll-margin-top: 110px; }
nav.history-toc { display: block; height: auto; }
.history-toc a { white-space: normal; }
.history-toc { background: #fff; border: 1px solid var(--border); border-radius: 6px; padding: 1.1rem 1.3rem; margin: 0 auto 2.4rem; max-width: 720px; }
.history-toc-title { font-family: 'Cinzel', serif; font-size: 0.75rem; letter-spacing: 0.14em; color: var(--gold-deep); margin: 0 0 0.7rem; }
.history-toc ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.history-toc a { display: inline-block; padding: 0.45rem 0.85rem; border: 1px solid var(--border); border-radius: 999px; font-size: 0.92rem; line-height: 1.3; color: var(--text-mid); text-decoration: none; background: var(--cream); }
.history-toc a:hover, .history-toc a:focus-visible { border-color: var(--gold); color: var(--navy); }
.history-toc a[aria-current="true"] { border-color: var(--gold); color: var(--navy); font-weight: 600; }
@media (min-width: 1100px) {
  .history-layout { display: grid; grid-template-columns: 230px minmax(0, 720px); gap: 3.5rem; justify-content: center; align-items: start; max-width: 1200px; margin: 0 auto; }
  .history-layout .history-article { margin: 0; }
  .history-layout .history-toc { position: sticky; top: 110px; margin: 0.4rem 0 0; padding: 0; background: none; border: 0; max-height: calc(100vh - 140px); overflow-y: auto; }
  .history-layout .history-toc ul { display: block; }
  .history-layout .history-toc a { display: block; border: 0; border-left: 2px solid var(--border); border-radius: 0; background: none; padding: 0.42rem 0 0.42rem 0.9rem; font-size: 0.95rem; }
  .history-layout .history-toc a:hover, .history-layout .history-toc a:focus-visible, .history-layout .history-toc a[aria-current="true"] { border-left-color: var(--gold); }
  .history-layout .history-top { display: none; } /* the menu stays in view, so no need */
}
@media (max-width: 700px) {
  .history-article .page-intro { font-size: 1.12rem; }
  .history-article p { font-size: 1.06rem; }
  .history-article h2 { font-size: 1.7rem; margin-top: 2.4rem; padding-top: 1.5rem; }
  .history-article p.history-quote { font-size: 1.4rem; }
  .history-article .history-photos { grid-template-columns: 1fr; }
}
@media print { .history-article .history-photos, .history-toc, .history-top { display: none; } }

/* 1.3.25: shorter event photo on the Home page "Upcoming Events" cards
   (16:7 instead of 16:10). The News & Events page keeps the taller photo. */
.events-section .event-photo img { aspect-ratio: 16 / 7; }

/* 1.3.26: the cover photo on a News & Events post is shown in full, never
   cropped, so a tall poster can be used as the cover without uploading it
   again in the text. Wide photos still fill the column. */
.event-cover img { display: block; width: auto; max-width: 100%; height: auto; max-height: 900px; object-fit: fill; }

/* 1.3.27: WordPress puts the photo's pixel height (450) on the card image,
   which overrode the card shape and made card photos 450px tall at any width.
   height: auto lets the shape (16:10, or 16:7 on the Home page) apply. */
.event-photo img { height: auto; }

/* 1.3.28: Home page background rhythm.
   Navy bands (Welcome, Watch Mass Live, Lotto & Donations) are fixed anchors.
   The light sections between them alternate cream (A) and parchment (B) by
   position, not by name, and the count restarts after every navy band. So when
   there are no upcoming events and the Events section is not shown, Two
   Churches simply becomes the first light section and the rhythm still holds:
   two sections of the same colour never sit next to each other. */
:is(.events-section, .churches-preview-section, .mass-section, .sacraments-section, .bulletin-section, .contact-section) {
  background: var(--cream);
}
:is(.events-section, .churches-preview-section, .mass-section, .sacraments-section, .bulletin-section, .contact-section)
  + :is(.events-section, .churches-preview-section, .mass-section, .sacraments-section, .bulletin-section, .contact-section) {
  background: var(--parchment);
}
:is(.events-section, .churches-preview-section, .mass-section, .sacraments-section, .bulletin-section, .contact-section)
  + :is(.events-section, .churches-preview-section, .mass-section, .sacraments-section, .bulletin-section, .contact-section)
  + :is(.events-section, .churches-preview-section, .mass-section, .sacraments-section, .bulletin-section, .contact-section) {
  background: var(--cream);
}
:is(.events-section, .churches-preview-section, .mass-section, .sacraments-section, .bulletin-section, .contact-section)
  + :is(.events-section, .churches-preview-section, .mass-section, .sacraments-section, .bulletin-section, .contact-section)
  + :is(.events-section, .churches-preview-section, .mass-section, .sacraments-section, .bulletin-section, .contact-section)
  + :is(.events-section, .churches-preview-section, .mass-section, .sacraments-section, .bulletin-section, .contact-section) {
  background: var(--parchment);
}
/* The Contact section always follows navy (cream), so the safeguarding strip
   below it takes parchment to stay distinct before the navy footer. */
.safeguarding-strip { background: var(--parchment); }

/* 1.3.29: Home page Upcoming Events layout follows the number of events.
   The Home page shows at most three. Before, the grid kept empty columns, so
   one event left two thirds of the row blank, two events left a blank third
   on laptops, and three events left one card alone on a second row on tablets.
     Phones (under 600px): one column, cards stacked.
     1 event:  one wide card, photo on the left and details on the right.
     2 events: two cards, each half the row.
     3 events: three across on laptops (960px and up). On tablets the soonest
               event is a wide card on top, with the other two side by side. */
.event-grid--home { grid-template-columns: 1fr; }

@media (min-width: 600px) {
  .event-grid--n2,
  .event-grid--n3 { grid-template-columns: 1fr 1fr; }
  .event-grid--n1 > .event-card { flex-direction: row; }
  .event-grid--n1 > .event-card > .event-photo { flex: 0 0 50%; min-height: 260px; }
  .event-grid--n1 > .event-card > .event-photo img { position: absolute; inset: 0; width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; }
  .event-grid--n1 > .event-card > .event-body { justify-content: center; padding: 2rem 2.2rem; }
  .event-grid--n1 > .event-card.has-photo .event-body { padding-top: 2rem; }
  /* the date badge sits at the top of the text instead of overlapping the photo */
  .event-grid--n1 > .event-card.has-photo .event-badge { position: static; align-self: flex-start; }
  .event-grid--n1 > .event-card .event-title { font-size: 1.7rem; }
  /* readable line length when the wide card has no photo */
  .event-grid--n1 > .event-card .event-body > * { max-width: 40em; }
}
@media (min-width: 600px) and (max-width: 959px) {
  .event-grid--n3 > .event-card:first-child { grid-column: 1 / -1; }
  .event-grid--n3 > .event-card:first-child { flex-direction: row; }
  .event-grid--n3 > .event-card:first-child > .event-photo { flex: 0 0 50%; min-height: 260px; }
  .event-grid--n3 > .event-card:first-child > .event-photo img { position: absolute; inset: 0; width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; }
  .event-grid--n3 > .event-card:first-child > .event-body { justify-content: center; padding: 2rem 2.2rem; }
  .event-grid--n3 > .event-card:first-child.has-photo .event-body { padding-top: 2rem; }
  /* the date badge sits at the top of the text instead of overlapping the photo */
  .event-grid--n3 > .event-card:first-child.has-photo .event-badge { position: static; align-self: flex-start; }
  .event-grid--n3 > .event-card:first-child .event-title { font-size: 1.7rem; }
  /* readable line length when the wide card has no photo */
  .event-grid--n3 > .event-card:first-child .event-body > * { max-width: 40em; }
}
@media (min-width: 960px) {
  .event-grid--n3 { grid-template-columns: repeat(3, 1fr); }
  .event-grid--n1 > .event-card > .event-photo { flex-basis: 55%; min-height: 320px; }
}


/* ── 1.3.32: fixes from the second pre-launch QA report ── */

/* QA2-004: gold buttons keep navy text, also inside cards and text whose links are gold */
a.btn-primary, a.btn-primary:visited, a.btn-primary:hover { color: var(--navy); }

/* QA2-015: card titles shown as level-2 headings look the same as before */
.info-card h2 { font-family: 'Cormorant Garamond', serif; color: var(--navy); font-size: 1.35rem; font-weight: 600; margin-bottom: 0.5rem; }

/* QA2-018: photo viewer, next and previous */
.lightbox-figure { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 0.7rem; }
.lightbox-count { color: rgba(255,255,255,0.85); font-size: 0.9rem; letter-spacing: 0.04em; min-height: 1.2em; }
.lightbox-overlay .lightbox-figure img { max-height: 80vh; }
.lightbox-nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 52px; height: 52px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,0.12); border: 1px solid rgba(255,255,255,0.45);
  color: #fff; font-size: 2.2rem; line-height: 1; border-radius: 50%; cursor: pointer;
}
.lightbox-nav[hidden] { display: none; }
.lightbox-nav:hover { background: rgba(255,255,255,0.22); }
.lightbox-nav:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
.lightbox-prev { left: 1.2rem; }
.lightbox-next { right: 1.2rem; }
@media (max-width: 599px) {
  .lightbox-overlay { padding: 4.5rem 0.5rem 5.5rem; }
  .lightbox-nav { top: auto; bottom: 1.2rem; transform: none; width: 48px; height: 48px; }
  .lightbox-prev { left: calc(50% - 64px); }
  .lightbox-next { right: calc(50% - 64px); }
  .lightbox-overlay img, .lightbox-overlay .lightbox-figure img { max-width: 100%; max-height: 70vh; }
}
body:has(.lightbox-overlay.open) .floating-mass-btn { visibility: hidden; }

/* 1.3.34: phones and tablets, the two hero buttons are the same width and height */
@media (max-width: 1050px) {
  .hero-ctas .btn-primary, .hero-ctas .btn-ghost { width: min(100%, 15rem); text-align: center; }
  .hero-ctas .btn-primary { border: 1px solid var(--gold); }
}
