/*
Theme Name: GeneratePress Child Theme
Theme URI: https://straymondmp.org
Description: Custom child theme for GeneratePress - St. Raymond Catholic Church
Author: St. Raymond Parish
Author URI: https://straymondmp.org
Template: generatepress
Version: 1.0.1
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: generatepress-child
*/

/* =============================================================================
   Typography & Colors
   ========================================================================== */

/* Global text color - darker for better readability */
body,
p,
.entry-content,
.post-content,
article {
    color: #111 !important;
}

/* Primary font family */
p {
    font-family: "Roboto Slab", serif;
    color: black;
}

/* =============================================================================
   TablePress Tables
   ========================================================================== */

table.tablepress td {
    color: #000;
}

/* =============================================================================
   Talks Archive & Single Pages
   ========================================================================== */

/* Talk titles - bold and properly spaced */
.talk-item h2.talk-title,
.talk-item h2.talk-title a,
.talks-archive .talk-item .talk-title,
.talks-archive .talk-item .talk-title a {
    font-weight: 700;
    line-height: 1.2;
    margin-top: 0;
    margin-bottom: 10px;
}

/* Small YouTube link styling */
.small-youtube-link a,
.small-youtube-link h1,
.small-youtube-link h2,
.small-youtube-link h3,
.small-youtube-link h4,
.small-youtube-link h5,
.small-youtube-link h6 {
    font-size: 13px;
    font-weight: 400;
}

/* =============================================================================
   Bulletins
   ========================================================================== */

/* Force full-width layout (no sidebar) for bulletins */
.single-bulletins .site-content {
    display: block !important; /* Override GeneratePress flexbox */
}

.single-bulletins .site-content .content-area {
    width: 100% !important;
}

.single-bulletins .is-right-sidebar,
.single-bulletins .is-left-sidebar {
    display: none !important;
}

/* ==========================================================================
   Hero Header - Shared styles for bulletins and custom pages
   ========================================================================== */

.page-hero-header {
    position: relative;
    min-height: 400px;
    max-height: 400px;
    height: 400px;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100vw;
    margin-left: calc(-50vw + 50%);
    margin-right: calc(-50vw + 50%);
}

/* Background image overlay - uses --hero-bg CSS variable when set (Featured Image),
   falls back to default church image */
.page-hero-header::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-image: var(--hero-bg, url('https://straymondmp.s3.us-west-2.amazonaws.com/2025/02/40A7814-sm.jpg'));
    background-size: cover;
    background-position: center 30%;
    background-repeat: no-repeat;
    opacity: 0.5;
    z-index: 0;
}

/* Bulletins fallback: hardcoded header image when no --hero-bg is set */
.single-bulletins .page-hero-header::before {
    background-image: var(--hero-bg, url('https://straymondmp.s3.us-west-2.amazonaws.com/2025/09/header-bulletins.webp'));
}

.page-hero-header .hero-content {
    position: relative;
    z-index: 1;
    text-align: center;
    color: #111;
}

.page-hero-header .hero-title {
    font-size: 42px;
    font-weight: 700;
    margin: 0 0 10px;
    line-height: 1.2;
    color: #111;
}

.page-hero-header .hero-meta {
    font-size: 16px;
    color: #666;
}

/* Breadcrumb/Category Link (bulletins) */
.page-hero-header .hero-breadcrumb {
    margin-bottom: 15px;
}

.page-hero-header .hero-breadcrumb span {
    display: inline-block;
    background: #9A2D3A;
    color: white;
    padding: 5px 15px;
    border-radius: 3px;
    font-size: 14px;
    font-weight: 600;
}

.page-hero-header .hero-breadcrumb a {
    color: white;
    text-decoration: none;
}

/* Mobile Responsive */
@media (max-width: 768px) {
    .page-hero-header {
        min-height: 300px;
        max-height: 300px;
        height: 300px;
    }

    .page-hero-header .hero-title {
        font-size: 32px;
    }
}

/* ==========================================================================
   Custom Page Template - layout overrides
   ========================================================================== */

.page-template-page-custom .site-content {
    display: block !important;
}

.page-template-page-custom .site-content .content-area {
    width: 100% !important;
}

.page-template-page-custom .is-right-sidebar,
.page-template-page-custom .is-left-sidebar {
    display: none !important;
}

.page-template-page-custom .entry-header,
.page-template-page-custom .featured-image {
    display: none;
}

/* ==========================================================================
   Faith Formation Template
   ========================================================================== */

.page-template-page-faith-formation .site-content {
    display: block !important;
}

.page-template-page-faith-formation .site-content .content-area {
    width: 100% !important;
}

.page-template-page-faith-formation .is-right-sidebar,
.page-template-page-faith-formation .is-left-sidebar {
    display: none !important;
}

.page-template-page-faith-formation .entry-header,
.page-template-page-faith-formation .featured-image {
    display: none;
}

/* Sticky Subnav */
.section-subnav {
    background: #fff;
    border-bottom: 2px solid #9A2D3A;
    text-align: center;
    padding: 0;
    z-index: 999;
    width: 100vw;
    margin-left: calc(-50vw + 50%);
    margin-right: calc(-50vw + 50%);
}

