/* ============================================================
   ACE² Lab — Site-Wide Editorial Typography & Design System
   Kyungpook National University (KNU)
   
   Design Principles:
   1. Editorial Calm      — whitespace & hairlines over heavy boxes
   2. Dual-Script Family  — Pretendard Variable for Korean + Latin glyphs
   3. Tone over Chroma    — slate neutrals with Deep Navy (#1e3a5f) accent
   4. 4px Rhythm          — strict modular scale and line height
   5. Academic Parity     — balanced visual weight for Co-PIs and research
   ============================================================ */

.ace2-pic {
  display: contents;
}

:root {
  /* Suppress al-folio core magenta (#b509ac) with Deep Academic Navy */
  --global-theme-color: #1e3a5f !important;
  --global-hover-color: #0f172a !important;
  --global-hover-text-color: #ffffff !important;

  --global-bg-color: #ffffff;
  --global-card-bg-color: #ffffff;
  --global-text-color: #334155;
  --global-text-color-light: #64748b;
  --global-divider-color: #e2e8f0;
  --global-code-bg-color: #f8fafc;

  /* Font Family SSOT */
  --font-editorial: var(--font-sans-body);
}

html {
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

html[data-theme="dark"] {
  /* Suppress al-folio core cyan (#2698ba) with Desaturated Steel Blue */
  --global-theme-color: #9db7d9 !important;
  --global-hover-color: #cbd5e1 !important;
  --global-hover-text-color: #0f172a !important;

  --global-bg-color: #1c1c1d;
  --global-card-bg-color: #23262b;
  --global-text-color: #cbd5e1;
  --global-text-color-light: #94a3b8;
  --global-divider-color: rgba(148, 163, 184, 0.16);
  --global-code-bg-color: #2a2e35;
}

/* ------------------------------------------------------------
   Global Reset & Typography
   ------------------------------------------------------------ */
body.fixed-top-nav {
  padding-top: 55px;
}

body,
html {
  font-family: var(--font-editorial);
  font-weight: 400;
  letter-spacing: -0.015em;
  word-break: keep-all;
  overflow-wrap: break-word;
  line-break: strict;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: var(--global-text-color);
}

/* Restore standard CSS color inheritance overridden by al_folio_core main.css
   (`p, h1..h6, em, div, li, span, strong { color: var(--global-text-color) }`)
   so nested [data-i18n] spans, strong/em tags, and inline wrappers inherit parent color. */
em,
div,
li,
span,
strong {
  color: inherit;
}

p {
  line-height: 1.7;
  margin-bottom: 1.25rem;
}

h1,
h2,
.ed-section__title,
.ed-hero-banner__title {
  font-family: var(--font-serif-editorial);
  letter-spacing: -0.015em;
  word-break: keep-all;
  font-weight: 500;
  color: var(--color-ink, var(--global-text-color));
}

h3,
h4,
h5 {
  font-family: var(--font-sans-body);
  letter-spacing: -0.015em;
  word-break: keep-all;
  font-weight: 600;
  color: var(--color-ink, var(--global-text-color));
}

h1 {
  font-size: 2.15rem;
  line-height: 1.25;
  margin-bottom: 1rem;
}

h2 {
  font-size: 1.55rem;
  line-height: 1.35;
  margin-top: 2rem;
  margin-bottom: 0.85rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--global-divider-color);
}

h3 {
  font-size: 1.15rem;
  line-height: 1.4;
  margin-top: 1.5rem;
  margin-bottom: 0.6rem;
}

/* Links */
a {
  color: var(--global-theme-color);
  text-decoration: none;
  transition:
    color 0.15s ease,
    border-color 0.15s ease;
}

a:hover {
  color: var(--global-hover-color);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ------------------------------------------------------------
   Navigation Bar & Header Refinements
   ------------------------------------------------------------ */
.navbar {
  border-bottom: 1px solid var(--global-divider-color);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease;
}

.navbar-brand {
  font-family: var(--font-editorial);
  font-weight: 700;
  letter-spacing: -0.025em;
  font-size: 1.15rem;
}

.nav-item .nav-link {
  font-family: var(--font-editorial);
  font-weight: 500;
  font-size: 0.92rem;
  letter-spacing: -0.01em;
  padding: 0.5rem 0.85rem !important;
  transition: color 0.15s ease;
}

/* Active Nav Indicator */
.nav-item.active .nav-link {
  font-weight: 600;
  color: var(--global-theme-color) !important;
}

/* ------------------------------------------------------------
   Hero & Welcome Section (Home Page)
   ------------------------------------------------------------ */
/* Pure-CSS backdrop: no raster watermark behind text (the former logo JPG
   bled through the overlay and collided with the title/affiliation lines).
   Base #0b1120 keeps every foreground token at WCAG AA+ in both themes. */

.ed-hero-banner {
  background-color: #11131a;
  background-image:
    radial-gradient(920px 380px at 102% 122%, rgba(243, 112, 33, 0.34), transparent 70%),
    radial-gradient(760px 320px at -5% -25%, rgba(180, 83, 9, 0.18), transparent 70%), linear-gradient(135deg, #0d111a 0%, #161412 58%, #23140b 100%);
  color: #ffffff;
  padding: 56px 44px 48px;
  border-radius: 14px;
  margin: 10px 0 32px 0;
  border: 1px solid rgba(246, 173, 85, 0.16);
  box-shadow: 0 14px 36px -8px rgba(15, 10, 5, 0.5);
  position: relative;
  overflow: hidden;
}

/* Hermès Orange & Champagne Gold signature stitch line along the top edge */
.ed-hero-banner::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 3px;
  background: linear-gradient(90deg, #d9530f 0%, #f37021 38%, #f6ad55 70%, rgba(246, 173, 85, 0) 100%);
}

.ed-hero-banner p {
  color: inherit;
}


.ed-hero-banner__label {
  font-family: var(--font-mono-meta);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #ffa05e;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
  margin-bottom: 14px;
}


.ed-hero-banner__title {
  font-family: var(--font-serif-editorial);
  font-size: clamp(2rem, 4vw, 2.95rem);
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.16;
  margin-bottom: 18px;
  color: #ffffff !important;
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.35);
  text-wrap: balance;
}


.ed-hero-banner__subtitle {
  font-family: var(--font-sans-body);
  font-size: 1.1rem;
  font-weight: 500;
  color: #ffffff !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
  line-height: 1.7;
  margin-bottom: 0;
  max-width: none;
  word-break: keep-all;
}

/* Legacy inline <span> English lines on other pages inherit the same high-contrast ink */
.ed-hero-banner__subtitle span {
  color: #ffffff !important;
}

.ed-hero-banner__subtitle-en {
  font-family: var(--font-sans-body);
  font-size: 0.98rem;
  font-weight: 500;
  letter-spacing: -0.005em;
  color: #ffffff !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
  line-height: 1.7;
  margin: 4px 0 0;
  max-width: none;
}


.ed-hero-banner__badges {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 24px;
}

.hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 14px;
  border-radius: 6px;
  font-family: var(--font-sans-body);
  font-size: 0.86rem;
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.3;
  background: rgba(255, 255, 255, 0.14);
  border: 1px solid rgba(255, 255, 255, 0.42);
  color: #ffffff !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}

.hero-badge span {
  color: #ffffff !important;
}

.hero-badge i {
  color: #ffa05e;
  font-size: 0.92em;
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3));
}

.ed-hero-banner__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 28px;
}

.hero-action-btn {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 44px;
  padding: 10px 20px;
  border-radius: 8px;
  font-family: var(--font-sans-body);
  font-size: 0.94rem;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: #ffffff !important;
  text-decoration: none !important;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease,
    transform 0.2s ease;
}

.hero-action-btn span,
.hero-action-btn i {
  color: #ffffff !important;
}

.hero-action-btn:focus-visible {
  outline: 2px solid #ff9248;
  outline-offset: 3px;
}

.hero-action-btn--primary {
  background: linear-gradient(135deg, #e05a14 0%, #b8410b 100%);
  border: 1px solid #f37021;
  color: #ffffff !important;
  box-shadow: 0 4px 16px rgba(243, 112, 33, 0.45);
}

.hero-action-btn--primary:hover {
  background: linear-gradient(135deg, #ea631c 0%, #c8490e 100%);
  border-color: #ffa05e;
  box-shadow: 0 6px 20px rgba(243, 112, 33, 0.55);
  transform: translateY(-1px);
}

.hero-action-btn--outline {
  background: rgba(255, 255, 255, 0.1);
  color: #ffffff !important;
  border: 1.5px solid rgba(255, 255, 255, 0.82);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
}

.hero-action-btn--outline:hover {
  background: rgba(243, 112, 33, 0.22);
  border-color: #ffa05e;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(243, 112, 33, 0.35);
}

@media (max-width: 576px) {
  
  .ed-hero-banner {
    padding: 40px 22px 32px;
  }

  .ed-hero-banner__subtitle {
    font-size: 1.04rem;
  }

  .ed-hero-banner__subtitle-en {
    font-size: 0.94rem;
  }
}

/* Sub-page variant (hero_banner.liquid variant="page"): same identity, less height */
.ed-hero-banner--page {
  padding: 3rem 1.5rem 2.25rem;
  margin-bottom: 28px;
}

.ed-hero-banner--page .ed-hero-banner__title {
  font-size: clamp(1.75rem, 3.2vw, 2.4rem);
  margin-bottom: 14px;
}

.ed-hero-banner--page .ed-hero-banner__subtitle {
  font-size: var(--fs-body);
}

.ed-hero-banner--page .ed-hero-banner__subtitle-en {
  font-size: var(--fs-body-sm);
}

html[data-lang="ko"] .ed-hero-banner--page .ed-hero-banner__subtitle-en {
  display: none !important;
}

.ed-hero-banner--page .ed-hero-banner__badges {
  margin-top: 20px;
}

a.hero-badge {
  color: #ffffff;
  text-decoration: none;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease;
}

a.hero-badge:hover,
a.hero-badge:focus-visible {
  color: #ffffff;
  background: rgba(255, 255, 255, 0.16);
  border-color: rgba(255, 255, 255, 0.6);
  text-decoration: none;
}

@media (max-width: 576px) {
  .ed-hero-banner--page {
    padding: 2.25rem 1.25rem 1.75rem;
  }
}

/* ------------------------------------------------------------
   Lab Mission & Dynamic Statistics Section
   ------------------------------------------------------------ */
.lab-mission-section {
  margin: 32px 0 44px;
  padding: 28px 32px;
  background: var(--global-code-bg-color, #f8fafc);
  border-radius: 12px;
  border: 1px solid var(--global-divider-color, #e2e8f0);
}

html[data-theme="dark"] .lab-mission-section {
  background: rgba(255, 255, 255, 0.03);
  border-color: rgba(255, 255, 255, 0.08);
}

.lab-mission-quote {
  border-left: 4px solid #d9530f;
  padding-left: 24px;
  margin-bottom: 32px;
}

html[data-lang="ko"] .lab-mission-quote__en {
  display: none !important;
}

html:not([data-lang="ko"]) .lab-mission-quote__ko {
  display: none !important;
}

.lab-mission-quote__en {
  font-family: var(--font-serif-editorial);
  font-size: clamp(1.3rem, 2.2vw, 1.5rem);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: -0.01em;
  color: var(--color-ink, var(--global-text-color));
  margin-bottom: 10px;
  text-wrap: pretty;
}

.lab-mission-quote__ko {
  font-family: var(--font-sans-body);
  font-size: 1.02rem;
  color: var(--global-text-color);
  line-height: 1.7;
  margin-bottom: 0;
  word-break: keep-all;
}

.lab-stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
}

@media (max-width: 520px) {
  .lab-stats-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }
}

.lab-stat-card {
  padding: 20px 22px;
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--global-divider-color, #e2e8f0);
  border-radius: 8px;
  transition:
    transform 0.2s ease,
    box-shadow 0.2s ease;
}

html[data-theme="dark"] .lab-stat-card {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.08);
}

.lab-stat-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

.lab-stat-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 10px;
  background: rgba(217, 83, 15, 0.1);
  border: 1px solid rgba(217, 83, 15, 0.2);
  font-size: 1.38rem;
  color: #d9530f;
  margin-bottom: 12px;
}

html[data-theme="dark"] .lab-stat-card__icon {
  background: rgba(243, 112, 33, 0.14);
  border-color: rgba(243, 112, 33, 0.28);
  color: #ff9248;
}

.lab-stat-card__number {
  font-family: var(--font-mono-meta);
  font-size: 2.15rem;
  font-weight: 700;
  color: var(--color-ink, var(--global-text-color));
  line-height: 1.1;
  margin-bottom: 6px;
}

.lab-stat-card__label {
  font-family: var(--font-sans-body);
  font-size: 0.98rem;
  font-weight: 600;
  color: var(--color-ink, var(--global-text-color));
  letter-spacing: -0.01em;
  margin-bottom: 4px;
}

.lab-stat-card__desc {
  font-family: var(--font-sans-body);
  font-size: var(--fs-meta, 0.875rem);
  color: #475569;
  line-height: 1.5;
}

html[data-theme="dark"] .lab-stat-card__desc {
  color: #b6c2d1;
}

/* ------------------------------------------------------------
   Home Dual-Column Grid (News 5 : Selected Papers 7)
   ------------------------------------------------------------ */
.home-dual-grid {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 36px;
  margin: 44px 0 32px;
  align-items: start;
}

@media (max-width: 1024px) {
  .home-dual-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 36px;
  }
}

.home-dual-col--news,
.home-dual-col--papers,
.news-feed,
.selected-papers-block,
.news-feed-card,
.news-feed-card__body {
  min-width: 0;
}

.news-feed-card__body {
  overflow-wrap: anywhere;
}

.news-feed,
.selected-papers-block {
  display: flex;
  flex-direction: column;
}

.news-feed__header,
.selected-papers-block__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--global-divider-color, #e2e8f0);
  margin-bottom: 20px;
}

.news-feed__title,
.selected-papers-block__title {
  font-family: var(--font-serif-editorial);
  font-size: 1.35rem;
  font-weight: 600;
  margin: 0;
  padding-bottom: 0;
  border-bottom: 0; /* header row already draws the hairline */
  color: var(--color-ink, var(--global-text-color));
  display: flex;
  align-items: center;
  gap: 8px;
}

.news-feed__title i,
.selected-papers-block__title i {
  color: #d9530f;
  font-size: 1.05rem;
}

html[data-theme="dark"] .news-feed__title i,
html[data-theme="dark"] .selected-papers-block__title i {
  color: #ff9248;
}

.news-feed__all-link,
.selected-papers-block__all-link {
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 500;
  color: var(--global-theme-color);
  text-decoration: none !important;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: color 0.15s ease;
}

.news-feed__all-link:hover,
.selected-papers-block__all-link:hover {
  color: #d9530f;
}

html[data-theme="dark"] .news-feed__all-link:hover,
html[data-theme="dark"] .selected-papers-block__all-link:hover {
  color: #ff9248;
}

.news-feed__list {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.news-feed-card {
  padding: 14px 16px;
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--global-divider-color, #e2e8f0);
  border-radius: 8px;
  transition:
    transform 0.15s ease,
    border-color 0.15s ease;
}

html[data-theme="dark"] .news-feed-card {
  background: rgba(255, 255, 255, 0.03);
  border-color: rgba(255, 255, 255, 0.08);
}

.news-feed-card:hover {
  border-color: rgba(255, 77, 109, 0.4);
  transform: translateX(2px);
}

.news-feed-card__meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}

.news-feed-card__date {
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 500;
  color: var(--c-muted);
}

.news-badge-new {
  display: inline-block;
  padding: 1px 6px;
  background: var(--c-accent-fill);
  color: #ffffff;
  border-radius: 3px;
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.3;
}

.news-feed-card__body {
  font-family: var(--font-sans-body);
  font-size: var(--fs-body-sm);
  line-height: 1.55;
  color: var(--global-text-color);
  word-break: keep-all;
}

/* Selected Publications: drop the year heading (kills the empty gap above the list) */
.selected-papers-block .publications h2.bibliography {
  display: none !important;
}
.selected-papers-block .publications ol.bibliography {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

/* News cards: category accent (left border), badges, semantic highlights.
   Text/background pairs are chosen for >= 7:1 (AAA) in light and dark modes. */
.news-feed-card {
  --news-accent: var(--global-divider-color, #e2e8f0);
  border-left: 4px solid var(--news-accent);
  transition:
    transform 0.15s ease,
    border-color 0.15s ease,
    box-shadow 0.15s ease;
}
.news-feed-card--award {
  --news-accent: #b45309;
}
.news-feed-card--member {
  --news-accent: #1d4ed8;
}
.news-feed-card--honor {
  --news-accent: #7c3aed;
}
.news-feed-card--milestone {
  --news-accent: #047857;
}
html[data-theme="dark"] .news-feed-card--award {
  --news-accent: #fbbf24;
}
html[data-theme="dark"] .news-feed-card--member {
  --news-accent: #93c5fd;
}
html[data-theme="dark"] .news-feed-card--honor {
  --news-accent: #c4b5fd;
}
html[data-theme="dark"] .news-feed-card--milestone {
  --news-accent: #6ee7b7;
}
.news-feed-card:hover {
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.1);
}
html[data-theme="dark"] .news-feed-card:hover {
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.4);
}

.news-cat-badge {
  --cat-fg: #334155;
  --cat-bg: #f1f5f9;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 1px 8px;
  border: 1px solid currentColor;
  border-radius: 999px;
  background: var(--cat-bg);
  color: var(--cat-fg);
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.03em;
  line-height: 1.4;
}
.news-cat-badge i {
  font-size: 0.85em;
}
.news-cat-badge--award {
  --cat-fg: #78350f;
  --cat-bg: #fef3c7;
}
.news-cat-badge--member {
  --cat-fg: #1e3a8a;
  --cat-bg: #dbeafe;
}
.news-cat-badge--honor {
  --cat-fg: #4c1d95;
  --cat-bg: #ede9fe;
}
.news-cat-badge--milestone {
  --cat-fg: #064e3b;
  --cat-bg: #d1fae5;
}
html[data-theme="dark"] .news-cat-badge--award {
  --cat-fg: #fde68a;
  --cat-bg: rgba(251, 191, 36, 0.16);
}
html[data-theme="dark"] .news-cat-badge--member {
  --cat-fg: #bfdbfe;
  --cat-bg: rgba(147, 197, 253, 0.16);
}
html[data-theme="dark"] .news-cat-badge--honor {
  --cat-fg: #ddd6fe;
  --cat-bg: rgba(196, 181, 253, 0.16);
}
html[data-theme="dark"] .news-cat-badge--milestone {
  --cat-fg: #a7f3d0;
  --cat-bg: rgba(110, 231, 183, 0.16);
}

/* News category legend: mirrors .fac-loc-legend; tokens match the card accent + badge pairs above */
.news-cat-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 12px;
  margin: 0 0 var(--ed-s6, 1.5rem);
  padding: 10px 16px;
  border: 1px solid var(--global-divider-color, #e2e8f0);
  border-radius: 12px;
  background: var(--global-card-bg-color, #ffffff);
}

.news-cat-legend__title {
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--c-muted);
  margin-right: 4px;
}

