/*
 Theme Name:   Regis St. Mary Child Theme
 Theme URI:    https://www.regisstmary.org
 Description:  Child theme for Regis St. Mary Catholic School - Divi child theme
 Author:       Hermes Agent
 Author URI:   https://hermes-agent.nousresearch.com
 Template:     Divi
 Version:      2.0.1
 License:      GNU General Public License v2 or later
 License URI:  http://www.gnu.org/licenses/gpl-2.0.html
 Text Domain:  regisstmary
*/

/* ==========================================================================
   CSS Custom Properties - Brand Colors & Design System
   ========================================================================== */
:root {
    /* Brand Colors */
    --rsm-green-dark:     #004225;
    --rsm-green:          #005c35;
    --rsm-green-light:    #1a7a4a;
    --rsm-gold:           #C5B358;
    --rsm-gold-dark:      #a89842;
    --rsm-gold-light:     #d4c57a;
    --rsm-white:          #FFFFFF;
    --rsm-off-white:      #FAFAFA;
    --rsm-gray-50:        #F9FAFB;
    --rsm-gray-100:       #F3F4F6;
    --rsm-gray-200:       #E5E7EB;
    --rsm-gray-300:       #D1D5DB;
    --rsm-gray-400:       #9CA3AF;
    --rsm-gray-500:       #6B7280;
    --rsm-gray-600:       #4B5563;
    --rsm-gray-700:       #374151;
    --rsm-gray-800:       #1F2937;
    --rsm-gray-900:       #111827;
    
    /* Semantic Colors */
    --rsm-primary:        var(--rsm-green-dark);
    --rsm-primary-hover:  var(--rsm-green);
    --rsm-primary-light:  var(--rsm-green-light);
    --rsm-accent:         var(--rsm-gold);
    --rsm-accent-hover:   var(--rsm-gold-dark);
    --rsm-accent-light:   var(--rsm-gold-light);
    --rsm-text:           var(--rsm-gray-900);
    --rsm-text-muted:     var(--rsm-gray-600);
    --rsm-text-light:     var(--rsm-gray-500);
    --rsm-bg:             var(--rsm-white);
    --rsm-bg-alt:         var(--rsm-gray-50);
    --rsm-border:         var(--rsm-gray-200);
    --rsm-border-focus:   var(--rsm-primary);
    
    /* Spacing Scale */
    --rsm-space-xs:       0.25rem;  /* 4px */
    --rsm-space-sm:       0.5rem;   /* 8px */
    --rsm-space-md:       1rem;     /* 16px */
    --rsm-space-lg:       1.5rem;   /* 24px */
    --rsm-space-xl:       2rem;     /* 32px */
    --rsm-space-2xl:      3rem;     /* 48px */
    --rsm-space-3xl:      4rem;     /* 64px */
    --rsm-space-4xl:      6rem;     /* 96px */
    
    /* Typography */
    /* RSM SPRINT #8 — type unification: 'Josefin Sans' never loaded, so every
       themed element silently fell back to the OS UI font. The brand is
       Montserrat (headings, hero, buttons); make body/UI match the intent. */
    --rsm-font-sans:      'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
    --rsm-font-serif:     'Merriweather', Georgia, 'Times New Roman', serif;
    --rsm-font-mono:      'SF Mono', 'Fira Code', monospace;
    
    --rsm-text-xs:        0.75rem;   /* 12px */
    --rsm-text-sm:        0.875rem;  /* 14px */
    --rsm-text-base:      1rem;      /* 16px */
    --rsm-text-lg:        1.125rem;  /* 18px */
    --rsm-text-xl:        1.25rem;   /* 20px */
    --rsm-text-2xl:       1.5rem;    /* 24px */
    --rsm-text-3xl:       1.875rem;  /* 30px */
    --rsm-text-4xl:       2.25rem;   /* 36px */
    --rsm-text-5xl:       3rem;      /* 48px */
    --rsm-text-6xl:       3.75rem;   /* 60px */
    
    --rsm-leading-tight:  1.1;
    --rsm-leading-normal: 1.5;
    --rsm-leading-relaxed: 1.75;
    
    /* Border Radius */
    --rsm-radius-none:    0;
    --rsm-radius-sm:      0.25rem;  /* 4px */
    --rsm-radius-md:      0.5rem;   /* 8px */
    --rsm-radius-lg:      0.75rem;  /* 12px */
    --rsm-radius-xl:      1rem;     /* 16px */
    --rsm-radius-full:    9999px;
    
    /* Shadows */
    --rsm-shadow-sm:      0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --rsm-shadow-md:      0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    --rsm-shadow-lg:      0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
    --rsm-shadow-xl:      0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    --rsm-shadow-inner:   inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);
    
    /* Transitions */
    --rsm-transition-fast:  150ms ease;
    --rsm-transition-base:  250ms ease;
    --rsm-transition-slow:  350ms ease;
    
    /* Z-Index Scale */
    --rsm-z-dropdown:     100;
    --rsm-z-sticky:       200;
    --rsm-z-fixed:        300;
    --rsm-z-modal-backdrop: 400;
    --rsm-z-modal:        500;
    --rsm-z-popover:      600;
    --rsm-z-tooltip:      700;
    --rsm-z-toast:        800;
    
    /* Container */
    --rsm-container-max:  1280px;
    --rsm-container-padding: var(--rsm-space-lg);
}

/* ==========================================================================
   Reset & Base
   ========================================================================== */
*, *::before, *::after {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

body {
    font-family: var(--rsm-font-sans);
    font-size: var(--rsm-text-base);
    line-height: var(--rsm-leading-normal);
    color: var(--rsm-text);
    background-color: var(--rsm-bg);
    margin: 0;
    padding: 0;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* ==========================================================================
   Typography
   ========================================================================== */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--rsm-font-sans);
    font-weight: 700;
    line-height: var(--rsm-leading-tight);
    color: var(--rsm-primary);
    margin-top: 0;
    margin-bottom: var(--rsm-space-md);
}

h1 { font-size: var(--rsm-text-5xl); }
h2 { font-size: var(--rsm-text-4xl); }
h3 { font-size: var(--rsm-text-3xl); }
h4 { font-size: var(--rsm-text-2xl); }
h5 { font-size: var(--rsm-text-xl); }
h6 { font-size: var(--rsm-text-lg); }

p {
    margin-top: 0;
    margin-bottom: var(--rsm-space-md);
    line-height: var(--rsm-leading-relaxed);
}

a {
    color: var(--rsm-primary);
    text-decoration: none;
    transition: color var(--rsm-transition-fast);
}

a:hover {
    color: var(--rsm-primary-hover);
    text-decoration: underline;
}

strong, b {
    font-weight: 600;
}

blockquote {
    margin: var(--rsm-space-xl) 0;
    padding: var(--rsm-space-lg) var(--rsm-space-xl);
    border-left: 4px solid var(--rsm-accent);
    background: var(--rsm-bg-alt);
    font-style: italic;
    color: var(--rsm-text-muted);
}

blockquote cite {
    display: block;
    margin-top: var(--rsm-space-sm);
    font-style: normal;
    font-size: var(--rsm-text-sm);
    color: var(--rsm-text-light);
}

/* ==========================================================================
   Buttons
   ========================================================================== */
.rsm-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--rsm-space-sm);
    padding: var(--rsm-space-sm) var(--rsm-space-xl);
    font-family: var(--rsm-font-sans);
    font-size: var(--rsm-text-base);
    font-weight: 600;
    line-height: 1.5;
    border: 2px solid transparent;
    border-radius: var(--rsm-radius-md);
    cursor: pointer;
    transition: all var(--rsm-transition-base);
    text-decoration: none;
    white-space: nowrap;
}

.rsm-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.rsm-btn-primary {
    background: var(--rsm-primary);
    border-color: var(--rsm-primary);
    color: var(--rsm-white);
}

.rsm-btn-primary:hover {
    background: var(--rsm-primary-hover);
    border-color: var(--rsm-primary-hover);
    color: var(--rsm-white);
    text-decoration: none;
}

.rsm-btn-secondary {
    background: transparent;
    border-color: var(--rsm-primary);
    color: var(--rsm-primary);
}

.rsm-btn-secondary:hover {
    background: var(--rsm-primary);
    color: var(--rsm-white);
    text-decoration: none;
}

.rsm-btn-accent {
    background: var(--rsm-accent);
    border-color: var(--rsm-accent);
    color: var(--rsm-primary);
}

.rsm-btn-accent:hover {
    background: var(--rsm-accent-hover);
    border-color: var(--rsm-accent-hover);
    color: var(--rsm-primary);
    text-decoration: none;
}

.rsm-btn-outline {
    background: transparent;
    border-color: var(--rsm-gray-300);
    color: var(--rsm-text);
}

.rsm-btn-outline:hover {
    border-color: var(--rsm-gray-400);
    background: var(--rsm-gray-100);
    text-decoration: none;
}

.rsm-btn-lg {
    padding: var(--rsm-space-md) var(--rsm-space-2xl);
    font-size: var(--rsm-text-lg);
}

.rsm-btn-sm {
    padding: var(--rsm-space-xs) var(--rsm-space-md);
    font-size: var(--rsm-text-sm);
}

.rsm-btn-block {
    width: 100%;
}

/* ==========================================================================
   Forms
   ========================================================================== */
.rsm-form-group {
    margin-bottom: var(--rsm-space-lg);
}

.rsm-form-label {
    display: block;
    margin-bottom: var(--rsm-space-xs);
    font-weight: 500;
    color: var(--rsm-text);
    font-size: var(--rsm-text-sm);
}

.rsm-form-input,
.rsm-form-select,
.rsm-form-textarea {
    width: 100%;
    padding: var(--rsm-space-sm) var(--rsm-space-md);
    font-family: var(--rsm-font-sans);
    font-size: var(--rsm-text-base);
    line-height: 1.5;
    color: var(--rsm-text);
    background: var(--rsm-bg);
    border: 1px solid var(--rsm-border);
    border-radius: var(--rsm-radius-md);
    transition: all var(--rsm-transition-fast);
}

.rsm-form-input:focus,
.rsm-form-select:focus,
.rsm-form-textarea:focus {
    outline: none;
    border-color: var(--rsm-border-focus);
    box-shadow: 0 0 0 3px rgba(0, 66, 37, 0.15);
}

.rsm-form-input::placeholder,
.rsm-form-textarea::placeholder {
    color: var(--rsm-text-light);
}

.rsm-form-textarea {
    min-height: 120px;
    resize: vertical;
}

.rsm-form-error .rsm-form-input,
.rsm-form-error .rsm-form-select,
.rsm-form-error .rsm-form-textarea {
    border-color: #DC2626;
}

.rsm-form-error-message {
    display: block;
    margin-top: var(--rsm-space-xs);
    font-size: var(--rsm-text-sm);
    color: #DC2626;
}

/* ==========================================================================
   Cards
   ========================================================================== */
.rsm-card {
    background: var(--rsm-bg);
    border: 1px solid var(--rsm-border);
    border-radius: var(--rsm-radius-lg);
    box-shadow: var(--rsm-shadow-sm);
    overflow: hidden;
    transition: all var(--rsm-transition-base);
}

.rsm-card:hover {
    box-shadow: var(--rsm-shadow-md);
    border-color: var(--rsm-gray-300);
}

.rsm-card-header {
    padding: var(--rsm-space-lg);
    border-bottom: 1px solid var(--rsm-border);
    background: var(--rsm-bg-alt);
}

.rsm-card-body {
    padding: var(--rsm-space-lg);
}

.rsm-card-footer {
    padding: var(--rsm-space-lg);
    border-top: 1px solid var(--rsm-border);
    background: var(--rsm-bg-alt);
    display: flex;
    align-items: center;
    gap: var(--rsm-space-md);
}

/* ==========================================================================
   Badges
   ========================================================================== */