.section-subnav.stuck {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    margin: 0;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.subnav-inner {
    max-width: 960px;
    margin: 0 auto;
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
}

.subnav-link {
    display: inline-block;
    padding: 14px 20px;
    color: #333;
    text-decoration: none;
    font-size: 14px;
    font-weight: 600;
    border-bottom: 3px solid transparent;
    transition: color 0.2s, border-color 0.2s;
}

.subnav-link:hover {
    color: #9A2D3A;
}

.subnav-link.active {
    color: #9A2D3A;
    border-bottom-color: #9A2D3A;
}

/* Faith Formation Content */
.ff-content {
    max-width: 860px;
    margin: 0 auto;
    padding: 0 20px 60px;
}

/* Registration Banner */
.ff-banner {
    text-align: center;
    background: #f8f4f0;
    border-left: 4px solid #9A2D3A;
    padding: 20px 30px;
    margin: 30px 0;
    border-radius: 0 4px 4px 0;
}

.ff-banner p {
    margin: 0 0 10px;
    font-size: 18px;
}

.ff-btn {
    display: inline-block;
    background: #9A2D3A;
    color: #fff !important;
    padding: 8px 20px;
    border-radius: 4px;
    text-decoration: none !important;
    font-weight: 600;
    font-size: 14px;
    transition: background 0.2s, color 0.2s;
}

.ff-btn:hover {
    background: #7A1F2C;
    color: #fff !important;
}

/* Sections */
.ff-section {
    margin: 40px 0;
    padding-top: 10px;
}

.ff-section-header {
    margin-bottom: 20px;
    padding-bottom: 15px;
    border-bottom: 2px solid #eee;
}

.ff-section-header h2 {
    font-size: 28px;
    font-weight: 700;
    margin: 0;
    color: #222;
}

.ff-subtitle {
    margin: 4px 0 0;
    font-size: 15px;
    color: #666;
    font-style: italic;
}

.ff-section-body {
    line-height: 1.7;
    color: #333;
}

.ff-section-body h3 {
    font-size: 20px;
    font-weight: 700;
    color: #9A2D3A;
    margin: 30px 0 10px;
}

.ff-section-body ul {
    padding-left: 25px;
}

.ff-section-body a {
    color: #9A2D3A;
    text-decoration: underline;
}

.ff-section-body a:hover {
    color: #7A1F2C;
}

.ff-divider {
    border: none;
    border-top: 1px solid #ddd;
    margin: 30px 0;
}

/* Registration button groups */
.ff-register {
    margin: 25px 0;
    padding: 20px 25px;
    background: #f8f4f0;
    border-radius: 6px;
}

.ff-register > p {
    margin: 0 0 12px;
    font-size: 16px;
}

.ff-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.ff-btn-outline {
    background: transparent !important;
    color: #9A2D3A !important;
    border: 2px solid #9A2D3A;
}

.ff-btn-outline:hover {
    background: #9A2D3A !important;
    color: #fff !important;
}

/* Mobile */
@media (max-width: 768px) {
    .subnav-link {
        padding: 10px 12px;
        font-size: 12px;
    }

    .ff-section-header h2 {
        font-size: 22px;
    }

    .ff-content {
        padding: 0 15px 40px;
    }
}

/* ==========================================================================
   Sacraments Template - reuses ff-* classes, just needs layout overrides
   ========================================================================== */

.page-template-page-sacraments .site-content {
    display: block !important;
}

.page-template-page-sacraments .site-content .content-area {
    width: 100% !important;
}

.page-template-page-sacraments .is-right-sidebar,
.page-template-page-sacraments .is-left-sidebar {
    display: none !important;
}

.page-template-page-sacraments .entry-header,
.page-template-page-sacraments .featured-image {
    display: none;
}

/* ==========================================================================
   Archive pages (events, bulletins, talks) - hero layout overrides
   ========================================================================== */

.post-type-archive .page-hero-header {
    width: 100vw;
    position: relative;
    left: 50%;
    right: 50%;
    margin-left: -50vw;
    margin-right: -50vw;
}

/* Archive pages: force block layout so hero breakout doesn't overlap content */
.post-type-archive-events .site-content,
.post-type-archive-bulletins .site-content,
.post-type-archive-talks .site-content {
    display: block !important;
}

.post-type-archive-events .site-content .content-area,
.post-type-archive-bulletins .site-content .content-area,
.post-type-archive-talks .site-content .content-area {
    width: 100% !important;
}

.post-type-archive-events .is-right-sidebar,
.post-type-archive-events .is-left-sidebar,
.post-type-archive-bulletins .is-right-sidebar,
.post-type-archive-bulletins .is-left-sidebar,
.post-type-archive-talks .is-right-sidebar,
.post-type-archive-talks .is-left-sidebar {
    display: none !important;
}

/* Ministry page photo grid */
.ministry-photos {
    display: flex;
    gap: 15px;
    flex-wrap: wrap;
    margin: 25px 0;
}

.ministry-photos img {
    max-width: 48%;
    height: auto;
    border-radius: 4px;
    object-fit: cover;
}

@media (max-width: 768px) {
    .ministry-photos img {
        max-width: 100%;
    }
}

/* PDF Wrapper Styles */
.bulletin-pdf-wrapper {
    margin: 40px auto;
    max-width: 900px;
}

.bulletin-pdf-desktop iframe {
    width: 100%;
    height: 1165px;
    border: 1px solid #ddd;
    display: block;
}

@media (max-width: 768px) {
    .bulletin-pdf-desktop {
        display: none;
    }

    .bulletin-pdf-mobile {
        display: block !important;
    }
}

/* =============================================================================
   Events
   ========================================================================== */

/* Event-specific styles can go here */

/* =============================================================================
   Responsive Design
   ========================================================================== */

/* Mobile-specific styles */
@media (max-width: 768px) {
    /* Add mobile overrides here if needed */
}

/* =============================================================================
   Site Logo & Branding
   ========================================================================== */

/* Compact header */
.inside-header {
    padding: 10px 0;
}

/* Hide site title when logo is present */
.site-logo + .site-branding .main-title,
.site-branding .main-title {
    display: none;
}

/* Hide site description */
.site-description {
    display: none;
}

/* Control logo size */
.site-logo img {
    width: 250px;
    max-width: 250px;
    height: auto;
}

/* Responsive logo sizing */
@media (max-width: 768px) {
    .site-logo img {
        max-width: 200px;
    }
}

/* =============================================================================
   Navigation & Menu Styling
   ========================================================================== */

/* Always reserve scrollbar space so nav width is consistent across pages
   (prevents Donate button from wrapping on pages tall enough to scroll) */
html {
    overflow-y: scroll;
}

/* Main navigation container */
.main-navigation {
    font-family: "Open Sans", sans-serif;
}

/* Tighten nav line spacing when menu wraps to multiple lines */
.main-navigation .main-nav > ul {
    line-height: 1;
}

.main-navigation .main-nav ul li a {
    line-height: 1;
}

/* Top-level menu items - maroon text */
.main-navigation .main-nav ul li a {
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    padding: 7px 7px;
    color: #9A2D3A;
}

/* Dropdown arrows - maroon */
.main-navigation .main-nav ul li.menu-item-has-children > a::after,
.main-navigation .menu-bar-items .dropdown-menu-toggle {
    color: #9A2D3A;
}
.main-navigation .main-nav ul li.menu-item-has-children > a .dropdown-menu-toggle .gp-icon svg {
    fill: #9A2D3A;
}

/* Top-level hover - smooth grow effect using scale (no layout shift) */
.main-navigation .main-nav ul li > a {
    transition: transform 0.2s ease, color 0.2s ease;
    display: inline-block;
}

.main-navigation .main-nav ul li:hover > a,
.main-navigation .main-nav ul li:focus > a,
.main-navigation .main-nav ul li.sfHover > a {
    color: #7a2230;
    background-color: transparent;
    transform: scale(1.08);
    font-weight: 600;
}

/* Current/active menu item - underline indicator (no font-weight change to avoid
   widening the nav and wrapping the Donate button on multi-word active items) */
.main-navigation .main-nav > ul > li.current-menu-item > a,
.main-navigation .main-nav > ul > li.current-menu-parent > a,
.main-navigation .main-nav > ul > li.current-menu-ancestor > a {
    color: #9A2D3A;
    text-decoration: underline;
    text-underline-offset: 4px;
    text-decoration-thickness: 2px;
}

/* Donate button in nav - no grow effect, never wrap */
.main-navigation .main-nav ul li.menu-item-donate {
    flex-shrink: 0;
}

.main-navigation .main-nav ul li.menu-item-donate > a {
    background-color: #9A2D3A;
    color: #fff !important;
    border-radius: 4px;
    padding: 5px 14px;
    margin-left: 5px;
    font-size: 11px !important;
    line-height: 1.4;
    transition: background-color 0.2s ease;
}
.main-navigation .main-nav ul li.menu-item-donate > a:hover {
    background-color: #7a2230;
    color: #fff !important;
    font-size: 11px !important;
}

/* --- Dropdown/submenu styling --- */
.main-navigation .main-nav > ul > li > ul.sub-menu {
    background-color: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
    border: none;
    opacity: 1 !important;
    transition: none !important;
    margin-top: 0px !important;
}

.main-navigation ul ul {
    background-color: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
    border: none;
    opacity: 1 !important;
    transition: none !important;
}

/* Submenu items - black text, capitalized, border between items */
.main-navigation .main-nav ul ul li a {
    color: #333;
    font-size: 13px;
    font-weight: 500;
    text-transform: capitalize;
    padding: 10px 18px;
    border-bottom: 1px solid #ddd;
    transition: background-color 0.2s ease, color 0.2s ease;
}

/* Remove border on last submenu item */
.main-navigation .main-nav ul ul li:last-child > a {
    border-bottom: none;
}

/* Submenu hover - maroon background, white text */
.main-navigation .main-nav ul ul li:hover > a,
.main-navigation .main-nav ul ul li:focus > a,
.main-navigation .main-nav ul ul li.sfHover > a {
    background-color: #9A2D3A !important;
    color: #fff !important;
}

/* Sub-submenu arrows on hover - white */
.main-navigation .main-nav ul ul li:hover > a .dropdown-menu-toggle .gp-icon svg,
.main-navigation .main-nav ul ul li.sfHover > a .dropdown-menu-toggle .gp-icon svg {
    fill: #fff;
}

/* Mobile menu button */
.menu-toggle {
    font-family: "Open Sans", sans-serif;
}

/* =============================================================================
   Homepage Template
   ========================================================================== */

/* --- CSS Custom Properties --- */
.homepage-template {
    --maroon: #9A2D3A;
    --maroon-dark: #7A1F2C;
    --gold: #C8A951;
    --dark: #1a1a1a;
    --gray: #3A3A3A;
    --light-gray: #f5f5f5;
    --white: #ffffff;
}

/* Break homepage out of ALL GeneratePress containers for full-bleed */
.page-template-page-home #page,
.page-template-page-home #page.grid-container,
.page-template-page-home #page.container,
.page-template-page-home #page.container.grid-container,
.page-template-page-home .site-content,
.page-template-page-home .content-area,
.page-template-page-home .site-main,
.page-template-page-home .inside-article,
.page-template-page-home #homepage {
    max-width: 100% !important;
    width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
    float: none !important;
}
.page-template-page-home .entry-header {
    display: none;
}
.page-template-page-home article {
    padding: 0 !important;
    margin: 0 !important;
}