.news-cat-legend__item {
  --lg-accent: #b45309;
  --lg-text: #78350f;
  --lg-bg: #fef3c7;
  --lg-border: rgba(180, 83, 9, 0.4);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 6px 4px 10px;
  border-radius: 999px;
  font-size: 0.875rem;
  font-weight: 600;
  background: var(--lg-bg);
  color: var(--lg-text);
  border: 1px solid var(--lg-border);
  white-space: nowrap;
}

.news-cat-legend__item[data-cat="member"] {
  --lg-accent: #1d4ed8;
  --lg-text: #1e3a8a;
  --lg-bg: #dbeafe;
  --lg-border: rgba(29, 78, 216, 0.4);
}

.news-cat-legend__item[data-cat="milestone"] {
  --lg-accent: #047857;
  --lg-text: #064e3b;
  --lg-bg: #d1fae5;
  --lg-border: rgba(4, 120, 87, 0.4);
}

.news-cat-legend__item[data-cat="honor"] {
  --lg-accent: #7c3aed;
  --lg-text: #4c1d95;
  --lg-bg: #ede9fe;
  --lg-border: rgba(124, 58, 237, 0.4);
}

html[data-theme="dark"] .news-cat-legend__item[data-cat="award"] {
  --lg-accent: #fbbf24;
  --lg-text: #fde68a;
  --lg-bg: rgba(251, 191, 36, 0.16);
  --lg-border: rgba(251, 191, 36, 0.4);
}

html[data-theme="dark"] .news-cat-legend__item[data-cat="member"] {
  --lg-accent: #93c5fd;
  --lg-text: #bfdbfe;
  --lg-bg: rgba(147, 197, 253, 0.16);
  --lg-border: rgba(147, 197, 253, 0.4);
}

html[data-theme="dark"] .news-cat-legend__item[data-cat="milestone"] {
  --lg-accent: #6ee7b7;
  --lg-text: #a7f3d0;
  --lg-bg: rgba(110, 231, 183, 0.16);
  --lg-border: rgba(110, 231, 183, 0.4);
}

html[data-theme="dark"] .news-cat-legend__item[data-cat="honor"] {
  --lg-accent: #c4b5fd;
  --lg-text: #ddd6fe;
  --lg-bg: rgba(196, 181, 253, 0.16);
  --lg-border: rgba(196, 181, 253, 0.4);
}

.news-cat-legend__dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--lg-accent);
}

.news-cat-legend__count {
  min-width: 22px;
  padding: 1px 7px;
  border-radius: 999px;
  text-align: center;
  font-family: var(--font-mono-meta);
  font-size: 0.875rem;
  font-weight: 700;
  background: var(--lg-accent);
  color: #ffffff;
}

html[data-theme="dark"] .news-cat-legend {
  background: rgba(255, 255, 255, 0.03);
  border-color: rgba(255, 255, 255, 0.08);
}

html[data-theme="dark"] .news-cat-legend__count {
  color: #0f172a;
}

/* Patent status pills (Publications > Patents): amber = registered, emerald = filed */
.ed-status-pill {
  --pill-fg: #78350f;
  --pill-bg: #fef3c7;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 1px 8px;
  border: 1px solid currentColor;
  border-radius: 999px;
  background: var(--pill-bg);
  color: var(--pill-fg);
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.03em;
  line-height: 1.4;
  white-space: nowrap;
  flex-shrink: 0;
  box-sizing: border-box;
}

.ed-status-pill i {
  font-size: 0.85em;
}

.ed-status-pill--filed {
  --pill-fg: #064e3b;
  --pill-bg: #d1fae5;
}

html[data-theme="dark"] .ed-status-pill--registered {
  --pill-fg: #fde68a;
  --pill-bg: rgba(251, 191, 36, 0.16);
}

html[data-theme="dark"] .ed-status-pill--filed {
  --pill-fg: #a7f3d0;
  --pill-bg: rgba(110, 231, 183, 0.16);
}

/* Conference presentation & Patent title-left pills (Publications > Patents / Conference Presentations):
   Content-hugging pills (fit-content) with flex layout so wrapped titles never tuck under the badge. */
.ed-entry__title--talk {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
}

.ed-entry__title-text {
  flex: 1 1 0%;
  min-width: 0;
}

.ed-entry__title--talk .ed-status-pill {
  margin-top: 1px;
}

.ed-talk-pill {
  --pill-fg: #78350f;
  --pill-bg: #fef3c7;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  margin-top: 1px;
  padding: 1px 8px;
  border: 1px solid currentColor;
  border-radius: 999px;
  background: var(--pill-bg);
  color: var(--pill-fg);
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.03em;
  line-height: 1.4;
  white-space: nowrap;
  flex-shrink: 0;
  box-sizing: border-box;
}

.ed-talk-pill i {
  font-size: 0.85em;
}

.ed-talk-pill--poster {
  --pill-fg: #064e3b;
  --pill-bg: #d1fae5;
}

.ed-talk-pill--invited,
.ed-talk-pill--award {
  --pill-fg: #9f1239;
  --pill-bg: #ffe4e6;
}

.ed-talk-pill--award {
  font-family: var(--font-sans-body);
  letter-spacing: -0.01em;
}

html[data-theme="dark"] .ed-talk-pill--oral {
  --pill-fg: #fde68a;
  --pill-bg: rgba(251, 191, 36, 0.16);
}

html[data-theme="dark"] .ed-talk-pill--poster {
  --pill-fg: #a7f3d0;
  --pill-bg: rgba(110, 231, 183, 0.16);
}

html[data-theme="dark"] .ed-talk-pill--invited,
html[data-theme="dark"] .ed-talk-pill--award {
  --pill-fg: #fda4af;
  --pill-bg: rgba(251, 113, 133, 0.18);
}

.ed-entry.is-filter-hidden,
.ed-rail__row.is-filter-empty {
  display: none !important;
}

.ed-rail__row.is-first-visible {
  border-top: 0;
  padding-top: var(--ed-s2);
}

@media (max-width: 575.98px) {
  .ed-entry__title--talk {
    flex-wrap: wrap;
    gap: 0.35rem;
  }

  .ed-entry__title--talk .ed-entry__title-text {
    flex: 1 1 100%;
  }

  .ed-entry__title--talk .ed-status-pill,
  .ed-talk-pill {
    margin-top: 0;
  }
}

.news-highlight-name {
  font-weight: 600;
  color: var(--color-ink, #0f172a);
}
html[data-theme="dark"] .news-highlight-name {
  color: #f1f5f9;
}
.news-highlight-award {
  padding: 0 4px;
  border-radius: 3px;
  background: #fef3c7;
  color: #78350f;
  font-weight: 600;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}
html[data-theme="dark"] .news-highlight-award {
  background: rgba(251, 191, 36, 0.18);
  color: #fde68a;
}

/* Per-locale news summaries: news_feed.liquid / news.md emit one span per language (Korean body is the static default) */
[data-news-lang]:not([data-news-lang="ko"]) {
  display: none;
}
html[data-lang="en"] [data-news-lang="ko"],
html[data-lang="ja"] [data-news-lang="ko"],
html[data-lang="zh"] [data-news-lang="ko"] {
  display: none;
}
html[data-lang="en"] [data-news-lang="en"],
html[data-lang="ja"] [data-news-lang="ja"],
html[data-lang="zh"] [data-news-lang="zh"] {
  display: inline;
}
.news-highlight-badge {
  display: inline-block;
  margin-top: 4px;
  padding: 1px 8px;
  border: 1px solid #b45309;
  border-radius: 999px;
  background: #fffbeb;
  color: #78350f;
  font-size: var(--fs-label);
  font-weight: 700;
  line-height: 1.5;
}
html[data-theme="dark"] .news-highlight-badge {
  border-color: #fbbf24;
  background: rgba(251, 191, 36, 0.12);
  color: #fde68a;
}
.news-degree {
  color: #475569;
  font-size: var(--fs-label);
  font-weight: 500;
}
html[data-theme="dark"] .news-degree {
  color: #cbd5e1;
}

/* ------------------------------------------------------------
   Research Pillar Cards (Projects & Overview)
   ------------------------------------------------------------ */
.research-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.75rem;
  margin: 1.5rem 0 3rem 0;
}

@media (min-width: 768px) {
  .research-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

.research-card {
  background: var(--global-card-bg-color);
  border: 1px solid var(--global-divider-color);
  border-radius: 12px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: 0 4px 16px -4px rgba(15, 23, 42, 0.05);
  text-decoration: none !important;
  color: inherit;
  scroll-margin-top: 90px;
  transition:
    transform 0.25s cubic-bezier(0.16, 1, 0.3, 1),
    border-color 0.2s ease,
    box-shadow 0.2s ease;
  position: relative;
}

.research-card:hover,
.research-card:focus-visible {
  transform: translateY(-4px);
  border-color: rgba(30, 58, 95, 0.35);
  box-shadow: 0 14px 32px -8px rgba(15, 23, 42, 0.12);
  text-decoration: none !important;
}

.research-card__media {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: var(--global-code-bg-color);
  overflow: hidden;
  border-bottom: 1px solid var(--global-divider-color);
}

.research-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.35s ease;
}

.research-card:hover .research-card__media img {
  transform: scale(1.05);
}

.research-card__badge {
  position: absolute;
  top: 10px;
  left: 10px;
  background: rgba(15, 23, 42, 0.82);
  backdrop-filter: blur(6px);
  color: #ffffff;
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: 4px;
  border: 1px solid rgba(255, 255, 255, 0.15);
  z-index: 2;
}

.research-card__content {
  padding: 1.35rem 1.35rem 1.5rem 1.35rem;
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}

.research-card__title {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.35;
  margin: 0 0 0.75rem 0;
  border-bottom: none;
  padding-bottom: 0;
}

.research-card__desc {
  font-size: var(--fs-body-sm);
  line-height: 1.6;
  color: var(--global-text-color);
  margin-bottom: 1rem;
  flex-grow: 1;
}

.research-card__topics {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: auto;
}

.research-topic-chip {
  font-size: var(--fs-label);
  font-weight: 500;
  padding: 0.15rem 0.5rem;
  border-radius: 4px;
  background: var(--global-code-bg-color);
  border: 1px solid var(--global-divider-color);
  color: var(--c-muted);
}

/* ------------------------------------------------------------
   Publications Refinements
   ------------------------------------------------------------ */
.publications ol.bibliography {
  list-style: none;
  padding-left: 0;
}

.publications ol.bibliography li {
  margin-bottom: 1.75rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--global-divider-color);
}

.publications .title {
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--global-text-color);
  line-height: 1.45;
  margin-bottom: 0.35rem;
}

.publications .author {
  font-size: 0.9rem;
  color: var(--global-text-color-light);
  line-height: 1.5;
  margin-bottom: 0.25rem;
}

.publications .author em {
  font-style: normal;
  font-weight: 600;
  color: var(--global-theme-color);
}

.publications .periodical {
  font-size: 0.85rem;
  color: var(--global-text-color-light);
  font-style: normal;
}

.publications .periodical em {
  font-style: italic;
  font-weight: 500;
}

.publications .links a.btn {
  font-size: var(--fs-label);
  padding: 0.25rem 0.6rem;
  border-radius: 6px;
  font-weight: 500;
}

/* ============================================================
   Editorial Data Pages
   Publications · News · Facilities · Gallery · Former Interns

   Principles in this block
   1. Editorial Calm  — hairlines and whitespace; no boxes, no shadows
   2. Dual-Script     — inherits Pretendard Variable; tabular figures
   3. Tone over Chroma — slate neutrals; accent only on links and tags
   4. 4px Rhythm      — every space and line-height is a multiple of 4
   5. Zero Inline Bolding — emphasis comes from size, tone and weight
      tokens (400 / 500 / 600) set here, never from <b>, <strong>
      or ** in page markup
   ============================================================ */

:root {
  /* 4px rhythm */
  --ed-s1: 0.25rem;
  --ed-s2: 0.5rem;
  --ed-s3: 0.75rem;
  --ed-s4: 1rem;
  --ed-s5: 1.25rem;
  --ed-s6: 1.5rem;
  --ed-s8: 2rem;
  --ed-s10: 2.5rem;
  --ed-s14: 3.5rem;

  /* Type scale (size / line-height always on the 4px grid) */
  --ed-fs-2xs: var(--fs-label); /* 13 / 16 — 12px retired (legibility floor) */
  --ed-fs-xs: 0.875rem; /* 13 / 20 */
  --ed-fs-sm: 0.875rem; /* 14 / 20 */
  --ed-fs-md: 1rem; /* 16 / 24 */
  --ed-fs-xl: 1.375rem; /* 22 / 28 */

  /* Tone — light */
  --ed-ink: var(--c-ink);
  --ed-text: var(--c-text);
  --ed-muted: var(--c-muted); /* SSOT in ace2_tokens.css */
  --ed-line: var(--global-divider-color);
  --ed-accent: var(--global-theme-color); /* #1e3a5f light · #9db7d9 dark */
  --ed-surface: var(--global-bg-color);
}

.ed-page {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "kern" 1;
  color: var(--ed-text);
}

.ed-page a:focus-visible {
  outline: 2px solid var(--ed-accent);
  outline-offset: 2px;
  border-radius: 2px;
}

/* Screen-reader-only text */
.ed-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ------------------------------------------------------------
   In-page index
   ------------------------------------------------------------ */
.ed-index {
  position: sticky;
  top: var(--sticky-navbar); /* clears the fixed navbar */
  z-index: 10;
  display: flex;
  flex-wrap: wrap;
  gap: var(--ed-s1) var(--ed-s6);
  margin: 0 0 var(--ed-s10);
  padding: var(--ed-s3) 0;
  background: var(--ed-surface);
  border-top: 1px solid var(--ed-line);
  border-bottom: 1px solid var(--ed-line);
  font-size: var(--ed-fs-sm);
  font-weight: 500;
  line-height: 24px;
}

.ed-index a {
  color: var(--ed-muted);
  transition: color 0.15s ease;
}

.ed-index a:hover,
.ed-index a.active {
  color: var(--color-knu-crimson);
  text-decoration: none;
}

.ed-index__count {
  margin-left: var(--ed-s2);
  font-size: var(--ed-fs-2xs);
  font-weight: 400;
}

/* ------------------------------------------------------------
   Sections
   ------------------------------------------------------------ */
.ed-lede {
  margin: 0 0 var(--ed-s6);
  font-size: var(--ed-fs-sm);
  line-height: 24px;
  color: var(--ed-muted);
}

.ed-section {
  margin: 0 0 var(--ed-s14);
}

.ed-section[id] {
  scroll-margin-top: 7rem; /* navbar + sticky index */
}

.ed-section__title {
  display: flex;
  align-items: baseline;
  gap: var(--ed-s3);
  margin: 0 0 var(--ed-s6);
  padding: 0 0 var(--ed-s3);
  border-bottom: 1px solid var(--ed-line);
  font-size: var(--ed-fs-xl);
  font-weight: 600;
  line-height: 28px;
  letter-spacing: -0.02em;
  color: var(--ed-ink);
}

.ed-section__count {
  font-size: var(--ed-fs-xs);
  font-weight: 500;
  letter-spacing: 0;
  color: var(--ed-muted);
}

.ed-section__note {
  margin: calc(-1 * var(--ed-s2)) 0 var(--ed-s6);
  font-size: var(--ed-fs-xs);
  line-height: 20px;
  color: var(--ed-muted);
}

/* ------------------------------------------------------------
   Year rail — year in the margin, entries on hairlines
   ------------------------------------------------------------ */
.ed-rail__row {
  display: grid;
  grid-template-columns: 5rem minmax(0, 1fr);
  column-gap: var(--ed-s6);
  padding: var(--ed-s5) 0;
  border-top: 1px solid var(--ed-line);
}

.ed-rail__row:first-child {
  border-top: 0;
  padding-top: var(--ed-s2);
}

.ed-rail__year {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: var(--ed-fs-sm);
  font-weight: 500;
  line-height: 24px;
  letter-spacing: 0;
  color: var(--ed-muted);
}

.ed-entries {
  display: grid;
  row-gap: var(--ed-s5);
  margin: 0;
  padding: 0;
  list-style: none;
}

.ed-entry {
  display: grid;
  grid-template-columns: 2rem minmax(0, 1fr);
  column-gap: var(--ed-s2);
  margin: 0;
  padding: 0;
}

.ed-entry__num {
  font-family: var(--font-mono-meta);
  font-size: var(--ed-fs-2xs);
  font-weight: 500;
  line-height: 24px;
  color: var(--color-knu-crimson);
  font-variant-numeric: tabular-nums;
}

.ed-entry__body {
  min-width: 0;
}

.ed-entry__title {
  font-size: var(--ed-fs-md);
  font-weight: 500;
  line-height: 24px;
  letter-spacing: -0.015em;
  color: var(--ed-ink);
  text-wrap: pretty;
}

.ed-entry__title a {
  color: inherit;
  background-image: linear-gradient(currentColor, currentColor);
  background-position: 0 100%;
  background-repeat: no-repeat;
  background-size: 0 1px;
  transition: background-size 0.2s ease;
}

.ed-entry__title a:hover {
  color: var(--ed-accent);
  text-decoration: none;
  background-size: 100% 1px;
}

.ed-entry__line {
  margin-top: var(--ed-s1);
  font-size: var(--ed-fs-sm);
  line-height: 20px;
  color: var(--ed-muted);
  text-wrap: pretty;
}

.ed-label {
  margin-right: var(--ed-s2);
  font-size: var(--ed-fs-2xs);
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--ed-muted);
}

.ed-sep {
  margin: 0 var(--ed-s2);
  opacity: 0.6;
}

/* Hairline tag: subtle crimson tint with mono typography */

/* ------------------------------------------------------------
   Publications — restyle jekyll-scholar output inside the page
   ------------------------------------------------------------ */

/* Flush Sticky Sub-Header Dock (locks seamlessly beneath .ace2-tabnav) */
.pub-sticky-toolbar {
  position: sticky;
  top: var(--sticky-navbar); /* fallback when .ace2-tabnav is absent */
  z-index: 9;
  margin: 0 0 var(--ed-s6);
  padding: var(--ed-s2) var(--ed-s1);
  background: var(--ed-surface, #ffffff);
  border: 0;
  border-bottom: 1px solid var(--ed-line);
  border-radius: 0;
  box-shadow: none;
}

.ace2-tab-container.is-tabbed .pub-sticky-toolbar {
  top: calc(var(--sticky-navbar) + var(--sticky-tabnav)); /* clears navbar + sticky tab bar */
}

/* Flush docking under .ace2-tabnav: cancel its bottom margin ONLY when the toolbar is
   structurally adjacent (tabnav + panel > section:first-child > toolbar:first-child).
   Any element inserted between tabnav and panels breaks the :has() match, so the toolbar
   safely falls back to margin-top: 0 (clean gap, never an overlap). Keep this a standalone rule:
   inside a selector list, an unsupported :has() would invalidate the whole list.
   Contract: skills/ace2lab-website-architect/references/sticky_dock_layout_contract.md */
@media screen and (min-width: 768px) {
  .ace2-tab-container.is-tabbed:has(> .ace2-tabnav + .ace2-tabpanel) > .ace2-tabpanel > .ed-section:first-child > .pub-sticky-toolbar:first-child {
    margin-top: calc(-1 * var(--ed-s8, 2rem));
  }
}

#achievements .pub-sticky-toolbar {
  top: calc(var(--sticky-navbar) + 50px); /* clears navbar + in-page .ed-index */
}

