/* ============================================================
   Jazz Hands For Autism — Elevated Site Design System
   Direction: "Warm editorial" — premium arts-institution feel.
   Plain CSS + Google Fonts so it hands off cleanly to a Duda team.
   Created 2026-06-18.
   ============================================================ */

/* ---- Fonts (Google Fonts — Duda-compatible) ----
   Display: Fraunces (expressive optical serif, warm & high-class — NOT Playfair)
   Body:    Hanken Grotesk (clean, warm, highly legible — NOT Inter) */
/* Fonts are loaded via <link rel=preconnect/stylesheet> in each page's <head>
   (an @import here would block CSS parsing — see font-loading best practice). */

:root {
  /* Brand — red is the single signature accent (no gold) */
  --red:        #B8292F;   /* JHFA red */
  --red-deep:   #8C1F23;   /* hover / deep */
  --red-tint:   #FBE9E9;   /* faint wash */

  /* Modern neutrals — crisp, barely-warm light + cool near-black ink */
  --paper:      #F6F5F3;   /* dominant background (neutral, not yellow) */
  --paper-2:    #ECEBE8;   /* alt section */
  --card:       #FFFFFF;
  --ink:        #18181B;   /* near-black, neutral (modern) */
  --ink-soft:   #3F3D43;   /* body */
  --ink-mute:   #69676E;   /* secondary (darkened 2026-09-17: 5.1:1 on paper, 4.7:1 on paper-2, WCAG AA) */
  --line:       #E5E4E1;   /* hairline */

  /* System */
  --radius:     14px;
  --radius-lg:  20px;
  --shadow-sm:  0 1px 2px rgba(20,20,25,.05), 0 6px 18px rgba(20,20,25,.05);
  --shadow-md:  0 12px 34px rgba(20,20,25,.09), 0 2px 6px rgba(20,20,25,.05);
  --shadow-lg:  0 30px 70px rgba(20,20,25,.14);
  --container:  1180px;
  --ease:       cubic-bezier(.2,.7,.2,1);
}

/* ---- Reset / base ---- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: 'Hanken Grotesk', system-ui, sans-serif;
  font-size: 18px;
  line-height: 1.65;
  color: var(--ink-soft);
  background-color: var(--paper);
  /* subtle, modern depth: a single faint red wash, no yellow */
  background-image:
    radial-gradient(900px 520px at 88% -12%, rgba(184,41,47,.045), transparent 60%);
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img { max-width: 100%; height: auto; display: block; }
picture { display: contents; } /* WebP wrapper adds no layout box; the <img> lays out exactly as before */
picture > source { display: none; } /* keeps <source> from becoming a flex/grid item (it added a stray gap in the nav brand) */
a { color: var(--red); text-decoration: none; }

h1, h2, h3, h4 {
  font-family: 'Fraunces', Georgia, serif;
  color: var(--ink);
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: -.01em;
  margin: 0 0 .5em;
}
h1 { font-size: clamp(2.6rem, 6vw, 4.6rem); font-weight: 600; }
h2 { font-size: clamp(2rem, 4vw, 3rem); }
h3 { font-size: clamp(1.3rem, 2.2vw, 1.7rem); }
p { margin: 0 0 1.1em; }

/* ---- Layout helpers ---- */
.container { max-width: var(--container); margin: 0 auto; padding: 0 28px; }
.section { padding: clamp(64px, 9vw, 120px) 0; }
.section--paper2 { background: var(--paper-2); }
.section--ink { background: var(--ink); color: #D2D2D7; }
.section--ink h2, .section--ink h3 { color: #fff; }
.section--ink .pullquote { color: #fff; }
.section--ink .eyebrow { color: #F3B7B9; }
.center { text-align: center; }
.measure { max-width: 640px; }
.center .measure { margin-left: auto; margin-right: auto; }

/* Eyebrow label — recurring signature motif (small caps + red tick) */
.eyebrow {
  display: inline-flex; align-items: center; gap: .55rem;
  font-size: .75rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase;
  color: var(--red); margin: 0 0 1rem;
}
.eyebrow::before { content: ""; width: 26px; height: 2px; background: var(--red); display: inline-block; }
.center .eyebrow { justify-content: center; }

/* ---- Buttons ---- */
.btn {
  display: inline-flex; align-items: center; gap: .5rem;
  font-family: 'Hanken Grotesk', sans-serif; font-weight: 600; font-size: 1rem;
  padding: 15px 30px; border-radius: 14px; border: 1.5px solid transparent;
  cursor: pointer; transition: transform .25s var(--ease), background .25s, box-shadow .25s, color .25s;
}
.btn--primary { background: var(--red); color: #fff; box-shadow: 0 8px 22px rgba(184,41,47,.28); }
.btn--primary:hover { background: var(--red-deep); transform: translateY(-2px); box-shadow: 0 14px 30px rgba(184,41,47,.34); }
.btn--ghost { background: transparent; color: var(--ink); border-color: var(--ink); }
.btn--ghost:hover { background: var(--ink); color: var(--paper); transform: translateY(-2px); }
.btn--light { background: #fff; color: var(--ink); }
.btn--light:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.btn .arrow { transition: transform .25s var(--ease); }
.btn:hover .arrow { transform: translateX(4px); }

/* ---- Header / nav ---- */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(246,245,243,.88); backdrop-filter: saturate(1.2) blur(10px);
  border-bottom: 1px solid var(--line);
}
.nav { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 14px 28px; max-width: 1320px; margin: 0 auto; }
.nav__brand { display: flex; align-items: center; gap: .65rem; font-family: 'Fraunces', serif; font-weight: 600; font-size: 1.25rem; color: var(--ink); letter-spacing: -.01em; }
.nav__brand img { height: 42px; width: auto; }
.nav__menu { display: flex; align-items: center; gap: 2px; list-style: none; margin: 0; padding: 0; }
.nav__menu > li { position: relative; }
.nav__link {
  display: inline-flex; align-items: center; gap: .3rem;
  font-weight: 600; font-size: .95rem; color: var(--ink); padding: 10px 14px; border-radius: 8px;
  transition: background .2s, color .2s;
}
.nav__link:hover { background: var(--red-tint); color: var(--red-deep); }
.nav__link .caret { font-size: .6rem; opacity: .6; transition: transform .2s; }
.nav__menu > li:hover .caret, .nav__menu > li:focus-within .caret { transform: rotate(180deg); }

/* dropdowns */
.dropdown {
  position: absolute; top: calc(100% + 6px); left: 0; min-width: 240px;
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  box-shadow: var(--shadow-md); padding: 8px; list-style: none; margin: 0;
  opacity: 0; visibility: hidden; transform: translateY(6px); transition: all .22s var(--ease);
}
.nav__menu > li:hover .dropdown, .nav__menu > li:focus-within .dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
.dropdown a { display: block; padding: 9px 14px; border-radius: 8px; color: var(--ink-soft); font-size: .92rem; font-weight: 500; }
.dropdown a:hover { background: var(--paper-2); color: var(--red-deep); }
.nav__cta { display: flex; align-items: center; gap: .75rem; }
.nav__toggle { display: none; background: none; border: 0; cursor: pointer; padding: 8px; }
.nav__toggle span { display: block; width: 24px; height: 2px; background: var(--ink); margin: 5px 0; transition: .25s; }

/* ---- Hero (editorial, asymmetric) ---- */
.hero { position: relative; padding: clamp(56px, 8vw, 104px) 0 clamp(48px, 6vw, 84px); overflow: hidden; }
.hero__grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(28px, 5vw, 64px); align-items: center; }
.hero h1 .accent { color: var(--red); font-style: italic; }
.hero__lede { font-size: 1.2rem; color: var(--ink-soft); max-width: 30ch; }
.hero__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 1.8rem; }
.hero__media { position: relative; }
.hero__media { overflow: visible; }
.hero__media img { border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); aspect-ratio: 4/5; object-fit: cover; width: 100%; transition: transform .5s var(--ease); }
.hero__media:hover img { transform: scale(1.015); }
.hero__media::after { /* thin red offset frame — shifts subtly on hover */
  content: ""; position: absolute; inset: 16px -16px -16px 16px; border: 2px solid var(--red);
  border-radius: var(--radius-lg); z-index: -1; opacity: .35; transition: inset .45s var(--ease), opacity .45s;
}
.hero__media:hover::after { inset: 10px -10px -10px 10px; opacity: .55; }
.hero__chip {
  position: absolute; left: -10px; bottom: 22px; background: var(--card); border-radius: 14px;
  box-shadow: var(--shadow-md); padding: 14px 18px; display: flex; align-items: center; gap: 12px;
}
.hero__chip b { font-family: 'Fraunces', serif; color: var(--red); font-size: 1.6rem; line-height: 1; }
.hero__chip span { font-size: .82rem; color: var(--ink-mute); line-height: 1.2; }

/* ---- Stat line (open, editorial — no boxed banner) ---- */
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(20px, 3vw, 40px); border-top: 2px solid var(--ink); padding-top: clamp(18px, 2.6vw, 28px); }
.stat { text-align: left; padding-left: clamp(18px, 2.4vw, 30px); border-left: 1px solid var(--line); }
.stat:first-child { padding-left: 0; border-left: 0; }
@media (max-width: 980px) { .stat:nth-child(odd) { padding-left: 0; border-left: 0; } }
@media (max-width: 520px) { .stat { padding-left: 0; border-left: 0; } .stat + .stat { border-top: 1px solid var(--line); padding-top: 16px; } }
.stat__num { font-family: 'Fraunces', serif; font-size: clamp(2.4rem, 4vw, 3.5rem); color: var(--ink); font-weight: 600; line-height: 1; letter-spacing: -.01em; }
.stat__num .unit { color: var(--red); font-size: .55em; }
.stat__label { font-size: .88rem; color: var(--ink-mute); margin-top: .55rem; letter-spacing: .01em; max-width: 24ch; }

/* ---- Cards / program grid ---- */
.grid { display: grid; gap: 24px; }
.grid--3 { grid-template-columns: repeat(3, 1fr); }
.grid--2 { grid-template-columns: repeat(2, 1fr); }
.card {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); overflow: hidden;
  transition: transform .3s var(--ease), box-shadow .3s; display: flex; flex-direction: column;
}
.card:hover { transform: translateY(-5px); box-shadow: var(--shadow-md); }
.card__img { aspect-ratio: 16/10; object-fit: cover; width: 100%; }
.card__body { padding: 24px 24px 26px; display: flex; flex-direction: column; gap: .35rem; flex: 1; }
.card__body h3 { margin: 0; }
.card__link { margin-top: auto; font-weight: 700; font-size: .92rem; color: var(--red); display: inline-flex; gap: .4rem; align-items: center; padding-top: .6rem; }
.card__link .arrow { transition: transform .25s var(--ease); }
.card:hover .card__link .arrow { transform: translateX(4px); }

