/* ============================================================
   Portland Queer Arts Foundation — Theme Styles
   Design System v1.0
   ============================================================ */

/* --- Google Fonts Import --- */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&display=swap');

/* --- CSS Custom Properties (Brand Tokens) --- */
:root {
  --pqa-navy: #2B2E5F;
  --pqa-light-navy: #F4F4F7;
  --pqa-accent-blue: #3ABAF9;
  --pqa-white: #FFFFFF;
  --pqa-text-dark: #1A1C3A;
  --pqa-text-mid: #4A4D6B;
  --pqa-text-light: #8C8FA8;
  --pqa-border: #E2E2EC;

  /* Layout */
  --pqa-header-height: 5rem;
  /* clearance for sticky-positioned elements below the fixed nav */

  /* Rainbow Colors */
  --pqa-dark-brown: #964E00;
  --pqa-light-brown: #BC7C2F;
  --pqa-pink: #F447E4;
  --pqa-purple: #8860E2;
  --pqa-blue: #3ABAF9;
  --pqa-green: #6DC435;
  --pqa-yellow: #FFD541;
  --pqa-orange: #F78A2F;
  --pqa-red: #FF4453;

  /* Rainbow Gradient — Right version (logo on page) */
  --pqa-rainbow: linear-gradient(90deg,
      #FF4453 0%,
      #F78A2F 13%,
      #FFD541 26%,
      #6DC435 39%,
      #3ABAF9 51%,
      #8860E2 63%,
      #F447E4 75%,
      #BC7C2F 87%,
      #964E00 100%);

  /* Rainbow Gradient — vertical (top to bottom), for left/right border accents */
  --pqa-rainbow-vertical: linear-gradient(to bottom,
      #964E00 0%,
      #BC7C2F 13%,
      #F447E4 26%,
      #8860E2 39%,
      #3ABAF9 51%,
      #6DC435 63%,
      #FFD541 75%,
      #F78A2F 87%,
      #FF4453 100%);

  /* Typography */
  --font-base: 'Montserrat', -apple-system, BlinkMacSystemFont, sans-serif;

  /* Spacing */
  --space-xs: 0.5rem;
  --space-sm: 1rem;
  --space-md: 2rem;
  --space-lg: 4rem;
  --space-xl: 7rem;

  /* Transitions */
  --transition: 0.2s ease;

  /* Max content width */
  --max-width: 1200px;
  --content-width: 800px;
}

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

html {
  font-size: 16px;
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-base);
  font-weight: 500;
  color: var(--pqa-text-dark);
  background-color: var(--pqa-white);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* iframes have a browser-default width of 300px (HTML spec).
   Force them to fill their container unless something more specific overrides. */
iframe {
  width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
}

/* Override WP Global Styles injection: a:where(:not(.wp-element-button)) { text-decoration: underline }
   WP uses :where() deliberately to zero out specificity (0-0-1), making it easy to override.
   Dropping :where() gives us 0-1-1, which beats the injected inline rule on specificity. */
a:not(.wp-element-button) {
  text-decoration: none;
}

ul,
ol {
  list-style: none;
}

/* ============================================================
   NAVIGATION
   ============================================================ */

.site-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  background-color: var(--pqa-white);
  border-bottom: 1px solid var(--pqa-border);
  box-shadow: 0 1px 12px rgba(43, 46, 95, 0.06);
}

/* Offset sticky header when the WP admin bar is present.
   The admin bar is position:fixed at 32px tall (desktop) and 46px tall
   on screens ≤782px. WordPress adds .admin-bar to <html> when it is shown. */
.admin-bar .site-header {
  top: 32px;
}

@media screen and (max-width: 782px) {
  .admin-bar .site-header {
    top: 46px;
  }
}

/* --- Rainbow Stripe --- */
.rainbow-stripe {
  height: 5px;
  background: var(--pqa-rainbow);
  width: 100%;
  display: block;
}

.nav-inner {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 0 var(--space-md);
  height: 72px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
}

.nav-logo img {
  max-height: 60px;
  min-height: 45px;
  min-width: 199px;
  max-width: 265px;
}

.nav-logo-fallback {
  display: none;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}

.nav-logo-fallback .emblem {
  min-height: 70px;
  min-width: 70px;
  max-height: 70px;
  max-width: 70px;
}

.nav-logo-mobile {
  display: none;
  min-height: 70px;
  min-width: 70px;
  max-height: 70px;
  max-width: 70px;
}

.nav-logo-mobile img {
  min-height: 70px;
  min-width: 70px;
  max-height: 70px;
  max-width: 70px;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.nav-item {
  position: relative;
}

.nav-link {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 0.5rem 0.75rem;
  font-size: 0.825rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  color: var(--pqa-text-mid);
  border-radius: 6px;
  transition: color var(--transition), background var(--transition);
  white-space: nowrap;
}

.nav-link:hover,
.nav-link.active {
  color: var(--pqa-navy);
  background-color: var(--pqa-light-navy);
}

.nav-link svg {
  width: 12px;
  height: 12px;
  transition: transform var(--transition);
}

.nav-item:hover .nav-link svg {
  transform: rotate(180deg);
}

/* Hamburger → X animation */
.nav-toggle rect {
  transition: transform 0.25s ease, opacity 0.25s ease;
  transform-box: fill-box;
  transform-origin: center;
}

.nav-toggle.open rect:nth-child(1) {
  transform: translateY(6px) rotate(45deg);
}

.nav-toggle.open rect:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}

.nav-toggle.open rect:nth-child(3) {
  transform: translateY(-6px) rotate(-45deg);
}

/* Dropdown */
.nav-dropdown {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  min-width: 220px;
  background-color: var(--pqa-white);
  border: 1px solid var(--pqa-border);
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(43, 46, 95, 0.12);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: all var(--transition);
  overflow: hidden;
}

.nav-item:hover .nav-dropdown {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.nav-dropdown a {
  display: block;
  padding: 0.65rem 1.25rem;
  font-size: 0.825rem;
  font-weight: 600;
  color: var(--pqa-text-mid);
  transition: background var(--transition), color var(--transition);
}

.nav-dropdown a:hover {
  background-color: var(--pqa-light-navy);
  color: var(--pqa-navy);
}

.nav-dropdown .dropdown-divider {
  height: 1px;
  background-color: var(--pqa-border);
  margin: 4px 0;
}

/* CTA buttons in nav */
.nav-cta-group {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 0.6rem 1.25rem;
  border-radius: 100px;
  font-family: var(--font-base);
  font-size: 0.825rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1;
  cursor: pointer;
  border: 2px solid transparent;
  transition: all var(--transition);
  white-space: nowrap;
  text-decoration: none;
  /* Normalize <button> vs <a>: browser user-agent stylesheets apply
     -webkit-appearance: button and inconsistent box-sizing to <button>
     elements, causing a height mismatch when the same .btn class is used
     on both element types. */
  -webkit-appearance: none;
  appearance: none;
  box-sizing: border-box;
}

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

.btn-primary:hover {
  background-color: #1d1f44;
  border-color: #1d1f44;
  color: var(--pqa-white);
}

.btn-secondary {
  background-color: transparent;
  color: var(--pqa-navy);
  border-color: var(--pqa-navy);
}

.btn-secondary:hover {
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
}

.btn-accent {
  background-color: var(--pqa-accent-blue);
  color: var(--pqa-white);
  border-color: var(--pqa-accent-blue);
}

.btn-accent:hover {
  background-color: #25a5e0;
  border-color: #25a5e0;
}

.btn-ghost-white {
  background-color: transparent;
  color: var(--pqa-white);
  border-color: rgba(255, 255, 255, 0.5);
}

.btn-ghost-white:hover {
  background-color: rgba(255, 255, 255, 0.15);
  border-color: var(--pqa-white);
}

.btn-white {
  background-color: var(--pqa-white);
  color: var(--pqa-navy);
  border-color: var(--pqa-white);
}

.btn-white:hover {
  background-color: var(--pqa-light-navy);
}

.btn-lg {
  padding: 0.85rem 2rem;
  font-size: 0.925rem;
}

/* ── Disabled button state ────────────────────────────────────────────────────
 * Base rule applies to all .btn variants: opacity dims the button, cursor
 * signals non-interactivity, and pointer-events:none prevents hover from
 * activating at all. Per-variant rules below explicitly lock each button to
 * its own base (non-hovered) colours as a belt-and-suspenders fallback —
 * "inherit" is intentionally avoided since it resolves to the parent element's
 * colour, not the button's own base colour.
 * ─────────────────────────────────────────────────────────────────────────── */

.btn:disabled,
.btn[aria-disabled="true"] {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}

.btn-primary:disabled,
.btn-primary:disabled:hover,
.btn-primary[aria-disabled="true"],
.btn-primary[aria-disabled="true"]:hover {
  background-color: var(--pqa-navy);
  border-color: var(--pqa-navy);
  color: var(--pqa-white);
}

.btn-secondary:disabled,
.btn-secondary:disabled:hover,
.btn-secondary[aria-disabled="true"],
.btn-secondary[aria-disabled="true"]:hover {
  background-color: transparent;
  color: var(--pqa-navy);
  border-color: var(--pqa-navy);
}

.btn-accent:disabled,
.btn-accent:disabled:hover,
.btn-accent[aria-disabled="true"],
.btn-accent[aria-disabled="true"]:hover {
  background-color: var(--pqa-accent-blue);
  border-color: var(--pqa-accent-blue);
  color: var(--pqa-white);
}

.btn-ghost-white:disabled,
.btn-ghost-white:disabled:hover,
.btn-ghost-white[aria-disabled="true"],
.btn-ghost-white[aria-disabled="true"]:hover {
  background-color: transparent;
  color: var(--pqa-white);
  border-color: rgba(255, 255, 255, 0.5);
}

.btn-white:disabled,
.btn-white:disabled:hover,
.btn-white[aria-disabled="true"],
.btn-white[aria-disabled="true"]:hover {
  background-color: var(--pqa-white);
  color: var(--pqa-navy);
  border-color: var(--pqa-white);
}

/* Dark-surface primary button uses accent-blue instead of navy — match that. */
.dark .btn-primary:disabled,
.dark .btn-primary:disabled:hover,
.dark .btn-primary[aria-disabled="true"],
.dark .btn-primary[aria-disabled="true"]:hover {
  background-color: var(--pqa-accent-blue);
  border-color: var(--pqa-accent-blue);
  color: var(--pqa-white);
}

/* ── Button auto-recolor on navy card backgrounds ─────────────────────────────
 * A bare .btn or .btn-primary on a --pqa-navy surface is invisible (navy on
 * navy). These contextual rules switch the default button to accent-blue
 * automatically so it remains visible against dark surfaces. Ghost-white and
 * btn-accent are unaffected — those are already legible on dark backgrounds.
 * ─────────────────────────────────────────────────────────────────────────── */

.dark .btn-primary {
  background-color: var(--pqa-accent-blue);
  color: var(--pqa-white);
  border-color: var(--pqa-accent-blue);
}

/* Mobile nav toggle */
.nav-toggle {
  display: none;
  background-color: transparent;
  border: none;
  cursor: pointer;
  padding: 0.5rem;
  color: var(--pqa-navy);
  position: relative;
  z-index: 1100;
}

/* ============================================================
   PAGE STRUCTURE
   ============================================================ */

.page-wrapper {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

main {
  flex: 1;
}

.pqa-container {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 0 var(--space-md);
}

.pqa-container-narrow {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 var(--space-md);
}

section {
  padding: var(--space-lg) 0;
}

section.section-sm {
  padding: var(--space-md) 0;
}

section.section-xl {
  padding: var(--space-xl) 0;
}

/* ============================================================
   HERO SECTIONS
   ============================================================ */

.hero,
.hero.dark {
  background-color: var(--pqa-light-navy);
  color: var(--pqa-text-mid);
  padding: var(--space-xl) 0 var(--space-lg);
  position: relative;
  overflow: hidden;
}

.hero.dark {
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
}

.hero-photo-overlay {
  position: absolute;
  inset: 0;
  /* --pqa-overlay-intensity (0–1) is set inline from the ACF range field.
     The three stops keep the same shape (1 : 0.67 : 0.305) and scale together.
     Fallback of 0.82 matches the original hardcoded value. */
  --pqa-overlay-intensity: 0.82;
  background: linear-gradient(to right,
      rgb(244 244 247 / calc(var(--pqa-overlay-intensity) * 1)) 0%,
      rgb(244 244 247 / calc(var(--pqa-overlay-intensity) * 0.67)) 60%,
      rgb(244 244 247 / calc(var(--pqa-overlay-intensity) * 0.305)) 100%);
  pointer-events: none;
}

.hero.dark .hero-photo-overlay {
  position: absolute;
  inset: 0;
  --pqa-overlay-intensity: 0.82;
  background: linear-gradient(to right,
      rgb(43 46 95 / calc(var(--pqa-overlay-intensity) * 1)) 0%,
      rgb(43 46 95 / calc(var(--pqa-overlay-intensity) * 0.67)) 60%,
      rgb(43 46 95 / calc(var(--pqa-overlay-intensity) * 0.305)) 100%);
  pointer-events: none;
}

.hero.dark .hero-bg-splat {
  position: absolute;
  right: -8%;
  top: -10%;
  width: 45%;
  opacity: 0.08;
  pointer-events: none;
}

.hero-eyebrow {
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--pqa-accent-blue);
  margin-bottom: 1rem;
}

.hero-eyebrow-secondary {
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--pqa-navy);
  opacity: 0.5;
  margin-bottom: 1rem;
}

.hero.dark .hero-eyebrow-secondary {
  color: var(--pqa-white);
}

.hero-title {
  font-size: clamp(2.2rem, 5vw, 4rem);
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: 1.5rem;
  max-width: 14ch;
}

.hero-subtitle {
  font-size: clamp(1rem, 2vw, 1.2rem);
  font-weight: 500;
  line-height: 1.6;
  color: var(--pqa-text-light);
  max-width: 52ch;
  margin-bottom: 2.5rem;
}

.hero.dark .hero-subtitle {
  color: rgba(255, 255, 255, 0.8);
}

.hero-tagline {
  font-size: 0.9rem;
  font-weight: 400;
  font-style: italic;
  letter-spacing: 0.01em;
  color: var(--pqa-navy);
  opacity: 0.65;
  margin-bottom: 1rem;
}

.hero.dark .hero-tagline {
  color: var(--pqa-white);
}

.hero-cta-group {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  align-items: center;
}

.hero-cta-group.center {
  justify-content: center;
}

.hero-cta-group.right {
  justify-content: right;
}

.hero-meta {
  text-align: right;
}

.hero-meta-item {
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--pqa-text-light);
  letter-spacing: 0.06em;
  line-height: 1.8;
}