.rsm-badge {
    display: inline-flex;
    align-items: center;
    padding: var(--rsm-space-xs) var(--rsm-space-sm);
    font-size: var(--rsm-text-xs);
    font-weight: 600;
    line-height: 1;
    border-radius: var(--rsm-radius-full);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.rsm-badge-primary {
    background: var(--rsm-primary);
    color: var(--rsm-white);
}

.rsm-badge-accent {
    background: var(--rsm-accent);
    color: var(--rsm-primary);
}

.rsm-badge-success {
    background: #D1FAE5;
    color: #065F46;
}

.rsm-badge-warning {
    background: #FEF3C7;
    color: #92400E;
}

.rsm-badge-danger {
    background: #FEE2E2;
    color: #991B1B;
}

/* ==========================================================================
   Grid & Layout Utilities
   ========================================================================== */
.rsm-container {
    width: 100%;
    max-width: var(--rsm-container-max);
    margin: 0 auto;
    padding: 0 var(--rsm-container-padding);
}

.rsm-grid {
    display: grid;
    gap: var(--rsm-space-lg);
}

.rsm-grid-2 { grid-template-columns: repeat(2, 1fr); }
.rsm-grid-3 { grid-template-columns: repeat(3, 1fr); }
.rsm-grid-4 { grid-template-columns: repeat(4, 1fr); }

@media (max-width: 1024px) {
    .rsm-grid-4 { grid-template-columns: repeat(2, 1fr); }
    .rsm-grid-3 { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
    .rsm-grid-2,
    .rsm-grid-3,
    .rsm-grid-4 { grid-template-columns: 1fr; }
}

.rsm-flex {
    display: flex;
}

.rsm-flex-col { flex-direction: column; }
.rsm-flex-wrap { flex-wrap: wrap; }
.rsm-items-center { align-items: center; }
.rsm-items-start { align-items: flex-start; }
.rsm-items-end { align-items: flex-end; }
.rsm-justify-center { justify-content: center; }
.rsm-justify-between { justify-content: space-between; }
.rsm-justify-start { justify-content: flex-start; }
.rsm-justify-end { justify-content: flex-end; }
.rsm-gap-xs { gap: var(--rsm-space-xs); }
.rsm-gap-sm { gap: var(--rsm-space-sm); }
.rsm-gap-md { gap: var(--rsm-space-md); }
.rsm-gap-lg { gap: var(--rsm-space-lg); }
.rsm-gap-xl { gap: var(--rsm-space-xl); }

/* ==========================================================================
   Spacing Utilities
   ========================================================================== */
.rsm-m-0 { margin: 0; }
.rsm-m-auto { margin: auto; }
.rsm-mt-auto { margin-top: auto; }
.rsm-mb-auto { margin-bottom: auto; }
.rsm-mx-auto { margin-left: auto; margin-right: auto; }
.rsm-my-auto { margin-top: auto; margin-bottom: auto; }

.rsm-p-0 { padding: 0; }

/* Margin */
.rsm-mt-xs { margin-top: var(--rsm-space-xs); }
.rsm-mt-sm { margin-top: var(--rsm-space-sm); }
.rsm-mt-md { margin-top: var(--rsm-space-md); }
.rsm-mt-lg { margin-top: var(--rsm-space-lg); }
.rsm-mt-xl { margin-top: var(--rsm-space-xl); }
.rsm-mt-2xl { margin-top: var(--rsm-space-2xl); }
.rsm-mt-3xl { margin-top: var(--rsm-space-3xl); }

.rsm-mb-xs { margin-bottom: var(--rsm-space-xs); }
.rsm-mb-sm { margin-bottom: var(--rsm-space-sm); }
.rsm-mb-md { margin-bottom: var(--rsm-space-md); }
.rsm-mb-lg { margin-bottom: var(--rsm-space-lg); }
.rsm-mb-xl { margin-bottom: var(--rsm-space-xl); }
.rsm-mb-2xl { margin-bottom: var(--rsm-space-2xl); }
.rsm-mb-3xl { margin-bottom: var(--rsm-space-3xl); }

/* Padding */
.rsm-pt-xs { padding-top: var(--rsm-space-xs); }
.rsm-pt-sm { padding-top: var(--rsm-space-sm); }
.rsm-pt-md { padding-top: var(--rsm-space-md); }
.rsm-pt-lg { padding-top: var(--rsm-space-lg); }
.rsm-pt-xl { padding-top: var(--rsm-space-xl); }
.rsm-pt-2xl { padding-top: var(--rsm-space-2xl); }
.rsm-pt-3xl { padding-top: var(--rsm-space-3xl); }

.rsm-pb-xs { padding-bottom: var(--rsm-space-xs); }
.rsm-pb-sm { padding-bottom: var(--rsm-space-sm); }
.rsm-pb-md { padding-bottom: var(--rsm-space-md); }
.rsm-pb-lg { padding-bottom: var(--rsm-space-lg); }
.rsm-pb-xl { padding-bottom: var(--rsm-space-xl); }
.rsm-pb-2xl { padding-bottom: var(--rsm-space-2xl); }
.rsm-pb-3xl { padding-bottom: var(--rsm-space-3xl); }

/* ==========================================================================
   Visibility
   ========================================================================== */
.rsm-hidden { display: none !important; }
.rsm-invisible { visibility: hidden; }
.rsm-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* ==========================================================================
   Page Template Specific Styles
   ========================================================================== */

/* Home Template */
.rsm-template-home .rsm-hero {
    padding: var(--rsm-space-4xl) 0;
    background: linear-gradient(135deg, var(--rsm-primary) 0%, var(--rsm-green) 100%);
    color: var(--rsm-white);
}

.rsm-template-home .rsm-hero h1 {
    color: var(--rsm-white);
    font-size: var(--rsm-text-6xl);
}

.rsm-template-home .rsm-pillars {
    padding: var(--rsm-space-3xl) 0;
}

.rsm-template-home .rsm-pillar-card {
    text-align: center;
    padding: var(--rsm-space-xl);
}

.rsm-template-home .rsm-pillar-icon {
    width: 80px;
    height: 80px;
    margin: 0 auto var(--rsm-space-md);
    background: var(--rsm-primary);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rsm-white);
    font-size: var(--rsm-text-3xl);
}

.rsm-template-home .rsm-pillar-title {
    font-size: var(--rsm-text-xl);
    margin-bottom: var(--rsm-space-sm);
}

.rsm-template-home .rsm-pillar-text {
    color: var(--rsm-text-muted);
    font-size: var(--rsm-text-base);
}

.rsm-template-home .rsm-stats {
    background: var(--rsm-bg-alt);
    padding: var(--rsm-space-3xl) 0;
}

.rsm-template-home .rsm-stat-number {
    font-size: var(--rsm-text-5xl);
    font-weight: 700;
    color: var(--rsm-primary);
    line-height: 1;
}

.rsm-template-home .rsm-stat-label {
    font-size: var(--rsm-text-lg);
    color: var(--rsm-text-muted);
    margin-top: var(--rsm-space-xs);
}

/* Discover Template (About, Academics, Athletics, Giving) */
.rsm-template-discover .rsm-page-header {
    padding: var(--rsm-space-3xl) 0;
    background: var(--rsm-primary);
    color: var(--rsm-white);
}

.rsm-template-discover .rsm-page-header h1 {
    color: var(--rsm-white);
}

.rsm-template-discover .rsm-content-section {
    padding: var(--rsm-space-3xl) 0;
}

.rsm-template-discover .rsm-section-title {
    text-align: center;
    margin-bottom: var(--rsm-space-2xl);
}

.rsm-template-discover .rsm-section-title h2 {
    position: relative;
    display: inline-block;
}

.rsm-template-discover .rsm-section-title h2::after {
    content: '';
    position: absolute;
    bottom: -8px;
    left: 50%;
    transform: translateX(-50%);
    width: 60px;
    height: 3px;
    background: var(--rsm-accent);
    border-radius: var(--rsm-radius-full);
}

/* Join Template (Admissions & Tuition) */
.rsm-template-join .rsm-page-header {
    padding: var(--rsm-space-3xl) 0;
    background: var(--rsm-primary);
    color: var(--rsm-white);
}

.rsm-template-join .rsm-page-header h1 {
    color: var(--rsm-white);
}

.rsm-template-join .rsm-sticky-cta {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--rsm-bg);
    border-top: 1px solid var(--rsm-border);
    box-shadow: var(--rsm-shadow-lg);
    padding: var(--rsm-space-md) var(--rsm-container-padding);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--rsm-space-md);
    z-index: var(--rsm-z-sticky);
    transform: translateY(100%);
    transition: transform var(--rsm-transition-base);
}

.rsm-template-join .rsm-sticky-cta.visible {
    transform: translateY(0);
}

@media (min-width: 769px) {
    .rsm-template-join .rsm-sticky-cta {
        display: none;
    }
}

/* Current Families Template */
.rsm-template-current-families .rsm-alert-bar {
    background: var(--rsm-primary);
    color: var(--rsm-white);
    padding: var(--rsm-space-sm) var(--rsm-container-padding);
    font-size: var(--rsm-text-sm);
}

.rsm-template-current-families .rsm-hub-grid {
    padding: var(--rsm-space-3xl) 0;
}

.rsm-template-current-families .rsm-hub-card {
    text-align: center;
    padding: var(--rsm-space-xl);
    transition: all var(--rsm-transition-base);
}

.rsm-template-current-families .rsm-hub-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--rsm-shadow-lg);
}

.rsm-template-current-families .rsm-hub-icon {
    width: 64px;
    height: 64px;
    margin: 0 auto var(--rsm-space-md);
    background: var(--rsm-primary);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rsm-white);
    font-size: var(--rsm-text-2xl);
}

.rsm-template-current-families .rsm-accordion {
    border: 1px solid var(--rsm-border);
    border-radius: var(--rsm-radius-md);
    overflow: hidden;
    margin-bottom: var(--rsm-space-md);
}

.rsm-template-current-families .rsm-accordion-header {
    padding: var(--rsm-space-md) var(--rsm-space-lg);
    background: var(--rsm-bg-alt);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-weight: 600;
    transition: background var(--rsm-transition-fast);
}

.rsm-template-current-families .rsm-accordion-header:hover {
    background: var(--rsm-gray-100);
}

.rsm-template-current-families .rsm-accordion-content {
    padding: var(--rsm-space-lg);
    display: none;
}

.rsm-template-current-families .rsm-accordion.open .rsm-accordion-content {
    display: block;
}

/* ==========================================================================
   Divi Builder Integration
   ========================================================================== */

/* Ensure Divi modules respect our design system */
.et_pb_module {
    font-family: var(--rsm-font-sans);
}

.et_pb_button {
    font-family: var(--rsm-font-sans) !important;
    font-weight: 600 !important;
    letter-spacing: 0.025em !important;
}

.et_pb_button_0.et_pb_bg_layout_light {
    background: var(--rsm-primary) !important;
    border-color: var(--rsm-primary) !important;
}

.et_pb_button_0.et_pb_bg_layout_light:hover {
    background: var(--rsm-primary-hover) !important;
    border-color: var(--rsm-primary-hover) !important;
}

/* Divi Fullwidth Header */
.et_pb_fullwidth_header .et_pb_module_header {
    font-family: var(--rsm-font-sans) !important;
    font-weight: 600 !important;
}

.et_pb_fullwidth_header .et_pb_button {
    border-radius: var(--rsm-radius-md) !important;
}

/* Divi Blurb */
.et_pb_blurb_title {
    font-family: var(--rsm-font-sans) !important;
    font-weight: 600 !important;
    color: var(--rsm-primary) !important;
}

/* Divi Counter */
.et_pb_counter_amount {
    font-family: var(--rsm-font-sans) !important;
    font-weight: 700 !important;
    color: var(--rsm-primary) !important;
}

/* Divi Tabs */
.et_pb_tabs_controls li a {
    font-family: var(--rsm-font-sans) !important;
    font-weight: 600 !important;
    color: var(--rsm-text) !important;
}

.et_pb_tabs_controls li.et_pb_tab_active a {
    color: var(--rsm-primary) !important;
    border-bottom-color: var(--rsm-primary) !important;
}

/* Divi Accordion */
.et_pb_accordion_item .et_pb_toggle_title {
    font-family: var(--rsm-font-sans) !important;
    font-weight: 600 !important;
}

.et_pb_accordion_item .et_pb_toggle_content {
    font-family: var(--rsm-font-sans) !important;
    line-height: var(--rsm-leading-relaxed) !important;
}

/* ==========================================================================
   Sticky CTA Bar (Mobile)
   ========================================================================== */
