/* Academy visual redesign – scoped under .academy-shell */
.academy-shell {
  --ac-bg: var(--bg-1);
  --ac-body: var(--ac-bg);
  --ac-surface: var(--card);
  --ac-surface-alt: var(--bg-2);
  --ac-text: var(--text);
  --ac-muted: var(--muted);
  --ac-heading: var(--text);
  --ac-accent: var(--accent);
  --ac-accent-text: #fff;
  --ac-border: var(--border);
  --ac-hero-text: #fff;
  --ac-header-bg: var(--color-header-bg, var(--card));
  --ac-header-text: var(--color-header-text, var(--text));
  --ac-link: var(--accent);
  --ac-link-hover: var(--accent);
  --ac-focus: var(--accent);
  --ac-button-text: var(--ac-accent-text);
  --ac-overlay-color: #0a1220;
  --ac-overlay-opacity: 0.55;
  --ac-hero-h-desktop: 520px;
  --ac-hero-h-tablet: 420px;
  --ac-hero-h-mobile: 360px;
  --ac-hero-object-position: 50% 50%;
  --ac-hero-object-fit: cover;
  --ac-radius: var(--radius);
  --ac-btn-radius: var(--radius);
  --ac-gap: 1.25rem;
  --ac-max-width: 72rem;
  --ac-section-pad: 3.5rem;
}

/* —— Academy page context (isolates from global vibe canvas) —— */
body.academy-page {
  margin: 0;
  padding: 0;
  min-height: 100vh;
  min-height: 100dvh;
}

body.academy-page .academy-shell {
  position: relative;
  z-index: 2;
  min-height: 100vh;
  min-height: 100dvh;
  margin: 0;
  padding: 0;
  background: var(--ac-body, var(--ac-bg, var(--color-bg, var(--bg-1))));
}

/* Skip link must stay out of flow even when vibe rule forces position:relative on body children */
body.academy-page > .academy-skip,
body.has-vibe-page-background > .academy-skip {
  position: absolute;
  left: -9999px;
  top: 0;
  width: 1px;
  height: 1px;
  overflow: hidden;
  margin: 0;
  padding: 0;
  z-index: 100;
}
body.academy-page > .academy-skip:focus,
body.has-vibe-page-background > .academy-skip:focus {
  left: 1rem;
  top: 1rem;
  width: auto;
  height: auto;
  overflow: visible;
  padding: 0.75rem 1rem;
}

body.academy-page:not(.academy-inherit-vibe-background) .vibe-page-background,
body.academy-page:not(.academy-inherit-vibe-background) .vibe-page-background-overlay {
  display: none !important;
}

html.has-vibe-page-background body.academy-page:not(.academy-inherit-vibe-background),
html.has-vibe-page-background body.academy-page:not(.academy-inherit-vibe-background).app-shell {
  background: var(--ac-body, var(--ac-bg, var(--color-bg, var(--bg-1)))) !important;
  background-image: none !important;
  background-color: var(--ac-body, var(--ac-bg, var(--color-bg, var(--bg-1)))) !important;
}

.academy-topnav {
  top: 0;
  margin-top: 0;
  color: var(--ac-header-text, var(--color-header-text, var(--text)));
  background: var(--ac-header-bg, var(--color-header-bg, var(--surface-color, var(--card))));
  border-color: var(--ac-header-border, var(--ac-border, var(--border)));
}

.academy-topnav + main,
.academy-shell > main {
  margin-top: 0;
}