.hero.dark .hero-meta-item {
  color: rgba(255, 255, 255, 0.5);
}

.hero-meta-item span {
  color: var(--pqa-text-mid);
}

.hero.dark .hero-meta-item span {
  color: rgba(255, 255, 255, 0.85);
}

/* Page header (interior pages) */
.page-header {
  background-color: var(--pqa-light-navy);
  padding: var(--space-lg) 0 var(--space-md);
  border-bottom: 1px solid var(--pqa-border);
}

.page-header:has(.breadcrumb) {
  padding-top: var(--space-sm);
}

.page-header.dark {
  background-color: var(--pqa-navy);
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

.page-header-eyebrow {
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--pqa-accent-blue);
  margin-bottom: 0.75rem;
}

.page-header h1 {
  font-size: clamp(1.8rem, 4vw, 3rem);
  font-weight: 700;
  color: var(--pqa-navy);
  line-height: 1.15;
  margin-bottom: 1rem;
}

.page-header.dark h1 {
  color: var(--pqa-white);
}

.page-header p {
  font-size: 1.05rem;
  color: var(--pqa-text-mid);
  max-width: 58ch;
  line-height: 1.65;
}

.page-header.dark p {
  color: rgba(255, 255, 255, 0.75);
}

.page-header.dark .breadcrumb {
  color: rgba(255, 255, 255, 0.5);
}

.page-header.dark .breadcrumb a {
  color: rgba(255, 255, 255, 0.65);
}

.page-header.dark .breadcrumb a:hover {
  color: var(--pqa-white);
}

.page-header.dark .breadcrumb-sep {
  color: rgba(255, 255, 255, 0.25);
}

/* Paint Runs background section
   background-image is set inline in the block render so pqa_asset() can
   generate the correct URL. This class handles every other property. */
.paint-runs-section {
  background-size: auto 820px;
  background-position: left top;
  background-repeat: repeat-x;
  padding-top: calc(400px * 0.45 + 3rem);
  padding-bottom: var(--space-lg);
}

/* ── PQA Logo Block ──────────────────────────────────────────────────────────
 * Renders both light and dark versions of the logo; CSS shows/hides the
 * correct one based on the background context of the containing element.
 * Default state: dark (navy ink) logo on light backgrounds.
 * Dark-context state: light (white) logo on navy backgrounds.
 * ─────────────────────────────────────────────────────────────────────────── */
.pqa-logo-block {
  display: block;
  line-height: 0;
  /* collapse baseline gap below inline-block imgs */
}

/* inline-block lets the img respond to text-align inherited from the
   parent container — centered cards, text-center sections, etc. */
.pqa-logo-block img {
  display: inline-block;
  vertical-align: middle;
  width: auto;
  height: auto;
}

/* Horizontal wordmark */
.pqa-logo-block--horizontal img {
  max-height: 52px;
  max-width: 265px;
}

/* Emblem / icon mark */
.pqa-logo-block--emblem img {
  max-height: 72px;
  max-width: 72px;
}

/* Padding is controlled per-side via inline styles set in render.php. */

/* Default: show dark logo, hide light logo */
.pqa-logo-block .pqa-logo-light {
  display: none;
}

/* Dark contexts: swap to light logo ─────────────── */
.pqa-section.dark .pqa-logo-block .pqa-logo-dark,
.sidebar-card.dark .pqa-logo-block .pqa-logo-dark,
.section-callout.dark .pqa-logo-block .pqa-logo-dark,
.vision-card.dark .pqa-logo-block .pqa-logo-dark,
.wp-block-group.dark .pqa-logo-block .pqa-logo-dark,
.hero.dark .pqa-logo-block .pqa-logo-dark,
.page-header.dark .pqa-logo-block .pqa-logo-dark,
.site-footer .pqa-logo-block .pqa-logo-dark {
  display: none;
}

/* inline-block preserves alignment inheritance in dark contexts too */
.pqa-section.dark .pqa-logo-block .pqa-logo-light,
.sidebar-card.dark .pqa-logo-block .pqa-logo-light,
.section-callout.dark .pqa-logo-block .pqa-logo-light,
.vision-card.dark .pqa-logo-block .pqa-logo-light,
.wp-block-group.dark .pqa-logo-block .pqa-logo-light,
.hero.dark .pqa-logo-block .pqa-logo-light,
.page-header.dark .pqa-logo-block .pqa-logo-light,
.site-footer .pqa-logo-block .pqa-logo-light {
  display: inline-block;
}

/* ============================================================
   TYPOGRAPHY UTILITIES
   ============================================================ */

.section-eyebrow {
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--pqa-accent-blue);
  margin-bottom: 0.75rem;
  display: block;
}

.section-title {
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 700;
  color: var(--pqa-navy);
  line-height: 1.2;
  margin-bottom: 1rem;
}

.dark .section-title {
  color: var(--pqa-white);
}

.section-body {
  font-size: 1rem;
  color: var(--pqa-text-mid);
  line-height: 1.7;
  max-width: 58ch;
}

.dark .section-body-light {
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.75);
  line-height: 1.7;
}

/* Defined after .two-col-text p (line ~2137) to win on source order.
   Uses p.section-pull (specificity 0-1-1) to match .two-col-text p. */

.section-rule,
hr.wp-block-separator {
  border: none;
  border-top: 1px solid var(--pqa-border);
  margin: 1.5rem 0;
}

.section-list {
  list-style: disc;
  display: flex;
  flex-direction: column;
  gap: 10px;
  color: var(--pqa-text-mid);
  margin: 0 2rem 1rem;
}

.section-list li::marker {
  color: var(--pqa-accent-blue);
}

.section-tag-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.section-tag-grid.center {
  justify-content: center;
}

.section-tag-grid-tag {
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--pqa-navy);
  border: 1.5px solid var(--pqa-navy);
  border-radius: 20px;
  padding: .35rem .63rem;
  white-space: nowrap;
}

.section-tag-grid-tag.dark {
  color: var(--pqa-white);
  background-color: var(--pqa-navy);
}

.section-tag-grid-tag.accent {
  color: var(--pqa-white);
  background-color: var(--pqa-accent-blue);
  border-color: var(--pqa-accent-blue);
}

.section-callout-group {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.section-callout {
  background-color: var(--pqa-light-navy);
  border-radius: 8px;
  padding: .88rem 1rem;
}

.section-callout.padding-lg {
  padding: 2.5rem;
}

.section-callout.dark {
  background-color: var(--pqa-navy);
}

.section-callout.white {
  background-color: var(--pqa-white);
  border: 1px solid var(--pqa-border);
}

.section-callout .section-eyebrow {
  display: block;
  margin-bottom: 0.75rem;
}

.section-callout h3 {
  font-size: clamp(1.1rem, 2vw, 1.4rem);
  font-weight: 700;
  color: var(--pqa-navy);
  margin-bottom: 1rem;
  line-height: 1.3;
}

.section-callout.dark h3 {
  color: var(--pqa-white);
}

.section-callout h3:has(+ .section-callout-badges) {
  margin-bottom: 0.1rem;
}

.section-callout-badges {
  margin-bottom: 1rem;
}

.section-callout-badge {
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--pqa-white);
  background-color: var(--pqa-navy);
  border-radius: 20px;
  padding: .35rem .63rem;
}

.section-callout-badge.light,
.section-callout.dark .section-callout-badge {
  background-color: var(--pqa-accent-blue);
}

.section-callout p {
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--pqa-navy);
  line-height: 1.6;
  margin: 0 !important;
}

.section-callout.dark p {
  color: var(--pqa-white);
}

.section-callout .hero-cta-group {
  margin-top: 1.5rem;
}

.section-callout a:not(.btn) {
  text-decoration: underline;
}

.section-callout a:not(.btn):hover {
  color: var(--pqa-accent-blue);
}

.text-center {
  text-align: center;
}

.text-center .section-body {
  margin: 0 auto;
}

/* ============================================================
   GRID & CARD LAYOUTS
   ============================================================ */

.grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-md);
}

.grid-2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-md);
  align-items: start;
}

/* Asymmetric two-column grids — mirroring the Spectacular director grid (280px : 1fr ≈ 30:70) */
.grid-2-30-70 {
  display: grid;
  grid-template-columns: 30% 1fr;
  gap: 3rem;
  align-items: start;
}

/* Single-column layout for job/volunteer postings with no featured image. */
.pqa-posting-single-no-image {
  display: block;
  max-width: 720px;
}

.grid-2-70-30 {
  display: grid;
  grid-template-columns: 1fr 30%;
  gap: 3rem;
  align-items: start;
}

.grid-4 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-md);
}

.card {
  background-color: var(--pqa-white);
  border: 1px solid var(--pqa-border);
  border-radius: 12px;
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: box-shadow var(--transition), transform var(--transition);
}

.card:hover {
  box-shadow: 0 8px 32px rgba(43, 46, 95, 0.10);
  transform: translateY(-2px);
}

.card-img {
  width: 100%;
  object-fit: cover;
  background-color: var(--pqa-light-navy);
}

.card-img-placeholder {
  width: 100%;
  background-color: var(--pqa-light-navy);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--pqa-text-light);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.05em;
}

.card-body {
  padding: 1.5rem;
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.card-eyebrow {
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--pqa-accent-blue);
  margin-bottom: 0.5rem;
}

.card-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin-bottom: 0.6rem;
  line-height: 1.3;
}

.card-text {
  font-size: 0.9rem;
  color: var(--pqa-text-mid);
  line-height: 1.65;
  margin-bottom: 1.25rem;
}

.card-subtitle {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--pqa-text-mid);
  margin-bottom: 0.6rem;
  line-height: 1.3;
}

.card-title:has(+ .card-subtitle) {
  margin-bottom: 0.1rem;
}

.card-text.small {
  font-size: 0.8rem;
}

/* Structured key/value list inside a sidebar card */
.card-item {
  margin-bottom: 0.6rem;
}

.card-item-label {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--pqa-text-light);
  margin-bottom: 0.1rem;
}

.card-item-text,
.card-item-value,
.card-item-callout {
  font-size: 0.9rem;
  color: var(--pqa-text-mid);
  line-height: 1.4;
}

.card-item-value {
  font-weight: 600;
  color: var(--pqa-navy);
}

.card-item-callout {
  font-size: 1.2rem;
  font-weight: 800;
  color: var(--pqa-navy);
}

.sidebar-card {
  background-color: var(--pqa-light-navy);
  border-radius: 12px;
  overflow: hidden;
}

.sidebar-card+.sidebar-card {
  margin-top: 1.5rem;
}

/* Preserve card spacing when a hidden modal overlay sits between two cards
   (e.g. in the block editor preview where wp_footer deferral doesn't apply). */
.sidebar-card+.pqa-modal-overlay+.sidebar-card {
  margin-top: 1.5rem;
}

.sidebar-card .card-img {
  height: auto;
}

.sidebar-card .card-body .btn {
  width: 100%;
  justify-content: center;
}

.sidebar-card.dark {
  background-color: var(--pqa-navy);
}

.sidebar-card.dark .card-eyebrow {
  color: var(--pqa-accent-blue);
}

.sidebar-card.dark .card-subtitle {
  color: var(--pqa-text-light);
}

.sidebar-card.dark .card-title,
.sidebar-card.dark .card-text {
  color: var(--pqa-white);
}

.sidebar-card.dark .card-item-label {
  color: rgba(255, 255, 255, 0.45);
}

.sidebar-card.dark .card-item-value,
.sidebar-card.dark .card-item-callout {
  color: var(--pqa-white);
}

/*
 * Sticky sidebar card
 * When a sidebar card has the "Sticky" setting enabled, that individual card
 * sticks just below the site header as the page scrolls. Other cards in the
 * same column scroll normally. Disabled on mobile where the layout stacks
 * vertically (see responsive block at the bottom of the file).
 */
.sidebar-card.is-sticky {
  position: sticky;
  top: var(--pqa-header-height);
}

/* Vision card — styled box used in two-col right column */
.vision-card {
  border-radius: 16px;
  padding: 2.5rem;
  height: 100%;
}

.vision-card.light {
  background-color: var(--pqa-light-navy);
}

.vision-card.dark {
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
}

.vision-card.white {
  background-color: var(--pqa-white);
  border: 1px solid var(--pqa-border);
}

.vision-card .section-eyebrow {
  display: block;
  margin-bottom: 0.75rem;
}

.vision-card h3 {
  font-size: clamp(1.1rem, 2vw, 1.4rem);
  font-weight: 700;
  color: var(--pqa-navy);
  margin-bottom: 1rem;
  line-height: 1.3;
}

.vision-card.dark h3 {
  color: var(--pqa-white);
}

.vision-card p {
  font-size: 0.95rem;
  color: var(--pqa-text-mid);
  line-height: 1.7;
  margin-bottom: 1rem;
}

.vision-card.dark p {
  color: rgba(255, 255, 255, 0.75);
}

.vision-card .hero-cta-group {
  margin-top: 1.5rem;
}

.card-link {
  font-size: 0.825rem;
  font-weight: 700;
  color: var(--pqa-navy);
  letter-spacing: 0.04em;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: gap var(--transition), color var(--transition);
}

.card-link:hover {
  gap: 8px;
  color: var(--pqa-accent-blue);
}

/* Stretched link — makes the entire .card or .program-card clickable.
   The ::after pseudo-element covers the card; position: relative on the
   card creates the stacking context so other interactive children sit above it. */
.card .card-link::after,
.program-card .card-link::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  z-index: 0;
}

/* Keep any buttons or secondary links above the stretched overlay */
.card .btn,
.card .badge,
.program-card .btn,
.program-card .badge {
  position: relative;
  z-index: 1;
}

/* Latest News block cards */
.pqa-latest-news-block .card {
  max-height: 620px;
}

.pqa-latest-news-block .card-img {
  max-height: 220px;
}

.pqa-latest-news-block .card-text {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, black calc(100% - 1.25rem), transparent 100%);
  mask-image: linear-gradient(to bottom, black calc(100% - 1.25rem), transparent 100%);
}

/* Program cards */
.program-card {
  background-color: var(--pqa-white);
  border: 1px solid var(--pqa-border);
  border-radius: 12px;
  position: relative;
  overflow: hidden;
  transition: box-shadow var(--transition), transform var(--transition);
  display: flex;
  flex-direction: column;
  min-height: 320px;
}