.rsm-sticky-cta {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--rsm-bg);
    border-top: 1px solid var(--rsm-border);
    box-shadow: var(--rsm-shadow-lg);
    padding: var(--rsm-space-md) var(--rsm-container-padding);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--rsm-space-md);
    z-index: var(--rsm-z-sticky);
    transform: translateY(100%);
    transition: transform var(--rsm-transition-base);
}

.rsm-sticky-cta.visible {
    transform: translateY(0);
}

@media (min-width: 769px) {
    .rsm-sticky-cta {
        display: none;
    }
}

/* ==========================================================================
   Focus Visible (Accessibility)
   ========================================================================== */
:focus:not(:focus-visible) {
    outline: none;
}

:focus-visible {
    outline: 2px solid var(--rsm-primary);
    outline-offset: 2px;
}

/* ==========================================================================
   Branded Global Header and Home Hero
   ========================================================================== */
.rsm-global-header .et_pb_row {
    align-items: center;
}

.rsm-global-header .et_pb_column {
    align-self: center;
}

.rsm-brand-logo {
    display: inline-flex;
    align-items: center;
    max-width: 230px;
}

.rsm-brand-logo img {
    display: block;
    width: 100%;
    height: auto;
}

.rsm-home-hero {
    min-height: clamp(560px, 72vh, 760px);
    display: flex;
    align-items: center;
    background-color: #164734 !important;
    background-image:
        linear-gradient(90deg,
            #164734 0%,
            #164734 27%,
            rgba(22, 71, 52, 0.97) 38%,
            rgba(22, 71, 52, 0.82) 50%,
            rgba(22, 71, 52, 0.42) 67%,
            rgba(22, 71, 52, 0.12) 84%),
        linear-gradient(0deg, rgba(18, 56, 43, 0.16), rgba(18, 56, 43, 0.16)),
        url('/wp-content/uploads/2022/11/hero-c.jpg') !important;
    background-size: cover !important;
    background-position: center center !important;
    background-repeat: no-repeat !important;
}

.rsm-home-hero .et_pb_row {
    width: min(90%, var(--rsm-container-max));
}

.rsm-home-hero .et_pb_text {
    max-width: 610px;
}

.rsm-home-hero h1 {
    font-size: clamp(2.8rem, 5.6vw, 5.25rem);
    letter-spacing: -0.035em;
    line-height: 1.02;
}

.rsm-home-hero .rsm-lead {
    max-width: 590px;
    font-size: clamp(1.1rem, 1.7vw, 1.35rem);
}

.rsm-home-hero .rsm-button-group {
    display: flex;
    flex-wrap: wrap;
    gap: var(--rsm-space-md);
    margin-top: var(--rsm-space-xl);
}

/* Family shortcuts replace the easy-to-miss legacy top bar. */
body .et_pb_section.rsm-family-actions-section {
    padding: 26px 0 !important;
    background: #f6f4ed !important;
    border-top: 4px solid var(--rsm-accent);
    border-bottom: 1px solid #e5e0d1;
}

.rsm-family-actions-section .et_pb_row {
    width: min(94%, var(--rsm-container-max));
    padding: 0 !important;
}

.rsm-family-actions {
    display: grid;
    grid-template-columns: 210px minmax(0, 1fr);
    align-items: center;
    gap: var(--rsm-space-lg);
}

.rsm-family-actions-intro .rsm-eyebrow {
    margin: 0 0 3px;
    color: var(--rsm-green) !important;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.rsm-family-actions-intro h2 {
    margin: 0 0 2px;
    color: var(--rsm-green-dark) !important;
    font-size: clamp(1.35rem, 2vw, 1.7rem);
    line-height: 1.15;
}

.rsm-family-actions-intro > p:last-child {
    margin: 0;
    color: var(--rsm-text-muted);
    font-size: 0.88rem;
    line-height: 1.4;
}

.rsm-quick-actions-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.rsm-quick-action {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr) auto;
    align-items: center;
    gap: 11px;
    min-height: 86px;
    padding: 14px;
    color: var(--rsm-green-dark) !important;
    background: var(--rsm-white);
    border: 1px solid #ded9ca;
    border-radius: var(--rsm-radius-md);
    box-shadow: var(--rsm-shadow-sm);
    text-decoration: none !important;
    transition: transform var(--rsm-transition-fast), border-color var(--rsm-transition-fast), box-shadow var(--rsm-transition-fast);
}

.rsm-quick-action:hover,
.rsm-quick-action:focus-visible {
    color: var(--rsm-green-dark) !important;
    border-color: var(--rsm-gold-dark);
    box-shadow: var(--rsm-shadow-md);
    transform: translateY(-2px);
}

.rsm-quick-action:focus-visible {
    outline: 3px solid var(--rsm-green-dark);
    outline-offset: 3px;
}

.rsm-quick-action-priority {
    color: var(--rsm-green-dark) !important;
    background: var(--rsm-accent);
    border-color: var(--rsm-accent);
}

.rsm-quick-action-icon {
    display: inline-grid;
    width: 38px;
    height: 38px;
    place-items: center;
    color: var(--rsm-green-dark);
    background: #f0eee5;
    border-radius: var(--rsm-radius-full);
}

.rsm-quick-action-priority .rsm-quick-action-icon {
    background: rgba(255, 255, 255, 0.55);
}

