/* Control Jiu Jitsu — local redesign.
 * Gym palette: charcoal, academy red, and warm white. Fonts and imagery are local.
 * Shared page primitives live here; home.css and pages.css own page composition.
 */
@font-face {
  font-family: "Barlow Condensed";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("assets/fonts/barlow-condensed-500-latin.woff2") format("woff2");
}

@font-face {
  font-family: "Barlow Condensed";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("assets/fonts/barlow-condensed-600-latin.woff2") format("woff2");
}

@font-face {
  font-family: "Barlow Condensed";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("assets/fonts/barlow-condensed-700-latin.woff2") format("woff2");
}

@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("assets/fonts/manrope-latin.woff2") format("woff2");
}

:root {
  --color-ink: #121313;
  --color-ink-raised: #1d1e1e;
  --color-ink-soft: #2a2c2b;
  --color-bone: #f5f2eb;
  --color-bone-muted: #c1c2bc;
  --color-bone-deep: #a1a49d;
  --color-danger: #ff6b60;
  --color-red: #d3332c;
  --color-red-bright: #ff7267;
  --color-red-deep: #b32d26;
  --color-focus: oklch(88% 0.14 88);
  --color-glass: oklch(20% 0.014 78 / 0.82);
  --color-glass-strong: oklch(16% 0.014 78 / 0.94);
  --color-wash: oklch(95% 0.018 90 / 0.08);
  --color-wash-heavy: oklch(95% 0.018 90 / 0.14);
  --color-rule: oklch(95% 0.018 90 / 0.18);
  --color-rule-dark: oklch(16% 0.014 78 / 0.16);
  --color-shadow: oklch(10% 0.012 78 / 0.36);
  --color-hero-scrim: oklch(14% 0.016 78 / 0.78);
  --color-hero-scrim-soft: oklch(14% 0.016 78 / 0.26);
  --color-transparent: transparent;

  --font-display: "Barlow Condensed", "Arial Narrow", sans-serif;
  --font-body: "Manrope", Arial, sans-serif;

  --text-2xs: 0.6875rem;
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-md: 1.125rem;
  --text-lg: 1.375rem;
  --text-xl: 1.75rem;
  --text-2xl: 2.25rem;
  --text-3xl: 3.5rem;
  --text-4xl: 5rem;
  --text-display: clamp(4.25rem, 11vw, 11rem);
  --text-display-s: clamp(3.4rem, 8.4vw, 8.5rem);

  --space-2xs: 0.25rem;
  --space-xs: 0.5rem;
  --space-sm: 0.75rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2rem;
  --space-2xl: 3rem;
  --space-3xl: 3.5rem;
  --space-4xl: 5rem;
  --space-5xl: 6rem;

  --page-gutter: clamp(1.25rem, 5vw, 5rem);
  --page-max: 80rem;
  --content-max: 44rem;

  --radius-sm: 0.125rem;
  --radius-md: 0.25rem;
  --radius-lg: 0.5rem;
  --radius-pill: 999rem;
  --rule-hair: 1px;
  --rule-thick: 0.375rem;
  --ring-width: 0.1875rem;
  --ring-offset: 0.1875rem;

  --dur-fast: 160ms;
  --dur-base: 220ms;
  --dur-slow: 420ms;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);

  --shadow-lift: 0 1.5rem 3.5rem var(--color-shadow);
  --shadow-tight: 0 0.75rem 2rem var(--color-shadow);
  --shadow-red: 0 0.75rem 2rem oklch(62% 0.2 27 / 0.32);
}

* { box-sizing: border-box; }

html,
body {
  min-width: 0;
  overflow-x: clip;
}

html { scroll-behavior: smooth; scroll-padding-top: 2rem; }

body {
  min-height: 100vh;
  margin: 0;
  background: var(--color-ink);
  color: var(--color-bone);
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: 1.55;
  text-rendering: optimizeLegibility;
}

::selection { background: var(--color-red); color: white; }

img,
svg,
video { display: block; max-width: 100%; }

a { color: inherit; text-decoration: none; }
button,
input,
select,
textarea { font: inherit; }
button,
a { -webkit-tap-highlight-color: var(--color-transparent); }
button { cursor: pointer; }

:focus-visible {
  outline: var(--ring-width) solid var(--color-focus);
  outline-offset: var(--ring-offset);
}

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

.placeholder-copy { color: var(--color-bone-muted); }