.program-card:hover {
  box-shadow: 0 8px 32px rgba(43, 46, 95, 0.10);
  transform: translateY(-3px);
}

.program-card-accent {
  height: 4px;
  width: 100%;
}

.program-card-body {
  padding: 1.75rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.program-card-icon {
  font-size: 2rem;
  margin-bottom: 1rem;
  line-height: 1;
}

.program-card-title {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin-bottom: 0.75rem;
}

.program-card-text {
  font-size: 0.9rem;
  color: var(--pqa-text-mid);
  line-height: 1.65;
  flex: 1;
  margin-bottom: 1.5rem;
}

.program-card-footer {
  margin-top: auto;
}

/* ============================================================
   PROJECTS BLOCK
   ============================================================ */

/* Year heading — small uppercase label above each year's grid */
.pqa-project-year-heading {
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--pqa-text-light);
  margin-top: 0;
  margin-bottom: 1.25rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--pqa-border);
}

/* Year group container — spacing between years */
.pqa-project-grid {
  margin-bottom: 3rem;
}

.pqa-project-grid:last-of-type {
  margin-bottom: 0;
}

/* Project card — entire <a> tag is the card */
.pqa-project-card {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  max-height: 650px;
  overflow: hidden;
}

.pqa-project-card:hover {
  text-decoration: none;
  color: inherit;
}

.pqa-project-card:hover .card-title {
  color: var(--pqa-accent-blue);
}

/* Cap the featured image height */
.pqa-project-card .card-img,
.pqa-project-card .card-img-placeholder {
  max-height: 400px;
}

/* Fade overflowing summary text — mirrors .pqa-latest-news-block .card-text */
.pqa-project-card .card-text {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, black calc(100% - 1.25rem), transparent 100%);
  mask-image: linear-gradient(to bottom, black calc(100% - 1.25rem), transparent 100%);
}

/* Suppress the stretched-link ::after — the card <a> already handles clicks */
.pqa-project-card .card-link::after {
  display: none;
}

/* Placeholder image for cards without a featured image */
.pqa-project-placeholder {
  height: 180px;
}

/* ============================================================
   NEWS ARCHIVE BLOCK — PAGINATION
   ============================================================ */

.pqa-pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin-top: 2.5rem;
  padding-top: 2rem;
  border-top: 1px solid var(--pqa-border);
}

.pqa-pagination a,
.pqa-pagination span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.25rem;
  height: 2.25rem;
  padding: 0 0.6rem;
  border-radius: 6px;
  font-size: 0.8125rem;
  font-weight: 700;
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
}

.pqa-pagination a {
  color: var(--pqa-navy);
  background: transparent;
  border: 1px solid var(--pqa-border);
}

.pqa-pagination a:hover {
  background: var(--pqa-light-navy);
  border-color: var(--pqa-navy);
  color: var(--pqa-navy);
}

/* Current page */
.pqa-pagination span.current {
  background: var(--pqa-navy);
  color: var(--pqa-white);
  border: 1px solid var(--pqa-navy);
}

/* Ellipsis dots */
.pqa-pagination span.dots {
  border: none;
  color: var(--pqa-text-light);
  background: transparent;
}

/* Prev / Next links */
.pqa-pagination .prev,
.pqa-pagination .next {
  padding: 0 0.9rem;
  color: var(--pqa-accent-blue);
  border-color: var(--pqa-accent-blue);
}

.pqa-pagination .prev:hover,
.pqa-pagination .next:hover {
  background: var(--pqa-accent-blue);
  color: var(--pqa-white);
}

/* ============================================================
   JOBS & VOLUNTEER BLOCK / POSTING PAGES
   ============================================================ */

/* Listing cards */
.pqa-jobs-list {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.pqa-job-card {
  display: grid;
  grid-template-columns: auto;
  border: 1px solid var(--pqa-border);
  border-radius: 12px;
  background: var(--pqa-white);
  overflow: hidden;
}

.pqa-job-card:has(.card-img) {
  grid-template-columns: 200px auto;
}

@media (max-width: 640px) {
  .pqa-job-card:has(.card-img) {
    grid-template-columns: 1fr;
  }
}

.pqa-job-card .card-img {
  height: 100%;
}

.pqa-job-card-body {
  padding: 2rem;
}

.pqa-job-card-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.75rem;
  margin-bottom: 0.5rem;
}

.pqa-job-card-title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin-top: 0;
  margin-bottom: 0.5rem;
}

.pqa-job-card-excerpt {
  font-size: 0.9rem;
  color: var(--pqa-text-mid);
  line-height: 1.65;
  margin-bottom: 1rem;
}

.wp-block-heading:first-child {
  margin-top: 0;
}

.pqa-posting-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-top: 2rem;
}

/* ============================================================
   PAGE-SPECIFIC SECTIONS
   ============================================================ */


/* Form styles */
.form-row {
  display: flex;
  gap: 0.75rem;
  max-width: 480px;
  margin: 0 auto;
}

.form-input {
  flex: 1;
  padding: 0.7rem 1rem;
  border: 2px solid var(--pqa-border);
  border-radius: 6px;
  font-family: var(--font-base);
  font-size: 0.9rem;
  font-weight: 500;
  outline: none;
  transition: border-color var(--transition);
  background-color: var(--pqa-white);
}

.form-input:focus {
  border-color: var(--pqa-accent-blue);
}

/* Tag / badge */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0.25rem 0.75rem;
  border-radius: 100px;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.badge-accent {
  background-color: var(--pqa-accent-blue);
  color: var(--pqa-white);
}

.badge-blue {
  background-color: rgba(58, 186, 249, 0.12);
  color: #1479a8;
  border: 1px solid rgba(58, 186, 249, 0.3);
}

.badge-navy {
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
}

.badge-light {
  background-color: var(--pqa-light-navy);
  color: var(--pqa-navy);
  border: 1px solid var(--pqa-navy);
}

.badge-green {
  background-color: #e8f8d8;
  color: #2d6612;
  border: 1px solid rgba(45, 102, 18, 0.3);
}

.badge-pink {
  background-color: #fce4fb;
  color: #8a1282;
}

/* Clickable badges — category filter triggers inside event cards */
[data-filter-cat] {
  cursor: pointer;
  transition: opacity 0.15s, box-shadow 0.15s;
}

[data-filter-cat]:hover {
  opacity: 0.82;
  box-shadow: 0 0 0 2px currentColor;
}

[data-filter-cat]:focus-visible {
  outline: 2px solid var(--pqa-accent-blue);
  outline-offset: 2px;
}

/* TEC category color badges — border/bg/text driven by inline style from PHP */
.badge-cat {
  border: 2px solid transparent;
}

/* Spectacular — full PQA rainbow gradient */
.badge-rainbow {
  background: linear-gradient(115deg,
      #FF4453 0%,
      #F78A2F 13%,
      #FFD541 26%,
      #6DC435 39%,
      #3ABAF9 51%,
      #8860E2 63%,
      #F447E4 75%,
      #BC7C2F 87%,
      #964E00 100%);
  color: #fff;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
  padding: 6px 12px;
}

/* Single-column layout for events with no featured image */
.pqa-event-single-col {
  display: block;
  max-width: 780px;
}

/* Add to Calendar dropdown inside the event meta details panel */
.pqa-meta-add-to-cal {
  margin-top: 1.25rem;
  position: relative;
}

.pqa-meta-add-to-cal .calendar-subscribe-menu {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: auto;
  min-width: 180px;
  z-index: 100;
}

/* Category badge row on single event page */
.pqa-event-category-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 0.5rem;
}

/* Divider with text */
.section-divider {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: var(--space-md) 0;
}

.section-divider::before,
.section-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background-color: var(--pqa-border);
}

.section-divider span {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--pqa-text-light);
  white-space: nowrap;
}

/* News list item */
.news-item {
  padding: 1.5rem 0;
  border-bottom: 1px solid var(--pqa-border);
  display: grid;
  grid-template-columns: 200px 1fr auto;
  gap: 1rem;
  align-items: stretch;
}

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

.news-item-thumb-wrap,
.news-item-thumb-placeholder {
  display: flex;
  border-radius: 12px 0px 0px 12px;
  overflow: hidden;
}

.news-item-thumb {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.news-item-thumb-placeholder {
  width: 100%;
  height: 100%;
  min-height: 80px;
  border-radius: 6px 0 0 6px;
  background: var(--pqa-light-navy);
}

.news-date {
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--pqa-text-light);
  letter-spacing: 0.05em;
  white-space: nowrap;
}

.news-title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin-bottom: 0.4rem;
  line-height: 1.3;
}

.news-excerpt {
  font-size: 0.875rem;
  color: var(--pqa-text-mid);
  line-height: 1.6;
}

/* News page — responsive two-column layout */
.news-layout {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: var(--space-lg);
  align-items: start;
}

@media (max-width: 768px) {
  .news-layout {
    grid-template-columns: 1fr;
  }

  .news-layout .news-sidebar {
    position: static !important;
  }
}

@media (max-width: 640px) {
  .news-item {
    grid-template-columns: 1fr;
  }

  .news-item-thumb-wrap,
  .news-item-thumb-placeholder {
    border-radius: 12px 12px 0px 0px;
    max-height: 320px;
  }

  /* Hoist the date above the content using CSS order. The date is the third
     grid child in the DOM (thumb | content | date), so we pull it to the top
     visually without changing the HTML structure. */
  .news-item .news-date {
    order: -1;
  }

  .news-excerpt {
    max-height: 80px;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
    mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
  }
}

/* Calendar event item */
.event-item {
  display: grid;
  grid-template-columns: 70px 1fr;
  gap: 1.25rem;
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--pqa-border);
  align-items: start;
}

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

.event-date-block {
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
  border-radius: 10px;
  padding: 0.6rem;
  text-align: center;
  flex-shrink: 0;
  min-width: 60px;
  min-height: 60px;
}

.event-date-month {
  font-size: 0.6rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--pqa-accent-blue);
}

/* When the block itself uses the accent-blue background, flip month to white */
.event-date-block--accent .event-date-month {
  color: rgba(255, 255, 255, 0.75);
}

.event-date-day {
  font-size: 1.75rem;
  font-weight: 800;
  white-space: nowrap;
  line-height: 1;
}

.event-date-day.small {
  font-size: 1.15rem;
  margin-top: 0.3rem
}

.event-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin-bottom: 0.3rem;
}

a.event-title,
.event-title a {
  color: inherit;
  text-decoration: none;
}

a.event-title:hover,
.event-title a:hover {
  color: var(--pqa-accent-blue);
}

/* Date block as a link */
a.event-date-block {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  color: var(--pqa-white);
  transition: opacity 0.15s ease;
}

a.event-date-block:hover {
  opacity: 0.8;
}

.event-meta {
  font-size: 0.8rem;
  color: var(--pqa-text-light);
  font-weight: 600;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem 0;
  margin-top: 0.2rem;
}

.event-meta-item {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  white-space: nowrap;
}

.event-meta-sep {
  margin: 0 0.4rem;
  opacity: 0.5;
}

.event-description {
  font-size: 0.875rem;
  color: var(--pqa-text-mid);
  margin-top: 0.4rem;
  line-height: 1.5;
  display: -webkit-box;
  line-clamp: 2;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.event-learn-more {
  display: inline-block;
  margin-top: 0.4rem;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--pqa-accent-blue);
  text-decoration: none;
}

.event-learn-more:hover {
  text-decoration: underline;
}

/* Event item with featured image — 3-col layout */
.event-item--has-image {
  grid-template-columns: 70px 1fr 280px;
  padding-bottom: 0;
  /* image goes flush to the separator border */
}

.event-item--has-image a.event-date-block {
  align-self: start;
  /* date block always pins to the top */
}

.event-item--has-image .event-item-content {
  align-self: stretch;
  /* stretch to full row height so flex-grow works */
  display: flex;
  flex-direction: column;
  padding-bottom: 1.25rem;
  /* restore breathing room for the text */
}

/* When the image makes the card taller, let the description fill the space */
.event-item--has-image .event-description {
  display: block;
  line-clamp: unset;
  -webkit-line-clamp: unset;
  overflow: visible;
  flex-grow: 1;
}

/* Image column */
.event-item-image {
  align-self: end;
  /* bottom-align the image within the row */
  overflow: hidden;
  border-radius: 0 10px 10px 0;
  /* square left corners, rounded right */
}

.event-item-image img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 280px;
  /* practical 2× cap on a typical card height */
  object-fit: cover;
}

/* Mobile: stack image below the description */
@media (max-width: 640px) {
  .event-item--has-image {
    grid-template-columns: 70px 1fr;
    grid-template-areas:
      "date content"
      "image image";
    border-bottom: none;
  }

  .event-item--has-image>a.event-date-block {
    grid-area: date;
  }

  .event-item--has-image>.event-item-content {
    grid-area: content;
    align-self: start;
    padding-bottom: 0.75rem;
  }

  /* Revert to 2-line clamp — image is no longer beside the text */
  .event-item--has-image .event-description {
    display: -webkit-box;
    line-clamp: 2;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    flex-grow: 0;
  }

  .event-item--has-image>.event-item-image {
    grid-area: image;
    align-self: stretch;
    border-radius: 0 0 10px 10px;
  }

  .event-item-image img {
    max-height: 100%;
  }
}

/* ============================================================
   Calendar page — event cards, month headers, filter bar
   ============================================================ */

/* Toolbar row: wraps the filter pills and the subscribe button */
.calendar-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 2rem;
}

/* Filter bar loses its own bottom margin when inside the toolbar */
.calendar-toolbar .filter-bar {
  margin-bottom: 0;
  flex: 1 1 auto;
}

/* Subscribe-to-calendar dropdown (<details>/<summary>) */
.calendar-subscribe {
  position: relative;
  flex-shrink: 0;
}

/* Use the .btn style on the <summary> toggle */
.calendar-subscribe summary {
  list-style: none;
  cursor: pointer;
  user-select: none;
}

/* Hide browser-native disclosure triangle in all engines */
.calendar-subscribe summary::-webkit-details-marker {
  display: none;
}

.calendar-subscribe summary::marker {
  display: none;
}

/* Rotate caret when open */
.calendar-subscribe[open] .calendar-subscribe-caret {
  transform: rotate(180deg);
}