.rsm-quick-action-icon svg {
    width: 21px;
    height: 21px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.rsm-quick-action-copy {
    min-width: 0;
}

.rsm-quick-action-copy strong,
.rsm-quick-action-copy small {
    display: block;
}

.rsm-quick-action-copy strong {
    color: inherit;
    font-size: 0.94rem;
    line-height: 1.2;
}

.rsm-quick-action-copy small {
    margin-top: 4px;
    color: var(--rsm-text-muted);
    font-size: 0.73rem;
    line-height: 1.25;
}

.rsm-quick-action-priority .rsm-quick-action-copy small {
    color: #294d3d;
}

.rsm-quick-action-arrow {
    font-size: 1rem;
    font-weight: 700;
}

@media (max-width: 1180px) {
    .rsm-family-actions {
        grid-template-columns: 190px minmax(0, 1fr);
    }

    .rsm-quick-actions-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 980px) {
    .rsm-brand-logo {
        max-width: 190px;
    }

    .rsm-home-hero {
        min-height: 620px;
        background-image:
            linear-gradient(180deg,
                rgba(22, 71, 52, 0.98) 0%,
                rgba(22, 71, 52, 0.94) 48%,
                rgba(22, 71, 52, 0.72) 100%),
            url('/wp-content/uploads/2022/11/hero-c.jpg') !important;
        background-position: 58% center !important;
    }

    .rsm-home-hero .et_pb_text {
        max-width: 680px;
    }

    .rsm-family-actions {
        grid-template-columns: 1fr;
        gap: var(--rsm-space-md);
    }

    .rsm-family-actions-intro {
        display: grid;
        grid-template-columns: auto 1fr;
        column-gap: 12px;
        align-items: baseline;
    }

    .rsm-family-actions-intro .rsm-eyebrow,
    .rsm-family-actions-intro > p:last-child {
        grid-column: 1 / -1;
    }
}

@media (max-width: 600px) {
    .rsm-brand-logo {
        max-width: 165px;
    }

    .rsm-home-hero {
        min-height: 660px;
        background-position: 61% center !important;
    }

    .rsm-home-hero h1 {
        font-size: clamp(2.5rem, 13vw, 3.65rem);
    }

    body .et_pb_section.rsm-family-actions-section {
        padding: 22px 0 !important;
    }

    .rsm-family-actions-intro {
        display: block;
    }

    .rsm-quick-actions-grid {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .rsm-quick-action {
        min-height: 76px;
        padding: 12px 14px;
    }
}

/* ==========================================================================
   Divi Layout Contrast Overrides
   ========================================================================== */
.rsm-layout-hero,
.rsm-cta-band,
.rsm-single-hero,
.rsm-global-footer {
    color: var(--rsm-white);
}

body .et_pb_section.rsm-layout-hero,
body .et_pb_section.rsm-cta-band,
body .et_pb_section.rsm-single-hero {
    background-color: var(--rsm-primary) !important;
}

body .et_pb_section.rsm-section-light {
    background-color: var(--rsm-white) !important;
}

body .et_pb_section.rsm-section-alt {
    background-color: var(--rsm-gray-100) !important;
}

.rsm-layout-hero h1,
.rsm-layout-hero h2,
.rsm-layout-hero h3,
.rsm-layout-hero p,
.rsm-cta-band h1,
.rsm-cta-band h2,
.rsm-cta-band h3,
.rsm-cta-band p,
.rsm-single-hero h1,
.rsm-single-hero h2,
.rsm-single-hero h3,
.rsm-single-hero p,
.rsm-global-footer h1,
.rsm-global-footer h2,
.rsm-global-footer h3,
.rsm-global-footer h4,
.rsm-global-footer p,
.rsm-global-footer li {
    color: var(--rsm-white) !important;
}

.rsm-layout-hero .rsm-eyebrow {
    color: #E7D99A !important;
}

.rsm-layout-hero .rsm-lead,
.rsm-cta-band .rsm-lead {
    color: var(--rsm-gray-100) !important;
}

.rsm-layout-hero .rsm-btn-outline-light {
    background: transparent;
    border-color: var(--rsm-white);
    color: var(--rsm-white) !important;
}

.rsm-layout-hero .rsm-btn-outline-light:hover,
.rsm-layout-hero .rsm-btn-outline-light:focus-visible {
    background: var(--rsm-white);
    border-color: var(--rsm-white);
    color: var(--rsm-primary) !important;
    text-decoration: none;
}

.rsm-layout-hero .rsm-btn-accent,
.rsm-cta-band .rsm-btn-accent {
    color: var(--rsm-primary) !important;
}

.rsm-global-footer a {
    color: var(--rsm-gold-light) !important;
    text-decoration-thickness: 1px;
    text-underline-offset: 0.18em;
}

.rsm-global-footer a:hover,
.rsm-global-footer a:focus-visible {
    color: var(--rsm-white) !important;
}

.rsm-global-footer hr {
    border-color: rgba(255, 255, 255, 0.3);
}

/* ==========================================================================
   Editorial Density & Photography Pass
   ========================================================================== */
.rsm-page-content-section:not(.rsm-layout-hero):not(.rsm-cta-band):not(.rsm-single-hero):not(.rsm-global-footer) {
    padding-top: clamp(38px, 3.6vw, 54px) !important;
    padding-bottom: clamp(38px, 3.6vw, 54px) !important;
}

.rsm-page-content-section .rsm-section-heading {
    max-width: 760px;
    margin-bottom: clamp(22px, 2.4vw, 34px);
}

.rsm-page-content-section .rsm-grid {
    gap: clamp(16px, 1.8vw, 24px);
}

.rsm-page-content-section .rsm-card-body {
    padding: clamp(20px, 2vw, 28px);
}

.rsm-pillar-band .rsm-grid-3 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.rsm-dashboard-section {
    padding-top: 34px !important;
    padding-bottom: 34px !important;
}

.rsm-dashboard-section .rsm-card-body {
    padding: 18px 20px;
}

.rsm-dashboard-section .rsm-card h3 {
    font-size: 1.08rem;
    margin-bottom: 6px;
}

.rsm-dashboard-section .rsm-card p {
    font-size: 0.94rem;
    line-height: 1.45;
}

.rsm-proof-strip {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1px;
    margin-top: 30px;
    overflow: hidden;
    border-radius: 6px;
    background: rgba(255,255,255,.22);
    box-shadow: 0 14px 30px rgba(0, 46, 27, .14);
}

.rsm-proof-strip > div {
    display: flex;
    align-items: baseline;
    gap: 14px;
    padding: 22px 26px;
    background: var(--rsm-primary);
    color: #fff;
}

.rsm-proof-strip strong {
    flex: 0 0 auto;
    color: var(--rsm-gold-light);
    font-size: clamp(2rem, 3.4vw, 3.25rem);
    line-height: 1;
}

.rsm-proof-strip span {
    color: #fff;
    font-size: 1rem;
    font-weight: 700;
}

.rsm-inline-proof {
    display: flex;
    align-items: center;
    gap: 18px;
    max-width: 520px;
    margin-bottom: 20px;
    padding: 16px 20px;
    border-top: 2px solid var(--rsm-gold);
    border-bottom: 1px solid rgba(22, 71, 52, .18);
}

.rsm-inline-proof strong,
.rsm-service-proof strong {
    color: var(--rsm-primary);
    font-size: clamp(2rem, 3.6vw, 3.4rem);
    line-height: 1;
}

.rsm-inline-proof span,
.rsm-service-proof span {
    color: var(--rsm-text);
    font-weight: 700;
}

.rsm-service-proof {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    margin-top: 26px;
    padding: 18px 24px;
    background: var(--rsm-gold-light);
    border-radius: 4px;
}

.rsm-editorial-photo {
    --rsm-editorial-image: none;
    position: relative;
    min-height: 390px;
    overflow: hidden;
    isolation: isolate;
}

.rsm-editorial-photo::after {
    content: "";
    position: absolute;
    z-index: 0;
    inset: 0 0 0 54%;
    background-image: linear-gradient(90deg, var(--rsm-white, #fff) 0%, rgba(255,255,255,.2) 34%, transparent 62%), var(--rsm-editorial-image);
    background-size: cover;
    background-position: center;
}

.rsm-editorial-photo.rsm-section-alt::after {
    background-image: linear-gradient(90deg, var(--rsm-gray-100, #f7f7f4) 0%, rgba(247,247,244,.2) 34%, transparent 62%), var(--rsm-editorial-image);
}

.rsm-editorial-photo .et_pb_row {
    position: relative;
    z-index: 1;
}

.rsm-editorial-photo .et_pb_column {
    width: 50% !important;
}

.rsm-home-vision { --rsm-editorial-image: url('/wp-content/uploads/2025/12/2025-09-29_ST.-MARY-ENTRY-RENDERING-scaled-e1765926779918-1280x720.jpg'); }
.rsm-about-story { --rsm-editorial-image: url('/wp-content/uploads/2022/11/a-legacy-of-excellence-c.jpg'); }
.rsm-admissions-visit { --rsm-editorial-image: url('/wp-content/uploads/2022/11/admissions-overview-c.jpg'); }
.rsm-academics-philosophy { --rsm-editorial-image: url('/wp-content/uploads/2021/05/StMary-22.jpg'); }
.rsm-athletics-registration { --rsm-editorial-image: url('/wp-content/uploads/2021/07/RSM-Rams-Athletics.jpg'); }
.rsm-giving-volunteer { --rsm-editorial-image: url('/wp-content/uploads/2021/05/StMary-23.jpg'); }

/* Forms & Documents utility directory. */
.rsm-forms-directory-section {
    background: var(--rsm-gray-100) !important;
}

.rsm-forms-intro {
    max-width: 760px;
    margin-bottom: 28px;
}

.rsm-forms-search-label {
    display: block;
    margin-bottom: 8px;
    color: var(--rsm-primary);
    font-size: 1rem;
    font-weight: 700;
}

.rsm-forms-search {
    width: 100%;
    min-height: 50px;
    padding: 12px 15px;
    border: 1px solid var(--rsm-gray-300);
    border-radius: 4px;
    background: var(--rsm-white);
    color: var(--rsm-text);
    font: inherit;
}

.rsm-forms-search:focus {
    border-color: var(--rsm-primary);
    outline: 3px solid rgba(0, 66, 37, .18);
    outline-offset: 1px;
}

.rsm-forms-filter-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 14px 0 8px;
}

.rsm-forms-filter {
    min-height: 44px;
    padding: 9px 16px;
    border: 1px solid var(--rsm-primary);
    border-radius: 999px;
    background: transparent;
    color: var(--rsm-primary);
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

.rsm-forms-filter[aria-pressed="true"],
.rsm-forms-filter:hover {
    background: var(--rsm-primary);
    color: var(--rsm-white);
}

.rsm-forms-filter:focus-visible,
.rsm-form-item:focus-visible,
.rsm-form-popular-link:focus-visible {
    outline: 3px solid var(--rsm-gold-dark);
    outline-offset: 3px;
}

.rsm-forms-count {
    color: var(--rsm-text-muted);
    font-size: .92rem;
}

.rsm-forms-popular {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin: 26px 0 34px;
}

.rsm-form-popular-link {
    display: flex;
    align-items: center;
    min-height: 64px;
    padding: 14px 16px;
    border-top: 3px solid var(--rsm-accent);
    background: var(--rsm-white);
    box-shadow: var(--rsm-shadow-sm);
    color: var(--rsm-primary) !important;
    font-weight: 700;
    line-height: 1.3;
}

.rsm-form-popular-link:hover {
    background: var(--rsm-primary);
    color: var(--rsm-white) !important;
    text-decoration: none;
}

.rsm-form-category-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 18px;
}

.rsm-form-category {
    overflow: hidden;
    border: 1px solid var(--rsm-border);
    border-radius: 4px;
    background: var(--rsm-white);
    box-shadow: var(--rsm-shadow-sm);
}

.rsm-form-category[hidden],
.rsm-form-item[hidden] {
    display: none !important;
}

.rsm-form-category h2 {
    margin: 0;
    padding: 0;
    border-bottom: 1px solid var(--rsm-border);
    font-size: clamp(1.2rem, 2vw, 1.5rem);
}

.rsm-form-category-toggle {
    appearance: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 18px 20px 14px;
    border: 0;
    background: transparent;
    color: var(--rsm-primary);
    font: inherit;
    font-weight: inherit;
    text-align: left;
    cursor: default;
}

.rsm-form-category-toggle:focus-visible {
    outline: 3px solid var(--rsm-accent);
    outline-offset: -3px;
}

.rsm-form-category-icon {
    display: none;
    position: relative;
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
}

.rsm-form-category-icon::before,
.rsm-form-category-icon::after {
    content: "";
    position: absolute;
    top: 8px;
    left: 2px;
    width: 14px;
    height: 2px;
    background: currentColor;
}

.rsm-form-category-icon::after {
    transform: rotate(90deg);
    transition: transform .16s ease;
}

.rsm-form-category-toggle[aria-expanded="true"] .rsm-form-category-icon::after {
    transform: rotate(0deg);
}

.rsm-form-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.rsm-form-list > li {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

.rsm-form-list > li::marker {
    content: "";
}

.rsm-form-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    min-height: 54px;
    padding: 11px 20px;
    border-bottom: 1px solid var(--rsm-border);
    color: var(--rsm-primary) !important;
    line-height: 1.35;
}

.rsm-form-list li:last-child .rsm-form-item {
    border-bottom: 0;
}

.rsm-form-item:hover {
    background: var(--rsm-gray-100);
    text-decoration: none;
}

.rsm-form-title {
    font-weight: 700;
}

.rsm-form-meta {
    display: flex;
    flex: 0 0 auto;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 5px;
}

.rsm-form-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 7px;
    border: 1px solid var(--rsm-gray-300);
    border-radius: 999px;
    color: var(--rsm-gray-700);
    font-size: .72rem;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
}

.rsm-form-badge-campus {
    border-color: rgba(0, 66, 37, .28);
    background: rgba(0, 66, 37, .06);
    color: var(--rsm-primary);
}

.rsm-forms-empty {
    margin-top: 20px;
    padding: 18px 20px;
    border: 1px solid var(--rsm-border);
    background: var(--rsm-white);
    color: var(--rsm-text-muted);
}

@media (max-width: 980px) {
    .rsm-forms-popular {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767px) {
    .rsm-form-category-grid,
    .rsm-forms-popular {
        grid-template-columns: 1fr;
    }

    .rsm-form-category-toggle {
        min-height: 56px;
        cursor: pointer;
    }

    .rsm-form-category-icon {
        display: block;
    }

    .rsm-form-category h2:has(.rsm-form-category-toggle[aria-expanded="false"]) + .rsm-form-list {
        display: none;
    }

    .rsm-form-item {
        align-items: flex-start;
        flex-direction: column;
        gap: 8px;
        padding: 14px 16px;
    }

    .rsm-form-meta {
        justify-content: flex-start;
    }

    .rsm-forms-filter {
        flex: 1 1 calc(50% - 8px);
    }
}

/* Campus directory: adapt the RSM Site Content tables to the redesigned palette. */
.rsm-anchor-target {
    display: block;
    position: relative;
    top: -24px;
    visibility: hidden;
}

.rsm-campus-directory {
    margin-top: 18px;
}

.rsm-campus-directory .et_pb_toggle {
    border-color: var(--rsm-border) !important;
    background: var(--rsm-white) !important;
}

.rsm-campus-directory .et_pb_toggle_title {
    color: var(--rsm-primary) !important;
    font-weight: 700;
}

.rsm-campus-directory .rsm-dir {
    --rsm-blue: var(--rsm-primary);
    --rsm-blue-dark: var(--rsm-primary-hover);
    --rsm-rule: var(--rsm-border);
    --rsm-hover: var(--rsm-gray-100);
}

.rsm-campus-directory .rsm-dir-section {
    padding: 18px 0 12px;
}

.rsm-campus-directory .rsm-dir-heading {
    color: var(--rsm-primary) !important;
    font-family: var(--rsm-font-sans) !important;
    font-size: clamp(1.35rem, 2.4vw, 1.8rem) !important;
    margin-bottom: 10px;
}

.rsm-campus-directory .rsm-dir .rsm-dir-table {
    max-width: none;
    font-family: var(--rsm-font-sans);
}

.rsm-campus-directory .rsm-dir-name,
.rsm-campus-directory .rsm-dir-name-link,
.rsm-campus-directory .rsm-dir-website a {
    color: var(--rsm-primary) !important;
}

.rsm-campus-directory .rsm-dir-row:focus-within td,
.rsm-campus-directory .rsm-dir-row:hover td {
    background: var(--rsm-gray-100);
}

/* Dynamic shortcodes emit this marker only when no records exist. */
.rsm-dynamic-empty,
.et_pb_section:has(.rsm-dynamic-empty) {
    display: none !important;
}

@media (max-width: 1024px) {
    .rsm-pillar-band .rsm-grid-3 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 980px) {
    .rsm-editorial-photo {
        min-height: 0;
        padding-top: 300px !important;
    }

    .rsm-editorial-photo::after,
    .rsm-editorial-photo.rsm-section-alt::after {
        z-index: 0;
        inset: 0 0 auto;
        height: 260px;
        background-image: var(--rsm-editorial-image);
        background-position: center;
    }

    .rsm-editorial-photo .et_pb_column {
        width: 100% !important;
    }
}

@media (max-width: 600px) {
    .rsm-page-content-section:not(.rsm-layout-hero):not(.rsm-cta-band):not(.rsm-single-hero):not(.rsm-global-footer) {
        padding-top: 32px !important;
        padding-bottom: 32px !important;
    }

    .rsm-pillar-band .rsm-grid-3,
    .rsm-proof-strip {
        grid-template-columns: 1fr;
    }

    .rsm-proof-strip > div,
    .rsm-service-proof,
    .rsm-inline-proof {
        align-items: flex-start;
        flex-direction: column;
        gap: 8px;
    }

    .rsm-editorial-photo {
        padding-top: 242px !important;
    }

    .rsm-editorial-photo::after,
    .rsm-editorial-photo.rsm-section-alt::after {
        height: 210px;
    }
}

/* ==========================================================================
   Print Styles
   ========================================================================== */
@media print {
    .rsm-sticky-cta,
    .rsm-alert-bar,
    header,
    footer,
    .et_pb_menu,
    .et_mobile_menu {
        display: none !important;
    }
    
    body {
        font-size: 12pt;
        line-height: 1.5;
    }
    
    a {
        text-decoration: none;
        color: var(--rsm-text);
    }
    
    .rsm-card {
        break-inside: avoid;
        box-shadow: none;
        border: 1px solid #ccc;
    }
}
/* ==========================================================================
   iOS / touch corrections
   ~80% of visitors arrive on iPhone Safari. These address concrete
   behaviours of that engine rather than hypothetical device sizes.
   ========================================================================== */

/* --- Safe areas: notches, Dynamic Island, home indicator -------------------
   viewport-fit=cover is set in functions.php. Without these insets the
   fixed admissions CTA collides with the iOS home indicator and the header
   can slide under the sensor housing. */
.rsm-sticky-cta {
    padding-left: max(var(--rsm-space-md), env(safe-area-inset-left));
    padding-right: max(var(--rsm-space-md), env(safe-area-inset-right));
    padding-bottom: max(var(--rsm-space-sm), env(safe-area-inset-bottom));
}

@supports (padding: max(0px)) {
    .rsm-global-header {
        padding-left: max(var(--rsm-container-padding), env(safe-area-inset-left));
        padding-right: max(var(--rsm-container-padding), env(safe-area-inset-right));
    }

    .rsm-global-header {
        padding-top: env(safe-area-inset-top);
    }

    /* Left/right edge inset for landscape, where the notch is on a side. */
    @media (orientation: landscape) {
        .rsm-global-header,
        .rsm-sticky-cta {
            padding-left: max(var(--rsm-container-padding), env(safe-area-inset-left));
            padding-right: max(var(--rsm-container-padding), env(safe-area-inset-right));
        }
    }
}

/* --- Hover states that actually respond to touch --------------------------
   Twelve :hover rules carry all of the interactive affordance on cards and
   buttons. iOS Safari does not reliably fire :hover on tap, so those elements
   gave no feedback at all. Guard pointer-only hover, then apply the same
   styling on :active for touch. */
@media (hover: hover) and (pointer: fine) {
    /* Pointer-only affordance lift for cards; harmless on touch but it can
       stick after a tap, so it stays behind a hover-capable pointer. */
    .rsm-card:hover {
        box-shadow: var(--rsm-shadow-md);
        border-color: var(--rsm-gray-300);
    }

    .rsm-template-current-families .rsm-hub-card:hover {
        transform: translateY(-4px);
        box-shadow: var(--rsm-shadow-lg);
    }
}

/* Touch equivalents of every :hover state in the theme, using the exact same
   declarations so a tap on an iPhone produces the same visual response a
   mouse-over produces on a desktop. */
@media (hover: none), (pointer: coarse) {
    .rsm-btn-primary:active {
        background: var(--rsm-primary-hover);
        border-color: var(--rsm-primary-hover);
        color: var(--rsm-white);
        text-decoration: none;
    }

    .rsm-btn-secondary:active {
        background: var(--rsm-primary);
        color: var(--rsm-white);
        text-decoration: none;
    }

    .rsm-btn-accent:active {
        background: var(--rsm-accent-hover);
        border-color: var(--rsm-accent-hover);
        color: var(--rsm-primary);
        text-decoration: none;
    }

    .rsm-btn-outline:active {
        border-color: var(--rsm-gray-400);
        background: var(--rsm-gray-100);
        text-decoration: none;
    }

    .rsm-card:active {
        box-shadow: var(--rsm-shadow-md);
        border-color: var(--rsm-gray-300);
    }

    .rsm-template-current-families .rsm-hub-card:active {
        transform: translateY(-2px);
        box-shadow: var(--rsm-shadow-lg);
    }

    .rsm-template-current-families .rsm-accordion-header:active {
        background: var(--rsm-gray-100);
    }

    .et_pb_button_0.et_pb_bg_layout_light:active {
        background: var(--rsm-primary-hover) !important;
        border-color: var(--rsm-primary-hover) !important;
    }

    .rsm-forms-filter[aria-pressed="true"]:active,
    .rsm-forms-filter:active {
        background: var(--rsm-primary);
        color: var(--rsm-white);
    }

    .rsm-form-popular-link:active {
        background: var(--rsm-primary);
        color: var(--rsm-white) !important;
        text-decoration: none;
    }

    .rsm-form-item:active {
        background: var(--rsm-gray-100);
        text-decoration: none;
    }

    a:active {
        color: var(--rsm-primary-hover);
    }
}

/* --- Tap targets ---------------------------------------------------------
   .rsm-form-badge was 24px tall, well under the 44px minimum, which makes
   the forms filters a mis-tap generator on a phone. */
.rsm-form-badge {
    min-height: 44px;
    min-width: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

/* Supporting text on the quick-action cards was 11.7px, small for a
   high-traffic band that parents read on the go. */
.rsm-quick-action-copy small {
    font-size: 0.8rem;
}

/* --- Reduced motion ------------------------------------------------------
   iOS exposes Reduce Motion system-wide, so this is not an edge case. */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* --- Text sizing ---------------------------------------------------------
   Pin text-size-adjust so Safari does not inflate body copy in landscape.
   Move this to core so it is not lost on a child-theme reset. */
html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

/* ==========================================================================
   Absence report form
   ========================================================================== */

.rsm-absence-form {
    max-width: 640px;
}

/* Honeypot: off-screen but not display:none, which some bots skip. */
.rsm-hp-field {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.rsm-absence-form .rsm-form-group {
    margin-bottom: var(--rsm-space-md);
}

.rsm-absence-form .rsm-form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--rsm-space-md);
}

@media (max-width: 600px) {
    .rsm-absence-form .rsm-form-row {
        grid-template-columns: 1fr;
    }
}

.rsm-form-divider {
    border: 0;
    border-top: 1px solid var(--rsm-border);
    margin: var(--rsm-space-lg) 0;
}

.rsm-form-section-heading {
    font-weight: 700;
    color: var(--rsm-primary);
    margin: 0 0 var(--rsm-space-md);
}

.rsm-form-actions {
    margin-top: var(--rsm-space-lg);
}

.rsm-form-actions .rsm-btn {
    width: 100%;
    min-height: 48px;
}

.rsm-form-note {
    margin-top: var(--rsm-space-md);
    font-size: var(--rsm-text-sm);
    color: var(--rsm-text-muted);
}

.rsm-alert {
    padding: var(--rsm-space-md);
    border-radius: var(--rsm-radius-md);
    margin-bottom: var(--rsm-space-lg);
    border: 1px solid transparent;
}

.rsm-alert p {
    margin: 0;
}

.rsm-alert-success {
    background: #ecfdf5;
    border-color: #6ee7b7;
    color: #065f46;
}

.rsm-alert-error {
    background: #fef2f2;
    border-color: #fca5a5;
    color: #991b1b;
}

/* Touch: the submit button is the one control on this page, so give it the
   same active feedback as the rest of the theme. */
@media (hover: none), (pointer: coarse) {
    .rsm-form-actions .rsm-btn:active {
        background: var(--rsm-primary-hover);
    }
}


/* ==========================================================================
   Footer link index
   A deep, grouped index so the pages the flat nav cannot reach stay findable.
   Reads as a sitemap rather than a menu: no dropdowns, no hover-reveals.
   ========================================================================== */

.rsm-footer-index {
    border-top: 1px solid rgba(255, 255, 255, 0.3);
    margin-top: var(--rsm-space-2xl);
    padding-top: var(--rsm-space-xl);
    text-align: left;
}

.rsm-footer-index__heading {
    font-size: var(--rsm-text-lg);
    font-weight: 700;
    /* The footer is a dark band, so this block uses the footer's light
       palette rather than the page's default text tokens. */
    color: var(--rsm-white);
    margin: 0 0 var(--rsm-space-lg);
}

.rsm-footer-index__grid {
    display: grid;
    /* See .rsm-footer-contact__campuses: Divi's footer wrapper can collapse
       grid children to zero width without an explicit size. */
    width: 100%;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--rsm-space-lg) var(--rsm-space-md);
}

@media (max-width: 980px) {
    .rsm-footer-index__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
    .rsm-footer-index__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 480px) {
    .rsm-footer-index__grid { grid-template-columns: 1fr; }
}

.rsm-footer-index__title {
    font-size: var(--rsm-text-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: rgba(255, 255, 255, 0.72);
    margin: 0 0 var(--rsm-space-sm);
}

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

.rsm-footer-index__list li {
    margin-bottom: 2px;
}

.rsm-footer-index__list a {
    display: inline-block;
    padding: 4px 0;
    font-size: var(--rsm-text-sm);
    /* Matches the rest of the footer links (--rsm-gold-light, 7.42:1). */
    color: var(--rsm-gold-light);
    text-decoration: none;
    text-underline-offset: 0.18em;
}

.rsm-footer-index__list a:focus-visible {
    color: var(--rsm-white);
}

/* Comfortable tap target on touch. */
@media (hover: none), (pointer: coarse) {
    .rsm-footer-index__list a { padding: 8px 0; }
    .rsm-footer-index__list a:active {
        color: var(--rsm-white);
        text-decoration: underline;
    }
}

@media (hover: hover) and (pointer: fine) {
    .rsm-footer-index__list a:hover {
        color: var(--rsm-white);
        text-decoration: underline;
    }
}


/* ==========================================================================
   Footer campus contact
   Restores the addresses, phone numbers, office email and office hours that
   the rebuild dropped from the footer. Colours follow the footer's dark
   band palette (white text, gold-light links), not the page defaults.
   ========================================================================== */

.rsm-footer-contact {
    border-top: 1px solid rgba(255, 255, 255, 0.3);
    margin-top: var(--rsm-space-xl);
    padding-top: var(--rsm-space-lg);
}

.rsm-footer-contact__campuses {
    display: grid;
    /* Explicit width: inside Divi's builder-5 footer the grid otherwise
       computes to 0px and collapses, because the surrounding wrapper does not
       establish a definite inline size for a grid child. */
    width: 100%;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--rsm-space-lg) var(--rsm-space-md);
}

@media (max-width: 980px) {
    .rsm-footer-contact__campuses { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
    .rsm-footer-contact__campuses { grid-template-columns: 1fr; }
}

.rsm-footer-contact__name {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--rsm-space-xs);
    font-size: var(--rsm-text-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: rgba(255, 255, 255, 0.72);
    margin: 0 0 var(--rsm-space-sm);
}

.rsm-footer-contact__grades {
    font-size: 0.85em;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--rsm-gold-light);
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-radius: 999px;
    padding: 1px 8px;
}

.rsm-footer-contact__address {
    font-style: normal;
    font-size: var(--rsm-text-sm);
    line-height: 1.6;
    color: var(--rsm-white);
    margin: 0 0 var(--rsm-space-sm);
}

.rsm-footer-contact__lines {
    font-size: var(--rsm-text-sm);
    line-height: 1.6;
    margin: 0 0 2px;
}

.rsm-footer-contact__lines a {
    color: var(--rsm-gold-light);
    text-decoration: none;
    text-underline-offset: 0.18em;
}

.rsm-footer-contact__phone {
    font-weight: 600;
}

.rsm-footer-contact__fax {
    display: block;
    font-size: 0.92em;
    color: rgba(255, 255, 255, 0.6);
}

.rsm-footer-contact__hours {
    font-size: var(--rsm-text-sm);
    color: var(--rsm-white);
    margin: 0 0 var(--rsm-space-sm);
}

/* Phone and email are the tap targets that matter most on a phone, so give
   them full-width padding rather than inline-sized hit areas. */
@media (hover: none), (pointer: coarse) {
    .rsm-footer-contact__lines a {
        display: inline-block;
        padding: 6px 0;
    }
}

@media (hover: hover) and (pointer: fine) {
    .rsm-footer-contact__lines a:hover,
    .rsm-footer-contact__phone:hover {
        color: var(--rsm-white);
        text-decoration: underline;
    }
}

.rsm-footer-social {
    /* Divi's `.et-l--footer ul` rule is an ID selector and forces
       list-style-type: disc with padding-left. Class specificity alone loses,
       so reset the marker on both the list and its items explicitly, matching
       how .rsm-form-list handles the same conflict. */
    list-style: none !important;
    margin: var(--rsm-space-sm) 0 0;
    padding: 0 !important;
    display: flex;
    gap: var(--rsm-space-sm);
}

.rsm-footer-social li {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

.rsm-footer-social li::marker {
    content: "";
}

.rsm-footer-social a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border: 1px solid rgba(255, 255, 255, 0.3);
    border-radius: 50%;
    transition: background-color 0.15s ease, border-color 0.15s ease;
}

.rsm-footer-social__icon {
    display: block;
    width: 18px;
    height: 18px;
    fill: currentColor;
    color: var(--rsm-white);
}

@media (hover: hover) and (pointer: fine) {
    .rsm-footer-social a:hover {
        background-color: rgba(255, 255, 255, 0.12);
        border-color: var(--rsm-gold-light);
    }
}

@media (hover: none), (pointer: coarse) {
    .rsm-footer-social a:active {
        background-color: rgba(255, 255, 255, 0.16);
    }
}

/* ==========================================================================
   Footer legal line
   Copyright and legal links, rendered last in the footer.
   ========================================================================== */

.rsm-footer-legal {
    border-top: 1px solid rgba(255, 255, 255, 0.3);
    margin-top: var(--rsm-space-xl);
    padding-top: var(--rsm-space-md);
    padding-bottom: var(--rsm-space-sm);
}

.rsm-footer-legal__line {
    margin: 0;
    text-align: center;
}

.rsm-footer-legal__line small {
    font-size: var(--rsm-text-sm);
    color: rgba(255, 255, 255, 0.72);
}

.rsm-footer-legal__line a {
    color: var(--rsm-gold-light);
    text-decoration: none;
    text-underline-offset: 0.18em;
}

@media (hover: hover) and (pointer: fine) {
    .rsm-footer-legal__line a:hover {
        color: var(--rsm-white);
        text-decoration: underline;
    }
}

/* ==========================================================================
   Anchor scroll offset
   Jump links (hero CTAs, footer links, legacy redirects) land with the target
   flush against the top of the viewport, so the heading sits under the browser
   chrome and the section below the fold. scroll-margin-top reserves space
   above the target so the whole section is visible once scrolled to.

   --rsm-anchor-offset is generous enough to clear the site header on both
   desktop and iPhone, where Safari's chrome is taller.
   ========================================================================== */

:root {
    --rsm-anchor-offset: 7rem;
}

@media (max-width: 980px) {
    :root {
        --rsm-anchor-offset: 9.5rem;
    }
}

/* The in-page anchors (#visit, #process, #tuition, #aid) are plain divs
   placed mid-section inside a Divi module. Jumping to them lands the visitor
   in the middle of the content with the section heading still above the fold.

   scroll-margin-top on the anchor cannot fix that, because it offsets from the
   anchor rather than from the visual start of the block containing it. So the
   offset is applied to the enclosing section instead: :has() promotes the
   section that contains the anchor, and the anchor itself gets no offset so it
   does not compound. */

:is(#visit, #process, #tuition, #aid, #admissions, #faith, #student-life) {
    scroll-margin-top: 0;
}

/* Promote the section that wraps a targeted anchor and give it the offset.
   :has() is supported in every current browser including iOS Safari 15.4+. */
.et_pb_section:has(> .et_pb_row > .et_pb_column :is(#visit, #process, #tuition, #aid)),
.rsm-page-content-section:has(:is(#visit, #process, #tuition, #aid)) {
    scroll-margin-top: var(--rsm-anchor-offset);
}

/* Fallback for engines without :has() - still better than nothing, since it
   at least clears the sticky-free header on the anchors themselves. */
@supports not selector(:has(*)) {
    #visit,
    #process,
    #tuition,
    #aid {
        scroll-margin-top: var(--rsm-space-3xl);
    }
}

[id^="rsm-"]:target,
.rsm-page-content-section[id] {
    scroll-margin-top: var(--rsm-anchor-offset);
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto !important;
    }
}

/* ==========================================================================
   Tour request form - align with the Report an Absence form
   --------------------------------------------------------------------------
   The /tour/ page is built from an older Divi layout, so its contact form
   still carries Divi defaults: Montserrat inputs on a grey (#eee) fill with
   no border radius, and a small gold submit button. The absence form uses
   the theme's own .rsm-form-* treatment. This applies the theme treatment to
   the Divi form on page 4987 so both forms look and behave alike.

   Scoped to .page-id-4987 so no other Divi contact form on the site is
   affected.
   ========================================================================== */

.page-id-4987 .et_pb_contact_form {
    display: block;
    max-width: 640px;
    margin: 0;
    padding: 0;
    background: transparent;
}

/* --- Fields ---------------------------------------------------------------
   Divi lays fields out with flex; force a single column so each field gets
   the same measure as the absence form's stacked groups. */
.page-id-4987 .et_pb_contact_form .et_pb_contact_field {
    display: block;
    width: 100% !important;
    margin: 0 0 var(--rsm-space-md) !important;
    padding: 0 !important;
    float: none !important;
}

/* --- Labels --------------------------------------------------------------- */
.page-id-4987 .et_pb_contact_form .et_pb_contact_form_label {
    display: block;
    margin: 0 0 var(--rsm-space-xs);
    /* The absence form's labels inherit Montserrat from body; Divi resets the
       family on the form, so set it explicitly. --rsm-font-body does not
       exist as a token; body copy is Montserrat site-wide. */
    font-family: Montserrat, Helvetica, Arial, sans-serif;
    font-size: var(--rsm-text-sm);
    font-weight: 500;
    color: var(--rsm-text);
    line-height: 1.5;
}

/* --- Inputs, select, textarea -------------------------------------------- */
.page-id-4987 .et_pb_contact_form input.input,
.page-id-4987 .et_pb_contact_form input[type="text"],
.page-id-4987 .et_pb_contact_form input[type="email"],
.page-id-4987 .et_pb_contact_form input[type="tel"],
.page-id-4987 .et_pb_contact_form input[type="date"],
.page-id-4987 .et_pb_contact_form select,
.page-id-4987 .et_pb_contact_form textarea {
    width: 100%;
    padding: var(--rsm-space-sm) var(--rsm-space-md);
    font-family: var(--rsm-font-sans);
    font-size: var(--rsm-text-base);
    line-height: 1.5;
    color: var(--rsm-text);
    background-color: var(--rsm-bg);
    border: 1px solid var(--rsm-border);
    border-radius: var(--rsm-radius-md);
    box-shadow: none;
    transition: all var(--rsm-transition-fast);
    -webkit-appearance: none;
    appearance: none;
}

.page-id-4987 .et_pb_contact_form select {
    /* Restore a native dropdown arrow, which -webkit-appearance:none removes. */
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%236B7280' d='M8 11.5 2.5 6h11z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right var(--rsm-space-md) center;
    background-size: 12px 12px;
    padding-right: var(--rsm-space-2xl);
}

.page-id-4987 .et_pb_contact_form input.input:focus,
.page-id-4987 .et_pb_contact_form select:focus,
.page-id-4987 .et_pb_contact_form textarea:focus {
    border-color: var(--rsm-primary);
    box-shadow: 0 0 0 3px rgba(0, 66, 37, 0.1);
    outline: none;
}

.page-id-4987 .et_pb_contact_form ::placeholder {
    color: var(--rsm-text-muted);
    opacity: 1;
}

/* Divi flags required fields; make that visible the same way the absence
   form does rather than relying on Divi's asterisk styling. */
.page-id-4987 .et_pb_contact_form
    .et_pb_contact_field[data-required_mark="required"]
    .et_pb_contact_form_label::after {
    content: " *";
    color: var(--rsm-primary);
}

/* --- Submit button --------------------------------------------------------
   Divi's button is small and gold; match the absence form's full-width
   primary button, which is also a far better tap target on a phone. */
.page-id-4987 .et_pb_contact_form .et_contact_bottom_container {
    display: block;
    width: 100%;
    margin: var(--rsm-space-lg) 0 0;
}

.page-id-4987 .et_pb_contact_form button.et_pb_contact_submit,
.page-id-4987 .et_pb_contact_form button.et_pb_button {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 48px;
    margin: 0;
    padding: var(--rsm-space-sm) var(--rsm-space-md);
    font-family: var(--rsm-font-sans);
    font-size: var(--rsm-text-base);
    font-weight: 600;
    letter-spacing: 0.025em;
    color: var(--rsm-white);
    background-color: var(--rsm-primary);
    border: 2px solid var(--rsm-primary);
    border-radius: var(--rsm-radius-md);
    cursor: pointer;
    transition: all var(--rsm-transition-fast);
}

.page-id-4987 .et_pb_contact_form button.et_pb_contact_submit:hover,
.page-id-4987 .et_pb_contact_form button.et_pb_button:hover {
    background-color: var(--rsm-primary-hover);
    border-color: var(--rsm-primary-hover);
    color: var(--rsm-white);
}

/* Touch feedback: iOS does not reliably fire :hover. */
@media (hover: none), (pointer: coarse) {
    .page-id-4987 .et_pb_contact_form button.et_pb_contact_submit:active,
    .page-id-4987 .et_pb_contact_form button.et_pb_button:active {
        background-color: var(--rsm-primary-hover);
    }
}

/* --- Divi hidden spam fields --------------------------------------------- */
.page-id-4987 .et_pb_contact_form .et_pb_contact_form_field_hidden,
.page-id-4987 .et_pb_contact_form .et_pb_contact_field[data-field_type="hidden"] {
    display: none;
}

/* iOS minimum: a focus on anything under 16px zooms the viewport. */
@media (max-width: 767px) {
    .page-id-4987 .et_pb_contact_form input.input,
    .page-id-4987 .et_pb_contact_form select,
    .page-id-4987 .et_pb_contact_form textarea {
        font-size: 16px;
    }
}
/* Divi's own rule for contact-form inputs is
   `.et_pb_contact_form_0.et_pb_contact_form_container .input:not(...)`,
   a two-class selector, so it outranks a single-class scope. Mirror its
   specificity so the theme font actually applies. */
.page-id-4987 .et_pb_contact_form.et_pb_contact_form_container
    .input:not([type="checkbox"]):not([type="radio"]) {
    font-family: var(--rsm-font-sans);
}

.page-id-4987 .et_pb_contact_form.et_pb_contact_form_container select,
.page-id-4987 .et_pb_contact_form.et_pb_contact_form_container textarea {
    font-family: var(--rsm-font-sans);
}

/* Divi's contact-form input font rule is scoped as
   `.et_pb_contact_form_0.et_pb_contact_form_container .input:not([type=...])`
   plus an id-level container class on the page, which together outrank any
   class-based override no matter how many classes are stacked. Rather than
   keep escalating specificity, the theme font is applied with !important on
   this one declaration, which is the correct tool for beating a vendor rule
   of unknown depth. */
.page-id-4987 .et_pb_contact_form input.input,
.page-id-4987 .et_pb_contact_form select,
.page-id-4987 .et_pb_contact_form textarea {
    font-family: var(--rsm-font-sans) !important;
}

/* ============================================================
   RSM SPRINT #1 — Home hero rebuild.
   Headline reads as a deliberate four-line word stack with gold
   period accents (content carries .rsm-hero-dot spans); the flat
   98% green wash becomes a directional scrim so the copy stays
   high-contrast while the students' faces stay visible.
   Scope: homepage (page 11749) hero only.
   ============================================================ */
.page-id-11749 .rsm-home-hero {
    background-image:
        linear-gradient(105deg,
            rgba(0, 66, 37, 0.93) 0%,
            rgba(0, 66, 37, 0.86) 40%,
            rgba(0, 66, 37, 0.32) 62%,
            rgba(0, 66, 37, 0) 80%),
        url("/wp-content/uploads/2022/11/hero-c.jpg") !important;
    background-size: cover !important;
    background-position: 68% center !important;
}
/* Shared gutter: the header template's section carries 24px side padding
   and a narrower row than every content section, so the logo never lined
   up with page content on any page. Strip the padding and use the same
   90% row the content sections already use. */
.rsm-global-header {
    padding-left: 0 !important;
    padding-right: 0 !important;
}
.rsm-global-header .et_pb_row {
    width: 90% !important;
    max-width: 1400px !important;
}
.page-id-11749 .rsm-home-hero h1 {
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.05;
    text-wrap: balance;
}
.page-id-11749 .rsm-home-hero h1 .rsm-hero-dot {
    color: var(--rsm-gold);
}
/* Keep the subhead on the dark half of the scrim, never over faces. */
.page-id-11749 .rsm-home-hero .et_pb_text_0 p:not(.rsm-eyebrow) {
    max-width: 36em;
}
/* Four lines must fit one screen on phones: cap the size there. */
@media (max-width: 767px) {
    .page-id-11749 .rsm-home-hero h1 {
        font-size: clamp(2.3rem, 10.5vw, 3.05rem);
    }
}

/* ============================================================
   RSM SPRINT #2 — Mobile sticky action bar (phones only).
   Apply / Tour pinned above the home indicator once the hero
   is out of view; hidden while the footer is on screen so the
   two never fight. Safe-area aware, 48px targets, reduced
   motion respected, dark background so it stays legible over
   any section color.
   ============================================================ */
#rsm-mobar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 99998;
    display: none;
    gap: 10px;
    padding: 10px 16px;
    padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
    background: rgba(0, 42, 24, 0.97);
    box-shadow: 0 -6px 24px rgba(0, 0, 0, 0.35);
    transform: translateY(110%);
    transition: transform 0.25s ease;
}
@supports (padding: max(0px)) {
    #rsm-mobar {
        padding-left: max(16px, env(safe-area-inset-left, 0px));
        padding-right: max(16px, env(safe-area-inset-right, 0px));
    }
}
@media (max-width: 767px) {
    #rsm-mobar { display: flex; }
}
#rsm-mobar.rsm-mobar-on { transform: translateY(0); }
/* While the bar is up, reserve its height so cards/links can scroll clear of it. */
body.rsm-mobar-pad { padding-bottom: calc(88px + env(safe-area-inset-bottom, 0px)); }
@media (prefers-reduced-motion: reduce) {
    #rsm-mobar { transition: none; }
}
#rsm-mobar a {
    flex: 1;
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
    font-weight: 700;
    font-size: 1rem;
    text-decoration: none;
    letter-spacing: 0.01em;
}
#rsm-mobar .rsm-mobar-cta {
    background: var(--rsm-gold);
    color: var(--rsm-green-dark);
}
#rsm-mobar .rsm-mobar-alt {
    background: transparent;
    color: #fff;
    border: 2px solid rgba(255, 255, 255, 0.85);
}
#rsm-mobar a:focus-visible {
    outline: 3px solid var(--rsm-gold-light);
    outline-offset: 2px;
}
@media print {
    #rsm-mobar { display: none !important; }
}