/* --- SECTION 1: Hero (full-width with slideshow) --- */
.home-hero {
    position: relative;
    min-height: 700px;
    color: var(--white);
    overflow: hidden;
}

/* Slideshow Background */
.home-hero-slideshow {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.home-hero-slide {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    opacity: 0;
    transition: opacity 1.5s ease-in-out;
}

.home-hero-slide.active {
    opacity: 1;
}

/* Dark overlay on top of slideshow */
.home-hero-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    z-index: 1;
}

/* 3-Column Grid - content constrained, hero full-bleed */
.home-hero-grid {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(180px, 250px) 1fr minmax(180px, 250px);
    gap: 25px;
    max-width: 1140px;
    margin: 0 auto;
    padding: 50px 20px;
    min-height: 700px;
    align-items: start;
    padding-top: 80px;
    box-sizing: border-box;
}

/* Left Column: Info Panel */
.home-hero-col-left {
    align-self: stretch;
    display: flex;
}

.hero-info-panel {
    background: rgba(0, 0, 0, 0.55);
    backdrop-filter: blur(6px);
    border-radius: 8px;
    padding: 25px 20px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    width: 100%;
    display: flex;
    flex-direction: column;
}

.hero-info-panel h3 {
    font-family: "Roboto Slab", serif;
    font-size: 16px;
    font-weight: 700;
    color: var(--gold) !important;
    margin: 0 0 6px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.hero-info-panel p {
    font-size: 14px;
    line-height: 1.5;
    margin: 0;
    color: var(--white) !important;
}

.hero-info-panel strong,
.hero-info-panel b {
    color: var(--white) !important;
}

.hero-info-panel .sidebar-block {
    margin-bottom: 18px;
    padding-bottom: 18px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.hero-info-panel .sidebar-block:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
}

/* Livestream embed */
.hero-info-panel .sidebar-block iframe,
.hero-info-panel .sidebar-block .youtube-container {
    width: 100%;
    max-width: 100%;
    border-radius: 4px;
}

/* Social Icons */
.sidebar-social {
    display: flex;
    gap: 15px;
    align-items: center;
}

/* Holy Week Panel */
.holy-week-panel h3 {
    text-align: center;
    font-size: 18px;
    margin-bottom: 8px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
    padding-bottom: 10px;
}

.holy-week-note {
    font-size: 12px !important;
    font-style: italic;
    text-align: center;
    opacity: 0.8;
    margin-bottom: 12px !important;
}

.holy-week-day {
    padding: 8px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.holy-week-day:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.holy-week-day h5 {
    color: var(--gold) !important;
    font-family: "Roboto Slab", serif;
    font-size: 14px;
    font-weight: 700;
    margin: 0 0 4px;
    letter-spacing: 0.5px;
}

.holy-week-day p {
    font-size: 13px !important;
    line-height: 1.6;
    margin: 0;
    padding-left: 10px;
}

.sidebar-social a {
    color: var(--white);
    opacity: 0.8;
    transition: opacity 0.2s ease, color 0.2s ease;
}

.sidebar-social a:hover {
    opacity: 1;
    color: var(--gold);
}

/* Center Column: Title/Tagline */
.home-hero-col-center {
    text-align: center;
    padding: 20px 10px;
}

.home-hero-title {
    font-family: "Playfair Display", "Roboto Slab", serif;
    font-size: 42px;
    font-weight: 700;
    margin: 0 0 15px;
    color: var(--white) !important;
    text-shadow: 2px 2px 6px rgba(0, 0, 0, 0.5);
    line-height: 1.15;
}

.home-hero-subtitle {
    font-family: "Roboto Slab", serif;
    font-size: 20px;
    font-weight: 300;
    margin: 0 0 20px;
    color: var(--white) !important;
    text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
    line-height: 1.4;
}

.home-hero-text {
    font-size: 15px;
    margin: 0 auto 30px;
    line-height: 1.7;
    color: var(--white) !important;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
}

/* Right Column: Info Panel */
.home-hero-col-right {
    align-self: stretch;
    display: flex;
}

.hero-promos {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.home-promo-item {
    display: block;
    border-radius: 8px;
    overflow: hidden;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
}

.home-promo-item:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.4);
}

.home-promo-item img {
    width: 100%;
    height: auto;
    display: block;
}

/* --- SECTION 3: About Us --- */
.home-about {
    padding: 80px 20px;
    background-color: #fff;
}

.home-about-inner {
    max-width: 1100px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 60px;
    align-items: center;
}

/* Compact Events (in About section) */
.home-about-events {
    background: #f8f8f8;
    border-radius: 8px;
    padding: 18px 20px;
    border-left: 4px solid #9A2D3A;
}

.about-events-title {
    font-family: "Playfair Display", serif;
    font-size: 22px;
    color: #9A2D3A;
    margin: 0 0 8px;
}

.about-events-list {
    margin-bottom: 10px;
}

.about-event-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 6px 0;
    border-bottom: 1px solid #e0e0e0;
}

.about-event-item:last-child {
    border-bottom: none;
}

.about-event-date {
    background: #9A2D3A;
    color: #fff;
    text-align: center;
    border-radius: 6px;
    padding: 4px 6px;
    min-width: 42px;
    flex-shrink: 0;
}

.about-event-month {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    line-height: 1;
}

.about-event-day {
    display: block;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.2;
}

.about-event-details a {
    color: #333;
    text-decoration: none;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.2;
}

.about-event-details a:hover {
    color: #9A2D3A;
}

.about-event-location {
    font-weight: 400;
    font-size: 12px;
    color: #666;
}

.about-event-time {
    display: block;
    font-size: 12px;
    color: #777;
    margin-top: 1px;
}

.home-btn-sm {
    padding: 8px 20px;
    font-size: 12px;
}

.home-about-content h2 {
    font-family: "Playfair Display", "Roboto Slab", serif;
    font-size: 36px;
    color: var(--maroon) !important;
    margin: 10px 0 20px;
}

.home-about-content p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--gray) !important;
    margin-bottom: 15px;
}

/* --- Section Subtitle (reusable) --- */
.home-section-subtitle {
    display: inline-block;
    font-family: "Roboto Slab", serif;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--maroon);
    margin-bottom: 5px;
}

.home-section-subtitle-light {
    color: var(--gold);
}

/* --- SECTION 4: Join Our Parish --- */
.home-join {
    background: var(--light-gray);
    padding: 80px 20px;
    text-align: center;
}