@supports (backdrop-filter: blur(1px)) {
  .pub-sticky-toolbar {
    background: color-mix(in srgb, var(--ed-surface, #ffffff) 98%, transparent);
    -webkit-backdrop-filter: saturate(160%) blur(12px);
    backdrop-filter: saturate(160%) blur(12px);
  }
}

.pub-sticky-toolbar .pub-pi-filter {
  margin: 0 0 var(--ed-s2);
  padding: 0 0 var(--ed-s2);
  border: 0;
  border-bottom: 1px solid var(--ed-line);
  border-radius: 0;
  background: transparent;
}

.pub-sticky-toolbar .pub-pi-filter:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: 0;
}

.pub-sticky-toolbar .pub-pi-filter[hidden] {
  display: none;
}

.pub-sticky-toolbar .pub-year-jump {
  position: static;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
}

@media (min-width: 576px) {
  .pub-pi-filter__legend,
  .pub-sticky-toolbar .pub-pi-filter__legend,
  .pub-sticky-toolbar .pub-year-jump__title {
    min-width: 4.6rem;
    box-sizing: border-box;
  }
}

/* Fallback Sticky Year Jump Bar (when outside .pub-sticky-toolbar) */
.pub-year-jump {
  position: sticky;
  top: var(--sticky-navbar);
  z-index: 9;
  margin: 0 0 var(--ed-s6);
  padding: var(--ed-s2) var(--ed-s1);
  background: var(--ed-surface, #ffffff);
  border: 0;
  border-bottom: 1px solid var(--ed-line);
  border-radius: 0;
  box-shadow: none;
}

.ace2-tab-container.is-tabbed .pub-year-jump {
  top: calc(var(--sticky-navbar) + var(--sticky-tabnav)); /* clears navbar + sticky tab bar */
}

.pub-year-jump__inner {
  display: flex;
  align-items: center;
  gap: var(--ed-s3);
}

.pub-year-jump__title {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-family: var(--font-mono-meta);
  font-size: var(--ed-fs-2xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-knu-crimson, #b8132b);
  white-space: nowrap;
  padding-right: var(--ed-s2);
  border-right: 1px solid var(--ed-line);
}

.pub-year-jump__chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px;
  overflow-x: auto;
  scrollbar-width: thin;
}

/* Phones: a sticky bar would eat a large portion of the viewport, so it scrolls away */
@media (max-width: 767.98px) {
  .pub-sticky-toolbar,
  .pub-year-jump,
  .ace2-tab-container.is-tabbed .pub-sticky-toolbar,
  .ace2-tab-container.is-tabbed .pub-year-jump {
    position: static;
    margin-top: 0;
  }

  .ed-section .publications h2.bibliography {
    scroll-margin-top: calc(var(--sticky-navbar) + var(--sticky-tabnav) + 1rem);
  }
}

@media (max-width: 991px) {
  .pub-year-jump__chips {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 2px;
  }
}

.pub-year-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 7px;
  border-radius: 9999px;
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 600;
  line-height: 18px;
  color: var(--ed-muted);
  background: var(--c-surface-alt);
  border: 1px solid var(--ed-line);
  text-decoration: none;
  transition: all 0.15s ease;
  white-space: nowrap;
}

.pub-year-chip:hover {
  color: var(--color-knu-crimson, #b8132b);
  background: var(--color-knu-crimson-soft, rgba(184, 19, 43, 0.06));
  border-color: var(--color-knu-crimson, #b8132b);
  text-decoration: none;
}

.pub-year-chip.active {
  color: #ffffff !important;
  background: var(--c-accent-fill) !important;
  border-color: var(--c-accent-fill) !important;
  box-shadow: 0 2px 6px rgba(163, 18, 58, 0.25);
}

.pub-year-chip__count {
  font-size: 1em;
  font-weight: 500;
}

.pub-year-chip.active .pub-year-chip__count {
  color: #ffffff !important;
}

/* Publications Bibliography Filter / Search Input */
.bibsearch-form-input {
  display: block;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  margin: var(--ed-s4) 0 var(--ed-s3);
  padding: 10px 16px 10px 42px;
  font-family: inherit;
  font-size: var(--fs-body); /* 16px: prevents iOS focus zoom */
  line-height: 1.5;
  color: var(--c-ink);
  background-color: var(--c-surface-alt);
  border: 1px solid var(--ed-line);
  border-radius: 8px;
  outline: none;
  transition: all 0.2s ease;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23888888' viewBox='0 0 16 16'%3E%3Cpath d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: 14px center;
  background-size: 16px 16px;
}

.bibsearch-form-input:focus {
  background-color: var(--ed-surface);
  border-color: var(--color-knu-crimson, #b8132b);
  box-shadow: 0 0 0 3px rgba(184, 19, 43, 0.12);
}

.bibsearch-form-input::placeholder {
  color: var(--c-muted);
  opacity: 1; /* Firefox dims placeholders by default */
}

/* Year Headings in Bibliography */
.ed-section .publications h2.bibliography {
  display: flex;
  align-items: center;
  gap: var(--ed-s3);
  margin: var(--ed-s10) 0 var(--ed-s5);
  padding: var(--ed-s2) 0;
  border-bottom: 2px solid var(--ed-line);
  font-size: var(--ed-fs-xl);
  font-weight: 700;
  line-height: 32px;
  letter-spacing: -0.02em;
  color: var(--ed-ink);
  scroll-margin-top: calc(var(--sticky-navbar) + var(--sticky-tabnav) + 3.75rem); /* + slim sticky year dock */
}

.ed-section .publications h2.bibliography::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--ed-line);
  opacity: 0.5;
}

.ed-section .publications ol.bibliography {
  list-style: none;
  padding-left: 0;
}

.ed-section .publications ol.bibliography li {
  margin-bottom: var(--ed-s6);
  padding-bottom: var(--ed-s6);
  border-bottom: 1px solid var(--ed-line);
  transition: all 0.2s ease;
}

/* Graphical-abstract column: stacked above the text on narrow screens, 280px side column on desktop */
.publications ol.bibliography li .row .abbr {
  flex: 0 0 100%;
  max-width: 100%;
  margin-bottom: var(--ed-s3);
}
/* Suppress redundant journal abbr badge above graphical abstracts (journal name is in the citation line & JCR badge) */
.publications ol.bibliography li .row .abbr abbr,
.publications ol.bibliography li .row .abbr abbr.badge {
  display: none !important;
}
.publications ol.bibliography li .row .abbr:empty {
  display: none !important;
}
.publications ol.bibliography li .row .col-sm-8 {
  flex: 0 0 100%;
  max-width: 100%;
}
.publications ol.bibliography li .row .abbr figure {
  position: relative;
  margin: 0;
  max-width: 440px;
}
.publications ol.bibliography li .row .abbr img.preview {
  display: block;
  width: 100%;
  height: auto;
  max-height: 320px;
  object-fit: contain;
  background: #fff;
  border: 1px solid var(--ed-line, #e2e8f0);
  cursor: zoom-in;
  transition:
    box-shadow 0.2s ease,
    transform 0.2s ease;
}
.publications ol.bibliography li .row .abbr img.preview:hover,
.publications ol.bibliography li .row .abbr img.preview:focus-visible {
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
  transform: translateY(-1px);
}
/* Zoom affordance: always visible on touch, revealed on hover/focus for pointer devices */
.publications ol.bibliography li .row .abbr figure::after {
  content: "\f00e";
  font-family: "Font Awesome 6 Free", "Font Awesome 5 Free", sans-serif;
  font-weight: 900;
  position: absolute;
  right: 8px;
  bottom: 8px;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(15, 23, 42, 0.78);
  color: #fff;
  font-size: 0.875rem;
  pointer-events: none;
  opacity: 0.9;
  transition: opacity 0.2s ease;
}
@media (hover: hover) {
  .publications ol.bibliography li .row .abbr figure::after {
    opacity: 0;
  }
  .publications ol.bibliography li .row .abbr figure:hover::after,
  .publications ol.bibliography li .row .abbr figure:focus-within::after {
    opacity: 0.9;
  }
}

/* 1340px Responsive Wide Layout Balance */
@media (min-width: 992px) {
  .publications ol.bibliography li .row {
    display: flex;
    align-items: flex-start;
    margin: 0;
  }
  .publications ol.bibliography li .row .abbr {
    flex: 0 0 280px;
    max-width: 280px;
    margin-bottom: 0;
    padding-right: var(--ed-s6);
  }
  .publications ol.bibliography li .row .abbr figure {
    max-width: none;
  }
  .publications ol.bibliography li .row .col-sm-8 {
    flex: 1 1 auto;
    max-width: calc(100% - 280px);
    padding: 0;
  }
}

/* Single-row publication metadata badge container */
.ed-entry__badges {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin-left: 0.5rem;
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
  vertical-align: middle;
}

@media (max-width: 767.98px) {
  .ed-entry__badges {
    display: flex;
    margin-left: 0;
    margin-top: 0.35rem;
  }
}

.pub-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-left: 0.5rem;
  padding: 0.15rem 0.55rem;
  border-radius: 4px;
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.02em;
  white-space: nowrap;
  vertical-align: middle;
}

.ed-entry__badges .pub-badge {
  margin: 0 !important;
  height: 26px;
  line-height: 1;
  display: inline-flex;
  align-items: center;
}

/* Visual Badges: Cover Papers & Selected Papers */
.pub-badge--cover {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.15rem 0.55rem;
  border-radius: 4px;
  background: linear-gradient(135deg, #fff8e7 0%, #fff1c5 100%);
  border: 1px solid #d4af37;
  color: #7a5c00; /* 5.6:1 on #fff1c5 */
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  box-shadow: 0 1px 3px rgba(212, 175, 55, 0.2);
  vertical-align: middle;
}

[data-theme="dark"] .pub-badge--cover {
  background: linear-gradient(135deg, rgba(212, 175, 55, 0.2) 0%, rgba(212, 175, 55, 0.1) 100%);
  border-color: rgba(212, 175, 55, 0.6);
  color: #f3d46f;
}

.pub-badge--accepted {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.15rem 0.55rem;
  border-radius: 4px;
  background: rgba(16, 185, 129, 0.1);
  border: 1px solid #059669;
  color: #065f46; /* 7.1:1 on light surface */
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  vertical-align: middle;
}

[data-theme="dark"] .pub-badge--accepted {
  background: rgba(16, 185, 129, 0.18);
  border-color: rgba(52, 211, 153, 0.6);
  color: #6ee7b7;
}

/* JCR & Academic Prestige Badges */

.pub-badge--jcr-top3 {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.15rem 0.55rem;
  border-radius: 4px;
  background: rgba(124, 58, 237, 0.08);
  border: 1px solid #7c3aed;
  color: #6d28d9;
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.02em;
  vertical-align: middle;
}
[data-theme="dark"] .pub-badge--jcr-top3 {
  background: rgba(167, 139, 250, 0.15);
  border-color: #a78bfa;
  color: #c4b5fd;
}

.pub-badge--jcr-top5 {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.15rem 0.55rem;
  border-radius: 4px;
  background: rgba(2, 132, 199, 0.08);
  border: 1px solid #0284c7;
  color: #0369a1;
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.02em;
  vertical-align: middle;
}
[data-theme="dark"] .pub-badge--jcr-top5 {
  background: rgba(56, 189, 248, 0.15);
  border-color: #38bdf8;
  color: #7dd3fc;
}

.pub-badge--jcr-top10 {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.15rem 0.55rem;
  border-radius: 4px;
  background: rgba(13, 148, 136, 0.08);
  border: 1px solid #0d9488;
  color: #0f766e;
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.02em;
  vertical-align: middle;
}
[data-theme="dark"] .pub-badge--jcr-top10 {
  background: rgba(45, 212, 191, 0.15);
  border-color: #2dd4bf;
  color: #5eead4;
}

.pub-badge--if10 {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.15rem 0.55rem;
  border-radius: 4px;
  background: rgba(16, 185, 129, 0.08);
  border: 1px solid #10b981;
  color: #047857;
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.02em;
  vertical-align: middle;
}
[data-theme="dark"] .pub-badge--if10 {
  background: rgba(52, 211, 153, 0.15);
  border-color: #34d399;
  color: #6ee7b7;
}

.pub-badge--jcr {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.15rem 0.55rem;
  border-radius: 4px;
  background: rgba(71, 85, 105, 0.08);
  border: 1px solid #64748b;
  color: #334155;
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.02em;
  vertical-align: middle;
}
[data-theme="dark"] .pub-badge--jcr {
  background: rgba(148, 163, 184, 0.15);
  border-color: #94a3b8;
  color: #cbd5e1;
}

/* Naver News Pill Link */
.ed-pill--naver {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.18rem 0.6rem;
  border-radius: 4px;
  font-size: var(--fs-label);
  font-weight: 600;
  background: rgba(3, 199, 90, 0.1);
  border: 1px solid #03c75a;
  color: #027a37;
  text-decoration: none;
  transition: all 0.15s ease;
}
.ed-pill--naver:hover {
  background: #03c75a;
  color: #0f172a; /* 7.9:1; white on #03c75a is 2.3:1 */
}
[data-theme="dark"] .ed-pill--naver {
  background: rgba(3, 199, 90, 0.18);
  border-color: #03c75a;
  color: #2edb7c;
}
[data-theme="dark"] .ed-pill--naver:hover {
  background: #03c75a;
  color: #0f172a;
}

/* Card highlights for Cover & Top papers (Dynamic SSOT via .pub-badge--cover) */
.publications ol.bibliography li.is-cover-paper,
.publications ol.bibliography li:has(.pub-badge--cover) {
  border-left: 3.5px solid #d4af37;
  padding-left: 1.25rem;
  background: linear-gradient(90deg, rgba(212, 175, 55, 0.05) 0%, transparent 100%);
  border-radius: 0 8px 8px 0;
  transition:
    border-color var(--ed-dur-fast) ease,
    background var(--ed-dur-fast) ease;
}
[data-theme="dark"] .publications ol.bibliography li:has(.pub-badge--cover) {
  border-left-color: #f59e0b;
  background: linear-gradient(90deg, rgba(245, 158, 11, 0.1) 0%, transparent 100%);
}

/* Publication Anchor Scroll Margin (clears sticky navbar + tabnav + toolbar) */
.publications ol.bibliography li .col-sm-8[id],
.publications ol.bibliography li[id] {
  scroll-margin-top: calc(var(--sticky-navbar) + var(--sticky-tabnav) + 5.5rem);
}

@media (max-width: 767.98px) {
  .publications ol.bibliography li .col-sm-8[id],
  .publications ol.bibliography li[id] {
    scroll-margin-top: calc(var(--sticky-navbar) + var(--sticky-tabnav) + 1rem);
  }
}

/* Highlight target pulse animation upon anchor navigation */
.publications ol.bibliography li .col-sm-8:target,
.publications ol.bibliography li:target {
  animation: pubTargetPulse 1.8s ease-out;
}

@keyframes pubTargetPulse {
  0% {
    background-color: rgba(212, 175, 55, 0.22);
    box-shadow: 0 0 0 6px rgba(212, 175, 55, 0.15);
    border-radius: 6px;
  }
  100% {
    background-color: transparent;
    box-shadow: 0 0 0 0 transparent;
  }
}

/* ============================================================
   Featured Journal Cover Art Showcase (Compact Media Cards)
   ============================================================ */
.pub-cover-showcase {
  margin: var(--ed-s4, 1rem) 0 var(--ed-s6, 1.5rem) 0;
  padding: 1.15rem 1.25rem;
  border-radius: 10px;
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--ed-border, rgba(0, 0, 0, 0.08));
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.03);
}
[data-theme="dark"] .pub-cover-showcase {
  background: var(--color-surface, #1e293b);
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
}
.pub-cover-showcase.is-pi-empty {
  display: none !important;
}

.pub-cover-showcase__header {
  margin-bottom: 0.85rem;
  border-bottom: 1px solid var(--ed-border, rgba(0, 0, 0, 0.07));
  padding-bottom: 0.5rem;
}
.pub-cover-showcase__title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--global-text-color, #1e293b);
  display: flex;
  align-items: center;
  gap: 0.45rem;
  margin: 0;
}
.pub-cover-showcase__title i {
  color: #d4af37;
}
.pub-cover-showcase__count {
  font-size: 0.875rem;
  font-weight: 600;
  padding: 0.1rem 0.45rem;
  border-radius: 999px;
  background: rgba(212, 175, 55, 0.15);
  color: #b45309;
}
[data-theme="dark"] .pub-cover-showcase__count {
  background: rgba(212, 175, 55, 0.25);
  color: #f3d46f;
}

.pub-cover-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 360px), 1fr));
  gap: 1rem;
}

.pub-cover-card {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  border-radius: 8px;
  background: var(--global-bg-color, #f8fafc);
  border: 1px solid var(--ed-border, rgba(0, 0, 0, 0.08));
  overflow: hidden;
  padding: 0.75rem;
  gap: 0.85rem;
  transition:
    transform var(--ed-dur-fast) ease,
    box-shadow var(--ed-dur-fast) ease,
    border-color var(--ed-dur-fast) ease;
}
[data-theme="dark"] .pub-cover-card {
  background: rgba(15, 23, 42, 0.6);
  border-color: rgba(255, 255, 255, 0.06);
}
.pub-cover-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
  border-color: rgba(212, 175, 55, 0.5);
}
.pub-cover-card.is-pi-hidden {
  display: none !important;
}

.pub-cover-card__poster {
  flex: 0 0 88px;
  width: 88px;
  height: 118px;
  aspect-ratio: 3 / 4;
  position: relative;
  overflow: hidden;
  border-radius: 6px;
  background: #000000;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}
.pub-cover-card__imglink {
  display: block;
  width: 100%;
  height: 100%;
  cursor: zoom-in;
}
.pub-cover-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  transition: transform 0.3s ease;
}
.pub-cover-card:hover .pub-cover-card__img {
  transform: scale(1.05);
}