/* Dropdown panel */
.calendar-subscribe-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 0.4rem);
  z-index: 200;
  min-width: 190px;
  background: var(--pqa-white);
  border: 1.5px solid var(--pqa-border);
  border-radius: 10px;
  box-shadow: 0 6px 24px rgba(43, 46, 95, 0.12);
  list-style: none;
  margin: 0;
  padding: 0.35rem 0;
}

.calendar-subscribe-menu li a {
  display: block;
  padding: 0.55rem 1.1rem;
  font-family: var(--font-base);
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--pqa-navy);
  text-decoration: none;
  letter-spacing: 0.02em;
  transition: background 0.15s;
  white-space: nowrap;
}

.calendar-subscribe-menu li a:hover {
  background: var(--pqa-light-navy);
  color: var(--pqa-navy);
}

.filter-bar {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 2rem;
}

.filter-btn {
  padding: 0.45rem 1rem;
  border-radius: 100px;
  border: 2px solid var(--pqa-border);
  background-color: var(--pqa-white);
  font-family: var(--font-base);
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--pqa-text-mid);
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s, color 0.2s;
}

.filter-btn:hover,
.filter-btn.active {
  border-color: var(--pqa-navy);
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
}

/* Category-colored filter buttons — driven by --btn-primary / --btn-secondary / --btn-text
   CSS vars set inline by PHP. Spectacular is excluded and handled separately below. */
.filter-btn--colored {
  border-color: var(--btn-primary);
  color: var(--btn-primary);
}

.filter-btn--colored:hover,
.filter-btn--colored.active {
  background-color: var(--btn-secondary, var(--btn-primary));
  border-color: var(--btn-primary);
  color: var(--btn-text, #fff);
}

/* Spectacular filter button — rainbow gradient border */
.filter-btn[data-cat="spectacular"] {
  border: 2px solid transparent;
  background:
    linear-gradient(var(--pqa-white), var(--pqa-white)) padding-box,
    linear-gradient(115deg,
      #FF4453 0%,
      #F78A2F 13%,
      #FFD541 26%,
      #6DC435 39%,
      #3ABAF9 51%,
      #8860E2 63%,
      #F447E4 75%,
      #BC7C2F 87%,
      #964E00 100%);
  color: var(--pqa-navy);
}

.filter-btn[data-cat="spectacular"]:hover,
.filter-btn[data-cat="spectacular"].active {
  /* Render the gradient from the border-box edge so it fills the full button
     edge-to-edge with no gap where the transparent border sits. */
  background:
    linear-gradient(115deg,
      #FF4453 0%,
      #F78A2F 13%,
      #FFD541 26%,
      #6DC435 39%,
      #3ABAF9 51%,
      #8860E2 63%,
      #F447E4 75%,
      #BC7C2F 87%,
      #964E00 100%) border-box;
  background-origin: border-box;
  color: #fff;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
}

.month-header {
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--pqa-navy);
  margin-bottom: 1rem;
  margin-top: 2.5rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--pqa-navy);
}

.month-header:first-of-type {
  margin-top: 0;
}

.event-cards-list {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin-bottom: 1rem;
}

.event-card {
  border: 1px solid var(--pqa-border);
  border-radius: 12px;
  overflow: hidden;
  display: grid;
  grid-template-columns: 80px 1fr;
  transition: box-shadow 0.2s;
}

.event-card:hover {
  box-shadow: 0 4px 20px rgba(43, 46, 95, 0.09);
}

/* Hidden cards filtered out by JS */
.event-card[hidden] {
  display: none;
}

.event-card-date {
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 1rem 0.5rem;
  text-align: center;
  flex-shrink: 0;
  text-decoration: none;
  transition: opacity 0.15s;
}

a.event-card-date:hover {
  opacity: 0.85;
}

.event-card-date--accent {
  background-color: var(--pqa-accent-blue);
}

/* Priority-based TEC category color on the date column */
.event-card-date--cat-color .event-card-month {
  color: inherit;
  opacity: 0.8;
}

.event-card-date--cat-color .event-card-dow {
  color: inherit;
  opacity: 0.55;
}

.event-card-month {
  font-size: 0.6rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--pqa-accent-blue);
}

.event-card-date--accent .event-card-month {
  color: rgba(255, 255, 255, 0.75);
}

.event-card-day {
  font-size: 2rem;
  font-weight: 800;
  line-height: 1;
}

.event-card-dow {
  font-size: 0.6rem;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.5);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.event-card-body {
  padding: 1.25rem 1.5rem;
}

.event-card-title-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 0.4rem;
}

.event-card-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin: 0;
  text-decoration: none;
}

.event-card-title:hover {
  color: var(--pqa-accent-blue);
}

.event-card-meta {
  font-size: 0.8rem;
  color: var(--pqa-text-light);
  font-weight: 600;
  margin-bottom: 0.5rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem 0;
}

.event-card-desc {
  font-size: 0.875rem;
  color: var(--pqa-text-mid);
  line-height: 1.55;
  margin: 0;
}

.event-card-actions {
  margin-top: 0.75rem;
  display: flex;
  gap: 0.5rem;
  align-items: center;
  flex-wrap: wrap;
}

/* Event card with featured image — 3-col layout */
.event-card--has-image {
  grid-template-columns: 80px 1fr 200px;
}

.event-card-image {
  align-self: stretch;
  /* fill full card height */
}

.event-card-image img {
  display: block;
  width: 100%;
  height: 100%;
  max-height: 280px;
  /* 2× cap on a typical card height */
  object-fit: cover;
}

/* Mobile: stack image below body, collapse date column */
@media (max-width: 640px) {
  .event-card--has-image {
    grid-template-columns: 64px 1fr;
    grid-template-areas:
      "date body"
      "image image";
  }

  .event-card--has-image>a.event-card-date {
    grid-area: date;
  }

  .event-card--has-image>.event-card-body {
    grid-area: body;
  }

  .event-card--has-image>.event-card-image {
    grid-area: image;
    align-self: auto;
  }

  .event-card-image img {
    max-height: 100%;
  }
}


/* Mobile: collapse date column (no image) */
@media (max-width: 480px) {
  .event-card {
    grid-template-columns: 64px 1fr;
  }

  .event-card-day {
    font-size: 1.6rem;
  }

  .event-card-body {
    padding: 1rem;
  }

}

/* Team member cards — cast-card style with bio reveal on hover */
.team-card {
  position: relative;
  background-color: var(--pqa-white);
  border: 1px solid var(--pqa-border);
  border-radius: 12px;
  overflow: hidden;
  transition: box-shadow var(--transition);
  height: 425px;
  max-height: 425px;
}

.team-card:hover {
  box-shadow: 0 8px 32px rgba(43, 46, 95, 0.12);
}

.team-photo {
  width: 100%;
  height: 290px;
  background-color: var(--pqa-light-navy);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--pqa-text-light);
  font-size: 0.8rem;
  font-weight: 600;
  overflow: hidden;
}

.team-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.team-card-body {
  padding: 1.25rem 1.5rem 1.5rem;
  background-color: var(--pqa-white);
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  height: 425px;
}

/* Pointer devices: slide up on hover */
@media (hover: hover) {
  .team-card:hover .team-card-body {
    transform: translateY(-290px);
  }

  .team-card:hover .team-bio-preview {
    max-height: 20rem;
    overflow-y: auto;
  }

  .team-card:hover .team-bio-preview::after {
    opacity: 0;
  }
}

/* Touch devices: slide up on tap (.revealed toggled by JS) */
@media (hover: none) {
  .team-card.revealed .team-card-body {
    transform: translateY(-290px);
  }

  .team-card.revealed .team-bio-preview {
    max-height: 20rem;
    overflow-y: auto;
  }

  .team-card.revealed .team-bio-preview::after {
    opacity: 0;
  }
}

.team-name {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin-bottom: 0.2rem;
}

.team-title {
  font-size: 0.8rem;
  color: var(--pqa-text-light);
  font-weight: 600;
}

.team-pronouns {
  font-size: 0.75rem;
  color: var(--pqa-accent-blue);
  font-weight: 600;
  margin-top: 0.15rem;
  margin-bottom: 0.75rem;
}

.team-bio-preview {
  font-size: 0.82rem;
  line-height: 1.65;
  color: var(--pqa-text-mid);
  max-height: 1.2rem;
  overflow: hidden;
  position: relative;
  hyphens: auto;
  transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}

.team-bio-preview::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 1.2rem;
  background: linear-gradient(to bottom, transparent, var(--pqa-white));
  pointer-events: none;
  transition: opacity 0.2s ease;
}

/* Resource card */
.resource-card {
  padding: 1.5rem;
  border: 1px solid var(--pqa-border);
  border-radius: 10px;
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  transition: box-shadow var(--transition);
}

.resource-card:hover {
  box-shadow: 0 4px 20px rgba(43, 46, 95, 0.08);
}

.resource-icon {
  font-size: 1.5rem;
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  background-color: var(--pqa-light-navy);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.resource-body h3 {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin-bottom: 0.3rem;
}

.resource-body p {
  font-size: 0.85rem;
  color: var(--pqa-text-mid);
  line-height: 1.5;
}

.resource-body a {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--pqa-accent-blue);
  margin-top: 0.4rem;
  display: inline-block;
}

/* Membership tier cards */
.tier-card {
  border: 2px solid var(--pqa-border);
  border-radius: 16px;
  padding: 2rem;
  text-align: center;
  position: relative;
  transition: box-shadow var(--transition), transform var(--transition);
}

.tier-card:hover {
  box-shadow: 0 12px 40px rgba(43, 46, 95, 0.12);
  transform: translateY(-4px);
}

.tier-card.featured {
  border-color: var(--pqa-navy);
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
}

.tier-featured-label {
  position: absolute;
  top: -14px;
  left: 50%;
  transform: translateX(-50%);
  background-color: var(--pqa-accent-blue);
  color: var(--pqa-white);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.3rem 1rem;
  border-radius: 100px;
  white-space: nowrap;
}

.tier-name {
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--pqa-accent-blue);
  margin-bottom: 0.5rem;
}

.tier-price {
  font-size: 2.5rem;
  font-weight: 800;
  color: var(--pqa-navy);
  line-height: 1;
  margin-bottom: 0.25rem;
}

.tier-card.featured .tier-price {
  color: var(--pqa-white);
}

.tier-period {
  font-size: 0.8rem;
  color: var(--pqa-text-light);
  font-weight: 600;
  margin-bottom: 1.5rem;
}

.tier-card.featured .tier-period {
  color: rgba(255, 255, 255, 0.6);
}

.tier-features {
  text-align: left;
  margin-bottom: 2rem;
}

.tier-feature {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: 0.875rem;
  padding: 0.35rem 0;
  color: var(--pqa-text-mid);
  font-weight: 500;
}

.tier-card.featured .tier-feature {
  color: rgba(255, 255, 255, 0.8);
}

.tier-feature-check {
  color: var(--pqa-green);
  font-weight: 800;
  flex-shrink: 0;
  margin-top: 1px;
}

/* Spectacular hero */
.spectacular-hero {
  background-color: var(--pqa-navy);
  position: relative;
  overflow: hidden;
  padding: var(--space-xl) 0;
  text-align: center;
}

.spectacular-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--pqa-rainbow);
  opacity: 0.08;
}

.spectacular-date-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background-color: rgba(58, 186, 249, 0.15);
  border: 1px solid var(--pqa-accent-blue);
  border-radius: 100px;
  padding: 0.4rem 1.25rem;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--pqa-accent-blue);
  letter-spacing: 0.06em;
  margin-bottom: 1.5rem;
}

/* Breadcrumb */
.breadcrumb {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.8rem;
  color: var(--pqa-text-light);
  font-weight: 600;
  padding: 1rem 0;
  border-bottom: 1px solid var(--pqa-border);
  margin-bottom: var(--space-md);
}

.breadcrumb a {
  color: var(--pqa-accent-blue);
}

.breadcrumb a:hover {
  text-decoration: underline;
}

.breadcrumb-sep {
  color: var(--pqa-border);
}

/* Two-column layout */
.two-col,
.two-col-sidebar {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-lg);
  align-items: center;
}

.two-col.stretch,
.two-col-sidebar.stretch {
  align-items: stretch;
}

.two-col-container {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.two-col-text h2 {
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 700;
  color: var(--pqa-navy);
  margin-bottom: 1rem;
  line-height: 1.2;
}

.two-col-text p {
  font-size: 1rem;
  color: var(--pqa-text-mid);
  line-height: 1.7;
  margin-bottom: 1rem;
}

.two-col-text p:last-of-type {
  margin-bottom: 1.5rem;
}

/* ── Paragraph utility classes ────────────────────────────────────────────────
 * Placed here (after .two-col-text p) and written as p.class (specificity
 * 0-1-1) so they beat the contextual rule on both specificity and source order.
 * Add any future paragraph utility classes in this block for the same reason.
 * ─────────────────────────────────────────────────────────────────────────── */
p.section-pull {
  font-size: 1.13rem;
  font-weight: 700;
  line-height: 1.45;
  color: var(--pqa-navy);
  border-left: 3px solid var(--pqa-accent-blue);
  padding-left: 1.13rem;
  margin: 1.3rem 0 1.3rem;
}

.two-col-img {
  border-radius: 16px;
  overflow: hidden;
  background-color: var(--pqa-light-navy);
  aspect-ratio: 4/3;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--pqa-text-light);
  font-size: 0.85rem;
  font-weight: 600;
}

.two-col-sidebar {
  grid-template-columns: 1fr 15.5rem;
  align-items: start;
}

.two-col-side {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  width: 15.5rem;
}

/* ============================================================
   FOOTER
   ============================================================ */

.site-footer {
  background-color: var(--pqa-navy);
  color: rgba(255, 255, 255, 0.75);
  padding: var(--space-lg) 0 var(--space-md);
}

.footer-grid {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr 1fr;
  gap: var(--space-md);
  margin-bottom: var(--space-lg);
}

.footer-brand a img {
  height: 48px;
  margin-bottom: 1rem;
}

.footer-brand a img {
  height: 48px;
}

.footer-brand-text {
  font-size: 0.85rem;
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.6);
  margin-bottom: 1.25rem;
  max-width: 28ch;
}

.footer-social {
  display: flex;
  gap: 0.75rem;
}

.footer-social a {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.footer-social a img {
  width: 36px;
  height: 36px;
}

.footer-col h4 {
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--pqa-white);
  margin-bottom: 1rem;
}

.footer-col ul li {
  margin-bottom: 0.6rem;
}

.footer-col ul li a {
  font-size: 0.875rem;
  color: rgba(255, 255, 255, 0.6);
  transition: color var(--transition);
}