.home-join-inner {
    max-width: 900px;
    margin: 0 auto;
}

.home-join .home-section-subtitle {
    font-size: 36px;
    margin-bottom: 20px;
}

.home-join-text {
    font-family: "Playfair Display", "Roboto Slab", serif;
    font-size: 28px;
    line-height: 1.6;
    color: var(--gray) !important;
    margin: 15px 0 0;
    font-style: italic;
}

/* --- SECTION 5: Features --- */
.home-features {
    padding: 80px 20px;
    background: var(--white);
}

.home-features-grid {
    max-width: 1100px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 40px;
}

.home-feature-card {
    text-align: center;
    padding: 30px 20px;
    border-radius: 8px;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.home-feature-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
}

.home-feature-icon {
    margin-bottom: 20px;
}

.home-feature-icon img {
    width: 80px;
    height: 80px;
    object-fit: contain;
}

.home-feature-card h3 {
    font-family: "Playfair Display", "Roboto Slab", serif;
    font-size: 24px;
    color: var(--maroon) !important;
    margin: 0 0 15px;
}

.home-feature-card p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--gray) !important;
    margin-bottom: 20px;
}

/* --- SECTION 6: Patron Saint Quote --- */
.home-quote {
    position: relative;
    min-height: 400px;
    background-size: cover;
    background-position: center;
    background-attachment: fixed;
    display: flex;
    align-items: center;
    justify-content: center;
}

.home-quote-overlay {
    position: absolute;
    inset: 0;
    background: rgba(26, 26, 26, 0.7);
    z-index: 1;
}

.home-quote-content {
    position: relative;
    z-index: 2;
    text-align: center;
    padding: 60px 20px;
    max-width: 700px;
}

.home-quote-logo {
    width: 80px;
    height: auto;
    margin-bottom: 25px;
    opacity: 0.9;
}

.home-quote blockquote {
    border: none;
    margin: 0;
    padding: 0;
}

.home-quote blockquote p {
    font-family: "Playfair Display", "Roboto Slab", serif;
    font-size: 26px;
    font-style: italic;
    line-height: 1.6;
    color: var(--white) !important;
    margin: 0 0 20px;
}

.home-quote blockquote cite {
    font-family: "Roboto Slab", serif;
    font-size: 16px;
    color: var(--gold) !important;
    font-style: normal;
    letter-spacing: 1px;
}

/* --- SECTION 7: Events --- */
.home-events {
    padding: 80px 20px;
    background: var(--light-gray);
    text-align: center;
}

.home-events-inner {
    max-width: 900px;
    margin: 0 auto;
}

.home-events-inner h2 {
    font-family: "Playfair Display", "Roboto Slab", serif;
    font-size: 36px;
    color: var(--maroon) !important;
    margin: 10px 0 10px;
}

.home-events-desc {
    font-size: 16px;
    color: var(--gray) !important;
    margin-bottom: 40px;
}

.home-events-list {
    text-align: left;
    margin-bottom: 30px;
}

.home-event-item {
    display: flex;
    align-items: flex-start;
    gap: 20px;
    padding: 20px;
    background: var(--white);
    border-radius: 8px;
    margin-bottom: 15px;
    border-left: 4px solid var(--maroon);
    transition: box-shadow 0.2s ease;
}

.home-event-item:hover {
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
}

.home-event-date {
    min-width: 60px;
    text-align: center;
    background: var(--maroon);
    color: var(--white);
    border-radius: 6px;
    padding: 8px;
}

.home-event-date .event-month {
    display: block;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--white) !important;
}

.home-event-date .event-day {
    display: block;
    font-size: 28px;
    font-weight: 700;
    line-height: 1;
    color: var(--white) !important;
}

.home-event-details h4 {
    margin: 0 0 5px;
    font-size: 18px;
}

.home-event-details h4 a {
    color: var(--dark) !important;
    text-decoration: none;
}

.home-event-details h4 a:hover {
    color: var(--maroon) !important;
}

.home-event-details .event-time,
.home-event-details .event-location {
    display: block;
    font-size: 14px;
    color: #666;
}

.no-events {
    text-align: center;
    padding: 30px;
    color: #666;
}

/* --- SECTION 8: Homilies --- */
.home-homilies {
    position: relative;
    min-height: 350px;
    background-size: cover;
    background-position: center;
    display: flex;
    align-items: center;
    justify-content: center;
}

.home-homilies-overlay {
    position: absolute;
    inset: 0;
    background: rgba(154, 45, 58, 0.85);
    z-index: 1;
}

.home-homilies-content {
    position: relative;
    z-index: 2;
    text-align: center;
    padding: 60px 20px;
    max-width: 700px;
}

.home-homilies-text {
    font-family: "Playfair Display", "Roboto Slab", serif;
    font-size: 22px;
    line-height: 1.6;
    color: var(--white) !important;
    margin: 15px 0 30px;
}

/* --- SECTION 9: Bulletins --- */
.home-bulletins {
    padding: 80px 20px;
    background: var(--white);
    text-align: center;
}

.home-bulletins-inner {
    max-width: 1000px;
    margin: 0 auto;
}

.home-bulletins-inner h2 {
    font-family: "Playfair Display", "Roboto Slab", serif;
    font-size: 36px;
    color: var(--maroon) !important;
    margin: 10px 0 30px;
}

.home-bulletins-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
    margin-bottom: 30px;
}

.home-bulletin-item {
    text-align: center;
    padding: 15px;
    border-radius: 8px;
    transition: box-shadow 0.2s ease;
}

.home-bulletin-item:hover {
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
}

.home-bulletin-thumb {
    display: block;
    margin-bottom: 10px;
}

.home-bulletin-thumb img {
    width: 100%;
    height: auto;
    border-radius: 4px;
    border: 1px solid #eee;
}

.home-bulletin-item h4 {
    margin: 0 0 5px;
    font-size: 16px;
}

.home-bulletin-item h4 a {
    color: var(--dark) !important;
    text-decoration: none;
}

.home-bulletin-item h4 a:hover {
    color: var(--maroon) !important;
}

.home-bulletin-item .bulletin-date {
    font-size: 13px;
    color: #888;
}

/* --- Buttons --- */
.home-btn {
    display: inline-block;
    padding: 14px 30px;
    font-family: "Roboto Slab", serif;
    font-size: 15px;
    font-weight: 600;
    text-decoration: none;
    border-radius: 4px;
    transition: all 0.2s ease;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.home-btn-primary {
    background: var(--maroon);
    color: var(--white) !important;
    border: 2px solid var(--maroon);
}

.home-btn-primary:hover {
    background: var(--maroon-dark);
    border-color: var(--maroon-dark);
    color: var(--white) !important;
}

.home-btn-secondary {
    background: transparent;
    color: var(--maroon) !important;
    border: 2px solid var(--maroon);
}

.home-btn-secondary:hover {
    background: var(--maroon);
    color: var(--white) !important;
}

.home-btn-outline {
    background: transparent;
    color: var(--maroon) !important;
    border: 2px solid var(--maroon);
    padding: 10px 25px;
    font-size: 13px;
}

.home-btn-outline:hover {
    background: var(--maroon);
    color: var(--white) !important;
}

.home-btn-light {
    background: var(--white);
    color: var(--maroon) !important;
    border: 2px solid var(--white);
}

.home-btn-light:hover {
    background: transparent;
    color: var(--white) !important;
    border-color: var(--white);
}

/* =============================================================================
   Footer
   ========================================================================== */

.custom-footer {
    background: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 100%);
    color: #ccc;
    padding: 60px 20px 40px;
}

.custom-footer-inner {
    max-width: 1140px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1.3fr 0.7fr 1.2fr 0.8fr;
    gap: 40px;
}