/* program card variant (no image, color block) */
.pcard { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 28px; transition: transform .3s var(--ease), box-shadow .3s, border-color .3s; }
.pcard:hover { transform: translateY(-5px); box-shadow: var(--shadow-md); border-color: var(--red); }
.pcard__tag { font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--red); }

/* ---- Split feature ---- */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 70px); align-items: center; }
.split img { border-radius: var(--radius-lg); box-shadow: var(--shadow-md); }
.split--flip .split__text { order: 2; }

/* ---- Quote ---- */
.pullquote { font-family: 'Fraunces', serif; font-size: clamp(1.5rem, 3vw, 2.3rem); font-weight: 500; font-style: italic; color: var(--ink); line-height: 1.3; max-width: 18ch; }
.pullquote--full { max-width: 22ch; margin: 0 auto; text-align: center; }
.quote-attr { font-family: 'Hanken Grotesk', sans-serif; font-style: normal; font-size: .95rem; font-weight: 600; color: var(--ink-mute); letter-spacing: .02em; margin-top: 1.2rem; display: block; }

/* ---- Rate card (Hire page) ---- */
.rate-tabs { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-bottom: 2.5rem; }
.rate-tab { font-weight: 600; font-size: .9rem; padding: 9px 18px; border-radius: 11px; border: 1.5px solid var(--line); background: var(--card); color: var(--ink-soft); }
.rate-table-wrap { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow-x: auto; -webkit-overflow-scrolling: touch; }
table.rates { min-width: 460px; }
.rate-table-head { padding: 22px 28px; border-bottom: 1px solid var(--line); display: flex; align-items: baseline; gap: .8rem; flex-wrap: wrap; }
.rate-table-head h3 { margin: 0; }
.rate-table-head .pill { font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--red-deep); }
table.rates { width: 100%; border-collapse: collapse; font-size: .98rem; }
table.rates th, table.rates td { padding: 14px 18px; text-align: left; border-bottom: 1px solid var(--line); }
table.rates thead th { font-family: 'Hanken Grotesk', sans-serif; font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-mute); font-weight: 700; background: var(--paper-2); }
table.rates td:first-child { font-weight: 600; color: var(--ink); }
table.rates td.price { font-family: 'Fraunces', serif; color: var(--red); font-weight: 600; white-space: nowrap; }
table.rates tr:last-child td { border-bottom: 0; }
.rate-note { font-size: .9rem; color: var(--ink-mute); padding: 18px 28px; background: var(--paper-2); border-top: 1px solid var(--line); }

.service-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px,1fr)); gap: 16px; }
.service { padding: 22px; border-radius: var(--radius); background: var(--card); border: 1px solid var(--line); }
.service .ico { font-size: 1.5rem; }
.service h4 { font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; font-size: 1rem; color: var(--ink); margin: .6rem 0 .25rem; }
.service p { font-size: .88rem; color: var(--ink-mute); margin: 0; }

/* steps */
.steps { counter-reset: step; display: grid; grid-template-columns: repeat(4,1fr); gap: 22px; }
.step { position: relative; padding-top: 12px; }
.step::before { counter-increment: step; content: counter(step); font-family: 'Fraunces', serif; font-size: 2.4rem; color: var(--red); opacity: .35; display: block; line-height: 1; }
.step h4 { font-family: 'Hanken Grotesk', sans-serif; font-size: 1.05rem; margin: .4rem 0 .25rem; color: var(--ink); }
.step p { font-size: .92rem; margin: 0; }

