  :root{
    --metro-red: #D0003A;
    --metro-red-dark: #A5002E;
    --metro-navy: #0F3171;
    --metro-navy-light: #1A4B9E;
    --paper: #F6F3EC;
    --paper-2: #EFEBE0;
    --ink: #17181C;
    --ink-soft: #4A4C55;
    --gold: #C79A3E;
    --line-grey: #DAD5C7;
    --white: #FFFFFF;
    --radius-s: 4px;
    --radius-m: 10px;
  }

  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --paper: #14151A;
      --paper-2: #1B1D24;
      --ink: #F2F1ED;
      --ink-soft: #B8B9C2;
      --line-grey: #33353F;
      --white: #1E2028;
    }
  }
  :root[data-theme="dark"]{
    --paper: #14151A;
    --paper-2: #1B1D24;
    --ink: #F2F1ED;
    --ink-soft: #B8B9C2;
    --line-grey: #33353F;
    --white: #1E2028;
  }

  *{ box-sizing: border-box; }
  html{ scroll-behavior: smooth; }
  body{
    margin:0;
    background: var(--paper);
    color: var(--ink);
    font-family: 'IBM Plex Sans', system-ui, -apple-system, sans-serif;
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
  }
  img{ max-width:100%; display:block; }
  a{ color: inherit; }
  .wrap{
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 28px;
  }
  h1,h2,h3,h4{
    font-family: 'Space Grotesk', system-ui, sans-serif;
    margin: 0;
    letter-spacing: -0.01em;
  }

  /* ---------- Header ---------- */
  header{
    position: sticky; top:0; z-index: 50;
    background: var(--paper);
    border-bottom: 1px solid var(--line-grey);
  }
  .header-inner{
    display:flex; align-items:center; justify-content:space-between;
    padding: 14px 28px;
    max-width: 1180px; margin:0 auto;
  }
  .logo-mark{ display:flex; align-items:center; gap:10px; }
  .logo-mark img{ height:44px; width:auto; }
  nav.primary-nav{ display:flex; align-items:center; gap:30px; }
  nav.primary-nav a{
    text-decoration:none; font-size: 15px; font-weight: 500;
    color: var(--ink); position:relative; padding: 4px 0;
  }
  nav.primary-nav a:hover{ color: var(--metro-red); }
  .cta-btn{
    background: var(--metro-red);
    color:#fff !important;
    padding: 11px 22px;
    border-radius: var(--radius-s);
    font-weight:600; font-size:14.5px;
    text-decoration:none;
    border: 1.5px solid var(--metro-red);
    transition: background .15s ease, color .15s ease;
    white-space:nowrap;
  }
  .cta-btn:hover{ background: var(--metro-red-dark); border-color: var(--metro-red-dark); }
  .cta-ghost{
    background: transparent; color: var(--metro-navy) !important;
    border: 1.5px solid var(--metro-navy);
  }
  .cta-ghost:hover{ background: var(--metro-navy); color: #fff !important; }
  .menu-toggle{ display:none; background:none; border:none; cursor:pointer; padding:6px; }
  .menu-toggle span{ display:block; width:24px; height:2px; background:var(--ink); margin:5px 0; }

  /* ---------- Hero ---------- */
  .hero{
    padding: 88px 0 64px;
    position: relative;
    overflow:hidden;
  }
  .hero .wrap{ position:relative; z-index:2; }
  .hero-chevron{
    position:absolute; top:-60px; right:-120px; width:520px; height:520px;
    opacity:.08; z-index:1; pointer-events:none;
  }
  .eyebrow-tag{
    display:inline-flex; align-items:center; gap:8px;
    background: var(--paper-2); border:1px solid var(--line-grey);
    padding: 6px 14px; border-radius: 999px;
    font-size: 13.5px; font-weight:600; color: var(--metro-navy-light);
    margin-bottom: 22px;
  }
  .eyebrow-tag .dot{ width:7px; height:7px; border-radius:50%; background: var(--metro-red); }
  .hero h1{
    font-size: clamp(38px, 5.4vw, 66px);
    font-weight: 700;
    line-height: 1.03;
    max-width: 15ch;
    color: var(--ink);
  }
  .hero h1 .accent{ color: var(--metro-red); }
  .hero p.lede{
    font-size: 19px; color: var(--ink-soft);
    max-width: 46ch; margin-top: 22px;
  }
  .hero-actions{ display:flex; gap:14px; margin-top: 34px; flex-wrap:wrap; }
  .hero-actions .cta-btn{ padding: 15px 28px; font-size:15.5px; }

  .hero-stats{
    display:flex; gap: 44px; margin-top: 56px; flex-wrap:wrap;
  }
  .hero-stats div{ border-left: 2px solid var(--metro-red); padding-left: 14px; }
  .hero-stats strong{
    display:block; font-family:'Space Grotesk'; font-size: 26px; color: var(--metro-navy-light);
  }
  :root[data-theme="dark"] .hero-stats strong, @media (prefers-color-scheme: dark){ .hero-stats strong{ color:#6D9CFF; } }
  .hero-stats span{ font-size: 13.5px; color: var(--ink-soft); }

  /* ---------- Route / Line Nav ---------- */
  .route{
    padding: 10px 0 90px;
    position:relative;
  }
  .route-track{
    position:relative;
    height: 3px;
    background: var(--line-grey);
    margin: 0 0 0;
    border-radius: 3px;
  }
  .route-track .fill{
    position:absolute; left:0; top:0; height:100%;
    width:0%; background: linear-gradient(90deg, var(--metro-red), var(--metro-navy-light));
    border-radius:3px;
    animation: fillLine 1.6s cubic-bezier(.2,.7,.2,1) .3s forwards;
  }
  @keyframes fillLine{ to{ width:100%; } }
  @media (prefers-reduced-motion: reduce){
    .route-track .fill{ animation: none; width:100%; }
  }
  .stations{
    display:grid; grid-template-columns: repeat(3,1fr);
    margin-top: -3px;
  }
  .station{ position:relative; padding-top: 34px; }
  .station .stop-dot{
    position:absolute; top: -8px; left:0;
    width: 18px; height:18px; border-radius:50%;
    background: var(--paper); border: 3px solid var(--metro-red);
  }
  .station:nth-child(1) .stop-dot{ border-color: var(--gold); }
  .station:nth-child(2) .stop-dot{ border-color: var(--metro-red); }
  .station:nth-child(3) .stop-dot{ border-color: var(--metro-navy-light); }
  .station-label{ font-size: 12.5px; font-weight:600; color: var(--ink-soft); letter-spacing:.03em; }
  .station h3{ font-size: 22px; margin-top:6px; }
  .station p{ color: var(--ink-soft); font-size: 15px; margin-top:10px; max-width:32ch; }
  .station a.station-link{
    display:inline-flex; align-items:center; gap:6px;
    margin-top: 16px; font-weight:600; font-size:14.5px;
    text-decoration:none; color: var(--metro-navy-light);
    border-bottom: 1.5px solid transparent;
  }
  .station a.station-link:hover{ border-bottom-color: currentColor; }

  /* ---------- Program Detail Sections ---------- */
  .program{
    padding: 78px 0;
    border-top: 1px solid var(--line-grey);
  }
  .program-inner{
    display:grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items:center;
  }
  .program.reverse .program-inner{ direction: rtl; }
  .program.reverse .program-inner > *{ direction: ltr; }
  .program-tag{
    font-size: 13px; font-weight:700; letter-spacing:.03em;
    padding: 5px 12px; border-radius:999px; display:inline-block;
    margin-bottom: 18px;
  }
  .tag-holiday{ background: #FBE3E8; color: var(--metro-red-dark); }
  .tag-fundraising{ background: #F3E8CC; color: #8A6A1E; }
  .tag-pledge{ background: #DCE6F7; color: var(--metro-navy); }
  :root[data-theme="dark"] .tag-holiday{ background:#4A1420; color:#FF8FA3;}
  :root[data-theme="dark"] .tag-fundraising{ background:#3D3016; color:#F0CD7A;}
  :root[data-theme="dark"] .tag-pledge{ background:#182B4D; color:#9CBEF2;}
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]) .tag-holiday{ background:#4A1420; color:#FF8FA3;}
    :root:not([data-theme="light"]) .tag-fundraising{ background:#3D3016; color:#F0CD7A;}
    :root:not([data-theme="light"]) .tag-pledge{ background:#182B4D; color:#9CBEF2;}
  }
  .program h2{ font-size: clamp(28px,3.4vw,38px); margin-bottom:16px; }
  .program p.desc{ color: var(--ink-soft); font-size:16.5px; max-width: 46ch; }
  .program ul.feature-list{ list-style:none; padding:0; margin: 26px 0 0; display:grid; gap:12px; }
  .program ul.feature-list li{
    display:flex; gap:10px; align-items:flex-start; font-size:15px; color: var(--ink);
  }
  .program ul.feature-list svg{ flex-shrink:0; margin-top:2px; }
  .program-actions{ margin-top:28px; display:flex; gap:14px; flex-wrap:wrap; }

  .program-visual{
    border-radius: var(--radius-m);
    aspect-ratio: 1/1;
    position:relative;
    display:flex; align-items:center; justify-content:center;
    overflow:hidden;
  }
  .visual-holiday{ background: linear-gradient(155deg, var(--metro-red) 0%, #7A0026 100%); }
  .visual-fundraising{ background: linear-gradient(155deg, #2B2410 0%, #40331A 55%, var(--gold) 130%); }
  .visual-pledge{ background: linear-gradient(155deg, var(--metro-navy) 0%, #061635 100%); }
  .program-visual svg.big-icon{ width: 46%; height: 46%; opacity:.94; }
  .program-visual .visual-badge{
    position:absolute; bottom:22px; left:22px; right:22px;
    background: rgba(255,255,255,.12); backdrop-filter: blur(6px);
    border: 1px solid rgba(255,255,255,.25);
    border-radius: var(--radius-s);
    padding: 12px 16px; color:#fff; font-size:13.5px; font-weight:500;
  }

  /* ---------- Resource Library ---------- */
  .resources{ padding: 56px 0 90px; background: var(--paper-2); border-bottom:1px solid var(--line-grey); }
  .resources-head{ max-width: 640px; margin-bottom: 44px; }
  .resources-head .eyebrow-tag{ margin-bottom:16px; }
  .resources-head h2{ font-size: clamp(28px,3.6vw,40px); }
  .resources-head p{ color: var(--ink-soft); margin-top:14px; font-size:16.5px; }

  .filter-row{ display:flex; gap:10px; margin-bottom:32px; flex-wrap:wrap; }
  .filter-btn{
    background: var(--white); border:1.5px solid var(--line-grey);
    padding: 9px 18px; border-radius:999px; font-size:14px; font-weight:600;
    cursor:pointer; color: var(--ink-soft);
    font-family:'IBM Plex Sans';
  }
  .filter-btn.active{ background: var(--ink); color: var(--paper); border-color: var(--ink); }

  .resource-grid{
    display:grid; grid-template-columns: repeat(3, 1fr); gap: 22px;
  }
  .ticket{
    background: var(--white);
    border-radius: var(--radius-m);
    border: 1px solid var(--line-grey);
    display:flex; flex-direction:column;
    overflow:hidden;
    position:relative;
  }
  .ticket-thumb{
    height: 168px;
    background-size: cover;
    background-position: center top;
    border-bottom: 1px solid var(--line-grey);
    position: relative;
  }
  .ticket-thumb.gradient-pledge{
    background: linear-gradient(155deg, var(--metro-navy) 0%, #061635 100%);
    display:flex; align-items:center; justify-content:center;
  }
  .ticket-thumb.gradient-pledge svg{ width:64px; height:64px; opacity:.92; }
  .ticket-top{ padding: 20px 22px 18px; flex:1; }
  .ticket-cat{
    font-size:12px; font-weight:700; letter-spacing:.03em;
    display:inline-block; padding:3px 10px; border-radius:999px; margin-bottom:14px;
  }
  .ticket[data-cat="holiday"] .ticket-cat{ background:#FBE3E8; color: var(--metro-red-dark); }
  .ticket[data-cat="fundraising"] .ticket-cat{ background:#F3E8CC; color:#8A6A1E; }
  .ticket[data-cat="pledge"] .ticket-cat{ background:#DCE6F7; color: var(--metro-navy); }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]) .ticket[data-cat="holiday"] .ticket-cat{ background:#4A1420; color:#FF8FA3;}
    :root:not([data-theme="light"]) .ticket[data-cat="fundraising"] .ticket-cat{ background:#3D3016; color:#F0CD7A;}
    :root:not([data-theme="light"]) .ticket[data-cat="pledge"] .ticket-cat{ background:#182B4D; color:#9CBEF2;}
  }
  :root[data-theme="dark"] .ticket[data-cat="holiday"] .ticket-cat{ background:#4A1420; color:#FF8FA3;}
  :root[data-theme="dark"] .ticket[data-cat="fundraising"] .ticket-cat{ background:#3D3016; color:#F0CD7A;}
  :root[data-theme="dark"] .ticket[data-cat="pledge"] .ticket-cat{ background:#182B4D; color:#9CBEF2;}

  .ticket h4{ font-size:18px; line-height:1.3; }
  .ticket .file-meta{ font-size:13px; color: var(--ink-soft); margin-top:8px; }
  .ticket-perf{
    position:relative; height:0; border-top: 2px dashed var(--line-grey); margin: 0 22px;
  }
  .ticket-perf::before, .ticket-perf::after{
    content:''; position:absolute; top:-9px; width:18px; height:18px; border-radius:50%;
    background: var(--paper-2);
  }
  .ticket-perf::before{ left:-31px; }
  .ticket-perf::after{ right:-31px; }
  .ticket-bottom{
    padding: 16px 22px 20px; display:flex; align-items:center; justify-content:space-between;
  }
  .dl-btn{
    display:inline-flex; align-items:center; gap:8px;
    font-size: 14px; font-weight:600; color: var(--ink);
    text-decoration:none; padding: 9px 14px; border-radius: var(--radius-s);
    border: 1.5px solid var(--ink); transition: all .15s ease;
  }
  .dl-btn:hover{ background: var(--ink); color: var(--paper); }
  .ticket .doc-icon{ opacity:.5; }

  .resources-more{ text-align:center; margin-top: 40px; }

  /* ---------- Blog ---------- */
  .blog{ padding: 90px 0; }
  .section-head-row{ display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:40px; gap:20px; flex-wrap:wrap; }
  .section-head-row h2{ font-size: clamp(28px,3.6vw,38px); }
  .section-head-row a{ font-size:14.5px; font-weight:600; color: var(--metro-navy-light); text-decoration:none; white-space:nowrap; }
  .blog-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:26px; }
  .blog-card{
    border-radius: var(--radius-m); overflow:hidden;
    border:1px solid var(--line-grey); background: var(--white);
  }
  .blog-thumb{ height:150px; display:flex; align-items:center; justify-content:center; }
  .blog-thumb.b1{ background: linear-gradient(135deg,#7A0026,var(--metro-red)); }
  .blog-thumb.b2{ background: linear-gradient(135deg,#40331A,var(--gold)); }
  .blog-thumb.b3{ background: linear-gradient(135deg,#061635,var(--metro-navy)); }
  .blog-body{ padding:20px 22px 24px; }
  .blog-date{ font-size:12.5px; color: var(--ink-soft); font-weight:600; }
  .blog-card h3{ font-size:18px; margin-top:8px; line-height:1.35; }
  .blog-card p{ font-size:14.5px; color: var(--ink-soft); margin-top:10px; }

  /* ---------- Contact ---------- */
  .contact{ padding: 90px 0 100px; background: var(--metro-navy); color:#fff; border-radius: 0; }
  .contact-inner{ display:grid; grid-template-columns: .85fr 1fr; gap: 60px; }
  .contact h2{ font-size: clamp(28px,3.6vw,40px); color:#fff; }
  .contact p.lede{ color: #C7D3EC; margin-top:16px; font-size:16px; max-width:38ch; }
  .contact-info{ margin-top:32px; display:grid; gap:18px; }
  .contact-info div{ display:flex; gap:12px; align-items:flex-start; font-size:14.5px; color:#DCE6F7; }
  .contact-form{
    background: rgba(255,255,255,.06);
    border:1px solid rgba(255,255,255,.15);
    border-radius: var(--radius-m);
    padding: 30px;
    display:grid; gap:16px;
  }
  .contact-form .row2{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
  .contact-form label{ font-size:13px; font-weight:600; color:#DCE6F7; display:block; margin-bottom:7px; }
  .contact-form input, .contact-form select, .contact-form textarea{
    width:100%; background: rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.25);
    border-radius: var(--radius-s); padding:11px 12px; color:#fff; font-family:'IBM Plex Sans'; font-size:14.5px;
  }
  .contact-form input::placeholder, .contact-form textarea::placeholder{ color: rgba(255,255,255,.4); }
  .contact-form button{
    background: var(--metro-red); color:#fff; border:none; border-radius: var(--radius-s);
    padding: 14px 20px; font-weight:700; font-size:15px; cursor:pointer; margin-top:6px;
    font-family:'IBM Plex Sans';
  }
  .contact-form button:hover{ background: var(--metro-red-dark); }
  .form-note{ font-size:12.5px; color: rgba(255,255,255,.5); text-align:center; }

  /* ---------- Footer ---------- */
  footer{ padding: 50px 0 34px; }
  .footer-inner{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:20px; }
  .footer-inner img{ height:34px; }
  .footer-links{ display:flex; gap:26px; flex-wrap:wrap; }
  .footer-links a{ font-size:14px; color: var(--ink-soft); text-decoration:none; }
  .footer-links a:hover{ color: var(--metro-red); }
  .footer-bottom{ margin-top:30px; padding-top:24px; border-top:1px solid var(--line-grey); font-size:13px; color: var(--ink-soft); text-align:center; }

  /* ---------- Responsive ---------- */
  @media (max-width: 900px){
    nav.primary-nav{ display:none; }
    .menu-toggle{ display:block; }
    .stations{ grid-template-columns:1fr; gap:34px; }
    .route-track{ display:none; }
    .program-inner{ grid-template-columns:1fr; gap:34px; }
    .program.reverse .program-inner{ direction:ltr; }
    .resource-grid{ grid-template-columns: 1fr 1fr; }
    .blog-grid{ grid-template-columns:1fr; }
    .contact-inner{ grid-template-columns:1fr; }
    .contact-form .row2{ grid-template-columns:1fr; }
  }
  @media (max-width:600px){
    .resource-grid{ grid-template-columns:1fr; }
    .hero{ padding-top:50px; }
    .header-inner{ padding:12px 20px; }
  }

  :focus-visible{ outline: 2.5px solid var(--metro-navy-light); outline-offset:2px; }

/* ---------- Program visual image grids (added for WP theme) ---------- */
.visual-grid{
  padding:14px; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:1fr 1fr; gap:10px;
  position:relative;
}
.visual-grid img{ width:100%; height:100%; object-fit:cover; border-radius:6px; display:block; }
.visual-grid .visual-badge{ position:absolute; }

/* ---------- Resource thumbnail (real image, WP-driven) ---------- */
.ticket-thumb-img{
  height:168px; width:100%; object-fit:cover; display:block;
  border-bottom:1px solid var(--line-grey);
}

/* ---------- Blog thumbnail (real image, WP-driven) ---------- */
.blog-thumb-img{
  height:150px; width:100%; object-fit:cover; display:block;
}

/* ---------- Single post / archive additions ---------- */
.post-hero{ padding: 60px 0 40px; border-bottom:1px solid var(--line-grey); }
.post-hero .post-cat{ margin-bottom:16px; }
.post-hero h1{ font-size: clamp(30px,4.4vw,48px); max-width: 22ch; }
.post-hero .post-meta{ color: var(--ink-soft); font-size:14.5px; margin-top:14px; }
.post-featured-img{ width:100%; border-radius: var(--radius-m); margin: 34px 0; object-fit:cover; max-height:460px; }
.post-content{ padding: 0 0 80px; }
.post-content .wrap{ max-width: 740px; }
.post-content p{ font-size:17px; color: var(--ink); margin: 0 0 20px; }
.post-content h2{ font-size:26px; margin: 40px 0 16px; }
.post-content h3{ font-size:21px; margin: 32px 0 14px; }
.post-content img{ border-radius: var(--radius-m); margin: 20px 0; }
.post-content ul, .post-content ol{ font-size:16.5px; color:var(--ink); padding-left:22px; margin-bottom:20px; }
.post-content a{ color: var(--metro-navy-light); text-decoration underline; }
.post-content blockquote{
  border-left: 3px solid var(--metro-red); margin: 28px 0; padding: 4px 0 4px 22px;
  font-size: 18px; color: var(--ink-soft); font-style: italic;
}

.archive-head{ padding: 70px 0 20px; text-align:center; }
.archive-head h1{ font-size: clamp(30px,4vw,44px); }
.archive-grid{ padding: 40px 0 90px; }
.archive-grid .blog-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:26px; }
@media (max-width:900px){ .archive-grid .blog-grid{ grid-template-columns:1fr; } }

.pagination-row{ display:flex; justify-content:center; gap:10px; margin-top:50px; }
.pagination-row a, .pagination-row span{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:40px; height:40px; padding:0 12px;
  border:1.5px solid var(--line-grey); border-radius: var(--radius-s);
  text-decoration:none; color: var(--ink); font-size:14.5px; font-weight:600;
}
.pagination-row .current{ background: var(--ink); color: var(--paper); border-color: var(--ink); }

.no-resources, .no-posts{ text-align:center; padding: 40px 20px; color: var(--ink-soft); }

.contact-form .form-success{
  background: rgba(46,160,90,.18); border:1px solid rgba(46,160,90,.4);
  color:#DFF5E6; padding:14px 16px; border-radius: var(--radius-s); font-size:14.5px; margin-bottom:6px;
}

/* ---------- Mobile nav open state (JS toggles this class) ---------- */
@media (max-width: 900px){
  nav.primary-nav.nav-open{
    display:flex !important;
    position:absolute; top:64px; left:0; right:0;
    background: var(--paper);
    flex-direction:column; padding:20px 28px;
    border-bottom:1px solid var(--line-grey);
    gap:18px;
  }
}