.custom-footer h4 {
    color: #fff;
    font-family: "Playfair Display", serif;
    font-size: 18px;
    margin-bottom: 20px;
    font-weight: 600;
}

/* Column 1: Church Info */
.footer-logo {
    margin-bottom: 20px;
}

.footer-logo img {
    max-width: 280px;
    height: auto;
}

.footer-contact {
    list-style: none;
    padding: 0;
    margin: 0;
}

.footer-contact li {
    margin-bottom: 12px;
}

.footer-contact li a {
    color: #ccc;
    text-decoration: none;
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 14px;
    line-height: 1.5;
    transition: color 0.2s ease;
}

.footer-contact li a:hover {
    color: #fff;
}

.footer-contact li a svg {
    flex-shrink: 0;
    margin-top: 3px;
}

/* Column 2: Links */
.footer-col-links ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.footer-col-links ul li {
    margin-bottom: 10px;
}

.footer-col-links ul li a {
    color: #ccc;
    text-decoration: none;
    font-size: 14px;
    transition: color 0.2s ease;
}

.footer-col-links ul li a:hover {
    color: #fff;
}

/* Column 3: Newsletter */
.custom-footer .footer-newsletter-desc {
    font-size: 14px;
    margin-bottom: 15px;
    color: #fff !important;
}

.footer-flocknote input {
    width: 100%;
    padding: 8px 12px;
    margin-bottom: 8px;
    border: 1px solid #555;
    border-radius: 4px;
    background: #333;
    color: #fff;
    font-size: 13px;
    font-family: "Open Sans", sans-serif;
}

.footer-flocknote input::placeholder {
    color: #888;
}

.footer-flocknote input:focus {
    outline: none;
    border-color: #9A2D3A;
}

.footer-flocknote button {
    width: 100%;
    padding: 10px;
    background: #9A2D3A;
    color: #fff;
    border: none;
    border-radius: 4px;
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    cursor: pointer;
    font-family: "Open Sans", sans-serif;
    transition: background-color 0.2s ease;
}

.footer-flocknote button:hover {
    background: #7a2230;
}

/* Column 4: Social */
.footer-social-icons {
    display: flex;
    gap: 15px;
}

.footer-social-icons a {
    color: #ccc;
    transition: color 0.2s ease;
}

.footer-social-icons a:hover {
    color: #fff;
}

/* Copyright bar override */
.site-info {
    background: #111 !important;
    color: #888;
    font-size: 13px;
}

.site-info a {
    color: #aaa;
}

/* --- Responsive --- */
@media (max-width: 900px) {
    .home-hero-grid {
        grid-template-columns: 1fr 1fr;
        min-height: auto;
    }

    .home-hero-col-left {
        order: 2;
    }

    .home-hero-col-center {
        order: 1;
        grid-column: 1 / -1;
        padding: 30px 10px 20px;
    }

    .home-hero-col-right {
        order: 3;
    }

    .hero-promos {
        flex-direction: row;
    }
}

@media (max-width: 768px) {
    .home-hero {
        min-height: auto;
    }

    .home-hero-grid {
        grid-template-columns: 1fr;
        padding: 30px 15px;
        gap: 20px;
    }

    .home-hero-col-center {
        grid-column: auto;
    }

    .home-hero-col-left {
        order: 3;
    }

    .home-hero-col-right {
        order: 2;
    }

    .hero-promos {
        flex-direction: row;
    }

    .home-hero-title {
        font-size: 30px;
    }

    .home-hero-subtitle {
        font-size: 17px;
    }

    .home-about-inner {
        grid-template-columns: 1fr;
        text-align: center;
    }

    .home-about-events {
        max-width: 100%;
    }

    .home-features-grid {
        grid-template-columns: 1fr;
        gap: 20px;
    }

    .home-bulletins-list {
        grid-template-columns: repeat(2, 1fr);
    }

    .custom-footer-inner {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 600px) {
    .home-hero-title {
        font-size: 26px;
    }

    .home-hero-subtitle {
        font-size: 15px;
    }

    .hero-promos {
        flex-direction: column;
    }

    .home-about {
        padding: 50px 15px;
    }

    .home-about-content h2 {
        font-size: 28px;
    }

    .home-join-text {
        font-size: 20px;
    }

    .home-quote blockquote p {
        font-size: 20px;
    }

    .home-quote {
        background-attachment: scroll;
    }

    .home-homilies {
        background-attachment: scroll;
    }

    .home-bulletins-list {
        grid-template-columns: 1fr;
    }

    .home-events-inner h2,
    .home-bulletins-inner h2 {
        font-size: 28px;
    }

    .custom-footer-inner {
        grid-template-columns: 1fr;
    }
}

/* =============================================================================
   Custom Additions
   ========================================================================== */

/* Add any additional custom styles below */

/* ==================================
   Staff Cards (Our Parish page)
   ================================== */
.staff-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 28px;
    margin: 32px 0;
}
.staff-card {
    text-align: center;
}
.staff-photo {
    aspect-ratio: 3 / 4;
    overflow: hidden;
    border-radius: 6px;
    margin-bottom: 14px;
    background: #f5f5f5;
}
.staff-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.staff-name {
    margin: 10px 0 4px;
    font-size: 1.1rem;
    font-weight: 600;
    color: #3a3a3a;
    line-height: 1.3;
}
.staff-role {
    margin: 0;
    color: #9a2d3a;
    font-size: 0.95rem;
}
@media (max-width: 900px) {
    .staff-grid { grid-template-columns: repeat(2, 1fr); gap: 20px; }
}
@media (max-width: 540px) {
    .staff-grid { grid-template-columns: 1fr; max-width: 320px; margin: 24px auto; }
}

/* Advisory boards subsection layout */
.advisory-board {
    margin-top: 32px;
    padding-top: 24px;
    border-top: 1px solid #e5e5e5;
}
.advisory-board:first-of-type {
    border-top: none;
    padding-top: 0;
    margin-top: 0;
}
.advisory-board h3 {
    color: #9a2d3a;
    margin-bottom: 12px;
}
.advisory-members {
    margin-top: 12px;
    font-style: italic;
    color: #555;
}

/* ==========================================================================
   Our Parish Template - reuses ff-* classes, needs same layout overrides
   ========================================================================== */
.page-template-page-our-parish .site-content {
    display: block !important;
}

.page-template-page-our-parish .site-content .content-area {
    width: 100% !important;
}

.page-template-page-our-parish .is-right-sidebar,
.page-template-page-our-parish .is-left-sidebar {
    display: none !important;
}

.page-template-page-our-parish .entry-header,
.page-template-page-our-parish .featured-image {
    display: none;
}

/* Anchor-jump offset for sections under sticky subnav (handles direct URL hashes
   and external menu links; in-page subnav clicks already offset via JS) */
.ff-section {
    scroll-margin-top: 80px;
}
@media (max-width: 768px) {
    .ff-section { scroll-margin-top: 100px; }
}

/* ==========================================================================
   Liturgical Ministries Template - reuses ff-* classes
   ========================================================================== */
.page-template-page-liturgical-ministries .site-content {
    display: block !important;
}
.page-template-page-liturgical-ministries .site-content .content-area {
    width: 100% !important;
}
.page-template-page-liturgical-ministries .is-right-sidebar,
.page-template-page-liturgical-ministries .is-left-sidebar {
    display: none !important;
}
.page-template-page-liturgical-ministries .entry-header,
.page-template-page-liturgical-ministries .featured-image {
    display: none;
}