/* ============================================================
   RSM SPRINT #4 — Admissions application stepper.
   The five-step process was a plain <ol> with no way to act on
   any step. It is now numbered cards, each actionable step
   carrying its own inline CTA (email, FACTS, tour, aid).
   Scope: admissions page (11751).
   ============================================================ */
.page-id-11751 ol.rsm-steps {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 12px;
}
.page-id-11751 ol.rsm-steps li {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    background: #fff;
    border: 1px solid var(--rsm-border);
    border-radius: 12px;
    padding: 16px 20px;
    min-height: 48px;
}
.page-id-11751 ol.rsm-steps li + li { position: relative; }
.page-id-11751 .rsm-step-n {
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--rsm-green-dark);
    color: var(--rsm-gold);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 1.05rem;
}
.page-id-11751 .rsm-step-body { flex: 1 1 auto; }
.page-id-11751 .rsm-step-body strong { color: var(--rsm-green-dark); }
.page-id-11751 .rsm-step-cta {
    display: inline-block;
    font-weight: 700;
    color: var(--rsm-green);
    text-decoration: underline;
    text-underline-offset: 3px;
    white-space: nowrap;
    padding: 6px 2px;
}
@media (hover: hover) and (pointer: fine) {
    .page-id-11751 ol.rsm-steps li { transition: border-color 0.15s ease, box-shadow 0.15s ease; }
    .page-id-11751 ol.rsm-steps li:hover {
        border-color: var(--rsm-gold);
        box-shadow: 0 4px 14px rgba(0, 66, 37, 0.08);
    }
    .page-id-11751 .rsm-step-cta:hover { color: var(--rsm-green-dark); }
}
@media (max-width: 767px) {
    .page-id-11751 ol.rsm-steps li { padding: 14px 16px; }
    .page-id-11751 .rsm-step-cta { display: block; margin-top: 8px; padding: 10px 0; }
}