.pub-cover-card__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}
.pub-cover-card__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-bottom: 0.35rem;
  font-size: 0.875rem;
  color: var(--global-text-color-light, #64748b);
}
.pub-cover-card__badge {
  background: linear-gradient(135deg, #fff8e7 0%, #fff1c5 100%);
  color: #7a5c00;
  padding: 0.1rem 0.45rem;
  border-radius: 4px;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  border: 1px solid #d4af37;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
[data-theme="dark"] .pub-cover-card__badge {
  background: linear-gradient(135deg, rgba(212, 175, 55, 0.2) 0%, rgba(212, 175, 55, 0.1) 100%);
  border-color: rgba(212, 175, 55, 0.6);
  color: #f3d46f;
}
.pub-cover-card__badge i {
  color: #d4af37;
}
.pub-cover-card__journal {
  font-weight: 700;
  color: #0284c7;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
[data-theme="dark"] .pub-cover-card__journal {
  color: #38bdf8;
}
.pub-cover-card__issue {
  font-weight: 500;
}

.pub-cover-card__title {
  font-size: 0.88rem;
  font-weight: 600;
  line-height: 1.35;
  margin: 0 0 0.5rem 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pub-cover-card__title a {
  color: var(--global-text-color, #1e293b);
  text-decoration: none;
  transition: color var(--ed-dur-fast) ease;
}
.pub-cover-card__title a:hover {
  color: #0284c7;
}

.pub-cover-card__actions {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: auto;
}
.pub-cover-card__action {
  font-size: 0.875rem;
  font-weight: 600;
  padding: 0.25rem 0.55rem;
  border-radius: 5px;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  transition: all var(--ed-dur-fast) ease;
}
.pub-cover-card__action--detail {
  background: rgba(2, 132, 199, 0.08);
  color: #0284c7;
  border: 1px solid rgba(2, 132, 199, 0.2);
}
.pub-cover-card__action--detail:hover {
  background: #0284c7;
  color: #ffffff;
}
[data-theme="dark"] .pub-cover-card__action--detail {
  color: #38bdf8;
  border-color: rgba(56, 189, 248, 0.3);
}
[data-theme="dark"] .pub-cover-card__action--detail:hover {
  background: #0284c7;
  color: #ffffff;
  border-color: #38bdf8;
}
.pub-cover-card__action--toc {
  background: rgba(212, 175, 55, 0.1);
  color: #92400e;
  border: 1px solid rgba(212, 175, 55, 0.3);
}
[data-theme="dark"] .pub-cover-card__action--toc {
  color: #f3d46f;
  border-color: rgba(212, 175, 55, 0.4);
}
.pub-cover-card__action--toc:hover {
  background: #d4af37;
  color: #0f172a;
}

/* Lab member bold styling in author list */
.publications ol.bibliography li .author .ed-author-self {
  font-weight: 700;
  color: var(--color-ink, #1e293b);
  border-bottom: 1.5px solid rgba(30, 58, 95, 0.4);
}
[data-theme="dark"] .publications ol.bibliography li .author .ed-author-self {
  color: #f1f5f9;
  border-bottom-color: rgba(157, 183, 217, 0.5);
}

/* Author contribution symbols (dagger, star) */
.author-symbol {
  font-size: 1em;
  font-weight: 700;
  color: #0284c7;
  vertical-align: super;
  margin-left: 1px;
}
[data-theme="dark"] .author-symbol {
  color: #38bdf8;
}

.pub-contribution-legend {
  display: flex;
  align-items: center;
  gap: 1.2rem;
  padding: 0.6rem 1rem;
  margin-bottom: 1.5rem;
  background: var(--global-code-bg-color, #f8fafc);
  border: 1px solid var(--global-divider-color, #e2e8f0);
  border-radius: 6px;
  font-size: var(--fs-label);
  color: var(--c-muted);
}

/* ------------------------------------------------------------
   Facilities — specification list
   [instrument] [manufacturer · model] [location]
   ------------------------------------------------------------ */
.ed-spec__head,
.ed-spec__row {
  display: grid;
  grid-template-columns: minmax(10rem, 1.1fr) minmax(10rem, 1.5fr) 7.5rem;
  column-gap: var(--ed-s6);
  align-items: baseline;
}

.ed-spec__head {
  padding: 0 0 var(--ed-s2);
  font-size: var(--ed-fs-2xs);
  font-weight: 500;
  line-height: 16px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ed-muted);
}

.ed-spec__row {
  padding: var(--ed-s3) 0;
  border-top: 1px solid var(--ed-line);
  font-size: var(--ed-fs-sm);
  line-height: 24px;
}

.ed-spec__name {
  font-weight: 500;
  color: var(--ed-ink);
}

.ed-spec__make {
  color: var(--ed-muted);
}

.ed-spec__loc {
  font-size: var(--ed-fs-xs);
  color: var(--ed-muted);
  text-align: right;
}

/* ------------------------------------------------------------
   Gallery — album index
   ------------------------------------------------------------ */
.ed-albums {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
  gap: var(--ed-s6) var(--ed-s6);
  margin: 0;
  padding: 0;
  list-style: none;
}

.ed-album {
  margin: 0;
  padding: var(--ed-s3) 0 0;
  border-top: 1px solid var(--ed-line);
  scroll-margin-top: 7rem;
}

.ed-album__cover {
  margin: 0 0 var(--ed-s3);
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 4px;
  background: var(--global-code-bg-color);
}

.ed-album__cover img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ed-album__date {
  display: block;
  font-size: var(--ed-fs-xs);
  line-height: 20px;
  color: var(--ed-muted);
}

.ed-album__title {
  margin-top: var(--ed-s1);
  font-size: var(--ed-fs-md);
  font-weight: 500;
  line-height: 24px;
  letter-spacing: -0.015em;
  color: var(--ed-ink);
  text-wrap: pretty;
}

/* ------------------------------------------------------------
   Responsive, motion, print
   ------------------------------------------------------------ */
@media (max-width: 767.98px) {
  .ed-rail__row {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--ed-s2);
  }

  .ed-spec__head {
    display: none;
  }

  .ed-spec__row {
    grid-template-columns: minmax(0, 1fr);
    row-gap: 0;
  }

  .ed-spec__loc {
    text-align: left;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ed-entry__title a {
    transition: none;
  }
}

@media print {
  .ed-index {
    display: none;
  }

  .ed-entry,
  .ed-spec__row,
  .ed-album {
    break-inside: avoid;
  }
}

/* ------------------------------------------------------------
   About the Laboratory (Landing Page): 3 pillars + Co-PI cards
   ------------------------------------------------------------ */
.lab-about {
  margin: var(--ed-s8, 2rem) 0;
}

.lab-about__title {
  margin-top: 0;
}

.lab-about__lead {
  font-size: var(--fs-body);
  line-height: 1.75;
  color: var(--global-text-color);
  word-break: keep-all;
}

.lab-about__pillars {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--ed-s4, 1rem);
  margin: var(--ed-s6, 1.5rem) 0;
}

.lab-about__pillar {
  display: block;
  padding: var(--ed-s4, 1rem) var(--ed-s5, 1.25rem);
  background: var(--global-code-bg-color, #f8fafc);
  border: 1px solid var(--ed-line, #e2e8f0);
  border-top: 3px solid var(--color-ace2-navy, #1e3a5f);
  border-radius: 8px;
  text-decoration: none !important;
  color: inherit;
  transition:
    transform 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease;
}

.lab-about__pillar:hover,
.lab-about__pillar:focus-visible {
  transform: translateY(-2px);
  border-color: rgba(30, 58, 95, 0.35);
  border-top-color: #d9530f;
  box-shadow: 0 8px 20px -6px rgba(15, 23, 42, 0.1);
  text-decoration: none !important;
}

html[data-theme="dark"] .lab-about__pillar {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.08);
  border-top-color: var(--color-ace2-navy, #9db7d9);
}

html[data-theme="dark"] .lab-about__pillar:hover,
html[data-theme="dark"] .lab-about__pillar:focus-visible {
  border-color: rgba(157, 183, 217, 0.35);
  border-top-color: #ff9248;
  box-shadow: 0 8px 20px -6px rgba(0, 0, 0, 0.45);
}

.lab-about__pillar-icon {
  font-size: 1.15rem;
  color: #d9530f;
  margin-bottom: var(--ed-s2, 0.5rem);
}

html[data-theme="dark"] .lab-about__pillar-icon {
  color: #ff9248;
}

.lab-about__pillar-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  font-size: var(--fs-lg);
  font-weight: 600;
  margin: 0 0 var(--ed-s1, 0.25rem);
  color: var(--ed-ink, #0f172a);
}

.lab-about__pillar-arrow {
  font-size: 0.85rem;
  color: var(--ed-muted, #64748b);
  opacity: 0.65;
  transition:
    transform 0.2s ease,
    opacity 0.2s ease,
    color 0.2s ease;
}

.lab-about__pillar:hover .lab-about__pillar-arrow,
.lab-about__pillar:focus-visible .lab-about__pillar-arrow {
  transform: translateY(2px);
  opacity: 1;
  color: #d9530f;
}

html[data-theme="dark"] .lab-about__pillar:hover .lab-about__pillar-arrow,
html[data-theme="dark"] .lab-about__pillar:focus-visible .lab-about__pillar-arrow {
  color: #ff9248;
}

.lab-about__pillar-desc {
  font-size: var(--fs-meta);
  line-height: 1.55;
  margin: 0;
  color: var(--ed-text, #334155);
  word-break: keep-all;
}

.lab-about__pis-intro {
  margin: var(--ed-s6, 1.5rem) 0 0;
  color: var(--ed-muted, #4b5a70);
}

/* ------------------------------------------------------------
   Co-PI Executive Showcase: cards share rows via subgrid so the
   summary, career path, topics and actions align across both PIs
   ------------------------------------------------------------ */
.pi-showcase {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--ed-s6, 1.5rem);
  margin: var(--ed-s6, 1.5rem) 0 var(--ed-s8, 2rem);
}

@media (min-width: 900px) {
  .pi-showcase {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.pi-showcase-card {
  display: flex;
  flex-direction: column;
  gap: var(--ed-s4, 1rem);
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--ed-line, #e2e8f0);
  border-radius: 12px;
  padding: 1.5rem 1.5rem 1.25rem 1.75rem;
  box-shadow: 0 4px 16px -4px rgba(15, 23, 42, 0.05);
  transition:
    transform 0.25s ease,
    box-shadow 0.25s ease,
    border-color 0.2s ease;
  position: relative;
  overflow: hidden;
}

@supports (grid-template-rows: subgrid) {
  .pi-showcase-card {
    display: grid;
    grid-row: span 5;
    grid-template-rows: subgrid;
    row-gap: var(--ed-s4, 1rem);
  }
}

.pi-showcase-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 4px;
  height: 100%;
  background: var(--color-knu-crimson, #a3123a);
  opacity: 0.85;
}

.pi-showcase-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 28px -6px rgba(15, 23, 42, 0.1);
  border-color: var(--color-knu-crimson-soft, rgba(163, 18, 58, 0.35));
}

html[data-theme="dark"] .pi-showcase-card {
  box-shadow: 0 4px 16px -4px rgba(0, 0, 0, 0.35);
}

html[data-theme="dark"] .pi-showcase-card:hover {
  box-shadow: 0 12px 28px -6px rgba(0, 0, 0, 0.5);
  border-color: rgba(240, 112, 143, 0.4);
}

.pi-showcase-card__head {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  gap: var(--ed-s4, 1rem);
  align-items: start;
}

.pi-showcase-card__portrait {
  width: 104px;
  height: 130px;
  border-radius: 8px;
  overflow: hidden;
  background: var(--global-code-bg-color, #f1f5f9);
  border: 1px solid var(--ed-line, #e2e8f0);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

.pi-showcase-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease;
}

.pi-showcase-card:hover .pi-showcase-card__img {
  transform: scale(1.04);
}

.pi-showcase-card__id {
  min-width: 0;
}

.pi-showcase-card__role {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin-bottom: 4px;
}

.pi-role-tag {
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-knu-crimson, #a3123a);
  background: var(--color-knu-crimson-soft, rgba(163, 18, 58, 0.08));
  padding: 2px 7px;
  border-radius: 4px;
}

.pi-rank-tag {
  font-size: var(--fs-meta);
  font-weight: 500;
  color: var(--ed-muted, #64748b);
}

.pi-showcase-card__name {
  font-family: var(--font-serif-editorial, "Newsreader", serif);
  font-size: 1.45rem;
  font-weight: 600;
  margin: 2px 0;
  color: var(--ed-ink, #0f172a);
  line-height: 1.2;
}

.pi-showcase-card__name-ko {
  font-family: var(--font-sans-body);
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--ed-muted, #64748b);
  margin-left: 6px;
}

.pi-showcase-card__affil {
  font-size: var(--fs-label);
  color: var(--ed-muted, #64748b);
  line-height: 1.4;
}

.pi-showcase-card__bio {
  font-size: var(--fs-body);
  line-height: 1.7;
  color: var(--c-ink);
  margin: 0;
  letter-spacing: -0.01em;
  word-break: keep-all;
  text-wrap: pretty;
}

/* Career + Education live in one .pi-trail so the card keeps exactly 5 subgrid rows */
.pi-trail {
  display: flex;
  flex-direction: column;
  gap: var(--ed-s4, 1rem);
}

.pi-trail__section {
  display: flex;
  flex-direction: column;
  gap: var(--ed-s2, 0.5rem);
}

.pi-trail__section--education {
  margin-top: auto;
}

.pi-trail__label {
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ed-muted, #4b5a70);
}

/* Career path: vertical rail with one node per step; node tone encodes sector */
.pi-path {
  list-style: none;
  margin: 0;
  padding: 0 0 0 var(--ed-s5, 1.25rem);
  border-left: 2px solid var(--ed-line, #e2e8f0);
  display: flex;
  flex-direction: column;
  gap: var(--ed-s3, 0.75rem);
}

.pi-path__node {
  --pi-node-color: var(--sector-institute, #0f766e);
  position: relative;
  display: grid;
  grid-template-columns: 9rem minmax(0, 1fr);
  column-gap: var(--ed-s3, 0.75rem);
  align-items: baseline;
  line-height: 1.45;
}

.pi-path__node::before {
  content: "";
  position: absolute;
  left: calc(-1 * var(--ed-s5, 1.25rem) - 6px);
  top: 0.45em;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--global-card-bg-color, #ffffff);
  border: 2px solid var(--pi-node-color);
}

.pi-path__node:first-child::before {
  background: var(--pi-node-color);
}

.pi-path__node--industry {
  --pi-node-color: var(--sector-industry);
}

.pi-path__node--institute,
.pi-path__node--academia {
  --pi-node-color: var(--sector-institute);
}

/* The newest step is the current post */
.pi-path__node:first-child {
  --pi-node-color: var(--sector-current);
}

/* Education: degrees are never "current"; square dot marks a degree node */
.pi-path--education .pi-path__node:first-child {
  --pi-node-color: var(--sector-institute);
}

.pi-path--education .pi-path__node::before,
.pi-path--education .pi-path__node:first-child::before {
  border-radius: 2px;
  background: var(--pi-node-color);
}

/* Institutional Brand Signatures (A-Plan: Direct Brand Ink) */
.pi-path__node--brand-knu,
.pi-path--education .pi-path__node--brand-knu {
  --pi-node-color: var(--brand-knu);
}

.pi-path__node--brand-samsung,
.pi-path--education .pi-path__node--brand-samsung {
  --pi-node-color: var(--brand-samsung);
}

.pi-path__node--brand-postech,
.pi-path--education .pi-path__node--brand-postech,
.pi-path--education .pi-path__node--brand-postech:first-child {
  --pi-node-color: var(--brand-postech);
}

.pi-path__node--brand-rist,
.pi-path--education .pi-path__node--brand-rist {
  --pi-node-color: var(--brand-rist);
}

.pi-path__node--brand-calgary,
.pi-path--education .pi-path__node--brand-calgary {
  --pi-node-color: var(--brand-calgary);
}

.pi-path__node--brand-kitech,
.pi-path--education .pi-path__node--brand-kitech {
  --pi-node-color: var(--brand-kitech);
}

.pi-path__period {
  grid-column: 1;
  grid-row: 1 / span 2;
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  color: var(--ed-muted, #4b5a70);
  white-space: nowrap;
}

.pi-path__org {
  grid-column: 2;
  font-size: var(--fs-body-sm);
  font-weight: 700;
  color: var(--pi-node-color, var(--ed-ink));
}

.pi-path__role {
  grid-column: 2;
  font-size: var(--fs-label);
  font-weight: 500;
  color: var(--ed-muted, #4b5a70);
}

.pi-path__note {
  grid-column: 2;
  font-size: var(--fs-label);
  color: var(--ed-muted, #4b5a70);
}

.pi-showcase-card__topics {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  gap: 5px;
}

.pi-topic-pill {
  font-size: var(--fs-label);
  font-weight: 500;
  padding: 2px 8px;
  border-radius: 4px;
  background: var(--global-code-bg-color, #f1f5f9);
  border: 1px solid var(--ed-line, #e2e8f0);
  color: var(--global-theme-color, #1e3a5f);
}

.pi-topic-pill--more {
  background: color-mix(in srgb, var(--color-ace2-navy, #1e3a5f) 8%, transparent);
  border-color: var(--color-ace2-navy, #1e3a5f);
  color: var(--color-ace2-navy, #1e3a5f);
  text-decoration: none;
  cursor: pointer;
}

.pi-topic-pill--more:hover {
  background: var(--color-ace2-navy, #1e3a5f);
  color: #ffffff;
  border-color: var(--color-ace2-navy, #1e3a5f);
}

.pi-showcase-card__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: auto;
  padding-top: 0.85rem;
  border-top: 1px solid var(--ed-line, #e2e8f0);
}

.pi-showcase-card__links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.pi-action-profile {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: var(--fs-label);
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 5px;
  background: color-mix(in srgb, var(--color-knu-crimson, #a3123a) 10%, transparent);
  border: 1px solid var(--color-knu-crimson, #a3123a);
  color: var(--color-knu-crimson, #a3123a);
  text-decoration: none;
  transition: all 0.15s ease;
}

.pi-action-profile:hover {
  background: var(--color-knu-crimson, #a3123a);
  color: #ffffff !important;
  text-decoration: none;
}

.pi-action-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: var(--fs-label);
  font-weight: 500;
  padding: 3px 9px;
  border-radius: 5px;
  background: var(--global-code-bg-color, #f1f5f9);
  border: 1px solid var(--ed-line, #e2e8f0);
  color: var(--ed-muted, #64748b);
  text-decoration: none;
  transition: all 0.15s ease;
}

.pi-action-btn:hover {
  background: var(--global-theme-color);
  color: var(--global-hover-text-color, #ffffff) !important;
  border-color: var(--global-theme-color);
  text-decoration: none;
}

@media (max-width: 640px) {
  .pi-showcase-card {
    padding: 1.25rem 1rem 1rem 1.25rem;
  }
  .pi-showcase-card__head {
    grid-template-columns: 88px minmax(0, 1fr);
  }
  .pi-showcase-card__portrait {
    width: 88px;
    height: 110px;
  }
  .pi-path__node {
    grid-template-columns: 1fr;
  }
  .pi-path__period,
  .pi-path__role,
  .pi-path__org,
  .pi-path__note {
    grid-column: 1;
    grid-row: auto;
  }
}

/* Fallback / Duo Grid */

/* ------------------------------------------------------------
   Facilities with Photos
   ------------------------------------------------------------ */
.ed-spec--with-thumbs {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.ed-spec--with-thumbs .ed-spec__head,
.ed-spec--with-thumbs .ed-spec__row {
  display: grid;
  grid-template-columns: 140px minmax(180px, 1.2fr) minmax(220px, 1.5fr) 130px;
  column-gap: 20px;
  align-items: center;
}

.ed-spec--with-thumbs .ed-spec__head {
  padding: 8px 16px;
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 700;
  color: var(--c-muted);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  border-bottom: 2px solid var(--global-divider-color);
  margin-bottom: 4px;
}

.ed-spec--with-thumbs .ed-spec__head .text-end {
  text-align: right;
}

.ed-spec--with-thumbs .ed-spec__row {
  padding: 12px 16px;
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--global-divider-color, #e2e8f0);
  border-radius: 10px;
  transition:
    transform 0.15s ease,
    border-color 0.15s ease,
    box-shadow 0.15s ease;
}

.ed-spec--with-thumbs .ed-spec__row:hover {
  border-color: rgba(163, 18, 58, 0.4);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(15, 23, 42, 0.08);
}

html[data-theme="dark"] .ed-spec--with-thumbs .ed-spec__row {
  background: rgba(255, 255, 255, 0.03);
  border-color: rgba(255, 255, 255, 0.08);
}

html[data-theme="dark"] .ed-spec--with-thumbs .ed-spec__row:hover {
  border-color: rgba(240, 112, 143, 0.4);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);
}

.ed-spec__thumb {
  width: 140px;
  height: 95px;
  border-radius: 8px;
  overflow: hidden;
  background: var(--global-code-bg-color, #f1f5f9);
  border: 1px solid var(--global-divider-color, #e2e8f0);
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--c-muted);
  font-size: 1.5rem;
}

.ed-spec__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  cursor: zoom-in;
  transition: transform 0.25s ease;
}

.ed-spec__thumb img:hover {
  transform: scale(1.08);
}

.ed-spec--with-thumbs .ed-spec__name {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--c-ink, #0f172a);
  letter-spacing: -0.01em;
}

.ed-spec--with-thumbs .ed-spec__make {
  color: var(--c-text);
}

.ed-spec__vendor {
  font-size: var(--fs-meta);
  font-weight: 600;
  color: var(--c-text);
  display: block;
  margin-bottom: 3px;
}

.ed-spec__model-badge {
  font-family: var(--font-mono-meta);
  font-size: 0.875rem;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 4px;
  background: var(--c-surface-alt, #f8fafc);
  border: 1px solid var(--global-divider-color, #e2e8f0);
  color: var(--c-ink);
  display: inline-block;
}

.ed-spec--with-thumbs .ed-spec__loc {
  text-align: right;
}

.ed-spec__loc-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border-radius: 999px;
  font-family: var(--font-mono-meta);
  font-size: 0.875rem;
  font-weight: 600;
  background: rgba(30, 58, 95, 0.06);
  color: var(--color-ace2-navy, #1e3a5f);
  border: 1px solid rgba(30, 58, 95, 0.16);
  white-space: nowrap;
}

html[data-theme="dark"] .ed-spec__loc-pill {
  background: rgba(157, 183, 217, 0.12);
  color: #9db7d9;
  border-color: rgba(157, 183, 217, 0.25);
}

/* Room color coding (7호관 403호 navy, 7호관 414호 teal, 8호관 313호 burgundy) */
[data-room] {
  --room-accent: #1e3a5f;
  --room-text: #1e3a5f;
  --room-bg: rgba(30, 58, 95, 0.07);
  --room-border: rgba(30, 58, 95, 0.28);
  --room-icon: #1d4ed8;
  --room-glow: rgba(30, 58, 95, 0.18);
}

[data-room="r403"] {
  --room-accent: #1e3a5f;
  --room-text: #1e3a5f;
  --room-bg: rgba(30, 58, 95, 0.07);
  --room-border: rgba(30, 58, 95, 0.28);
  --room-icon: #1d4ed8;
  --room-glow: rgba(30, 58, 95, 0.18);
}

[data-room="r414"] {
  --room-accent: #0f766e;
  --room-text: #0b5f58;
  --room-bg: rgba(15, 118, 110, 0.08);
  --room-border: rgba(15, 118, 110, 0.32);
  --room-icon: #0f766e;
  --room-glow: rgba(15, 118, 110, 0.2);
}

[data-room="r313"] {
  --room-accent: #a3123a;
  --room-text: #8a0f31;
  --room-bg: rgba(163, 18, 58, 0.07);
  --room-border: rgba(163, 18, 58, 0.3);
  --room-icon: #b45309;
  --room-glow: rgba(163, 18, 58, 0.18);
}

html[data-theme="dark"] [data-room="r403"],
html[data-theme="dark"] [data-room="none"] {
  --room-accent: #6b9bea;
  --room-text: #a9c6f5;
  --room-bg: rgba(107, 155, 234, 0.14);
  --room-border: rgba(107, 155, 234, 0.4);
  --room-icon: #8db4f0;
  --room-glow: rgba(107, 155, 234, 0.28);
}

html[data-theme="dark"] [data-room="r414"] {
  --room-accent: #2dd4bf;
  --room-text: #5eead4;
  --room-bg: rgba(45, 212, 191, 0.12);
  --room-border: rgba(45, 212, 191, 0.38);
  --room-icon: #5eead4;
  --room-glow: rgba(45, 212, 191, 0.25);
}

html[data-theme="dark"] [data-room="r313"] {
  --room-accent: #f0708f;
  --room-text: #f8b4c6;
  --room-bg: rgba(240, 112, 143, 0.14);
  --room-border: rgba(240, 112, 143, 0.4);
  --room-icon: #fbbf24;
  --room-glow: rgba(240, 112, 143, 0.28);
}

.ed-spec--with-thumbs .ed-spec__row[data-room] {
  border-left: 4px solid var(--room-accent);
}

.ed-spec--with-thumbs .ed-spec__row[data-room]:hover,
html[data-theme="dark"] .ed-spec--with-thumbs .ed-spec__row[data-room]:hover {
  border-color: var(--room-border);
  border-left-color: var(--room-accent);
  box-shadow:
    0 6px 16px var(--room-glow),
    0 0 0 1px var(--room-border);
}

.ed-spec__row[data-room] .ed-spec__loc-pill,
html[data-theme="dark"] .ed-spec__row[data-room] .ed-spec__loc-pill {
  background: var(--room-bg);
  color: var(--room-text);
  border-color: var(--room-border);
}

.ed-spec__loc-pill i {
  color: var(--room-icon, currentColor);
}

.fac-loc-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 12px;
  margin: 0 0 var(--ed-s6, 1.5rem);
  padding: 10px 16px;
  border: 1px solid var(--global-divider-color, #e2e8f0);
  border-radius: 12px;
  background: var(--global-card-bg-color, #ffffff);
}

.fac-loc-legend__title {
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--c-muted);
  margin-right: 4px;
}

.fac-loc-legend__item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 6px 4px 10px;
  border-radius: 999px;
  font-size: 0.875rem;
  font-weight: 600;
  background: var(--room-bg);
  color: var(--room-text);
  border: 1px solid var(--room-border);
  white-space: nowrap;
}

.fac-loc-legend__dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--room-accent);
}

.fac-loc-legend__count {
  min-width: 22px;
  padding: 1px 7px;
  border-radius: 999px;
  text-align: center;
  font-family: var(--font-mono-meta);
  font-size: 0.875rem;
  font-weight: 700;
  background: var(--room-accent);
  color: #ffffff;
}

html[data-theme="dark"] .fac-loc-legend {
  background: rgba(255, 255, 255, 0.03);
  border-color: rgba(255, 255, 255, 0.08);
}

html[data-theme="dark"] .fac-loc-legend__count {
  color: #0f172a;
}

@media (max-width: 1100px) and (min-width: 769px) {
  .ed-spec--with-thumbs .ed-spec__head,
  .ed-spec--with-thumbs .ed-spec__row {
    grid-template-columns: 120px minmax(120px, 1fr) minmax(140px, 1.2fr) auto;
    column-gap: 14px;
  }
}

@media (max-width: 768px) {
  .ed-spec--with-thumbs .ed-spec__head {
    display: none;
  }
  .ed-spec--with-thumbs .ed-spec__row {
    grid-template-columns: 110px minmax(0, 1fr);
    grid-template-areas:
      "thumb name"
      "thumb make"
      "thumb loc";
    align-items: start;
    row-gap: 6px;
    column-gap: 14px;
    padding: 12px;
  }
  .ed-spec--with-thumbs .ed-spec__thumb {
    grid-area: thumb;
    width: 110px;
    height: 82px;
  }
  .ed-spec--with-thumbs .ed-spec__name {
    grid-area: name;
  }
  .ed-spec--with-thumbs .ed-spec__make {
    grid-area: make;
  }
  .ed-spec--with-thumbs .ed-spec__loc {
    grid-area: loc;
    text-align: left;
  }
  .ed-spec--with-thumbs .ed-spec__row:hover {
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ed-spec--with-thumbs .ed-spec__row {
    transition: none;
  }
  .ed-spec--with-thumbs .ed-spec__row:hover {
    transform: none;
  }
}

/* ------------------------------------------------------------
   Gallery Photo Count & Album Grid
   ------------------------------------------------------------ */
.ed-album__cover {
  position: relative;
  border-radius: 6px;
  overflow: hidden;
  border: 1px solid var(--ed-line, #e2e8f0);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}

.ed-album__cover img {
  transition: transform 0.3s ease;
}

.ed-album:hover .ed-album__cover img {
  transform: scale(1.04);
}

.ed-album__badge {
  position: absolute;
  bottom: 8px;
  right: 8px;
  background: rgba(15, 23, 42, 0.82);
  backdrop-filter: blur(4px);
  color: #ffffff;
  font-size: var(--fs-label);
  font-weight: 500;
  padding: 3px 8px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}

.ed-album__expansion {
  margin-top: var(--ed-s2, 0.5rem);
}

.ed-album__expansion-toggle {
  font-size: var(--fs-label);
  color: var(--color-knu-crimson);
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 5px 0;
  border-bottom: 1px dashed var(--ed-line, #e2e8f0);
}

.ed-album__expansion-toggle:hover {
  opacity: 0.85;
}

.ed-album__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(76px, 1fr));
  gap: 8px;
  margin-top: 10px;
  padding: 10px;
  background: var(--global-code-bg-color, #f8f9fa);
  border-radius: 6px;
  border: 1px solid var(--ed-line, #e2e8f0);
}

.ed-album__thumb {
  margin: 0;
  aspect-ratio: 1;
  overflow: hidden;
  border-radius: 4px;
  background: #000;
}

.ed-album__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  cursor: zoom-in;
  transition: transform 0.2s ease;
}

.ed-album__thumb img:hover {
  transform: scale(1.08);
}

/* ------------------------------------------------------------
   Awards with Certificate Thumbnail
   ------------------------------------------------------------ */

/* Certificate lightbox (assets/js/award_lightbox.js): metadata header, fit / actual-size stage, Prev / Next */
html:has(dialog.ed-lightbox[open]) {
  overflow: hidden;
}

.ed-lightbox {
  width: min(96vw, 1120px);
  height: 90vh;
  height: 90dvh;
  max-width: none;
  max-height: none;
  margin: auto;
  padding: 0;
  border: 1px solid var(--ed-line);
  border-radius: 14px;
  background: var(--ed-surface);
  color: var(--ed-text);
  overflow: hidden;
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.45);
}

.ed-lightbox[open] {
  display: flex;
  animation: ed-lb-in 0.2s ease-out;
}

.ed-lightbox::backdrop {
  background: rgba(8, 12, 20, 0.78);
  backdrop-filter: blur(3px);
}

.ed-lightbox[open]::backdrop {
  animation: ed-lb-fade 0.2s ease-out;
}

.ed-lightbox.is-closing {
  animation: ed-lb-out 0.18s ease-in forwards;
}

.ed-lightbox.is-closing::backdrop {
  animation: ed-lb-fade 0.18s ease-in reverse forwards;
}

@keyframes ed-lb-in {
  from {
    opacity: 0;
    transform: translateY(10px) scale(0.98);
  }
}

@keyframes ed-lb-out {
  to {
    opacity: 0;
    transform: translateY(6px) scale(0.98);
  }
}

@keyframes ed-lb-fade {
  from {
    opacity: 0;
  }
}

.ed-lightbox__panel {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  min-height: 0;
}

.ed-lightbox__head {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--ed-s3) var(--ed-s5);
  padding: var(--ed-s4) var(--ed-s5);
  border-bottom: 1px solid var(--ed-line);
}

.ed-lightbox__heading {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--ed-s1);
  flex: 1 1 320px;
  min-width: 0;
}

.ed-lightbox__title {
  margin: 0;
  padding: 0;
  border: 0;
  font-family: var(--font-editorial);
  font-size: var(--ed-fs-xl);
  font-weight: 600;
  line-height: 28px;
  letter-spacing: -0.015em;
  color: var(--ed-ink);
  text-wrap: balance;
}

.ed-lightbox__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ed-s1) var(--ed-s4);
  margin: 0;
  font-size: var(--ed-fs-sm);
  line-height: 20px;
  color: var(--ed-text);
}

.ed-lightbox__meta i {
  margin-right: 0.4rem;
  color: var(--ed-muted);
}

.ed-lightbox__tools {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: var(--ed-s2);
}

.ed-lightbox__count {
  padding-right: var(--ed-s2);
  font-family: var(--font-mono-meta);
  font-size: var(--ed-fs-sm);
  color: var(--ed-muted);
  white-space: nowrap;
}

.ed-lightbox__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  min-height: 44px;
  padding: 0 var(--ed-s4);
  border: 1px solid var(--ed-line);
  border-radius: 8px;
  background: transparent;
  color: var(--ed-ink);
  font-size: var(--ed-fs-sm);
  cursor: pointer;
  transition:
    background-color 0.15s ease,
    border-color 0.15s ease;
}

.ed-lightbox__btn--icon {
  min-width: 44px;
  padding: 0;
  font-size: 1.125rem;
}

.ed-lightbox__btn:hover,
.ed-lightbox__btn[aria-pressed="true"] {
  border-color: var(--ed-accent);
  background: color-mix(in srgb, var(--ed-accent) 10%, transparent);
}

.ed-lightbox__btn:focus-visible,
.ed-lightbox__nav:focus-visible {
  outline: 2px solid var(--ed-accent);
  outline-offset: 2px;
}

.ed-lightbox__stage {
  display: flex;
  flex: 1 1 auto;
  min-height: 0;
  background: color-mix(in srgb, var(--ed-ink) 7%, var(--ed-surface));
}

.ed-lightbox__nav {
  flex: 0 0 56px;
  border: 0;
  background: transparent;
  color: var(--ed-muted);
  font-size: 1.5rem;
  cursor: pointer;
  transition:
    background-color 0.15s ease,
    color 0.15s ease;
}

.ed-lightbox__nav:hover {
  background: color-mix(in srgb, var(--ed-ink) 8%, transparent);
  color: var(--ed-ink);
}

.ed-lightbox__viewport {
  display: flex;
  flex: 1 1 auto;
  min-width: 0;
  padding: var(--ed-s3);
  overflow: auto;
}

.ed-lightbox__img {
  display: block;
  flex: 0 0 auto;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  margin: auto;
  object-fit: contain;
  background: #fff;
  box-shadow: 0 6px 28px rgba(0, 0, 0, 0.3);
  cursor: zoom-in;
  transition: opacity 0.2s ease;
}

.ed-lightbox__stage.is-loading .ed-lightbox__img {
  opacity: 0.2;
}

.ed-lightbox__stage.is-zoomed .ed-lightbox__img {
  max-width: none;
  max-height: none;
  cursor: zoom-out;
}

.ed-lightbox__hint {
  flex: 0 0 auto;
  margin: 0;
  padding: var(--ed-s2) var(--ed-s4);
  border-top: 1px solid var(--ed-line);
  font-size: var(--ed-fs-xs);
  line-height: 20px;
  text-align: center;
  color: var(--ed-muted);
}

@media (max-width: 575.98px) {
  .ed-lightbox {
    width: 100vw;
    height: 100dvh;
    border: 0;
    border-radius: 0;
  }

  .ed-lightbox__head {
    padding: var(--ed-s3);
  }

  .ed-lightbox__title {
    font-size: 1.125rem;
    line-height: 24px;
  }

  .ed-lightbox__nav {
    flex-basis: 40px;
  }

  .ed-lightbox__viewport {
    padding: var(--ed-s2);
  }

  .ed-lightbox__btn [data-lb="zoomlabel"] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }

  .ed-lightbox__hint {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ed-lightbox[open],
  .ed-lightbox[open]::backdrop,
  .ed-lightbox__img {
    animation: none;
    transition: none;
  }
}

/* Natural-aspect image viewer for Publications and Gallery (assets/js/image_lightbox.js) */
html:has(dialog.ed-viewer[open]) {
  overflow: hidden;
}

.ed-viewer {
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: rgba(0, 0, 0, 0.9);
  color: #fff;
  overflow: hidden;
}

.ed-viewer[open] {
  display: flex;
  align-items: center;
  justify-content: center;
}

.ed-viewer::backdrop {
  background: rgba(0, 0, 0, 0.9);
}

.ed-viewer__stage {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  height: 100%;
  padding: 3rem 0.5rem 3.5rem;
  box-sizing: border-box;
}

.ed-viewer__img {
  display: block;
  width: auto;
  height: auto;
  max-width: 90vw;
  max-height: 90vh;
  max-height: min(90vh, calc(100dvh - 6.5rem));
  object-fit: contain;
  background: #fff;
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.5);
  transition: opacity 0.2s ease;
}

.ed-viewer.is-loading .ed-viewer__img {
  opacity: 0.25;
}

.ed-viewer__btn {
  border: 0;
  background: transparent;
  color: #fff;
  cursor: pointer;
  line-height: 1;
  opacity: 0.85;
}

.ed-viewer__btn:hover,
.ed-viewer__btn:focus-visible {
  opacity: 1;
}

.ed-viewer__close {
  position: absolute;
  top: 10px;
  right: 18px;
  z-index: 2;
  font-size: 2.4rem;
}

.ed-viewer__nav {
  flex: 0 0 auto;
  align-self: stretch;
  width: 3.5rem;
  font-size: 3rem;
}

.ed-viewer__nav[hidden] {
  display: none;
}

.ed-viewer__bar {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  justify-content: center;
  gap: 1rem;
  padding: 0.75rem 1rem;
  font-size: 0.85rem;
  line-height: 1.4;
  pointer-events: none;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.6), transparent);
}

.ed-viewer__caption {
  max-width: 70ch;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ed-viewer__count {
  opacity: 0.7;
  white-space: nowrap;
}

@media (max-width: 575px) {
  .ed-viewer__nav {
    width: 2.25rem;
    font-size: 2.25rem;
  }
}

/* Gallery: thumbnails are cropped squares, so hint that a click opens the uncropped original */
.ed-album__cover img[data-zoomable],
.research-card__media img,
.ed-pillar__figure img {
  cursor: zoom-in;
}

.ed-album__badge {
  pointer-events: none;
}

/* ------------------------------------------------------------
   Responsive Wide Canvas Container (1320px - 1340px)
   Expands narrow 930px default to modern editorial wide viewport
   ------------------------------------------------------------ */
@media (min-width: 1200px) {
  .container {
    max-width: 1240px !important;
  }
}

@media (min-width: 1400px) {
  .container {
    max-width: 1340px !important;
  }
}

/* ============================================================
   Universal Accessible Tab Component (.ace2-tab-container)
   Shared across Research, Facilities, Publications, Members
   ============================================================ */
.ace2-tabnav {
  display: none;
}

.ace2-tab-container.is-tabbed .ace2-tabnav {
  position: sticky;
  top: calc(var(--sticky-navbar) - 1px); /* overlaps fixed navbar by 1px to seal subpixel seam */
  z-index: 10;
  display: flex;
  gap: var(--ed-s1, 0.25rem);
  margin: 0 0 var(--ed-s8, 2rem);
  padding: 1px var(--ed-s1, 0.25rem) 0;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  background: var(--ed-surface, #ffffff);
  border-bottom: 1px solid var(--ed-line, #e2e8f0);
}

@supports (backdrop-filter: blur(1px)) {
  .ace2-tab-container.is-tabbed .ace2-tabnav {
    background: color-mix(in srgb, var(--ed-surface, #ffffff) 98%, transparent);
    -webkit-backdrop-filter: saturate(160%) blur(12px);
    backdrop-filter: saturate(160%) blur(12px);
  }
}

.ace2-tabnav::-webkit-scrollbar {
  display: none;
}

.ace2-tab {
  position: relative;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--ed-s2, 0.5rem);
  margin: 0;
  padding: var(--ed-s3, 0.75rem) var(--ed-s4, 1rem);
  font-family: var(--font-sans-body, "Pretendard Variable", sans-serif);
  font-size: var(--ed-fs-sm, 0.875rem);
  font-weight: 500;
  line-height: 24px;
  letter-spacing: -0.01em;
  white-space: nowrap;
  color: var(--ed-muted, #5b6b82);
  background: none;
  border: 0;
  border-radius: 6px 6px 0 0;
  cursor: pointer;
  transition:
    color 0.15s ease,
    background-color 0.15s ease;
}

.ace2-tab::after {
  content: "";
  position: absolute;
  left: var(--ed-s4, 1rem);
  right: var(--ed-s4, 1rem);
  bottom: -1px;
  height: 2px;
  border-radius: 2px 2px 0 0;
  background: var(--color-knu-crimson, #a3123a);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 0.2s ease;
}

.ace2-tab:hover {
  color: var(--ed-ink, #0f172a);
  background: rgba(163, 18, 58, 0.04);
}

.ace2-tab[aria-selected="true"] {
  font-weight: 600;
  color: var(--ed-ink, #0f172a);
}

.ace2-tab[aria-selected="true"]::after {
  transform: scaleX(1);
}

.ace2-tab:focus-visible {
  outline: 2px solid var(--color-knu-crimson, #a3123a);
  outline-offset: -2px;
}

.ace2-tab__count {
  min-width: 1.5em;
  padding: 0 0.45em;
  font-size: var(--ed-fs-2xs, 0.75rem);
  font-weight: 500;
  line-height: 18px;
  text-align: center;
  color: var(--ed-muted, #5b6b82);
  background: var(--global-code-bg-color, #f1f5f9);
  border-radius: 999px;
}

.ace2-tab[aria-selected="true"] .ace2-tab__count {
  color: var(--color-knu-crimson, #a3123a);
  background: rgba(163, 18, 58, 0.08);
}

.ace2-tabpanel {
  scroll-margin-top: 7rem;
}

.ace2-tabpanel:focus {
  outline: none;
}

.ace2-tabpanel:focus-visible {
  outline: 2px solid var(--color-knu-crimson, #a3123a);
  outline-offset: 4px;
  border-radius: 6px;
}

.ace2-tab-container.is-tabbed .ace2-tabpanel.is-animating {
  animation: ace2-panel-in 0.24s ease both;
}

@keyframes ace2-panel-in {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

@media (max-width: 767.98px) {
  .ace2-tab-container.is-tabbed .ace2-tabnav {
    margin-left: calc(var(--ed-s4, 1rem) * -1);
    margin-right: calc(var(--ed-s4, 1rem) * -1);
    padding: 0 var(--ed-s3, 0.75rem);
  }

  .ace2-tab {
    padding: var(--ed-s3, 0.75rem);
  }

  .ace2-tab::after {
    left: var(--ed-s3, 0.75rem);
    right: var(--ed-s3, 0.75rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  .ace2-tab,
  .ace2-tab::after {
    transition: none;
  }

  .ace2-tab-container.is-tabbed .ace2-tabpanel.is-animating {
    animation: none;
  }
}

@media print {
  .ace2-tab-container.is-tabbed .ace2-tabnav {
    display: none !important;
  }

  .ace2-tabpanel,
  .ace2-tabpanel[hidden] {
    display: block !important;
    animation: none !important;
  }

  .fac-panel-cat {
    display: none !important;
  }
}

/* ------------------------------------------------------------
   Research Pillar Showcase (.ed-pillar)
   ------------------------------------------------------------ */
.ed-pillar {
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--ed-line, #e2e8f0);
  border-radius: 12px;
  padding: var(--ed-s6, 1.5rem);
  margin-bottom: var(--ed-s8, 2rem);
  box-shadow: 0 4px 16px -4px rgba(15, 23, 42, 0.04);
}

.ed-pillar__header {
  margin-bottom: var(--ed-s5, 1.25rem);
  padding-bottom: var(--ed-s4, 1rem);
  border-bottom: 1px solid var(--ed-line, #e2e8f0);
}

.ed-pillar__tag {
  display: inline-block;
  font-family: var(--font-mono-meta, monospace);
  font-size: var(--fs-label);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-knu-crimson, #a3123a);
  background: rgba(163, 18, 58, 0.08);
  padding: 3px 8px;
  border-radius: 4px;
  margin-bottom: 0.5rem;
}

.ed-pillar__title {
  font-family: var(--font-serif-editorial, "Newsreader", serif);
  font-size: 1.65rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--ed-ink, #0f172a);
  margin: 0 0 0.5rem;
  padding-bottom: 0;
  border-bottom: 0; /* .ed-pillar__header already draws the hairline */
}

.ed-pillar__desc {
  font-size: 0.95rem;
  line-height: 1.65;
  color: var(--ed-text, #334155);
  margin: 0;
}

.ed-pillar__figure-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--ed-s4, 1rem);
  margin: var(--ed-s5, 1.25rem) 0;
}

@media (max-width: 767.98px) {
  .ed-pillar__figure-grid {
    grid-template-columns: 1fr;
  }
}

.ed-pillar__figure {
  display: flex;
  flex-direction: column;
  margin: 0;
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid var(--ed-line, #e2e8f0);
  background: #ffffff;
  text-align: center;
}

.ed-pillar__figure-canvas {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 230px;
  padding: 0.75rem 1rem;
  background: #ffffff;
}

.ed-pillar__figure img {
  width: auto;
  max-width: 100%;
  max-height: 206px;
  object-fit: contain;
  display: block;
  margin: 0 auto;
}

.ed-pillar__figure-caption {
  flex: 1 1 auto;
  font-size: var(--fs-label);
  line-height: 1.5;
  color: var(--ed-muted, #64748b);
  padding: 0.6rem 0.9rem;
  background: var(--global-code-bg-color, #f1f5f9);
  border-top: 1px solid var(--ed-line, #e2e8f0);
  text-align: left;
}

.ed-pillar__fig-label {
  font-weight: 700;
  color: var(--ed-ink, #0f172a);
}

.ed-pillar__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--ed-s4, 1rem);
  margin: var(--ed-s6, 1.5rem) 0;
}

.ed-pillar__topic-card {
  background: var(--global-code-bg-color, #f8fafc);
  border: 1px solid var(--ed-line, #e2e8f0);
  border-radius: 8px;
  padding: 1rem 1.15rem;
}

.ed-pillar__topic-title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ed-ink, #0f172a);
  margin: 0 0 0.5rem;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.ed-pillar__topic-title i {
  color: var(--color-knu-crimson, #a3123a);
  font-size: 0.85rem;
}

.ed-pillar__topic-body {
  font-size: var(--fs-body-sm, 0.9375rem);
  line-height: 1.65;
  color: var(--ed-text, #334155);
  margin: 0;
}

.ed-pillar__section-title {
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--ed-ink, #0f172a);
  margin: var(--ed-s6, 1.5rem) 0 var(--ed-s3, 0.75rem);
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.ed-pillar__pub-list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--ed-s6, 1.5rem);
}

.ed-pillar__pub-item {
  position: relative;
  padding: 0.75rem 1rem 0.75rem 1.25rem;
  margin-bottom: 0.5rem;
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--ed-line, #e2e8f0);
  border-left: 3px solid var(--color-knu-crimson, #a3123a);
  border-radius: 0 6px 6px 0;
  font-size: 0.88rem;
  line-height: 1.55;
}

.ed-pillar__pub-journal {
  font-weight: 600;
  color: var(--color-knu-crimson, #a3123a);
  margin-right: 0.4rem;
}

.ed-pillar__pub-title {
  color: var(--ed-ink, #0f172a);
  font-style: italic;
}

.ed-pillar__pub-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--fs-label);
  font-weight: 500;
  margin-left: 0.5rem;
  color: var(--ed-muted, #64748b);
  text-decoration: none;
}

.ed-pillar__pub-link:hover {
  color: var(--color-knu-crimson, #a3123a);
  text-decoration: underline;
}

.ed-pillar__footer-action {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.75rem;
  padding-top: var(--ed-s4, 1rem);
  border-top: 1px dashed var(--ed-line, #e2e8f0);
}

.ed-pillar__crosslink {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: var(--fs-label, 0.875rem);
  font-weight: 500;
  padding: 4px 12px;
  border-radius: 999px;
  background: rgba(30, 58, 95, 0.06);
  color: var(--global-theme-color, #1e3a5f);
  border: 1px solid rgba(30, 58, 95, 0.15);
  text-decoration: none;
  transition: all 0.15s ease;
}

.ed-pillar__crosslink:hover {
  background: var(--global-theme-color, #1e3a5f);
  color: var(--global-hover-text-color, #ffffff) !important; /* #0f172a on steel blue in dark mode */
  text-decoration: none;
}

html[data-theme="dark"] .ed-pillar__crosslink {
  background: rgba(157, 183, 217, 0.1);
  border-color: rgba(157, 183, 217, 0.3);
}

/* ------------------------------------------------------------
   Chem Frontier — 2026 finals field (overview highlight + university chip grid)
   ------------------------------------------------------------ */
.cf-competition-highlight {
  margin: 0 0 var(--ed-s5, 1.25rem);
  padding: 0.9rem 1.1rem;
  background: rgba(217, 83, 15, 0.06);
  border: 1px solid rgba(217, 83, 15, 0.28);
  border-left: 4px solid #d9530f;
  border-radius: 8px;
}

html[data-theme="dark"] .cf-competition-highlight {
  background: rgba(243, 112, 33, 0.1);
  border-color: rgba(243, 112, 33, 0.35);
  border-left-color: #ff9248;
}

.cf-competition-highlight__title {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  margin: 0 0 0.35rem;
  font-size: 1.02rem;
  font-weight: 700;
  line-height: 1.45;
  color: var(--ed-ink, #0f172a);
}

.cf-competition-highlight__title i {
  margin-top: 0.2rem;
  color: #d9530f;
}

html[data-theme="dark"] .cf-competition-highlight__title i {
  color: #ff9248;
}

.cf-competition-highlight__desc {
  margin: 0;
  font-size: var(--fs-body-sm, 0.9375rem);
  line-height: 1.68;
  color: var(--ed-text, #334155);
}

.cf-field-container {
  margin: 0 0 var(--ed-s6, 1.5rem);
  padding: var(--ed-s5, 1.25rem);
  background: var(--global-code-bg-color, #f8fafc);
  border: 1px solid var(--ed-line, #e2e8f0);
  border-radius: 8px;
}

.cf-field-container .ed-pillar__section-title {
  margin-top: 0;
}

.cf-field-container > .ed-pillar__topic-body {
  margin-bottom: var(--ed-s4, 1rem);
}

.cf-field-group + .cf-field-group {
  margin-top: var(--ed-s4, 1rem);
}

.cf-field-category {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  margin: 0 0 0.5rem;
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.4;
  color: var(--ed-muted, #64748b);
}

.cf-field-category__count {
  padding: 0 0.5rem;
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  color: var(--ed-text, #334155);
  border: 1px solid var(--ed-line, #e2e8f0);
  border-radius: 999px;
}

.cf-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.cf-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.25rem 0.7rem;
  font-size: var(--fs-label, 0.875rem);
  line-height: 1.4;
  color: var(--ed-text, #334155);
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--ed-line, #e2e8f0);
  border-radius: 999px;
}

html[data-theme="dark"] .cf-chip {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.14);
}

.cf-chip--winner {
  font-weight: 700;
  color: #8a0f31;
  background: rgba(163, 18, 58, 0.08);
  border-color: #a3123a;
}

html[data-theme="dark"] .cf-chip--winner {
  color: #ffd1dc;
  background: rgba(255, 122, 150, 0.16);
  border-color: rgba(255, 122, 150, 0.55);
}

.cf-chip--winner i {
  font-size: 0.875rem;
}

.cf-chip__tag {
  padding: 0 0.45rem;
  font-size: var(--fs-label);
  font-weight: 600;
  color: #ffffff;
  background: #a3123a;
  border-radius: 999px;
}

html[data-theme="dark"] .cf-chip__tag {
  color: #3b0a17;
  background: #ff9db3;
}

.cf-field-note {
  margin: var(--ed-s4, 1rem) 0 0;
  font-size: var(--fs-label);
  line-height: 1.5;
  color: var(--ed-muted, #64748b);
}

@media (max-width: 520px) {
  .cf-field-container {
    padding: var(--ed-s4, 1rem);
  }

  .cf-chip {
    font-size: 0.875rem;
  }
}

/* ------------------------------------------------------------
   Funding acknowledgment & press coverage (publications, awards)
   ------------------------------------------------------------ */
.ed-entry__funding {
  margin-top: 2px;
  font-size: var(--fs-label);
  line-height: 1.5;
  color: var(--global-text-color-light);
}

.ed-entry__funding .ed-label {
  margin-right: 0.5rem;
  font-weight: 600;
  color: var(--global-text-color-light);
}

.ed-entry__press {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ed-s2); /* hook/bib.liquid emits press + Naver pills back-to-back */
  margin-top: 4px;
}

.ed-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 1px 10px;
  border: 1px solid var(--global-divider-color);
  border-radius: 999px;
  font-size: var(--fs-label);
  font-weight: 500;
  line-height: 20px;
  text-decoration: none;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease,
    color 0.2s ease,
    transform 0.2s ease;
}

.ed-pill--press {
  border-color: rgba(15, 118, 110, 0.35);
  background: rgba(15, 118, 110, 0.07);
  color: #0f766e;
}

.ed-pill--press:hover {
  border-color: #0f766e;
  background: #0f766e;
  color: #ffffff;
  text-decoration: none;
  transform: translateY(-1px);
}

.ed-ext-icon {
  font-size: 0.75em;
  opacity: 0.75;
}

html[data-theme="dark"] .ed-pill--press {
  border-color: rgba(94, 234, 212, 0.35);
  background: rgba(94, 234, 212, 0.08);
  color: #5eead4;
}

html[data-theme="dark"] .ed-pill--press:hover {
  border-color: #5eead4;
  background: #5eead4;
  color: var(--global-hover-text-color, #0f172a);
}

/* ------------------------------------------------------------
   Touch targets: 44px minimum on coarse pointers (WCAG 2.5.5)
   ------------------------------------------------------------ */
@media (pointer: coarse) {
  .ace2-tab,
  .team-tab,
  .pub-year-chip,
  .ed-pill,
  .pi-action-btn,
  .ed-pillar__crosslink,
  a.hero-badge,
  .ed-album__expansion-toggle {
    min-height: 44px;
  }

  .ed-index a,
  .publications .links a.btn {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

  .pub-year-chip {
    padding-left: 12px;
    padding-right: 12px;
  }
}

/* ------------------------------------------------------------
   News: Awards & Press cards (year group + responsive card grid)
   Replaces the narrow .ed-rail rows on /news/ so entries fill the
   full content width instead of leaving a 600px+ empty gutter.
   ------------------------------------------------------------ */
.ed-yeargroup + .ed-yeargroup {
  margin-top: var(--ed-s8);
}

.ed-yeargroup__year {
  display: flex;
  align-items: center;
  gap: var(--ed-s3);
  margin: 0 0 var(--ed-s4);
  font-family: var(--font-mono-meta);
  font-size: var(--ed-fs-md);
  font-weight: 600;
  line-height: 24px;
  letter-spacing: 0.02em;
  color: var(--ed-ink);
}

.ed-yeargroup__year::after {
  content: "";
  flex: 1 1 auto;
  height: 1px;
  background: var(--ed-line);
}

.ed-yeargroup__count {
  order: 1; /* sits after the hairline, right-aligned */
  padding: 0 var(--ed-s2);
  border-radius: 999px;
  background: var(--c-surface-alt, #f1f5f9);
  font-size: var(--ed-fs-2xs);
  font-weight: 500;
  line-height: 20px;
  color: var(--ed-muted);
}

.ed-cardgrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 420px), 1fr));
  gap: var(--ed-s4);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Tier palette: fg on tint (>= 4.5:1), accent for the left rule */
.ed-award-card {
  --tier-fg: #334155;
  --tier-bg: #f1f5f9;
  --tier-accent: #64748b;
}

.ed-award-card--crimson,
.ed-tier--crimson {
  --tier-fg: #a3123a;
  --tier-bg: rgba(163, 18, 58, 0.08);
  --tier-accent: #a3123a;
}

.ed-award-card--amber,
.ed-tier--amber {
  --tier-fg: #92400e;
  --tier-bg: rgba(180, 83, 9, 0.1);
  --tier-accent: #b45309;
}

.ed-award-card--navy,
.ed-tier--navy {
  --tier-fg: #1e3a5f;
  --tier-bg: rgba(30, 58, 95, 0.08);
  --tier-accent: #1e3a5f;
}

.ed-award-card--purple,
.ed-tier--purple {
  --tier-fg: #6d28d9;
  --tier-bg: rgba(124, 58, 237, 0.09);
  --tier-accent: #7c3aed;
}

.ed-award-card--teal,
.ed-tier--teal {
  --tier-fg: #0f766e;
  --tier-bg: rgba(15, 118, 110, 0.09);
  --tier-accent: #0f766e;
}

html[data-theme="dark"] .ed-award-card--crimson,
html[data-theme="dark"] .ed-tier--crimson {
  --tier-fg: #f0708f;
  --tier-bg: rgba(240, 112, 143, 0.14);
  --tier-accent: #f0708f;
}

html[data-theme="dark"] .ed-award-card--amber,
html[data-theme="dark"] .ed-tier--amber {
  --tier-fg: #fcd34d;
  --tier-bg: rgba(251, 191, 36, 0.14);
  --tier-accent: #fbbf24;
}

html[data-theme="dark"] .ed-award-card--navy,
html[data-theme="dark"] .ed-tier--navy {
  --tier-fg: #9db7d9;
  --tier-bg: rgba(157, 183, 217, 0.14);
  --tier-accent: #9db7d9;
}

html[data-theme="dark"] .ed-award-card--purple,
html[data-theme="dark"] .ed-tier--purple {
  --tier-fg: #c4b5fd;
  --tier-bg: rgba(167, 139, 250, 0.16);
  --tier-accent: #a78bfa;
}

html[data-theme="dark"] .ed-award-card--teal,
html[data-theme="dark"] .ed-tier--teal {
  --tier-fg: #5eead4;
  --tier-bg: rgba(94, 234, 212, 0.12);
  --tier-accent: #5eead4;
}

.ed-award-card,
.ed-press-card {
  position: relative;
  display: flex;
  gap: var(--ed-s4);
  min-width: 0;
  margin: 0;
  padding: var(--ed-s4);
  border: 1px solid var(--ed-line);
  border-radius: 12px;
  background: var(--global-card-bg-color, #fff);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
  transition:
    box-shadow 0.2s ease,
    transform 0.2s ease,
    border-color 0.2s ease;
}

.ed-award-card {
  align-items: flex-start;
  border-left: 4px solid var(--tier-accent);
}

.ed-award-card:hover,
.ed-press-card:hover {
  box-shadow: 0 8px 22px -12px rgba(15, 23, 42, 0.25);
  transform: translateY(-1px);
}

html[data-theme="dark"] .ed-award-card:hover,
html[data-theme="dark"] .ed-press-card:hover {
  box-shadow: 0 8px 22px -12px rgba(0, 0, 0, 0.6);
}

.ed-award-card__thumb {
  position: relative;
  flex: 0 0 110px;
  width: 110px;
  height: 150px;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--ed-line);
  border-radius: 6px;
  background: var(--global-code-bg-color, #f1f5f9);
  box-shadow: 0 2px 8px rgba(15, 23, 42, 0.1);
  cursor: zoom-in;
}

.ed-award-card__thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  transition: transform 0.2s ease;
}

.ed-award-card__thumb:hover img,
.ed-award-card__thumb:focus-visible img {
  transform: scale(1.05);
}

.ed-award-card__thumb:focus-visible {
  outline: 2px solid var(--ed-accent);
  outline-offset: 2px;
}

/* Zoom affordance: corner chip, always visible (touch has no hover) */
.ed-award-card__zoom {
  position: absolute;
  right: 4px;
  bottom: 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: rgba(15, 23, 42, 0.78);
  color: #fff;
  font-size: 0.875rem;
  pointer-events: none;
}

/* Non-interactive emblem thumb for awards awaiting original scan */

.ed-award-card__body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--ed-s2);
  flex: 1 1 auto;
  min-width: 0;
}

.ed-tier {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 1px 10px;
  border: 1px solid var(--tier-accent, currentColor);
  border-radius: 999px;
  background: var(--tier-bg);
  color: var(--tier-fg);
  font-family: var(--font-mono-meta);
  font-size: var(--ed-fs-2xs);
  font-weight: 600;
  line-height: 20px;
  letter-spacing: 0.02em;
}

.ed-award-card__title {
  margin: 0;
  font-family: var(--font-editorial);
  font-size: var(--ed-fs-md);
  font-weight: 600;
  line-height: 24px;
  letter-spacing: -0.015em;
  color: var(--ed-ink);
  text-wrap: pretty;
}

.ed-award-card__meta {
  display: grid;
  gap: 2px;
  margin: 0;
}

.ed-award-card__meta > div {
  display: grid;
  grid-template-columns: 1.25rem minmax(0, 1fr);
  align-items: baseline;
}

.ed-award-card__meta dt {
  margin: 0;
  font-weight: 400;
  color: var(--tier-fg);
  text-align: center;
}

.ed-award-card__meta dd {
  margin: 0;
  font-size: var(--ed-fs-sm);
  line-height: 20px;
  color: var(--ed-text);
}

.ed-award-card__press {
  margin-top: var(--ed-s1);
}

/* Press cards */
.ed-press-card {
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  gap: var(--ed-s3);
  border-left: 4px solid #0284c7;
}

html[data-theme="dark"] .ed-press-card {
  border-left-color: #38bdf8;
}

.ed-press-card__top {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ed-s2);
}

.ed-media {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 2px 10px;
  border-radius: 999px;
  color: #fff;
  font-size: var(--ed-fs-2xs);
  font-weight: 600;
  line-height: 20px;
  letter-spacing: -0.005em;
}

.ed-media--navy {
  background: #1e3a5f; /* white text 11.6:1 */
}

.ed-media--crimson {
  background: #a3123a; /* white text 7.8:1 */
}

html[data-theme="dark"] .ed-media {
  color: #0f172a;
}

html[data-theme="dark"] .ed-media--navy {
  background: #9db7d9;
}

html[data-theme="dark"] .ed-media--crimson {
  background: #f0708f;
}

.ed-datepill {
  padding: 1px 8px;
  border: 1px solid var(--ed-line);
  border-radius: 999px;
  background: var(--c-surface-alt, #f1f5f9);
  font-family: var(--font-mono-meta);
  font-size: var(--ed-fs-2xs);
  line-height: 20px;
  color: var(--ed-muted);
}

html[data-theme="dark"] .ed-datepill {
  background: rgba(148, 163, 184, 0.1);
}

.ed-press-card__title {
  margin: 0;
  font-family: var(--font-editorial);
  font-size: var(--ed-fs-md);
  font-weight: 600;
  line-height: 24px;
  letter-spacing: -0.015em;
  text-wrap: pretty;
}

.ed-press-card__title a {
  color: var(--ed-ink);
  text-decoration: none;
}

.ed-press-card__title a:hover,
.ed-press-card__title a:focus-visible {
  color: var(--ed-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Whole card is clickable via the title link's stretched hit area */
.ed-press-card__title a::after {
  content: "";
  position: absolute;
  inset: 0;
}

.ed-press-card:focus-within {
  border-color: var(--ed-accent);
}

.ed-press-card--media {
  flex-direction: row;
  align-items: flex-start;
}

.ed-press-card--media .ed-award-card__thumb {
  position: relative;
  z-index: 2;
  flex: 0 0 130px;
  width: 130px;
  height: 95px;
}

.ed-press-card--media .ed-press-card__content {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--ed-s2);
}

@media (max-width: 640px) {
  .ed-press-card--media {
    flex-direction: column;
  }

  .ed-press-card--media .ed-award-card__thumb {
    flex-basis: auto;
    width: 100%;
    height: 150px;
  }
}

.ed-pill--paper {
  position: relative; /* stays above the stretched title link */
  border-color: rgba(30, 58, 95, 0.35);
  background: rgba(30, 58, 95, 0.07);
  color: #1e3a5f;
}

.ed-pill--paper:hover {
  background: #1e3a5f;
  color: #fff;
  text-decoration: none;
}

html[data-theme="dark"] .ed-pill--paper {
  border-color: rgba(157, 183, 217, 0.35);
  background: rgba(157, 183, 217, 0.1);
  color: #9db7d9;
}

html[data-theme="dark"] .ed-pill--paper:hover {
  background: #9db7d9;
  color: #0f172a;
}

/* The press pill inside an award card must sit above nothing else, but keep it tappable */
.ed-award-card__press {
  position: relative;
}

@media (max-width: 575.98px) {
  .ed-award-card {
    padding: var(--ed-s3);
    gap: var(--ed-s3);
  }

  .ed-award-card__thumb {
    flex-basis: 88px;
    width: 88px;
    height: 120px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ed-award-card,
  .ed-press-card,
  .ed-award-card__thumb img {
    transition: none;
  }

  .ed-award-card:hover,
  .ed-press-card:hover {
    transform: none;
  }
}

/* ------------------------------------------------------------
   Publications — PI filter (International Journals panel)
   Native radio group rendered as segmented pills. .is-pi-hidden
   (entries) and .is-pi-empty (year headings, lists, chips) stay
   separate from bibsearch's .unloaded, so search AND PI compose.
   ------------------------------------------------------------ */
.publications .is-pi-hidden,
.publications .is-pi-empty,
.pub-year-chip.is-pi-empty {
  display: none !important;
}

.pub-pi-filter {
  position: relative;
  min-width: 0;
  margin: 0 0 var(--ed-s3);
  padding: var(--ed-s2) var(--ed-s3);
  background: var(--ed-surface);
  border: 1px solid var(--ed-line);
  border-radius: 8px;
}

.pub-pi-filter[hidden] {
  display: none;
}

.pub-pi-filter__legend {
  float: left;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  width: auto;
  max-width: none;
  margin: 0 var(--ed-s3) 0 0;
  padding: 4px var(--ed-s2) 4px 0;
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 600;
  line-height: 18px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-knu-crimson, #b8132b);
  white-space: nowrap;
  border-right: 1px solid var(--ed-line);
}

/* Bootstrap reboot clears the element after a floated legend; keep the pills beside it */
.pub-pi-filter__legend + * {
  clear: none;
}

.pub-pi-filter__options {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

/* Native radios stay focusable and keyboard-operable (arrow keys); only the visual is hidden */
.pub-pi-filter__input,
.pub-pi-filter__status {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.pub-pi-filter__pill {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.3em;
  margin: 0;
  padding: 3px 11px;
  border-radius: 9999px;
  font-size: var(--fs-label);
  font-weight: 500;
  line-height: 18px;
  color: var(--ed-muted);
  background: var(--c-surface-alt);
  border: 1px solid var(--ed-line);
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
  transition:
    color 0.15s ease,
    background-color 0.15s ease,
    border-color 0.15s ease;
}

.pub-pi-filter__input:not(:checked) + .pub-pi-filter__pill:hover {
  color: var(--color-knu-crimson, #b8132b);
  background: var(--color-knu-crimson-soft, rgba(184, 19, 43, 0.06));
  border-color: var(--color-knu-crimson, #b8132b);
}

.pub-pi-filter__input:checked + .pub-pi-filter__pill {
  font-weight: 600;
  color: #ffffff;
  background: var(--c-accent-fill);
  border-color: var(--c-accent-fill);
  box-shadow: 0 2px 6px rgba(163, 18, 58, 0.25);
}

.pub-pi-filter__input:focus-visible + .pub-pi-filter__pill {
  outline: 2px solid var(--color-knu-crimson, #b8132b);
  outline-offset: 2px;
}

.pub-pi-filter__count {
  font-family: var(--font-mono-meta);
  font-weight: 500;
}

.pub-pi-filter__note {
  clear: both;
  margin: calc(-1 * var(--ed-s2)) 0 var(--ed-s4);
  font-size: var(--fs-label);
  line-height: 1.5;
  color: var(--c-muted);
}

/* Member Card Research Deep-Link (Option A: minimal hover underline) */
.member-meta__research-link {
  color: inherit;
  text-decoration: none;
  transition: color 0.15s ease;
}

.member-meta__research-link:hover,
.member-meta__research-link:focus-visible {
  color: var(--color-knu-crimson, #a3123a);
  text-decoration: underline;
  text-underline-offset: 3px;
}

html[data-theme="dark"] .member-meta__research-link:hover,
html[data-theme="dark"] .member-meta__research-link:focus-visible {
  color: #f0708f;
}

/* Publications Top Research Pillar Crosslink Bar */
.pub-research-crosslinks {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem 1rem;
  margin: calc(-1 * var(--ed-s2)) 0 var(--ed-s4);
}

.pub-research-crosslinks .pub-pi-filter__note {
  margin: 0;
}

.pub-research-crosslinks__chips {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.pub-research-crosslinks__label {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-family: var(--font-mono-meta);
  font-size: var(--fs-label);
  font-weight: 600;
  color: var(--ed-muted);
  margin-right: 2px;
}

.pub-research-crosslinks__label i {
  color: var(--color-knu-crimson, #a3123a);
}

.pub-research-crosslinks__chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: var(--fs-label);
  font-weight: 500;
  line-height: 18px;
  background: rgba(30, 58, 95, 0.06);
  color: var(--global-theme-color, #1e3a5f);
  border: 1px solid rgba(30, 58, 95, 0.16);
  text-decoration: none;
  white-space: nowrap;
  transition:
    background-color 0.15s ease,
    border-color 0.15s ease,
    color 0.15s ease;
}

.pub-research-crosslinks__chip:hover,
.pub-research-crosslinks__chip:focus-visible {
  background: var(--global-theme-color, #1e3a5f);
  color: var(--global-hover-text-color, #ffffff) !important;
  border-color: var(--global-theme-color, #1e3a5f);
  text-decoration: none;
}

html[data-theme="dark"] .pub-research-crosslinks__chip {
  background: rgba(157, 183, 217, 0.1);
  border-color: rgba(157, 183, 217, 0.28);
}

.pub-research-crosslinks--members {
  margin: 0 0 1.25rem;
}

@media (pointer: coarse) {
  .pub-research-crosslinks__chip {
    min-height: 44px;
    padding-left: 12px;
    padding-right: 12px;
  }
}

/* xs: drop the honorific visually (still announced), stack the legend above the pills */
@media (max-width: 575.98px) {
  .pub-pi-filter__legend {
    width: 100%; /* stays floated so it never snaps into the fieldset border */
    margin: 0 0 var(--ed-s2);
    padding: 0;
    border-right: 0;
  }

  .pub-pi-filter__legend + * {
    clear: left;
  }

  .pub-pi-filter__honorific {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
  }
}

@media (pointer: coarse) {
  .pub-pi-filter__pill {
    min-height: 44px;
    padding-left: 14px;
    padding-right: 14px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .pub-pi-filter__pill {
    transition: none;
  }
}

.ed-presenter--lead {
  font-weight: 700;
  color: var(--c-ink);
}

/* ============================================================
   4-Language Navbar Switcher (KO · EN · JA · ZH)
   ============================================================ */
.ace2-lang-nav-item {
  display: flex;
  align-items: center;
  margin-left: 0.35rem;
  margin-right: 0.25rem;
}

.ace2-lang-switcher {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px;
  border-radius: 999px;
  background: var(--c-surface-alt, #f1f5f9);
  border: 1px solid var(--color-line-strong, #cbd5e1);
}

html[data-theme="dark"] .ace2-lang-switcher {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.16);
}

.ace2-lang-btn {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--c-muted, #4b5a70);
  font-family: var(--font-sans-body);
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.01em;
  padding: 5px 9px;
  border-radius: 999px;
  cursor: pointer;
  white-space: nowrap;
  transition:
    background-color 0.15s ease,
    color 0.15s ease,
    box-shadow 0.15s ease;
}

.ace2-lang-btn:hover {
  color: var(--c-ink, #0f172a);
  background: rgba(15, 23, 42, 0.06);
}

html[data-theme="dark"] .ace2-lang-btn:hover {
  color: #ffffff;
  background: rgba(255, 255, 255, 0.1);
}

.ace2-lang-btn.is-active,
.ace2-lang-btn[aria-pressed="true"] {
  background: var(--c-accent-fill, #a3123a);
  color: #ffffff;
  box-shadow: 0 1px 3px rgba(163, 18, 58, 0.35);
}

.ace2-lang-btn:focus-visible {
  outline: 2px solid var(--color-knu-crimson, #a3123a);
  outline-offset: 2px;
}

@media (max-width: 991.98px) {
  .ace2-lang-nav-item {
    margin: 0.5rem 0;
  }
}

/* ------------------------------------------------------------
   ACE² Lab — Academic Rich Static Footer & Back-to-Top FAB
   ------------------------------------------------------------ */
body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

body > .container,
body > main,
body > [role="main"] {
  flex: 1 0 auto;
}

footer.site-footer {
  margin-top: auto;
  position: static;
  width: 100%;
  padding: 2.75rem 1rem 2.25rem;
  background: var(--global-bg-color, #ffffff);
  border-top: 1px solid var(--global-divider-color, #e2e8f0);
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease;
}

html[data-theme="dark"] footer.site-footer {
  background: #14171d;
  border-top: 1px solid rgba(148, 163, 184, 0.12);
}

.footer-lab-name {
  font-family: var(--font-editorial);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--global-text-color, #334155);
  margin-bottom: 0.35rem;
}

html[data-theme="dark"] .footer-lab-name {
  color: #f1f5f9;
}

.footer-affiliation {
  font-size: 0.82rem;
  line-height: 1.55;
  color: var(--global-text-color-light, #64748b);
  margin-bottom: 0.25rem;
}

html[data-theme="dark"] .footer-affiliation {
  color: #94a3b8;
}

.footer-location {
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--global-text-color-light, #64748b);
  opacity: 0.88;
  margin-bottom: 0.9rem;
}

html[data-theme="dark"] .footer-location {
  color: #8292a6;
}

.footer-meta {
  font-size: var(--fs-label, 0.875rem);
  color: #475569;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.4rem;
  padding-top: 0.75rem;
  border-top: 1px dashed var(--global-divider-color, #e2e8f0);
  max-width: 640px;
  margin: 0 auto;
}

html[data-theme="dark"] .footer-meta {
  border-top-color: rgba(148, 163, 184, 0.12);
  color: #94a3b8;
}

.footer-visitors {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-variant-numeric: tabular-nums;
}

.footer-visitors[hidden] {
  display: none !important;
}

.footer-meta a {
  color: var(--global-theme-color, #1e3a5f);
  text-decoration: none;
}

.footer-meta a:hover {
  text-decoration: underline;
}

.footer-divider {
  user-select: none;
  opacity: 0.45;
}

/* Back-to-Top Floating Action Button isolation */

@media (max-width: 767.98px) {
  footer.site-footer {
    padding: 2.25rem 1rem 1.75rem;
  }
  .footer-lab-name {
    font-size: 0.88rem;
  }
  .footer-affiliation {
    font-size: 0.875rem;
  }
  .footer-location {
    font-size: 0.875rem;
  }
}

/* --------------------------------------------------------------------------
   AI-Native Operations & AI Staff Card Styles
   -------------------------------------------------------------------------- */
.ai-operations-section {
  margin: 3.5rem 0 2.5rem;
}

.ai-operations-card {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 2.25rem;
  padding: 2rem 2.25rem;
  background: var(--surface-card, #ffffff);
  border: 1px solid var(--border-subtle, #e2e8f0);
  border-left: 4px solid #6366f1;
  border-radius: 14px;
  box-shadow: 0 4px 20px rgba(15, 23, 42, 0.05);
  transition:
    transform 0.2s ease,
    box-shadow 0.2s ease;
}

html[data-theme="dark"] .ai-operations-card {
  background: var(--surface-card, #1e293b);
  border-color: var(--border-subtle, #334155);
  border-left-color: #818cf8;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}

.ai-operations-card__avatar-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex-shrink: 0;
  gap: 0.65rem;
}

.ai-operations-card__avatar {
  width: 104px;
  height: 104px;
  border-radius: 50%;
  object-fit: cover;
  border: 3px solid #6366f1;
  box-shadow: 0 4px 12px rgba(99, 102, 241, 0.2);
}

.ai-operations-card__badge {
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  padding: 0.2rem 0.6rem;
  border-radius: 9999px;
  background: #ede9fe;
  color: #5b21b6;
  text-transform: uppercase;
}

html[data-theme="dark"] .ai-operations-card__badge {
  background: rgba(129, 140, 248, 0.2);
  color: #c7d2fe;
}

.ai-operations-card__content {
  flex: 1;
  min-width: 0;
}

.ai-operations-card__header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-bottom: 0.5rem;
}

.ai-operations-card__title {
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--text-primary, #0f172a);
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: 0.75rem;
  flex-wrap: wrap;
}

html[data-theme="dark"] .ai-operations-card__title {
  color: var(--text-primary, #f8fafc);
}

.ai-operations-card__name {
  font-size: 0.95rem;
  font-weight: 600;
  color: #6366f1;
}

html[data-theme="dark"] .ai-operations-card__name {
  color: #818cf8;
}

.ai-operations-card__profile-link {
  font-size: 0.85rem;
  font-weight: 600;
  color: #6366f1;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  transition: gap 0.15s ease;
}

.ai-operations-card__profile-link:hover {
  gap: 0.55rem;
  color: #4f46e5;
  text-decoration: underline;
}

html[data-theme="dark"] .ai-operations-card__profile-link {
  color: #a5b4fc;
}

.ai-operations-card__slogan {
  font-size: 0.96rem;
  font-weight: 700;
  color: var(--text-primary, #1e293b);
  margin: 0 0 0.5rem;
  line-height: 1.5;
}

html[data-theme="dark"] .ai-operations-card__slogan {
  color: var(--text-primary, #e2e8f0);
}

.ai-operations-card__desc {
  font-size: 0.88rem;
  color: var(--text-secondary, #475569);
  margin: 0 0 1rem;
  line-height: 1.6;
}

html[data-theme="dark"] .ai-operations-card__desc {
  color: var(--text-secondary, #94a3b8);
}

.ai-operations-card__duties {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 0.55rem;
}

.ai-duty-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  color: var(--text-secondary, #334155);
  background: var(--surface-subtle, #f1f5f9);
  padding: 0.4rem 0.75rem;
  border-radius: 8px;
  border: 1px solid var(--border-subtle, #e2e8f0);
}

html[data-theme="dark"] .ai-duty-chip {
  color: var(--text-secondary, #cbd5e1);
  background: var(--surface-subtle, #0f172a);
  border-color: var(--border-subtle, #334155);
}

.ai-duty-chip i {
  color: #6366f1;
}

html[data-theme="dark"] .ai-duty-chip i {
  color: #818cf8;
}

/* Members Page AI Executive Concierge Banner (1310px Full-Width Compact Strip) */
.ai-concierge-banner {
  margin: 0 0 1.25rem;
  scroll-margin-top: 8rem;
}

.member-card.member-card--ai {
  display: grid;
  grid-template-columns: 92px minmax(280px, 1fr) minmax(380px, 1.32fr);
  align-items: center;
  gap: 1.5rem;
  padding: 1.15rem 1.5rem;
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.045) 0%, rgba(99, 102, 241, 0) 52%), var(--tm-surface, #ffffff);
  border: 1px solid var(--tm-line, #e2e8f0);
  border-left: 4px solid #6366f1;
  border-radius: 12px;
  box-shadow: 0 3px 12px rgba(15, 23, 42, 0.04);
  transition:
    box-shadow 0.2s ease,
    border-color 0.2s ease;
}

.member-card.member-card--ai:hover {
  box-shadow: 0 6px 18px rgba(99, 102, 241, 0.12);
  border-color: rgba(99, 102, 241, 0.45);
  border-left-color: #6366f1;
}

html[data-theme="dark"] .member-card.member-card--ai {
  background: linear-gradient(135deg, rgba(129, 140, 248, 0.09) 0%, rgba(129, 140, 248, 0) 52%), var(--tm-surface, #23262b);
  border-color: var(--tm-line, rgba(148, 163, 184, 0.18));
  border-left-color: #818cf8;
  box-shadow: none;
}

html[data-theme="dark"] .member-card.member-card--ai:hover {
  border-color: rgba(129, 140, 248, 0.55);
  border-left-color: #818cf8;
}

.member-card--ai .member-card__photo-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.45rem;
  width: 92px;
  flex-shrink: 0;
}

.member-card--ai .member-card__photo {
  width: 82px;
  height: 82px;
  border-radius: 50%;
  object-fit: cover;
  border: 2.5px solid #6366f1;
  box-shadow: 0 3px 10px rgba(99, 102, 241, 0.18);
}

html[data-theme="dark"] .member-card--ai .member-card__photo {
  border-color: #818cf8;
}

.member-card__badge--ai {
  display: inline-block;
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.25;
  padding: 0.18rem 0.55rem;
  border-radius: 9999px;
  background: #ede9fe;
  color: #5b21b6;
  border: 1px solid rgba(99, 102, 241, 0.3);
  white-space: nowrap;
}

html[data-theme="dark"] .member-card__badge--ai {
  background: rgba(129, 140, 248, 0.18);
  color: #ddd6fe;
  border-color: rgba(129, 140, 248, 0.38);
}

.member-card--ai .member-card__identity {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.member-card--ai .member-card__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  color: #4f46e5;
  margin-bottom: 0.2rem;
}

html[data-theme="dark"] .member-card--ai .member-card__eyebrow {
  color: #a5b4fc;
}

.member-card--ai .member-card__name {
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.3;
  margin: 0 0 0.35rem;
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  color: var(--tm-ink, #0f172a);
}

.member-card--ai .member-card__name-en {
  display: inline;
  font-size: 0.875rem;
  font-weight: 400;
  color: var(--tm-muted, #4b5a70);
}

.member-card--ai .member-card__role-line {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.65rem;
  margin-bottom: 0.4rem;
}

.member-card--ai .member-card__role-pill {
  display: inline-flex;
  align-items: center;
  padding: 0.18rem 0.65rem;
  border-radius: 6px;
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.35;
  background: #eef2ff;
  color: #3730a3;
  border: 1px solid rgba(99, 102, 241, 0.35);
}

html[data-theme="dark"] .member-card--ai .member-card__role-pill {
  background: rgba(129, 140, 248, 0.18);
  color: #e0e7ff;
  border-color: rgba(129, 140, 248, 0.42);
}

.member-card--ai .member-card__period {
  font-size: 0.875rem;
  color: var(--tm-muted, #64748b);
  font-weight: 500;
}

.member-card--ai .member-card__summary {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--tm-ink, #1e293b);
  margin: 0 0 0.25rem;
  line-height: 1.45;
}

.member-card--ai .member-card__affil {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  font-size: 0.875rem;
  color: var(--tm-muted, #475569);
  margin: 0;
  line-height: 1.4;
}

.member-card--ai .member-card__affil-sep {
  color: var(--tm-faint, #94a3b8);
}

.member-card--ai .member-card__link {
  font-size: 0.875rem;
  font-weight: 600;
  color: #4f46e5;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  transition: gap 0.15s ease;
}

html[data-theme="dark"] .member-card--ai .member-card__link {
  color: #a5b4fc;
}

.member-card--ai .member-card__link:hover {
  text-decoration: underline;
  gap: 0.45rem;
}

.member-card--ai .member-card__duties {
  min-width: 0;
  width: 100%;
  border-left: 1px solid var(--tm-line, #e2e8f0);
  padding-left: 1.5rem;
}

.member-duties-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.45rem 1rem;
}

.member-duties-list li {
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--tm-text, #334155);
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
  min-width: 0;
}

.member-duties-list li:first-child {
  grid-column: 1 / -1;
}

.member-duties-list li i {
  color: #4f46e5;
  font-size: 0.875rem;
  flex-shrink: 0;
}

html[data-theme="dark"] .member-duties-list li i {
  color: #818cf8;
}

@media (max-width: 1079.98px) {
  .member-card.member-card--ai {
    grid-template-columns: 92px minmax(0, 1fr);
    gap: 1.15rem 1.25rem;
  }
  .member-card--ai .member-card__duties {
    grid-column: 1 / -1;
    border-left: 0;
    border-top: 1px solid var(--tm-line, #e2e8f0);
    padding-left: 0;
    padding-top: 0.9rem;
  }
}

@media (max-width: 767.98px) {
  .ai-operations-card {
    flex-direction: column;
    text-align: center;
    padding: 1.5rem 1.25rem;
  }
  .ai-operations-card__header {
    justify-content: center;
  }
  .ai-operations-card__title {
    justify-content: center;
  }
  .ai-operations-card__duties {
    grid-template-columns: 1fr;
    text-align: left;
  }
  .member-card.member-card--ai {
    grid-template-columns: 1fr;
    align-items: flex-start;
    padding: 1.25rem;
    gap: 0.9rem;
  }
  .member-card--ai .member-card__photo-wrap {
    flex-direction: row;
    width: auto;
    gap: 0.75rem;
  }
  .member-card--ai .member-card__photo {
    width: 68px;
    height: 68px;
  }
  .member-card--ai .member-card__affil-sep {
    display: none;
  }
  .member-duties-list {
    grid-template-columns: 1fr;
  }
}

/* ------------------------------------------------------------
   Anchor offsets: land below the fixed navbar (and the sticky tab bar where one exists)
   ------------------------------------------------------------ */
#contact,
#research-areas,
#ai-operations,
#about-lab-title,
.pub-cover-card {
  scroll-margin-top: 90px;
}

.home-section-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 2rem;
  margin-bottom: 0.85rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--global-divider-color);
}

.home-section-header h2 {
  margin: 0;
  padding: 0;
  border-bottom: 0;
}

.lab-contact-strip {
  margin: 2.5rem 0 1rem;
  padding: 1.5rem 1.75rem;
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--global-divider-color, #e2e8f0);
  border-radius: 12px;
}

.lab-contact-strip__header {
  margin-bottom: 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--global-divider-color, #e2e8f0);
}

.lab-contact-strip__title {
  margin: 0 0 0.35rem;
  padding: 0;
  border: 0;
  font-size: 1.2rem;
  font-weight: 600;
}

.lab-contact-strip__address {
  margin: 0;
  font-size: 0.9375rem;
  color: var(--c-muted);
}

.lab-contact-strip__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 0.85rem 1.5rem;
}

.lab-contact-strip__item {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.lab-contact-strip__label {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--c-ink, var(--global-text-color));
}

.lab-contact-strip__val {
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--global-text-color);
}

.ed-spec__row[id],
#gallery .ed-rail__row {
  scroll-margin-top: 112px;
}

/* ------------------------------------------------------------
   Teaching page (_pages/teaching.md) — migrated from the page-level \3c style>
   ------------------------------------------------------------ */
.teaching-container {
  max-width: 1310px;
  margin: 0 auto;
  padding: 0; /* the 1340px navbar container already supplies the 15px gutters */
}

.teaching-section-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 6px;
  font-family: var(--font-serif-editorial, "Playfair Display", serif);
  font-size: 1.55rem;
  font-weight: 700;
  color: var(--global-text-color);
}

.teaching-section-desc {
  margin-bottom: 24px;
  font-size: 0.92rem;
  line-height: 1.55;
  color: var(--c-muted);
}

/* Flagship interactive simulation card */
.sim-card {
  display: grid;
  grid-template-columns: minmax(0, 4.5fr) minmax(0, 7.5fr);
  margin-bottom: 48px;
  overflow: hidden;
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--global-divider-color, #e2e8f0);
  border-radius: 16px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.04);
  transition:
    transform 0.2s ease,
    box-shadow 0.2s ease,
    border-color 0.2s ease;
}

.sim-card:hover {
  transform: translateY(-2px);
  border-color: var(--global-theme-color, #0284c7);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

@media (max-width: 860px) {
  .sim-card {
    grid-template-columns: minmax(0, 1fr);
  }
}

.sim-card__media {
  position: relative;
  min-height: 240px;
  overflow: hidden;
  background: #020617;
}

.sim-card__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform 0.4s ease;
}

.sim-card:hover .sim-card__media img {
  transform: scale(1.04);
}

.sim-card__media-badge {
  position: absolute;
  right: 12px;
  bottom: 12px;
  left: 12px;
  display: flex;
  justify-content: space-between;
  font-family: monospace;
  font-size: 0.875rem;
  color: #fde047;
}

.sim-card__media-badge span {
  padding: 3px 8px;
  background: rgba(0, 0, 0, 0.75);
  border: 1px solid rgba(253, 224, 71, 0.4);
  border-radius: 4px;
}

.sim-card__body {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 28px 30px;
  min-width: 0;
}

.sim-card__tag-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 10px;
}

.sim-pill {
  padding: 3px 8px;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--global-theme-color, #0284c7);
  background: rgba(2, 132, 199, 0.1);
  border: 1px solid rgba(2, 132, 199, 0.25);
  border-radius: 6px;
}

.sim-pill--amber {
  color: #92400e;
  background: rgba(245, 158, 11, 0.12);
  border-color: rgba(180, 83, 9, 0.3);
}

html[data-theme="dark"] .sim-pill--amber {
  color: #fbbf24;
  border-color: rgba(251, 191, 36, 0.35);
}

.sim-card__title {
  margin: 0 0 6px;
  font-size: var(--fs-title-card, 1.375rem);
  font-weight: 700;
  line-height: 1.4;
  color: var(--global-text-color);
}

.sim-card__sub {
  margin-bottom: 14px;
  font-family: var(--font-sans-body, inherit);
  font-size: var(--fs-body-sm, 0.9375rem);
  font-weight: 600;
  color: var(--global-theme-color, #0284c7);
}

.sim-card__desc {
  margin-bottom: 16px;
  font-size: var(--fs-body, 1rem);
  line-height: 1.7;
  color: var(--global-text-color);
}

.sim-features-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 12px;
  margin-bottom: 20px;
  font-size: var(--fs-body-sm, 0.9375rem);
  font-weight: 500;
  color: var(--c-ink, #0f172a);
}

@media (max-width: 520px) {
  .sim-features-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

.sim-features-grid div {
  display: flex;
  align-items: center;
  gap: 6px;
}

.sim-features-grid i {
  font-size: 0.875rem;
  color: #10b981;
}

.sim-card__action {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding-top: 16px;
  border-top: 1px solid var(--global-divider-color, #e2e8f0);
}

.sim-card__client-note {
  font-size: 0.875rem;
  color: var(--c-muted);
}

.sim-btn-launch,
.sim-btn-launch:link,
.sim-btn-launch:visited {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  font-size: var(--fs-body-sm, 0.9375rem);
  font-weight: 600;
  color: #ffffff;
  background: var(--global-theme-color, #0284c7);
  border-radius: 8px;
  text-decoration: none;
  transition:
    opacity var(--ed-dur-fast) ease,
    transform var(--ed-dur-fast) ease;
}

.sim-btn-launch span,
.sim-btn-launch i {
  color: inherit;
}

.sim-btn-launch:hover {
  opacity: 0.92;
  transform: translateY(-1px);
  color: #ffffff;
  text-decoration: none;
}

/* Dark mode: steel-blue fill (#9db7d9) takes dark ink (#0f172a, 8.6:1) instead of white */
html[data-theme="dark"] .sim-btn-launch,
html[data-theme="dark"] .sim-btn-launch:link,
html[data-theme="dark"] .sim-btn-launch:visited,
html[data-theme="dark"] .sim-btn-launch:hover {
  color: var(--global-hover-text-color, #0f172a);
}

/* Academic course cards */
.course-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}

@media (max-width: 992px) {
  .course-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
  }
}

.course-card {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 24px;
  background: var(--global-card-bg-color, #ffffff);
  border: 1px solid var(--global-divider-color, #e2e8f0);
  border-radius: 12px;
  transition:
    transform var(--ed-dur-fast) ease,
    border-color var(--ed-dur-fast) ease;
}

.course-card:hover {
  transform: translateY(-2px);
  border-color: var(--global-theme-color, #0284c7);
}

.course-card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
}

.course-card__level {
  padding: 2px 7px;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--global-theme-color, #0284c7);
  background: rgba(2, 132, 199, 0.1);
  border-radius: 4px;
}

.course-card__level--core {
  color: #047857;
  background: rgba(16, 185, 129, 0.1);
}

.course-card__level--elective {
  color: #7e22ce;
  background: rgba(147, 51, 234, 0.1);
}

html[data-theme="dark"] .course-card__level--core {
  color: #6ee7b7;
  background: rgba(110, 231, 183, 0.14);
}

html[data-theme="dark"] .course-card__level--elective {
  color: #ddd6fe;
  background: rgba(196, 181, 253, 0.16);
}

.course-card__term {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--c-muted);
}

.course-card__title {
  margin: 0 0 10px;
  font-size: 1.08rem;
  font-weight: 700;
  color: var(--global-text-color);
}

.course-card__desc {
  margin-bottom: 16px;
  font-size: var(--fs-body-sm, 0.9375rem);
  line-height: 1.65;
  color: var(--global-text-color);
}

.course-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 12px;
  font-size: 0.875rem;
  color: var(--c-muted);
  border-top: 1px solid var(--global-divider-color, #e2e8f0);
}

/* ------------------------------------------------------------
   Utility pages: 404 and DOBBY intranet gateway
   ------------------------------------------------------------ */

.ed-intranet-card {
  margin: 3rem 0;
  padding: 2rem 1.5rem;
  text-align: center;
  background: var(--global-card-bg-color);
  border: 1px solid var(--global-divider-color);
  border-radius: 10px;
}


.ed-intranet-card__title {
  margin: 0;
  font-family: var(--font-serif-editorial);
  font-size: var(--fs-xl);
  font-weight: 700;
  color: var(--c-ink);
  border-bottom: 0;
  padding-bottom: 0;
}


.ed-intranet-card__title i {
  color: var(--c-accent);
}


.ed-intranet-card__desc {
  margin: 1rem auto 0;
  max-width: 44rem;
  font-size: var(--fs-body-sm);
  line-height: 1.7;
  color: var(--c-muted);
}

.ed-pillar__fig-doi {
  font-weight: 600;
  color: var(--global-theme-color);
  text-decoration: none;
}

.ed-pillar__fig-doi:hover {
  text-decoration: underline;
}