.noscript-nav {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  padding: var(--space-md) var(--page-gutter);
  background: var(--color-ink-soft);
  color: var(--color-bone);
  font-size: var(--text-xs);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.noscript-nav a { white-space: nowrap; }

.site-header { position: relative; z-index: 20; background: var(--color-bone); border-bottom: 1px solid #dfdfd5; }
.header-utility { background: #202222; border-bottom: 1px solid #303232; }
.header-utility__inner { max-width: calc(var(--page-max) + var(--page-gutter) * 2); margin: auto; padding: 9px var(--page-gutter); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 20px; color: #bfc0b9; font-size: 9px; letter-spacing: .16em; font-weight: 600; }
.header-utility__details { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 25px; }
.header-utility__details a { color: var(--color-bone); letter-spacing: .08em; }
.header-social { display: flex; align-items: center; gap: 16px; }
.header-social a { display: inline-flex; align-items: center; min-height: 24px; }
.header-social a:hover, .header-social a:focus-visible { color: var(--color-red-bright); }
.site-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 28px; max-width: calc(var(--page-max) + var(--page-gutter) * 2); min-height: 88px; margin: auto; padding: 12px var(--page-gutter); }
.brand { display: inline-flex; flex: none; flex-direction: column; align-items: center; gap: 8px; }
.brand-logo { width: 205px; height: auto; }
.brand-disciplines { color: #565b50; font-size: 9px; font-weight: 600; letter-spacing: .24em; line-height: 1; text-transform: uppercase; }
.site-nav { display: flex; align-items: center; gap: 30px; }
.site-nav__links { display: flex; align-items: center; gap: 25px; }
.site-nav__links a { font-size: 11px; font-weight: 700; color: #343a31; letter-spacing: .035em; padding: 12px 0; }
.site-nav__links a:hover, .site-nav__links a[aria-current="page"] { color: var(--color-red-deep); }
.site-nav__links a[aria-current="page"] { box-shadow: inset 0 -2px var(--color-red); }
.site-nav__actions { display: flex; align-items: center; }
.site-nav__cta { min-height: 43px; }
.footer__nav a, .footer__contact a { color: var(--color-bone-muted); font-size: 12px; }
.footer__nav a:hover, .footer__contact a:hover { color: var(--color-red-bright); }
.footer__statement .brand { padding: 18px; background: var(--color-bone); }
.skip-link { position: fixed; z-index: 100; top: -80px; left: 20px; padding: 12px 20px; background: var(--color-bone); color: var(--color-ink); font-size: 14px; font-weight: 700; }
.skip-link:focus { top: 10px; }
main:focus { outline: none; }
.button {
  display: inline-flex;
  gap: var(--space-xs);
  align-items: center;
  justify-content: center;
  min-height: 2.875rem;
  padding: 0.75rem 1.125rem;
  border: var(--rule-hair) solid var(--color-red);
  border-radius: var(--radius-sm);
  background: var(--color-transparent);
  color: var(--color-red-bright);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1;
  text-align: center;
  text-transform: uppercase;
  white-space: nowrap;
  transition: color var(--dur-base) var(--ease-out), background-color var(--dur-base) var(--ease-out), transform var(--dur-fast) var(--ease-out), border-color var(--dur-base) var(--ease-out);
}

.button:hover {
  border-color: var(--color-red-bright);
  background: var(--color-red-bright);
  color: var(--color-ink);
  transform: translateY(-0.125rem);
}

.button:active { transform: translateY(0); }
.button:disabled { cursor: not-allowed; border-color: var(--color-bone-deep); color: var(--color-bone-deep); }
.button--gold { background: var(--color-red); color: white; }
.button--gold:hover { background: #b82b25; border-color: #b82b25; color: white; }
.button--bone { border-color: var(--color-bone); color: var(--color-bone); }
.button--bone:hover { background: var(--color-bone); color: var(--color-ink); }
.button--full { width: 100%; }

.menu-toggle {
  display: none;
  width: 3rem;
  min-height: 3rem;
  padding: var(--space-sm);
  border: 1px solid #b8beb0;
  border-radius: var(--radius-sm);
  background: var(--color-transparent);
  color: var(--color-ink);
}

.menu-toggle span:not(.visually-hidden) {
  display: block;
  width: 100%;
  height: var(--rule-hair);
  margin-block: 0.27rem;
  background: currentColor;
}


.rule-thick {
  height: var(--rule-thick);
  margin: 0;
  border: 0;
  background: var(--color-red);
}

.section { padding: var(--space-5xl) var(--page-gutter); }
.section--bone { background: var(--color-bone); color: var(--color-ink); }
.section--ink { background: var(--color-ink); color: var(--color-bone); }
.section--raised { background: var(--color-ink-raised); color: var(--color-bone); }
.section--gold { background: var(--color-red); color: var(--color-ink); }

.container { width: min(100%, var(--page-max)); margin-inline: auto; }
.container--reading { width: min(100%, var(--content-max)); margin-inline: auto; }

.section-intro { max-width: 43rem; }
.section-intro > p:first-child,
.kicker,
.meta-label {
  margin: 0 0 var(--space-sm);
  color: var(--color-red-deep);
  font-size: var(--text-xs);
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.section--ink .section-intro > p:first-child,
.section--raised .section-intro > p:first-child,
.section--ink .kicker,
.section--raised .kicker,
.section--ink .meta-label,
.section--raised .meta-label { color: var(--color-red-bright); }

.section-title {
  max-width: 13ch;
  min-width: 0;
  margin: 0;
  color: inherit;
  font-family: var(--font-display);
  font-size: clamp(3rem, 6.2vw, 6.3rem);
  font-style: normal;
  font-weight: 700;
  line-height: 0.86;
  letter-spacing: -0.035em;
  text-transform: uppercase;
  overflow-wrap: anywhere;
}

.section-copy {
  max-width: 41rem;
  margin: var(--space-lg) 0 0;
  color: inherit;
  font-size: var(--text-md);
}

.section--ink .section-copy,
.section--raised .section-copy { color: var(--color-bone-muted); }

.section-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 0.82fr);
  gap: var(--space-3xl);
  align-items: end;
  margin-bottom: var(--space-3xl);
}

.section-head__aside { align-self: end; }
.section-head__aside p { margin: 0; color: inherit; font-size: var(--text-sm); }


.arrow-link {
  display: inline-flex;
  gap: var(--space-sm);
  align-items: center;
  color: var(--color-red-deep);
  font-size: var(--text-xs);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
}

.arrow-link::after { content: "→"; font-size: var(--text-md); transition: transform var(--dur-base) var(--ease-out); }
.arrow-link:hover::after,
.arrow-link:focus-visible::after { transform: translateX(0.25rem); }
.section--ink .arrow-link,
.section--raised .arrow-link { color: var(--color-red-bright); }

.contact-block h2,
.form-panel h2,
.article-card h2,
.profile-card h2 {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-style: normal;
  font-weight: 700;
  line-height: 0.9;
  letter-spacing: -0.02em;
  text-transform: uppercase;
}


.cta-band { display: flex; flex-wrap: wrap; gap: var(--space-xl); align-items: center; justify-content: space-between; }
.cta-band h2 { max-width: 12ch; margin: 0; font-family: var(--font-display); font-size: clamp(2.75rem, 5vw, 5rem); font-style: normal; font-weight: 700; line-height: 0.86; letter-spacing: -0.035em; text-transform: uppercase; }
.cta-band p { max-width: 32rem; margin: 0; color: var(--color-ink); }
.cta-band .button { flex: none; border-color: var(--color-ink); background: var(--color-ink); color: var(--color-bone); }
.cta-band .button:hover { background: var(--color-ink-soft); color: var(--color-bone); }

.page-hero {
  display: grid;
  align-items: end;
  min-height: 22rem;
  padding: 4.5rem var(--page-gutter);
  background: linear-gradient(115deg, #181a19, #232524);
}

.page-hero__inner { width: min(100%, var(--page-max)); margin-inline: auto; }
.page-hero p { max-width: 40rem; margin: var(--space-lg) 0 0; color: var(--color-bone-muted); font-size: var(--text-md); }
.page-hero h1 { max-width: 18ch; min-width: 0; margin: 0; font-family: var(--font-display); font-size: clamp(3.2rem, 6vw, 6.5rem); font-weight: 700; line-height: .94; letter-spacing: -.025em; text-transform: uppercase; overflow-wrap: break-word; }
.page-hero .kicker { color: var(--color-red-bright); }

.page-hero__nowrap { white-space: nowrap; }

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

.program-card,
.profile-card,
.article-card {
  display: flex;
  flex-direction: column;
  min-height: 20rem;
  padding: var(--space-xl);
  border: var(--rule-hair) solid var(--color-rule);
  background: var(--color-ink-raised);
}

.program-card {
  justify-content: space-between;
  transition: border-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}

.program-card:focus-within {
  border-color: var(--color-red);
  box-shadow: var(--shadow-red);
  transform: translateY(calc(var(--space-xs) * -1));
}

.program-card:hover {
  border-color: var(--color-red);
  box-shadow: var(--shadow-red);
  transform: translateY(calc(var(--space-xs) * -1));
}
.program-card__index { color: var(--color-red); font-size: var(--text-xs); font-weight: 800; letter-spacing: 0.13em; }
.program-card h2 { max-width: 10ch; margin: var(--space-4xl) 0 var(--space-md); font-family: var(--font-display); font-size: var(--text-2xl); font-style: normal; font-weight: 700; line-height: 0.88; letter-spacing: -0.02em; text-transform: uppercase; }
.program-card p { margin: 0; color: var(--color-bone-muted); font-size: var(--text-sm); }
.program-card .arrow-link { margin-top: var(--space-lg); }

.program-card--image {
  position: relative;
  isolation: isolate;
  overflow: clip;
}

.program-card--image::after {
  position: absolute;
  z-index: 1;
  inset: 0;
  background: linear-gradient(0deg, var(--color-ink), var(--color-hero-scrim-soft));
  content: "";
}

.program-card--image > :not(.program-card__photo) {
  position: relative;
  z-index: 2;
}

.program-card__photo {
  position: absolute;
  z-index: 0;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(0.72) contrast(1.08);
  transition: transform var(--dur-slow) var(--ease-out);
}
.program-card__photo--contain { object-fit: contain; }


.program-card--image:hover .program-card__photo { transform: scale(1.045); }

.value-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-lg); }
.value-card { padding: var(--space-xl); border: var(--rule-hair) solid var(--color-rule); background: var(--color-ink-raised); }
.value-card__icon { width: 2.25rem; height: 2.25rem; margin-bottom: var(--space-lg); color: var(--color-red); }
.value-card h3 { margin: 0 0 var(--space-md); font-family: var(--font-display); font-size: var(--text-xl); font-weight: 700; line-height: 0.9; letter-spacing: -0.01em; text-transform: uppercase; }
.value-card ul { display: grid; gap: var(--space-sm); margin: 0 0 var(--space-lg); padding: 0; list-style: none; }
.value-card li { position: relative; padding-left: var(--space-lg); color: var(--color-bone-muted); font-size: var(--text-sm); }
.value-card li::before { position: absolute; top: 0.6em; left: 0; width: 0.5rem; height: var(--rule-hair); background: var(--color-red); content: ""; }

.notice {
  display: flex;
  gap: var(--space-md);
  align-items: flex-start;
  margin-top: var(--space-2xl);
  padding: var(--space-lg);
  border-left: var(--rule-thick) solid var(--color-red);
  background: var(--color-wash);
}
.notice p { margin: 0; color: var(--color-bone-muted); font-size: var(--text-sm); }
.notice strong { color: var(--color-bone); }

.profile-card { min-height: 27rem; justify-content: flex-start; }
.profile-card__photo {
  position: relative;
  display: grid;
  place-items: center;
  aspect-ratio: 1;
  margin: calc(var(--space-xl) * -1) calc(var(--space-xl) * -1) var(--space-lg);
  overflow: hidden;
  border-bottom: var(--rule-hair) dashed var(--color-rule);
  background: linear-gradient(135deg, var(--color-ink-soft), var(--color-ink));
  color: var(--color-bone-deep);
  font-size: var(--text-xs);
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.profile-card__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center top; }

.profile-card:nth-child(3) .profile-card__photo img,
.profile-card:nth-child(9) .profile-card__photo img {
  object-fit: contain;
  background: var(--color-ink);
}

.profile-card:nth-child(7) .profile-card__photo img {
  object-fit: cover;
  object-position: center top;
}
.profile-card .meta-label { margin: 0 0 var(--space-xs); }
.profile-card h2 { margin: 0 0 var(--space-xs); font-family: var(--font-display); font-size: var(--text-xl); font-weight: 700; line-height: 0.9; text-transform: uppercase; }
.profile-card__role { margin: 0 0 var(--space-md); color: var(--color-red); font-size: var(--text-sm); font-weight: 700; }
.profile-card__role em { color: var(--color-red-bright); font-style: italic; }
.profile-card p:not(.meta-label):not(.profile-card__role) { margin: 0; color: var(--color-bone-muted); font-size: var(--text-sm); }
.profile-card__social { margin-top: auto; padding-top: var(--space-lg); color: var(--color-bone-deep); font-size: var(--text-2xs); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; border-top: var(--rule-hair) solid var(--color-rule); }

.article-card { justify-content: flex-end; min-height: 24rem; background: var(--color-ink-soft); }
.article-card:nth-child(2n) { background: var(--color-ink-raised); }
.article-card h2 { max-width: 12ch; margin-top: var(--space-4xl); }
.article-card p { margin: var(--space-md) 0 0; color: var(--color-bone-muted); font-size: var(--text-sm); }
.article-card .arrow-link { margin-top: var(--space-xl); }

.article-card--shot { position: relative; isolation: isolate; overflow: clip; }
.article-card--shot::after { position: absolute; z-index: 1; inset: 0; background: linear-gradient(0deg, var(--color-ink), var(--color-hero-scrim-soft)); content: ""; }
.article-card--shot > :not(.card-shot) { position: relative; z-index: 2; }
.card-shot { position: absolute; z-index: 0; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: top; }

.article { padding-block: var(--space-4xl); }
.article + .article { border-top: var(--rule-hair) solid var(--color-rule); }
.article__meta { color: var(--color-red); font-size: var(--text-xs); font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.article h2 { max-width: 15ch; margin: var(--space-md) 0 var(--space-lg); font-family: var(--font-display); font-size: clamp(2.5rem, 5vw, 4.5rem); font-style: normal; font-weight: 700; line-height: 0.88; letter-spacing: -0.03em; text-transform: uppercase; }
.article p { max-width: var(--content-max); margin: var(--space-md) 0 0; color: var(--color-bone-muted); }


.review-summary { display: flex; gap: var(--space-lg); align-items: center; padding: var(--space-lg) var(--space-xl); margin-bottom: var(--space-3xl); border: var(--rule-hair) solid var(--color-rule); background: var(--color-ink-raised); }
.review-summary__score { display: inline-flex; align-items: baseline; gap: 0.25rem; font-family: var(--font-display); font-size: var(--text-2xl); font-weight: 700; line-height: 1; color: var(--color-red); }
.review-summary__score-unit { color: var(--color-bone-muted); font-family: var(--font-body); font-size: var(--text-sm); font-weight: 700; }
.review-summary__detail p { margin: var(--space-xs) 0 0; color: var(--color-bone-muted); font-size: var(--text-sm); }
.stars { display: inline-flex; gap: 0.2rem; }
.star { width: 1.1rem; height: 1.1rem; }
.star--filled { fill: var(--color-red); }
.star--empty { fill: none; stroke: var(--color-bone-deep); stroke-width: 1.2px; }
.review-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-md); }
.review-card { display: flex; flex-direction: column; gap: var(--space-md); padding: var(--space-xl); border: var(--rule-hair) solid var(--color-rule); background: var(--color-ink-raised); }
.review-card__rating { display: block; width: 87px; height: 23px; object-fit: contain; }
.review-card__quote { margin: 0; color: var(--color-bone-muted); font-size: var(--text-sm); }
.review-card__meta { margin: 0; color: var(--color-bone-deep); font-size: var(--text-xs); }
.review-card__meta strong { color: var(--color-bone); }

.schedule-filter { display: grid; gap: var(--space-sm); padding: var(--space-lg); margin-bottom: var(--space-2xl); border: var(--rule-hair) solid var(--color-rule); background: var(--color-ink-raised); }
.schedule-filter__label { margin: 0; color: var(--color-red); font-size: var(--text-xs); font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.schedule-filter__options { display: flex; flex-wrap: wrap; gap: var(--space-xs); }
.schedule-filter__button { padding: 0.65rem 0.85rem; border: var(--rule-hair) solid var(--color-rule); border-radius: var(--radius-sm); background: var(--color-ink); color: var(--color-bone-muted); font: inherit; font-size: var(--text-xs); font-weight: 700; cursor: pointer; transition: border-color var(--dur-base) var(--ease-out), background-color var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out); }
.schedule-filter__button:hover,
.schedule-filter__button:focus-visible { border-color: var(--color-bone-deep); color: var(--color-bone); }
.schedule-filter__button.is-active { border-color: var(--color-red); background: var(--color-red); color: var(--color-bone); }
.schedule-filter__status { margin: 0; color: var(--color-bone-deep); font-size: var(--text-xs); }
.schedule-class { display: block; }
.schedule-class[hidden] { display: none; }
.schedule-row.is-filtered-out { display: none; }

.schedule-grid { border-top: var(--rule-hair) solid var(--color-rule); }
.schedule-row { display: grid; grid-template-columns: minmax(7rem, 0.33fr) minmax(0, 1fr); gap: var(--space-xl); align-items: start; min-height: 9rem; padding-block: var(--space-xl); border-bottom: var(--rule-hair) solid var(--color-rule); }
.schedule-row h2 { margin: 0; color: var(--color-red); font-family: var(--font-display); font-size: var(--text-2xl); line-height: 0.8; text-transform: uppercase; }
.schedule-row p { max-width: 38rem; margin: 0; color: var(--color-bone-muted); }

.contact-layout { display: grid; grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.25fr); gap: var(--space-xl); align-items: start; }
.contact-block,
.form-panel { padding: clamp(1.5rem, 4vw, 3rem); border: var(--rule-hair) solid var(--color-rule); background: var(--color-ink-raised); }
.contact-block { min-height: 34rem; }
.contact-block > p { max-width: 26rem; margin: var(--space-lg) 0 0; color: var(--color-bone-muted); }
.contact-details { display: grid; gap: var(--space-lg); margin-top: var(--space-3xl); }
.contact-details div { padding-bottom: var(--space-lg); border-bottom: var(--rule-hair) solid var(--color-rule); }
.contact-details span { display: block; margin-bottom: var(--space-xs); color: var(--color-red); font-size: var(--text-xs); font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.contact-details a,
.contact-details p { margin: 0; color: var(--color-bone); font-size: var(--text-sm); }
.contact-details a:hover,
.contact-details a:focus-visible { color: var(--color-red-bright); }

.form-panel h2 { max-width: 15ch; }
.form-panel > p { margin: var(--space-md) 0 0; color: var(--color-bone-muted); font-size: var(--text-sm); }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-lg); margin-top: var(--space-2xl); }
.form-field { display: grid; gap: var(--space-xs); }
.form-field--full { grid-column: 1 / -1; }
.form-field label { color: var(--color-bone); font-size: var(--text-xs); font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.form-field input,
.form-field select,
.form-field textarea {
  width: 100%;
  min-height: 3.125rem;
  padding: var(--space-sm) var(--space-md);
  border: var(--rule-hair) solid var(--color-rule);
  border-radius: var(--radius-sm);
  background: var(--color-ink);
  color: var(--color-bone);
  transition: border-color var(--dur-base) var(--ease-out), background-color var(--dur-base) var(--ease-out);
}
.form-field textarea { min-height: 8rem; resize: vertical; }
.form-field input::placeholder,
.form-field textarea::placeholder { color: var(--color-bone-deep); }
.form-field input:hover,
.form-field select:hover,
.form-field textarea:hover { border-color: var(--color-bone-deep); }
.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus { border-color: var(--color-red); }
.form-status { margin: var(--space-md) 0 0; padding: var(--space-md); border-left: var(--rule-thick) solid var(--color-red); background: var(--color-wash); color: var(--color-bone-muted); font-size: var(--text-sm); }
.form-note { margin: var(--space-md) 0 0; color: var(--color-bone-muted); font-size: var(--text-xs); }
.form-field__label { display: block; margin-bottom: var(--space-2xs); color: var(--color-bone); font-size: var(--text-xs); font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.form-check-group { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-xs) var(--space-lg); margin-top: var(--space-2xs); }
.form-field .form-check { display: flex; align-items: center; gap: var(--space-xs); color: var(--color-bone-muted); font-size: var(--text-sm); font-weight: 400; letter-spacing: normal; text-transform: none; }
.form-field .form-check input[type="checkbox"] { width: auto; min-height: 0; padding: 0; accent-color: var(--color-red); }

.site-footer { position: relative; padding: var(--space-4xl) var(--page-gutter) var(--space-xl); background: var(--color-ink); border-top: 1px solid var(--color-rule); }
.footer__top { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 0.65fr) minmax(0, 0.75fr); gap: var(--space-2xl); width: min(100%, var(--page-max)); margin-inline: auto; }
.footer__statement .brand { width: fit-content; margin-bottom: var(--space-xl); }
.footer__statement > p { max-width: 22rem; margin: 0; font-family: var(--font-display); font-size: var(--text-2xl); font-style: normal; font-weight: 700; line-height: 0.92; letter-spacing: -0.02em; text-transform: uppercase; }
.footer__nav,
.footer__contact { display: grid; align-content: start; gap: var(--space-sm); }
.footer__nav > span,
.footer__contact > span { margin-bottom: var(--space-xs); color: var(--color-red); font-size: var(--text-xs); font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.footer__contact p { margin: 0 0 var(--space-md); font-size: var(--text-sm); }
.footer__bottom { display: flex; flex-wrap: wrap; gap: var(--space-md); align-items: center; justify-content: space-between; width: min(100%, var(--page-max)); margin: var(--space-3xl) auto 0; padding-top: var(--space-lg); border-top: var(--rule-hair) solid var(--color-rule); }
.footer__bottom p { margin: 0; font-size: var(--text-2xs); }
.footer__social-links { display: flex; flex-wrap: wrap; gap: var(--space-md); align-items: center; }
.footer__social { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; margin: 0; color: var(--color-bone-muted); font-size: var(--text-2xs); font-weight: 700; letter-spacing: 0.04em; transition: color var(--dur-base) var(--ease-out); }
.footer__social:hover, .footer__social:focus-visible { color: var(--color-red-bright); }
.footer__social-icon { flex: none; width: 28px; height: 28px; }

@media (max-width: 72rem) {
  .site-nav__links { gap: var(--space-md); }
  .site-nav__links a { font-size: var(--text-2xs); }
  .site-nav__cta { padding-inline: var(--space-sm); font-size: var(--text-2xs); }
  .program-grid,
  .profile-grid,
  .blog-grid,
  .review-grid,
  .value-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 56rem) {
  .menu-toggle { display: block; }
  .site-nav { position: absolute; top: 100%; right: 0; left: 0; display: none; gap: var(--space-lg); padding: var(--space-lg) var(--page-gutter) var(--space-xl); border-bottom: 1px solid #cbd0c4; background: var(--color-bone); max-height: 75dvh; overflow-y: auto; box-shadow: 0 20px 25px #0003; }
  .site-nav.is-open { display: grid; }
  .site-nav__links { display: grid; gap: 0; border-top: 1px solid #d9ddd2; }
  .site-nav__links a { min-height: 3rem; display: flex; align-items: center; border-bottom: 1px solid #d9ddd2; font-size: var(--text-xs); }
  .site-nav__actions { width: 100%; }
  .site-nav__cta { flex: 1; width: auto; }
  .section-head,
  .contact-layout { grid-template-columns: minmax(0, 1fr); }
  .section-head { gap: var(--space-lg); }
  .footer__top { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .footer__statement { grid-column: 1 / -1; }
}

@media (max-width: 38rem) {
  .site-header__inner { min-height: 78px; }
  .brand-logo { width: 172px; }
  .brand-disciplines { font-size: 8px; letter-spacing: .18em; }
  .header-utility__details > span { display: none; }
  .header-utility__inner { font-size: 8px; letter-spacing: .1em; }
  .section { padding-block: var(--space-4xl); }
  .section-title { font-size: clamp(2.8rem, 15vw, 4.5rem); }
  .program-grid,
  .profile-grid,
  .blog-grid,
  .review-grid,
  .value-grid,
  .form-grid,
  .form-check-group { grid-template-columns: minmax(0, 1fr); }
  .form-field--full { grid-column: auto; }
  .schedule-row { grid-template-columns: minmax(0, 1fr); gap: var(--space-sm); }
  .review-summary { flex-direction: column; align-items: flex-start; gap: var(--space-sm); }
  .footer__top { grid-template-columns: minmax(0, 1fr); }
  .footer__statement { grid-column: auto; }
  .footer__bottom { align-items: flex-start; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *,
  *::before,
  *::after { transition-duration: 1ms; animation-duration: 1ms; animation-iteration-count: 1; }
}

/* Shared local-review refinements. */
.lead-fields { border: 0; margin: 0; padding: 0; min-width: 0; }
[id] { scroll-margin-top: 9rem; }
.form-panel .form-note a, [data-page="privacy"] .section a:not(.button) { text-decoration: underline; text-underline-offset: .2em; }
@media (max-width: 56rem) {
  .site-nav { background: #f2f0e9; opacity: 1; }
  .page-hero { padding-block: 2.5rem; }
  .section { padding-block: 3rem; }
}
