/* ============================================================================
   Round 278 (2026-07-02) — MIGRATED Customizer CSS (post 758, 90379 bytes, md5 a99ca9087fba1d3f234818a159ce195c).
   This block is the former wp-custom-css inline styles, moved here VERBATIM and
   PREPENDED so every relative override order is preserved (foundation's own rules
   follow below and still win as before). post 758 was emptied in the same round
   (backup: option cav_custom_css_bak_r278 + /tmp dump + this header's md5).
   Edit discipline unchanged: never edit inside this block destructively; append
   overrides at the END of the file. ============================================ */
/* Header nav links white */
.ast-header-break-point .ast-mobile-menu-buttons,
#ast-fixed-header .main-header-menu .menu-item > .menu-link,
.main-header-menu .menu-item > .menu-link,
.main-header-menu .menu-item > a,
.ast-header-break-point .main-header-bar .main-header-menu .menu-item > .menu-link,
header .main-header-bar a,
header .main-header-bar .menu-item > a,
.main-header-bar .ast-masthead-custom-menu-items a,
.main-header-bar .menu-link {
    color: #ffffff !important;
}
.site-title a,
.ast-site-identity .site-title a,
.ast-site-identity a {
    color: #ffffff !important;
}
.main-header-menu .menu-item.menu-item-has-children > .ast-menu-toggle::before,
.main-header-menu .menu-item.menu-item-has-children > a .ast-menu-toggle::before {
    color: #ffffff !important;
    border-color: #ffffff !important;
}
.site-footer, .ast-small-footer, footer.site-footer {
    background-color: var(--cav-green,#2E4A1F) !important;
    color: #ffffff !important;
}
.site-footer a, .ast-small-footer a { color: #ffffff !important; }
.site-header, .main-header-bar { overflow: visible !important; }
.ast-site-identity { align-self: flex-start !important; overflow: visible !important; }
.custom-logo-link { position: relative; z-index: 999; display: block; }
.main-header-menu .sub-menu .menu-item > a,
.main-header-menu .sub-menu .menu-item > .menu-link { color: #1a1a1a !important; }
.main-header-menu .sub-menu .menu-item > a:hover,
.main-header-menu .sub-menu .menu-item > .menu-link:hover { color: var(--cav-green,#2E4A1F) !important; }
.home .entry-title, .home .page-header { display: none !important; }
.home .wp-block-cover { min-height: 600px !important; } @media (max-width:1024px){ .home .wp-block-cover { min-height: 460px !important; } } @media (max-width:600px){ .home .wp-block-cover { min-height: 400px !important; } }
.home .entry-header { display: none; }
.home .ast-container > .entry-header { margin: 0; padding: 0; height: 0; overflow: hidden; }
.home .main-header-bar { min-height: unset; padding-top: 10px; padding-bottom: 10px; }
.home .content-area.primary { margin-top: 0; }
.home.page .content-area.primary { margin-top: 0 !important; }
/* ===== QUOTE SECTION ===== */
.carden-quote-section { text-align:center; padding:60px 40px 40px; max-width:900px; margin:0 auto; }
.carden-quote-section h1 { font-family:Mulish,sans-serif; font-size:36px; font-weight:800; color:var(--cav-green,#2E4A1F); text-transform:uppercase; text-align:center; margin:0 0 16px; line-height:1.2; }
.carden-orange-line { width:120px; height:5px; background:var(--cav-gold,#FEC41D); margin:0 auto 28px; border-radius:2px; }
.carden-quote-section p { font-size:18px; color:#4a4a4a; line-height:1.7; text-align:center; margin:0 auto; max-width:800px; }
/* ===== CONTENT SECTIONS ===== */
.carden-content-section { text-align:center; padding:30px 40px; max-width:900px; margin:0 auto; border-top:1px solid #e0e0e0; }
.carden-content-section h3 { font-family:Mulish,sans-serif; font-size:22px; font-weight:700; color:var(--cav-green,#2E4A1F); text-align:center; margin-bottom:12px; }
.carden-content-section p { font-size:16px; color:#4a4a4a; line-height:1.7; text-align:center; }
/* ===== CTA BUTTONS ===== */
.carden-btn { display:inline-block; background:var(--cav-green,#2E4A1F); color:#fff; padding:12px 28px; border-radius:4px; text-decoration:none; font-family:Mulish,sans-serif; font-weight:700; font-size:15px; margin:6px 8px; }
.carden-btn:hover { background:#2E4A1F; color:#fff; }
.carden-btn-outline { background:transparent; border:2px solid var(--cav-green,#2E4A1F); color:var(--cav-green,#2E4A1F); }
.carden-btn-outline:hover { background:var(--cav-green,#2E4A1F); color:#fff; }
/* ===== PHOTO TILE GRID ===== */
.carden-tile-grid { display:grid; grid-template-columns:repeat(3,1fr); width:100%; }
.carden-tile { position:relative; display:block; height:380px; background-size:cover; background-position:center; text-decoration:none; overflow:hidden; }
.carden-tile::before { content:''; position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,0.7) 0%,rgba(0,0,0,0.1) 60%,transparent 100%); transition:background 0.3s; }
.carden-tile:hover::before { background:rgba(0,70,45,0.55); }
.carden-tile-inner { position:absolute; bottom:0; left:0; right:0; padding:24px 20px; display:flex; flex-direction:column; gap:6px; }
.carden-tile-title { font-family:Mulish,sans-serif; font-size:20px; font-weight:800; color:#fff; line-height:1.2; }
.carden-tile-link { font-family:Mulish,sans-serif; font-size:13px; font-weight:600; color:rgba(255,255,255,0.85); text-transform:uppercase; letter-spacing:1px; }
/* ===== BY THE NUMBERS ===== */
.carden-numbers-section { background-size:cover; background-position:center; position:relative; width:100%; }
.carden-numbers-overlay { background:rgba(0,0,0,0.6); padding:60px 40px; text-align:center; }
.carden-numbers-title { font-family:Mulish,sans-serif; font-size:32px; font-weight:800; color:#fff; margin-bottom:12px; text-transform:uppercase; letter-spacing:2px; }
.carden-numbers-title::after { content:''; display:block; width:80px; height:4px; background:var(--cav-gold,#FEC41D); margin:12px auto 40px; border-radius:2px; }
.carden-numbers-grid { display:flex; justify-content:center; align-items:center; gap:0; max-width:900px; margin:0 auto; }
.carden-stat { flex:1; display:flex; flex-direction:column; align-items:center; gap:10px; }
.carden-stat-divider { width:1px; height:120px; background:rgba(255,255,255,0.4); }
.carden-stat-num { font-family:Mulish,sans-serif; font-size:64px; font-weight:800; color:#fff; line-height:1; }
.carden-stat-label { font-family:Mulish,sans-serif; font-size:15px; color:rgba(255,255,255,0.85); max-width:180px; line-height:1.4; }
/* Home page: remove container constraints so tiles go edge-to-edge */
.home .ast-container { margin-left: 0 !important; margin-right: 0 !important; padding-left: 0 !important; padding-right: 0 !important; max-width: 100% !important; }
.home .content-area.primary { padding: 0 !important; }
.home .entry-content { padding: 0 !important; }
/* Restore padding for text-only sections */
.carden-quote-section { padding-left: 40px !important; padding-right: 40px !important; }
.carden-content-section { padding-left: 40px !important; padding-right: 40px !important; }

/* ===== INTERIOR PAGE TITLE BANNER ===== */
.page:not(.home) .entry-header {
    background-color: var(--cav-green,#2E4A1F);
    padding: 28px 40px;
    margin: 0 0 30px 0;
    display: block;
}
.page:not(.home) .entry-title {
    color: #ffffff;
    font-family: Mulish, sans-serif;
    font-size: 30px;
    font-weight: 800;
    margin: 0;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* ===== FOOTER IMPROVEMENTS ===== */
.site-footer, .ast-small-footer, footer.site-footer {
    color: #ffffff;
    padding: 40px 0 20px;
}
.ast-small-footer {
    border-top: 1px solid rgba(255,255,255,0.2);
    margin-top: 10px;
    padding: 15px 20px;
    font-size: 13px;
    text-align: center;
}
footer .ast-footer-copyright {
    color: rgba(255,255,255,0.7);
}

/* ===== GENERAL INTERIOR PAGE IMPROVEMENTS ===== */
.page:not(.home) .entry-content {
    font-size: 16px;
    line-height: 1.75;
    color: #4a4a4a;
}
.page:not(.home) .entry-content h2 {
    color: var(--cav-green,#2E4A1F);
    font-size: 24px;
    margin-top: 30px;
    margin-bottom: 12px;
}
.page:not(.home) .entry-content h3 {
    color: var(--cav-green,#2E4A1F);
    font-size: 20px;
    margin-top: 24px;
    margin-bottom: 10px;
}
.page:not(.home) .entry-content img {
    border-radius: 4px;
    max-width: 100%;
    height: auto;
}

/* ===== REMOVE ASTRA THEME CREDIT from footer ===== */
.ast-footer-overlay { display: none; }
span.ast-copyright-meta a { color: rgba(255,255,255,0.5); }
/* ===== FOOTER CONTENT LAYOUT ===== */
.carden-footer-content { display:flex; justify-content:space-between; align-items:flex-start; padding:30px 20px 20px; max-width:1200px; margin:0 auto; }
.carden-footer-info { font-family:Mulish,sans-serif; font-size:14px; color:rgba(255,255,255,0.9); line-height:1.8; }
.carden-footer-info strong { font-size:16px; font-weight:800; display:block; margin-bottom:6px; }
.carden-footer-info a { color:#fff; }
.carden-footer-social { font-family:Mulish,sans-serif; font-size:13px; font-weight:700; letter-spacing:1px; color:#fff; text-align:right; }
.carden-footer-social a { color:rgba(255,255,255,0.85); margin-left:8px; text-decoration:none; font-size:13px; font-weight:600; }
.carden-footer-social a:hover { color:#fff; }
.carden-footer-copy { font-family:Mulish,sans-serif; font-size:12px; color:#ffffff; text-align:center; padding:15px 20px; border-top:1px solid rgba(255,255,255,0.15); }
/* Make ALL footer elements green */
.site-below-footer-wrap,
.ast-builder-footer-grid-columns,
.ast-builder-layout-element.ast-flex,
.site-footer-below-wrap { 
    background-color: var(--cav-green,#2E4A1F) !important; 
    color: #ffffff !important;
}

/* ===== FIX 1: RESTYLE PAGE TITLE BANNER — remove big green block, make subtle ===== */
.page:not(.home) .entry-header {
    background-color: transparent !important;
    padding: 20px 0 8px !important;
    margin: 0 0 20px 0 !important;
    border-bottom: 3px solid var(--cav-green,#2E4A1F);
}
.page:not(.home) .entry-title {
    color: var(--cav-green,#2E4A1F) !important;
    font-family: Mulish, sans-serif !important;
    font-size: 28px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 1px !important;
    margin: 0 !important;
}

/* ===== FIX 2: GIVING DROPDOWN — open left instead of right ===== */
.main-header-menu > .menu-item:last-child > .sub-menu,
.main-header-menu > li:last-child > .sub-menu {
    right: 0 !important;
    left: auto !important;
}

/* ===== FIX 3: HOME PAGE — remove white gap between header and hero ===== */
.home .site-main { margin-top: 0 !important; padding-top: 0 !important; }
.home .ast-article-single { margin-top: 0 !important; }
.home .content-area.primary { margin-top: 0 !important; }

/* ===== FIX 4: HEADER CONSISTENCY — match interior page header height on home ===== */
.main-header-bar { min-height: unset !important; }

/* ===== FIX 5: ACADEMICS SLIDESHOW — hide stacked images, show only first ===== */
[data-slides-to-show] { position: relative; overflow: hidden; min-height: 300px; }
[data-slides-to-show] article { display: none; }
[data-slides-to-show] article:first-child { display: block; }
[data-slides-to-show] article picture, [data-slides-to-show] article img { width: 100%; height: auto; display: block; }

/* Hide original Finalsite slider buttons (replaced by carousel) */
.entry-content [data-slides-to-show] ~ button { display: none !important; }

/* Ensure home page has no margin-top gap */
.home .content-area.primary { margin-top: 0 !important; }
/* Remove cover block top padding that creates white gap on home page */
.home .wp-block-cover.alignfull { padding-top: 0 !important; margin-top: 0 !important; }
.home .wp-block-cover { padding-top: 0 !important; }
/* Completely collapse entry-header on home page */
body.home .entry-header,
body.home .ast-no-thumbnail.entry-header,
body.home .page-header {
    display: none !important;
    height: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    border: none !important;
    overflow: hidden !important;
}

/* CARDEN-ACADEMICS-SLIDESHOW-START */
.carden-academics-swiper-wrap { max-width: 1200px; margin: 2.5rem auto; padding: 0 1rem; }
.carden-academics-swiper { position: relative; border-radius: 4px; overflow: hidden; box-shadow: 0 2px 18px rgba(0,0,0,.08); --swiper-theme-color: var(--cav-green,#2E4A1F); }
.carden-academics-swiper .swiper-slide img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.carden-academics-swiper .swiper-button-prev,
.carden-academics-swiper .swiper-button-next {
  --swiper-navigation-size: 18px;
  width: 44px; height: 44px;
  background: rgba(255,255,255,0.92);
  color: var(--cav-green,#2E4A1F);
  border-radius: 50%;
  box-shadow: 0 1px 6px rgba(0,0,0,.18);
  margin-top: -22px;
  transition: background .15s ease, color .15s ease;
}
.carden-academics-swiper .swiper-button-prev:hover,
.carden-academics-swiper .swiper-button-next:hover { background: var(--cav-green,#2E4A1F); color: #fff; }
.carden-academics-swiper .swiper-button-prev::after,
.carden-academics-swiper .swiper-button-next::after { font-weight: 700; }
.carden-academics-swiper .swiper-pagination { bottom: 14px; }
.carden-academics-swiper .swiper-pagination-bullet { background: #fff; opacity: .85; }
.carden-academics-swiper .swiper-pagination-bullet-active { background: var(--cav-green,#2E4A1F); opacity: 1; }
@media (max-width: 600px) {
  .carden-academics-swiper-wrap { margin: 1.5rem auto; }
  .carden-academics-swiper .swiper-button-prev,
  .carden-academics-swiper .swiper-button-next { width: 36px; height: 36px; --swiper-navigation-size: 14px; margin-top: -18px; }
}
/* CARDEN-ACADEMICS-SLIDESHOW-END */

/* CARDEN-BUTTONS-START */
/* Home page CTA buttons: white/outline, no underline, hover green */
.home .carden-btn,
.home .carden-btn-outline {
  text-decoration: none !important;
  background: #fff !important;
  color: var(--cav-green,#2E4A1F) !important;
  border: 2px solid var(--cav-green,#2E4A1F) !important;
}
.home .carden-btn:hover,
.home .carden-btn:focus,
.home .carden-btn-outline:hover,
.home .carden-btn-outline:focus {
  background: var(--cav-green,#2E4A1F) !important;
  color: #fff !important;
  text-decoration: none !important;
}
/* All carden-btn links: never underline */
a.carden-btn,
a.carden-btn-outline { text-decoration: none !important; }
/* CARDEN-BUTTONS-END */

/* CARDEN-SCROLLTOP-START */
/* Astra scroll-to-top button: recolor from default blue to brand green.
 * Astra uses inline CSS in <style id="astra-theme-css-inline-css">; we
 * override with !important. Keeps button, just matches site palette. */
#ast-scroll-top {
  background-color: var(--cav-green,#2E4A1F) !important;
  color: #ffffff !important;
  border: 0 !important;
}
#ast-scroll-top:hover,
#ast-scroll-top:focus {
  background-color: var(--cav-green,#2E4A1F) !important;
}
#ast-scroll-top .ast-icon.icon-arrow svg,
#ast-scroll-top .ast-arrow-svg path {
  fill: #ffffff !important;
}
/* CARDEN-SCROLLTOP-END */

/* CARDEN-TILE-HOVER-START */
/* Home tile grid — Finalsite-style hover.
 * Title default: bottom-CENTER, single line. Hover: rises straight up to
 * upper-center. LEARN MORE: hidden below; on hover slides up to lower-center
 * with orange divider. 0.4s. Both elements absolute-positioned (no flex
 * reflow → no flash). */
.carden-tile {
  position: relative;
  display: block;
  overflow: hidden;
  text-decoration: none;
  color: #fff;
  background-size: cover;
  background-position: center;
}
.carden-tile::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 45%, rgba(0,0,0,0.55) 100%);
  transition: background 0.4s ease;
  z-index: 1;
}
.carden-tile:hover::before,
.carden-tile:focus-visible::before,
.carden-tile:focus-within::before {
  background: rgba(0,0,0,0.55);
}
.carden-tile-inner {
  position: absolute;
  inset: 0;
  z-index: 2;
}
.carden-tile-title {
  position: absolute;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%);
  margin: 0;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.2;
  color: #fff;
  text-shadow: 0 2px 6px rgba(0,0,0,0.5);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: calc(100% - 40px);
  text-align: center;
  transition: bottom 0.4s ease;
}
.carden-tile:hover .carden-tile-title,
.carden-tile:focus-visible .carden-tile-title,
.carden-tile:focus-within .carden-tile-title {
  bottom: calc(50% + 18px);
}
.carden-tile-link {
  position: absolute;
  left: 50%;
  bottom: -50px;
  transform: translateX(-50%);
  display: inline-block;
  padding: 9px 22px;
  border: 2px solid #fff;
  font-size: 0.78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: #fff;
  text-decoration: none;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: bottom 0.4s ease, opacity 0.4s ease, background-color 0.2s ease;
}
.carden-tile-link::before {
  content: "";
  display: block;
  width: 60px;
  height: 3px;
  background: var(--cav-gold,#FEC41D);
  position: absolute;
  left: 50%;
  top: -16px;
  transform: translateX(-50%);
}
.carden-tile:hover .carden-tile-link,
.carden-tile:focus-visible .carden-tile-link,
.carden-tile:focus-within .carden-tile-link {
  bottom: calc(50% - 56px);
  opacity: 1;
  pointer-events: auto;
}
.carden-tile-link:hover {
  background: rgba(255,255,255,0.12);
}
@media (hover: none) {
  .carden-tile-title {
    bottom: calc(50% + 18px);
  }
  .carden-tile-link {
    bottom: calc(50% - 56px);
    opacity: 1;
    pointer-events: auto;
  }
}
/* CARDEN-TILE-HOVER-END */

/* CARDEN-NUMBERS-WHITE-START */
/* "By the Numbers" — white text + larger stat sizes to match Finalsite. */
.carden-numbers-section,
.carden-numbers-section *,
.carden-numbers-overlay,
.carden-numbers-title,
.carden-stat,
.carden-stat-num,
.carden-stat-label {
  color: #ffffff !important;
}
.carden-numbers-section .carden-stat-divider {
  background-color: rgba(255,255,255,0.5) !important;
}
.carden-numbers-title {
  font-size: 2.4rem !important;
  font-weight: 700 !important;
  margin-bottom: 28px !important;
}
.carden-numbers-section .carden-stat-num {
  font-size: 4rem !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  display: block;
  margin-bottom: 6px;
}
.carden-numbers-section .carden-stat-label {
  font-size: 1.1rem !important;
  font-weight: 500 !important;
  display: block;
  letter-spacing: 0.02em;
}
@media (max-width: 768px) {
  .carden-numbers-section .carden-stat-num { font-size: 3rem !important; }
  .carden-numbers-section .carden-stat-label { font-size: 1rem !important; }
  .carden-numbers-title { font-size: 1.8rem !important; }
}
/* CARDEN-NUMBERS-WHITE-END */

/* CARDEN-EVENTS-CSS-START */
/* Events Swiper carousel — Finalsite-style: clean vertical card, stacked
 * date (Month / Day big / Year small), large title that turns green on hover.
 * No Read More — the whole card and title are the click target.
 * 3 visible desktop / 2 tablet / 1 mobile. Arrows + pagination dots. */
.carden-events-section {
  max-width: 1240px;
  margin: 60px auto 16px;
  padding: 0 20px;
  text-align: center;
}
.carden-events-title {
  font-size: 2rem;
  font-weight: 700;
  color: var(--cav-green,#2E4A1F);
  margin: 0 0 14px;
}
.carden-events-section .carden-orange-line {
  width: 80px;
  height: 4px;
  background: var(--cav-gold,#FEC41D);
  margin: 0 auto 28px;
}
.carden-events-swiper {
  max-width: 1240px;
  margin: 0 auto 60px;
  padding: 12px 56px 56px;
  position: relative;
}
.carden-events-swiper .swiper-slide { height: auto; display: flex; }
.carden-events-swiper .carden-event {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  width: 100%;
  padding: 32px 24px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-top: 4px solid var(--cav-green,#2E4A1F);
  border-radius: 6px;
  text-decoration: none;
  color: #111;
  transition: box-shadow 0.25s ease, transform 0.25s ease, border-top-color 0.25s ease;
}
.carden-events-swiper .carden-event:hover {
  box-shadow: 0 10px 28px rgba(0,0,0,0.10);
  transform: translateY(-3px);
  border-top-color: var(--cav-gold,#FEC41D);
}
.carden-event-date {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  margin-bottom: 18px;
}
.carden-event-month {
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--cav-gold,#FEC41D);
}
.carden-event-day {
  font-size: 3.5rem;
  font-weight: 700;
  line-height: 1;
  color: var(--cav-green,#2E4A1F);
}
.carden-event-year {
  font-size: 0.78rem;
  letter-spacing: 0.15em;
  color: #6b7280;
  text-transform: uppercase;
}
.carden-event-title {
  font-size: 1.35rem;
  font-weight: 700;
  color: #111;
  margin: 0 0 10px;
  line-height: 1.3;
  transition: color 0.2s ease;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.carden-events-swiper .carden-event:hover .carden-event-title {
  color: var(--cav-green,#2E4A1F);
}
.carden-event-time {
  font-size: 0.9rem;
  color: #6b7280;
}
.carden-events-swiper .swiper-button-prev,
.carden-events-swiper .swiper-button-next {
  color: var(--cav-green,#2E4A1F);
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 2px 10px rgba(0,0,0,0.10);
  transition: background 0.2s ease, color 0.2s ease;
}
.carden-events-swiper .swiper-button-prev:hover,
.carden-events-swiper .swiper-button-next:hover {
  background: var(--cav-green,#2E4A1F);
  color: #fff;
}
.carden-events-swiper .swiper-button-prev::after,
.carden-events-swiper .swiper-button-next::after {
  font-size: 1.1rem;
  font-weight: 800;
}
.carden-events-swiper .swiper-pagination { bottom: 18px; }
.carden-events-swiper .swiper-pagination-bullet {
  background: #6b7280;
  opacity: 0.45;
  width: 9px;
  height: 9px;
}
.carden-events-swiper .swiper-pagination-bullet-active {
  background: var(--cav-green,#2E4A1F);
  opacity: 1;
}
.carden-events-empty {
  text-align: center;
  color: #6b7280;
  padding: 24px 0 60px;
}
@media (max-width: 640px) {
  .carden-events-swiper { padding: 8px 16px 56px; }
  .carden-event-day { font-size: 3rem; }
  .carden-event-title { font-size: 1.2rem; }
}
/* CARDEN-EVENTS-CSS-END */

/* CARDEN-EMPHASIS-BAR-START */
/* Brand emphasis treatment: Finalsite's gold vertical bar + italic green
 * heading style. Targets any inline span styled at font-size:24px inside
 * page content. Used on faculty page intro line and similar emphasis lines
 * across the site. */
.entry-content span[style*="font-size:24px"],
.entry-content span[style*="font-size: 24px"] {
  display: block;
  border-left: 4px solid var(--cav-gold,#FEC41D);
  padding: 6px 0 6px 18px;
  margin: 28px 0;
  font-style: italic;
  font-weight: 700;
  color: var(--cav-green,#2E4A1F);
  line-height: 1.35;
  font-size: 1.4rem !important;
}
/* If the span is nested inside another span (Finalsite's import wraps
 * the emphasis text in two layers), neutralize the outer span so the
 * inner one's display:block + border-left work cleanly. */
.entry-content span:has(> span[style*="font-size:24px"]),
.entry-content span:has(> span[style*="font-size: 24px"]) {
  display: block;
}
/* CARDEN-EMPHASIS-BAR-END */

/* CARDEN-FACULTY-GRID-START */
/* Faculty and Staff page: clean Finalsite-style grid. Square portrait photos
 * (no circle crop), no card chrome, green underlined names, plain role text. */
.carden-faculty-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 36px 24px;
  max-width: 100%;
  margin: 32px 0;
  padding: 0;
}
/* WordPress wpautop inserts empty <p> elements between block siblings on
 * render. Those empty paragraphs land in the grid as items, displacing the
 * cards. Hide anything inside the grid that isn't a card. */
.carden-faculty-grid > :not(.carden-faculty-card) {
  display: none !important;
}
.carden-faculty-card {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  text-align: left;
  box-shadow: none;
  transition: none;
  min-width: 0;
}
.carden-faculty-card:hover {
  box-shadow: none;
  transform: none;
}
.carden-faculty-card img,
.carden-faculty-photo {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: 0;
  margin: 0 0 12px;
  background: #f3f4f6;
}
.carden-faculty-name {
  font-size: 1.05rem;
  font-weight: 700;
  margin: 0 0 4px;
  color: var(--cav-green,#2E4A1F);
  line-height: 1.3;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.carden-faculty-role {
  font-size: 0.95rem;
  color: #1a1a1a;
  margin: 0;
  font-weight: 400;
  line-height: 1.4;
}
@media (max-width: 1200px) {
  .carden-faculty-grid { gap: 28px 20px; }
}
@media (max-width: 1024px) {
  .carden-faculty-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 768px) {
  .carden-faculty-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 16px; }
}
@media (max-width: 480px) {
  .carden-faculty-grid { grid-template-columns: minmax(0, 1fr); }
  .carden-faculty-card img,
  .carden-faculty-photo { aspect-ratio: 1 / 1; }
}
/* CARDEN-FACULTY-GRID-END */

/* CARDEN-CALLOUTS-START */
/* Community Service: 3-up photo grid replacing the broken Finalsite Slick
 * carousel that didn't survive migration. */
.carden-cs-photos {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  margin: 24px 0 28px;
}
.carden-cs-photos > :not(figure) { display: none; }
.carden-cs-photos figure {
  margin: 0;
  background: #f3f4f6;
  border-radius: 4px;
  overflow: hidden;
}
.carden-cs-photos img {
  display: block;
  width: 100%;
  height: 220px;
  object-fit: cover;
}
@media (max-width: 768px) {
  .carden-cs-photos { grid-template-columns: 1fr; gap: 14px; }
  .carden-cs-photos img { height: auto; }
}

/* Our Graduates: Colleges/Universities list rendered as 3 columns side-by-side
 * (mirrors how Finalsite displayed the 3 separate <ul> lists). */
.carden-college-cols {
  column-count: 3;
  column-gap: 32px;
  margin: 16px 0 28px;
}
.carden-college-cols ul {
  margin: 0;
  padding: 0 0 0 20px;
  break-inside: avoid;
}
.carden-college-cols li {
  break-inside: avoid;
  margin-bottom: 4px;
}
@media (max-width: 900px) {
  .carden-college-cols { column-count: 2; }
}
@media (max-width: 600px) {
  .carden-college-cols { column-count: 1; }
}

/* Finalsite-imported callout-box wrappers used on Our Graduates +
 * Accreditation. Restore Finalsite-style visual treatment. */
.entry-content .callout-box-light {
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-left: 4px solid var(--cav-green,#2E4A1F);
  border-radius: 4px;
  padding: 22px 24px;
  margin: 28px 0;
}
.entry-content .callout-box-light header {
  margin-bottom: 12px;
}
.entry-content .callout-box-light figure {
  margin: 0 0 16px;
}
.entry-content .callout-box-light figure img {
  display: block;
  max-width: 100%;
  height: auto;
  border-radius: 4px;
}
.entry-content .callout-box-light h2 {
  margin-top: 0;
  color: var(--cav-green,#2E4A1F);
}
.entry-content .callout-box-light video {
  display: block;
  width: 100%;
  max-width: 720px;
  margin: 12px auto 0;
  border-radius: 4px;
}

.entry-content .callout-box-dark {
  background: var(--cav-green,#2E4A1F);
  color: #fff;
  border-radius: 4px;
  padding: 24px 28px;
  margin: 28px 0;
}
.entry-content .callout-box-dark p,
.entry-content .callout-box-dark strong {
  color: #fff;
}
.entry-content .callout-box-dark figure {
  margin: 0 0 14px;
  text-align: center;
}
.entry-content .callout-box-dark figure img {
  display: inline-block;
  max-width: 240px;
  height: auto;
  background: #fff;
  padding: 12px;
  border-radius: 4px;
}
/* CARDEN-CALLOUTS-END */

/* CARDEN-LINK-COLOR-START */
/* Default link color in page content: brand green (matches Finalsite). Astra's
 * default Highlight blue was leaking through on outbound links like the
 * Carden Educational Foundation / CAIS / NAIS links on the Accreditation page. */
.entry-content a {
  color: var(--cav-green,#2E4A1F);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.entry-content a:hover,
.entry-content a:focus {
  color: var(--cav-green,#2E4A1F);
  text-decoration: underline;
}
/* Don't underline links that are styled buttons, faculty cards (handled by
 * their own rules), or that wrap images (figure links). */
.entry-content a.carden-btn,
.entry-content a.carden-btn-outline,
.entry-content figure a,
.entry-content .carden-faculty-card a {
  text-decoration: none;
}
/* CARDEN-LINK-COLOR-END */

/* CARDEN-WIDGETS-FORM-START */
/* CAVS Alumni Contact form — multi-column responsive layout matching the
 * Finalsite form's structure (First/Last on one row, City/State/Zip/Country
 * on one row, etc.). */
.wpcf7 .cf7-required-note {
  font-size: 0.85rem;
  color: #6b7280;
  margin: 0 0 16px;
}
.wpcf7 .cf7-required-note::before {
  content: "*";
  color: #c0392b;
  margin-right: 4px;
}
.wpcf7 .cf7-row {
  margin: 0 0 14px;
}
.wpcf7 .cf7-row.two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.wpcf7 .cf7-row.four-col {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1.5fr;
  gap: 16px;
}
.wpcf7 .cf7-row label {
  display: block;
  font-size: 0.9rem;
  font-weight: 600;
  color: #1a1a1a;
  margin: 0;
  width: 100%;
}
.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="number"],
.wpcf7 select,
.wpcf7 textarea {
  display: block;
  width: 100%;
  padding: 8px 10px;
  font-size: 1rem;
  font-family: inherit;
  border: 1px solid #d1d5db;
  border-radius: 4px;
  background: #fff;
  color: #1a1a1a;
  margin-top: 4px;
  box-sizing: border-box;
}
.wpcf7 textarea { min-height: 90px; resize: vertical; }
.wpcf7 input:focus,
.wpcf7 select:focus,
.wpcf7 textarea:focus {
  outline: none;
  border-color: var(--cav-green,#2E4A1F);
  box-shadow: 0 0 0 2px rgba(46, 74, 31,0.18);
}
.wpcf7 .wpcf7-list-item {
  display: inline-block;
  margin: 6px 16px 0 0;
  font-weight: 400;
}
.wpcf7 .wpcf7-list-item-label { margin-left: 4px; }
.wpcf7 .submit-row { margin-top: 24px; }
.wpcf7 input[type="submit"] {
  background: var(--cav-green,#2E4A1F);
  color: #fff;
  border: 0;
  padding: 12px 32px;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.15s;
}
.wpcf7 input[type="submit"]:hover { background: var(--cav-green,#2E4A1F); }
.wpcf7 .wpcf7-not-valid-tip { font-size: 0.85rem; color: #c0392b; margin-top: 4px; }
.wpcf7-response-output { padding: 10px 14px; margin: 16px 0; border-radius: 4px; }
@media (max-width: 700px) {
  .wpcf7 .cf7-row.two-col,
  .wpcf7 .cf7-row.four-col { grid-template-columns: 1fr; gap: 14px; }
}
/* CARDEN-WIDGETS-FORM-END */

/* CARDEN-MENU-SEARCH-START */
/* Search popout at right end of the main green header menu. CSS-only via
 * checkbox toggle. Hidden on mobile (< 921px) where the menu is off-canvas. */
.carden-menu-search-li { position: relative; display: flex; align-items: stretch; }
.carden-menu-search-toggle-cb {
  position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;
}
.carden-menu-search-icon {
  display: flex !important;
  align-items: center;
  padding: 0 14px !important;
  height: 100%;
  color: #fff !important;
  cursor: pointer !important;
  background: transparent !important;
}
.carden-menu-search-icon:hover { background: rgba(255,255,255,0.10) !important; }
.carden-menu-search-icon svg { display: block; }
.carden-menu-search-popout {
  position: absolute;
  top: 100%;
  right: 0;
  margin: 0;
  background: #fff;
  padding: 12px;
  display: flex;
  gap: 6px;
  align-items: center;
  box-shadow: 0 6px 20px rgba(0,0,0,0.18);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0s linear 0.2s;
  z-index: 1000;
  white-space: nowrap;
}
.carden-menu-search-toggle-cb:checked ~ .carden-menu-search-popout {
  opacity: 1; visibility: visible; transform: translateY(0);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0s linear 0s;
}
.carden-menu-search-popout input[type="search"] {
  border: 1px solid #d1d5db;
  padding: 7px 10px;
  width: 240px;
  font-size: 0.9rem;
  background: #fff;
  color: #111;
  border-radius: 2px;
}
.carden-menu-search-popout input[type="search"]:focus {
  outline: 2px solid var(--cav-green,#2E4A1F);
  outline-offset: 1px;
}
.carden-menu-search-popout button[type="submit"] {
  background: var(--cav-green,#2E4A1F);
  color: #fff;
  border: 0;
  padding: 8px 16px;
  font-weight: 600;
  font-size: 0.78rem;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  border-radius: 2px;
}
.carden-menu-search-popout button[type="submit"]:hover { background: var(--cav-green,#2E4A1F); }
@media (max-width: 921px) { .carden-menu-search-li { display: none; } }
/* CARDEN-MENU-SEARCH-END */

/* CARDEN-WIDGETS-START */

/* ---- Mae Carden inline quote block ---- */
.entry-content blockquote.carden-mae-quote {
  text-align: center;
  margin: 36px auto 24px;
  padding: 0 20px;
  max-width: 720px;
  border: 0;
  position: relative;
}
.entry-content blockquote.carden-mae-quote::before {
  content: "““";
  display: block;
  color: var(--cav-gold,#FEC41D);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 3.5rem;
  line-height: 1;
  font-weight: 700;
  letter-spacing: -0.05em;
  margin-bottom: 4px;
}
.entry-content blockquote.carden-mae-quote p {
  color: var(--cav-green,#2E4A1F);
  font-style: italic;
  font-weight: 700;
  font-size: 1.4rem;
  line-height: 1.45;
  margin: 0 0 20px;
}
.entry-content blockquote.carden-mae-quote cite {
  display: block;
  font-style: normal;
  font-weight: 600;
  color: #1a1a1a;
  font-size: 0.95rem;
}

/* ---- Tabs widget ---- */
.carden-tabs {
  margin: 16px 0 32px;
}
.carden-tab-headers {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid #d1d5db;
  margin-bottom: 0;
  flex-wrap: wrap;
}
.carden-tab {
  appearance: none;
  border: 0;
  background: #e5e7eb;
  color: #1a1a1a;
  font-size: 1rem;
  font-weight: 600;
  padding: 12px 24px;
  cursor: pointer;
  border-radius: 4px 4px 0 0;
  transition: background 0.15s, color 0.15s;
  font-family: inherit;
}
.carden-tab:hover {
  background: var(--cav-green,#2E4A1F);
  color: #fff;
}
.carden-tab.active {
  background: var(--cav-green,#2E4A1F);
  color: #fff;
}
.carden-tab-panels {
  border: 1px solid #d1d5db;
  border-top: 0;
  padding: 22px 26px;
  background: #fff;
}
.carden-panel { display: none; }
.carden-panel.active { display: block; }
.carden-panel ul {
  margin: 0;
  padding: 0 0 0 22px;
}
.carden-panel li { margin-bottom: 4px; }
@media (max-width: 700px) {
  .carden-tab { padding: 10px 14px; font-size: 0.92rem; flex: 1 1 auto; min-width: 0; }
  .carden-tab-panels { padding: 18px; }
}

.carden-panel .carden-college-cols {
  column-count: 3;
  column-gap: 32px;
  margin: 0;
}
.carden-panel .carden-college-cols ul {
  break-inside: avoid;
  padding-left: 22px;
  margin-bottom: 0;
}
.carden-panel .carden-college-cols li { break-inside: avoid; }
@media (max-width: 900px) {
  .carden-panel .carden-college-cols { column-count: 2; }
}
@media (max-width: 600px) {
  .carden-panel .carden-college-cols { column-count: 1; }
}

/* ---- Carousel widget ---- */
.carden-carousel {
  position: relative;
  width: 100%;
  background: transparent;
  overflow: hidden;
}
.carden-slides {
  position: relative;
  width: 100%;
  min-height: 200px;
}
.carden-slide {
  position: absolute;
  inset: 0;
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.4s ease-in-out;
  pointer-events: none;
}
.carden-slide.active { opacity: 1; pointer-events: auto; }
.carden-slide img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 360px;
  object-fit: contain;
  padding: 0;
}
.carden-slide.active {
  position: relative;
}
.carden-prev,
.carden-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(255,255,255,0.9);
  border: 1px solid rgba(0,0,0,0.12);
  color: var(--cav-green,#2E4A1F);
  font-size: 1.6rem;
  line-height: 1;
  cursor: pointer;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
  padding: 0;
}
.carden-prev:hover, .carden-next:hover { background: var(--cav-green,#2E4A1F); color: #fff; }
.carden-prev { left: 10px; }
.carden-next { right: 10px; }
.carden-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin: 12px 0 0;
  padding: 0;
}
.carden-dot {
  width: 14px;
  height: 14px;
  background: #d1d5db;
  border: 0;
  cursor: pointer;
  padding: 0;
}
.carden-dot.active { background: var(--cav-green,#2E4A1F); }

/* ---- Community Service 2-col layout ---- */
.carden-cs-layout {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 32px;
  align-items: start;
  margin: 24px 0 32px;
}
.carden-cs-text-col p { margin: 0; }
@media (max-width: 800px) {
  .carden-cs-layout { grid-template-columns: 1fr; gap: 20px; }
}

.carden-cs-photos { display: contents; }

/* ---- Pull-quote emphasis ---- */
.entry-content p.carden-pull-quote {
  border-left: 4px solid var(--cav-gold,#FEC41D);
  padding: 8px 0 8px 18px;
  margin: 28px 0;
  color: var(--cav-green,#2E4A1F);
  font-weight: 700;
  font-style: italic;
  font-size: 1.25rem;
  line-height: 1.4;
}

/* ---- Dark callout: yellow horizontal divider ---- */
.entry-content .callout-box-dark {
  position: relative;
  margin-top: 36px;
}
.entry-content .callout-box-dark::before {
  content: "";
  display: block;
  height: 4px;
  background: var(--cav-gold,#FEC41D);
  margin-bottom: 0;
  border-radius: 4px 4px 0 0;
}

/* CARDEN-WIDGETS-END */

/* CARDEN-CAROUSEL-FIX-START */
/* Additive — loads after CARDEN-WIDGETS so cascade wins. */

/* Smaller carousel + uniform image crop. */
.carden-cs-layout .carden-carousel { max-width: 480px; margin: 0 auto; }
.carden-cs-layout .carden-slides {
  aspect-ratio: 4 / 3;
  min-height: unset !important;
  background: #f3f4f6;
  border-radius: 4px;
  overflow: hidden;
}
/* Keep ALL slides absolute (not just inactive ones) so the container holds
 * its aspect-ratio rather than collapsing to active-slide natural height. */
.carden-cs-layout .carden-slide,
.carden-cs-layout .carden-slide.active {
  position: absolute !important;
  inset: 0;
}
.carden-cs-layout .carden-slide img {
  width: 100% !important;
  height: 100% !important;
  max-height: unset !important;
  object-fit: cover !important;
  object-position: center !important;
}

/* Buttons must drop back to white after click — :focus was making them
 * stick green (the JS now also blurs() the button on click as a belt-and-
 * braces). */
.carden-prev,
.carden-next {
  outline: none !important;
}
.carden-prev:focus,
.carden-next:focus,
.carden-prev:focus-visible,
.carden-next:focus-visible {
  background: rgba(255,255,255,0.9) !important;
  color: var(--cav-green,#2E4A1F) !important;
  outline: none !important;
  box-shadow: none !important;
}
.carden-prev:hover,
.carden-next:hover {
  background: var(--cav-green,#2E4A1F) !important;
  color: #fff !important;
}
.carden-dot:focus { outline: none !important; }
/* CARDEN-CAROUSEL-FIX-END */

/* CARDEN-MAE-QUOTE-FIX-START */
/* Override the round3a quote-pair glyph with a single open-quote.
 * The literal U+201C left-double-quotation-mark byte sequence is the
 * ONLY safe way to embed it in custom_css (WP strips backslashes). */
.entry-content blockquote.carden-mae-quote::before {
  content: "“";
}
/* CARDEN-MAE-QUOTE-FIX-END */

/* CARDEN-CAROUSEL-FIX-V2-START */
/* Smaller carousel + show full image (no edge cropping).
 * Overrides CARDEN-CAROUSEL-FIX cover-crop with contain-letterbox. */

.carden-cs-layout .carden-carousel,
.carden-carousel {
  max-width: 380px !important;
  margin: 0 auto !important;
}
.carden-cs-layout .carden-slides,
.carden-carousel .carden-slides {
  aspect-ratio: 3 / 2 !important;
  min-height: unset !important;
  background: #ffffff !important;
  border-radius: 4px;
  overflow: hidden;
}
.carden-cs-layout .carden-slide,
.carden-cs-layout .carden-slide.active,
.carden-carousel .carden-slide,
.carden-carousel .carden-slide.active {
  position: absolute !important;
  inset: 0 !important;
  padding: 8px;
}
.carden-cs-layout .carden-slide img,
.carden-carousel .carden-slide img {
  width: 100% !important;
  height: 100% !important;
  max-height: unset !important;
  object-fit: contain !important;
  object-position: center !important;
}
/* CARDEN-CAROUSEL-FIX-V2-END */

/* CARDEN-HOME-PADDING-FIX-START */
/* Reduce the 60px 40px 40px padding on the home-page Mae Carden quote
 * section. Targets the inline style attribute literally — Dennis confirmed
 * the box has padding: 60px 40px 40px set inline. */
[style*="padding:60px 40px 40px"],
[style*="padding: 60px 40px 40px"],
[style*="padding:60px"],
[style*="padding: 60px"] {
  padding: 24px 28px 18px !important;
}

/* Tighten any leftover home-page Mae quote / hero quote variants */
.entry-content > p[style*="padding"],
.entry-content > div[style*="padding"]:not(.wp-block-cover) {
  padding-top: 24px !important;
  padding-bottom: 18px !important;
}

/* Carden brand-quote on home (the "Life is a Joy, So Should be Learning"
 * hero quote and any sibling) — tighten line-height and remove extra margin
 * so it fits on 2 lines like Finalsite. */
.home .entry-content h1,
.home .entry-content h2,
.home .entry-content blockquote {
  line-height: 1.15 !important;
  margin-top: 12px !important;
  margin-bottom: 14px !important;
}
/* CARDEN-HOME-PADDING-FIX-END */

/* CARDEN-OG-TEXT-FIX-START */
/* "Our graduates go on to attend:" — the centered paragraph above the
 * tabs widget on Our Graduates (post 255). Inline style is
 * `text-align: center` and there's no other carden class on it. */
body.page-id-255 .entry-content > p[style*="text-align: center"],
body.page-id-255 .entry-content > p[style*="text-align:center"] {
  font-size: 25px !important;
  line-height: 1.3 !important;
  font-weight: 600 !important;
  color: var(--cav-green,#2E4A1F);
  margin-top: 28px !important;
  margin-bottom: 16px !important;
}
/* CARDEN-OG-TEXT-FIX-END */

/* CARDEN-LOGO-FIX-START */
/* Logo can render soft at certain DPRs / Chrome versions when the
 * source PNG is downscaled by a non-integer factor. These hints nudge
 * the browser toward higher-quality scaling and force GPU compositing
 * (sometimes that alone fixes softness). */
.custom-logo,
.ast-site-identity img,
.site-logo-img img,
.site-branding img,
.ast-logo-svg-icon-image,
img.custom-logo {
  image-rendering: -webkit-optimize-contrast;
  image-rendering: high-quality;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  transform: translateZ(0);
}
/* CARDEN-LOGO-FIX-END */

/* CARDEN-CONTACT-V1-START */
.carden-contact-page {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 20px 40px;
  font-family: Mulish, sans-serif;
}
.carden-contact-hero {
  margin: 0 0 40px;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
}
.carden-contact-hero img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 480px;
  object-fit: cover;
}
.carden-contact-intro {
  text-align: center;
  font-size: 1.2rem;
  color: #555;
  margin: 0 0 48px;
  line-height: 1.6;
  max-width: 720px;
  padding: 0 16px;
  margin-left: auto;
  margin-right: auto;
}
.carden-contact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  margin: 0 0 48px;
}
@media (max-width: 760px) {
  .carden-contact-grid { grid-template-columns: 1fr; gap: 20px; }
}
.carden-contact-card {
  background: #f7f5ef;
  border-radius: 14px;
  padding: 36px 32px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}
.carden-contact-card-title {
  font-family: Mulish, sans-serif;
  color: var(--cav-green,#2E4A1F);
  font-size: 1.55rem;
  font-weight: 700;
  margin: 0 0 24px;
  padding: 0 0 14px;
  border-bottom: 3px solid var(--cav-gold,#FEC41D);
}
.carden-contact-row {
  margin: 0 0 22px;
  line-height: 1.65;
  font-size: 1.05rem;
  color: #333;
}
.carden-contact-row:last-child { margin-bottom: 0; }
.carden-contact-label {
  display: inline-block;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: #888;
  font-weight: 700;
  margin-bottom: 4px;
}
.carden-contact-row a {
  color: var(--cav-green,#2E4A1F);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.2s ease;
}
.carden-contact-row a:hover {
  border-bottom-color: var(--cav-gold,#FEC41D);
}
.carden-contact-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 700;
  font-size: 1.02rem;
}
.carden-contact-cta-row {
  display: flex;
  gap: 18px;
  justify-content: center;
  flex-wrap: wrap;
  margin: 0 auto 32px;
}
.carden-contact-btn {
  display: inline-block;
  padding: 15px 36px;
  border-radius: 999px;
  font-weight: 700;
  text-decoration: none;
  font-size: 0.95rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  transition: background 0.2s, color 0.2s, border-color 0.2s, transform 0.2s;
  border: 2px solid transparent;
}
.carden-contact-btn:hover { transform: translateY(-1px); }
.carden-contact-btn-primary {
  background: var(--cav-green,#2E4A1F);
  color: #fff;
  border-color: var(--cav-green,#2E4A1F);
}
.carden-contact-btn-primary:hover {
  background: var(--cav-gold,#FEC41D);
  border-color: var(--cav-gold,#FEC41D);
  color: #fff;
}
.carden-contact-btn-secondary {
  background: transparent;
  color: var(--cav-green,#2E4A1F);
  border-color: var(--cav-green,#2E4A1F);
}
.carden-contact-btn-secondary:hover {
  background: var(--cav-green,#2E4A1F);
  color: #fff;
}
/* CARDEN-CONTACT-V1-END */

/* CARDEN-CONTACT-V2-START */
/* Round 38: primary button hover swaps to gold bg (var(--cav-gold,#FEC41D)). White text on
 * gold fails contrast (~1.9:1). Override to dark green text (var(--cav-green,#2E4A1F)) for
 * a ~10:1 ratio. V2 layered on top of V1 via cascade order. */
.carden-contact-btn-primary:hover,
.carden-contact-btn-primary:focus {
  color: var(--cav-green,#2E4A1F);
}
/* CARDEN-CONTACT-V2-END */

/* CARDEN-CONTACT-V3-START */
/* Round 39: V1/V2 lost the cascade to Astra's `.entry-content a {color:var(--cav-green,#2E4A1F)}`
 * (specificity 0,0,2,1). Bump our selectors above that with `body .entry-content
 * a.carden-contact-btn-...` and use !important. */
body .entry-content a.carden-contact-btn-primary,
body .entry-content a.carden-contact-btn-primary:link,
body .entry-content a.carden-contact-btn-primary:visited {
  color: #fff !important;
  background: var(--cav-green,#2E4A1F) !important;
  border-color: var(--cav-green,#2E4A1F) !important;
}
body .entry-content a.carden-contact-btn-primary:hover,
body .entry-content a.carden-contact-btn-primary:focus {
  color: #fff !important;
  background: var(--cav-gold,#FEC41D) !important;
  border-color: var(--cav-gold,#FEC41D) !important;
}
body .entry-content a.carden-contact-btn-secondary,
body .entry-content a.carden-contact-btn-secondary:link,
body .entry-content a.carden-contact-btn-secondary:visited {
  color: var(--cav-green,#2E4A1F) !important;
  background: transparent !important;
  border-color: var(--cav-green,#2E4A1F) !important;
}
body .entry-content a.carden-contact-btn-secondary:hover,
body .entry-content a.carden-contact-btn-secondary:focus {
  color: #fff !important;
  background: var(--cav-green,#2E4A1F) !important;
  border-color: var(--cav-green,#2E4A1F) !important;
}
/* CARDEN-CONTACT-V3-END */

/* CARDEN-FACULTY-PHOTO-V2-START */
/* Round 44: drop rendered photo size to 75% of card width.
 * Was 282px (filling card), now ~211px centred — leaves balanced
 * negative space around each portrait. */
.carden-faculty-card .carden-faculty-photo,
body .carden-faculty-card img.carden-faculty-photo {
  width: 75% !important;
  max-width: 75% !important;
  height: auto !important;
  display: block !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* CARDEN-FACULTY-PHOTO-V2-END */

/* CARDEN-FACULTY-PHOTO-V3-START */
/* Round 45: drop rendered photo size 75% → 70% of card width.
 * V2 stays in place — V3 wins on source order (loads later).
 * Auto margins keep the image centred inside the card. */
.carden-faculty-card .carden-faculty-photo,
body .carden-faculty-card img.carden-faculty-photo {
  width: 70% !important;
  max-width: 70% !important;
  height: auto !important;
  display: block !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* CARDEN-FACULTY-PHOTO-V3-END */

/* CARDEN-FACULTY-LAYOUT-V1-START */
/* Round 45: now that photos are 70% wide and centred, centre the name +
 * role text inside each card so the column reads as a balanced stack
 * (photo / name / role). Also tighten the row-gap on the grid because
 * the smaller photos otherwise leave a lot of vertical white space.
 * The original CARDEN-FACULTY-GRID block sets gap:36px 24px; we override
 * the row component only, leaving the column gap alone. */
.carden-faculty-grid {
  row-gap: 24px !important;
}
.carden-faculty-card,
.carden-faculty-card .carden-faculty-name,
.carden-faculty-card .carden-faculty-role {
  text-align: center !important;
}
/* CARDEN-FACULTY-LAYOUT-V1-END */

/* CARDEN-FACULTY-PHOTO-V4-START */
/* Round 46: photos fill the card width again (was 70% in V3).
 * Modern team-page convention — let the grid gap supply breathing room
 * between cards instead of empty space inside each card. The 8px radius
 * lives in LAYOUT-V2 below. */
.carden-faculty-card .carden-faculty-photo,
body .carden-faculty-card img.carden-faculty-photo {
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
  display: block !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
/* CARDEN-FACULTY-PHOTO-V4-END */

/* CARDEN-FACULTY-LAYOUT-V2-START */
/* Round 46: modern faculty card aesthetic.
 *  - rounded photo corners (8px)
 *  - no underline on names; bolder weight, slightly larger
 *  - softer secondary text on role
 *  - 8px gap between photo / name / role
 *  - subtle hover lift on the whole card
 *  - 5 cols at 1400+, 6 cols at 1700+
 */

/* Photo: rounded corners, smooth hover scale */
.carden-faculty-card .carden-faculty-photo,
body .carden-faculty-card img.carden-faculty-photo {
  border-radius: 8px !important;
  overflow: hidden;
  transition: transform 0.25s ease, filter 0.25s ease;
  margin-bottom: 12px !important;
}

/* Card lift on hover */
.carden-faculty-card {
  transition: transform 0.25s ease;
  cursor: default;
}
.carden-faculty-card:hover {
  transform: translateY(-3px);
}
.carden-faculty-card:hover .carden-faculty-photo {
  filter: brightness(1.03);
  transform: scale(1.01);
}

/* Name: drop underline, slightly larger, bolder, tighter spacing */
.carden-faculty-card .carden-faculty-name,
body .carden-faculty-card .carden-faculty-name {
  text-decoration: none !important;
  font-weight: 700 !important;
  font-size: 1.0rem !important;
  line-height: 1.3 !important;
  margin: 0 0 2px !important;
  color: var(--cav-green,#2E4A1F) !important;
  letter-spacing: 0.01em;
}

/* Role: softer secondary text */
.carden-faculty-card .carden-faculty-role,
body .carden-faculty-card .carden-faculty-role {
  font-size: 0.875rem !important;
  color: #5a5a5a !important;
  font-weight: 400 !important;
  line-height: 1.35 !important;
  margin: 0 !important;
}

/* Wider screens get more columns */
@media (min-width: 1400px) {
  .carden-faculty-grid {
    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
  }
}
@media (min-width: 1700px) {
  .carden-faculty-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  }
}
/* CARDEN-FACULTY-LAYOUT-V2-END */

/* CARDEN-FACULTY-LAYOUT-V3-START */
/* Round 47: cap card size at 200–240px regardless of viewport.
 * `auto-fill` adds/removes columns as the window grows; `minmax(200px,240px)`
 * caps each card so it never balloons. `justify-content: center` parks the
 * grid in the middle of the container when the window is wider than the
 * cards need.
 *
 * This supersedes V2's fixed @media column counts (4/5/6) — V2 stays for
 * marker-rule consistency, V3 wins on cascade. */
.carden-faculty-grid {
  grid-template-columns: repeat(auto-fill, minmax(200px, 240px)) !important;
  justify-content: center !important;
}
/* Single-column phone view — cap card at 240px so it doesn't fill the
 * whole screen on small mobile. */
@media (max-width: 480px) {
  .carden-faculty-grid {
    grid-template-columns: minmax(0, 240px) !important;
    justify-content: center !important;
  }
}
/* CARDEN-FACULTY-LAYOUT-V3-END */

/* CARDEN-CALLOUT-LINKS-V1-START */
/* Make links inside dark / light callout boxes readable.
 * TEXT-ONLY: changes the <a> color (and adds explicit underline).
 * Does NOT touch the callout-box itself — width, padding, margins, and
 * border all stay exactly as they are. */
.callout-box-dark a,
.callout-box-dark a:visited {
  color: #ffffff !important;
  text-decoration: underline !important;
  text-underline-offset: 3px;
}
.callout-box-dark a:hover {
  color: var(--cav-gold,#FEC41D) !important; /* brand gold */
}
.callout-box-light a,
.callout-box-light a:visited {
  color: var(--cav-green,#2E4A1F) !important; /* brand green — readable on light bg */
  text-decoration: underline !important;
}
.callout-box-light a:hover {
  color: var(--cav-green,#2E4A1F) !important;
}
/* CARDEN-CALLOUT-LINKS-V1-END */

/* CARDEN-CALLOUT-TEXT-V1-START */
/* Make body text inside dark callout boxes readable.
 * Sibling to CARDEN-CALLOUT-LINKS-V1 (which handles <a> color).
 * Uses high specificity (`body`) + !important so it wins against any
 * inline style="color: ..." on the imported Finalsite content. */
body .callout-box-dark,
body .callout-box-dark p,
body .callout-box-dark span,
body .callout-box-dark li,
body .callout-box-dark strong,
body .callout-box-dark em,
body .callout-box-dark h1,
body .callout-box-dark h2,
body .callout-box-dark h3,
body .callout-box-dark h4,
body .callout-box-dark h5,
body .callout-box-dark h6 {
  color: #ffffff !important;
}
/* CARDEN-CALLOUT-TEXT-V1-END */

/* CARDEN-ALUMNI-FORM-V4-START */
/* Modern minimal alumni form — <label>-wrapped fields, tight line-height,
 * placeholder hints in every text input. Scoped to .carden-form only. */
.carden-form {
  max-width: 680px;
  margin: 24px auto 48px;
  padding: 0 16px;
  line-height: 1.4;
}

/* Section divider + heading */
.cf-section {
  border-top: 1px solid #e5e5e0;
  padding-top: 22px;
  margin-top: 22px;
}
.cf-section:first-of-type {
  border-top: 0;
  padding-top: 0;
  margin-top: 0;
}
.cf-section-title {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--cav-green,#2E4A1F);
  font-weight: 700;
  margin: 0 0 16px;
}

/* Field — label wraps input. Display block, tight stacking. */
.carden-form .cf-field,
.carden-form label.cf-field {
  display: block;
  margin: 0 0 14px;
  cursor: text;
}
.carden-form .cf-field:last-child { margin-bottom: 0; }

.carden-form .cf-name {
  display: block;
  font-size: 0.78rem;
  font-weight: 600;
  color: #4a4a4a;
  margin-bottom: 5px;
  letter-spacing: 0.01em;
  line-height: 1.3;
}
.carden-form .req { color: #c0392b; font-weight: 700; margin-left: 2px; }
.carden-form .opt { color: #888; font-weight: 400; font-size: 0.72rem; margin-left: 4px; }

/* Inputs */
.carden-form input[type="text"],
.carden-form input[type="email"],
.carden-form input[type="tel"],
.carden-form input[type="number"],
.carden-form input[type="date"],
.carden-form select,
.carden-form textarea {
  display: block;
  width: 100%;
  border: 1px solid #d6d6d0;
  background: #fff;
  border-radius: 5px;
  padding: 9px 12px;
  font-size: 0.95rem;
  font-family: inherit;
  color: #1a1a1a;
  line-height: 1.4;
  box-sizing: border-box;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.carden-form input::placeholder,
.carden-form textarea::placeholder { color: #b0b0a8; }
.carden-form input:focus,
.carden-form select:focus,
.carden-form textarea:focus {
  outline: none;
  border-color: var(--cav-green,#2E4A1F);
  box-shadow: 0 0 0 3px rgba(46, 74, 31, 0.15);
}
.carden-form textarea { resize: vertical; min-height: 70px; }

/* CF7 control wrapper — neutralise inline span layout */
.carden-form .wpcf7-form-control-wrap {
  display: block;
}

/* Field rows */
.cf-row {
  display: grid;
  gap: 14px;
  margin-bottom: 14px;
}
.cf-row > .cf-field { margin-bottom: 0; }
.cf-2     { grid-template-columns: 1fr 1fr; }
.cf-3-1-1 { grid-template-columns: 2fr 1fr 1fr; }

/* Radio */
.carden-form .wpcf7-radio { display: inline-flex; gap: 24px; padding-top: 2px; }
.carden-form .wpcf7-list-item-label { padding-left: 6px; font-weight: 500; }

/* Submit */
.carden-form-submit { margin-top: 32px; text-align: center; }
.carden-form input[type="submit"] {
  background: var(--cav-green,#2E4A1F);
  color: #fff;
  border: 0;
  padding: 12px 40px;
  border-radius: 5px;
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0.04em;
  cursor: pointer;
  transition: background 0.15s;
}
.carden-form input[type="submit"]:hover { background: var(--cav-green,#2E4A1F); }

@media (max-width: 600px) {
  .cf-2, .cf-3-1-1 { grid-template-columns: 1fr; }
}
/* CARDEN-ALUMNI-FORM-V4-END */

/* CARDEN-TYPOGRAPHY-V1-START */
/* Modern balanced typography. Adds Knuth-Plass-style line balancing to
 * prose paragraphs via CSS text-wrap. Browsers without support fall back
 * to the default layout — no breakage. */
.entry-content p,
.entry-content li {
  text-wrap: pretty;
}
/* Headings benefit even more — short headlines should never have an
 * orphan word on the last line. */
.entry-content h1,
.entry-content h2,
.entry-content h3,
.entry-content h4 {
  text-wrap: balance;
}
/* CARDEN-TYPOGRAPHY-V1-END */





/* CARDEN-METHOD-V1-START */
/* Carden Method page (about-cavs/carden-method) — styles ported from
 * mockups/carden-method.html. All selectors scoped via .carden-method-page
 * so they never leak. */
/* Hide Astra's auto-rendered page title so it doesn't duplicate the
 * mockup hero. Page-id-scoped so other pages keep their titles. */
body.page-id-250 .ast-page-title-bar,
body.page-id-250 .ast-archive-description,
body.page-id-250 .entry-header,
body.page-id-250 header.entry-header,
body.page-id-250 h1.entry-title { display: none; }
.carden-method-page {
  font-family: 'Mulish', system-ui, sans-serif;
  line-height: 1.6;
  color: #1a1a1a;
  background: #fcfcfa;
  -webkit-font-smoothing: antialiased;
}
.carden-method-page * { box-sizing: border-box; }
/* Astra's .entry-content max-width — kill it so our hero band runs full bleed. */
body.page .entry-content > .carden-method-page,
.carden-method-page .cm-hero { max-width: none; }
.carden-method-page .cm-hero {
  background: var(--cav-green,#2E4A1F); color: #fff; padding: 96px 24px; text-align: center; position: relative;
}
.carden-method-page .cm-hero .pre {
  font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.2em;
  color: var(--cav-gold,#FEC41D); font-weight: 700; margin: 0 0 16px;
}
.carden-method-page .cm-hero h1 {
  font-size: clamp(2.4rem, 5vw, 3.8rem); font-weight: 800;
  margin: 0 auto 16px; max-width: 720px; line-height: 1.15; color: #fff;
}
.carden-method-page .cm-hero .lede {
  font-size: 1.15rem; max-width: 580px; margin: 0 auto; opacity: 0.85;
}
.carden-method-page .cm-hero::after {
  content: ''; position: absolute; bottom: 36px; left: 50%;
  transform: translateX(-50%); width: 56px; height: 3px;
  background: var(--cav-gold,#FEC41D); border-radius: 2px;
}
.carden-method-page .wrap { max-width: 820px; margin: 0 auto; padding: 64px 24px; }
.carden-method-page .section { padding: 48px 0; border-top: 1px solid #ece9e0; }
.carden-method-page .section:first-of-type { border-top: 0; padding-top: 0; }
.carden-method-page .section-tag {
  font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.16em;
  color: var(--cav-green,#2E4A1F); font-weight: 700; margin: 0 0 12px; display: block;
}
.carden-method-page h2 {
  font-size: 2rem; font-weight: 700; color: var(--cav-green,#2E4A1F);
  margin: 0 0 24px; line-height: 1.2;
}
.carden-method-page p { font-size: 1.08rem; margin: 0 0 20px; }
.carden-method-page .pull {
  background: #F8F3E8; border-left: 4px solid var(--cav-gold,#FEC41D);
  padding: 32px 32px 32px 36px; margin: 32px 0;
  border-radius: 0 8px 8px 0;
}
.carden-method-page .pull p {
  font-size: 1.15rem; font-style: italic; color: var(--cav-green,#2E4A1F); margin: 0;
}
.carden-method-page .pull .attrib {
  font-size: 0.88rem; color: #6a6a6a; font-style: normal; margin: 12px 0 0;
}
.carden-method-page .founders {
  display: grid; grid-template-columns: 200px 1fr; gap: 32px;
  align-items: start; margin: 32px 0; padding: 32px;
  background: #fff; border: 1px solid #ece9e0; border-radius: 10px;
}
.carden-method-page .founders .photo {
  width: 200px; height: 200px; border-radius: 50%; object-fit: cover;
  display: block; background: #e0ddd2;
}
.carden-method-page .founders h3 {
  font-size: 1.4rem; color: var(--cav-green,#2E4A1F); margin: 0 0 6px;
}
.carden-method-page .founders .role {
  font-size: 0.85rem; color: var(--cav-green,#2E4A1F); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.08em; margin: 0 0 14px;
}
.carden-method-page .pillars {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin: 32px 0;
}
.carden-method-page .pillar {
  background: #fff; border: 1px solid #ece9e0; border-radius: 10px; padding: 24px;
}
.carden-method-page .pillar h3 {
  color: var(--cav-green,#2E4A1F); font-size: 1.1rem; margin: 0 0 10px;
}
.carden-method-page .pillar p {
  font-size: 0.95rem; margin: 0; color: #4a4a4a;
}
.carden-method-page .pillar .num {
  font-size: 0.7rem; color: var(--cav-gold,#FEC41D); font-weight: 800; letter-spacing: 0.16em;
}
.carden-method-page .img-wide {
  width: 100%; height: 360px; object-fit: cover; border-radius: 10px;
  margin: 32px 0; background: #e0ddd2; display: block;
}
.carden-method-page .cta {
  display: inline-block; background: var(--cav-green,#2E4A1F); color: #fff;
  padding: 14px 32px; border-radius: 6px; font-weight: 700;
  text-decoration: none; letter-spacing: 0.04em;
}
.carden-method-page .cta:hover { background: var(--cav-green,#2E4A1F); color: #fff; }
.carden-method-page .cta-band { text-align: center; padding: 56px 0; }
@media (max-width: 768px) {
  .carden-method-page .founders { grid-template-columns: 1fr; }
  .carden-method-page .founders .photo { margin: 0 auto; }
  .carden-method-page .pillars { grid-template-columns: 1fr; }
}
/* CARDEN-METHOD-V1-END */

/* CARDEN-HOME-V1-START */

/* Cormorant Garamond for the home page's display headings. */


/* Shared section headings on the home page. */
.cav-home-quote,
.cav-home-alumni,
.cav-home-programs,
.cav-home-stats {
  font-family: 'Quicksand', sans-serif;
}
.cav-section-h2 {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 600;
  font-size: clamp(1.8rem, 3vw, 2.6rem);
  color: var(--cav-green,#2E4A1F);
  margin: 0 0 8px;
  line-height: 1.2;
}
.cav-section-sub {
  font-family: 'Quicksand', sans-serif;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--cav-sage,#8FA67A);
  margin: 0 0 36px;
}

/* ── Quote section ─────────────────────────────────────── */
.cav-home-quote {
  background: #fff;
  padding: 72px 24px 64px;
  text-align: center;
  color: var(--cav-green,#2E4A1F);
}
.cav-quote {
  font-family: 'Cormorant Garamond', serif;
  font-size: clamp(1.6rem, 3vw, 2.2rem);
  font-style: italic;
  font-weight: 400;
  color: var(--cav-green,#2E4A1F);
  margin: 0 auto 12px;
  max-width: 640px;
  line-height: 1.35;
  border: 0;
  padding: 0;
  background: none;
}
.cav-home-quote .cav-quote-attrib {
  font-family: 'Quicksand', sans-serif;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--cav-green-mid,#537331);
  margin: 0 0 28px;
}
.cav-home-quote .cav-mission {
  font-family: 'Quicksand', sans-serif;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--cav-green-mid,#537331);
  max-width: 600px;
  margin: 0 auto 36px;
  line-height: 1.75;
}
.cav-home-quote .cav-quote-cta-wrap { margin: 0; }
.cav-home-quote .cav-cta {
  display: inline-block;
  background: var(--cav-gold,#FEC41D);
  color: var(--cav-green,#2E4A1F);
  font-family: 'Quicksand', sans-serif;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  padding: 12px 32px;
  border-radius: 999px;
  text-decoration: none;
  transition: background 0.15s;
}
.cav-home-quote .cav-cta:hover { background: var(--cav-gold-deep,#E3C05F); }

/* ── Alumni ticker ─────────────────────────────────────── */
.cav-home-alumni {
  background: #fff;
  padding: 56px 0 64px;
  text-align: center;
  border-top: 1px solid #e8e0cc;
}
.cav-home-alumni .cav-section-h2 { margin-bottom: 6px; }
.cav-ticker {
  margin: 12px 0 24px;
  overflow: hidden;
  position: relative;
  -webkit-mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);
          mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);
}
.cav-ticker-track {
  display: flex;
  gap: 28px;
  width: max-content;
  padding: 8px 0;
  animation: cav-ticker-scroll 60s linear infinite;
}
.cav-ticker:hover .cav-ticker-track { animation-play-state: paused; }
.cav-uni { text-decoration: none; flex: 0 0 auto; display: inline-block; }
.cav-uni-card {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 80px;
  min-width: 220px;
  padding: 0 24px;
  background: var(--cav-uni-color, var(--cav-green,#2E4A1F));
  color: #fff;
  border-radius: 8px;
  font-family: 'Quicksand', sans-serif;
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  transition: transform 0.15s, box-shadow 0.15s;
  box-shadow: 0 2px 6px rgba(0,0,0,0.06);
}
.cav-uni:hover .cav-uni-card { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0,0,0,0.14); }
.cav-uni-label { white-space: nowrap; }
@keyframes cav-ticker-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .cav-ticker-track { animation: none; }
  .cav-ticker { -webkit-mask-image: none; mask-image: none; overflow-x: auto; }
}
.cav-alumni-more {
  font-family: 'Quicksand', sans-serif;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin: 16px 0 0;
}
.cav-alumni-more a { color: var(--cav-green-mid,#537331); text-decoration: none; }
.cav-alumni-more a:hover { color: var(--cav-green,#2E4A1F); }

/* ── Programs cards ────────────────────────────────────── */
.cav-home-programs {
  background: #fff;
  padding: 64px 48px 72px;
  border-top: 1px solid #e8e0cc;
}
.cav-programs-head { margin: 0 0 40px; max-width: 1100px; margin-left: auto; margin-right: auto; }
.cav-program-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  max-width: 1100px;
  margin: 0 auto;
}
.cav-program-card {
  border: 1.5px solid var(--cav-gold-deep,#E3C05F);
  border-radius: 10px;
  padding: 28px 24px;
  background: #fff;
  display: flex;
  flex-direction: column;
  transition: border-color 0.15s, transform 0.15s;
}
.cav-program-card:hover { border-color: var(--cav-gold,#FEC41D); transform: translateY(-2px); }
.cav-card-tag {
  font-family: 'Quicksand', sans-serif;
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--cav-green-mid,#537331);
  margin: 0 0 10px;
}
.cav-card-heading {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 600;
  font-size: 1.45rem;
  color: var(--cav-green,#2E4A1F);
  margin: 0 0 12px;
  line-height: 1.2;
}
.cav-card-body {
  font-family: 'Quicksand', sans-serif;
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--cav-green-mid,#537331);
  line-height: 1.7;
  margin: 0 0 20px;
  flex: 1;
}
.cav-card-link {
  font-family: 'Quicksand', sans-serif;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--cav-green,#2E4A1F);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.cav-card-link:hover { color: var(--cav-green-mid,#537331); }

/* ── Stats band ────────────────────────────────────────── */
.cav-home-stats {
  background: var(--cav-green,#2E4A1F);
  padding: 56px 48px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  text-align: center;
}
.cav-stat-num {
  font-family: 'Cormorant Garamond', serif;
  font-size: 3.4rem;
  font-weight: 600;
  color: var(--cav-gold,#FEC41D);
  display: block;
  line-height: 1;
  margin-bottom: 10px;
}
.cav-stat-label {
  font-family: 'Quicksand', sans-serif;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: rgba(255,255,255,0.6);
  line-height: 1.5;
}

/* ── Mobile ────────────────────────────────────────────── */
@media (max-width: 900px) {
  .cav-program-cards { grid-template-columns: 1fr; }
  .cav-home-stats { grid-template-columns: 1fr; gap: 32px; padding: 48px 24px; }
  .cav-home-programs { padding: 48px 20px; }
  .cav-home-quote { padding: 56px 20px; }
  .cav-uni-card { min-width: 180px; height: 72px; font-size: 0.72rem; }
}

/* CARDEN-HOME-V1-END */

/* CARDEN-ALUMNI-TICKER-SPEED-V1-START */

/* With 42 schools the marquee is ~3.5× the length of the 12-school version.
   Scale duration to keep per-card visible time roughly constant. */
.cav-home-alumni .cav-ticker-track {
  animation-duration: 180s !important;
}

/* CARDEN-ALUMNI-TICKER-SPEED-V1-END */

/* CARDEN-ALUMNI-CARDS-V2-START */

/* Each ticker entry is a column: logo card on top, school name below. */
.cav-home-alumni .cav-uni {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  text-decoration: none;
  flex: 0 0 auto;
}

.cav-home-alumni .cav-uni-card {
  background: #fff !important;
  color: #1a1a1a;
  border-radius: 8px;
  border: 1px solid #e8e0cc;
  border-bottom: 4px solid var(--cav-uni-color, var(--cav-green,#2E4A1F));
  height: 96px;
  width: 200px;
  padding: 14px 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 6px rgba(0,0,0,0.04);
  transition: transform 0.2s, box-shadow 0.2s, border-bottom-width 0.2s;
}
.cav-home-alumni .cav-uni:hover .cav-uni-card {
  transform: translateY(-3px);
  box-shadow: 0 10px 22px rgba(0,0,0,0.10);
  border-bottom-width: 6px;
}

.cav-home-alumni .cav-uni-card-img img {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}

.cav-home-alumni .cav-uni-card-text .cav-uni-label {
  font-family: 'Quicksand', sans-serif;
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--cav-uni-color, var(--cav-green,#2E4A1F));
  white-space: nowrap;
  text-align: center;
  line-height: 1.2;
}

/* New label below each card */
.cav-home-alumni .cav-uni-name {
  font-family: 'Quicksand', sans-serif;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  color: var(--cav-green,#2E4A1F);
  text-align: center;
  max-width: 200px;
  line-height: 1.25;
  text-transform: none;
  white-space: nowrap;
  transition: color 0.15s;
}
.cav-home-alumni .cav-uni:hover .cav-uni-name { color: var(--cav-green-mid,#537331); }

@media (max-width: 900px) {
  .cav-home-alumni .cav-uni-card { height: 84px; width: 170px; padding: 10px 14px; }
  .cav-home-alumni .cav-uni-name { font-size: 0.66rem; max-width: 170px; }
}

/* CARDEN-ALUMNI-CARDS-V2-END */

/* CARDEN-POLISH-V1-START */

/* 1) Nuke underlines on alumni ticker text — Astra puts an underline on
      every link inside .entry-content. The card area should read as
      icon + label, not a hyperlink. */
.cav-home-alumni .cav-uni,
.cav-home-alumni .cav-uni:hover,
.cav-home-alumni .cav-uni:focus,
.cav-home-alumni .cav-uni-name,
.cav-home-alumni .cav-uni-name:hover {
  text-decoration: none !important;
}

/* 2) Nuke underlines on the header pills (Schedule a Tour / Summer 2026)
      and on the quote-section CTA. Same Astra source. */
.cav-header .cav-pill,
.cav-header .cav-pill:hover,
.cav-header .cav-pill:focus,
.cav-home-quote .cav-cta,
.cav-home-quote .cav-cta:hover {
  text-decoration: none !important;
}

/* 3) Bump header pill size to match the home-page Schedule a Tour CTA.
      The two should read as the same control. */
/* R177: header .cav-pill sizing + 900px shrink moved to carden-foundation.css (no !important) */

/* 4) Stats band stays 3-column down to phone widths.
      CARDEN-HOME-V1 collapses at 900px which kicked in too early on
      tablets/small laptops. Push the collapse point to 540px and tighten
      number/label sizes in the middle range so they don't crowd. */
.cav-home-stats {
  grid-template-columns: repeat(3, 1fr) !important;
}
@media (max-width: 900px) {
  .cav-home-stats {
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 16px !important;
    padding-top: 40px !important;
    padding-bottom: 40px !important;
  }
  .cav-home-stats .cav-stat .cav-stat-num,
  .cav-home-stats .stat-num { font-size: 2.6rem !important; }
  .cav-home-stats .cav-stat .cav-stat-label,
  .cav-home-stats .stat-label { font-size: 0.68rem !important; }
}
@media (max-width: 540px) {
  .cav-home-stats {
    grid-template-columns: 1fr !important;
    gap: 28px !important;
  }
  .cav-home-stats .cav-stat .cav-stat-num,
  .cav-home-stats .stat-num { font-size: 3rem !important; }
  .cav-home-stats .cav-stat .cav-stat-label,
  .cav-home-stats .stat-label { font-size: 0.75rem !important; }
}

/* CARDEN-POLISH-V1-END */

/* CARDEN-HOME-FULLBLEED-V1-START */

/* Stats band + hero cover: both span the full viewport edge-to-edge.
   body has overflow-x: hidden so any scrollbar-width overhang is clipped.

   The stats band content is constrained to 1200px via auto-padding so it
   aligns visually with the footer content column. The hero cover keeps
   its content positioning as-is (Astra/Gutenberg handles the inner image
   layout). */
.cav-home-stats,
body.home .wp-block-cover.alignfull,
body.home .entry-content > .wp-block-cover {
  width: 100vw !important;
  max-width: none !important;
  position: relative !important;
  left: 50% !important;
  right: 50% !important;
  margin-left: -50vw !important;
  margin-right: -50vw !important;
  transform: none !important;
}

/* Stats-specific: keep inner content capped at 1200px to match the
   footer content column. */
.cav-home-stats {
  margin-bottom: 0 !important;
  padding-top: 56px !important;
  padding-bottom: 56px !important;
  padding-left: max(48px, calc((100vw - 1200px) / 2)) !important;
  padding-right: max(48px, calc((100vw - 1200px) / 2)) !important;
}

/* Zero out any bottom margin/padding between #primary and the footer
   so the stats band sits flush against the gold hairline. */
body.home #primary,
body.home .content-area,
body.home .content-area.primary,
body.home main#main,
body.home .site-main,
body.home .ast-container,
body.home .site-content > .ast-container,
body.home .entry-content,
body.home .ast-article-single,
body.home article.post-246 {
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
}
body.home .entry-content > *:last-child { margin-bottom: 0 !important; }

/* Belt-and-braces: ensure horizontal overflow stays hidden so the
   scrollbar-width overhang from full-bleed elements doesn't introduce
   a horizontal scrollbar. */
html, body { overflow-x: hidden !important; }

/* CARDEN-HOME-FULLBLEED-V1-END */

/* CARDEN-ALUMNI-V3-START — Round 67. Additive overrides for the home
 * alumni ticker. Cascades AFTER CARDEN-HOME-V1 and
 * CARDEN-ALUMNI-CARDS-V2 (which we leave untouched per the marker rule).
 *
 * Effects:
 *   - Half marquee speed (60s → 120s).
 *   - No pause on hover; cursor stays default; no lift.
 *   - Strip the white box / border / shadow — just the logo on cream.
 *   - Defensively hide .cav-uni-name in case any cache renders the
 *     old markup before refresh.
 */
.cav-home-alumni .cav-ticker-track {
  animation-duration: 120s !important;
}
.cav-home-alumni .cav-ticker:hover .cav-ticker-track {
  animation-play-state: running !important;
}
.cav-home-alumni .cav-uni {
  pointer-events: none !important;
  cursor: default !important;
  gap: 0 !important;
}
.cav-home-alumni .cav-uni-card {
  background: transparent !important;
  border: 0 !important;
  border-bottom: 0 !important;
  box-shadow: none !important;
  transform: none !important;
  transition: none !important;
}
.cav-home-alumni .cav-uni:hover .cav-uni-card {
  transform: none !important;
  box-shadow: none !important;
  border-bottom-width: 0 !important;
}
.cav-home-alumni .cav-uni-name { display: none !important; }
/* CARDEN-ALUMNI-V3-END */

/* CARDEN-FOOTER-V3-START — Round 67. Additive footer overrides.
 * Cascades AFTER CARDEN-FOOTER-COLOR-V1 (kept intact).
 *
 *   - School name uses Cormorant Garamond (Cormorant is already
 *     @imported by CARDEN-HOME-V1; just opt in here).
 *   - Invert link colors: white default → bright gold hover.
 *     CARDEN-FOOTER-COLOR-V1 set yellow default / white hover; this
 *     flips it. Tagline rule kept around in case markup is rolled back.
 */
.site-footer .carden-footer-school-name,
.site-footer .carden-footer-school-name a {
  font-family: 'Cormorant Garamond', serif !important;
  font-weight: 600 !important;
  font-size: 1.6rem !important;
  letter-spacing: 0.01em !important;
  line-height: 1.1 !important;
  color: #ffffff !important;
}
.site-footer .carden-footer-school-name a { text-decoration: none !important; }
.site-footer .carden-footer-school-name a:hover { color: var(--cav-gold,#FEC41D) !important; }

/* Invert all footer links */
.site-footer a,
.site-footer .carden-footer-info a,
.site-footer .carden-footer-meta a {
  color: #ffffff !important;
}
.site-footer a:hover,
.site-footer .carden-footer-info a:hover,
.site-footer .carden-footer-meta a:hover {
  color: var(--cav-gold,#FEC41D) !important;
}
/* CARDEN-FOOTER-V3-END */

/* CARDEN-ALUMNI-LOGO-SIZE-V1-START */
body .cav-home-alumni .cav-uni-card-img img {
  max-height: 48px !important;
  max-width: 160px !important;
  width: auto !important;
  height: auto !important;
  object-fit: contain !important;
}
/* CARDEN-ALUMNI-LOGO-SIZE-V1-END */

/* CARDEN-FOOTER-V5-START */
.site-footer, footer.site-footer,
.site-footer .site-primary-footer-wrap, .site-footer .site-below-footer-wrap,
.site-footer .site-primary-footer-inner-wrap, .site-footer .site-below-footer-inner-wrap,
.site-footer .ast-builder-grid-row-container, .site-footer .ast-builder-grid-row,
.site-footer .ast-builder-footer-grid-columns, .site-footer .ast-footer-copyright,
.site-footer [class*="footer-wrap"], .site-footer [class*="footer-section"] {
  background: var(--cav-green,#2E4A1F) !important; background-image: none !important; color: #fff;
}
footer.site-footer { border-top: 2px solid var(--cav-gold,#FEC41D) !important; }
.site-below-footer-wrap { border-top: none !important; }

.site-footer .carden-footer-grid-v2 {
  display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr 1fr;
  gap: 32px; max-width: 1240px; margin: 0 auto; padding: 40px 24px 20px;
  color: #fff; font-family: 'Quicksand', sans-serif; text-align: left;
}
.site-footer .carden-footer-info { display: flex; flex-direction: column; align-items: flex-start; }
.site-footer .carden-footer-logo { display: block; width: 200px; height: auto; max-width: 100%; margin: 0 0 12px; }
.site-footer .carden-footer-col h4.carden-footer-h {
  font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .12em;
  margin: 0 0 12px; color: #fff; border-bottom: 2px solid var(--cav-gold,#FEC41D); padding-bottom: 6px; display: inline-block;
}
.site-footer .carden-footer-col h4.carden-footer-h a { color: #fff !important; text-decoration: none !important; }
.site-footer .carden-footer-col h4.carden-footer-h a:hover { color: var(--cav-gold,#FEC41D) !important; }
.site-footer .carden-footer-col ul { list-style: none; margin: 0; padding: 0; }
.site-footer .carden-footer-col li { margin: 0 0 6px; }
.site-footer .carden-footer-col a { color: #fff; text-decoration: none; font-size: .88rem; opacity: .92; transition: opacity .15s, color .15s; }
.site-footer .carden-footer-col a:hover { opacity: 1; color: var(--cav-gold,#FEC41D); }
.site-footer .carden-footer-info p.carden-footer-school-name { font-size: 1.15rem; font-weight: 800; margin: 0 0 6px; }
.site-footer .carden-footer-info p.carden-footer-school-name a { color: #fff; text-decoration: none; }
.site-footer .carden-footer-info p.carden-footer-tagline { font-style: italic; font-size: .85rem; opacity: .85; margin: 0 0 14px; line-height: 1.45; }
.site-footer .carden-footer-meta div { font-size: .85rem; margin-bottom: 4px; opacity: .92; }
.site-footer .carden-footer-meta a, .site-footer .carden-footer-info a { color: #fff; }
.site-footer .carden-footer-meta a:hover { color: var(--cav-gold,#FEC41D); }
.site-footer .carden-footer-social { display: flex; flex-direction: row; gap: 12px; margin: 10px 0 0; padding: 0; list-style: none; align-items: center; }
.site-footer .carden-footer-social li { margin: 0; padding: 0; list-style: none; }
.site-footer .carden-footer-social a { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,.10) !important; border: 1px solid rgba(255,255,255,.20) !important; color: #fff; transition: background .15s, border-color .15s; }
.site-footer .carden-footer-social a:hover { background: rgba(255,255,255,0.10) !important; border-color: var(--cav-gold,#FEC41D) !important; color: var(--cav-gold,#FEC41D) !important; }
.site-footer .carden-footer-social a svg { width: 20px; height: 20px; fill: currentColor; }
.site-footer .carden-footer-subrow { display: none !important; }

/* Stacked: info centered full-width; the link columns become a CENTERED
   BLOCK (equal margins) with links left-justified. */
@media (max-width: 1024px) {
  .site-footer .carden-footer-grid-v2 { grid-template-columns: max-content max-content; justify-content: center; column-gap: 72px; }
  .site-footer .carden-footer-info { grid-column: 1 / -1; align-items: center; text-align: center; }
  .site-footer .carden-footer-col:not(.carden-footer-info) { text-align: left; }
}
@media (max-width: 600px) {
  .site-footer .carden-footer-grid-v2 { column-gap: 28px; padding: 32px 18px 56px; }
}
@media (max-width: 330px) {
  .site-footer .carden-footer-grid-v2 { grid-template-columns: max-content; }
}

.home .entry-content { padding-top: 0 !important; margin-top: 0 !important; }
.home .site-main { margin-top: 0 !important; padding-top: 0 !important; }
.home .ast-article-single { margin-top: 0 !important; padding-top: 0 !important; }
/* CARDEN-FOOTER-V5-END */

/* CARDEN-HEADER-V16-START */
body.cav-header-v16 header#masthead.site-header,
body.cav-header-v16 #ast-mobile-header,
body.cav-header-v16 #ast-desktop-header,
body.cav-header-v16 .ast-mobile-header-wrap { display: none !important; }

.cav-header { background: var(--cav-green-mid,#537331); position: relative; z-index: 100; font-family: 'Quicksand', sans-serif; }
.cav-header .cav-header-grid { display: grid; grid-template-columns: 1fr 200px 1fr; column-gap: 28px; align-items: center; padding: 14px 28px 20px; }
.cav-header .cav-side { display: flex; flex-direction: column; gap: 18px; }
.cav-header .cav-left  { grid-column: 1; justify-self: end;   align-items: flex-start; }
.cav-header .cav-right { grid-column: 3; justify-self: start; align-items: flex-end;   }
.cav-header .cav-pill { font-family: 'Quicksand', sans-serif; font-size: 0.74rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; padding: 10px 24px; border-radius: 999px; border: none; text-decoration: none; display: inline-block; transition: background 0.15s; white-space: nowrap; line-height: 1.1; }
.cav-header .cav-pill-gold { background: var(--cav-gold,#FEC41D); color: var(--cav-green,#2E4A1F); }
.cav-header .cav-pill-gold:hover { background: var(--cav-gold-deep,#E3C05F); }
.cav-header .cav-pill-dark { background: var(--cav-green,#2E4A1F); color: #fff; }
.cav-header .cav-pill-dark:hover { background: var(--cav-sage,#8FA67A); }
.cav-header .cav-nav-row { display: flex; }
.cav-header .cav-menu { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 34px; }
.cav-header .cav-menu-item { position: relative; }
.cav-header .cav-menu > li > a { font-family: 'Quicksand', sans-serif; font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em; color: #fff; text-decoration: none; white-space: nowrap; transition: color 0.15s; display: inline-flex; align-items: center; gap: 4px; padding: 4px 0; }
.cav-header .cav-menu > li > a:hover { color: var(--cav-gold,#FEC41D); }
.cav-header .cav-caret { font-size: 0.7em; opacity: 0.8; }
.cav-header .cav-submenu { position: absolute; top: calc(100% + 6px); left: 0; min-width: 240px; background: #fff; border-radius: 6px; box-shadow: 0 8px 24px rgba(0,0,0,0.18); padding: 10px 0; margin: 0; list-style: none; opacity: 0; visibility: hidden; transform: translateY(-4px); transition: opacity 0.15s, transform 0.15s, visibility 0.15s; z-index: 50; }
.cav-header .cav-right .cav-submenu { left: auto; right: 0; }
.cav-header .cav-has-children:hover > .cav-submenu, .cav-header .cav-has-children:focus-within > .cav-submenu { opacity: 1; visibility: visible; transform: translateY(0); }
.cav-header .cav-submenu li { margin: 0; }
.cav-header .cav-submenu a { display: block; padding: 8px 18px; color: var(--cav-green,#2E4A1F); text-decoration: none; font-size: 0.82rem; font-weight: 600; letter-spacing: 0.04em; white-space: nowrap; transition: background 0.1s, color 0.1s; }
.cav-header .cav-submenu a:hover { background: #F8F3E8; color: var(--cav-green-mid,#537331); }
.cav-header .cav-logo-wrap { position: absolute; left: 50%; transform: translateX(-50%); top: 8px; z-index: 20; line-height: 0; }
.cav-header .cav-logo { width: 200px; height: 200px; display: block; object-fit: contain; background: transparent; }

/* Compact desktop tier — hold the dropdowns down to ~650px. */
@media (min-width: 600px) and (max-width: 1100px) {
  .cav-header .cav-header-grid { column-gap: 12px; padding: 12px 12px 18px; }
  .cav-header .cav-menu { gap: 16px; }
  .cav-header .cav-menu > li > a { font-size: 0.68rem; letter-spacing: 0.06em; }
}

.cav-header .cav-mobile-toggle { display: none; }
.cav-header .cav-mobile-menu  { display: none; }

@media (max-width: 599px) {
  body:not(.home) .site-main { padding-top: 70px; }
  .cav-header .cav-header-grid { display: none; }
  .cav-header { padding: 12px 16px; min-height: 54px; position: relative; overflow: visible; }
  .cav-header .cav-logo-wrap { position: absolute; left: 50%; transform: translateX(-50%); top: 6px; }
  .cav-header .cav-logo { width: 120px; height: 120px; }
  .cav-header .cav-mobile-toggle { display: inline-flex; flex-direction: column; justify-content: space-around; width: 36px; height: 28px; background: transparent; border: none; cursor: pointer; position: absolute; left: 16px; top: 13px; padding: 0; z-index: 30; }
  .cav-header .cav-bar { display: block; width: 100%; height: 3px; background: #fff; border-radius: 2px; }
  .cav-header .cav-mobile-menu { display: block; position: absolute; top: 100%; left: 0; right: 0; background: var(--cav-green,#2E4A1F); padding: 16px; z-index: 999; max-height: 80vh; overflow-y: auto; }
  .cav-header .cav-mobile-menu[hidden] { display: none; }
  .cav-header .cav-mobile-cta { display: block; margin: 0 0 10px; text-align: center; }
  /* Parent rows: tap to EXPAND (summary is text, not a link). */
  .cav-header .cav-mobile-item { color: #fff; border-bottom: 1px solid rgba(255,255,255,0.1); padding: 8px 0; }
  .cav-header .cav-mobile-item summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; }
  .cav-header .cav-mobile-item summary::-webkit-details-marker { display: none; }
  .cav-header .cav-mobile-item summary .cav-mobile-parent { color: #fff; font-weight: 700; font-size: 0.95rem; text-transform: uppercase; letter-spacing: 0.06em; flex: 1; }
  .cav-header .cav-mobile-item summary .cav-caret { color: #fff; opacity: 0.9; transition: transform 0.15s; }
  .cav-header .cav-mobile-item[open] summary .cav-caret { transform: rotate(180deg); }
  .cav-header .cav-mobile-item ul { list-style: none; padding: 8px 0 0 14px; margin: 0; }
  .cav-header .cav-mobile-item ul a { color: rgba(255,255,255,0.88); text-decoration: none; font-size: 0.88rem; display: block; padding: 6px 0; }
  /* Parent rows with no children: direct link. */
  .cav-header a.cav-mobile-link { display: block; color: #fff; text-decoration: none; font-weight: 700; font-size: 0.95rem; text-transform: uppercase; letter-spacing: 0.06em; padding: 8px 0; border-bottom: 1px solid rgba(255,255,255,0.1); }
}
.cav-header + section, .cav-header + .wp-block-cover, .cav-header + main, .cav-header + article { position: relative; }
/* CARDEN-HEADER-V16-END */

/* CARDEN-TOUR-BTN-V1-START — single source of truth for the gold "Schedule a Tour" content button. */
.cav-tour-btn { display:inline-block; background:var(--cav-gold,#FEC41D); color:var(--cav-green,#2E4A1F); font-family:'Quicksand',sans-serif; font-size:0.78rem; font-weight:700; letter-spacing:0.12em; text-transform:uppercase; padding:12px 32px; border-radius:999px; border:none; line-height:1.1; text-decoration:none; transition:background .15s ease; cursor:pointer; }
/* Hover = sage var(--cav-sage,#8FA67A) — matches the canonical Schedule-a-Tour hover that the
 * carden-styles-override mu-plugin enforces on the header/mobile/home buttons. */
.cav-tour-btn:hover, .cav-tour-btn:focus { background:var(--cav-sage,#8FA67A); color:var(--cav-green,#2E4A1F); text-decoration:none; }
/* Beat the global `.entry-content a` underline (0,1,1) with (0,2,1) — no !important. */
.entry-content a.cav-tour-btn, .entry-content a.cav-tour-btn:hover, .entry-content a.cav-tour-btn:focus { color:var(--cav-green,#2E4A1F); text-decoration:none; }
/* CARDEN-TOUR-BTN-V1-END */

/* CARDEN-HOS-V2-END */






/* ===== end R278 migrated block — original foundation.css follows ===== */
/* ============================================================================
   carden-foundation.css  —  Carden Arbor View design foundation
   Round 106 (2026-06-08), step 1.  Loaded by carden-foundation.php as a
   VERSIONED external stylesheet, printed at wp_head priority 1000 (after the
   999 inline override + post-758 custom_css) so it wins the cascade by source
   order — never with !important.

   THIS STEP IS ADDITIVE / ZERO-VISUAL:
     - the :root tokens below are defined but not yet referenced anywhere, so
       defining them changes nothing on screen;
     - .cav-h-light is a new class and no markup uses it yet.
   Later steps repoint the existing button/heading/color rules to these tokens
   and migrate blocks out of post 758 into this file.
   ========================================================================== */

:root {
  /* --- Brand palette (authoritative). Brand green is currently hard-coded
         111x across post 758; this is the single place it should live. ------ */
  --cav-green:        #2E4A1F;   /* primary brand green */
  --cav-green-mid:    #537331;   /* mid green (waitlist box, accents) */
  --cav-sage:         #8FA67A;   /* sage — canonical button hover */
  --cav-cream:        #F8F3E8;   /* warm cream section background */
  --cav-gold:         #FEC41D;   /* brand gold (tour button, pill-gold) */
  --cav-gold-deep:    #E3C05F;   /* deep gold (current header pill-gold hover) */
  --cav-white:        #FFFFFF;
  --cav-ink:          #1A1A1A;   /* body text dark */
  /* Banned / off-brand colors to retire via these tokens in step 3:
     #f0b323 (old gold, still live 18x), #003822, #e87822, #5A7347. */

  /* --- Type system (reference; applied in step 4). --------------------------
     display = headings (Cormorant), body = prose (Mulish), ui = labels/buttons
     /nav (Quicksand). Today the heading font is set with !important in 3+
     places — step 4 collapses that to one declaration using --cav-font-display. */
  --cav-font-display: 'Cormorant Garamond', Georgia, serif;
  --cav-font-body:    'Mulish', system-ui, sans-serif;
  --cav-font-ui:      'Quicksand', sans-serif;

  /* --- Button tokens. Values = the current CONTENT buttons (.cav-tour-btn /
         .cav-btn): the larger, canonical size. The header .cav-pill is today
         smaller (.74rem / .1em / 10px 24px, #E3C05F gold hover) — left as-is
         until step 2 resolves "unify vs keep header smaller." ---------------- */
  --cav-btn-font:     var(--cav-font-ui);
  --cav-btn-size:     0.78rem;
  --cav-btn-weight:   700;
  --cav-btn-tracking: 0.12em;
  --cav-btn-pad-y:    12px;
  --cav-btn-pad-x:    32px;
  --cav-btn-radius:   999px;
  --cav-btn-hover:    var(--cav-sage);  /* canonical hover for both buttons */

  /* --- Spacing scale (reference for new sections). ------------------------- */
  --cav-space-sm: 12px;
  --cav-space-md: 24px;
  --cav-space-lg: 48px;
  --cav-space-xl: 80px;
}

/* NOTE on breakpoints: CSS custom properties CANNOT be used inside @media
   conditions, so breakpoints are a documented convention, not tokens. Author
   new media queries on this standard scale (consolidating the ~15 ad-hoc
   values now in post 758):
       <= 600px   phones / hamburger
       <= 900px   tablet
       <= 1100px  small desktop / compact nav tier
   Keep mobile-first; only add a width when layout actually needs it. */

/* ============================================================================
   Shared utilities
   ========================================================================== */

/* .cav-h-light — white headings for dark/green sections. Replaces per-section
   color overrides. The base rule covers home + non-entry-content contexts; the
   high-specificity rule (0,4,1) beats the site-wide interior-green heading rule
   `.page:not(.home) .entry-content h2 { color:#2E4A1F }` (0,3,1) WITHOUT
   !important, the way the override gotchas memo prescribes. Unused until a
   section opts in by adding class="cav-h-light", so this is zero-visual today. */
.cav-h-light,
.cav-h-light h1, .cav-h-light h2, .cav-h-light h3, .cav-h-light h4 {
  color: var(--cav-white);
}
.page:not(.home) .entry-content .cav-h-light h1,
.page:not(.home) .entry-content .cav-h-light h2,
.page:not(.home) .entry-content .cav-h-light h3,
.page:not(.home) .entry-content .cav-h-light h4 {
  color: var(--cav-white);
}

/* ============================================================================
   Buttons — single definition (round 107)
   Gold .cav-tour-btn + green .cav-btn content buttons AND the header .cav-pill
   family, all from the tokens, all at the unified content-button size (Dennis:
   "all identical"). Foundation loads at wp_head 1000 (after post 758 + the 999
   override) so these win by source order — no !important. Parity step: the live
   pills already compute to .78rem / 12·32px, so nothing should move except a
   hair more letter-spacing on the pills (.1em -> .12em, intentional). Round 109
   removes the now-duplicate rules from post 758 + the override plugin.
   ========================================================================== */

/* Shared shape + typography for every button and header pill */
.cav-tour-btn,
.cav-btn,
.cav-header .cav-pill {
  display: inline-block;
  font-family: var(--cav-font-ui);
  font-size: var(--cav-btn-size);
  font-weight: var(--cav-btn-weight);
  letter-spacing: var(--cav-btn-tracking);
  text-transform: uppercase;
  line-height: 1.1;
  padding: var(--cav-btn-pad-y) var(--cav-btn-pad-x);
  border: none;
  border-radius: var(--cav-btn-radius);
  text-decoration: none;
  cursor: pointer;
  transition: background .15s ease;
}

/* Gold variant: gold bg / green text (tour content button + header gold pill) */
.cav-tour-btn,
.cav-header .cav-pill-gold { background: var(--cav-gold); color: var(--cav-green); }
/* Green variant: green bg / white text (green content button + header dark pill) */
.cav-btn,
.cav-header .cav-pill-dark { background: var(--cav-green); color: var(--cav-white); }

/* Hover = sage for both content buttons (matches the override's pill hover). */
.cav-tour-btn:hover, .cav-tour-btn:focus { background: var(--cav-btn-hover); color: var(--cav-green); }
.cav-btn:hover, .cav-btn:focus { background: var(--cav-btn-hover); color: var(--cav-white); }

/* Header pills: body-prefixed (0,2,1) to out-rank the post-758 pill rules (0,2,0)
   — equal-or-higher specificity + later source order wins, no !important. */
body .cav-header .cav-pill {
  font-size: var(--cav-btn-size);
  letter-spacing: var(--cav-btn-tracking);
  padding: var(--cav-btn-pad-y) var(--cav-btn-pad-x);
  border-radius: var(--cav-btn-radius);
  white-space: nowrap;
}
body .cav-header .cav-pill-gold { background: var(--cav-gold); color: var(--cav-green); }
body .cav-header .cav-pill-dark { background: var(--cav-green); color: var(--cav-white); }

/* Content buttons live in .entry-content, whose global `a` styling adds color +
   underline. They already dodge it via the .cav-pill marker class; keep an
   explicit guard at matching specificity so text/underline stay correct. */
.entry-content a.cav-tour-btn, .entry-content a.cav-tour-btn:hover, .entry-content a.cav-tour-btn:focus { color: var(--cav-green); text-decoration: none; }
.entry-content a.cav-btn, .entry-content a.cav-btn:hover, .entry-content a.cav-btn:focus { color: var(--cav-white); text-decoration: none; }

/* Round 133 — content-button text-color guard. The override plugin's interior-
   link rule (body .entry-content a:not(.cav-cta):not(.cav-pill)...:not([class*=footer-]))
   forces every content link to brand green; its exclusion list predates the
   unified button classes and never excluded .cav-btn / .cav-tour-btn, so the
   green .cav-btn rendered green-on-green (text invisible until :hover swapped the
   bg to sage). Re-assert canonical button text at MATCHING (0,8,2) specificity;
   foundation loads at wp_head 1000 (later source order) so it wins, no !important.
   The trailing :not() chain mirrors that rule purely to match its specificity. */
body .entry-content a.cav-btn:not(.cav-cta):not(.cav-pill):not(.carden-cta-pill):not(.carden-btn):not(.cav-card-link):not(.cav-uni),
body .entry-content a.cav-btn:not(.cav-cta):not(.cav-pill):not(.carden-cta-pill):not(.carden-btn):not(.cav-card-link):not(.cav-uni):hover,
body .entry-content a.cav-btn:not(.cav-cta):not(.cav-pill):not(.carden-cta-pill):not(.carden-btn):not(.cav-card-link):not(.cav-uni):focus { color: var(--cav-white); }
body .entry-content a.cav-tour-btn:not(.cav-cta):not(.cav-pill):not(.carden-cta-pill):not(.carden-btn):not(.cav-card-link):not(.cav-uni),
body .entry-content a.cav-tour-btn:not(.cav-cta):not(.cav-pill):not(.carden-cta-pill):not(.carden-btn):not(.cav-card-link):not(.cav-uni):hover,
body .entry-content a.cav-tour-btn:not(.cav-cta):not(.cav-pill):not(.carden-cta-pill):not(.carden-btn):not(.cav-card-link):not(.cav-uni):focus { color: var(--cav-green); }

/* ============================================================================
   Headings — all-caps section/page headings (round 109)
   Dennis: all-caps site-wide. Font stays Cormorant (already set site-wide via
   the override). Applied to page/section headings + the named section-heading
   classes; sub-headings (h3/h4), the footer school name, and nav stay in their
   natural case. Foundation loads at wp_head 1000, so this wins with no
   !important. Slight tracking added because all-caps serif reads tight.
   ========================================================================== */
body .entry-content h1, body .entry-content h2,
body .cav-section-h2, body .cav-card-heading,
body .pc-hero h1, body .cm-hero h1,
body .carden-method-page h2 {
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

/* ============================================================================
   Round 110 — mobile polish (on-device feedback, 2026-06-08)
   1) home program labels (.cav-card-tag) were too small (10.88px);
   2) all-caps H1s read too large on phones — trim hero/H1 <=600px;
   3) more interior top clearance so the hanging crest can't clip page text (HoS);
   4) breathing room on the green Admissions waitlist box on phones.
   All win by source order (foundation loads at wp_head 1000) — no !important.
   ========================================================================== */

/* 1) Program card labels — bump from 0.68rem; scoped to the home program cards */
body .cav-program-card .cav-card-tag { font-size: 0.82rem; letter-spacing: 0.14em; }

@media (max-width: 600px) {
  /* 2) trim oversized all-caps H1 / hero names on phones (was ~2.2rem) */
  body .hos-2026 .hos-name,
  body .adm-2026 .adm-hero__text h1,
  body .entry-content h1 { font-size: 1.85rem; line-height: 1.1; }

  /* 3) clear the 120px hanging crest on interior pages (was 70px) */
  body:not(.home) .site-main { padding-top: 90px; }

  /* 4) green waitlist box — inset from the screen edges + roomier text padding */
  body .adm-2026 .adm-waitlist { padding: 32px 16px; }
  body .adm-2026 .adm-waitlist__inner { padding: 32px 24px; }
}

/* ============================================================================
   Round 111 — interior crest clearance on DESKTOP (>=601px)
   The 200px crest hangs ~90px below the header (crest bottom y=240, header
   bottom y=151). On interior pages (no hero) it overlapped the top content
   (Head of School eyebrow/name + other pages). Push interior content below the
   crest so it reads as a badge above the content. Home is excluded (the crest
   is meant to sit over the hero there). Mobile keeps its own clearance above.
   ========================================================================== */
@media (min-width: 601px) {
  /* Interior crest clearance, dialed in (round 112): .site-main starts ~60px below
     the header and the crest only pokes ~29px past that, so ~56px gives a clean
     ~30px gap above content (was 104 = too much). */
  body:not(.home) .site-main { padding-top: 56px; }
  body .hos-2026 .hos-intro { padding-top: 8px; }

  /* Trim oversized all-caps H1s on desktop (round 112) — all-caps read large at
     the old clamp maxes (48-53px). */
  body .hos-2026 .hos-name { font-size: clamp(2rem, 3vw, 2.5rem); }
  body .adm-2026 .adm-hero__text h1 { font-size: clamp(2rem, 3.2vw, 2.6rem); }
  body .cm-hero h1, body .pc-hero h1 { font-size: clamp(2rem, 3.2vw, 2.6rem); }
}

/* HoS portrait: when the intro stacks (<=900px) the photo went full-width because
   the site rule `.page:not(.home) .entry-content img { max-width:100% }` (0,3,1)
   beat the page's `.hos-intro__photo { max-width:300px }` (0,2,0). Re-assert the
   cap at matching (0,3,1) specificity; foundation loads last so it wins, no !important. */
@media (max-width: 900px) {
  body:not(.home) .hos-2026 .hos-intro__photo { max-width: 300px; margin-left: auto; margin-right: auto; }
}

/* ============================================================================
   Interior-page design system (round 118) — .cav-page
   Shared look for the About CAVS (and other interior) pages so they match the
   home/Tori pages and each other: hero, cream/white section rhythm, eyebrow +
   Cormorant headings (color + all-caps inherited from the global rules), lead
   text, media+text split, styled quote, card grid, CTA band, framed images
   with sensible display sizes. Lives in foundation = change once, applies to
   every interior page that uses these classes.
   ========================================================================== */
body .cav-page { font-family: var(--cav-font-ui, 'Quicksand', sans-serif); color:#2a2a2a; line-height:1.6; -webkit-font-smoothing:antialiased; }
.cav-page *, .cav-page *::before, .cav-page *::after { box-sizing:border-box; }
.cav-page .cavp-wrap { max-width:1120px; margin:0 auto; padding:0 24px; }
.cav-page .cavp-narrow { max-width:760px; margin:0 auto; }
.cav-page .cavp-center { text-align:center; }

/* Full-bleed: section background bands run edge-to-edge (matching the Admissions
   & Middle School pages); inner content stays constrained to .cavp-wrap (~1120),
   aligned with the header. Removes Astra's default .entry-content max-width on any
   .cav-page page automatically (:has), so every rolled-out page is uniform. */
body:not(.home) .entry-content:has(.cav-page) { max-width: none; }

/* sections + background rhythm */
.cav-page .cavp-section { padding:56px 0; }
.cav-page .cavp-section--cream { background: var(--cav-cream, #F8F3E8); }
.cav-page .cavp-section--white { background:#ffffff; }

/* eyebrow, headings, lead (font/color/all-caps come from the global rules) */
.cav-page .cavp-eyebrow { font-size:.78rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color: var(--cav-green-mid, #537331); margin:0 0 6px; }
.cav-page .cavp-h2 { font-size:clamp(1.6rem,3vw,2.3rem); color: var(--cav-green, #2E4A1F); margin:0 0 16px; line-height:1.15; }
.cav-page .cavp-lead { font-size:1.12rem; max-width:60em; margin:0 0 8px; color:#3a3a3a; }
.cav-page .cavp-section p { font-size:1.05rem; margin:0 0 16px; }
.cav-page .cavp-section p:last-child { margin-bottom:0; }
.cav-page .cavp-role { font-weight:700; color: var(--cav-green-mid, #537331); text-transform:uppercase; letter-spacing:.08em; font-size:.82rem; margin:0 0 16px; }

/* Remove the interior page-title banner (the green-bordered title bar) across ALL
   non-home pages, per Dennis. The title TEXT is already hidden site-wide, so this
   only drops the empty green divider line. (0,4,0) beats the site's
   `.page:not(.home) .entry-header { display:block; border-bottom }` (0,3,0), and
   foundation loads last. Redesigned (.cav-page) pages carry their own hero title. */
.page:not(.home) .site-main .entry-header { display:none; }

/* centered hero band — small top pad; the interior crest clearance (round 112,
   ~56px on .site-main) already creates the gap below the hanging crest. */
.cav-page .cavp-hero { background:#ffffff; padding:16px 24px 44px; text-align:center; }
/* Crest is position:absolute at a fixed 200px size, so its bottom is pinned at a
   constant pixel position; site-main's 56px top padding already drops content ~27px
   below it. The crest-to-H1 gap therefore does NOT drift with width, so a constant
   top pad keeps it flat (~30px visible) at every desktop width. (The earlier vw-calc
   was "compensating" for drift that doesn't exist and was itself sliding the H1.)
   Mobile (<=600, smaller 120px crest) keeps the base 16px above. */
@media (min-width:601px){ .cav-page .cavp-hero { padding-top: 6px; } }
.cav-page .cavp-hero h1 { color: var(--cav-green, #2E4A1F); margin:0 0 14px; line-height:1.05; } /* font-size: R167 (single hero-H1 size) */
.cav-page .cavp-hero .cavp-sub { font-family: var(--cav-font-display, 'Cormorant Garamond', serif); font-style:italic; font-size:clamp(1.2rem,2.4vw,1.6rem); color: var(--cav-green-mid, #537331); margin:0 auto 16px; max-width:34em; }
.cav-page .cavp-hero .cavp-lead { margin-left:auto; margin-right:auto; }

/* media + text split */
.cav-page .cavp-split { display:grid; grid-template-columns:320px 1fr; gap:44px; align-items:center; }
.cav-page .cavp-split--rev { grid-template-columns:1fr 320px; }
.cav-page .cavp-media img { width:100%; height:auto; display:block; border-radius:12px; box-shadow:0 10px 28px rgba(46,74,31,.16); }

/* R279 (2026-07-02): the retired .cavp-quote (left-accent blockquote) + .cavp-testimonial
   (green band) rules were REMOVED here — the quote design is FINAL as of R270/R272 and no
   page markup uses either class (grep-verified against the 2026-07-01 dumps of all 17 pages;
   the homepage's reverted quote uses the separate .cav-quote rules in post-758/foundation).
   Full removed block preserved in scripts/archive/r279_removed_quote_rules.css. */

/* card grid (pillars, values, etc.) */
.cav-page .cavp-cards { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.cav-page .cavp-card { background:#fff; border:2px solid var(--cav-cream, #F8F3E8); border-radius:14px; padding:26px 24px; box-shadow:0 6px 18px rgba(46,74,31,.06); }
.cav-page .cavp-card__n { font-family: var(--cav-font-display, 'Cormorant Garamond', serif); font-weight:700; font-size:2rem; color: var(--cav-gold, #FEC41D); line-height:1; margin:0 0 8px; }
.cav-page .cavp-card h3 { font-family: var(--cav-font-display, 'Cormorant Garamond', serif); font-weight:700; font-size:1.3rem; color: var(--cav-green, #2E4A1F); margin:0 0 8px; line-height:1.2; }
.cav-page .cavp-card p { font-size:.98rem; color:#3a3a3a; margin:0; }

/* Subject icons (round 133) — opt-in .cavp-card--icon adds a cream disc + brand
   line icon, drawn from CSS data-URIs so no inline SVG hits post_content (kses).
   Add one subject modifier (--reading, --math, ...) for the glyph. Other .cavp-card
   variants (roster, schools) are untouched because the disc is opt-in. */
.cav-page .cavp-card--icon::before { content:""; display:block; width:52px; height:52px; margin:0 0 14px; border-radius:50%; background-color: var(--cav-cream, #F8F3E8); border:1px solid #E6DCC6; background-repeat:no-repeat; background-position:center; background-size:26px 26px; }
.cav-page .cavp-card--reading::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23537331' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 6.4c-2-1.3-4.6-1.5-7.2-.8v11c2.6-.7 5.2-.5 7.2.8 2-1.3 4.6-1.5 7.2-.8v-11c-2.6-.7-5.2-.5-7.2.8z'/%3E%3Cpath d='M12 6.4v11'/%3E%3C/svg%3E"); }
.cav-page .cavp-card--math::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23537331' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 8h6'/%3E%3Cpath d='M12 5v6'/%3E%3Cpath d='M9 16.5h6'/%3E%3C/svg%3E"); }
.cav-page .cavp-card--handwriting::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23537331' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20l1.3-4.4 9.9-9.9 3.1 3.1-9.9 9.9z'/%3E%3Cpath d='M13.7 7.5l3.1 3.1'/%3E%3C/svg%3E"); }
.cav-page .cavp-card--music::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23537331' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.5 16.5V5l9-1.8V14'/%3E%3Ccircle cx='7' cy='16.5' r='2.4'/%3E%3Ccircle cx='16' cy='14' r='2.4'/%3E%3C/svg%3E"); }
.cav-page .cavp-card--pe::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23537331' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='13' cy='4' r='1.3'/%3E%3Cpath d='M4 17l5 1 .9-1.7'/%3E%3Cpath d='M15 21v-4.2l-4-3 1-6'/%3E%3Cpath d='M7 12V9l5-1 3 3 3 1'/%3E%3C/svg%3E"); }
.cav-page .cavp-card--character::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23537331' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20l-7.6-7.4a4.4 4.4 0 0 1 6.2-6.2l1.4 1.4 1.4-1.4a4.4 4.4 0 0 1 6.2 6.2z'/%3E%3C/svg%3E"); }

/* CTA band */
.cav-page .cavp-cta { background: var(--cav-cream, #F8F3E8); padding:56px 24px; text-align:center; }
.cav-page .cavp-cta p { font-size:1.1rem; color:#3a3a3a; max-width:46em; margin:0 auto 26px; }

/* responsive */
@media (max-width:880px){
  .cav-page .cavp-split, .cav-page .cavp-split--rev { grid-template-columns:1fr; gap:24px; }
  .cav-page .cavp-split--rev .cavp-media { order:-1; }
  .cav-page .cavp-media { max-width:360px; margin:0 auto; }
  .cav-page .cavp-cards { grid-template-columns:1fr 1fr; }
}
@media (max-width:600px){
  .cav-page .cavp-wrap { padding:0 18px; }
  .cav-page .cavp-cards { grid-template-columns:1fr; }
}

/* About CAVS — roster cards (Board) + people photo grid (Faculty) */
.cav-page .cavp-cards--roster { grid-template-columns:repeat(4,1fr); gap:16px; }
.cav-page .cavp-card.cavp-roster { text-align:center; padding:22px 16px; }
.cav-page .cavp-card.cavp-roster h3 { font-size:1.1rem; margin:0 0 4px; }
.cav-page .cavp-card.cavp-roster .cavp-role { margin:0; }
.cav-page .cavp-people { display:grid; grid-template-columns:repeat(4,1fr); gap:26px; }
.cav-page .cavp-person { text-align:center; }
.cav-page .cavp-person h3 { font-family:var(--cav-font-display,'Cormorant Garamond',serif); font-weight:700; font-size:1.15rem; color:var(--cav-green,#2E4A1F); margin:0 0 2px; line-height:1.15; }
.cav-page .cavp-person p { font-size:.9rem; color:var(--cav-green-mid,#537331); margin:0; }
/* (0,4,1) to beat the site-wide `.page:not(.home) .entry-content img{height:auto}` so the portraits crop uniformly */
.page:not(.home) .entry-content .cavp-person img { width:100%; aspect-ratio:3/4; height:auto; object-fit:cover; border-radius:10px; box-shadow:0 6px 18px rgba(46,74,31,.10); display:block; margin:0 0 12px; background:#e7e3d8; }
@media (max-width:880px){
  .cav-page .cavp-cards--roster { grid-template-columns:repeat(2,1fr); }
  .cav-page .cavp-people { grid-template-columns:repeat(3,1fr); gap:20px; }
}
@media (max-width:560px){
  .cav-page .cavp-cards--roster { grid-template-columns:repeat(2,1fr); }
  .cav-page .cavp-people { grid-template-columns:repeat(2,1fr); gap:16px; }
}

/* Graduates — school/college lists, video frame, form wrapper */
.cav-page .cavp-lists { display:grid; grid-template-columns:1fr 1fr; gap:36px; }
.cav-page .cavp-list-h { font-family:var(--cav-font-display,'Cormorant Garamond',serif); font-weight:700; font-size:1.3rem; color:var(--cav-green,#2E4A1F); margin:0 0 10px; }
.cav-page .cavp-list { list-style:none; margin:0; padding:0; }
.cav-page .cavp-list li { padding:4px 0; font-size:1rem; color:#3a3a3a; }
.cav-page .cavp-collcols { columns:3; column-gap:36px; list-style:none; margin:14px 0 0; padding:0; }
.cav-page .cavp-collcols li { padding:5px 0; font-size:.96rem; color:#3a3a3a; break-inside:avoid; }
/* school placement: 3 cards (Private + Public side-by-side, Colleges wide below) */
.cav-page .cavp-schoolrow { display:grid; grid-template-columns:1fr 1fr; gap:24px; align-items:start; margin:18px 0 24px; }
.cav-page .cavp-card.cavp-schools { text-align:center; }
.cav-page .cavp-card.cavp-schools h3 { font-family:var(--cav-font-display,'Cormorant Garamond',serif); font-weight:700; font-size:1.35rem; color:var(--cav-green,#2E4A1F); margin:0 0 14px; }
.cav-page .cavp-namelist { list-style:none; margin:0; padding:0; }
.cav-page .cavp-namelist li { padding:5px 0; font-size:.97rem; color:#3a3a3a; }
.cav-page .cavp-card--wide .cavp-namelist { columns:3; column-gap:32px; }
.cav-page .cavp-card--wide .cavp-namelist li { break-inside:avoid; }
@media (max-width:760px){ .cav-page .cavp-schoolrow { grid-template-columns:1fr; } .cav-page .cavp-card--wide .cavp-namelist { columns:2; } }
@media (max-width:480px){ .cav-page .cavp-card--wide .cavp-namelist { columns:1; } }
.cav-page .cavp-video { max-width:820px; margin:22px auto 0; border-radius:12px; overflow:hidden; box-shadow:0 12px 34px rgba(46,74,31,.18); background:#000; aspect-ratio:16/9; }
.cav-page .cavp-video video { width:100%; height:100%; display:block; object-fit:cover; }
.cav-page .cavp-form { max-width:720px; margin:8px auto 0; }
/* Kindergarten (post 262) shared components: hero/CTA button row, daily-schedule
   table, and a feature list with gold CSS bullets (no glyphs — emoji-free). */
.cav-page .cavp-btnrow { display:flex; flex-wrap:wrap; gap:14px; justify-content:center; margin:22px 0 0; }
.cav-page .cavp-schedule { display:grid; grid-template-columns:max-content 1fr; gap:10px 28px; max-width:620px; margin:18px auto 0; }
.cav-page .cavp-schedule dt { font-family:var(--cav-font-ui,'Quicksand',sans-serif); font-weight:700; color:var(--cav-green-mid,#537331); white-space:nowrap; }
.cav-page .cavp-schedule dd { margin:0; color:#3a3a3a; }
.cav-page .cavp-checks { list-style:none; margin:14px auto 0; padding:0; max-width:760px; }
.cav-page .cavp-checks li { display:flex; align-items:flex-start; gap:12px; padding:11px 0; border-bottom:1px solid var(--cav-cream,#F8F3E8); color:#3a3a3a; font-size:1.05rem; }
.cav-page .cavp-checks li:last-child { border-bottom:0; }
/* round 133: refined brand-green check (SVG data-URI) replacing the gold square. */
.cav-page .cavp-checks li::before { content:""; flex:0 0 auto; width:20px; height:20px; margin-top:1px; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23537331' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.2 4.2L19 7'/%3E%3C/svg%3E") center / 20px 20px no-repeat; }
@media (max-width:520px){ .cav-page .cavp-schedule { grid-template-columns:1fr; gap:2px 0; } .cav-page .cavp-schedule dt { margin-top:10px; } }
@media (max-width:880px){
  .cav-page .cavp-lists { grid-template-columns:1fr; gap:24px; }
  .cav-page .cavp-collcols { columns:2; }
}
@media (max-width:560px){ .cav-page .cavp-collcols { columns:1; } }

/* Contact Form 7 submit -> the standard green pill (Summer 2026 style): green bg,
   white text, sage hover. Applies site-wide (alumni form + contact form). */
body .wpcf7 input[type="submit"],
body .wpcf7 .wpcf7-submit {
  display:block; width:fit-content; margin-left:auto; margin-right:auto;
  background: var(--cav-green, #2E4A1F); color:#fff;
  font-family: var(--cav-font-ui, 'Quicksand', sans-serif); font-size:.78rem; font-weight:700;
  letter-spacing:.12em; text-transform:uppercase; padding:12px 32px; border-radius:999px;
  border:none; cursor:pointer; line-height:1.1; transition:background .15s ease; box-shadow:none;
}
body .wpcf7 input[type="submit"]:hover, body .wpcf7 input[type="submit"]:focus,
body .wpcf7 .wpcf7-submit:hover, body .wpcf7 .wpcf7-submit:focus {
  background: var(--cav-sage, #8FA67A); color:#fff;
}

/* ============================================================================
   Round 138 — How to Support CAVS page components
   1) .cavp-video--portrait: 9/16 variant of .cavp-video for the CAPER promo
      (1080x1720 source); 2) .cavp-card__img: photo on top of a .cavp-card
      (AVAF Curriculum/Community/Campus pillars).
   ========================================================================== */
.cav-page .cavp-video--portrait { aspect-ratio:9/16; max-width:340px; }
/* (0,4,1) beats the site-wide `.page:not(.home) .entry-content img` rules, same
   pattern as .cavp-person img. */
.page:not(.home) .entry-content .cavp-card__img { width:100%; aspect-ratio:4/3; height:auto; object-fit:cover; border-radius:10px; display:block; margin:0 0 14px; background:#e7e3d8; }

/* ============================================================================
   Round 143 — Carden Method rebuild components
   1) .cavp-herosplit: split hero (text left, photo right) per Tori's comp;
   2) .cavp-card--classics: line icon (classical column) for the Classical
      Content card — completes the 6-card set with the Kindergarten icons.
   ========================================================================== */
.cav-page .cavp-herosplit { display:grid; grid-template-columns:1.05fr 1fr; gap:44px; align-items:center; padding:8px 0 16px; text-align:left; }
.cav-page .cavp-herosplit h1 { font-size:clamp(2.05rem,3.4vw,2.7rem); color:var(--cav-green,#2E4A1F); margin:0 0 14px; line-height:1.05; } /* R203c: ~6% trim (matches the unified hero H1 rule) */
.cav-page .cavp-herosplit .cavp-sub { font-family:var(--cav-font-display,'Cormorant Garamond',serif); font-style:italic; font-size:clamp(1.2rem,2.2vw,1.5rem); color:var(--cav-green-mid,#537331); margin:0 0 14px; max-width:none; }
.cav-page .cavp-herosplit .cavp-lead { margin:0; }
@media (max-width:880px){
  .cav-page .cavp-herosplit { grid-template-columns:1fr; gap:24px; text-align:center; }
  .cav-page .cavp-herosplit .cavp-media { max-width:420px; margin:0 auto; }
}
.cav-page .cavp-card--classics::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23537331' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h16'/%3E%3Cpath d='M5 17h14'/%3E%3Cpath d='M7 17V9'/%3E%3Cpath d='M12 17V9'/%3E%3Cpath d='M17 17V9'/%3E%3Cpath d='M4 9l8-4.5L20 9'/%3E%3C/svg%3E"); }

/* ============================================================================
   Round 144 — Our Alumni rebuild: feature selector (Tori's comp — pills left,
   profile panel right). Same constant-pattern as the Admissions/MS selectors:
   pure class toggling, no layout shift between panels (min-height on panel).
   ========================================================================== */
.cav-page .cavp-featsel { display:grid; grid-template-columns:340px 1fr; gap:28px; align-items:start; margin-top:28px; }
.cav-page .cavp-featsel__pills { display:flex; flex-direction:column; gap:12px; }
.cav-page .cavp-featsel__pill { font-family:var(--cav-font-ui,'Quicksand',sans-serif); font-size:.74rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; text-align:left; padding:14px 18px; border:2px solid var(--cav-green,#2E4A1F); border-radius:999px; background:#fff; color:var(--cav-green,#2E4A1F); cursor:pointer; transition:background .15s ease,color .15s ease; line-height:1.25; }
.cav-page .cavp-featsel__pill:hover { background:var(--cav-cream,#F8F3E8); }
.cav-page .cavp-featsel__pill.is-active { background:var(--cav-green,#2E4A1F); color:#fff; }
.cav-page .cavp-featsel__panel { display:none; background:var(--cav-cream,#F8F3E8); border-radius:16px; padding:32px; min-height:380px; }
.cav-page .cavp-featsel__panel.is-active { display:grid; grid-template-columns:1fr 280px; gap:28px; align-items:start; }
.cav-page .cavp-featsel__panel.cavp-featsel__panel--nophoto.is-active { grid-template-columns:1fr; }
.cav-page .cavp-featquote { font-family:var(--cav-font-display,'Cormorant Garamond',serif); font-style:italic; font-size:1.25rem; line-height:1.4; color:var(--cav-green,#2E4A1F); margin:0 0 16px; }
.cav-page .cavp-featsel__panel h3 { font-family:var(--cav-font-display,'Cormorant Garamond',serif); font-weight:700; font-size:1.35rem; color:var(--cav-green,#2E4A1F); margin:0 0 2px; }
.cav-page .cavp-featrole { font-family:var(--cav-font-ui,'Quicksand',sans-serif); font-weight:700; font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; color:var(--cav-green-mid,#537331); margin:0 0 14px; }
.cav-page .cavp-featsel__panel p { font-size:.98rem; }
/* (0,4,1) beats the site-wide entry-content img rules, same pattern as .cavp-person img */
.page:not(.home) .entry-content .cavp-featsel__photo img { width:100%; height:auto; border-radius:12px; display:block; box-shadow:0 8px 22px rgba(46,74,31,.14); }
@media (max-width:880px){
  .cav-page .cavp-featsel { grid-template-columns:1fr; }
  .cav-page .cavp-featsel__panel.is-active { grid-template-columns:1fr; }
  .cav-page .cavp-featsel__photo { max-width:340px; margin:0 auto; }
}

/* ============================================================================
   Round 146 — Alumni comp-fidelity pass
   1) .cavp-featsel__head: section heading lives IN the pills column (left-
      aligned over the pills, per the comp) instead of centered over the panel;
   (quotewide variant removed in R147 — single green quote style site-wide)
   ========================================================================== */
.cav-page .cavp-featsel__head { margin:0 0 10px; }
.cav-page .cavp-featsel__head .cavp-h2 { font-size:clamp(1.5rem,2.4vw,2rem); margin-bottom:4px; }

/* ============================================================================
   Round 147 — Alumni polish (Dennis's notes vs comp)
   1) kill the faint border + collapse the dead white around the ticker band
      (page-scoped — home keeps its own spacing);
   2) feature pills uniform: one line each (Maddie was wrapping).
   ========================================================================== */
.cav-page.alum26 > .cavp-section:first-child { padding-bottom: 16px; }
.cav-page.alum26 .cav-home-alumni { border-top: 0; padding: 20px 0 24px; }
.cav-page.alum26 .cav-home-alumni .cav-section-sub { margin-bottom: 16px; }
.cav-page.alum26 .cavp-section--white { scroll-margin-top: 90px; }
.cav-page .cavp-featsel__pill { font-size: .68rem; letter-spacing: .05em; padding: 13px 14px; white-space: nowrap; }

/* ============================================================================
   Round 148 — shared components for the Contact/Tuition/Elementary/Parent-
   Participation rebuilds + the AVAF banner fix.
   ========================================================================== */
/* AVAF banner on How to Support CAVS: breathing room (white matte) */
.cav-page.cavs-support .cavp-media img[src*="AVAF"] { background:#fff; padding:24px 36px; }

/* gold-bordered callout (tuition all-inclusive box, 10-hour service note) */
.cav-page .cavp-callout { background:#fff; border:2px solid var(--cav-gold,#FEC41D); border-radius:14px; padding:28px 26px; text-align:center; max-width:880px; margin:0 auto; }
.cav-page .cavp-callout p { margin:0 0 10px; }
.cav-page .cavp-callout p:last-child { margin-bottom:0; }

/* on-brand accordion (details/summary — no JS) */
.cav-page .cavp-acc details { background:#fff; border:2px solid var(--cav-cream,#F8F3E8); border-radius:12px; margin-bottom:12px; overflow:hidden; box-shadow:0 6px 18px rgba(46,74,31,.06); }
.cav-page .cavp-acc summary { cursor:pointer; list-style:none; font-family:var(--cav-font-ui,'Quicksand',sans-serif); font-weight:700; font-size:1.02rem; color:var(--cav-green,#2E4A1F); padding:18px 56px 18px 22px; position:relative; }
.cav-page .cavp-acc summary::-webkit-details-marker { display:none; }
.cav-page .cavp-acc summary::after { content:'+'; position:absolute; right:22px; top:50%; transform:translateY(-50%); font-size:1.5rem; line-height:1; color:var(--cav-green-mid,#537331); }
.cav-page .cavp-acc details[open] summary::after { content:'\2212'; }
.cav-page .cavp-acc details[open] summary { background:var(--cav-cream,#F8F3E8); }
.cav-page .cavp-acc .cavp-accbody { padding:8px 22px 20px; }
.cav-page .cavp-acc .cavp-accbody h4 { font-family:var(--cav-font-ui,'Quicksand',sans-serif); font-weight:700; font-size:.95rem; color:var(--cav-green-mid,#537331); text-transform:uppercase; letter-spacing:.08em; margin:18px 0 8px; }
.cav-page .cavp-acc .cavp-accbody h4:first-child { margin-top:6px; }

/* fee tables */
.cav-page .cavp-table { width:100%; border-collapse:collapse; margin:8px 0 16px; font-size:.98rem; }
.cav-page .cavp-table th { background:var(--cav-green,#2E4A1F); color:#fff; text-align:left; padding:10px 14px; font-family:var(--cav-font-ui,'Quicksand',sans-serif); font-weight:700; font-size:.82rem; letter-spacing:.06em; text-transform:uppercase; }
.cav-page .cavp-table td { padding:10px 14px; border-bottom:1px solid #ece9e0; color:#3a3a3a; }
.cav-page .cavp-table td:last-child { text-align:right; font-weight:700; color:var(--cav-green,#2E4A1F); white-space:nowrap; }
.cav-page .cavp-table tr:nth-child(even) td { background:var(--cav-cream,#F8F3E8); }

/* featsel panels need a photo-on-right variant w/ white bg for cream sections */
.cav-page .cavp-featsel__panel--white { background:#fff; }
/* accordion body images (carnival/event photos) — contained, rounded */
.page:not(.home) .entry-content .cavp-accbody img { width:100%; max-width:480px; height:auto; border-radius:10px; margin:8px 0 14px; display:block; }

/* ============================================================================
   Round 152 — breakout selectors unified to the Alumni look (Tori, 2026-06-12)
   Tori prefers the Alumni feature selector: a WHITE section with the pills on
   white and a distinct CREAM rounded panel card for the breakout content. The
   Admissions / Middle School / Elementary selectors instead sat on CREAM
   sections with flat (transparent or white) panels, so the breakout content had
   no card and read as cream-on-cream. Repaint all of them to the Alumni combo:
   white section + cream rounded panel card.
   Page CSS for these pages lives in post-758 custom_css (wp_head ~101);
   foundation loads at wp_head 1000 and the body-prefixed selectors here sit at
   >= the page specificity, so these win by source order — no !important.
   ========================================================================== */

/* Admissions (post 242, .adm-2026): one .adm-step / .adm-panel selector. */
body .adm-2026 .adm-guide { background:#ffffff; }
body .adm-2026 .adm-panel { background: var(--cav-cream,#F8F3E8); border-radius:16px; padding:32px; }

/* Middle School (post 264, .ms-2026): subject selector (was a cream section) +
   outdoor-trips selector (.ms-outdoor is already white). Give both the cream
   panel card; flip the subjects section to white. */
body .ms-2026 .ms-subjects { background:#ffffff; }
body .ms-2026 .ms-panel,
body .ms-2026 .ms-trippanel { background: var(--cav-cream,#F8F3E8); border-radius:16px; padding:32px; }

/* Shared .cavp-featsel (Elementary post 260): flip the cream section that holds
   a selector to white, and revert the --white panel variant to the cream card.
   Alumni's featsel already sits in a white section with cream panels, so the
   :has() rule leaves it untouched (only Elementary's selector is in a cream
   section today). */
body .cav-page .cavp-section--cream:has(.cavp-featsel) { background:#ffffff; }
body .cav-page .cavp-featsel__panel--white { background: var(--cav-cream,#F8F3E8); }

/* ============================================================================
   Round 153 — sitewide hero uniformity (Dennis 2026-06-16)
   Make every image-hero match the 1st-5th Grade (Elementary) template:
   (a) the hero text TOP-aligns instead of vertically centering against the
       image — the Admissions hero text was centering against its TALL portrait,
       pushing the H1 down to the middle. Top-aligning sits the H1 up by the
       image top, like Elementary.
   (b) pull the hero up under the header so the image runs up toward it (trim the
       white band) — a step toward Tori's "full height, overlapping the logo"
       instead of a floating box. The site-main crest clearance is trimmed ONLY
       on the five image-hero pages (centered-text interior pages keep their 56px
       clearance so the hanging crest can't clip their centered H1). Desktop only
       (>=601px); mobile keeps its existing clearance.
   Foundation @1000 wins at equal specificity by source order — no !important.
   NOTE: the fuller "edge-to-edge image, no rounded card, crest overlapping it"
   treatment (Tori's exact mockup) is a per-hero redesign still being dialed in
   with Dennis; this round is the top-align + band trim only.
   ========================================================================== */

/* (a) top-align the hero text+image grids (cavp-herosplit = Elementary 260,
   Carden Method 250, Alumni 255; adm = Admissions 242; ms = Middle School 264) */
body .cav-page .cavp-herosplit,
body .adm-2026 .adm-hero__grid,
body .ms-2026 .ms-hero__grid { align-items: start; }

/* (b) trim the white band above the hero (desktop only) */
@media (min-width: 601px) {
  body.page-id-260 .site-main,
  body.page-id-250 .site-main,
  body.page-id-255 .site-main,
  body.page-id-242 .site-main,
  body.page-id-264 .site-main { padding-top: 0; }

  body .cav-page .cavp-section:has(.cavp-herosplit) { padding-top: 24px; }
  body .adm-2026 .adm-hero__grid,
  body .ms-2026 .ms-hero__grid { padding-top: 24px; }
}

/* ============================================================================
   Round 154 + 156 — Admissions "Your Guide" selector layout (Dennis 2026-06-16)
   R154 dropped the step pills to align with the cream step card. R156 then moved
   the "Your Guide to Our Admissions Process" heading OUT of the full-width spot
   above the section and INTO the left column (above the pills), matching the
   featsel pages. The left cell is now .adm-guide__left = [head][pills]; a 162px
   first grid row (= guide image 140px + 22px margin) holds the head at the top
   (level with the image) so the pills below still land at the cream step-card top
   — this replaces R154's .adm-steps margin-top. Markup ships via fix_round156.
   ========================================================================== */
body .adm-2026 .adm-guide__head { font-size:clamp(1.45rem,2.2vw,1.95rem); color:var(--cav-green,#2E4A1F); line-height:1.15; margin:0 0 16px; }
@media (min-width: 881px) {
  body .adm-2026 .adm-guide__left { display:grid; grid-template-rows:162px auto; }
  body .adm-2026 .adm-guide__head { align-self:start; margin-bottom:0; }
}

/* ============================================================================
   Round 155 — compact-tier crest/H1 overlap fix (Dennis 2026-06-16) [VERIFIED]
   On the CENTERED-hero pages (.cavp-hero: Who We Are, Faculty & Staff, Contact,
   Tuition, Kindergarten, Parent Participation, How to Support) between 600-1100px
   (e.g. iPhone 17 LANDSCAPE ~846px) the header collapses to a shorter height but
   the centered crest stays 200px (its bottom is pinned at 208px from the top of
   the page), so the centered H1 sat UNDER the crest: H1 top 162px vs crest bottom
   208px = 46px overlap. Push the hero down so the H1 clears.
   Verified in a fixed-width same-origin iframe harness: 846px -> +28px clearance,
   984px -> +43px. Full desktop (>=1101, taller header -> H1 at 241px) and true
   mobile (<=599, hamburger header + 120px crest) already clear, so both untouched.
   ========================================================================== */
@media (min-width: 600px) and (max-width: 1100px) {
  body .cav-page .cavp-hero { padding-top: 80px; }
}

/* ============================================================================
   Round 157 — restore crest clearance on the IMAGE-hero pages below wide desktop
   (Dennis 2026-06-16). R153 pulled these heroes flush to the header (site-main
   padding-top:0), which put the hero H1 up at the centered crest's level. At
   <=1100 (short compact header) the left-column H1 sits deep UNDER the crest on
   ALL of them (Admissions / Middle School / 1st-5th / Carden Method / Alumni);
   at >=1101 the long Admissions H1 still grazes the crest's bottom (crest bottom
   pinned ~208px from page top). Restore top clearance so the hero clears it. The
   >=1101 nudge is Admissions-only — the shorter-H1 heroes already clear at desktop
   (h1 top ~211 > 208) and keep R153's flush pull-up there.
   Verified in the iframe harness: Admissions 900->220 / 1280->227 / 1400->227;
   1st-5th 1000->243 / 1300->211; all clear the 208px crest bottom.
   ========================================================================== */
/* R157 removed in R189 — its @601-1100 image-hero clearance was fully overridden by the
   unified :has flush rule (image heroes are contained-flush at all widths now). */

/* ============================================================================
   Round 158 — full-bleed hero: Middle School (Dennis 2026-06-16, per Tori's
   Middle School-page draft.png). The hero image runs flush to the header and
   bleeds to the RIGHT viewport edge (no rounded floating card); the left half is
   white with the H1 + lead + Tour button, vertically centered; the crest hangs
   over the top boundary. SUPERSEDES the R153 card + R157 clearance for this page
   (the image is meant to sit under the crest now). Verified in the iframe harness
   at 1200 (split) and 600 (stacked: image on top, text below). Foundation @1000
   wins by source order — incl. over R157's site-main clearance — no !important.
   ========================================================================== */
body.page-id-264 .site-main { padding-top: 0; }
.ms-2026 .ms-hero { background:#fff; }
.ms-2026 .ms-hero .ms-hero__grid { max-width:none; width:100%; padding:0; gap:0; grid-template-columns:1fr 1fr; align-items:stretch; min-height:540px; }
.ms-2026 .ms-hero__media { min-height:540px; }
.ms-2026 .ms-hero__text { align-self:center; padding:40px 56px; padding-left:max(24px, calc((100vw - 1120px)/2 + 24px)); }
/* (0,4,1) beats the site-wide `.page:not(.home) .entry-content img` rules so the photo fills + crops */
.page:not(.home) .entry-content .ms-2026 .ms-hero__media img,
.ms-2026 .ms-hero__media img { width:100%; height:100%; object-fit:cover; border-radius:0; box-shadow:none; display:block; }
@media (max-width:880px){
  .ms-2026 .ms-hero .ms-hero__grid { grid-template-columns:1fr; min-height:0; }
  .ms-2026 .ms-hero__media { order:-1; min-height:0; }
  .page:not(.home) .entry-content .ms-2026 .ms-hero__media img,
  .ms-2026 .ms-hero__media img { height:260px; }
  .ms-2026 .ms-hero__text { padding:30px 24px; }
}

/* ============================================================================
   Round 159 — After School Activities rebuild + reusable full-bleed hero
   (.cavp-herobleed) for the .cav-page system (Tori's mockup). Same look as the
   R158 Middle School hero but as a shared component: white left column (text,
   vertically centered, left edge aligned to the 1120 wrap) + photo filling the
   right half edge-to-edge and flush to the header; crest over the top. Page 263
   gets site-main padding-top:0 so the photo runs to the header.
   ========================================================================== */
body.page-id-263 .site-main { padding-top: 0; }
.cav-page .cavp-herobleed { display:grid; grid-template-columns:1fr 1fr; align-items:stretch; min-height:540px; background:#fff; }
.cav-page .cavp-herobleed__text { align-self:center; padding:40px 56px; padding-left:max(24px, calc((100vw - 1120px)/2 + 24px)); }
.cav-page .cavp-herobleed__text h1 { color:var(--cav-green,#2E4A1F); margin:0 0 16px; line-height:1.05; } /* font-size: R167 (single hero-H1 size) */
.cav-page .cavp-herobleed__text .cavp-lead { margin:0 0 14px; }
.cav-page .cavp-herobleed .asa-tags { color:var(--cav-green-mid,#537331); font-weight:700; font-size:.95rem; line-height:1.7; margin:0; }
.cav-page .cavp-herobleed__media { min-height:540px; }
/* (0,4,1) beats the site-wide `.page:not(.home) .entry-content img` rules so the photo fills + crops */
.page:not(.home) .entry-content .cavp-herobleed__media img { width:100%; height:100%; object-fit:cover; display:block; border-radius:0; box-shadow:none; }
@media (max-width:880px){
  .cav-page .cavp-herobleed { grid-template-columns:1fr; min-height:0; }
  .cav-page .cavp-herobleed__media { order:-1; min-height:0; }
  .page:not(.home) .entry-content .cavp-herobleed__media img { height:260px; }
  .cav-page .cavp-herobleed__text { padding:30px 24px; text-align:center; }
}

/* ============================================================================
   Round 165 + 167 — UNIFORM hero H1 (Dennis 2026-06-16). Two parts:
   (a) the full-bleed hero text (Middle School .ms-hero + the .cavp-herobleed
       pages: After School, Tuition, How to Support) is top-aligned and pulled up
       so the H1 sits at the SAME height as the 1st-5th Grade hero;
   (b) every hero H1 is set to the SAME font size as 1st-5th.
   Verified against 1st-5th in the harness: H1 top = 211px, font-size = 46.4px
   (2.9rem cap). No per-page sizes — one standard.
   ========================================================================== */
body .ms-2026 .ms-hero__text,
body .cav-page .cavp-herobleed__text { align-self: start; padding-top: 32px; }
@media (max-width:880px){
  body .ms-2026 .ms-hero__text,
  body .cav-page .cavp-herobleed__text { padding-top: 24px; }
}
/* one hero H1 size site-wide = the 1st-5th Grade hero (.cavp-herosplit already this) */
body .cav-page .cavp-hero h1,
body .ms-2026 .ms-hero__text h1,
body .cav-page .cavp-herobleed__text h1,
body .adm-2026 .adm-hero__text h1 { font-size: clamp(2.05rem, 3.4vw, 2.7rem); } /* R203c: ~6% trim so single-line titles clear the centered crest */

/* ============================================================================
   Round 168 — TRUE full-bleed hero (Dennis 2026-06-16). R158's max-width:none
   wasn't enough: a parent container still capped the hero at ~1200px, so on WIDE
   screens the image had white margins AND the text column stopped growing (which
   pushed the H1 onto a second line) — while narrower windows looked fine. Break
   the full-bleed hero sections out to the full viewport so the image reaches the
   edge and the text column grows (H1 stays on one line) at every width. Verified
   on Middle School: image right edge 1491 of 1498, no horizontal overflow.
   ========================================================================== */
body .ms-2026 .ms-hero,
body .cav-page .cavp-herobleed {
  width: 100vw; max-width: 100vw;
  margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw);
}
/* ============================================================================
   Round 189 — consolidation: ONE flush rule for EVERY image hero (replaces R168's
   page-id list + the separate R176/R179/R186 :has rules). Self-targeting via :has —
   any page whose main holds a photo hero (herobleed / herosplit / adm-hero / ms-hero)
   runs flush to the header; centered/text pages keep the R110/R111 interior crest
   clearance. (R153 + R158/R159 left harmless duplicate page-id padding:0 lines above —
   prunable later.) Also removed R157 (its @601-1100 clearance was fully overridden) and
   the two dead H1-size clamps (R167 is the single hero-H1 size).
   ========================================================================== */
body.ast-no-sidebar .site-main:has(.cavp-herobleed),
body.ast-no-sidebar .site-main:has(.cavp-herosplit),
body.ast-no-sidebar .site-main:has(.adm-hero),
body.ast-no-sidebar .site-main:has(.ms-hero) { padding-top: 0; }

/* ============================================================================
   Round 173 — Summer 2026 page (scoped to .summer26 so nothing leaks site-wide):
   five session/camp date cards + the cougar-mascot offer band.
   ========================================================================== */
.cav-page.summer26 .cavp-cards--sessions { grid-template-columns: repeat(5, 1fr); gap: 16px; }
.cav-page.summer26 .cavp-card.sumses { text-align: center; padding: 26px 14px; }
.cav-page.summer26 .cavp-card.sumses .sumses__tag { display:block; font-family: var(--cav-font-ui,'Quicksand',sans-serif); font-size:.7rem; font-weight:700; letter-spacing:.13em; text-transform:uppercase; color: var(--cav-green-mid,#537331); margin:0 0 8px; }
.cav-page.summer26 .cavp-card.sumses h3 { font-size: 1.25rem; margin: 0 0 6px; }
.cav-page.summer26 .cavp-card.sumses .sumses__date { font-family: var(--cav-font-ui,'Quicksand',sans-serif); font-size:.98rem; color:#3a3a3a; margin:0; }
@media (max-width: 980px) { .cav-page.summer26 .cavp-cards--sessions { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 560px) { .cav-page.summer26 .cavp-cards--sessions { grid-template-columns: 1fr 1fr; } }
.cav-page.summer26 .sum-spirit { align-items: center; gap: 32px; }
.cav-page.summer26 .sum-spirit__art { text-align: center; }
.cav-page.summer26 .sum-spirit__art img { max-width: 300px; width: 100%; height: auto; }

/* ============================================================================
   Round 175 — CONTAINED hero (Dennis 2026-06-17). Supersedes R168's 100vw
   full-bleed breakout. The bleed-to-screen-edge made the hero H1 drift right and
   a white gutter grow on the left past ~1999px (the text padding-left was
   viewport-based: max(24px, calc((100vw - 1120px)/2 + 24px))). New standard: the
   photo hero is CONTAINED to the site content width (1200px) and centered, with
   the image still FLUSH to the header top (site-main padding-top:0 from R168 is
   kept) — the image meets the HEADER, not the literal screen edge. On wide
   monitors the hero centers with even white gutters instead of drifting.
   Appended (not edited in place) so it beats R168/R159/R167 by source order at
   equal-or-higher specificity — no !important. CSS-only; markup unchanged.
   Applies to .cavp-herobleed (Summer 247, 1st-5th 260, After School 263,
   Tuition 272, How to Support 1254) + .ms-hero (Middle School 264). Verified in
   the iframe harness: image flush to the header at every width; a forced-centered
   proxy showed even WHITE gutters. (The assistant browser can't render >1199px,
   so confirm the true wide-monitor centering live after deploy.)
   ========================================================================== */
body .ms-2026 .ms-hero,
body .cav-page .cavp-herobleed {
  width: 100%;
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
}
/* Keep the image FLUSH to the header at ALL widths. Astra adds
   `.ast-plain-container.ast-no-sidebar #primary { margin-top:60px }` at >=1200px;
   R168 only zeroed site-main's padding, so a 60px white strip appeared under the
   header on wide monitors (>1199) — invisible at the widths the harness used to
   reach. Zero that margin on the photo-hero pages only (scoped via :has). Specificity
   (1,2,1) beats Astra's (1,2,0); foundation loads later — no !important. */
body.ast-no-sidebar #primary:has(.cavp-herobleed),
body.ast-no-sidebar #primary:has(.ms-hero) { margin-top: 0; }
body .ms-2026 .ms-hero__text,
body .cav-page .cavp-herobleed__text {
  padding-left: 56px;
  padding-right: 56px;
}
@media (max-width: 880px) {
  body .ms-2026 .ms-hero__text,
  body .cav-page .cavp-herobleed__text { padding-left: 24px; padding-right: 24px; }
}

/* ============================================================================
   Round 176 — IMAGE HEROES flush to header (Dennis 2026-06-17). The .cavp-herosplit
   card heroes (Carden Method 250, Our Alumni 255, Contact 243, Parent Participation
   275) sat as rounded cards inside a padded white section, so the image floated below
   the header instead of meeting it like 1st-Grade (260). Restyle .cavp-herosplit to the
   SAME contained-flush behavior as .cavp-herobleed: image meets the header, hero
   contained to 1200 + centered, image fills the right half edge-to-edge (cover, no
   rounded card), text top-aligned. CSS-only; markup unchanged. :has()-driven flush so it
   self-targets (no page-id lists); specificity beats R111/R168/Astra/R143/R153 and
   foundation loads last — no !important. (Admissions .adm-hero + Head of School .hos-intro
   are bespoke — fixed in their migration rounds R177/R178.) Verified in the harness at
   2560/600: image flush + contained-centered + fills to the hero's right edge (matches
   260); mobile stacks image-on-top, full-width, 260px tall.
   ========================================================================== */
body.ast-no-sidebar #primary:has(.cavp-herosplit) { margin-top: 0; }
body .cav-page .cavp-section:has(.cavp-herosplit) { padding-top: 0; }
body .cav-page .cavp-herosplit {
  width: 100%;
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  align-items: stretch;
  min-height: 540px;
  padding: 0;
}
body .cav-page .cavp-herosplit > :not(.cavp-media) { align-self: start; padding: 32px 56px; }
body .cav-page .cavp-herosplit .cavp-media { align-self: stretch; }
body:not(.home) .entry-content .cavp-herosplit .cavp-media img {
  width: 100%; height: 100%; min-height: 540px; object-fit: cover; border-radius: 0; box-shadow: none;
}
@media (max-width: 880px) {
  body .cav-page .cavp-herosplit { grid-template-columns: 1fr; min-height: 0; }
  body .cav-page .cavp-herosplit .cavp-media { order: -1; max-width: none; margin: 0; }
  body:not(.home) .entry-content .cavp-herosplit .cavp-media img { height: 260px; min-height: 0; }
  body .cav-page .cavp-herosplit > :not(.cavp-media) { padding: 30px 24px; text-align: center; }
}

/* ============================================================================
   Round 177 — header responsive sizing UNIFIED (Dennis 2026-06-17). The header
   buttons (.cav-pill), the menu (.cav-menu>li>a) and the logo were shrinking at
   THREE uncoordinated breakpoints — menu @1100, BOTH @~920 (Astra responsive root-
   font scaling shrinks rem sizes), pill again @900 — while the logo never shrank
   until mobile. New behavior: hold FULL size as long as the header fits, then shrink
   buttons + menu + logo TOGETHER one step, then mobile. Pills + menu are sized in PX
   so Astra's root-font scaling can't shrink them early; the legacy !important pill
   rules in post-758 are removed by fix_round177_header.php so these win with NO
   !important. Verified in the harness: full (pill 12.48 / menu 12.8 / logo 200) holds
   down to 701; one compact step 600-700 (pill 10.5 / menu 11 / logo 150, ~25px gap to
   the crest at 600); mobile <=599 unchanged (hamburger + 120 logo). The non-!important
   @1100 menu rule still in post-758 is harmlessly out-ranked by the px rule below.
   ========================================================================== */
body .cav-header .cav-menu > li > a { font-size: 12.8px; }
body .cav-header .cav-pill { font-size: 12.48px; padding: 12px 32px; }
@media (min-width: 600px) and (max-width: 700px) {
  body .cav-header .cav-menu > li > a { font-size: 11px; }
  body .cav-header .cav-pill { font-size: 10.5px; padding: 8px 16px; }
  body .cav-header .cav-logo { width: 150px; height: 150px; }
}

/* ============================================================================
   Round 179 — Admissions hero -> contained-flush (Dennis 2026-06-17). Admissions
   (post 242, .adm-2026) is bespoke (NOT on .cav-page); its hero was a rounded card
   floating 108px below the header. Restyle .adm-hero to the same contained-flush look
   as 1st-Grade: image meets the header, hero contained 1200 + centered, image fills the
   right column (no rounded card, no gap). The tall Admissions text (H1 + paragraph + 2
   buttons) makes the column ~700px and the cell ratio then ~matches the 1920x2337
   portrait, so the photo shows nearly full-frame (minimal crop). CSS-only; .adm-* markup
   unchanged (no !important on .adm-, so foundation wins by source order). Step pills
   (.adm-step) are unified in the pill round (R180). Verified in the harness at 2560/1199:
   flush, contained-centered, portrait near-full-frame.
   ========================================================================== */
body.ast-no-sidebar #primary:has(.adm-hero) { margin-top: 0; }
body .adm-2026 .adm-hero { padding-top: 0; }
body .adm-2026 .adm-hero__grid {
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  align-items: stretch;
  min-height: 540px;
  padding: 0;
}
body .adm-2026 .adm-hero__text { align-self: start; padding: 32px 56px; }
body:not(.home) .entry-content .adm-2026 .adm-hero__media img {
  width: 100%; height: 100%; min-height: 540px; object-fit: cover; object-position: center; border-radius: 0; box-shadow: none;
}
@media (max-width: 880px) {
  body .adm-2026 .adm-hero__grid { grid-template-columns: 1fr; min-height: 0; }
  body .adm-2026 .adm-hero__media { order: -1; }
  body:not(.home) .entry-content .adm-2026 .adm-hero__media img { height: 360px; min-height: 0; }
  body .adm-2026 .adm-hero__text { padding: 30px 24px; text-align: center; }
}

/* ============================================================================
   Round 180 — UNIFY selector pills (Dennis 2026-06-17). The left-column selector
   pills came in three sizes: Admissions steps (.adm-step) 15.2px, Middle School
   subjects (.ms-tab) 14.4px, shared feature pills (.cavp-featsel__pill) 10.88px.
   Set them all to ONE size: 0.8rem / padding 14px 20px / letter-spacing 0.06em.
   Border (2px green), radius (999) and the active state are already shared. CSS-only,
   no markup change (no !important on .adm-/.ms-, so foundation wins by source order).
   Verified in the harness: every label fits on ONE line (zero overflow) on Admissions,
   Middle School, After School and Tuition; the Admissions guide step/card alignment
   (R156) is preserved (first step top == cream card top). .adm-step stays a touch taller
   because it carries a "Step N" label line — that's content, not a size mismatch.
   ========================================================================== */
body .adm-2026 .adm-step,
body .ms-2026 .ms-tab,
body .cav-page .cavp-featsel__pill {
  font-size: 0.8rem;
  padding: 14px 20px;
  letter-spacing: 0.06em; /* R180 baseline. (R190's 0.04em one-pill tracking hack reverted per Dennis — the real fit fix is title-case featsel pills in R192 below, not changing tracking.) */
}

/* ============================================================================
   Round 192 — featsel selector pills go TITLE-CASE (Dennis 2026-06-17). These pills
   carry proper-noun labels (e.g. "Maddie Laferr — Broadway Star Assistant"); in
   UPPERCASE the longest overflowed the fixed 296px rail content-box by ~19px. Dennis
   rejected a tracking change to fix one pill — dropping the caps is the real fix: it
   shrinks the longest label to ~270px (fits with ~26px to spare), reads better for
   names, and changes NO pill size or tracking. Scoped to .cavp-featsel__pill only —
   the .adm-step "Step N" and .ms-tab subject pills keep their eyebrow caps (different
   component, short labels). Labels on every featsel page (Alumni/Tuition/After-School)
   are stored in normal case, so this reveals nothing odd. Tracking eased to 0.01em
   because title case doesn't want caps-style spacing. Pairs with the alumni em-dash
   -> middot content swap (R192 fix php). Harness: longest fits, pill height stays 48px.
   ========================================================================== */
body .cav-page .cavp-featsel__pill { text-transform: none; letter-spacing: 0.01em; }

/* ============================================================================
   Round 181 — Admissions step pills match the shared pill (Dennis 2026-06-17).
   .adm-step was 2-line ("Step N" eyebrow stacked above the label = 58px) and its
   :hover set NO background (read as "no hover"), while the featsel/ms pills are
   single-line ~48px with a cream hover. Inline the "Step N" prefix so each step is
   single-line (~46px, matches the others — all labels still fit one line at 0.8rem)
   and add the same cream hover. Active (green) + border + radius + font already match
   (R180). Verified in the harness: 3 steps single-line at 46px; longest label fits;
   guide step/card alignment (R156) preserved. So all selector pills are now identical
   in size + hover + active site-wide.
   ========================================================================== */
body .adm-2026 .adm-step:not(.is-active):hover { background: var(--cav-cream, #F8F3E8); }
body .adm-2026 .adm-step__n { display: inline; margin-right: 8px; }

/* ============================================================================
   Round 182 — pill hover regression fix (Dennis 2026-06-17). R181's adm-step hover
   applied cream to EVERY step including the ACTIVE one (green bg / white text), so the
   selected pill became white-on-cream = UNREADABLE on hover. The hover rule above is now
   scoped to :not(.is-active) so only INACTIVE pills go cream and the active pill stays
   green — matching the featsel / ms-tab standard (active stays green on hover) on every
   page. No one-off: same hover behavior everywhere. (Button alignment standard = R183.)
   ========================================================================== */

/* ============================================================================
   Round 183 — button-row alignment standard (Dennis 2026-06-17). All buttons are the
   SAME size; the inconsistency was inline style="justify-content:flex-start" baked into
   the Summer page markup on its hero + two section button rows (one-offs that also blocked
   mobile centering — inline can't be beaten without !important). fix_round183 strips that
   inline justify from every .cavp-btnrow so CSS governs. Standard: section/CTA rows center
   (foundation default); LEFT heroes (.cavp-herobleed / .cavp-herosplit / Admissions
   .adm-btn-row) keep their buttons left to match the left hero text; centered heroes
   (.cavp-hero) keep centered buttons; and EVERYTHING centers at <=880 (stacked). Harness-
   verified: desktop hero=left + sections=center; mobile all=center.
   ========================================================================== */
body .cav-page .cavp-herobleed .cavp-btnrow,
body .cav-page .cavp-herosplit .cavp-btnrow,
body .adm-2026 .adm-hero .adm-btn-row { justify-content: flex-start; }
@media (max-width: 880px) {
  body .cav-page .cavp-btnrow,
  body .cav-page .cavp-herobleed .cavp-btnrow,
  body .cav-page .cavp-herosplit .cavp-btnrow,
  body .adm-2026 .adm-hero .adm-btn-row { justify-content: center; }
}

/* ============================================================================
   Round 186 — Head of School hero -> image-hero standard (Dennis 2026-06-17). R184
   rebuilt HoS as a centered hero + cream headshot split; Dennis wants it to match the
   1st-Grade image hero: headshot on the RIGHT, flush to the header, larger, and no
   "About CAVS" eyebrow. fix_round186 swaps the HoS hero to .cavp-herobleed (headshot
   right; the portrait's natural height at the half-column width exceeds the text, so the
   grid takes the image height and the portrait shows FULL, uncropped). This rule makes
   ANY .cavp-herobleed page flush to the header — covers HoS (254), which wasn't in R168's
   page-id list; complements #primary:has() from R175. Self-targeting via :has, no page-id
   list; (0,3,1) beats R111's interior crest clearance. No !important.
   ========================================================================== */
/* (R186's site-main:has(.cavp-herobleed) flush folded into the R189 unified rule.) */

/* ============================================================================
   Round 188 — Head of School hero image size (Dennis 2026-06-17). R186 showed the
   headshot full (its 1078px-tall portrait drove the hero to ~789px) — Dennis: "too big".
   Cap the HoS hero to the standard 540px (like 1st-Grade) and cover-crop the portrait to a
   head-and-torso frame (object-position center 25%); the left text is vertically centered.
   Scoped to .hos26 only (the portrait needs this; landscape heroes don't). Specificity
   (0,5,2) on the img beats R159's (0,4,1). Mobile keeps a taller 360px portrait frame.
   ========================================================================== */
@media (min-width: 881px) {
  body .cav-page.hos26 .cavp-herobleed { min-height: 540px; }
  body .cav-page.hos26 .cavp-herobleed__media { height: 540px; }
  body:not(.home) .entry-content .cav-page.hos26 .cavp-herobleed__media img { height: 540px; object-fit: cover; object-position: center 25%; }
  body .cav-page.hos26 .cavp-herobleed__text { align-self: start; } /* R190: top-align H1 to the same height as every other image hero (was centered in R188) */
}
@media (max-width: 880px) {
  body:not(.home) .entry-content .cav-page.hos26 .cavp-herobleed__media img { height: 360px; object-position: center 25%; }
}

/* ===== R199b — Admissions (.adm26) refinements after the R199 migration =====
   PAGE-SCOPED ONLY — does NOT touch the shared .cavp-card__n default (2rem), which
   Carden Method uses for its 01–06 sequence numbers, nor the shared image rules.
   (1) Why-Carden stat numbers back to the page's original 2.8rem so they stand out.
   (2) Step-1 guide photo restored as a short full-width landscape banner above the
       panel copy (the featsel 1fr/280px side-photo slot cropped it tall + cramped
       the text). Scoped, higher specificity than the shared defaults -> wins without
       !important. */
.cav-page.adm26 .cavp-card__n { font-size: 2.8rem; }
/* .cavp-guidepic = short full-width landscape banner at the top of a featsel panel.
   Shared (only Admissions + Middle School use the class), not page-scoped. */
.cav-page .cavp-featsel__panels .cavp-guidepic { width: 100%; height: 170px; object-fit: cover; border-radius: 12px; box-shadow: 0 8px 22px rgba(46,74,31,.14); display: block; margin: 0 0 20px; }

/* R199d — Admissions guide panel spacing + button alignment (page-scoped).
   The single-column --nophoto panel was still display:grid and inherited the 28px row
   gap meant for the 2-col text/photo layout, forcing a big gap between EVERY element
   (eyebrow↔heading, paragraph↔paragraph) on top of their own margins. Switch it to
   normal block flow so site-standard margins govern; and left-align the panel's button
   (the panel copy is left-aligned, so a centered button looked off). Scoped to .adm26. */
.cav-page.adm26 .cavp-featsel__panel.cavp-featsel__panel--nophoto.is-active,
.cav-page.ms26 .cavp-featsel__panel.cavp-featsel__panel--nophoto.is-active { display: block; }
.cav-page.adm26 .cavp-featsel__panel .cavp-btnrow { justify-content: flex-start; }

/* R200b — Admissions + Middle School split sections (High School Placement,
   Extracurriculars): larger feature image + left-aligned button, to match the
   originals (.ms-extra was a 1fr/1fr 50:50, buttons sat in left block flow).
   Desktop only — mobile still stacks via the shared <=880 rule. Page-scoped to
   .adm26/.ms26 so the shared 320px .cavp-split used by other pages (child-care,
   contact, alumni network, etc.) is unchanged. */
@media (min-width: 881px) {
  .cav-page.adm26 .cavp-split,
  .cav-page.ms26 .cavp-split { grid-template-columns: 440px 1fr; }
  .cav-page.adm26 .cavp-split .cavp-btnrow,
  .cav-page.ms26 .cavp-split .cavp-btnrow { justify-content: flex-start; }
}

/* ============================================================================
   Round 203 — image-right hero photos (Dennis 2026-06-23). Converts the centered
   text heroes on Kindergarten (262), Who We Are (239), Faculty & Staff (253), and
   Board of Trustees (249) to the shared .cavp-herobleed (text left, photo right).
   They already flush to the header via the unified :has(.cavp-herobleed) rule
   (R189) — no page-id needed. These heroes carry a .cavp-sub tagline, which
   .cavp-herobleed had no style for (only .cavp-hero / .cavp-herosplit did); style it
   to match the .cavp-herosplit sub (italic Cormorant, green-mid). Kindergarten and
   Who We Are intentionally share the same photo (Dennis). Append-only, no !important.
   ========================================================================== */
.cav-page .cavp-herobleed__text .cavp-sub {
  font-family: var(--cav-font-display, 'Cormorant Garamond', serif);
  font-style: italic;
  font-size: clamp(1.2rem, 2.2vw, 1.5rem);
  color: var(--cav-green-mid, #537331);
  margin: 0 0 14px;
  max-width: none;
}

/* ============================================================================
   Round 203b/c — keep hero titles on as few lines as possible while clearing the
   centered crest (Dennis 2026-06-23). R203b reserved the crest's space via H1
   padding-right, but that over-wrapped medium titles (Board of Trustees -> 2 lines,
   Roaring Summer Program -> 3). REVERTED. Instead R203c trims the hero H1 ~6%
   (clamp 2.9rem->2.7rem / 3.6vw->3.4vw) at the single H1-size rule below + the
   .cavp-herosplit rule, so single-line titles fit clear of the crest. Verified live
   @1447: "Board of Trustees" = 1 line (text right 510 < crest 616); "Roaring Summer
   Program" = 2 clean lines. Uniform across every hero. (Summer eyebrow removal from
   fix_round203b stays.)
   ========================================================================== */

/* ============================================================================
   Round 207 — HERO flush to next section (Tori 2026-06-24: "I actually think it gives
   quite a clean look without the white space! Let's go with it bumping up against the
   next section."). The .cavp-herosplit card heroes (Carden Method 250, Our Alumni 255,
   Contact 243, Parent Participation 275) sit in a .cavp-section whose TOP padding was
   already zeroed (R176) but whose 56px BOTTOM padding (base .cavp-section{padding:56px 0})
   left a white gap before the next section (Alumni's was 16px, via the .alum26 first-child
   rule). The .cavp-herobleed pages (Who We Are, Faculty, Kindergarten, Board, Admissions,
   After School, Tuition, Summer, Middle School) have no such gap — their hero is its own
   section. Match them: zero the herosplit hero section's bottom padding so the image meets
   the next section. Mobile keeps breathing room via the text column's own 30px padding.
   CSS-only, append-only; specificity (0,4,1) beats the base rule AND the .alum26 16px rule,
   plus source order — no !important. Markup unchanged.
   ========================================================================== */
body.ast-no-sidebar .cav-page .cavp-section:has(.cavp-herosplit) { padding-bottom: 0; }

/* ============================================================================
   Round 223 — HERO image uniform height / true flush (Dennis 2026-06-24: "they are
   not flush, check all the pages, they should all be flush (herobleed)"). The herobleed
   heroes were pinned to a 540px floor, BUT a portrait image (Admissions, 1920x2337) grew
   the grid row to 730px — taller than every other hero — leaving a big white block beside
   the short text column. Fix: take the hero image OUT OF FLOW (absolute-fill its media
   cell) so it can never dictate the hero height; the hero locks to the uniform 540 floor
   on every page and the image cover-fills it. Verified live (Admissions 730 -> 540, Who We
   Are unchanged 540) + mobile iframe harness @390 (image strip 260 on top, text below).
   CSS-only, append-only — no markup change, no !important.
   ========================================================================== */
body .cav-page .cavp-herobleed__media { position: relative; min-height: 540px; }
body:not(.home) .entry-content .cavp-herobleed__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 880px) {
  body .cav-page .cavp-herobleed__media { min-height: 0; height: 260px; }
}

/* ============================================================================
   Round 225 — Carden Method finish (Dennis 2026-06-24 + Tori's PullQuoteDesign Example.png).
   (1) Neutral card icon for renamed methodology cards that have no matching subject icon
       (Mental Image, Experience-Identify-Define). The Carden Reading Method keeps the book
       icon and Classical Content keeps the column icon (both still fit).
   (2) Redesigned pull-quote (.cavp-pullquote): smaller, cleaner — a white card with a green
       outline, a large green opening quote, green sans body text, and a gold attribution
       (matches Tori's example). Replaces the old green-filled .cavp-testimonial on 250.
   CSS-only here; the markup swap is in fix_round225. Append-only, no !important.
   ========================================================================== */
.cav-page .cavp-card--neutral::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23537331' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4c.6 4.4 1.6 5.4 6 6-4.4.6-5.4 1.6-6 6-.6-4.4-1.6-5.4-6-6 4.4-.6 5.4-1.6 6-6z'/%3E%3C/svg%3E"); }

.cav-page .cavp-pullquote { position:relative; max-width:880px; margin:8px auto 0; background:#fff; border:2px solid var(--cav-green,#2E4A1F); border-radius:22px; padding:28px 36px; text-align:left; }
.cav-page .cavp-pullquote__text { font-family:var(--cav-font-ui,'Quicksand',sans-serif); font-weight:500; font-size:clamp(1.1rem,1.9vw,1.35rem); line-height:1.5; color:var(--cav-green,#2E4A1F); margin:0 0 8px; }
.cav-page .cavp-pullquote__text::before { content:"\201C"; font-family:Georgia,'Times New Roman',serif; font-weight:700; font-size:2.6em; line-height:0; color:var(--cav-green,#2E4A1F); margin-right:6px; vertical-align:-0.42em; }
.cav-page .cavp-pullquote__attrib { font-family:var(--cav-font-ui,'Quicksand',sans-serif); font-size:.95rem; font-weight:600; color:#C99A2E; margin:0; }

/* ============================================================================
   Round 229 — hero-adjacent featsel section -> CREAM, so the hero photo meets a colored
   section flush (like Kindergarten) instead of meeting the white featsel section (which
   matches the hero white and reads as a floating photo with a gap). Root cause: R152's
   `.cavp-section--cream:has(.cavp-featsel){background:#fff}` whitens every featsel section;
   when that section directly follows the hero there is no color change at the image bottom.
   Fix: when a featsel section is the IMMEDIATE sibling after the herobleed hero, keep it
   cream + make its panels white for contrast. Scoped to Elementary (.elem26) first to
   confirm; the same rule without `.elem26` will cover Admissions / After School / Middle
   School / Tuition. The white pill buttons and the cream panel stay as-is (R152) — so the
   pills read white and the cream is the panel area to their right. Only the SECTION goes
   cream (so the hero photo meets cream = flush). CSS-only, append-only; specificity (0,5,1)
   beats R152 — no !important. [R230: removed the earlier panels-white rule — pills white,
   cream panel, per Dennis.]
   ========================================================================== */
/* R231 (2026-06-25): the R229/R230 hero-adjacent featsel "section -> cream" rule was REVERTED
   per Dennis (the featsel two-tone wasn't right). Revisit together with the section-width
   alignment fix — the real issue is that the hero is 1200px wide while content sections are
   1120 (.cavp-wrap) / 760 (.cavp-narrow), so the panel doesn't line up with the hero photo. */

/* ============================================================================
   Round 232 — UNIFORM CONTENT WIDTH (Dennis 2026-06-25: "I just want the whole site
   uniform ... if we are a certain width to fit [the hero images] everything else should
   match"). Every section's content container now matches the hero's 1200px and stays
   centered, so all sections line up edge-to-edge with the hero photo instead of stepping
   between 1120 (.cavp-wrap) and 760 (.cavp-narrow). Verified on Kindergarten (every section
   aligns at left/right 116/1316, centered). CSS-only, append-only — no !important.
   ========================================================================== */
body .cav-page .cavp-wrap { max-width: 1200px; }
body .cav-page .cavp-narrow { max-width: 1200px; }

/* ============================================================================
   Round 233 — UNIFORM SECTION SPACING (Dennis 2026-06-25: same spacing above/below every
   section; the gap above "Beyond the Core" was too much). Base content-section padding was
   56px top+bottom -> 112px between content sections (vs 56px after the flush hero). Tighten
   to 40px: ~80px between content sections, ~40px after the hero — even and lighter. The
   flush-hero rules (padding:0 via :has, specificity 0,3,1 / 0,4,1) keep winning, so heroes
   stay flush. CSS-only, append-only — no !important.
   ========================================================================== */
body .cav-page .cavp-section { padding-top: 40px; padding-bottom: 40px; }

/* ============================================================================
   Round 234 — readable line length in text sections + CTA spacing (Dennis 2026-06-26).
   With every section now 1200 (R232), long-form paragraphs ran full-width (HoS welcome,
   Who We Are accreditation, Carden Method). Cap paragraphs in text-only (.cavp-narrow)
   sections to ~800px, aligned to the section: left-aligned sections keep their left edge
   (text lines up with the grid), centered sections stay centered. Headings, cards, splits
   and pull-quotes keep the full 1200. Also bring .cavp-cta vertical padding to 40 to match
   the R233 rhythm. CSS-only, append-only — no !important.
   ========================================================================== */
.cav-page .cavp-narrow p { max-width: 800px; }
body .cav-page .cavp-narrow:not(.cavp-center) p { margin-right: auto; }
body .cav-page .cavp-narrow.cavp-center p, body .cav-page .cavp-narrow .cavp-center p { margin-left: auto; margin-right: auto; }
.cav-page .cavp-cta { padding-top: 40px; padding-bottom: 40px; }

/* ============================================================================
   Round 236 — UNIFORM SECTION SPACING / kill margin leaks (Dennis 2026-06-26 audit). Section
   gaps were uneven (measured 40/58/62/68/92/110/134) because headings and the feature-selector
   carried top margins that leaked through the section padding. Zero the leading/trailing
   margins of section content + the featsel margin-top, so every gap is the section padding
   only — uniform ~80 between content sections, ~40 after a flush hero. Verified live:
   Admissions 68/110/… -> 40/80/… ; Contact 58/134 -> 40/80. CSS-only, append-only.
   ========================================================================== */
body .cav-page .cavp-wrap > :first-child,
body .cav-page .cavp-narrow > :first-child,
body .cav-page .cavp-cta > :first-child { margin-top: 0; }
body .cav-page .cavp-wrap > :last-child,
body .cav-page .cavp-narrow > :last-child,
body .cav-page .cavp-cta > :last-child { margin-bottom: 0; }
body .cav-page .cavp-featsel { margin-top: 0; }

/* ============================================================================
   Round 237 — ONE CANONICAL HORIZONTAL GRID (Dennis 2026-06-26 audit). On desktop the 1200 box
   already has side gutters from the viewport, so drop the inner 24px wrap/CTA padding and the hero
   text's left inset: ALL content then fills the 1200 box (116/1316 @ 1447) and shares the hero
   photo's left+right edges — feature-selector pills+panel, cards, CTAs, and the hero text all line
   up. Mobile keeps the side gutters (<1248px). Body text stays capped at 800 (R234). Live-preview
   verified on Elementary: heroH1 / pills / Beyond / CTA left = 116; heroPhoto / panel / Beyond /
   CTA right = 1316. Plus: zero the trailing accordion item's 12px bottom margin (a residual gap
   leak past R236, seen on Who We Are 92 -> 80).
   ========================================================================== */
@media (min-width: 1248px) {
  body .cav-page .cavp-wrap { padding-left: 0; padding-right: 0; }
  body .cav-page .cavp-cta { padding-left: 0; padding-right: 0; }
  body .cav-page .cavp-herobleed__text { padding-left: 0; }
}
body .cav-page .cavp-acc > :last-child { margin-bottom: 0; }

/* ============================================================================
   Round 239 — Alumni: normalize the legacy logo-ticker section (Dennis 2026-06-26 audit). The
   "Where Our Graduates Go" block uses the old .cav-home-alumni component (20/24 padding + a ticker
   with a 24px bottom margin) instead of the .cavp-section rhythm, so it sat tight to the hero (gap
   20) and loose to the next section. Bring it onto the 40/40 grid and drop the ticker's bottom
   margin so its gaps match the rest of the site.
   ========================================================================== */
body .cav-page .cav-home-alumni { padding-top: 40px; padding-bottom: 40px; }
body .cav-page .cav-home-alumni .cav-ticker { margin-bottom: 0; }

/* ============================================================================
   Round 241 — correct R237 overreach (Dennis 2026-06-26: "white boxes not sized right"). R237
   dropped the 24px wrap gutters on EVERY section, so content cards/boxes (e.g. Contact's two
   white school cards) stretched edge-to-edge (116-1316). Restore the desktop wrap + CTA gutters
   so content stays contained (140-1292), and remove the gutter ONLY for the feature-selector's
   own wrap so its panel still reaches the hero photo edge (the alignment Dennis asked for).
   Verified preview: Contact cards 116-1316 -> 140/728-704/1292 (564 each); Elementary featsel
   panel still 484-1316, pills 116. Hero text stays left (R237) so the pills line up with it.
   ========================================================================== */
@media (min-width: 1248px) {
  body .cav-page .cavp-wrap { padding-left: 24px; padding-right: 24px; }
  body .cav-page .cavp-cta { padding-left: 24px; padding-right: 24px; }
  body .cav-page .cavp-wrap:has(.cavp-featsel) { padding-left: 0; padding-right: 0; }
}

/* ============================================================================
   Round 248 — UNIFY HERO LAYOUT (Dennis 2026-06-27: "Who We Are hero wider than Carden Method;
   follow a standard across the site"). The two hero components rendered differently: .cavp-herobleed
   text starts at the section left edge (116) with the photo filling the right half to 1316, but
   .cavp-herosplit sat inside a padded wrap (24) + a 56px text inset, pushing its H1 to ~196 and the
   photo card to 1292. Make herosplit render identically to herobleed on desktop: full-width wrap,
   even 1fr/1fr columns, text flush-left (right gutter kept for the photo gap). Verified live-preview
   on Carden Method: H1 116, photo 716-1316. Mobile (<1248) keeps the stacked layout.
   Pages affected: Carden Method, Our Alumni, Contact, Parent Participation.
   ========================================================================== */
@media (min-width: 1248px) {
  body .cav-page .cavp-wrap.cavp-herosplit { padding-left: 0; padding-right: 0; grid-template-columns: 1fr 1fr; }
  body .cav-page .cavp-herosplit > div:not(.cavp-media) { padding-left: 0; padding-right: 48px; }
}

/* ============================================================================
   Round 253 — feature-selector sections follow the cream/white rhythm (Dennis 2026-06-27). An old
   rule force-whitened every .cavp-section--cream that contains a feature-selector, breaking the
   cream/white alternation on Elementary, Admissions, Tuition, After School, How to Support, and
   Middle School (runs of 2-3 white sections; also the "How to Support not following the cream
   design" report). Keep the featsel section cream (its intended color) and make the panel cards
   white for contrast. Verified preview: Elementary HWWWCW -> HWCWCW and How to Support likewise;
   the featsel reads as a clean white card on a cream section.
   (R252 — a site-wide narrow-text centering rule — was reverted: it wrongly indented body text on
   every text page. Summer centering will be handled per-section instead.)
   ========================================================================== */
body .cav-page .cavp-section--cream:has(.cavp-featsel) { background-color: #f8f3e8; }
body .cav-page .cavp-featsel__panel--white { background-color: #ffffff; }

/* ============================================================================
   Round 255 (2026-06-27) — PILLS color, corrected. The SECTION behind the pills
   must be WHITE and the content CARD on the right CREAM (Dennis's Alumni feature-
   selector is the reference: "cream is only the background for the right card; the
   pills sit on white and hover cream"). R253 had inverted this (cream section +
   white card) on Elementary/Admissions/Tuition/After School/How to Support/Middle
   School. The pill rules themselves (L446-448: white pill, cream hover, green active)
   were already correct — only the section + card colors were wrong. These two rules
   re-state R253's exact selectors with swapped colors; appended last so they win by
   source order — no !important. Per-page cream/white re-balance is R256.
   ========================================================================== */
body .cav-page .cavp-section--cream:has(.cavp-featsel) { background-color: #ffffff; }
body .cav-page .cavp-featsel__panel--white { background-color: #f8f3e8; }

/* ============================================================================
   Round 256 (2026-06-27) — TEXT BLOCKS centered, never pinned hard-left. Dennis: the
   "all the way left with an empty right half" look (Head of School welcome, Who We Are
   "Recognized for Educational Excellence", Board, Admissions, Summer) is wrong — center
   the BLOCK on the page; text inside may stay left. Cap the text column to a centered
   ~860 measure, center its eyebrow + heading, and center the body paragraphs as a block
   (overrides R234's left-pin margin-right:auto). Body text-align is NOT changed (stays
   left for prose; .cavp-center keeps its centered short intros). Does NOT touch
   featsel / cards / tables / rosters (those aren't .cavp-narrow) — verified on Who We
   Are, Head of School, Elementary, Tuition, Board. Append-only, source order, no !important.
   ========================================================================== */
body .cav-page .cavp-narrow { max-width: 860px; }
body .cav-page .cavp-narrow:not(.cavp-center) p { margin-left: auto; margin-right: auto; }
body .cav-page .cavp-narrow .cavp-eyebrow,
body .cav-page .cavp-narrow .cavp-h2 { text-align: center; }

/* ============================================================================
   Round 257 (2026-06-27) — purposeful cream, no double cream (Dennis: "use cream
   where it fits, fix the double cream"). Two page-scoped color flips:
   - Carden Method (250): "In Practice" (the reverse-split, the only --rev split in a
     cream section) was cream sitting against the cream CTA = double cream. -> white,
     so it flows white -> cream CTA.
   - Summer (247): the closing "We Can't Wait to See You" register band was the 2nd of
     two trailing whites. -> cream, giving a clean W/C/W/C with a warm closing band.
   Page-scoped, append-only, no !important. Previewed live on both.
   ========================================================================== */
body.page-id-250 .cavp-section--cream:has(.cavp-split--rev) { background-color: #ffffff; }
body.page-id-247 .cavp-section--white:last-of-type { background-color: #f8f3e8; }

/* ============================================================================
   Round 258 (2026-06-27) — After School child-care section (263). Dennis: the text should
   sit at the TOP (not vertically centered to the image), and the image was too large / wrong
   crop (an 800x1200 portrait rendering ~1182px tall). Top-align the split, balance the columns
   1fr/1fr, and crop the photo to a ~470px landscape (object-fit cover). Page-scoped
   (#child-care on page 263), append-only, no !important. Previewed live.
   ========================================================================== */
body.page-id-263 #child-care .cavp-split { align-items: start; grid-template-columns: 1fr 1fr; gap: 40px; }
body.page-id-263 #child-care .cavp-split img { max-height: 470px; width: 100%; object-fit: cover; object-position: center 38%; border-radius: 8px; }

/* ============================================================================
   Round 259 (2026-06-27) — How to Support (1254) layout. Dennis:
   (a) Annual Fund (AVAF) was an off-center reverse split (text+button left, logo right).
       -> centered stack: logo on top, eyebrow/heading/body/donate button all centered.
   (b) CAPER event panel: video should be far-right with text to its left and the donate
       button left-justified below it all. Lay the video panel out as a grid (text col 1,
       video col 2 spanning the text rows, button below in col 1). Scoped to the panel that
       HAS a video so the video-less panels (Fall Gala, On-Campus) keep their single column.
   Page-scoped, append-only, no !important. Previewed live. (Dot separator on the CAPER
   pill/heading is a content edit, fix_round259_caper_dots.php.)
   ========================================================================== */
body.page-id-1254 .cavp-split { display: flex; flex-direction: column; align-items: center; text-align: center; max-width: 760px; margin-left: auto; margin-right: auto; gap: 16px; }
body.page-id-1254 .cavp-split > div:has(img) { order: -1; }
body.page-id-1254 .cavp-split img { max-width: 230px; height: auto; }
body.page-id-1254 .cavp-split .cavp-btnrow { justify-content: center; }
/* R260 (2026-06-27) — CAPER layout, corrected. R259's `display:grid` on the panel was
   un-scoped, so it overrode the feature-selector's hide and the inactive CAPER panel stayed
   visible when another pill was picked (Dennis: "breaks when you select other pills"); the
   grid also stretched each text row to the tall video, spreading the copy out. Fix: scope to
   the ACTIVE panel (so the base display:none still hides it when inactive) and place the video
   ABSOLUTELY top-right with padding-right on the panel, so the copy flows naturally on the left
   and the button sits below the copy. No display override -> no bleed. Verified live (switching
   + look). */
body.page-id-1254 .cavp-featsel__panel.is-active:has(.cavp-video) { position: relative; padding-right: 282px; min-height: 420px; }
/* R262 (2026-06-27): the video was 444px tall in a 450px card and overflowed the bottom/right edge
   ("does not fit"). Size it to ~224x356 and inset it 32px from the card top + right so it sits
   contained inside the cream card with room below. */
body.page-id-1254 .cavp-featsel__panel.is-active:has(.cavp-video) > .cavp-video { position: absolute; top: 32px; right: 32px; width: 224px; max-height: 356px; overflow: hidden; border-radius: 8px; margin: 0; }
body.page-id-1254 .cavp-video video { width: 100%; height: 356px; object-fit: cover; border-radius: 8px; display: block; }

/* ============================================================================
   Round 261 (2026-06-27) — Summer registration (1321) contact line. Dennis: "make it look
   better and fit our normal font/design." It was Quicksand 16px weight 500; bring it to the
   body-prose size/weight (1.05rem / 400) with comfortable line-height, and make the email +
   phone bold brand-green so they read as clear, on-brand links. Page-scoped, no !important.
   (The Summer "Register Now" buttons opening a new tab is a content edit, fix_round261_register_tabs.php.)
   ========================================================================== */
body.page-id-1321 .cavp-narrow:has(a[href^="mailto"]) { font-size: 1.05rem; font-weight: 400; line-height: 1.7; color: #3a3a3a; }

/* ============================================================================
   Round 269 (2026-07-01) — punch-list support styles.
   (1) Pull-quote unification: the sitewide standard quote is .cavp-pullquote (the
       white card / green border / gold attribution that matches Tori's
       PullQuoteDesign Example.png, already defined at R245 above). The homepage
       quote section (.cav-home-quote on 246) sits OUTSIDE .cav-page, so mirror the
       three card rules in that scope; card is block-centered with the section's
       centered mission/CTA below it.
   (2) .cavp-card--idea: light-bulb line icon (same 24px stroke style / #537331 as
       --reading/--classics/--neutral) for the Carden Method "Mental Image" card.
   Append-only, no !important.
   ========================================================================== */
.cav-home-quote .cavp-pullquote { position:relative; max-width:880px; margin:0 auto 32px; background:#fff; border:2px solid var(--cav-green,#2E4A1F); border-radius:22px; padding:28px 36px; text-align:left; }
.cav-home-quote .cavp-pullquote__text { font-family:var(--cav-font-ui,'Quicksand',sans-serif); font-style:normal; font-weight:500; font-size:clamp(1.1rem,1.9vw,1.35rem); line-height:1.5; color:var(--cav-green,#2E4A1F); margin:0 0 8px; }
.cav-home-quote .cavp-pullquote__text::before { content:"\201C"; font-family:Georgia,'Times New Roman',serif; font-weight:700; font-size:2.6em; line-height:0; color:var(--cav-green,#2E4A1F); margin-right:6px; vertical-align:-0.42em; }
.cav-home-quote .cavp-pullquote__attrib { font-family:var(--cav-font-ui,'Quicksand',sans-serif); font-size:.95rem; font-weight:600; color:#C99A2E; margin:0; text-transform:none; letter-spacing:normal; }
.cav-page .cavp-card--idea::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23537331' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1.3.5 2.6 1.5 3.5.8.8 1.3 1.5 1.5 2.5'/%3E%3Cpath d='M9 18h6'/%3E%3Cpath d='M10 22h4'/%3E%3C/svg%3E"); }

/* ============================================================================
   Round 273 (2026-07-01) — homepage polish (Dennis):
   (1) remove the two faint 1px cream border-top lines (below the quote/CTA section
       and below the ticker — they read as stray hairlines against white);
   (2) mission line under the Mae quote: 600px forced 3 lines; 800px = clean 2 lines
       (measured live; card above is 880 so the column still reads unified);
   (3) even out the section rhythm: gaps between home sections measured 133 / 165 /
       72px — now ~92 / 100 / 72 (quote pb 72->40, alumni pt 56->40 pb 64->24,
       programs pt 64->40; video->card and cards->stats untouched at 72).
   Beats post-758 by source order, no !important. Previewed via live injection.
   ========================================================================== */
.cav-home-alumni, .cav-home-programs { border-top: 0; }
.cav-home-quote .cav-mission { max-width: 800px; }
.cav-home-quote { padding-bottom: 40px; }
.cav-home-alumni { padding-top: 40px; padding-bottom: 24px; }
.cav-home-programs { padding-top: 40px; }

/* ============================================================================
   Round 279 (2026-07-02) — backlog polish.
   (1) pull-quote card breathing room on phones: 28/36 padding is heavy in a ~390px
       viewport; tighten under 600px (both scopes).
   (2) note: --cav-font-body 'Mulish' (declared in :root above) is intentionally NOT
       loaded as a webfont — body text is de facto Quicksand sitewide and consistent.
       Do not "fix" by loading Mulish; it would add a third font family for no gain.
   Append-only, no !important.
   ========================================================================== */
@media (max-width:600px) {
  .cav-page .cavp-pullquote, .cav-home-quote .cavp-pullquote { padding:22px 24px; }
}

/* ============================================================================
   Round 282 (2026-07-02) — CAIS + NAIS accreditation badges.
   (1) Who We Are accreditation section: color logos centered between the two
       paragraphs (CAIS 92px, wide NAIS at 72px for wordmark readability).
       Assets are pre-scaled PNGs served via srcset 1x/2x (SVG-in-img looked
       soft on non-Retina — same lesson as the header crest).
   (2) Footer: official dark-background variants (CAIS gray-reverse + NAIS knockout)
       under the social icons in the info column, sized to the footer's quiet scale.
   NOTE: the NAIS mark is YEAR-STAMPED ("2025-2026 Association Member") — swap the
   asset each school year. Append-only, no !important.
   ========================================================================== */
.cav-page .cavp-accred-logos { display:flex; align-items:center; justify-content:center; gap:52px; margin:30px 0 26px; flex-wrap:wrap; }
.cav-page .cavp-accred-logos img { height:92px; width:auto; }
.cav-page .cavp-accred-logos img.accred-nais { height:72px; }
.carden-footer-accred { display:flex; align-items:center; gap:20px; margin-top:22px; }
.carden-footer-accred img { height:46px; width:auto; }
.carden-footer-accred img.accred-nais { height:38px; }
body.page-id-1321 .cavp-narrow:has(a[href^="mailto"]) a { color: #2E4A1F; font-weight: 700; }

/* ============================================================================
   Round 266 (2026-06-27) — Tuition (272) visual tweaks (Tori 6/18). Markers added by
   fix_round265_tuition.php: .tui-costhead (left-align the "Our 2026-27 Costs" header to the
   page margin), tr.tui-annual (soft-gold background on each chart's Annual row), .tui-fineprint
   (smaller "* Payment Plan Fees" label). Also tighten the space after the h4 labels in the cost
   panels (Registration / grade bands). Page-scoped, append-only, no !important.
   ========================================================================== */
body.page-id-272 .tui-costhead { text-align: left; }
body.page-id-272 .tui-costhead .cavp-eyebrow,
body.page-id-272 .tui-costhead .cavp-h2 { text-align: left; }
body.page-id-272 .cavp-table tr.tui-annual td { background-color: rgba(254, 196, 29, 0.18); font-weight: 700; }
body.page-id-272 .cavp-featsel__panel h4 { margin-top: 16px; margin-bottom: 6px; }
body.page-id-272 .cavp-featsel__panel h4.tui-fineprint { font-size: 0.9rem; margin-top: 12px; color: #6b6b6b; }

/* ============================================================================
   Round 272 (2026-07-01) — pull-quote CLOSING glyph (Dennis, pending Tori's OK).
   The card frames the quote with a matched pair: big bold opening “ (::before, R245)
   + big bold closing ” (::after, here). The typed &rdquo; at the end of each quote's
   text is stripped in the same round (fix_r272_close_glyphs.php) so the mark isn't
   doubled; after R272 BOTH quote marks are CSS-only — never type quote characters
   inside .cavp-pullquote__text. Kept OUT of the base foundation.css until approved
   (R155 append-at-deploy pattern) so other CSS rounds can ship without it.
   Append-only, no !important.
   ========================================================================== */
.cav-page .cavp-pullquote__text::after,
.cav-home-quote .cavp-pullquote__text::after { content:"\201D"; font-family:Georgia,'Times New Roman',serif; font-weight:700; font-size:2.6em; line-height:0; color:var(--cav-green,#2E4A1F); margin-left:6px; vertical-align:-0.42em; }