.footer-col ul li a:hover {
  color: var(--pqa-white);
}

.footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  padding-top: var(--space-md);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.footer-legal {
  font-size: 0.78rem;
  color: rgba(255, 255, 255, 0.4);
}

.footer-legal a {
  color: rgba(255, 255, 255, 0.5);
  transition: color var(--transition);
}

.footer-legal a:hover {
  color: rgba(255, 255, 255, 0.8);
}

/* ============================================================
   HOMEPAGE SPECIFIC
   ============================================================ */

.featured-initiative {
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
  padding: var(--space-lg) 0;
  position: relative;
  overflow: hidden;
}

.featured-initiative-inner {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: var(--space-lg);
  align-items: center;
}

.fi-text .eyebrow {
  color: var(--pqa-accent-blue);
}

.fi-text h2 {
  font-size: clamp(1.8rem, 3.5vw, 3rem);
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: 1rem;
}

.fi-text p {
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.75);
  line-height: 1.7;
  margin-bottom: 1.75rem;
}

.fi-visual {
  border-radius: 16px;
  overflow: hidden;
  background-color: rgba(255, 255, 255, 0.07);
  aspect-ratio: 16/9;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.fi-visual-overlay {
  position: absolute;
  inset: 0;
  background: var(--pqa-rainbow);
  opacity: 0.15;
}

.fi-visual-text {
  position: relative;
  z-index: 1;
  text-align: center;
  color: rgba(255, 255, 255, 0.6);
  font-size: 0.85rem;
  font-weight: 600;
}

/* ============================================================
   UTILITY / HELPER CLASSES
   ============================================================ */

.mt-sm {
  margin-top: var(--space-sm);
}

.mt-md {
  margin-top: var(--space-md);
}

.mt-lg {
  margin-top: var(--space-lg);
}

.mb-sm {
  margin-bottom: var(--space-sm);
}

.mb-md {
  margin-bottom: var(--space-md);
}

.mb-lg {
  margin-bottom: var(--space-lg);
}

.text-accent {
  color: var(--pqa-accent-blue);
}

.text-navy {
  color: var(--pqa-navy);
}

.text-muted {
  color: var(--pqa-text-light);
}

.light {
  background-color: var(--pqa-light-navy);
}

.dark {
  background-color: var(--pqa-navy);
}

.white {
  background-color: var(--pqa-white);
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.notice-banner {
  background-color: rgba(58, 186, 249, 0.1);
  border: 1px solid rgba(58, 186, 249, 0.3);
  border-radius: 10px;
  padding: 1rem 1.5rem;
  font-size: 0.875rem;
  color: var(--pqa-navy);
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
  margin-bottom: var(--space-md);
}

.notice-icon {
  font-size: 1.1rem;
  flex-shrink: 0;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */

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

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

  .nav-logo {
    display: none;
  }

  .nav-logo-fallback {
    display: flex;
  }
}

@media (max-width: 876px) {
  :root {
    --space-lg: 2.5rem;
    --space-xl: 4rem;
  }

  .nav-links,
  .nav-cta-group {
    display: none;
  }

  .nav-toggle {
    display: flex;
  }

  .nav-logo {
    display: flex;
  }

  .nav-logo-fallback {
    display: none;
  }

  .nav-item:hover .nav-link svg {
    transform: none;
  }

  .nav-links.open {
    display: flex;
    flex-direction: column;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: var(--pqa-white);
    padding: 5rem var(--space-md) var(--space-md);
    z-index: 999;
    overflow-y: auto;
    gap: 0.25rem;
    align-items: flex-start;
  }

  .nav-links.open .nav-item {
    width: 100%;
  }

  .nav-links.open .nav-link {
    width: 100%;
    font-size: 1.05rem;
    padding: 0.65rem 0.5rem;
    justify-content: flex-start;
  }

  .nav-links.open .nav-link svg {
    display: none;
  }

  .nav-links.open .nav-item .nav-logo-mobile {
    display: flex;
  }

  .nav-dropdown {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    box-shadow: none;
    border: none;
    background-color: var(--pqa-light-navy);
    border-radius: 8px;
    margin-top: 0.25rem;
  }

  .nav-links.open .nav-dropdown a {
    font-size: 0.9rem;
    padding: 0.6rem 1rem;
  }

  .team-card {
    height: 625px;
    max-height: 625px;
  }

  .team-photo {
    height: 490px;
  }

  .grid-3,
  .grid-2,
  .grid-4,
  .grid-2-30-70,
  .grid-2-70-30 {
    /* minmax(0, 1fr) instead of plain 1fr prevents grid blowout — plain 1fr
       resolves to minmax(auto, 1fr) which won't shrink below the item's
       min-content size (e.g. a 200px thumbnail grid inside a news column). */
    grid-template-columns: minmax(0, 1fr);
  }

  /* Allow grid children to shrink below their content size on mobile. */
  .grid-3>*,
  .grid-2>*,
  .grid-4>*,
  .grid-2-30-70>*,
  .grid-2-70-30>* {
    min-width: 0;
  }

  .two-col,
  .two-col-sidebar {
    grid-template-columns: minmax(0, 1fr);
  }

  .two-col>* {
    min-width: 0;
  }

  .featured-initiative-inner {
    grid-template-columns: 1fr;
  }

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

  .form-row {
    flex-direction: column;
  }

  .stats-bar-inner {
    gap: var(--space-sm);
  }

  .footer-bottom {
    flex-direction: column;
    text-align: center;
  }

  .hero-cta-group {
    flex-direction: column;
    align-items: flex-start;
  }

  .hero-cta-group.center {
    align-items: center;
  }
}

/* ============================================================
   The Events Calendar — Single Event Page Overrides
   Targets TEC "skeleton" stylesheet mode.
   ============================================================ */

/* ------------------------------------------------------------------
   Layout wrapper
   ------------------------------------------------------------------ */
.tribe-events-pg-template {
  margin: 0 !important;
  max-width: 100% !important;
  padding: 0 !important;
}

.pqa-events-single {
  max-width: var(--container-max, 1200px);
  margin: 0 auto;
  padding: var(--space-lg) var(--space-md);
  box-sizing: border-box;
}

/* ------------------------------------------------------------------
   « All Events back link
   ------------------------------------------------------------------ */
.pqa-events-back {
  display: none;
  margin-bottom: var(--space-md);
}

.pqa-events-back a {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  font-family: var(--font-body);
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--pqa-navy);
  text-decoration: none;
  letter-spacing: 0.02em;
  transition: opacity 0.15s ease;
}

.pqa-events-back a:hover {
  opacity: 0.7;
  text-decoration: none;
}

/* ------------------------------------------------------------------
   Event title
   ------------------------------------------------------------------ */
.pqa-events-single-section h1.pqa-events-single-event-title,
h1.pqa-events-single-event-title {
  font-family: var(--font-body);
  font-size: clamp(2rem, 5vw, 3rem);
  font-weight: 700;
  color: var(--pqa-navy);
  line-height: 1.15;
  margin: 0 0 1.25rem;
  letter-spacing: -0.01em;
}

/* ------------------------------------------------------------------
   Date / time / cost schedule row
   ------------------------------------------------------------------ */
.pqa-events-schedule {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 1.5rem;
  margin-bottom: 2rem;
  padding: 1.25rem 1.5rem;
  background-color: var(--pqa-light-navy);
  border-radius: 12px;
  font-family: var(--font-body);
  font-size: 0.9375rem;
  color: var(--pqa-text-mid);
}

.pqa-events-schedule abbr {
  text-decoration: none;
  font-weight: 600;
  color: var(--pqa-navy);
}

/* Cost pill */
.pqa-events-cost {
  display: inline-flex;
  align-items: center;
  background-color: var(--pqa-navy);
  color: #fff;
  font-family: var(--font-body);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.3em 0.85em;
  border-radius: 100px;
  white-space: nowrap;
}

/* ------------------------------------------------------------------
   Featured image
   ------------------------------------------------------------------ */
.pqa-events-event-image {
  margin-bottom: 2rem;
  border-radius: 16px;
  overflow: hidden;
  line-height: 0;
}

.pqa-events-event-image img {
  width: 100%;
  height: auto;
  max-height: 480px;
  object-fit: cover;
  display: block;
  border-radius: 16px;
}

/* ------------------------------------------------------------------
   Event description body
   ------------------------------------------------------------------ */
.pqa-events-single-event-description,
.pqa-events-content {
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.75;
  color: var(--pqa-text-mid);
  margin-bottom: 2.5rem;
}

.pqa-events-single-event-description p,
.pqa-events-content p {
  margin-bottom: 1.25rem;
}

.pqa-events-single-event-description a,
.pqa-events-content a {
  color: var(--pqa-navy);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.pqa-events-single-event-description a:hover,
.pqa-events-content a:hover {
  opacity: 0.7;
}

/* ------------------------------------------------------------------
   Meta groups (Details, Venue, Organizer)
   ------------------------------------------------------------------ */
.pqa-events-meta-group-details,
.pqa-events-meta-group-venue,
.pqa-events-meta-group-organizer {
  /* background-color: var(--pqa-light-navy);
  border-radius: 16px;
  padding: 2rem 2rem 1.5rem;
  margin-bottom: 1.5rem; */
  min-width: 0;
}

/* Meta list: labels and values */
.pqa-events-meta-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.pqa-events-meta-item {
  margin-bottom: 0.75rem;
  font-family: var(--font-body);
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--pqa-text-mid);
  overflow-wrap: break-word;
  word-break: break-word;
}

.pqa-events-meta-label {
  display: block;
  font-weight: 700;
  font-size: 0.6875rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--pqa-navy);
  margin-bottom: 0.125rem;
}

.pqa-events-meta-value {
  display: block;
  overflow-wrap: break-word;
  word-break: break-word;
}

/* Section headers */
.pqa-events-meta-group-details h3.pqa-events-single-section-title,
.pqa-events-meta-group-venue h3.pqa-events-single-section-title,
.pqa-events-meta-group-organizer h3.pqa-events-single-section-title {
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--pqa-text-mid);
  margin: 0 0 1.25rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid rgba(43, 46, 95, 0.12);
}

/* Definition list rows */
.pqa-venue,
.pqa-organizer {
  font-family: var(--font-body);
  font-size: 0.9375rem;
  color: var(--pqa-text-mid);
  line-height: 1.6;
}

.pqa-venue-location address {
  font-style: normal;
  line-height: 1.6;
}

.pqa-events-abbr,
.tribe-events-abbr {
  text-decoration: none;
}

.pqa-venue a,
.pqa-organizer a,
.pqa-venue-location a {
  color: var(--pqa-navy);
  font-weight: 600;
  text-decoration: none;
}

.pqa-venue-map-link a {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--pqa-navy);
  text-decoration: none;
  margin-top: 0.5rem;
}

/* ------------------------------------------------------------------
   Add to Calendar subscribe dropdown
   ------------------------------------------------------------------ */
.pqa-events-c-subscribe-dropdown {
  margin-bottom: 2.5rem;
  position: relative;
}

/* TEC skeleton mode: the visual "button" is a wrapper div with
   pqa-common-c-btn-border; the inner BUTTON carries the text */
.pqa-common-c-btn-border.pqa-events-c-subscribe-dropdown__button {
  width: fit-content;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background-color: transparent;
  border: 2px solid var(--pqa-navy) !important;
  border-radius: 100px;
  padding: 0.6em 1.35em;
  font-family: var(--font-body);
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--pqa-navy);
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
  letter-spacing: 0.01em;
}

.pqa-common-c-btn-border.pqa-events-c-subscribe-dropdown__button:hover,
.pqa-events-c-subscribe-dropdown[aria-expanded="true"] .pqa-common-c-btn-border {
  background-color: var(--pqa-navy);
  color: #fff;
}

.pqa-common-c-btn-border.pqa-events-c-subscribe-dropdown__button:hover svg {
  fill: #ffffff;
}

.pqa-events-c-subscribe-dropdown__button-text {
  background: none;
  border: none;
  padding: 0;
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  color: inherit;
  cursor: pointer;
  letter-spacing: inherit;
}

.pqa-events-c-subscribe-dropdown__content {
  background-color: #fff;
  border: 1px solid rgba(43, 46, 95, 0.14);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(43, 46, 95, 0.12);
  padding: 0 0 0.5rem 0 !important;
  min-width: 210px;
  max-width: 210px;
  margin-top: 0.5rem !important;
  margin-left: 20px !important;
}

.pqa-events-c-subscribe-dropdown__list {
  padding-top: 0 !important;
}

.pqa-events-c-subscribe-dropdown__list-item-link {
  display: block;
  padding: 0.6rem 1.25rem;
  font-family: var(--font-body);
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--pqa-navy);
  text-decoration: none;
  transition: background 0.12s ease;
}

.pqa-events-c-subscribe-dropdown__list-item-link:hover {
  background-color: var(--pqa-light-navy);
}

/* ------------------------------------------------------------------
   Prev / Next pagination
   ------------------------------------------------------------------ */
#pqa-events-footer {
  display: none;
}

.pqa-events-nav-pagination {
  margin-top: 3rem;
  padding-top: 2rem;
  border-top: 1px solid rgba(43, 46, 95, 0.12);
}

.pqa-events-sub-nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.pqa-events-sub-nav li a {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  font-family: var(--font-body);
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--pqa-navy);
  text-decoration: none;
  padding: 0.6em 1.35em;
  border: 2px solid var(--pqa-navy);
  border-radius: 100px;
  transition: background 0.15s ease, color 0.15s ease;
  letter-spacing: 0.01em;
}

.pqa-events-sub-nav li a:hover {
  background-color: var(--pqa-navy);
  color: #fff;
}

/* ------------------------------------------------------------------
   Meta section layout — TEC outputs two .pqa-events-event-meta
   sections: .primary (Details + Organizer) and .secondary (Venue + Map)
   ------------------------------------------------------------------ */
.pqa-events-event-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  margin-bottom: 1.5rem;
}

.pqa-events-event-meta primary {
  width: 34vw;
  grid-template-columns: 1fr 1fr;
}

.pqa-venue-url,
.pqa-organizer-url,
.tribe-events-gmap,
.pqa-events-event-url {
  font-size: 0.75rem;
  font-weight: 600;
}

.pqa-venue-url:hover,
.pqa-organizer-url:hover,
.tribe-events-gmap:hover,
.pqa-events-event-url:hover {
  color: var(--pqa-accent-blue);
  text-decoration: none;
}