/* —— Admin design workspace —— */
.academy-design-admin {
  position: relative;
  z-index: 2;
  min-height: 100vh;
  background: var(--admin-page-bg, #f5f7f5);
  color: var(--admin-page-text, #17231b);
  margin: -1rem -1rem 0;
  padding: 1rem 1rem 3rem;
  border-radius: 0.75rem;
}
@media (min-width: 768px) {
  .academy-design-admin {
    margin: -2rem -2rem 0;
    padding: 2rem 2rem 3rem;
  }
}
html[data-theme-preset].dark .academy-design-admin,
html.dark .academy-design-admin {
  --admin-page-bg: #121816;
  --admin-page-text: #e8eee9;
  --admin-surface: #1a221d;
  --admin-border: #2f3b34;
  --admin-text: #e8eee9;
}

.academy-design-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem;
  border: 1px solid var(--admin-border, #ccd5ce);
  border-radius: 0.875rem;
  background: var(--admin-surface, #ffffff);
  color: var(--admin-text, #17231b);
  margin-bottom: 1.25rem;
}
.academy-design-actions .btn-primary,
.academy-design-actions a {
  min-height: 44px;
}
.setting-source {
  margin-top: 0.35rem;
  font-size: 0.75rem;
  color: var(--admin-muted, #5c6b61);
}
.setting-source code {
  font-size: 0.75rem;
}
.academy-field-dirty {
  display: inline-block;
  margin-left: 0.35rem;
  font-size: 0.7rem;
  color: #b45309;
  font-weight: 600;
}

/* —— Live preview miniature —— */
.academy-preview-viewport {
  max-height: 75vh;
  min-height: 36rem;
  overflow: auto;
  margin-inline: auto;
  border-radius: 0.875rem;
  border: 1px solid var(--admin-border, #ccd5ce);
  background: var(--admin-surface, #fff);
}
.academy-preview-frame {
  width: 100%;
  margin-inline: auto;
  transition: width 0.2s ease;
}
.academy-preview-page {
  min-height: 100%;
  background: var(--ac-body, var(--ac-bg));
  color: var(--ac-text);
}
.academy-preview-header {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--ac-border);
  background: var(--ac-header-bg);
  color: var(--ac-header-text);
}
.academy-preview-hero {
  position: relative;
  overflow: hidden;
  color: var(--ac-hero-text);
  display: flex;
  align-items: center;
  justify-content: center;
}
.academy-preview-hero__bg,
.academy-preview-hero__overlay {
  position: absolute;
  inset: 0;
}
.academy-preview-hero__content {
  position: relative;
  z-index: 2;
  padding: 1.5rem;
  width: 100%;
  max-width: 36rem;
  text-align: center;
}
.academy-preview-content {
  padding: 1.25rem 1rem 2rem;
  display: grid;
  gap: 1rem;
}
.academy-preview-card {
  border: 1px solid var(--ac-border);
  border-radius: var(--ac-radius);
  background: var(--ac-surface);
  padding: 1rem;
}
.academy-preview-card h4 {
  margin: 0 0 0.35rem;
  color: var(--ac-heading);
}
.academy-preview-card p {
  margin: 0;
  color: var(--ac-muted);
  font-size: 0.875rem;
}
.academy-preview-empty {
  border: 1px dashed var(--ac-border);
  border-radius: var(--ac-radius);
  padding: 1.5rem;
  text-align: center;
  background: var(--ac-surface-alt);
  color: var(--ac-muted);
}
.academy-preview-footer {
  border-top: 1px solid var(--ac-border);
  padding: 1rem;
  font-size: 0.8rem;
  color: var(--ac-muted);
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
}
.academy-preview-search {
  margin-top: 0.75rem;
  height: 2.5rem;
  border-radius: 0.5rem;
  border: 1px solid color-mix(in srgb, var(--ac-hero-text) 30%, transparent);
  background: color-mix(in srgb, #fff 12%, transparent);
}
.academy-preview-btn {
  display: inline-flex;
  margin-top: 0.75rem;
  padding: 0.5rem 0.85rem;
  border-radius: var(--ac-btn-radius);
  background: var(--ac-accent);
  color: var(--ac-button-text, var(--ac-accent-text));
  font-size: 0.8rem;
  font-weight: 600;
}
.academy-preview-link {
  color: var(--ac-link);
  text-decoration: underline;
}
.academy-preview-swatches {
  display: flex;
  gap: 0.35rem;
  margin-top: 0.5rem;
}
.academy-preview-swatches span {
  width: 1.1rem;
  height: 1.1rem;
  border-radius: 0.25rem;
  border: 1px solid rgba(0,0,0,0.12);
}
.academy-danger-zone {
  border: 1px solid #fca5a5;
  background: #fef2f2;
  border-radius: 0.875rem;
  padding: 1rem;
  color: #7f1d1d;
}

.academy-skip {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100;
  padding: 0.75rem 1rem;
  background: var(--ac-accent);
  color: var(--ac-accent-text);
}
.academy-skip:focus {
  left: 1rem;
  top: 1rem;
}

.academy-container {
  width: 100%;
  max-width: var(--ac-max-width);
  margin-inline: auto;
  padding-inline: 1rem;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Hero */
.academy-hero {
  position: relative;
  overflow: hidden;
  min-height: var(--ac-hero-h-mobile);
  color: var(--ac-hero-text);
  display: flex;
}
@media (min-width: 640px) {
  .academy-hero { min-height: var(--ac-hero-h-tablet); }
}
@media (min-width: 1024px) {
  .academy-hero { min-height: var(--ac-hero-h-desktop); }
}

.academy-hero__background,
.academy-hero__overlay {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.academy-hero__content {
  position: relative;
  z-index: 2;
  width: 100%;
  display: flex;
}
.academy-hero__inner {
  width: 100%;
  display: flex;
  padding: 2.5rem 1rem;
}
.academy-hero__inner--center { align-items: center; justify-content: center; }
.academy-hero__inner--top { align-items: flex-start; justify-content: center; padding-top: 3rem; }
.academy-hero__inner--bottom { align-items: flex-end; justify-content: center; padding-bottom: 3rem; }

.academy-hero__content--left .academy-hero__inner { justify-content: flex-start; }
.academy-hero__content--right .academy-hero__inner { justify-content: flex-end; }
.academy-hero__content--left .academy-hero__copy { text-align: left; }
.academy-hero__content--center .academy-hero__copy { text-align: center; margin-inline: auto; }
.academy-hero__content--right .academy-hero__copy { text-align: right; margin-left: auto; }

.academy-hero__copy--narrow { max-width: 28rem; }
.academy-hero__copy--medium { max-width: 40rem; }
.academy-hero__copy--wide { max-width: 56rem; }
.academy-hero__copy--shadow {
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.45);
}
.academy-hero__text-bg--subtle { padding: 1.25rem; background: rgba(0,0,0,0.18); border-radius: var(--ac-radius); }
.academy-hero__text-bg--glass { padding: 1.25rem; background: rgba(255,255,255,0.08); backdrop-filter: blur(10px); border-radius: var(--ac-radius); border: 1px solid rgba(255,255,255,0.15); }
.academy-hero__text-bg--solid { padding: 1.25rem; background: color-mix(in srgb, var(--ac-overlay-color) 85%, transparent); border-radius: var(--ac-radius); }

.academy-hero__image {
  width: 100%;
  height: 100%;
  object-fit: var(--ac-hero-object-fit);
  object-position: var(--ac-hero-object-position);
  display: block;
}
.academy-hero__gradient,
.academy-hero__color {
  width: 100%;
  height: 100%;
}
.academy-hero__gradient {
  background:
    radial-gradient(120% 80% at 10% 0%, color-mix(in srgb, var(--ac-accent) 35%, transparent), transparent 55%),
    linear-gradient(160deg, var(--ac-bg), color-mix(in srgb, var(--ac-accent) 25%, var(--ac-bg)));
}

.academy-hero__overlay { pointer-events: none; }
.academy-hero__overlay--solid {
  background: color-mix(in srgb, var(--ac-overlay-color) calc(var(--ac-overlay-opacity) * 100%), transparent);
}
.academy-hero__overlay--vertical_gradient {
  background: linear-gradient(
    to bottom,
    color-mix(in srgb, var(--ac-overlay-color) calc(var(--ac-overlay-opacity) * 110%), transparent),
    color-mix(in srgb, var(--ac-overlay-color) calc(var(--ac-overlay-opacity) * 70%), transparent),
    var(--ac-bg)
  );
}
.academy-hero__overlay--horizontal_gradient {
  background: linear-gradient(
    to right,
    color-mix(in srgb, var(--ac-overlay-color) calc(var(--ac-overlay-opacity) * 100%), transparent),
    color-mix(in srgb, var(--ac-overlay-color) calc(var(--ac-overlay-opacity) * 40%), transparent)
  );
}
.academy-hero__overlay--radial_gradient {
  background: radial-gradient(
    circle at 50% 40%,
    color-mix(in srgb, var(--ac-overlay-color) calc(var(--ac-overlay-opacity) * 40%), transparent),
    color-mix(in srgb, var(--ac-overlay-color) calc(var(--ac-overlay-opacity) * 100%), transparent)
  );
}

.academy-hero__eyebrow {
  font-size: 0.75rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  opacity: 0.85;
  margin-bottom: 0.75rem;
}
.academy-hero__title {
  font-family: var(--font-heading);
  font-size: clamp(2.25rem, 6vw, 3.75rem);
  font-weight: 700;
  line-height: 1.1;
  margin: 0 0 1rem;
  color: inherit;
}
.academy-hero__subtitle {
  font-size: clamp(1rem, 2.2vw, 1.2rem);
  opacity: 0.92;
  margin: 0 0 1.5rem;
  line-height: 1.55;
}

.academy-hero__search {
  position: relative;
  margin: 0 auto 1.25rem;
  width: 100%;
}
.academy-hero__content--left .academy-hero__search { margin-left: 0; }
.academy-hero__content--right .academy-hero__search { margin-right: 0; }
.academy-hero__search-w--narrow { max-width: 22rem; }
.academy-hero__search-w--medium { max-width: 36rem; }
.academy-hero__search-w--wide { max-width: 48rem; }
.academy-hero__search-w--full { max-width: 100%; }
.academy-hero__search-icon {
  position: absolute;
  left: 1rem;
  top: 50%;
  transform: translateY(-50%);
  width: 1.25rem;
  height: 1.25rem;
  opacity: 0.7;
  pointer-events: none;
}
.academy-hero__search-input {
  width: 100%;
  min-height: 48px;
  padding: 0.85rem 1rem 0.85rem 2.75rem;
  border-radius: var(--ac-btn-radius);
  font-size: 1rem;
  color: var(--ac-text);
  background: var(--ac-surface);
  border: 1px solid var(--ac-border);
}
.academy-hero__search--glass .academy-hero__search-input {
  background: rgba(255,255,255,0.12);
  border-color: rgba(255,255,255,0.22);
  color: var(--ac-hero-text);
  backdrop-filter: blur(10px);
}
.academy-hero__search--glass .academy-hero__search-input::placeholder { color: color-mix(in srgb, var(--ac-hero-text) 70%, transparent); }
.academy-hero__search--outlined .academy-hero__search-input { background: transparent; border-width: 2px; color: var(--ac-hero-text); }
.academy-hero__search--minimal .academy-hero__search-input { background: transparent; border: 0; border-bottom: 2px solid rgba(255,255,255,0.35); border-radius: 0; color: var(--ac-hero-text); }
.academy-hero__search-input:focus {
  outline: 2px solid var(--ac-accent);
  outline-offset: 2px;
}

.academy-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
  justify-content: inherit;
}
.academy-hero__content--center .academy-hero__actions { justify-content: center; }
.academy-hero__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0.65rem 1.25rem;
  border-radius: var(--ac-btn-radius);
  text-decoration: none;
  font-weight: 600;
}
.academy-hero__cta--primary { background: var(--ac-accent); color: var(--ac-accent-text); }
.academy-hero__cta--secondary { background: var(--ac-surface); color: var(--ac-text); }
.academy-hero__cta--outline { border: 2px solid currentColor; color: inherit; }
.academy-hero__cta--ghost { color: inherit; text-decoration: underline; }
.academy-hero__status { margin-top: 0.75rem; font-size: 0.8rem; opacity: 0.85; min-height: 1.2em; }

/* Sections */
.academy-section { padding-block: var(--ac-section-pad); }
.academy-section-pad--sm { padding-block: 1.5rem; }
.academy-section-pad--md { padding-block: var(--ac-section-pad); }
.academy-section-pad--lg { padding-block: calc(var(--ac-section-pad) * 1.35); }
.academy-section-bg--surface { background: color-mix(in srgb, var(--ac-surface) 88%, transparent); }
.academy-section-bg--alt { background: var(--ac-surface-alt); }
.academy-section-bg--accent_soft { background: color-mix(in srgb, var(--ac-accent) 12%, var(--ac-bg)); }
.academy-section__header { margin-bottom: 1.5rem; max-width: 40rem; }
.academy-section__title {
  font-family: var(--font-heading);
  font-size: clamp(1.4rem, 3vw, 1.85rem);
  color: var(--ac-heading);
  margin: 0 0 0.4rem;
}
.academy-section__subtitle { color: var(--ac-muted); margin: 0; line-height: 1.5; }
.academy-section__header--compact { margin-bottom: 0.75rem; }
.academy-empty { padding: 1.25rem; border: 1px dashed var(--ac-border); border-radius: var(--ac-radius); color: var(--ac-muted); }
.academy-empty--compact { padding: 1rem 1.15rem; max-width: 36rem; }
.academy-empty--building {
  padding: 1.75rem 1.5rem;
  max-width: 40rem;
  border-style: solid;
  background: color-mix(in srgb, var(--ac-surface) 70%, transparent);
}
.academy-empty--building .academy-section__title { margin-bottom: 0.5rem; }
.academy-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: 44px;
  padding: 0.65rem 1.25rem;
  border-radius: var(--ac-btn-radius, var(--ac-radius, 0.75rem));
  font-weight: 600;
  font-size: 0.95rem;
  text-decoration: none;
  border: 1px solid transparent;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}
.academy-button--primary {
  background: var(--ac-accent, var(--accent));
  color: var(--ac-accent-text, #fff);
}
.academy-button--primary:hover {
  filter: brightness(1.05);
}
.academy-button--primary:focus-visible {
  outline: 2px solid var(--ac-accent, var(--accent));
  outline-offset: 2px;
}
.academy-empty__admin { margin: 0.75rem 0 0; font-size: 0.875rem; }
.academy-empty__admin a { color: var(--ac-accent); text-decoration: underline; }
.academy-empty-hint,
.academy-hero__empty-hint {
  margin: 0.5rem 0 0;
  font-size: 0.8rem;
  opacity: 0.85;
  color: inherit;
}

/* Cards */
.academy-card-grid {
  display: grid;
  gap: var(--ac-gap);
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
  .academy-card-grid--classic,
  .academy-card-grid--text_only,
  .academy-card-grid--mixed { grid-template-columns: repeat(2, 1fr); }
  .academy-card-grid--editorial { grid-template-columns: 1fr; }
}
@media (min-width: 1024px) {
  .academy-card-grid--classic,
  .academy-card-grid--text_only { grid-template-columns: repeat(3, 1fr); }
  .academy-card-grid--mixed { grid-template-columns: repeat(3, 1fr); }
  .academy-card-grid--editorial { grid-template-columns: repeat(6, 1fr); }
  .academy-card-grid--editorial .academy-card--featured { grid-column: span 4; }
  .academy-card-grid--editorial .academy-card:not(.academy-card--featured) { grid-column: span 2; }
}
.academy-card-grid--horizontal,
.academy-card-grid--compact_list { grid-template-columns: 1fr; }

.academy-card {
  display: flex;
  flex-direction: column;
  color: var(--ac-text);
  background: var(--ac-surface);
  border: 1px solid var(--ac-border);
  border-radius: var(--ac-radius);
  overflow: hidden;
  transition: transform 0.2s var(--ease, ease), box-shadow 0.2s var(--ease, ease), border-color 0.2s ease;
}
.academy-card--horizontal { flex-direction: row; align-items: stretch; }
.academy-card--horizontal .academy-card__media { width: 38%; min-width: 7rem; }
.academy-card--compact_list { flex-direction: row; align-items: center; gap: 0.85rem; padding: 0.85rem 1rem; }
.academy-card--compact_list .academy-card__media { width: 4.5rem; border-radius: calc(var(--ac-radius) * 0.7); overflow: hidden; }
.academy-card--text_only { padding: 1.25rem; }
.academy-card__body { padding: 1.1rem 1.2rem 1.25rem; flex: 1; display: flex; flex-direction: column; gap: 0.4rem; }
.academy-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.35s var(--ease, ease);
}
.academy-card__media--16x9 { aspect-ratio: 16/9; }
.academy-card__media--4x3 { aspect-ratio: 4/3; }
.academy-card__media--3x2 { aspect-ratio: 3/2; }
.academy-card__media--1x1 { aspect-ratio: 1/1; }
.academy-card__icon {
  width: 2.5rem;
  height: 2.5rem;
  margin: 1.1rem 0 0 1.2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: calc(var(--ac-radius) * 0.8);
  background: color-mix(in srgb, var(--ac-accent) 16%, transparent);
  color: var(--ac-accent);
}
.academy-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  font-size: 0.7rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ac-muted);
}
.academy-card__title {
  font-size: 1.1rem;
  font-weight: 650;
  line-height: 1.3;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: var(--line-clamp, 2);
  -webkit-box-orient: vertical;
  overflow: hidden;
  color: var(--ac-heading);
}
.academy-card__excerpt {
  margin: 0;
  color: var(--ac-muted);
  font-size: 0.925rem;
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: var(--line-clamp, 2);
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.academy-card__footer {
  margin-top: auto;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
  font-size: 0.8rem;
  color: var(--ac-muted);
}
.academy-card__action { color: var(--ac-link); font-weight: 600; margin-left: auto; }

.academy-card-hover--lift:hover { transform: translateY(-3px); box-shadow: 0 12px 28px rgba(0,0,0,0.14); }
.academy-card-hover--zoom_image:hover .academy-card__media img { transform: scale(1.04); }
.academy-card-hover--border_accent:hover { border-color: color-mix(in srgb, var(--ac-accent) 55%, var(--ac-border)); }
.academy-card-hover--soft_glow:hover { box-shadow: 0 0 0 1px color-mix(in srgb, var(--ac-accent) 35%, transparent), 0 10px 30px rgba(0,0,0,0.12); }

.academy-card:focus-visible {
  outline: 2px solid var(--ac-accent);
  outline-offset: 3px;
}

/* Categories */
.academy-cat-grid {
  display: grid;
  gap: var(--ac-gap);
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
  .academy-cat-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
  .academy-cat-grid { grid-template-columns: repeat(3, 1fr); }
}
.academy-cat-grid--minimal {
  display: flex;
  gap: 0.65rem;
  overflow-x: auto;
  padding-bottom: 0.35rem;
  scroll-snap-type: x mandatory;
}
.academy-cat-grid--stack { grid-template-columns: 1fr; }
.academy-cat-grid--editorial { grid-template-columns: 1fr; }
@media (min-width: 900px) {
  .academy-cat-grid--editorial .academy-cat--editorial:nth-child(odd) { flex-direction: row; }
  .academy-cat-grid--editorial .academy-cat--editorial:nth-child(even) { flex-direction: row-reverse; }
  .academy-cat-grid--editorial .academy-cat--editorial { display: flex; align-items: stretch; }
  .academy-cat-grid--editorial .academy-cat__cover { width: 46%; }
}

.academy-cat {
  color: var(--ac-text);
  background: var(--ac-surface);
  border: 1px solid var(--ac-border);
  border-radius: var(--ac-radius);
  padding: 1.25rem;
  transition: border-color 0.2s ease, transform 0.2s ease;
}
.academy-cat:hover { border-color: color-mix(in srgb, var(--cat-accent, var(--ac-accent)) 45%, var(--ac-border)); }
.academy-cat:focus-visible { outline: 2px solid var(--ac-accent); outline-offset: 3px; }
.academy-cat__icon {
  width: 2.75rem;
  height: 2.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--ac-radius);
  background: color-mix(in srgb, var(--cat-accent, var(--ac-accent)) 16%, transparent);
  color: var(--cat-accent, var(--ac-accent));
  margin-bottom: 0.85rem;
}
.academy-cat__title { font-size: 1.15rem; font-weight: 650; margin: 0 0 0.35rem; color: var(--ac-heading); }
.academy-cat__desc { margin: 0 0 0.65rem; color: var(--ac-muted); font-size: 0.925rem; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.academy-cat__count { margin: 0; font-size: 0.8rem; color: var(--ac-muted); }
.academy-cat--minimal {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  padding: 0.7rem 0.95rem;
  white-space: nowrap;
  scroll-snap-align: start;
  flex: 0 0 auto;
}
.academy-cat--image {
  position: relative;
  min-height: 11rem;
  padding: 0;
  overflow: hidden;
  color: #fff;
}
.academy-cat__bg {
  position: absolute;
  inset: 0;
  background: color-mix(in srgb, var(--cat-accent, var(--ac-accent)) 35%, #111) center/cover no-repeat;
}
.academy-cat__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.72), rgba(0,0,0,0.2));
}
.academy-cat__body--on-image { position: relative; z-index: 1; padding: 1.25rem; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; }
.academy-cat__body--on-image .academy-cat__title,
.academy-cat__body--on-image .academy-cat__desc,
.academy-cat__body--on-image .academy-cat__count { color: #fff; }
.academy-cat--horizontal { display: grid; gap: 1rem; }
@media (min-width: 768px) {
  .academy-cat--horizontal { grid-template-columns: 1.2fr 1fr; align-items: center; }
}
.academy-cat__main { display: flex; gap: 0.85rem; align-items: flex-start; }
.academy-cat__samples { margin: 0; padding-left: 1.1rem; color: var(--ac-muted); font-size: 0.9rem; }
.academy-cat__cover img { width: 100%; height: 100%; object-fit: cover; display: block; min-height: 10rem; }

/* Audiences & paths */
.academy-audiences {
  display: grid;
  gap: var(--ac-gap);
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
  .academy-audiences { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
  .academy-audiences--cards { grid-template-columns: repeat(4, 1fr); }
}
.academy-audience-card {
  text-align: left;
  padding: 1.1rem;
  border-radius: var(--ac-radius);
  border: 1px solid var(--ac-border);
  background: var(--ac-surface);
  color: var(--ac-text);
  cursor: pointer;
  min-height: 44px;
}
.academy-audience-card[aria-pressed="true"] {
  border-color: var(--ac-accent);
  box-shadow: inset 0 0 0 1px var(--ac-accent);
}
.academy-audience-card__title { display: block; font-weight: 650; margin: 0.45rem 0 0.25rem; }
.academy-audience-card__blurb { display: block; font-size: 0.875rem; color: var(--ac-muted); line-height: 1.4; }
.academy-paths { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.85rem; }
.academy-path {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  padding: 1.1rem 1.2rem;
  border: 1px solid var(--ac-border);
  border-radius: var(--ac-radius);
  background: var(--ac-surface);
}
.academy-path__step {
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 999px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  background: color-mix(in srgb, var(--ac-accent) 18%, transparent);
  color: var(--ac-accent);
  flex-shrink: 0;
}
.academy-path__title { margin: 0 0 0.25rem; font-size: 1.05rem; }
.academy-path__blurb { margin: 0; color: var(--ac-muted); font-size: 0.925rem; }

.academy-home-cta {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  align-items: flex-start;
  justify-content: space-between;
  padding: 1.5rem;
  border-radius: var(--ac-radius);
  border: 1px solid var(--ac-border);
  background: var(--ac-surface);
}
@media (min-width: 768px) {
  .academy-home-cta { flex-direction: row; align-items: center; }
}
.academy-home-cta__btn { min-height: 44px; }

.academy-link-btn {
  background: none;
  border: 0;
  color: var(--ac-link);
  text-decoration: underline;
  cursor: pointer;
  min-height: 44px;
  padding: 0 0.25rem;
}
.academy-mark { background: color-mix(in srgb, var(--ac-accent) 35%, transparent); color: inherit; padding: 0 0.15em; border-radius: 0.2em; }

/* Article */
.academy-progress {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  z-index: 60;
  background: transparent;
  pointer-events: none;
}
.academy-progress__bar {
  height: 100%;
  width: 0;
  background: var(--ac-accent);
  transform-origin: left center;
}
@media (prefers-reduced-motion: reduce) {
  .academy-progress__bar { transition: none !important; }
  .academy-card, .academy-card__media img { transition: none !important; }
}

.academy-article {
  width: min(100%, var(--ac-max-width));
  margin: 0 auto;
  padding: 2rem 1rem 4rem;
}
.academy-article-w--narrow { max-width: 42rem; }
.academy-article-w--reading { max-width: 56rem; }
.academy-article-w--wide { max-width: 72rem; }
.academy-article-w--full { max-width: 100%; }

.academy-breadcrumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
  font-size: 0.875rem;
  color: var(--ac-muted);
  margin-bottom: 1.5rem;
}
.academy-breadcrumbs a { color: var(--ac-link); }

.academy-article__layout {
  display: grid;
  gap: 2rem;
}
@media (min-width: 1024px) {
  .academy-article--reading .academy-article__layout,
  .academy-article--sidebar .academy-article__layout {
    grid-template-columns: minmax(0, 1fr) 16rem;
  }
  .academy-article--handbook .academy-article__layout {
    grid-template-columns: 15rem minmax(0, 1fr);
  }
}
.academy-article__sidebar--sm { width: 12rem; }
.academy-article__sidebar--lg { width: 18rem; }
.academy-article__sidebar--desktop-only { display: none; }
@media (min-width: 1024px) {
  .academy-article__sidebar--desktop-only { display: block; }
}
.academy-toc--mobile { display: block; margin-bottom: 1.5rem; border: 1px solid var(--ac-border); border-radius: var(--ac-radius); padding: 0.75rem 1rem; }
@media (min-width: 1024px) {
  .academy-article--reading .academy-toc--mobile { display: none; }
}
.academy-toc--sticky { position: sticky; top: 5.5rem; }
.academy-toc ol { list-style: none; margin: 0; padding: 0; }
.academy-toc a { color: var(--ac-muted); text-decoration: none; font-size: 0.9rem; line-height: 1.35; display: inline-block; padding: 0.35rem 0; min-height: 44px; }
.academy-toc a:hover, .academy-toc a:focus-visible { color: var(--ac-link); }
.academy-toc__l3 { padding-left: 0.85rem; }
.academy-article__aside-label {
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ac-muted);
  margin: 0 0 0.65rem;
}
.academy-chapter-list { list-style: none; margin: 0; padding: 0; }
.academy-chapter-list a { display: block; padding: 0.55rem 0; color: var(--ac-muted); text-decoration: none; min-height: 44px; }
.academy-chapter-list .is-active a,
.academy-chapter-list a[aria-current="page"] { color: var(--ac-accent); font-weight: 600; }

.academy-article__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  font-size: 0.8rem;
  color: var(--ac-muted);
  margin-bottom: 0.75rem;
}
.academy-article__title {
  font-family: var(--font-heading);
  font-size: clamp(1.85rem, 4vw, 2.75rem);
  line-height: 1.15;
  margin: 0 0 0.85rem;
  color: var(--ac-heading);
}
.academy-article__summary {
  font-size: 1.1rem;
  line-height: 1.55;
  color: var(--ac-muted);
  margin: 0 0 1.5rem;
  max-width: 42rem;
}
.academy-article__hero-figure { margin: 0 0 1.75rem; border-radius: var(--ac-radius); overflow: hidden; }
.academy-article__hero-figure img { width: 100%; max-height: 28rem; object-fit: cover; display: block; }

.academy-article__prose { max-width: 42rem; }
.academy-article--editorial .academy-article__prose { max-width: 48rem; }
.academy-article__prose a { color: var(--ac-link); }
.academy-article__prose a:hover { color: var(--ac-link-hover); }

.academy-callout {
  border-left: 4px solid var(--ac-accent);
  background: color-mix(in srgb, var(--ac-accent) 8%, var(--ac-surface));
  border-radius: 0 var(--ac-radius) var(--ac-radius) 0;
  padding: 1rem 1.1rem;
  margin: 1.35rem 0;
}
.academy-callout--warning { border-left-color: var(--academy_color_warning, #b45309); }
.academy-callout--legal { border-left-color: #7c3aed; }
.academy-callout--practice { border-left-color: #0f766e; }
.academy-callout--checklist { border-left-color: #15803d; }
.academy-callout--next { border-left-color: var(--ac-accent); }
.academy-callout__label { font-size: 0.75rem; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 700; margin: 0 0 0.35rem; }

.academy-article-cta {
  margin-top: 2.5rem;
  padding: 1.35rem;
  border-radius: var(--ac-radius);
  border: 1px solid var(--ac-border);
  background: color-mix(in srgb, var(--ac-accent) 10%, var(--ac-surface));
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
@media (min-width: 768px) {
  .academy-article-cta--banner,
  .academy-article-cta--split { flex-direction: row; align-items: center; justify-content: space-between; }
}
.academy-article-cta h2 { margin: 0 0 0.35rem; font-size: 1.25rem; }
.academy-article-cta p { margin: 0; color: var(--ac-muted); }
.academy-article-cta__actions { display: flex; flex-wrap: wrap; gap: 0.65rem; }
.academy-article-cta--sticky_bottom {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 40;
  border-radius: 0;
  margin: 0;
  backdrop-filter: blur(12px);
}
.academy-article-cta--minimal { background: transparent; border-style: dashed; }

.academy-prevnext {
  display: grid;
  gap: 1rem;
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--ac-border);
}
@media (min-width: 768px) {
  .academy-prevnext { grid-template-columns: 1fr auto 1fr; align-items: start; }
  .academy-prevnext__next { text-align: right; }
}
.academy-prevnext a { color: var(--ac-text); text-decoration: none; }
.academy-prevnext span { display: block; font-size: 0.8rem; color: var(--ac-muted); }
.academy-prevnext strong { display: block; margin-top: 0.2rem; }
.academy-related { margin-top: 3rem; }
.academy-faq, .academy-glossary { margin-top: 2.5rem; }
.academy-faq__item { border: 1px solid var(--ac-border); border-radius: var(--ac-radius); padding: 0.85rem 1rem; margin-bottom: 0.65rem; background: var(--ac-surface); }
.academy-faq__item summary { cursor: pointer; font-weight: 600; min-height: 44px; display: flex; align-items: center; }
.academy-glossary dl { display: grid; gap: 0.85rem; }
.academy-glossary dt { font-weight: 700; }
.academy-glossary dd { margin: 0.2rem 0 0; color: var(--ac-muted); }

.academy-search-results { padding-block: 2rem; }

/* Print */
@media print {
  .academy-topnav,
  .academy-hero__background,
  .academy-hero__overlay,
  .academy-hero__search,
  .academy-hero__actions,
  .academy-progress,
  .academy-article-cta,
  .academy-related,
  .academy-prevnext,
  .academy-home-cta,
  footer,
  [x-cloak] { display: none !important; }
  .academy-article__prose, .academy-article__title, .academy-article__summary { color: #000 !important; }
  .academy-callout { border-color: #000; background: #f5f5f5; }
}

@media (max-width: 360px) {
  .academy-hero__title { font-size: 2rem; }
  .academy-container { padding-inline: 0.85rem; }
}