/* ============================================================
   RSM SPRINT #5 — Event cards: one tap target + calendar action.
   The cover link makes the whole card tappable (48px+), and the
   JS-added "+ Add to calendar" becomes a real button. Actions
   in the card footer sit above the cover so they stay clickable.
   ============================================================ */
.rsm-event-card { position: relative; }
.rsm-event-card .rsm-card-cover {
    position: absolute;
    inset: 0;
    z-index: 1;
}
.rsm-event-card .rsm-event-footer,
.rsm-event-card .rsm-card-title a { position: relative; z-index: 2; }
.rsm-event-card .rsm-card-title a { text-decoration: none; }
@media (hover: hover) and (pointer: fine) {
    .rsm-event-card { transition: box-shadow 0.15s ease, transform 0.15s ease; }
    .rsm-event-card:hover {
        box-shadow: 0 10px 28px rgba(0, 66, 37, 0.14);
        transform: translateY(-2px);
    }
}
.rsm-event-card .rsm-cal-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 8px 16px;
    margin-left: 10px;
    border-radius: 8px;
    background: var(--rsm-green-dark);
    color: #fff;
    font-weight: 600;
    text-decoration: none;
}
@media (max-width: 767px) {
    .rsm-event-card .rsm-cal-btn { margin: 10px 0 0; width: 100%; }
    .rsm-event-card .rsm-event-footer .rsm-btn { width: 100%; min-height: 44px; }
}