/* Venue map embed */
.tribe-events-venue-map {
  border-radius: 12px;
  overflow: hidden;
  height: 100%;
  min-height: 220px;
  line-height: 0;
}

.tribe-events-venue-map iframe {
  width: 100%;
  height: 100%;
  min-height: 220px;
  border: none;
  display: block;
  border-radius: 12px;
}

/* ------------------------------------------------------------------
   Category / tag links inside TEC single
   ------------------------------------------------------------------ */
.pqa-events-single .pqa-events-categories a,
.pqa-events-single .pqa-events-tags a {
  display: inline-flex;
  align-items: center;
  background-color: var(--pqa-light-navy);
  color: var(--pqa-navy);
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  padding: 0.3em 0.85em;
  border-radius: 100px;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}

.pqa-events-single .pqa-events-categories a:hover,
.pqa-events-single .pqa-events-tags a:hover {
  background-color: var(--pqa-navy);
  color: #fff;
}

/* ------------------------------------------------------------------
   TEC single — mobile
   ------------------------------------------------------------------ */
@media (max-width: 768px) {
  .pqa-events-single {
    padding: var(--space-md) 1rem;
  }

  .pqa-events-event-meta {
    grid-template-columns: 1fr;
  }

  .pqa-events-schedule {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.625rem;
  }

  .pqa-events-sub-nav {
    flex-direction: column;
    align-items: stretch;
  }

  .pqa-events-sub-nav li a {
    justify-content: center;
  }

  .pqa-events-event-image img {
    max-height: 280px;
  }
}

/* ============================================================
   The Events Calendar — /events/ List View Overrides
   Targets the TEC skeleton stylesheet mode on the archive page.
   ============================================================ */

/* ------------------------------------------------------------------
   Page-level container
   ------------------------------------------------------------------ */
.pqa-events.pqa-events-view--list {
  max-width: var(--container-max, 1200px);
  margin: 0 auto;
  padding: 0 var(--space-md);
  box-sizing: border-box;
}

.pqa-common-l-container.pqa-events-l-container {
  max-width: 100%;
  padding-left: 0;
  padding-right: 0;
}

/* ------------------------------------------------------------------
   Header bar: search + nav + view selector
   ------------------------------------------------------------------ */
.pqa-events-header {
  padding-top: var(--space-lg);
  padding-bottom: 0;
}

.pqa-events-header__events-bar.pqa-events-c-events-bar--border {
  border: none;
  border-bottom: 1px solid var(--pqa-border);
  padding-bottom: 1.25rem;
  margin-bottom: 2rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
}

/* Search input */
.pqa-common-form-control-text__input {
  font-family: var(--font-body) !important;
  border: 2px solid var(--pqa-border) !important;
  border-radius: 100px !important;
  padding: 0.5rem 1.25rem !important;
  font-size: 0.875rem !important;
  color: var(--pqa-navy) !important;
  background-color: #fff !important;
  transition: border-color 0.15s ease !important;
}

.pqa-common--breakpoint-medium.pqa-events .pqa-events-c-search__input-control {
  margin-right: 20px;
}

.pqa-common-form-control-text__input:focus {
  border-color: var(--pqa-navy) !important;
  outline: none !important;
  box-shadow: none !important;
}

/* Hide the floating label — we use placeholder instead */
.pqa-common-form-control-text__label {
  display: none !important;
}

/* Find Events button */
.pqa-events-c-search__button,
.pqa-common-c-btn.pqa-events-c-search__button {
  background-color: var(--pqa-navy) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 100px !important;
  font-family: var(--font-body) !important;
  font-size: 0.875rem !important;
  font-weight: 700 !important;
  padding: 0.55rem 1.5rem !important;
  cursor: pointer !important;
  letter-spacing: 0.01em !important;
  transition: opacity 0.15s ease !important;
}

.pqa-events-c-search__button:hover {
  opacity: 0.85 !important;
}

.pqa-events-c-top-bar__nav-list-item button {
  background-color: none;
}

/* Top-bar prev/next arrow icon buttons — remove TEC's default gray tint and browser outset border */
.pqa-events-c-top-bar__nav-list-item .pqa-events-c-top-bar__nav-link,
.pqa-events-c-top-bar__nav-link.pqa-common-c-btn-icon {
  background-color: transparent !important;
  border: none !important;
  appearance: none !important;
  -webkit-appearance: none !important;
}

/* Prev / Next arrow buttons */
.pqa-events-c-nav__prev,
.pqa-events-c-nav__next {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  border: 2px solid var(--pqa-border) !important;
  border-radius: 100px !important;
  background-color: transparent !important;
  color: var(--pqa-navy) !important;
  padding: 0.4rem 0.9rem !important;
  cursor: pointer !important;
  font-family: var(--font-body) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  transition: border-color 0.15s, background 0.15s, color 0.15s !important;
}

.pqa-events-c-nav__prev:hover,
.pqa-events-c-nav__next:hover {
  border-color: var(--pqa-navy) !important;
  background-color: var(--pqa-navy) !important;
  color: #fff !important;
}

/* Today link */
.pqa-events-c-nav__today {
  display: inline-flex !important;
  align-items: center !important;
  font-family: var(--font-body) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  color: var(--pqa-navy) !important;
  background-color: transparent !important;
  border: 2px solid var(--pqa-border) !important;
  border-radius: 100px !important;
  padding: 0.4rem 1rem !important;
  text-decoration: none !important;
  transition: border-color 0.15s, background 0.15s, color 0.15s !important;
}

.pqa-events-c-nav__today:hover {
  border-color: var(--pqa-navy) !important;
  background-color: var(--pqa-navy) !important;
  color: #fff !important;
}

/* Nav label text (date range) */
.pqa-events-c-nav__list-item--today+.pqa-events-c-nav__list-item,
.pqa-events-c-nav__prev-label,
.pqa-events-c-nav__next-label {
  font-family: var(--font-body) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  color: var(--pqa-navy) !important;
}

/* Date range label / datepicker toggle ("Upcoming", "April 2026", etc.)
   — styled as a passive pill label, not a nav button */
.pqa-events-c-top-bar__datepicker-button {
  appearance: none !important;
  -webkit-appearance: none !important;
  border: 2px solid var(--pqa-border) !important;
  border-radius: 100px !important;
  background-color: transparent !important;
  padding: 0.4rem 1rem !important;
  font-family: var(--font-body) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  color: var(--pqa-navy) !important;
  cursor: pointer !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 0.35rem !important;
  transition: border-color 0.15s, background 0.15s, color 0.15s !important;
}

.pqa-events-c-top-bar__datepicker-button:hover {
  border-color: var(--pqa-navy) !important;
  background-color: var(--pqa-navy) !important;
  color: #fff !important;
}

/* Hide the caret SVG inside the datepicker button — reduces clutter */
.pqa-events-c-top-bar__datepicker-button svg {
  display: none !important;
}

/* View selector toggle button ("List") */
.pqa-events-c-view-selector {
  display: none;
}

.pqa-events-c-view-selector__button.pqa-common-c-btn__clear {
  appearance: none !important;
  -webkit-appearance: none !important;
  border: 2px solid var(--pqa-border) !important;
  border-radius: 100px !important;
  background-color: transparent !important;
  padding: 0.4rem 1rem !important;
  font-family: var(--font-body) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  color: var(--pqa-text-mid) !important;
  cursor: pointer !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 0.35rem !important;
  transition: border-color 0.15s, background 0.15s, color 0.15s !important;
}

.pqa-events-c-view-selector__button.pqa-common-c-btn__clear:hover {
  border-color: var(--pqa-navy) !important;
  background-color: var(--pqa-navy) !important;
  color: #fff !important;
}

/* View selector: style tabs like filter buttons */
.pqa-events-c-view-selector__list {
  display: flex !important;
  gap: 0.375rem !important;
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

.pqa-events-c-view-selector__list-item-link,
.pqa-events-c-view-selector__list-item-text {
  display: inline-flex !important;
  align-items: center !important;
  padding: 0.4rem 1rem !important;
  border: 2px solid var(--pqa-border) !important;
  border-radius: 100px !important;
  background-color: #fff !important;
  font-family: var(--font-body) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  color: var(--pqa-text-mid) !important;
  text-decoration: none !important;
  letter-spacing: 0.01em !important;
  transition: border-color 0.15s, background 0.15s, color 0.15s !important;
  cursor: pointer !important;
}

.pqa-events-c-view-selector__list-item-link:hover,
.pqa-events-c-view-selector__list-item-link--active,
.pqa-events-c-view-selector__list-item-text--active {
  border-color: var(--pqa-navy) !important;
  background-color: var(--pqa-navy) !important;
  color: #fff !important;
}

/* ------------------------------------------------------------------
   Month separators → match .month-header style
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__month-separator {
  list-style: none !important;
  margin: 2.5rem 0 1rem !important;
  padding: 0 !important;
}

.pqa-events-calendar-list__month-separator:first-child {
  margin-top: 0 !important;
}

.pqa-events-calendar-list__month-separator-text {
  display: block !important;
  font-family: var(--font-body) !important;
  font-size: 1.25rem !important;
  font-weight: 800 !important;
  color: var(--pqa-navy) !important;
  padding-bottom: 0.5rem !important;
  border-bottom: 2px solid var(--pqa-navy) !important;
  letter-spacing: -0.01em !important;
}

/* ------------------------------------------------------------------
   Event list wrapper — strip TEC list styles
   ------------------------------------------------------------------ */
.pqa-events-calendar-list {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* ------------------------------------------------------------------
   Event row → .event-card style
   LI contains: [date-tag col] [event-wrapper col → article]
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event-row.pqa-common-g-row {
  /* Override TEC's flex + negative gutters with our card grid */
  display: grid !important;
  grid-template-columns: 80px 1fr !important;
  flex-direction: unset !important;
  align-items: stretch !important;
  margin: 0 0 1rem !important;
  padding: 0 !important;
  border: 1px solid var(--pqa-border) !important;
  border-radius: 12px !important;
  overflow: hidden !important;
  background-color: #fff !important;
  transition: box-shadow 0.2s ease !important;
  list-style: none !important;
}

.pqa-events-calendar-list__event-row.pqa-common-g-row:hover {
  box-shadow: 0 4px 20px rgba(43, 46, 95, 0.09) !important;
}

/* ------------------------------------------------------------------
   Date tag → left navy column, matches .event-card-date
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event-date-tag {
  grid-column: 1 !important;
  background-color: var(--pqa-navy) !important;
  color: #fff !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 1rem 0.5rem !important;
  text-align: center !important;
  width: auto !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}

.pqa-events-calendar-list__event-date-tag-datetime {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 0.125rem !important;
}

/* Day-of-week → matches .event-card-dow */
.pqa-events-calendar-list__event-date-tag-weekday {
  font-family: var(--font-body) !important;
  font-size: 0.6rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.5) !important;
  order: 2 !important;
}

/* Day number → matches .event-card-day */
.pqa-events-calendar-list__event-date-tag-daynum {
  font-family: var(--font-body) !important;
  font-size: 2rem !important;
  font-weight: 800 !important;
  line-height: 1 !important;
  color: #fff !important;
  order: 1 !important;
}

/* Accent date column for Spectacular events */
.pqa-events-calendar-list__event-date-tag.post-type-tribe_events:has(~ .pqa-events-calendar-list__event-wrapper .pqa-events-calendar__category--spectacular) {
  background-color: var(--pqa-accent-blue) !important;
}

/* ------------------------------------------------------------------
   Event wrapper — content column, fills grid col 2
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event-wrapper {
  grid-column: 2 !important;
  width: 100% !important;
  padding: 0 !important;
  min-width: 0 !important;
  display: flex !important;
}

/* ------------------------------------------------------------------
   Article — inner flex row: details left, image right
   (TEC skeleton already outputs row-reverse so image is on right)
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event.pqa-common-g-row {
  display: flex !important;
  flex-direction: row-reverse !important;
  align-items: stretch !important;
  flex: 1 !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* ------------------------------------------------------------------
   Featured image — right-side column, matches .event-card-image
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event-featured-image-wrapper {
  flex: 0 0 200px !important;
  max-width: 200px !important;
  width: 200px !important;
  padding: 0 !important;
  align-self: stretch !important;
  overflow: hidden !important;
}

.pqa-events-calendar-list__event-featured-image {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  max-height: 280px !important;
  object-fit: cover !important;
}

/* ------------------------------------------------------------------
   Event details — content column, matches .event-card-body
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event-details {
  flex: 1 !important;
  padding: 1.25rem 1.5rem !important;
  min-width: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  width: auto !important;
}

/* ------------------------------------------------------------------
   Event title → matches .event-card-title
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event-title {
  font-family: var(--font-body) !important;
  font-size: 1rem !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
  margin: 0 0 0.3rem !important;
}

.pqa-events-calendar-list__event-title-link {
  color: var(--pqa-navy) !important;
  text-decoration: none !important;
  font-weight: 700 !important;
}

.pqa-events-calendar-list__event-title-link:hover {
  color: var(--pqa-accent-blue) !important;
}

/* ------------------------------------------------------------------
   Datetime → matches .event-card-meta time row
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event-datetime-wrapper {
  font-family: var(--font-body) !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
  color: var(--pqa-text-light) !important;
  margin-bottom: 0.2rem !important;
}

/* TEC already outputs " - " as text between start and end time — no pseudo needed */

/* ------------------------------------------------------------------
   Venue → matches .event-card-meta location row
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event-venue {
  font-family: var(--font-body) !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
  color: var(--pqa-text-light) !important;
  font-style: normal !important;
  margin-bottom: 0.5rem !important;
}

.pqa-events-calendar-list__event-venue-title,
.pqa-events-calendar-list__event-venue-location {
  color: var(--pqa-text-light) !important;
}

.pqa-events-calendar-list__event-venue a {
  color: var(--pqa-text-light) !important;
  text-decoration: none !important;
  transition: color 0.15s !important;
}

.pqa-events-calendar-list__event-venue a:hover {
  color: var(--pqa-navy) !important;
  text-decoration: underline !important;
  text-underline-offset: 2px !important;
}

/* ------------------------------------------------------------------
   Description — TEC hides this with pqa-common-a11y-hidden.
   Unhide it and clamp to 2 lines, matching .event-card-desc.
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event-description.pqa-common-a11y-hidden {
  position: relative !important;
  width: auto !important;
  height: auto !important;
  overflow: hidden !important;
  clip: auto !important;
  clip-path: none !important;
  white-space: normal !important;
}

.pqa-events-calendar-list__event-description {
  font-family: var(--font-body) !important;
  font-size: 0.875rem !important;
  color: var(--pqa-text-mid) !important;
  line-height: 1.55 !important;
  margin-bottom: 0.75rem !important;
  display: -webkit-box !important;
  line-clamp: 2 !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}

.pqa-events-calendar-list__event-description p {
  margin: 0 !important;
}

/* ------------------------------------------------------------------
   Category badges → matches .badge style
   ------------------------------------------------------------------ */
.tec-events-calendar-list__event-categories {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 0.375rem !important;
  margin-bottom: 0.5rem !important;
  align-self: flex-start !important;
}

.tec-events-calendar-list__category {
  display: inline-flex !important;
  align-items: center !important;
  padding: 0.25rem 0.75rem !important;
  border-radius: 100px !important;
  font-family: var(--font-body) !important;
  font-size: 0.7rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  /* Default: light navy — overridden below for known colors */
  background-color: var(--pqa-light-navy) !important;
  color: var(--pqa-navy) !important;
  line-height: 1 !important;
}

/* If TEC outputs a --pqa-color custom property on the category, use it */
.tec-events-calendar-list__category[style*="color"] {
  /* Allow TEC's inline color to show through for background */
  background: color-mix(in srgb, var(--pqa-color, var(--pqa-light-navy)) 15%, white) !important;
  color: var(--pqa-color, var(--pqa-navy)) !important;
}

/* Spectacular — PQA rainbow gradient, matching .badge-rainbow */
.pqa-events-calendar__category--spectacular {
  background: linear-gradient(115deg,
      #FF4453 0%,
      #F78A2F 13%,
      #FFD541 26%,
      #6DC435 39%,
      #3ABAF9 51%,
      #8860E2 63%,
      #F447E4 75%,
      #BC7C2F 87%,
      #964E00 100%) !important;
  color: #fff !important;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.35) !important;
}

/* Hide TEC's SVG icon inside badges — text label is sufficient */
.tec-events-calendar-list__category-icon {
  display: none !important;
}

/* ------------------------------------------------------------------
   Cost badge → matches .event-card-meta cost pill
   ------------------------------------------------------------------ */
.pqa-events-calendar-list__event-cost {
  display: inline-flex !important;
  align-items: center !important;
  align-self: flex-start !important;
  /* prevent stretch in flex column parent */
  background-color: var(--pqa-navy) !important;
  color: #fff !important;
  font-family: var(--font-body) !important;
  font-size: 0.7rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  padding: 0.25rem 0.75rem !important;
  border-radius: 100px !important;
  line-height: 1 !important;
}

/* ------------------------------------------------------------------
   Bottom nav (prev/next date range)
   Scoped to .pqa-events-calendar-list-nav so the top header arrows
   keep their pill style.
   ------------------------------------------------------------------ */
.pqa-events-calendar-list-nav {
  margin-top: 2.5rem !important;
  padding-top: 1.5rem !important;
  border-top: 1px solid var(--pqa-border) !important;
}

.pqa-events-calendar-list-nav .pqa-events-c-nav__list {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
}

/* Remove pill styling from bottom prev/next buttons — plain text link style */
.pqa-events-calendar-list-nav .pqa-events-c-nav__prev,
.pqa-events-calendar-list-nav .pqa-events-c-nav__next {
  appearance: none !important;
  -webkit-appearance: none !important;
  border: none !important;
  border-radius: 0 !important;
  background-color: transparent !important;
  padding: 0 !important;
  font-family: var(--font-body) !important;
  font-size: 0.9375rem !important;
  font-weight: 700 !important;
  color: var(--pqa-navy) !important;
  cursor: pointer !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 0.5rem !important;
  text-decoration: none !important;
  transition: opacity 0.15s ease !important;
}

.pqa-events-calendar-list-nav .pqa-events-c-nav__prev:hover,
.pqa-events-calendar-list-nav .pqa-events-c-nav__next:hover {
  opacity: 0.65 !important;
  background-color: transparent !important;
  color: var(--pqa-navy) !important;
  border: none !important;
}

/* Disabled state — gray out and block interaction */
.pqa-events-calendar-list-nav .pqa-events-c-nav__prev:disabled,
.pqa-events-calendar-list-nav .pqa-events-c-nav__next:disabled {
  color: var(--pqa-border) !important;
  opacity: 0.5 !important;
  cursor: default !important;
  pointer-events: none !important;
}

/* Hide TEC's built-in SVG caret icons in the bottom nav */
.pqa-events-calendar-list-nav .pqa-events-c-nav__prev-icon-svg,
.pqa-events-calendar-list-nav .pqa-events-c-nav__next-icon-svg {
  display: none !important;
}

/* ← arrow glyph before "Previous Events" label */
.pqa-events-calendar-list-nav .pqa-events-c-nav__prev-label::before {
  content: "←";
  font-size: 1.1em;
  line-height: 1;
}

/* → arrow glyph after "Next Events" label */
.pqa-events-calendar-list-nav .pqa-events-c-nav__next-label::after {
  content: "→";
  font-size: 1.1em;
  line-height: 1;
}

/* ------------------------------------------------------------------
   /events/ list — mobile overrides
   ------------------------------------------------------------------ */
@media (max-width: 640px) {
  .pqa-events .pqa-events-c-events-bar__search-container {
    background-color: #ffffff;
    top: 35px;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-radius: 10px;
  }

  .pqa-events-calendar-list__event-row.pqa-common-g-row {
    grid-template-columns: 64px 1fr !important;
  }

  .pqa-events-calendar-list__event-date-tag-daynum {
    font-size: 1.6rem !important;
  }

  /* Stack image below content on small screens */
  .pqa-events-calendar-list__event.pqa-common-g-row {
    flex-direction: column !important;
  }

  .pqa-events-calendar-list__event-featured-image-wrapper {
    flex: 0 0 auto !important;
    max-width: 100% !important;
    width: 100% !important;
    max-height: 100% !important;
  }

  .pqa-events-calendar-list__event-featured-image {
    max-height: 100% !important;
  }

  .pqa-events-calendar-list__event-details {
    padding: 1rem !important;
  }
}

/* ============================================================
   Single Post — template chrome
   ============================================================ */

/* Lede / intro paragraph in page header */
.post-lede {
  font-size: 1.125rem;
  color: var(--pqa-text-mid);
  line-height: 1.7;
  margin-top: 0;
}

/* Featured image */
.post-hero-image {
  padding: 2rem 0 0;
}

.post-hero-img {
  width: 100%;
  height: auto;
  object-fit: cover;
  border-radius: 4px;
  display: block;
}

.post-hero-caption {
  margin-top: 0.625rem;
  font-size: 0.8rem;
  color: var(--pqa-text-light);
  font-style: italic;
  line-height: 1.5;
}

/* Post body section */
.post-body {
  padding-top: 2.5rem;
}

/* Tags */
.post-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--pqa-border);
}