/* ---- CTA band ---- */
.cta-band { background: linear-gradient(135deg, var(--red), var(--red-deep)); color: #fff; border-radius: var(--radius-lg); padding: clamp(40px,6vw,72px); text-align: center; box-shadow: var(--shadow-lg); position: relative; overflow: hidden; }
.cta-band::after { content: ""; position: absolute; inset: 0; background: radial-gradient(600px 300px at 80% -20%, rgba(255,255,255,.16), transparent 60%); }
.cta-band h2 { color: #fff; position: relative; }
.cta-band p { color: rgba(255,255,255,.9); position: relative; max-width: 46ch; margin-inline: auto; }
.cta-band .btn { position: relative; }

/* ---- Footer ---- */
.site-footer { background: var(--ink); color: #C9C9CE; padding: 64px 0 28px; }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 36px; }
.site-footer h4 { color: #fff; font-family: 'Hanken Grotesk', sans-serif; font-size: .82rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; margin-bottom: 1rem; }
.site-footer a { color: #C9C9CE; font-size: .95rem; display: block; padding: 5px 0; }
.site-footer a:hover { color: #fff; }
.footer-brand img { height: 46px; margin-bottom: 1rem; }
.footer-brand p { font-size: .95rem; color: #9A9AA0; max-width: 32ch; }
.footer-bottom { border-top: 1px solid rgba(255,255,255,.12); margin-top: 44px; padding-top: 22px; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; font-size: .85rem; color: #8A8A90; }
.footer-bottom a { display: inline; color: #8A8A90; }
.social { display: flex; gap: 14px; }
.social a { font-size: .85rem; font-weight: 600; }

/* ---- Page header (interior pages) ---- */
.page-head { padding: clamp(48px,7vw,90px) 0 clamp(28px,4vw,48px); text-align: center; }
.page-head p { max-width: 56ch; margin: 1rem auto 0; color: var(--ink-soft); }

/* ---- Scroll reveal (progressive enhancement; safe if JS off) ---- */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.in, .no-js .reveal { opacity: 1; transform: none; }

/* staggered hero load */
.load > * { opacity: 0; transform: translateY(16px); animation: rise .8s var(--ease) forwards; }
.load > *:nth-child(1){ animation-delay:.05s } .load > *:nth-child(2){ animation-delay:.15s }
.load > *:nth-child(3){ animation-delay:.25s } .load > *:nth-child(4){ animation-delay:.35s }
@keyframes rise { to { opacity: 1; transform: none; } }

/* ---- Responsive ---- */
@media (max-width: 980px) {
  .hero__grid, .split, .grid--3, .grid--2, .footer-grid, .steps { grid-template-columns: 1fr; }
  .split--flip .split__text { order: 0; }
  .stats { grid-template-columns: repeat(2, 1fr); }
  .hero__media { max-width: 460px; margin: 0 auto; }
  .nav__menu { display: none; }
  .nav__toggle { display: block; }
  .nav.open .nav__menu {
    display: flex; flex-direction: column; align-items: stretch; gap: 2px;
    position: absolute; top: 100%; left: 0; right: 0; background: var(--paper);
    border-bottom: 1px solid var(--line); padding: 12px 20px 20px;
  }
  .nav.open .dropdown { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: 0; padding: 0 0 0 12px; }
}
@media (max-width: 520px) { .stats { grid-template-columns: 1fr; } }

/* ---- Accessibility: respect reduced motion (important for our audience) ---- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1 !important; transform: none !important; }
}
:focus-visible { outline: 3px solid var(--red); outline-offset: 2px; border-radius: 4px; }

/* ============================================================
   Micro-interactions / reactivity — sleek, restrained
   (all disabled under prefers-reduced-motion via the rule above)
   ============================================================ */
.nav__link { position: relative; }
.nav__link::after { content:""; position:absolute; left:14px; right:14px; bottom:5px; height:2px; background:var(--red); transform:scaleX(0); transform-origin:left; transition:transform .28s var(--ease); border-radius:2px; }
.nav__link:hover { background:transparent; color:var(--red-deep); }
.nav__link:hover::after { transform:scaleX(1); }

.card__img { transition: transform .55s var(--ease); }
.card:hover .card__img { transform: scale(1.05); }

.pcard { position:relative; overflow:hidden; }
.pcard::before { content:""; position:absolute; inset:0 0 auto 0; height:3px; background:var(--red); transform:scaleX(0); transform-origin:left; transition:transform .35s var(--ease); }
.pcard:hover::before { transform:scaleX(1); }

.service { transition: transform .3s var(--ease), box-shadow .3s, border-color .3s; }
.service:hover { transform: translateY(-4px); box-shadow: var(--shadow-sm); border-color: var(--red); }

.rate-tab { transition: all .2s var(--ease); cursor: pointer; }
.rate-tab:hover { border-color: var(--red); color: var(--red-deep); transform: translateY(-1px); }
/* Rate selector: selected state follows aria-selected. With JS off, every rate table shows and the tab row hides. */
.rate-tab[aria-selected="true"], .rate-tab[aria-selected="true"]:hover { background: var(--red); color: #fff; border-color: var(--red); }
html:not(.no-js) [data-rate-panel]:not(.is-active) { display: none; }
.no-js .rate-tabs { display: none; }
.no-js [data-rate-panel] + [data-rate-panel] { margin-top: 2.5rem; }
[data-rate-panel]:focus:not(:focus-visible) { outline: none; }

.btn:active { transform: translateY(0) scale(.985); }

.site-header { transition: box-shadow .3s var(--ease), background .3s; }
.site-header.scrolled { box-shadow: 0 6px 24px rgba(20,20,25,.08); }

/* footer + inline link underline reveal */
.site-footer a { position: relative; }
.footer-grid a:not(.btn)::after { content:""; position:absolute; left:0; bottom:2px; height:1px; width:100%; background:currentColor; transform:scaleX(0); transform-origin:left; transition:transform .25s var(--ease); opacity:.6; }
.footer-grid a:not(.btn):hover::after { transform:scaleX(1); }

/* ---- Audience pathways (wayfinding) ---- */
.pathways { display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px; } /* 5 cards, one row on desktop (was 4 + 1 loose) */
.pathway { display: flex; flex-direction: column; gap: .55rem; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 28px 24px 24px; position: relative; overflow: hidden; transition: transform .3s var(--ease), box-shadow .3s, border-color .3s; }
.pathway::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 3px; background: var(--red); transform: scaleX(0); transform-origin: left; transition: transform .35s var(--ease); }
.pathway:hover { transform: translateY(-5px); box-shadow: var(--shadow-md); border-color: var(--red); }
.pathway:hover::before { transform: scaleX(1); }
.pathway__ico { width: 46px; height: 46px; border-radius: 12px; display: grid; place-items: center; background: var(--red-tint); color: var(--red); font-size: 1.3rem; }
.pathway__q { font-family: 'Fraunces', serif; font-size: 1.2rem; color: var(--ink); font-weight: 600; line-height: 1.15; }
.pathway p { font-size: .9rem; color: var(--ink-mute); margin: 0; }
.pathway__link { margin-top: auto; font-weight: 700; font-size: .9rem; color: var(--red); display: inline-flex; gap: .4rem; align-items: center; padding-top: .5rem; }
.pathway__link .arrow { transition: transform .25s var(--ease); }
.pathway:hover .pathway__link .arrow { transform: translateX(4px); }
@media (max-width: 980px) { .pathways { grid-template-columns: repeat(2, 1fr); } .pathways > .pathway:nth-child(5):last-child { grid-column: 1 / -1; } }
@media (max-width: 520px) { .pathways { grid-template-columns: 1fr; } }

/* ---- Press / list rows ---- */
.press-row { display: grid; grid-template-columns: 120px 1fr auto; gap: 20px; align-items: center; padding: 20px 0; border-bottom: 1px solid var(--line); }
.press-row .outlet { font-family: 'Fraunces', serif; font-weight: 600; color: var(--red); font-size: 1.05rem; }
.press-row .headline { color: var(--ink); font-weight: 500; }
.press-row .date { color: var(--ink-mute); font-size: .85rem; white-space: nowrap; }
@media (max-width: 680px) { .press-row { grid-template-columns: 1fr; gap: 4px; } .press-row .date { order: -1; } }

/* ---- Give tiers ---- */
.give-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.give { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 26px 22px; text-align: center; transition: transform .3s var(--ease), box-shadow .3s, border-color .3s; }
.give:hover { transform: translateY(-5px); box-shadow: var(--shadow-md); border-color: var(--red); }
.give .amt { font-family: 'Fraunces', serif; font-size: 2rem; color: var(--red); font-weight: 600; }
.give p { font-size: .9rem; color: var(--ink-mute); margin: .4rem 0 0; }
@media (max-width: 820px) { .give-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 460px) { .give-grid { grid-template-columns: 1fr; } }

/* ---- Credibility: press strip, partner wordmarks, marquee names ---- */
.featured-label { text-align:center; font-size:.72rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--ink-mute); margin:0 0 1.3rem; }
.logos-strip { display:flex; flex-wrap:wrap; gap:18px 42px; justify-content:center; align-items:center; }
.logos-strip span { font-family:'Fraunces',serif; font-weight:600; font-size:1.15rem; color:var(--ink); opacity:.62; transition:opacity .25s; letter-spacing:.01em; }
.logos-strip span:hover { opacity:1; }
.partners-strip { display:flex; flex-wrap:wrap; gap:12px 34px; justify-content:center; align-items:center; }
.partners-strip span { font-family:'Hanken Grotesk',sans-serif; font-weight:700; letter-spacing:.08em; text-transform:uppercase; font-size:.82rem; color:var(--ink-mute); }
.names { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:16px; }
.name { padding:18px 20px; background:var(--card); border:1px solid var(--line); border-radius:var(--radius); transition:transform .3s var(--ease), box-shadow .3s, border-color .3s; }
.name:hover { border-color:var(--red); }
.name:hover { transform:translateY(-3px); box-shadow:var(--shadow-sm); }
.name b { font-family:'Fraunces',serif; font-size:1.12rem; color:var(--ink); display:block; line-height:1.2; }
.name span { font-size:.85rem; color:var(--ink-mute); }

/* ---- Gallery grid (dynamic event photos) ---- */
.measure { max-width:60ch; margin-inline:auto; }
.gallery-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:14px; }
.gallery-grid > .gtile:first-child { grid-column:span 2; }
.gtile { position:relative; margin:0; border-radius:var(--radius-lg); overflow:hidden; background:var(--paper-2); box-shadow:var(--shadow-sm); }
.gtile img { width:100%; height:100%; min-height:240px; object-fit:cover; display:block; transition:transform .6s var(--ease); }
.gtile:hover img { transform:scale(1.05); }
.gtile figcaption { position:absolute; inset:auto 0 0 0; padding:34px 16px 13px; font-size:.82rem; font-weight:600; color:#fff; background:linear-gradient(to top, rgba(20,18,22,.82), rgba(20,18,22,0)); opacity:0; transform:translateY(8px); transition:opacity .3s var(--ease), transform .3s var(--ease); }
.gtile:hover figcaption, .gtile:focus-within figcaption { opacity:1; transform:none; }
@media (max-width:640px){ .gallery-grid > .gtile:first-child { grid-column:span 1; } .gtile figcaption { opacity:1; transform:none; } }

/* ============ Cinematic homepage hero (full-bleed concert image) ============ */
.hero--cinematic { padding: 0; min-height: clamp(560px, 86vh, 820px); display: flex; align-items: center; }
.hero--cinematic .hero__bg { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.hero--cinematic .hero__bg img { width: 100%; height: 100%; object-fit: cover; object-position: center 30%; animation: heroKenBurns 16s ease-out forwards; }
@keyframes heroKenBurns { from { transform: scale(1.07); } to { transform: scale(1); } }
.hero--cinematic .hero__scrim { position: absolute; inset: 0; z-index: 1;
  background:
    linear-gradient(96deg, rgba(17,17,20,.95) 0%, rgba(17,17,20,.80) 34%, rgba(17,17,20,.44) 64%, rgba(17,17,20,.12) 100%),
    linear-gradient(0deg, rgba(17,17,20,.55) 0%, rgba(17,17,20,0) 32%);
}
.hero--cinematic .container { position: relative; z-index: 2; }
.hero--cinematic .hero__inner { max-width: 680px; padding: clamp(48px,8vw,80px) 0; }
.hero--cinematic .eyebrow { color: #F4B6B8; }
.hero--cinematic h1 { color: #fff; font-size: clamp(2.7rem, 6vw, 4.6rem); line-height: 1.02; letter-spacing: -.02em; margin-bottom: 1.1rem; }
.hero--cinematic h1 .accent { color: var(--red); }
.hero--cinematic .hero__lede { color: rgba(255,255,255,.9); max-width: 46ch; }
.hero--cinematic .hero__chip {
  left: auto; right: clamp(18px,4vw,52px); bottom: clamp(20px,4vw,44px); z-index: 3;
}
@media (max-width: 760px) {
  .hero--cinematic { min-height: clamp(480px, 82vh, 640px); }
  .hero--cinematic .hero__scrim { background: linear-gradient(180deg, rgba(17,17,20,.58) 0%, rgba(17,17,20,.82) 100%); }
  .hero--cinematic .hero__chip { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .hero--cinematic .hero__bg img { animation: none; transform: none; }
}

/* ============================================================
   v2 additions (2026-07) — career tracks, embeds, long-form text,
   donor wall, logo placeholders, small polish
   ============================================================ */

/* Mobile header: keep the brand on one line AND everything inside the viewport */
.nav__brand span { white-space: nowrap; font-size: clamp(.92rem, 3.4vw, 1.25rem); }
@media (max-width: 560px) {
  .nav { padding: 10px 16px; gap: .6rem; }
  .nav__brand { gap: .45rem; }
  .nav__brand img { height: 34px; }
  .nav__cta { gap: .5rem; }
  .nav__cta .btn { padding: 10px 16px; font-size: .88rem; }
  .nav__toggle { padding: 6px 4px; }
}

/* ---- Career tracks (Academy) ---- */
.tracks { display: grid; grid-template-columns: repeat(5, 1fr); gap: 16px; }
.track { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 24px 20px; position: relative; overflow: hidden; transition: transform .3s var(--ease), box-shadow .3s, border-color .3s; }
.track::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 3px; background: var(--red); transform: scaleX(0); transform-origin: left; transition: transform .35s var(--ease); }
.track:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: var(--red); }
.track:hover::before { transform: scaleX(1); }
.track__num { font-family: 'Fraunces', serif; font-size: 1.9rem; font-weight: 600; color: var(--red); opacity: .38; line-height: 1; display: block; }
.track h3 { font-size: 1.08rem; margin: .55rem 0 .3rem; }
.track p { font-size: .86rem; color: var(--ink-mute); margin: 0; }
@media (max-width: 1080px) { .tracks { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 680px) { .tracks { grid-template-columns: 1fr; } }

/* ---- Embedded tools (forms, calendar, documents) ---- */
.embed-frame { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow: hidden; }
.embed-frame iframe { display: block; width: 100%; border: 0; }
.embed-frame--form iframe { height: 760px; }
.embed-frame--calendar iframe { height: 640px; }
.embed-frame--doc iframe { aspect-ratio: 1024 / 1448; height: auto; }
.embed-frame--video-vert iframe { aspect-ratio: 9 / 16; height: auto; }
@media (max-width: 680px) { .embed-frame--calendar iframe { height: 520px; } .embed-frame--form iframe { height: 700px; } }

/* ---- Long-form text pages (policies, statements) ---- */
.prose { max-width: 760px; margin: 0 auto; }
.prose h2 { font-size: clamp(1.5rem, 2.6vw, 1.9rem); margin: 2.2em 0 .6em; }
.prose h2:first-child { margin-top: 0; }
.prose h3 { font-size: 1.15rem; margin: 1.8em 0 .5em; }
.prose ul { margin: 0 0 1.2em; padding-left: 1.25rem; }
.prose li { margin-bottom: .5em; }
.prose li::marker { color: var(--red); }
.prose .prose-meta { font-size: .9rem; color: var(--ink-mute); border-top: 1px solid var(--line); margin-top: 2.6rem; padding-top: 1.2rem; }

/* ---- JHET partner-logo placeholders ---- */
.logo-slots { display: flex; flex-wrap: wrap; gap: 18px; justify-content: center; }
.logo-slot { width: 180px; height: 92px; border: 1.5px dashed var(--line); border-radius: var(--radius); display: grid; place-items: center; color: var(--ink-mute); background: var(--card); }
.logo-slot span { font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; text-align: center; line-height: 1.5; opacity: .7; }

/* ---- Donor recognition (donor wall) ---- */
.tier-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; align-items: stretch; }
.tier { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 30px 26px; display: flex; flex-direction: column; transition: transform .3s var(--ease), box-shadow .3s, border-color .3s; }
.tier:hover { transform: translateY(-5px); box-shadow: var(--shadow-md); border-color: var(--red); }
.tier--featured { background: var(--ink); border-color: var(--ink); color: #D2D2D7; }
.tier--featured h3 { color: #fff; }
.tier--featured .tier__amt { color: #F4B6B8; }
.tier__level { font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--red); }
.tier--featured .tier__level { color: #F4B6B8; }
.tier__amt { font-family: 'Fraunces', serif; font-size: 2.1rem; font-weight: 600; color: var(--red); line-height: 1.1; margin: .35rem 0 .2rem; }
.tier__amt small { font-size: .95rem; font-weight: 500; color: var(--ink-mute); }
.tier--featured .tier__amt small { color: #9A9AA0; }
.tier ul { list-style: none; margin: 1rem 0 0; padding: 0; font-size: .92rem; }
.tier ul li { padding: .42rem 0 .42rem 1.5rem; position: relative; border-bottom: 1px dashed var(--line); }
.tier--featured ul li { border-bottom-color: rgba(255,255,255,.14); }
.tier ul li:last-child { border-bottom: 0; }
.tier ul li::before { content: "♪"; position: absolute; left: 0; color: var(--red); font-weight: 700; }
.tier--featured ul li::before { color: #F4B6B8; }
@media (max-width: 900px) { .tier-grid { grid-template-columns: 1fr; } }

.wall-group { margin-top: 3rem; }
.wall-group h3 { display: flex; align-items: baseline; gap: .8rem; }
.wall-group h3 .count { font-family: 'Hanken Grotesk', sans-serif; font-size: .8rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-mute); }
.wall-names { display: flex; flex-wrap: wrap; gap: 10px 26px; padding: 1.2rem 0 .4rem; border-top: 2px solid var(--ink); }
.wall-names span { font-family: 'Fraunces', serif; font-size: 1.08rem; color: var(--ink); }
.wall-empty { font-style: italic; font-family: 'Fraunces', serif; color: var(--ink-mute); font-size: 1.05rem; padding: 1.1rem 0 .3rem; }

/* ---- Video media block (program videos) ---- */
.video-media { position: relative; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-lg); }
.video-media video { display: block; width: 100%; height: auto; }

/* ---- Press archive rows ---- */
.press-archive .press-row { grid-template-columns: 150px 1fr auto; }
.press-archive .press-row .date { white-space: normal; }
.press-archive h3 { font-size: 1.3rem; color: var(--red); }
@media (max-width: 680px) { .press-archive .press-row { grid-template-columns: 1fr; } }

/* Body copy inside linked cards stays ink, not link-red */
a.pcard p, a.pcard h3, .pcard p { color: var(--ink-mute); }
a.pcard h3 { color: var(--ink); }

/* ============================================================
   v2 polish layer (2026-07) — small flourishes, all CSS-only,
   all cheap to render, all disabled under prefers-reduced-motion
   where they move. Duda-safe (plain CSS).
   ============================================================ */

/* Brand text selection */
::selection { background: var(--red); color: #fff; }
::-moz-selection { background: var(--red); color: #fff; }

/* Anchor targets clear the sticky header */
[id] { scroll-margin-top: 96px; }

/* Eyebrow tick becomes a subtle two-line staff — a quiet musical nod */
.eyebrow::before { box-shadow: 0 4px 0 0 rgba(184, 41, 47, .3); }

/* Inline text links: animated underline, not just a color change */
main p a:not(.btn):not(.card__link), main li a:not(.btn), .prose a {
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat; background-position: left 100%; background-size: 100% 1px;
  transition: background-size .25s var(--ease), color .2s;
  padding-bottom: 1px;
}
main p a:not(.btn):not(.card__link):hover, main li a:not(.btn):hover, .prose a:hover {
  color: var(--red-deep); background-size: 0% 1px; background-position: right 100%;
}

/* Staggered reveals: children of revealed groups arrive one after another.
   Keyframes with `backwards` fill: hidden pre-reveal state comes from the
   parent .reveal, and hover transitions keep working once settled. */
.grid.reveal.in > *, .stats.reveal.in > *, .pathways.reveal.in > *, .tracks.reveal.in > *,
.steps.reveal.in > *, .give-grid.reveal.in > *, .service-grid.reveal.in > *,
.tier-grid.reveal.in > *, .names.reveal.in > * {
  animation: riseIn .55s var(--ease) backwards;
}
@keyframes riseIn { from { opacity: 0; transform: translateY(14px); } }
.reveal.in > *:nth-child(2) { animation-delay: .08s; } .reveal.in > *:nth-child(3) { animation-delay: .16s; }
.reveal.in > *:nth-child(4) { animation-delay: .24s; } .reveal.in > *:nth-child(5) { animation-delay: .32s; }
.reveal.in > *:nth-child(6) { animation-delay: .4s; }  .reveal.in > *:nth-child(7) { animation-delay: .48s; }
.reveal.in > *:nth-child(8) { animation-delay: .56s; } .reveal.in > *:nth-child(n+9) { animation-delay: .62s; }

/* Rate tables: row focus on hover */
table.rates tbody tr { transition: background .2s; }
table.rates tbody tr:hover { background: var(--red-tint); }

/* Header slims down once you scroll */
.nav { transition: padding .3s var(--ease); }
.site-header.scrolled .nav { padding-top: 8px; padding-bottom: 8px; }

/* CTA bands carry a faint oversized note in the corner */
.cta-band::before {
  content: "♪"; position: absolute; right: -6px; bottom: -44px; z-index: 0;
  font-family: 'Fraunces', serif; font-size: 12rem; line-height: 1;
  color: rgba(255,255,255,.07); transform: rotate(14deg); pointer-events: none;
}

/* Footer motto */
.footer-motto { font-family: 'Fraunces', serif; font-style: italic; font-size: 1.05rem; color: #B9B9BF; margin: .2rem 0 0; }



/* ---- v3: line-icon system (replaces emoji; consistent on every device) ---- */
.pathway__ico svg, .service .ico svg {
  width: 22px; height: 22px; display: block;
  fill: none; stroke: currentColor; stroke-width: 1.7;
  stroke-linecap: round; stroke-linejoin: round;
}
.pathway__ico { color: var(--red); }
.service .ico { width: 42px; height: 42px; border-radius: 11px; display: grid; place-items: center; background: var(--red-tint); color: var(--red); }

/* ---- v3: skip link (visible only when focused) ---- */
.skip-link { position: fixed; left: 14px; top: -60px; z-index: 2147483646; background: var(--ink); color: #fff; font-weight: 700; font-size: .92rem; padding: 12px 20px; border-radius: 0 0 12px 12px; transition: top .2s var(--ease); }
.skip-link:focus-visible { top: 0; }

/* ---- v3: modern typography + smooth page transitions (progressive) ---- */
h1, h2, h3 { text-wrap: balance; }
p { text-wrap: pretty; }
.stat__num { font-variant-numeric: tabular-nums; }
@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }
  ::view-transition-old(root), ::view-transition-new(root) { animation-duration: .22s; }
}

/* ============================================================
   v3 wow layer — people photos, brick donor wall, motion craft
   ============================================================ */

/* ---- Team cards with portraits ---- */
.name--pic { display: flex; align-items: center; gap: 14px; }
.name__pic { width: 60px; height: 60px; border-radius: 50%; object-fit: cover; flex: none; box-shadow: 0 0 0 2px var(--card), 0 0 0 3.5px var(--line); transition: box-shadow .3s; }
.name--pic:hover .name__pic { box-shadow: 0 0 0 2px var(--card), 0 0 0 3.5px var(--red); }
.name__txt { min-width: 0; }

/* ---- Musicians portrait grid ---- */
.mgrid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; }
.mgrid--archives { grid-template-columns: repeat(4, 1fr); }
.mcard { margin: 0; position: relative; border-radius: var(--radius); overflow: hidden; background: var(--paper-2); box-shadow: var(--shadow-sm); }
.mcard img { width: 100%; aspect-ratio: 4/5; object-fit: cover; object-position: center 20%; transition: transform .55s var(--ease); }
.mcard:hover img { transform: scale(1.06); }
.mcard__home { display: block; font-family: 'Fraunces', serif; font-style: italic; font-weight: 400; font-size: .78rem; color: rgba(255,255,255,.85); margin-top: 1px; }
.mcard figcaption { position: absolute; inset: auto 0 0 0; padding: 30px 12px 10px; font-family: 'Fraunces', serif; font-size: .95rem; font-weight: 600; color: #fff; background: linear-gradient(to top, rgba(20,18,22,.78), rgba(20,18,22,0)); }
@media (max-width: 1080px) { .mgrid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 760px) { .mgrid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 480px) { .mgrid { grid-template-columns: repeat(2, 1fr); } }

/* ---- Donor wall: engraved plaques on a faint painted-brick wall ---- */
.wall-note { max-width: 640px; margin: 0 auto 2rem; text-align: center; font-size: .92rem; color: var(--ink-mute); font-style: italic; }
.wall-note strong { color: var(--red); font-style: normal; letter-spacing: .06em; text-transform: uppercase; font-size: .78rem; margin-right: .35rem; }
.wall-niche {
  position: relative; margin-top: 58px;
  background-image:
    radial-gradient(120% 90% at 50% 0%, rgba(120,96,60,0), rgba(104,86,58,.08) 62%, rgba(80,66,44,.18) 100%),
    radial-gradient(160% 70% at 50% 118%, rgba(70,56,36,.16), transparent 60%),
    linear-gradient(rgba(243,239,231,.26), rgba(243,239,231,.26)),
    url("../images/brick-wall.jpg?v=3");
  background-size: auto, auto, auto, auto, 840px 576px;
  border: 1px solid #D5CDBF; border-radius: calc(var(--radius-lg) + 6px);
  box-shadow: inset 0 2px 12px rgba(88,72,48,.14), inset 0 -2px 8px rgba(88,72,48,.08), var(--shadow-md);
  padding: clamp(30px, 4.5vw, 58px) clamp(22px, 4vw, 54px);
}
.wall-niche > * { position: relative; z-index: 1; }
/* Picture light perched above the wall (static; does not travel with scroll) */
.lamp-perch { position: absolute; top: -46px; left: 50%; transform: translateX(-50%); width: 300px; z-index: 3; pointer-events: none;
  filter: drop-shadow(0 10px 20px rgba(255,214,140,.5)); }
.lamp-perch svg { display: block; width: 100%; height: auto; }
/* Beam: a cone that arcs DOWN from the hood. It sits over the plaques but
   blends with soft-light, so metal warms and brightens while the dark
   engraved names keep their contrast (never washed out). */
.lamp-beam { position: absolute; top: 34px; left: 50%; transform: translateX(-50%);
  width: 1050px; max-width: 96%; height: min(1150px, calc(100% - 60px));
  z-index: 2; pointer-events: none;
  mix-blend-mode: soft-light;
  background: conic-gradient(at 50% 0%,
    transparent 36%, rgba(255,226,150,.62) 45%, rgba(255,240,190,.9) 50%,
    rgba(255,226,150,.62) 55%, transparent 64%);
  -webkit-mask-image: linear-gradient(180deg, #000 0%, rgba(0,0,0,.5) 62%, transparent 96%);
  mask-image: linear-gradient(180deg, #000 0%, rgba(0,0,0,.5) 62%, transparent 96%);
}
/* Faint direct tint so the cone reads on the pale wall (too low-alpha to
   affect plaque text) */
.lamp-beam::before { content: ""; position: absolute; inset: 0;
  background: conic-gradient(at 50% 0%,
    transparent 37%, rgba(255,222,140,.12) 46%, rgba(255,234,170,.17) 50%,
    rgba(255,222,140,.12) 54%, transparent 63%);
  -webkit-mask-image: linear-gradient(180deg, #000 0%, rgba(0,0,0,.5) 62%, transparent 96%);
  mask-image: linear-gradient(180deg, #000 0%, rgba(0,0,0,.5) 62%, transparent 96%);
}
/* Bright core right under the hood — fades out well before the first
   plaque row so it can never sit over a name */
.lamp-beam::after { content: ""; position: absolute; inset: 0 0 auto 0; height: 150px;
  mix-blend-mode: screen;
  background: radial-gradient(46% 100% at 50% 0%, rgba(255,246,214,.55), rgba(255,240,195,.18) 55%, transparent 78%);
}

.bricks { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; }
.tier-row { flex-basis: 100%; display: flex; align-items: center; justify-content: center; gap: 16px; margin: 34px 0 10px; }
.tier-row:first-child { margin-top: 26px; }
.tier-row .sign { position: relative; display: inline-flex; align-items: baseline; gap: 12px; padding: 13px 30px 15px; border-radius: 8px;
  background: linear-gradient(180deg, #FAF6EC 0%, #EFE9DA 70%, #E7E0CF 100%);
  border: 1px solid #D9D1BE;
  box-shadow: inset 0 1.5px 0 #FFFFFF, inset 0 -3px 4px rgba(140,118,72,.14), 0 3px 6px rgba(140,118,72,.2), 0 12px 22px rgba(140,118,72,.14); }
.tier-row .sign::after { content: ""; position: absolute; left: 16%; right: 16%; bottom: 7px; height: 3.5px; border-radius: 2px;
  background: var(--sign-metal, linear-gradient(90deg, #D8B356, #F3DC9C, #C79A38));
  box-shadow: inset 0 1px 1px rgba(255,255,255,.6), inset 0 -1px 1px rgba(90,60,10,.3), 0 1px 2px rgba(140,118,72,.3); }
.tier-row--gold .sign { --sign-metal: linear-gradient(90deg, #D8B356, #F7E7B2, #C79A38); }
.tier-row--silver .sign { --sign-metal: linear-gradient(90deg, #AFB4BF, #EDEFF4, #9CA1AD); }
.tier-row--bronze .sign { --sign-metal: linear-gradient(90deg, #C08347, #EFCB9C, #A66C33); }
.tier-row .sign span { font-family: 'Cinzel', serif; font-size: .76rem; font-weight: 700; letter-spacing: .3em; text-transform: uppercase; color: #6E5C3B; text-shadow: 0 1px 0 rgba(255,255,255,.85); }
.tier-row .sign em { font-style: normal; font-family: 'Hanken Grotesk', sans-serif; font-size: .68rem; letter-spacing: .08em; color: rgba(110,92,59,.7); }
.tier-row::before, .tier-row::after { content: ""; flex: 1; max-width: 110px; height: 1px; background: linear-gradient(90deg, transparent, rgba(60,50,35,.3)); align-self: center; }
.tier-row::after { background: linear-gradient(90deg, rgba(60,50,35,.3), transparent); }

.brick {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px;
  padding: 22px 30px 16px; border-radius: 8px; min-width: 205px; overflow: hidden;
  border: 1px solid rgba(60,45,15,.4);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.85), inset 0 -6px 10px rgba(60,40,0,.16), inset 0 8px 12px rgba(255,255,255,.28),
    0 2px 3px rgba(88,70,40,.4), 0 12px 22px rgba(88,70,40,.3);
  transition: transform .3s var(--ease), box-shadow .3s;
}
.brick::before { /* etched keyline */
  content: ""; position: absolute; inset: 7px; border-radius: 4px; pointer-events: none;
  border: 1px solid rgba(60,40,0,.3); box-shadow: 0 1px 0 rgba(255,255,255,.45);
}
.brick::after { /* live specular, driven by js/wall-light.js — screen blend = real glint */
  content: ""; position: absolute; inset: 0; border-radius: 8px; pointer-events: none;
  background:
    radial-gradient(34% 30% at var(--lx, 50%) var(--ly, 8%), rgba(255,252,238,.9), transparent 70%),
    radial-gradient(130% 110% at var(--lx, 50%) var(--ly, 8%), rgba(255,240,198,.5), rgba(255,240,198,.1) 46%, transparent 68%);
  mix-blend-mode: screen;
  opacity: var(--li, 0);
}
.js-lit .brick { filter: brightness(calc(.88 + .3 * var(--li, .5))) drop-shadow(calc(var(--sdx, 0) * 1px) calc(var(--sdy, 8) * 1px) 9px rgba(66,48,20,.38)); }
.brick:hover { transform: translateY(-4px); box-shadow:
  inset 0 1px 0 rgba(255,255,255,.85), inset 0 -6px 10px rgba(60,40,0,.16), inset 0 8px 12px rgba(255,255,255,.28),
  0 3px 5px rgba(88,70,40,.45), 0 20px 36px rgba(88,70,40,.36); }
.brick__name { position: relative; z-index: 1; font-family: 'Cinzel', 'Fraunces', serif; font-weight: 600; font-size: .98rem; line-height: 1.4; text-align: center; letter-spacing: .055em; }
.brick__plaque { position: relative; z-index: 1; background: none; border: 0; box-shadow: none; padding: 0;
  font-family: 'Cinzel', serif; font-size: .55rem; font-weight: 700; letter-spacing: .3em; text-transform: uppercase; opacity: .82; }

/* metal faces: smooth polished gradients + corner screws (no hatching) */
.brick--gold, .brick--silver, .brick--bronze { background-repeat: no-repeat; }
.brick--gold {
  background-image:
    radial-gradient(circle at 32% 32%, #FFF8DE 0%, #D9B75B 48%, #8A6B18 100%),
    radial-gradient(circle at 32% 32%, #FFF8DE 0%, #D9B75B 48%, #8A6B18 100%),
    radial-gradient(circle at 32% 32%, #FFF8DE 0%, #D9B75B 48%, #8A6B18 100%),
    radial-gradient(circle at 32% 32%, #FFF8DE 0%, #D9B75B 48%, #8A6B18 100%),
    radial-gradient(120% 160% at 28% -20%, rgba(255,252,235,.6), rgba(255,252,235,0) 55%),
    linear-gradient(168deg, #F7E7B2 0%, #EDCF7E 26%, #D8B254 46%, #C09630 60%, #DDBA5D 76%, #A98420 100%);
  background-position: 11px 11px, calc(100% - 16px) 11px, 11px calc(100% - 16px), calc(100% - 16px) calc(100% - 16px), 0 0, 0 0;
  background-size: 6px 6px, 6px 6px, 6px 6px, 6px 6px, auto, auto;
  border-color: #8A6B18;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.85), inset 0 -6px 10px rgba(60,40,0,.16), inset 0 8px 12px rgba(255,255,255,.28),
    0 2px 3px rgba(88,70,40,.4), 0 12px 22px rgba(88,70,40,.3), 0 0 30px rgba(238,192,105,.22);
}
.brick--gold .brick__name { color: #4A3A0C; text-shadow: 0 1px 0 rgba(255,248,215,.7), 0 -1px 1px rgba(70,50,0,.35); }
.brick--gold .brick__plaque { color: #5C4810; text-shadow: 0 1px 0 rgba(255,248,215,.55); }
.brick--silver {
  background-image:
    radial-gradient(circle at 32% 32%, #FFFFFF 0%, #C9CCD4 48%, #5E606A 100%),
    radial-gradient(circle at 32% 32%, #FFFFFF 0%, #C9CCD4 48%, #5E606A 100%),
    radial-gradient(circle at 32% 32%, #FFFFFF 0%, #C9CCD4 48%, #5E606A 100%),
    radial-gradient(circle at 32% 32%, #FFFFFF 0%, #C9CCD4 48%, #5E606A 100%),
    radial-gradient(120% 160% at 28% -20%, rgba(252,253,255,.65), rgba(252,253,255,0) 55%),
    linear-gradient(168deg, #F5F6FA 0%, #E0E2E9 26%, #BEC2CC 46%, #A4A8B4 60%, #CDD0D8 76%, #8D929F 100%);
  background-position: 11px 11px, calc(100% - 16px) 11px, 11px calc(100% - 16px), calc(100% - 16px) calc(100% - 16px), 0 0, 0 0;
  background-size: 6px 6px, 6px 6px, 6px 6px, 6px 6px, auto, auto;
  border-color: #767B88;
}
.brick--silver::before { border-color: rgba(35,38,48,.3); }
.brick--silver .brick__name { color: #34363E; text-shadow: 0 1px 0 rgba(255,255,255,.75), 0 -1px 1px rgba(20,22,30,.25); }
.brick--silver .brick__plaque { color: #45474F; text-shadow: 0 1px 0 rgba(255,255,255,.6); }
.brick--bronze {
  background-image:
    radial-gradient(circle at 32% 32%, #FFEBD0 0%, #C89058 48%, #6A431A 100%),
    radial-gradient(circle at 32% 32%, #FFEBD0 0%, #C89058 48%, #6A431A 100%),
    radial-gradient(circle at 32% 32%, #FFEBD0 0%, #C89058 48%, #6A431A 100%),
    radial-gradient(circle at 32% 32%, #FFEBD0 0%, #C89058 48%, #6A431A 100%),
    radial-gradient(120% 160% at 28% -20%, rgba(255,240,220,.55), rgba(255,240,220,0) 55%),
    linear-gradient(168deg, #F0D4B0 0%, #E0AE72 26%, #C2854A 46%, #A96F34 60%, #CE9A5D 76%, #8C5C22 100%);
  background-position: 11px 11px, calc(100% - 16px) 11px, 11px calc(100% - 16px), calc(100% - 16px) calc(100% - 16px), 0 0, 0 0;
  background-size: 6px 6px, 6px 6px, 6px 6px, 6px 6px, auto, auto;
  border-color: #7A5220;
}
.brick--bronze .brick__name { color: #3D2708; text-shadow: 0 1px 0 rgba(255,236,205,.6), 0 -1px 1px rgba(55,30,0,.3); }
.brick--bronze .brick__plaque { color: #4C3110; text-shadow: 0 1px 0 rgba(255,236,205,.5); }

/* hierarchy: size + type scale per tier */
.brick--gold { min-width: 276px; padding: 30px 40px 22px; }
.brick--gold .brick__name { font-size: 1.18rem; letter-spacing: .06em; }
.brick--silver { min-width: 228px; padding: 24px 32px 17px; }
.brick--silver .brick__name { font-size: .97rem; }
.brick--bronze { min-width: 194px; padding: 19px 26px 14px; }
.brick--bronze .brick__name { font-size: .88rem; }
@media (max-width: 640px) { .brick, .brick--gold, .brick--silver, .brick--bronze { min-width: calc(50% - 8px); } .brick--gold { min-width: 100%; } }

/* Scroll-driven reflection: the light band travels across each plaque as it
   moves through the viewport (Chrome/Safari; others keep the hover sweep). */

/* ---- Hero headline: masked line rise ---- */
.hline { display: block; overflow: hidden; padding-bottom: .14em; margin-bottom: -.14em; }
.hline > span { display: inline-block; transform: translateY(112%); animation: lineUp .85s var(--ease) forwards; }
.hline:nth-child(2) > span { animation-delay: .16s; }
@keyframes lineUp { to { transform: none; } }

/* ---- Cinematic hero: gentle scroll parallax (progressive) ---- */
@supports (animation-timeline: scroll()) {
  .hero--cinematic .hero__bg { inset: -48px 0 0 0; animation: heroDrift linear both; animation-timeline: scroll(); animation-range: 0vh 120vh; }
  @keyframes heroDrift { from { transform: translateY(0); } to { transform: translateY(48px); } }
}

/* ---- Equalizer bars (hero chip) ---- */
.eq { display: inline-flex; align-items: flex-end; gap: 2.5px; height: 20px; margin-right: 2px; }
.eq i { width: 3px; border-radius: 2px; background: var(--red); animation: eqBounce 1.15s ease-in-out infinite; }
.eq i:nth-child(1) { height: 45%; animation-delay: 0s; }
.eq i:nth-child(2) { height: 90%; animation-delay: .18s; }
.eq i:nth-child(3) { height: 60%; animation-delay: .36s; }
.eq i:nth-child(4) { height: 80%; animation-delay: .5s; }
@keyframes eqBounce { 0%, 100% { transform: scaleY(.55); } 50% { transform: scaleY(1); } }
.eq i { transform-origin: bottom; }

/* ---- Musician credits marquee ---- */
.marquee { overflow: hidden; padding: clamp(18px, 2.4vw, 26px) 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--paper); }
.marquee__track { display: flex; width: max-content; animation: marquee 60s linear infinite; }
.marquee__track span { font-family: 'Fraunces', serif; font-style: italic; font-size: clamp(1.1rem, 1.8vw, 1.4rem); color: var(--ink-mute); white-space: nowrap; padding-right: .5ch; }
.marquee:hover .marquee__track { animation-play-state: paused; }
.marquee__label { text-align: center; font-size: .72rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-mute); margin: 0 0 10px; }
@keyframes marquee { to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .marquee { display: none; } }

/* ---- Ink sections: film grain + oversized quote mark ---- */
.section--ink { position: relative; }
.section--ink > .container { position: relative; z-index: 1; }
.section--ink::after { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .045; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E"); }
.pullquote--full { position: relative; }
.pullquote--full::before { content: "\201C"; position: absolute; top: -.62em; left: 50%; transform: translateX(-50%); font-size: 3.2em; line-height: 1; color: var(--red); opacity: .35; font-style: normal; }


/* ---- Finesse: glossier primary buttons, deeper hero scrim ---- */
.btn--primary { background-image: linear-gradient(180deg, #C63238 0%, #B8292F 45%, #A82429 100%); box-shadow: inset 0 1px 0 rgba(255,255,255,.28), 0 8px 22px rgba(184,41,47,.28); }
.btn--primary:hover { background-image: linear-gradient(180deg, #B22A30 0%, #8C1F23 100%); }
.hero--cinematic .hero__scrim {
  background:
    linear-gradient(96deg, rgba(17,17,20,.95) 0%, rgba(17,17,20,.8) 34%, rgba(17,17,20,.44) 64%, rgba(17,17,20,.12) 100%),
    linear-gradient(0deg, rgba(17,17,20,.62) 0%, rgba(17,17,20,0) 36%),
    radial-gradient(120% 90% at 50% 120%, rgba(184,41,47,.14), transparent 60%);
}
/* fcards — flagship program features */
.fgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.fcard { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); overflow: hidden; display: flex; flex-direction: column; transition: transform .3s var(--ease), box-shadow .3s, border-color .3s; position: relative; }
.fcard::before { content:""; position:absolute; inset:0 0 auto 0; height:3px; background:var(--red); transform:scaleX(0); transform-origin:left; transition:transform .35s var(--ease); z-index:1; }
.fcard:hover { transform: translateY(-5px); box-shadow: var(--shadow-md); border-color: var(--red); }
.fcard:hover::before { transform: scaleX(1); }
.fcard__media { overflow: hidden; }
.fcard__media img { width: 100%; aspect-ratio: 16/10; object-fit: cover; transition: transform .55s var(--ease); }
.fcard:hover .fcard__media img { transform: scale(1.05); }
.fcard__body { padding: 24px 26px 26px; display: flex; flex-direction: column; gap: .4rem; flex: 1; }
.fcard__body h3 { margin: .15rem 0 .1rem; }
.fcard__body p { color: var(--ink-mute); font-size: .95rem; margin: 0 0 .6rem; }
.fcard__body .card__link { margin-top: auto; }
@media (max-width: 980px) { .fgrid { grid-template-columns: 1fr; } }


/* ---- Gradient & glass finesse (tasteful, site-wide) ---- */
.section--paper2 { background: linear-gradient(180deg, #EFEEEA 0%, #ECEBE8 40%, #E9E8E4 100%); }
.section--ink { background:
  radial-gradient(900px 420px at 85% -10%, rgba(184,41,47,.16), transparent 60%),
  linear-gradient(180deg, #1D1D21 0%, #18181B 100%); }
.pcard, .fcard, .card { background: linear-gradient(180deg, #FFFFFF 0%, #FCFBFA 100%); }
.hero--cinematic .hero__chip { background: rgba(255,255,255,.82); backdrop-filter: blur(10px) saturate(1.15); -webkit-backdrop-filter: blur(10px) saturate(1.15); border: 1px solid rgba(255,255,255,.55); }
.dropdown { background: rgba(255,255,255,.92); backdrop-filter: blur(12px) saturate(1.1); -webkit-backdrop-filter: blur(12px) saturate(1.1); }
.marquee { mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%); -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%); }
.site-footer { background:
  radial-gradient(700px 300px at 12% 0%, rgba(184,41,47,.12), transparent 60%),
  var(--ink); }
.cta-band { background: linear-gradient(135deg, #C63238 0%, var(--red) 42%, #93191E 100%); }