/* ============================================================
   RSM SPRINT #6 — Heritage band replacing the empty testimonial
   section (no testimonials existed; the shortcode rendered
   nothing and the section was hidden). Dates come from the
   school's own published history. The section becomes visible
   and carries real social proof by history instead of quote.
   ============================================================ */
.page-id-11749 .et_pb_section_5 { display: block !important; }
.page-id-11749 .rsm-heritage {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
    margin-top: 26px;
}
.page-id-11749 .rsm-heritage-item {
    text-align: center;
    padding: 22px 16px;
    border: 1px solid var(--rsm-border);
    border-radius: 12px;
    background: var(--rsm-white);
}
.page-id-11749 .rsm-heritage-num {
    display: block;
    font-size: 2.1rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--rsm-green-dark);
    line-height: 1.1;
}
.page-id-11749 .rsm-heritage-item p {
    margin: 10px 0 0;
    color: var(--rsm-text-muted);
    font-size: 0.95rem;
}
@media (max-width: 767px) {
    .page-id-11749 .rsm-heritage { grid-template-columns: 1fr; }
    .page-id-11749 .rsm-heritage-num { font-size: 1.8rem; }
}

/* ============================================================
   RSM SPRINT #7 — Motion system.
   Initial hidden state is applied ONLY when JS marked the body
   (.rsm-motion), so no-JS users see the final layout. All
   motion is removed for prefers-reduced-motion.
   ============================================================ */