.post-tag {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pqa-navy);
  background-color: var(--pqa-light-navy);
  border-radius: 100px;
  padding: 0.3em 0.85em;
  text-decoration: none;
  transition: background 0.15s ease;
}

.post-tag:hover {
  background-color: #e4e5ef;
}

/* Prev / Next nav */
.post-nav {
  border-top: 1px solid var(--pqa-border);
  padding: 2rem 0;
  margin-top: 2rem;
}

.post-nav-inner {
  display: grid;
  grid-template-columns: 1fr 0.5fr 1fr;
  gap: 2rem;
}

.post-nav-link {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  text-decoration: none;
}

.post-nav-all {
  text-align: center;
  justify-content: center;
  align-items: center;
}

.post-nav-all .btn {
  width: 10rem;
}

.post-nav-next {
  text-align: right;
}

.post-nav-label {
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--pqa-text-light);
}

.post-nav-title {
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--pqa-navy);
  line-height: 1.35;
}

.post-nav-link:hover .post-nav-title {
  text-decoration: underline;
}


/* ============================================================
   .entry-content — Block editor / classic editor output
   ============================================================
   These rules style whatever the_content() outputs.
   Scoped to .entry-content so they only apply inside posts
   and don't bleed into the rest of the site.
   ============================================================ */

.entry-content {
  color: var(--pqa-text-dark);
  line-height: 1.8;
  font-size: 1rem;
}

/* Paragraphs */
.entry-content p {
  margin: 0 0 1.4em;
}

/* Headings */
.entry-content h2 {
  font-size: 1.625rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin: 2.25em 0 0.6em;
  line-height: 1.25;
}

.entry-content h3 {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin: 2em 0 0.5em;
  line-height: 1.3;
}

.entry-content h4 {
  font-size: 1.0625rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin: 1.75em 0 0.4em;
}

.entry-content h5,
.entry-content h6 {
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--pqa-navy);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin: 1.5em 0 0.4em;
}

/* Links */
.entry-content a {
  color: var(--pqa-accent-blue);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.entry-content a:hover {
  color: var(--pqa-navy);
}

/* Lists */
.entry-content ul,
.entry-content ol {
  margin: 0 0 1.4em 1.5rem;
  padding: 0;
}

.entry-content li {
  margin-bottom: 0.4em;
  line-height: 1.7;
}

.entry-content ul li {
  list-style-type: disc;
}

.entry-content ol li {
  list-style-type: decimal;
}

/* Blockquote */
.entry-content blockquote {
  margin: 2rem 0;
  padding: 1.5rem 1.75rem;
  background-color: var(--pqa-light-navy);
  border-left: 4px solid var(--pqa-accent-blue);
  border-radius: 0 12px 12px 0;
}

.entry-content blockquote p {
  font-size: 1.125rem;
  font-style: italic;
  color: var(--pqa-navy);
  margin: 0;
  line-height: 1.7;
}

.entry-content blockquote cite,
.entry-content blockquote .wp-block-quote__citation {
  display: block;
  font-size: 0.8125rem;
  font-style: normal;
  font-weight: 700;
  color: var(--pqa-text-light);
  margin-top: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* Horizontal rule */
.entry-content hr {
  border: none;
  border-top: 1px solid var(--pqa-border);
  margin: 2.5rem 0;
}

/* Images */
.entry-content img {
  max-width: 100%;
  height: auto;
  border-radius: 4px;
  display: block;
}

.entry-content figure {
  margin: 2rem 0;
}

.entry-content figcaption,
.entry-content .wp-element-caption {
  font-size: 0.8125rem;
  color: var(--pqa-text-light);
  text-align: center;
  margin-top: 0.6rem;
  line-height: 1.5;
}

/* Gutenberg: aligned images */
.entry-content .wp-block-image.alignleft {
  float: left;
  margin: 0.5rem 1.75rem 1rem 0;
  max-width: 45%;
}

.entry-content .wp-block-image.alignright {
  float: right;
  margin: 0.5rem 0 1rem 1.75rem;
  max-width: 45%;
}

.entry-content .wp-block-image.aligncenter {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

/* Clearfix for floated images */
.entry-content::after {
  content: '';
  display: table;
  clear: both;
}

/* Gutenberg: separator block */
.entry-content .wp-block-separator {
  border: none;
  border-top: 1px solid var(--pqa-border);
  margin: 2.5rem auto;
}

/* Gutenberg: pullquote */
.entry-content .wp-block-pullquote {
  border-top: 4px solid var(--pqa-navy);
  border-bottom: 4px solid var(--pqa-navy);
  padding: 1.5rem 0;
  margin: 2.5rem 0;
  text-align: center;
}

.entry-content .wp-block-pullquote p {
  font-size: 1.375rem;
  font-weight: 700;
  color: var(--pqa-navy);
  font-style: italic;
  line-height: 1.45;
}

/* Gutenberg: cover block */
.entry-content .wp-block-cover {
  border-radius: 12px;
  overflow: hidden;
  margin: 2rem 0;
}

/* Gutenberg: buttons */
.entry-content .wp-block-button__link {
  background-color: var(--pqa-navy);
  color: #fff;
  border-radius: 100px;
  padding: 0.65em 1.5em;
  font-weight: 700;
  text-decoration: none;
  display: inline-block;
  transition: opacity 0.15s ease;
}

.entry-content .wp-block-button__link:hover {
  opacity: 0.85;
  color: #fff;
}

.entry-content .wp-block-button.is-style-outline .wp-block-button__link {
  background-color: transparent;
  color: var(--pqa-navy);
  border: 2px solid var(--pqa-navy);
}

/* Gutenberg: table */
.entry-content table {
  width: 100%;
  border-collapse: collapse;
  margin: 2rem 0;
  font-size: 0.9375rem;
}

.entry-content th {
  background-color: var(--pqa-light-navy);
  color: var(--pqa-navy);
  font-weight: 700;
  text-align: left;
  padding: 0.75rem 1rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.entry-content td {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--pqa-border);
  color: var(--pqa-text-dark);
  vertical-align: top;
}

.entry-content tr:last-child td {
  border-bottom: none;
}

/* Code */
.entry-content code {
  font-family: 'Courier New', Courier, monospace;
  font-size: 0.875em;
  background-color: var(--pqa-light-navy);
  padding: 0.15em 0.4em;
  border-radius: 4px;
  color: var(--pqa-navy);
}

.entry-content pre {
  background-color: var(--pqa-navy);
  color: #e8eaf6;
  padding: 1.5rem;
  border-radius: 12px;
  overflow-x: auto;
  margin: 2rem 0;
  font-size: 0.875rem;
  line-height: 1.6;
}

.entry-content pre code {
  background: none;
  padding: 0;
  color: inherit;
  font-size: inherit;
}

/* Mobile adjustments */
@media (max-width: 768px) {
  .post-nav-inner {
    grid-template-columns: 1fr;
  }

  .post-nav-next {
    text-align: left;
  }

  .entry-content .wp-block-image.alignleft,
  .entry-content .wp-block-image.alignright {
    float: none;
    max-width: 100%;
    margin: 2rem 0;
  }

  .entry-content blockquote {
    padding: 1.25rem;
  }

  .entry-content h2 {
    font-size: 1.375rem;
  }
}


/* ============================================================
   Spectacular Page — Hero typography & details bar
   ============================================================ */

.spec-title {
  font-size: clamp(2.5rem, 7vw, 5.5rem);
  font-weight: 800;
  line-height: 1.0;
  color: var(--pqa-white);
  margin-bottom: 0.5rem;
  letter-spacing: -0.02em;
}

.spec-year {
  display: block;
  font-size: clamp(1rem, 2.5vw, 1.5rem);
  font-weight: 800;
  letter-spacing: 0.35em;
  text-transform: uppercase;
  background: var(--pqa-rainbow);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  margin-bottom: 1.5rem;
}

.spec-tagline {
  font-size: clamp(1rem, 2vw, 1.2rem);
  color: rgba(255, 255, 255, 0.72);
  max-width: 48ch;
  margin: 0 auto 2.5rem;
  line-height: 1.6;
}

.spec-details-bar {
  display: flex;
  justify-content: center;
  gap: 2.5rem;
  margin-top: 3rem;
  flex-wrap: wrap;
}

.spec-detail {
  text-align: center;
}

.spec-detail-label {
  font-size: 0.65rem;
  font-weight: 800;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--pqa-accent-blue);
  margin-bottom: 0.35rem;
}

.spec-detail-value {
  font-size: 1rem;
  font-weight: 700;
  color: var(--pqa-white);
}

/* Background splat watermarks inside hero */
.spec-hero-splat {
  position: absolute;
  right: -5%;
  top: -15%;
  width: 40%;
  opacity: 0.05;
  pointer-events: none;
}

.spec-hero-splat-left {
  position: absolute;
  left: -5%;
  bottom: -15%;
  width: 35%;
  opacity: 0.05;
  pointer-events: none;
  transform: scaleX(-1) rotate(20deg);
}


/* ============================================================
   Spectacular Page — Director & Theme section
   ============================================================ */

.spec-director-grid {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 3rem;
  align-items: start;
  margin-bottom: 3.5rem;
}

.spec-director-photo {
  width: 100%;
  aspect-ratio: 3 / 4;
  border-radius: 16px;
  background-color: var(--pqa-light-navy);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--pqa-text-light);
  font-size: 0.85rem;
  font-weight: 600;
}

.spec-director-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.spec-director-name {
  font-size: 1.625rem;
  font-weight: 700;
  color: var(--pqa-navy);
  margin-bottom: 0.2rem;
  line-height: 1.2;
}

.spec-director-role {
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--pqa-accent-blue);
  margin-bottom: 1.25rem;
}