/* History page two-column layout (text left, photos right) */
.history-layout {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: 40px;
    align-items: start;
    margin-bottom: 30px;
}
.history-layout .history-text > *:first-child {
    margin-top: 0;
}
.history-photos-col {
    position: sticky;
    top: 100px;
}
.history-photos-col h2 {
    margin-top: 0;
    font-size: 1.4em;
}
.history-photos-col .ministry-photos {
    flex-direction: column;
    gap: 20px;
}
.history-photos-col .ministry-photos figure {
    width: 100%;
    margin: 0;
}
.history-photos-col .ministry-photos img {
    width: 100%;
    max-width: 100% !important;
    height: auto;
}
.history-photos-col .ministry-photos figcaption {
    font-size: 0.9em;
    color: #555;
    margin-top: 6px;
    text-align: center;
}
@media (max-width: 768px) {
    .history-layout {
        grid-template-columns: 1fr;
        gap: 20px;
    }
    .history-photos-col {
        position: static;
    }
}

/* Register page thumbnail grid with hover-zoom */
.register-thumbs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin: 30px 0;
}
.register-thumb {
    display: block;
    overflow: visible;
    aspect-ratio: 1 / 1;
    position: relative;
    border-radius: 4px;
    transition: transform 0.25s ease, box-shadow 0.25s ease, z-index 0s linear 0.25s;
    z-index: 1;
}
.register-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 4px;
    display: block;
}
.register-thumb:hover,
.register-thumb:focus {
    transform: scale(1.8);
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
    z-index: 10;
    transition: transform 0.25s ease, box-shadow 0.25s ease, z-index 0s;
}
@media (max-width: 600px) {
    .register-thumbs {
        gap: 6px;
    }
    .register-thumb:hover,
    .register-thumb:focus {
        transform: scale(1.5);
    }
}


/* Sacrament section photo banner */
.sacrament-photo {
    margin: 0 0 24px;
    border-radius: 6px;
    overflow: hidden;
}
.sacrament-photo img {
    width: 100%;
    height: 280px;
    object-fit: cover;
    display: block;
}
@media (max-width: 600px) {
    .sacrament-photo img {
        height: 200px;
    }
}

/* Per-section sacrament photo focal points */
#matrimony .sacrament-photo img { object-position: center bottom; }
#holy-orders .sacrament-photo img { object-position: center top; }

/* Community Ministries template body-class overrides (full-width layout) */
.page-template-page-community-ministries .site-content { display: block !important; }
.page-template-page-community-ministries .site-content .content-area { width: 100% !important; }
.page-template-page-community-ministries .is-right-sidebar,
.page-template-page-community-ministries .is-left-sidebar { display: none !important; }
.page-template-page-community-ministries .entry-header,
.page-template-page-community-ministries .featured-image { display: none; }

/* Suppress active-state styling on dropdown anchor-links — multiple anchor items
   pointing to the same hub page (e.g., /our-parish/#mission-vision) all get
   .current-menu-item from WP, which would otherwise paint them all "current". */
.main-navigation .sub-menu li.current-menu-item > a[href*="#"],
.main-navigation .sub-menu li.current-menu-parent > a[href*="#"],
.main-navigation .sub-menu li.current-menu-ancestor > a[href*="#"] {
    background-color: transparent !important;
    color: #3A3A3A !important;
}
.main-navigation .sub-menu li.current-menu-item > a[href*="#"]:hover,
.main-navigation .sub-menu li.current-menu-parent > a[href*="#"]:hover,
.main-navigation .sub-menu li.current-menu-ancestor > a[href*="#"]:hover {
    color: #9A2D3A !important;
}

/* Legion of Mary - top-of-page Mary image, floated left so text wraps right */
.lom-mary-left {
    float: left;
    max-width: 220px;
    width: 30%;
    height: auto;
    margin: 0 30px 20px 0;
    border-radius: 4px;
}
@media (max-width: 600px) {
    .lom-mary-left {
        float: none;
        display: block;
        margin: 0 auto 20px;
        max-width: 200px;
    }
}

/* Legion of Mary emblem, right-floated so list wraps around it */
.lom-emblem-right {
    float: right;
    max-width: 200px;
    width: 30%;
    height: auto;
    margin: 0 0 20px 30px;
}
@media (max-width: 600px) {
    .lom-emblem-right {
        float: none;
        display: block;
        margin: 0 auto 20px;
        max-width: 180px;
    }
}

/* SVdP logo, top-right of body, smaller than Legion emblem */
.svdp-logo-right {
    float: right;
    max-width: 260px;
    width: 30%;
    height: auto;
    margin: 0 0 20px 25px;
    border-radius: 4px;
}
/* wpautop wraps the img in a <p> — collapse it so the H2 below sits at the top */
.entry-content p:has(> .svdp-logo-right) {
    margin: 0;
}
@media (max-width: 600px) {
    .svdp-logo-right {
        float: none;
        display: block;
        margin: 0 auto 20px;
        max-width: 100px;
    }
}

/* Volunteer page — extra bottom padding so it doesn't feel crunched */
.page-id-13862 .entry-content {
    padding-bottom: 80px;
}

/* History/photos sticky column figcaptions — small caption text */
.history-photos-col figure {
    margin: 0 0 24px;
}
.history-photos-col figure img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 4px;
}
.history-photos-col figcaption {
    font-size: 0.8em;
    line-height: 1.4;
    color: #666;
    margin-top: 6px;
    text-align: center;
    font-style: italic;
}

/* Hero image credit line at end of body */
.hero-credit {
    font-size: 0.85em;
    color: #888;
    margin-top: 30px;
    border-top: 1px solid #eee;
    padding-top: 12px;
}

/* Contact Us — map embed */
.str-contact-map {
    margin: 24px 0 36px;
    border-radius: 6px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
}
.str-contact-map iframe {
    display: block;
    width: 100%;
    border: 0;
}

/* Contact Us — custom form */
.str-contact-form {
    max-width: 600px;
    margin: 0 0 40px;
}
.str-contact-form p {
    margin: 0 0 18px;
}
.str-contact-form label {
    display: block;
    font-weight: 600;
    margin-bottom: 6px;
    color: #3a3a3a;
}
.str-contact-form input[type="text"],
.str-contact-form input[type="email"],
.str-contact-form textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 1rem;
    font-family: inherit;
    box-sizing: border-box;
}
.str-contact-form input:focus,
.str-contact-form textarea:focus {
    outline: none;
    border-color: #9A2D3A;
    box-shadow: 0 0 0 3px rgba(154,45,58,0.15);
}
.str-contact-form .str-cf-err {
    display: block;
    color: #b3261e;
    font-size: 0.9em;
    margin-top: 4px;
}
.str-contact-form .str-cf-honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}
.str-cf-success {
    background: #e6f4ea;
    border-left: 4px solid #2e7d32;
    padding: 14px 18px;
    border-radius: 4px;
    margin: 20px 0;
}
.str-cf-error-summary {
    background: #fdecea;
    border-left: 4px solid #b3261e;
    padding: 14px 18px;
    border-radius: 4px;
    margin: 20px 0;
}

/* Section h2 headings on entry-content pages (page-custom.php and similar)
   — unified style matching .ff-section-header h2 used by dedicated templates */
.page-template-page-custom .entry-content h2 {
    font-size: 28px;
    font-weight: 700;
    color: #222;
    margin-top: 40px;
    margin-bottom: 20px;
    padding-bottom: 15px;
    border-bottom: 2px solid #eee;
}
.page-template-page-custom .entry-content h2:first-child {
    margin-top: 0;
}
@media (max-width: 768px) {
    .page-template-page-custom .entry-content h2 {
        font-size: 22px;
    }
}