body.rsm-motion [data-rsmrv] {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.55s ease, transform 0.55s ease;
    will-change: opacity, transform;
}
body.rsm-motion [data-rsmrv].rsm-in {
    opacity: 1;
    transform: none;
    /* RSM SPRINT #18: drop the compositor hint once revealed. A lingering
       will-change layer kept the hero headline unpainted after the reveal
       class flipped — invisible H1 until an unrelated repaint. */
    will-change: auto;
}
@media (prefers-reduced-motion: reduce) {
    body.rsm-motion [data-rsmrv] {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

/* ============================================================
   SPRINT #8 — campaign card mobile fit (Montserrat is wider
   than the old fallback; stack figures, contain the CTA).
   ============================================================ */
@media (max-width: 479px) {
    .rsm-vision-progress .rsm-grid-3 {
        grid-template-columns: 1fr;
        gap: var(--rsm-space-sm);
        text-align: center;
    }
    .rsm-vision-progress .rsm-text-3xl {
        font-size: 1.6rem;
        letter-spacing: -0.01em;
    }
    .rsm-vision-progress a.rsm-btn {
        display: block;
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
        text-align: center;
    }
}

/* Same card, button label fit at 390px: reclaim side padding. */
@media (max-width: 479px) {
    .rsm-vision-progress a.rsm-btn {
        font-size: 0.95rem;
        padding-left: 1rem;
        padding-right: 1rem;
        white-space: nowrap;
    }
}

/* ============================================================
   SPRINT #9 — live Facebook timeline widget
   ============================================================ */
/* The plugin's reserved feed slot was hardcoded tall+empty; let it fit. */
.rsm-facebook-feed { height: auto !important; min-height: 0; }
#rsm-fb-widget {
    max-width: 312px;
    margin: 0 auto;
    padding: 4px;
    background: var(--rsm-white, #fff);
    border: 1px solid var(--rsm-border);
    border-radius: var(--rsm-radius-md);
}
#rsm-fb-widget iframe { display: block; margin: 0 auto; max-width: 100%; min-height: 0 !important; height: 130px !important; }
#rsm-fb-widget { min-height: 0; }
@media (max-width: 479px) {
    #rsm-fb-widget { max-width: 100%; }
}

/* Plugin panel fix: heading row overflowed the panel by ~13px; let it wrap. */
.rsm-social-heading { flex-wrap: wrap; gap: 6px 12px; max-width: 100%; }
.rsm-social-heading > * { min-width: 0; }

/* ============================================================
   SPRINT #10 — skip link (hidden until focused)
   ============================================================ */
.rsm-skip-link {
    position: absolute;
    left: 12px; top: -64px;
    z-index: 99999;
    padding: 12px 20px;
    background: var(--rsm-gold, #C5B358);
    color: #12331f;
    font-weight: 700;
    border-radius: 0 0 8px 8px;
    transition: top 0.15s ease;
}
.rsm-skip-link:focus { top: 0; }

/* ============================================================
   SPRINT #11 — events page date awareness
   ============================================================ */
.rsm-ev-chip {
    display: inline-block;
    margin-left: 8px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    vertical-align: middle;
    align-self: flex-start;   /* parents are flex-column: don't stretch */
    flex: 0 0 auto;
    width: fit-content;
}
.rsm-ev-chip--soon   { background: var(--rsm-gold, #C5B358); color: #12331f; }
.rsm-ev-chip--future { background: #e7efe9; color: #004225; }
.rsm-ev-chip--past   { background: #eee; color: #666; }
.rsm-ev-past { opacity: 0.62; filter: grayscale(0.45); }
a.rsm-ev-cal {
    display: inline-block;
    margin-left: 10px;
    font-size: 0.8rem;
    font-weight: 700;
    color: #004225;
    text-decoration: underline;
    padding: 8px 0;
}
@media (max-width: 767px) { a.rsm-ev-cal { margin-left: 0; display: block; } }

/* ============================================================
   SPRINT #13 — tuition planner card
   ============================================================ */
.rsm-plan-card {
    max-width: 680px;
    margin: var(--rsm-space-xl) auto;
    padding: var(--rsm-space-xl);
    background: var(--rsm-white, #fff);
    border: 1px solid var(--rsm-border);
    border-radius: var(--rsm-radius-lg);
    box-shadow: 0 10px 34px rgba(0, 0, 0, 0.08);
}
.rsm-plan-card h3 { margin: 4px 0 6px; color: var(--rsm-green-dark, #004225); font-size: 1.5rem; }
.rsm-plan-sub { color: var(--rsm-text-muted, #555); margin: 0 0 var(--rsm-space-lg); }
.rsm-plan-row { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 10px 0; border-bottom: 1px dashed var(--rsm-border); }
.rsm-plan-lbl { font-weight: 700; color: var(--rsm-green-dark, #004225); }
.rsm-plan-lbl em { font-style: normal; font-weight: 400; color: var(--rsm-text-muted, #555); margin-left: 6px; }
.rsm-plan-ctl { display: inline-flex; align-items: center; gap: 10px; }
.rsm-plan-ctl button {
    width: 44px; height: 44px; border-radius: 50%;
    border: 1px solid var(--rsm-green-dark, #004225); background: #fff;
    font-size: 1.3rem; font-weight: 700; color: var(--rsm-green-dark, #004225); cursor: pointer;
}
.rsm-plan-ctl b { min-width: 2ch; text-align: center; font-size: 1.2rem; }
.rsm-plan-total { display: flex; gap: var(--rsm-space-xl); margin: var(--rsm-space-lg) 0; flex-wrap: wrap; }
.rsm-plan-big { display: block; font-size: 1.9rem; font-weight: 800; letter-spacing: -0.02em; color: var(--rsm-green-dark, #004225); }
.rsm-plan-lbl2 { font-size: 0.8rem; color: var(--rsm-text-muted, #555); }
.rsm-plan-aid { background: #f4f1e2; border-left: 4px solid var(--rsm-gold, #C5B358); padding: 12px 16px; border-radius: 6px; font-size: 0.92rem; }
.rsm-plan-ctas { display: flex; gap: 12px; margin-top: var(--rsm-space-lg); flex-wrap: wrap; }
@media (max-width: 479px) {
    .rsm-plan-card { padding: var(--rsm-space-lg); }
    .rsm-plan-total { gap: var(--rsm-space-lg); }
}

/* ============================================================
   SPRINT #14 — site search: overlay + result cards
   ============================================================ */
.rsm-search-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; margin-left: 10px;
    border: 0; border-radius: 50%; background: transparent;
    color: var(--rsm-green-dark, #004225); cursor: pointer;
}
.rsm-search-btn:hover { background: rgba(0, 66, 37, 0.08); }
#rsm-search-ov {
    position: fixed; inset: 0; z-index: 99990;
    background: rgba(10, 30, 20, 0.72);
    display: flex; align-items: flex-start; justify-content: center;
    padding: 12vh 16px 16px;
}
#rsm-search-ov[hidden] { display: none; }
.rsm-search-form {
    position: relative; width: 100%; max-width: 640px;
    background: #fff; border-radius: 14px; padding: 20px;
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.35);
    display: grid; grid-template-columns: 1fr auto; gap: 10px;
}
.rsm-search-form input[type=search] {
    grid-column: 1; font-size: 1.15rem; padding: 14px 16px;
    border: 1px solid var(--rsm-border); border-radius: 8px; font-family: inherit;
}
.rsm-search-go {
    padding: 14px 22px; border: 0; border-radius: 8px; cursor: pointer;
    background: var(--rsm-green-dark, #004225); color: #fff; font-weight: 700; font-family: inherit;
}
.rsm-search-x {
    position: absolute; top: -14px; right: -14px;
    width: 36px; height: 36px; border-radius: 50%; border: 0;
    background: #fff; color: #333; font-size: 1.3rem; cursor: pointer;
    box-shadow: 0 4px 14px rgba(0,0,0,.3);
}
.rsm-search-hint { grid-column: 1 / -1; margin: 4px 0 0; font-size: 0.78rem; color: #777; }
body.rsm-ov-open { overflow: hidden; }

.rsm-sr-count { margin: 0 0 var(--rsm-space-lg); }
.rsm-sr-h1 { color: var(--rsm-green-dark, #004225); font-size: 1.6rem; }
.rsm-sr-h1 small { color: var(--rsm-text-muted, #555); font-weight: 400; }
.rsm-sr-card {
    background: #fff; border: 1px solid var(--rsm-border); border-radius: 10px;
    padding: var(--rsm-space-lg); margin: 0 0 14px;
    box-shadow: 0 4px 16px rgba(0,0,0,.05);
}
.rsm-sr-title { display: block; font-size: 1.15rem; font-weight: 700; color: var(--rsm-green-dark, #004225); text-decoration: none; }
.rsm-sr-snip { margin: 8px 0 6px; color: var(--rsm-text-muted, #555); }
.rsm-sr-meta { font-size: 0.75rem; text-transform: uppercase; letter-spacing: .05em; color: #888; }

/* ============================================================
   SPRINT #15 — homepage "Next up at RSM" strip
   ============================================================ */
.rsm-nextup {
    max-width: 1400px; margin: 0 auto;
    padding: var(--rsm-space-2xl, 40px) 5% var(--rsm-space-2xl, 40px);
}
.rsm-nextup-head { display: flex; align-items: baseline; gap: 18px; flex-wrap: wrap; margin-bottom: var(--rsm-space-lg); }
.rsm-nextup-head h2 { margin: 0; color: var(--rsm-green-dark, #004225); font-size: 1.7rem; }
.rsm-nextup-all { margin-left: auto; font-weight: 700; color: var(--rsm-gold, #C5B358); text-decoration: none; }
.rsm-nextup-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; }
.rsm-nextup-card {
    display: flex; align-items: center; gap: 16px;
    background: #fff; border: 1px solid var(--rsm-border); border-radius: 12px;
    padding: 16px 18px; text-decoration: none;
    box-shadow: 0 6px 20px rgba(0,0,0,.06);
}
.rsm-nu-date {
    display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
    min-width: 62px; padding: 8px 10px; border-radius: 10px;
    background: var(--rsm-green-dark, #004225); color: #fff;
}
.rsm-nu-date b { font-size: 1.6rem; line-height: 1; }
.rsm-nu-date i { font-style: normal; font-size: 0.7rem; letter-spacing: .1em; color: var(--rsm-gold, #C5B358); }
.rsm-nu-body { display: flex; flex-direction: column; gap: 6px; }
.rsm-nu-title { color: var(--rsm-green-dark, #004225); font-weight: 700; }
.rsm-nu-chip { align-self: flex-start; padding: 3px 10px; border-radius: 999px; font-size: .7rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; background: var(--rsm-gold, #C5B358); color: #12331f; }
@media (max-width: 767px) { .rsm-nextup { padding: 28px 5%; } }

/* ============================================================
   SPRINT #16 — footer sitemap hub
   ============================================================ */
.rsm-sitemap {
    max-width: 1400px; margin: 0 auto;
    padding: var(--rsm-space-2xl, 40px) 5% var(--rsm-space-sm);
}
.rsm-sitemap-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: var(--rsm-space-xl); }
.rsm-sitemap h3 { color: #fff; font-size: 0.8rem; letter-spacing: .1em; text-transform: uppercase; margin: 0 0 10px; opacity: .85; }
.rsm-sitemap a { display: block; color: rgba(255,255,255,.85); text-decoration: none; padding: 4px 0; font-size: 0.9rem; }
.rsm-sitemap a:hover { color: var(--rsm-gold, #C5B358); }
@media (max-width: 767px) { .rsm-sitemap-grid { gap: var(--rsm-space-lg); } }

/* ============================================================
   SPRINT #17 — reading compass (scrollspy dot rail)
   ============================================================ */
.rsm-compass {
    position: fixed; right: 10px; top: 50%; transform: translateY(-50%);
    display: flex; flex-direction: column; gap: 10px;
    z-index: 999;
}
.rsm-compass a { display: flex; align-items: center; gap: 8px; cursor: pointer; text-decoration: none; }
.rsm-compass-dot {
    width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto;
    background: rgba(0, 66, 37, 0.25); transition: transform .15s ease, background .15s ease;
}
.rsm-compass-on .rsm-compass-dot { background: var(--rsm-green-dark, #004225); transform: scale(1.5); }
.rsm-compass-lbl {
    max-width: 0; overflow: hidden; white-space: nowrap; opacity: 0;
    font-size: 0.72rem; font-weight: 700; color: var(--rsm-green-dark, #004225);
    background: rgba(255,255,255,.92); border: 1px solid var(--rsm-border);
    border-radius: 6px; padding: 3px 8px; transition: all .18s ease; margin-left: auto; order: -1;
}
/* labels are hover-only tooltips so the rail never covers content */
.rsm-compass a:hover .rsm-compass-lbl, .rsm-compass a:focus-visible .rsm-compass-lbl { max-width: 220px; opacity: 1; }
@media (max-width: 1023px) { .rsm-compass { display: none; } }


/* ============================================================
   RSM SPRINT #18 — Launch hygiene + hierarchy pass (2026-11-01).
   1. Weight ladder: h1/h2 = 700, h3-h6 = 600. Replaces the
      500/600/700 mix that leaked from the retired legacy
      custom-CSS block.
   2. Headings inherit var(--rsm-primary) = #004225. The old
      custom CSS painted them #00457A blue; the token decision
      is --rsm-green-dark everywhere.
   3. History band (homepage .et_pb_section_5, "Rooted in
      Stayton"): left-align card copy under the left-aligned
      heading. Centered multi-line paragraphs were ragged and
      the heading did not line up with card one.
   4. Language switcher: GTranslate's raw .glink/.gt-cur links
      get the same pill treatment as the token-styled
      [data-gt-lang] buttons, so EN and ES read as one control.
   5. hr uses the border token (blue border came from the
      retired legacy block).
   ============================================================ */
h3, h4, h5, h6 { font-weight: 600; }

hr { border-color: var(--rsm-border); border-style: solid; }

.page-id-11749 .et_pb_section_5 .et_pb_text_inner,
.page-id-11749 .et_pb_section_5 .et_pb_text_inner p { text-align: left; }

/* The plugin script rewrites GTranslate links with data-gt-lang/data-rsm-short
   and adds .gt-current-lang to the active one. font-size:0 hides GTranslate's
   long label; the only visible text is the short code via ::after, so the two
   stylesheets can no longer fight and paint overlapping labels. */
#rsm-language-bar a.glink{display:inline-flex;align-items:center;justify-content:center;width:44px;min-width:44px;height:44px;padding:0;color:#004225;background:transparent;border:1px solid #c8d2c8;border-radius:4px;font-size:0;line-height:1;text-decoration:none}
#rsm-language-bar a.glink::after{content:attr(data-rsm-short);font-size:.7rem;font-weight:700;letter-spacing:.04em}
#rsm-language-bar a.glink.gt-current-lang{color:#fff;background:#004225;border-color:#004225}
@media(hover:hover) and (pointer:fine){#rsm-language-bar a.glink:not(.gt-current-lang):hover{border-color:#6e8974}}

/* ============================================================
   RSM SPRINT #19 (2026-11-01) — Hero utility dock alignment.
   Steve: the RSM TODAY block must sit inline with the
   "Love. Learn. Lead. Serve." message, on the left side —
   not a full-width bar across the banner. The dock now shares
   the hero text column's exact box (same left edge, same
   55%/680px width). Internal grid reflows to fit; the photo
   stays visible to the right of the message column.
   Scoped to >=1101px (where the bridge docks); tablet/mobile
   stacking in the bridge CSS is untouched.
   ============================================================ */
@media (min-width: 1101px) {
    body.rsm-hero-bridge-active .rsm-home-hero .rsm-hero-utility {
        right: auto !important;
        /* RSM SPRINT #19b: dock box derived from the SAME formulas the builder
           uses: row = min(90%,1400px) centered; text column = 55%, capped 680px.
           Below the 1400px row cap these reduce to 5%/49.5%; above it the dock
           follows the centered row instead of drifting left of the headline. */
        left: max(5%, calc((100% - min(1400px, 90%)) / 2)) !important;
        width: min(calc(min(1400px, 90%) * 0.55), 680px) !important;
        grid-template-columns: 148px minmax(0, 1.2fr) minmax(0, 1.1fr) !important;
        gap: 14px !important;
        min-height: 0 !important;
        bottom: 16px !important;
        padding: 12px 14px !important;
    }
    body.rsm-hero-bridge-active .rsm-home-hero .rsm-hero-utility h2 { font-size: 1.12rem !important; }
    body.rsm-hero-bridge-active .rsm-home-hero .rsm-hero-utility-intro { padding-right: 0 !important; }
    body.rsm-hero-bridge-active .rsm-home-hero .rsm-hero-event { padding: 0 12px !important; }
    body.rsm-hero-bridge-active .rsm-home-hero .rsm-hero-event .rsm-nextup-card { min-height: 54px !important; }
    body.rsm-hero-bridge-active .rsm-home-hero .rsm-hero-actions > h3 { margin-bottom: 6px !important; }
    body.rsm-hero-bridge-active .rsm-home-hero .rsm-hero-actions .rsm-quick-actions-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 6px !important;
    }
    body.rsm-hero-bridge-active .rsm-home-hero .rsm-hero-actions .rsm-quick-action {
        min-height: 52px !important;
        padding: 6px 8px !important;
    }
    body.rsm-hero-bridge-active .rsm-home-hero .rsm-hero-actions .rsm-quick-action-copy strong { font-size: .62rem !important; }
}


/* Site Map page (12262): the footer index renders on a white content area here;
   default styles are tuned for the dark footer. Page-scoped repaint. */
body.page-id-12262 .rsm-footer-index__heading,
body.page-id-12262 .rsm-footer-index__title { color: var(--rsm-green-dark, #004225); }
body.page-id-12262 .rsm-footer-index__list a { color: var(--rsm-text, #1f2937); }
body.page-id-12262 .rsm-footer-index__list a:hover,
body.page-id-12262 .rsm-footer-index__list a:focus-visible { color: var(--rsm-gold-dark, #a89842); }