.spec-director-bio {
  font-size: 0.9375rem;
  color: var(--pqa-text-mid);
  line-height: 1.8;
}

.spec-director-bio p {
  margin-bottom: 1rem;
}

.spec-director-bio p:last-child {
  margin-bottom: 0;
}

/* Theme statement block */
.spec-theme-block {
  background-color: var(--pqa-navy);
  border-radius: 20px;
  padding: 3rem;
  position: relative;
  overflow: hidden;
}

.spec-theme-block::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--pqa-rainbow);
  opacity: 0.06;
  pointer-events: none;
}

.spec-theme-title {
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 800;
  color: var(--pqa-white);
  margin-bottom: 1.5rem;
  line-height: 1.2;
  position: relative;
}

.spec-theme-body {
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.78);
  line-height: 1.8;
  position: relative;
}

.spec-theme-body p {
  margin-bottom: 1.25rem;
}

.spec-theme-body p:last-child {
  margin-bottom: 0;
}

.spec-theme-block .hero-cta-group {
  margin-top: 2rem;
  position: relative;
  /* keeps above ::before gradient overlay */
}

/* Skyline accent divider */
.skyline-divider {
  width: 100%;
  overflow: hidden;
  line-height: 0;
}

.skyline-divider img {
  width: 100%;
  height: auto;
  display: block;
}

/* Responsive */
@media (max-width: 768px) {
  .spec-details-bar {
    gap: 1.5rem;
  }

  .spec-director-grid {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .spec-director-photo {
    max-width: 240px;
  }

  .spec-theme-block {
    padding: 2rem 1.5rem;
  }
}

/* ============================================================
   Donate page
   ============================================================ */

.donate-hero {
  background-color: var(--pqa-navy);
  padding: 5rem 0;
  position: relative;
  overflow: hidden;
}

.donate-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--pqa-rainbow);
  opacity: 0.06;
  pointer-events: none;
}

.amount-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.75rem;
  margin-bottom: 1rem;
}

.amount-btn {
  padding: 0.85rem;
  border: 2px solid var(--pqa-border);
  border-radius: 10px;
  background-color: var(--pqa-white);
  font-family: var(--font-base);
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--pqa-navy);
  cursor: pointer;
  transition: all 0.2s ease;
  text-align: center;
}

.amount-btn:hover,
.amount-btn.active {
  border-color: var(--pqa-navy);
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
}

.donate-form-card {
  background-color: var(--pqa-white);
  border: 1px solid var(--pqa-border);
  border-radius: 16px;
  padding: 2.5rem;
  position: sticky;
  top: 90px;
}

.donate-layout {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: var(--space-lg);
  align-items: start;
}

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

  .donate-form-card {
    position: static;
  }

  .donate-layout {
    grid-template-columns: 1fr;
  }
}


/* ============================================================
   Form controls — shared across Found Family and other forms
   ============================================================ */

.form-card {
  background-color: var(--pqa-white);
  border: 1px solid var(--pqa-border);
  border-radius: 16px;
  padding: 2.5rem;
}

.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.25rem;
}

.form-group {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.form-group.full-width {
  grid-column: 1 / -1;
}

.form-label {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--pqa-navy);
  letter-spacing: 0.04em;
}

.form-label .req {
  color: var(--pqa-accent-blue);
  margin-left: 2px;
}

.form-control {
  padding: 0.65rem 1rem;
  border: 2px solid var(--pqa-border);
  border-radius: 8px;
  font-family: var(--font-base);
  font-size: 0.9rem;
  font-weight: 500;
  outline: none;
  transition: border-color 0.2s ease;
  background-color: var(--pqa-white);
  color: var(--pqa-text-dark);
  width: 100%;
  box-sizing: border-box;
}

.form-control:focus {
  border-color: var(--pqa-accent-blue);
}

select.form-control {
  cursor: pointer;
}

textarea.form-control {
  resize: vertical;
  min-height: 100px;
}

.form-hint {
  font-size: 0.75rem;
  color: var(--pqa-text-light);
  font-weight: 500;
}

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


/* ============================================================
   Found Family page
   ============================================================ */

.ff-hero {
  background-color: var(--pqa-navy);
  padding: 5rem 0;
  text-align: center;
  position: relative;
  overflow: hidden;
}

.ff-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--pqa-rainbow);
  opacity: 0.06;
  pointer-events: none;
}

.ff-hero-splat {
  position: absolute;
  right: -6%;
  top: -10%;
  width: 38%;
  opacity: 0.06;
  pointer-events: none;
}

.pqa-verified-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: linear-gradient(90deg, var(--pqa-navy), #3a3e7a);
  color: var(--pqa-white);
  padding: 0.3rem 0.85rem;
  border-radius: 100px;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.06em;
}

.pqa-verified-badge::before {
  content: '✦';
  color: var(--pqa-accent-blue);
}


/* ============================================================
   Resources page
   ============================================================ */

.resource-section-header {
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--pqa-navy);
  padding: 0.5rem 0 1rem;
  border-top: 2px solid var(--pqa-navy);
  margin-top: 3rem;
  margin-bottom: 1rem;
}

.resource-section-header:first-of-type {
  margin-top: 0;
}

.resource-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;
}

.lock-notice {
  background-color: var(--pqa-navy);
  border-radius: 16px;
  padding: 2.5rem;
  text-align: center;
  color: var(--pqa-white);
  margin-bottom: 2.5rem;
}

.resources-layout {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: var(--space-lg);
  align-items: start;
}

@media (max-width: 768px) {
  .resource-grid {
    grid-template-columns: 1fr;
  }

  .resources-layout {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
   BLOCK EDITOR — Native Block Integration
   Maps WordPress Group and Columns blocks to the PQA design
   system so board members get PQA-styled output using built-in
   Gutenberg blocks, without needing custom blocks for layout.
   ============================================================ */

/* ------------------------------------------------------------
   Group block — background & padding utilities
   Usage: add these as Additional CSS Class on any Group block.
   ------------------------------------------------------------ */

/* Standard section padding */
.wp-block-group.pqa-section {
  padding-top: var(--space-lg);
  padding-bottom: var(--space-lg);
}

/*
 * Escape WP constrained-layout margins on pqa-section elements.
 *
 * When a .pqa-section block (ACF or <section>) is a direct child of a
 * WP Group block that has is-layout-constrained, WordPress applies
 * max-width and margin: auto via its low-specificity :where() rule.
 * These overrides reset those constraints so the section spans the full
 * width of its parent container, allowing the inner pqa-container /
 * pqa-container-narrow to handle their own width and centering.
 */
.is-layout-constrained>section.pqa-section {
  max-width: none;
  margin-left: 0 !important;
  margin-right: 0 !important;
  width: 100%;
}

/* Dark navy background — text colours invert automatically */
.wp-block-group.dark,
section.dark {
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
}

.wp-block-group.dark h1,
.wp-block-group.dark h2,
.wp-block-group.dark h3,
.wp-block-group.dark h4,
section.dark h1,
section.dark h2,
section.dark h3,
section.dark h4 {
  color: var(--pqa-white);
}

.wp-block-group.dark p,
.wp-block-group.dark li,
section.dark p,
section.dark li {
  color: rgba(255, 255, 255, 0.75);
}

.wp-block-group.dark .section-eyebrow,
section.dark .section-eyebrow {
  color: var(--pqa-accent-blue);
}

/* Light navy background */
.wp-block-group.light,
section.light {
  background-color: var(--pqa-light-navy);
}

/* White background */
.wp-block-group.white,
section.white {
  background-color: var(--pqa-white);
}

/* ------------------------------------------------------------
   Columns block — two-col & grid layout utilities
   Usage: add these as Additional CSS Class on any Columns block.
   ------------------------------------------------------------ */

/* Two-column layout — matches .two-col */
.wp-block-columns.two-col,
.wp-block-columns.two-col-sidebar {
  gap: var(--space-lg);
  align-items: center;
}

/* Stretch variant — both columns fill the full row height */
.wp-block-columns.two-col.stretch,
.wp-block-columns.two-col-sidebar.stretch {
  align-items: stretch;
}

/* Top-align both columns (for sidebar layouts with varying card heights) */
.wp-block-columns.two-col.align-start {
  align-items: flex-start;
}

/* Three-column card grid — matches .grid-3 */
.wp-block-columns.grid-3 {
  gap: 1.5rem;
  align-items: stretch;
}

/* Four-column card grid — matches .grid-4 */
.wp-block-columns.grid-4 {
  gap: 1.25rem;
  align-items: stretch;
}

/* Sidebar layout — main content + narrow right column (30%) */
.wp-block-columns.two-col-sidebar {
  gap: 2rem;
  align-items: flex-start;
}

/* Remove the default WP bottom margin on Columns so section padding controls spacing */
.wp-block-columns.two-col,
.wp-block-columns.grid-3,
.wp-block-columns.grid-4,
.wp-block-columns.two-col-sidebar {
  margin-bottom: 0;
}

/* Responsive: stack all PQA column layouts on mobile */
@media (max-width: 768px) {

  .wp-block-columns.two-col,
  .wp-block-columns.grid-3,
  .wp-block-columns.grid-4,
  .wp-block-columns.two-col-sidebar {
    flex-direction: column;
  }

  .wp-block-columns.two-col .wp-block-column,
  .wp-block-columns.grid-3 .wp-block-column,
  .wp-block-columns.grid-4 .wp-block-column,
  .wp-block-columns.two-col-sidebar .wp-block-column {
    flex-basis: 100% !important;
    /* Override any inline width set in editor */
    width: 100%;
  }

  /* Disable sticky card on mobile — layout is stacked, sticky causes layout jumps */
  .sidebar-card.is-sticky {
    position: static;
  }
}

/* ------------------------------------------------------------
   Block editor — button overrides
   Map the native Button block's className to PQA btn styles.
   Board members set Additional CSS Class on Button blocks.
   ------------------------------------------------------------ */

.wp-block-button.btn-primary .wp-block-button__link {
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
  border-radius: 100px;
  font-weight: 700;
  font-size: 0.875rem;
  letter-spacing: 0.04em;
  padding: 0.75rem 1.75rem;
  border: 2px solid var(--pqa-navy);
  transition: background var(--transition), border-color var(--transition);
}

.wp-block-button.btn-primary .wp-block-button__link:hover {
  background-color: #1e2150;
  border-color: #1e2150;
}

.wp-block-button.btn-secondary .wp-block-button__link {
  background-color: transparent;
  color: var(--pqa-navy);
  border-radius: 100px;
  font-weight: 700;
  font-size: 0.875rem;
  letter-spacing: 0.04em;
  padding: 0.75rem 1.75rem;
  border: 2px solid var(--pqa-navy);
  transition: background var(--transition), color var(--transition);
}

.wp-block-button.btn-secondary .wp-block-button__link:hover {
  background-color: var(--pqa-navy);
  color: var(--pqa-white);
}

.wp-block-button.btn-accent .wp-block-button__link {
  background-color: var(--pqa-accent-blue);
  color: var(--pqa-navy);
  border-radius: 100px;
  font-weight: 700;
  font-size: 0.875rem;
  letter-spacing: 0.04em;
  padding: 0.75rem 1.75rem;
  border: 2px solid var(--pqa-accent-blue);
  transition: background var(--transition);
}

.wp-block-button.btn-accent .wp-block-button__link:hover {
  background-color: #22a8e8;
  border-color: #22a8e8;
}

.wp-block-button.btn-ghost-white .wp-block-button__link {
  background-color: transparent;
  color: var(--pqa-white);
  border-radius: 100px;
  font-weight: 700;
  font-size: 0.875rem;
  letter-spacing: 0.04em;
  padding: 0.75rem 1.75rem;
  border: 2px solid rgba(255, 255, 255, 0.5);
  transition: border-color var(--transition), background var(--transition);
}

.wp-block-button.btn-ghost-white .wp-block-button__link:hover {
  border-color: var(--pqa-white);
  background-color: rgba(255, 255, 255, 0.08);
}

/* Auto-recolor primary Button block to accent-blue inside dark group sections */
.wp-block-group.dark .wp-block-button.btn-primary .wp-block-button__link,
section.dark .wp-block-button.btn-primary .wp-block-button__link {
  background-color: var(--pqa-accent-blue);
  color: var(--pqa-white);
  border-color: var(--pqa-accent-blue);
}

.wp-block-group.dark .wp-block-button.btn-primary .wp-block-button__link:hover,
section.dark .wp-block-button.btn-primary .wp-block-button__link:hover {
  background-color: #22a8e8;
  border-color: #22a8e8;
}