/* Single event page — matches /events/ archive aesthetic */
.page-hero-header .hero-subtitle {
    color: #fff;
    font-size: 1.1rem;
    margin: 8px 0 0;
    opacity: 0.95;
    text-shadow: 0 1px 2px rgba(0,0,0,0.4);
}
.event-single {
    padding: 30px 20px 60px;
    max-width: 900px;
    margin: 0 auto;
}
.event-back-link {
    margin: 0 0 20px;
}
.event-back-link a {
    color: #9A2D3A;
    text-decoration: none;
    font-weight: 600;
}
.event-back-link a:hover {
    text-decoration: underline;
}
.event-meta-box {
    background: #faf6f7;
    border-left: 4px solid #9A2D3A;
    border-radius: 4px;
    padding: 20px 24px;
    margin: 0 0 30px;
}
.event-meta-row {
    margin: 0 0 10px;
    line-height: 1.5;
}
.event-meta-row:last-child {
    margin-bottom: 0;
}
.event-meta-row strong {
    color: #3a3a3a;
    margin-right: 6px;
}
.event-cat-pill {
    display: inline-block;
    background: #9A2D3A;
    color: #fff;
    padding: 3px 10px;
    border-radius: 4px;
    font-size: 0.85rem;
    margin: 0 4px 0 0;
}
.event-rsvp {
    margin: 18px 0 0;
}
.event-edit-link {
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px solid #eee;
    font-size: 0.9rem;
}
.event-edit-link a {
    color: #888;
    text-decoration: none;
}
.event-edit-link a:hover {
    color: #9A2D3A;
}

/* Single event page — full-width layout (no sidebar pinch) */
.single-events .site-content { display: block !important; }
.single-events .site-content .content-area { width: 100% !important; }
.single-events .is-right-sidebar,
.single-events .is-left-sidebar { display: none !important; }
.single-events .entry-header,
.single-events .featured-image { display: none; }

/* Single event — compact hero override */
.event-hero-compact {
    min-height: 180px !important;
    max-height: 180px !important;
    height: 180px !important;
}
.event-hero-compact .hero-title {
    font-size: 32px;
}
@media (max-width: 768px) {
    .event-hero-compact {
        min-height: 140px !important;
        max-height: 140px !important;
        height: 140px !important;
    }
    .event-hero-compact .hero-title {
        font-size: 26px;
    }
}

/* Event body header — title and date prominent */
.event-body-header {
    margin: 0 0 24px;
    padding-bottom: 18px;
    border-bottom: 2px solid #eee;
}
.event-body-title {
    font-size: 32px;
    font-weight: 700;
    color: #222;
    margin: 0 0 8px;
    line-height: 1.2;
}
.event-body-date {
    font-size: 1.15rem;
    color: #9A2D3A;
    font-weight: 600;
    margin: 0;
}
@media (max-width: 768px) {
    .event-body-title { font-size: 26px; }
    .event-body-date { font-size: 1rem; }
}

/* Events archive — category filter pills */
.event-cat-filter {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 30px;
    padding-bottom: 20px;
    border-bottom: 1px solid #eee;
}
.event-cat-link {
    display: inline-block;
    padding: 6px 14px;
    background: #f5f0f1;
    color: #3a3a3a;
    text-decoration: none;
    border-radius: 999px;
    font-size: 0.9rem;
    font-weight: 500;
    border: 1px solid transparent;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.event-cat-link:hover {
    background: #ebe0e2;
    color: #9A2D3A;
}
.event-cat-link.active {
    background: #9A2D3A;
    color: #fff;
}
.event-cat-link.active .event-cat-count {
    color: rgba(255,255,255,0.8);
}
.event-cat-count {
    color: #999;
    font-size: 0.85em;
    margin-left: 2px;
}

/* Talks archive — compact list */
.talks-archive-wrap { padding: 30px 20px 60px; max-width: 900px; margin: 0 auto; }
.talks-section-title {
    font-size: 1.5rem;
    color: #9A2D3A;
    border-bottom: 2px solid #9A2D3A;
    padding-bottom: 8px;
    margin: 30px 0 16px;
}
.talks-section-title:first-child { margin-top: 0; }
.talks-list {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.talk-row {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px;
    border-radius: 6px;
    text-decoration: none;
    color: inherit;
    transition: background 0.15s;
}
.talk-row:hover {
    background: #faf6f7;
    text-decoration: none;
}
.talk-row-thumb {
    flex: 0 0 160px;
    aspect-ratio: 16 / 9;
    background: #eee;
    border-radius: 4px;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}
.talk-row-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.talk-row-thumb-placeholder {
    color: #9A2D3A;
    font-size: 1.8rem;
    opacity: 0.5;
}
.talk-row-meta {
    flex: 1;
    min-width: 0;
}
.talk-row-title {
    font-size: 1.1rem;
    font-weight: 600;
    color: #222;
    margin: 0 0 4px;
    line-height: 1.3;
}
.talk-row:hover .talk-row-title { color: #9A2D3A; }
.talk-row-sub {
    font-size: 0.92rem;
    color: #666;
    margin: 0;
}
.talk-row-dot { margin: 0 6px; color: #ccc; }
.talks-pagination {
    margin-top: 30px;
    text-align: center;
}
.talks-pagination .page-numbers {
    display: inline-block;
    padding: 6px 12px;
    margin: 0 2px;
    border: 1px solid #ddd;
    border-radius: 4px;
    color: #555;
    text-decoration: none;
    font-size: 0.9rem;
}
.talks-pagination .page-numbers.current {
    background: #9A2D3A;
    color: #fff;
    border-color: #9A2D3A;
}
.talks-pagination a.page-numbers:hover {
    background: #f5f0f1;
    color: #9A2D3A;
}
@media (max-width: 600px) {
    .talk-row-thumb { flex-basis: 120px; }
    .talk-row-title { font-size: 1rem; }
}

/* Speaker taxonomy archive — hide sidebar (Recent Posts, Archives, Search, etc.) */
.tax-speakers .site-content { display: block !important; }
.tax-speakers .site-content .content-area { width: 100% !important; }
.tax-speakers .is-right-sidebar,
.tax-speakers .is-left-sidebar { display: none !important; }

/* Single speaker profile page */
.single-speaker .site-content { display: block !important; }
.single-speaker .site-content .content-area { width: 100% !important; }
.single-speaker .is-right-sidebar,
.single-speaker .is-left-sidebar { display: none !important; }
.single-speaker .entry-header,
.single-speaker .featured-image { display: none; }

.speaker-single { padding: 30px 20px 60px; max-width: 900px; margin: 0 auto; }
.speaker-header {
    display: flex;
    gap: 24px;
    align-items: center;
    margin: 0 0 30px;
    padding-bottom: 24px;
    border-bottom: 2px solid #eee;
}
.speaker-portrait {
    flex: 0 0 120px;
}
.speaker-portrait img {
    width: 120px;
    height: 120px;
    object-fit: cover;
    border-radius: 50%;
    display: block;
}
.speaker-name-wrap { flex: 1; }
.speaker-name {
    font-size: 32px;
    font-weight: 700;
    color: #222;
    margin: 0;
    line-height: 1.2;
}
.speaker-bio {
    margin: 0 0 40px;
    line-height: 1.7;
}
.speaker-talks-heading {
    font-size: 22px;
    font-weight: 700;
    color: #9A2D3A;
    border-bottom: 2px solid #9A2D3A;
    padding-bottom: 8px;
    margin: 30px 0 16px;
}
@media (max-width: 600px) {
    .speaker-header { flex-direction: column; text-align: center; gap: 16px; }
    .speaker-name { font-size: 24px; }
}

/* Speaker archive — full-width grid layout */
.post-type-archive-speaker .site-content { display: block !important; }
.post-type-archive-speaker .site-content .content-area { width: 100% !important; }
.post-type-archive-speaker .is-right-sidebar,
.post-type-archive-speaker .is-left-sidebar { display: none !important; }
.post-type-archive-speaker .entry-header,
.post-type-archive-speaker .featured-image { display: none; }

.speakers-archive {
    padding: 30px 20px 60px;
    max-width: 1100px;
    margin: 0 auto;
}
.speakers-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 24px;
}
.speaker-card {
    display: block;
    text-align: center;
    text-decoration: none;
    color: inherit;
    padding: 16px;
    border-radius: 6px;
    transition: background 0.15s, transform 0.15s;
}
.speaker-card:hover {
    background: #faf6f7;
    text-decoration: none;
}
.speaker-card-portrait {
    width: 100px;
    height: 100px;
    margin: 0 auto 12px;
    border-radius: 50%;
    overflow: hidden;
    background: #f0e6e8;
    display: flex;
    align-items: center;
    justify-content: center;
}
.speaker-card-portrait img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.speaker-card-portrait-placeholder {
    color: #9A2D3A;
    font-size: 2.4rem;
    font-weight: 600;
    opacity: 0.55;
}
.speaker-card-name {
    font-size: 0.95rem;
    font-weight: 600;
    color: #222;
    line-height: 1.3;
}
.speaker-card:hover .speaker-card-name {
    color: #9A2D3A;
}
.speaker-card-count {
    color: #888;
    font-weight: 400;
}
@media (max-width: 600px) {
    .speakers-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 16px; }
    .speaker-card-portrait { width: 80px; height: 80px; }
}

/* Single talk page — breathing room before footer */
.single-talks .container {
    padding-bottom: 60px;
}
.single-talks .talk-footer {
    margin-top: 40px !important;
    padding-top: 24px !important;
    padding-bottom: 20px;
}

/* Matrimony preparation stepper — replaces flat <ol> with engaging numbered cards */
.matrimony-stepper {
    list-style: none;
    counter-reset: matrimony-step;
    padding: 0;
    margin: 24px 0 0;
}
.matrimony-stepper > li {
    counter-increment: matrimony-step;
    position: relative;
    padding: 0 0 26px 60px;
    margin: 0;
}
.matrimony-stepper > li::before {
    content: counter(matrimony-step);
    position: absolute;
    left: 0;
    top: 2px;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: #9A2D3A;
    color: #fff;
    font-size: 1.05rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 2px 5px rgba(154,45,58,0.22);
    z-index: 1;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.matrimony-stepper > li:not(:last-child)::after {
    content: '';
    position: absolute;
    left: 19px;
    top: 44px;
    bottom: 0;
    width: 2px;
    background: #e5d5d8;
    z-index: 0;
}
.matrimony-stepper > li:hover::before {
    transform: scale(1.05);
    box-shadow: 0 4px 12px rgba(154,45,58,0.35);
}
.matrimony-stepper > li h4 {
    margin: 6px 0 8px;
    font-size: 1.15rem;
    color: #222;
    font-weight: 600;
    line-height: 1.3;
}
.matrimony-stepper > li p {
    margin: 0;
    color: #555;
    line-height: 1.55;
}
.matrimony-stepper .step-tag {
    display: inline-block;
    margin-left: 8px;
    padding: 2px 10px;
    background: #f1e8ea;
    color: #9A2D3A;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-radius: 12px;
    vertical-align: middle;
}
@media (max-width: 600px) {
    .matrimony-stepper > li {
        padding-left: 60px;
        padding-bottom: 24px;
    }
    .matrimony-stepper > li::before {
        width: 44px;
        height: 44px;
        font-size: 1.15rem;
    }
    .matrimony-stepper > li:not(:last-child)::after {
        left: 21px;
        top: 44px;
    }
    .matrimony-stepper > li h4 { font-size: 1.05rem; }
}

/* Young Adults page — 2-column layout with agenda list + sticky featured-event card */
.ya-layout {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 40px;
    align-items: start;
}
.ya-main { min-width: 0; }

/* Month header */
.ya-month {
    font-size: 0.95rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #9A2D3A;
    margin: 28px 0 12px;
    padding-bottom: 6px;
    border-bottom: 1px solid #e5d5d8;
}

/* Agenda list */
.ya-agenda {
    list-style: none;
    padding: 0;
    margin: 0 0 8px;
}
.ya-agenda > li {
    display: flex;
    gap: 18px;
    align-items: flex-start;
    padding: 14px 0;
    border-bottom: 1px solid #eee;
    transition: background 0.15s ease;
}
.ya-agenda > li:hover {
    background: #fafafa;
    margin: 0 -10px;
    padding-left: 10px;
    padding-right: 10px;
}
.ya-agenda > li:last-child { border-bottom: none; }

.ya-date {
    flex: 0 0 60px;
    text-align: center;
    background: #fff;
    border: 1px solid #e5d5d8;
    border-radius: 6px;
    padding: 6px 4px 8px;
    line-height: 1;
}
.ya-date-month {
    display: block;
    font-size: 0.7rem;
    font-weight: 700;
    color: #9A2D3A;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 2px;
}
.ya-date-day {
    display: block;
    font-size: 1.5rem;
    font-weight: 700;
    color: #222;
}

.ya-event { flex: 1; min-width: 0; }
.ya-event-title {
    font-weight: 600;
    color: #222;
    line-height: 1.35;
    margin-bottom: 4px;
}
.ya-event-meta {
    font-size: 0.88rem;
    color: #666;
}
.ya-rsvp-btn {
    display: inline-block;
    margin-top: 10px;
    font-size: 0.85rem;
    padding: 6px 14px !important;
}

/* Featured event in agenda */
.ya-agenda > li.ya-featured {
    background: linear-gradient(to right, #fdf6f7, transparent 60%);
    border-left: 3px solid #9A2D3A;
    padding-left: 12px;
    margin-left: -12px;
}
.ya-agenda > li.ya-featured .ya-date {
    background: #9A2D3A;
    border-color: #9A2D3A;
}
.ya-agenda > li.ya-featured .ya-date-month { color: #f5d5da; }
.ya-agenda > li.ya-featured .ya-date-day { color: #fff; }
.ya-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 8px;
    background: #9A2D3A;
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    border-radius: 10px;
    vertical-align: middle;
}

/* Sticky featured-event sidebar card */
.ya-featured-card {
    position: sticky;
    top: 90px;
    background: #fff;
    border: 1px solid #e5d5d8;
    border-radius: 8px;
    padding: 18px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
    text-align: center;
}
.ya-featured-label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #9A2D3A;
    margin-bottom: 12px;
}
.ya-featured-flyer {
    display: block;
    margin-bottom: 14px;
    overflow: hidden;
    border-radius: 4px;
    transition: transform 0.2s ease;
}
.ya-featured-flyer img {
    width: 100%;
    height: auto;
    display: block;
}
.ya-featured-flyer:hover { transform: scale(1.02); }
.ya-featured-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: #222;
    line-height: 1.25;
    margin-bottom: 2px;
}
.ya-featured-sub {
    font-size: 0.92rem;
    color: #666;
    margin-bottom: 8px;
    font-style: italic;
}
.ya-featured-when {
    font-size: 0.85rem;
    color: #555;
    margin-bottom: 14px;
}
.ya-featured-btn {
    display: inline-block !important;
    width: 100%;
    box-sizing: border-box;
}

/* Mobile: single column, featured card moves above agenda */
@media (max-width: 800px) {
    .ya-layout {
        grid-template-columns: 1fr;
        gap: 20px;
    }
    .ya-featured-card {
        position: static;
        order: -1;
        max-width: 320px;
        margin: 0 auto;
    }
}

/* Young Adults — hero shows figures at the bottom of the image */
.page-id-13522 .page-hero-header::before {
    background-position: center 80%;
}
