/* Shared interaction layer: navigation, course hubs and accessible motion. */
:root { --ink-4: #606b79; --header-offset: 84px; }
html { scroll-padding-top: calc(var(--header-offset) + 20px); scrollbar-gutter: stable; }
html.nav-open { overflow: hidden; }
[hidden]:not([hidden="until-found"]) { display: none !important; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}
main [id] { scroll-margin-top: 12px; }
main [tabindex="-1"]:focus { outline: none; }
button, a, input { -webkit-tap-highlight-color: transparent; }
body.no-scroll { overscroll-behavior: none; }

.site-header { isolation: isolate; }
.header-inner { transition: background .25s ease; }
.primary-nav { position: relative; }
.primary-nav > ul { position: relative; z-index: 1; }
/* Quiet navigation surfaces: a solid selected tab within a shared tray. */
.site-header {
  background: rgba(251, 250, 246, .96);
  border-bottom-color: rgba(21, 48, 92, .07);
}
.site-header.scrolled {
  background: rgba(251, 250, 246, .98);
  box-shadow: 0 6px 24px -16px rgba(21, 48, 92, .22);
}
.brand-mark {
  background: #fff;
  border: 1px solid rgba(21, 48, 92, .08);
  box-shadow: 0 2px 8px rgba(21, 48, 92, .04);
}
.primary-nav a {
  line-height: 1.25;
  border-radius: 10px;
  background: transparent;
  border-color: transparent;
  box-shadow: none;
  color: #505c6d;
  transform: none;
  transition: color .2s ease, background-color .2s ease, border-color .2s ease, box-shadow .2s ease;
}
/* Suppress legacy underline and frame decorations in every interaction state. */
.primary-nav a::before, .primary-nav a::after,
.primary-nav a:is(:hover, :focus-visible, [aria-current="page"])::before,
.primary-nav a:is(:hover, :focus-visible, [aria-current="page"])::after {
  content: none; display: none; animation: none;
}
.primary-nav a .nav-icon {
  opacity: .7;
  transition: opacity .2s ease, color .2s ease;
}
.primary-nav a:is(:hover, :focus-visible, :active) .nav-icon,
.primary-nav .nav-cta:is(:hover, :focus-visible, :active) .nav-icon {
  transform: none; opacity: 1;
}
.primary-nav a[aria-current="page"] {
  color: #fff;
  background: #15305c;
  border-color: #15305c;
  box-shadow: 0 2px 5px rgba(21, 48, 92, .14);
}
.primary-nav a[aria-current="page"] .nav-icon { color: #e7cf9f; opacity: 1; }
.primary-nav .nav-cta {
  background: #fff;
  color: #15305c;
  border-color: #cbd1da;
  box-shadow: none;
  border-radius: 10px;
}
.primary-nav a:focus-visible,
.primary-nav .nav-cta:focus-visible {
  outline: 2px solid #46658d;
  outline-offset: 2px;
  transform: none;
}
.primary-nav a:focus-visible:not([aria-current="page"]) {
  background: #e7ecf2; color: #15305c;
  border-color: #cbd1da; box-shadow: none;
}
@media (hover: hover) and (pointer: fine) {
  .primary-nav a:hover {
    color: #15305c; background: #e5eaf0;
    border-color: transparent; box-shadow: none; transform: none;
  }
  .primary-nav a[aria-current="page"]:hover {
    color: #fff; background: #203e68; border-color: #203e68;
  }
  .primary-nav .nav-cta:hover {
    background: #e7ecf2; color: #15305c; border-color: #aebdcc;
    box-shadow: none; transform: none;
  }
}
.primary-nav a:active, .primary-nav .nav-cta:active {
  transform: none; box-shadow: inset 0 1px 3px rgba(21, 48, 92, .15);
}
.search-trigger, .nav-toggle {
  flex-shrink: 0;
  min-width: 44px; min-height: 44px;
  border-radius: 10px; border-color: #cbd1da;
  background: #fff; color: #505c6d; box-shadow: none;
  transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}
.search-trigger:focus-visible, .nav-toggle:focus-visible, .brand:focus-visible {
  outline: 2px solid #46658d; outline-offset: 3px;
}
.brand { border-radius: 12px; }
.search-trigger[aria-expanded="true"], .nav-toggle[aria-expanded="true"] {
  background: #e7ecf2; color: #15305c; border-color: #aebdcc;
}
@media (hover: hover) and (pointer: fine) {
  .search-trigger:hover, .nav-toggle:hover {
    background: #e7ecf2; color: #15305c; border-color: #aebdcc;
    transform: none; box-shadow: none;
  }
  .search-trigger:hover svg { transform: none; }
}
@media (min-width: 1141px) {
  .primary-nav > ul {
    padding: 4px; gap: 2px;
    border: 1px solid rgba(21, 48, 92, .07);
    border-radius: 15px;
    background: #f0f1ee;
  }
  .primary-nav a { padding-block: .55rem; }
  .primary-nav a { white-space: nowrap; }
  .primary-nav .nav-cta { margin-left: .3rem; }
}
@media (max-width: 1140px) {
  .primary-nav { background: #fbfaf6; border-radius: 18px; }
  .primary-nav > ul { gap: .3rem; }
  .primary-nav a:focus-visible { outline-offset: -3px; }
  .primary-nav a[aria-current="page"]:focus-visible { outline-color: #fff; }
  .primary-nav .nav-cta { margin-top: .4rem; }
  .brand { flex: 0 1 auto; min-width: 0; }
  .brand-full { white-space: normal; overflow-wrap: anywhere; }
}
@media (max-width: 380px) {
  .brand { gap: .5rem; }
  .brand-divider { display: none; }
  .brand-mark { width: 40px; height: 40px; border-radius: 10px; }
  .brand-mark img { width: 32px; height: 32px; }
  .brand-full { font-size: 1rem; }
}
@media (forced-colors: active) {
  .primary-nav a[aria-current="page"] { border: 2px solid Highlight; }
  .primary-nav a[aria-current="page"] .nav-icon { color: LinkText; }
  .primary-nav a:focus-visible, .primary-nav a[aria-current="page"]:focus-visible,
  .search-trigger:focus-visible, .nav-toggle:focus-visible, .brand:focus-visible {
    outline-color: Highlight;
  }
}
.nav-backdrop {
  position: fixed; inset: var(--header-offset) 0 0; z-index: 90;
  width: 100%; height: auto; border: 0; padding: 0; border-radius: 0;
  background: rgba(11, 19, 30, .34); cursor: pointer;
  animation: navBackdropIn .2s ease both;
}
.nav-toggle { position: relative; }
/* Equal 8px spacing keeps all bars on the same pixel phase at common
   display scales (125%, 150%, 175%), avoiding uneven-looking thickness. */
.nav-toggle span {
  position: absolute;
  left: calc(50% - 9px);
  top: calc(50% - 1px);
  width: 18px;
  height: 2px;
  flex: none;
  margin: 0;
  transform-origin: center;
  transition: transform .25s var(--ease-out), opacity .2s ease;
}
.nav-toggle span:nth-child(1) { margin-top: -8px; }
.nav-toggle span:nth-child(3) { margin-top: 8px; }
.nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }
.scroll-progress { transition: width .1s linear; }

.course-results-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: -1rem 0 1.4rem; }
.course-results-row p { margin: 0; color: var(--ink-3); font-size: .82rem; }
.course-reset { min-height: 44px; padding: .4rem .75rem; border: 1px solid var(--line); border-radius: 12px; color: var(--accent); background: #fff; cursor: pointer; font: 600 .8rem var(--sans); }
.no-js .course-results-row { display: none; }
.course-card { scroll-margin-top: 12px; }
.course-card-profile { min-height: 44px; }
.course-card:target { border-color: var(--accent-line); box-shadow: 0 0 0 3px var(--accent-soft), var(--sh-md); }
.course-card:focus-within { border-color: var(--accent-line); }

.course-modal { padding: var(--modal-gutter); }
.course-dialog {
  --hub-muted: #586773; --hub-sage: #37634d; --hub-gold: #805c2f;
  width: min(100%, 1020px); height: min(880px, calc(100vh - 2 * var(--modal-gutter)));
  max-height: calc(100vh - 2 * var(--modal-gutter));
  display: flex; flex-direction: column; border-radius: 26px;
  background: #fbfaf7; transform: translateY(18px) scale(.985);
  transition: transform .3s var(--ease-out);
}
.course-dialog-head {
  flex: 0 0 auto; padding: 1.2rem 4.3rem 1rem 1.5rem;
  background: linear-gradient(120deg, #fff, #f3f6f4 72%, #f7f1e7);
}
.course-dialog-head h2 { margin: .3rem 0 .55rem; font-size: clamp(1.15rem, 2.4vw, 1.65rem); line-height: 1.3; overflow-wrap: anywhere; }
.course-dialog-kicker { font-size: .65rem; color: var(--hub-sage); }
.course-dialog-meta { gap: .45rem .7rem; font-size: .73rem; color: var(--hub-muted); }
.course-modal-close { top: 1rem; right: 1rem; z-index: 12; background: #fff; box-shadow: var(--sh-xs); }
.course-modal-close:focus-visible, .course-portal-tab:focus-visible, .course-hub-metric:focus-visible, .course-reset:focus-visible {
  outline: 2px solid var(--accent); outline-offset: -3px;
}
.course-portal-tabs {
  position: relative; top: auto; flex: 0 0 auto; margin: 0; gap: .4rem;
  padding: .65rem 1.5rem; background: #f7f8f5;
  scroll-padding-inline: 1rem; overscroll-behavior-inline: contain;
  scrollbar-width: thin; scrollbar-color: var(--line-2) transparent;
}
.course-portal-tabs::-webkit-scrollbar { display: block; height: 3px; }
.course-portal-tab { min-height: 48px; min-width: 112px; padding: .5rem .65rem; transition: background .2s ease, border-color .2s ease, color .2s ease; }
.course-tab-copy b { font-size: .77rem; }
.course-tab-copy small { color: var(--hub-muted); font-size: .62rem; opacity: 1; }
.course-tab-count { color: var(--hub-muted); font-size: .6rem; min-width: 21px; height: 21px; }
.course-portal-tab[aria-selected="true"] { background: #fff; color: var(--accent); border-color: var(--accent-line); }
.course-portal-tab[aria-selected="true"] .course-tab-icon::before { animation: none; }
.course-dialog-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; scroll-behavior: auto; }
.course-portal-panel { min-height: 220px; }
.course-portal-panel:focus-visible { outline: 2px solid var(--accent-line); outline-offset: -3px; }
.course-portal-grid { display: block; padding: 1.25rem 1.5rem 1.5rem; }
.course-dialog-main { width: 100%; min-width: 0; }
.course-hub-dashboard { display: grid; gap: 1rem; }
.course-hub-welcome { min-height: 0; padding: 1.3rem; grid-template-columns: minmax(0, 1fr) 80px; box-shadow: var(--sh-xs); }
.course-hub-welcome::after { animation: none; opacity: 0; }
.course-hub-title-row { flex-wrap: wrap; gap: .6rem; }
.course-hub-title-row h3 { font-size: clamp(1.15rem, 2.4vw, 1.55rem); }
.course-hub-eyebrow { font-size: .65rem; }
.course-hub-welcome .course-hub-intro { max-width: 60ch; color: var(--hub-muted); font-size: .87rem; margin: .65rem 0; line-height: 1.65; }
.course-hub-welcome .course-hub-start { color: var(--hub-muted); font-size: .75rem; margin: .3rem 0 .8rem; }
.course-hub-primary-row:empty { display: none; }
.course-hub-primary { gap: .6rem; min-height: 44px; padding: .65rem .9rem; font-size: .8rem; }
.course-hub-primary > svg { width: 18px; height: 18px; flex: none; }
.course-hub-primary-row .course-hub-portal-link { min-height: 44px; font-size: .8rem; }
.course-hub-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; }
.course-hub-metric { display: flex; align-items: center; text-align: left; min-width: 0; min-height: 100px; padding: 1rem; gap: .8rem; border-radius: 16px; }
.course-hub-metric > span:nth-child(2) { flex: 1; min-width: 0; }
.course-hub-metric strong { font-size: 1.05rem; line-height: 1.3; color: var(--ink); }
.course-hub-metric small { display: block; font-size: .8rem; line-height: 1.5; color: var(--ink-2); }
.course-metric-note { display: block; color: var(--hub-muted); font-size: .71rem; line-height: 1.5; }
.course-hub-metric > svg { width: 16px; height: 16px; flex: none; color: var(--hub-sage); transition: transform .25s ease; }
.course-hub-metric-icon { width: 38px; height: 38px; flex: none; }
.course-hub-metric-icon svg { width: 19px; height: 19px; }
.course-hub-latest-card { padding: 1rem; gap: .8rem; }
.course-hub-latest-copy { min-width: 0; }
.course-hub-latest-copy h3 { font-size: 1rem; line-height: 1.4; }
.course-hub-latest-copy p { font-size: .87rem; line-height: 1.7; }
.course-hub-latest-copy time { color: var(--hub-muted); font-size: .73rem; }
.course-hub-inline-link { font-size: .8rem; min-height: 44px; }
.course-hub-contact { flex-wrap: wrap; gap: .7rem; padding: 1rem; }
.course-hub-contact h3, .course-hub-ta-head h3 { font-size: .95rem; }
.course-hub-contact a { font-size: .82rem; overflow-wrap: anywhere; min-height: 44px; }
.course-hub-ta-card strong { font-size: .85rem; }
.course-hub-ta-card small { font-size: .75rem; color: var(--hub-muted); }
.course-dialog-section { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.course-dialog-section p { font-size: .93rem; line-height: 1.75; }
.course-dialog-label { color: var(--hub-muted); font-size: .65rem; }
.course-portal-panel-head { padding: 1.3rem 1.5rem 1rem; }
.course-portal-panel > #course-modal-schedule,
.course-portal-panel > #course-modal-materials,
.course-portal-panel > #course-modal-announcements,
.course-portal-panel > #course-modal-syllabus { padding: 0 1.5rem 1.5rem; }
.course-hub-empty { min-height: 235px; padding: 2rem 1rem; }
.course-hub-empty strong { font-size: 1.05rem; }
.course-hub-empty p { max-width: 46ch; color: var(--hub-muted); font-size: .87rem; line-height: 1.7; margin: .6rem auto 0; }
.course-material-item strong { font-size: .95rem; white-space: normal; }
.course-material-item small { font-size: .8rem; color: var(--hub-muted); }
.course-announcement p { font-size: .93rem; }
.course-announcement h3 { font-size: 1.05rem; }
.course-syllabus-frame, .course-syllabus-frame iframe { height: 56vh; min-height: 320px; }
.course-syllabus-frame iframe { background: #fff; }
.course-syllabus-frame::before { display: none; }
.course-syllabus-toolbar-copy span, .course-syllabus-fallback { font-size: .8rem; color: var(--hub-muted); }
.course-syllabus-download { min-height: 44px; }
.course-syllabus-unavailable strong { font-size: 1rem; }
.course-syllabus-unavailable p { max-width: 48ch; font-size: .87rem; line-height: 1.7; color: var(--hub-muted); }
.course-modal:not(.is-open) *, .course-modal:not(.is-open) *::before, .course-modal:not(.is-open) *::after { animation-play-state: paused !important; }

/* Replace the old overlapping animation sequences with short, finite entrances. */
.course-dialog.is-content-ready .course-dialog-head,
.course-dialog.is-content-ready .course-portal-tabs,
.course-dialog.is-content-ready .course-portal-panel:not([hidden]),
.course-dialog.is-content-ready .course-hub-welcome,
.course-dialog.is-content-ready .course-hub-metrics > *,
.course-dialog.is-content-ready .course-hub-actions,
.course-dialog.is-content-ready .course-hub-ta,
.course-dialog.is-content-ready .course-hub-contact,
.course-dialog.is-content-ready .course-hub-latest-card { animation: none; }
@media (prefers-reduced-motion: no-preference) {
  .course-modal.is-open .course-dialog { animation: hubDialogIn .3s var(--ease-out) both; }
  .course-dialog.is-content-ready .course-portal-panel:not([hidden]) { animation: hubContentIn .24s var(--ease-out) both; }
  .course-hub-welcome::after { animation: hubWelcomeShine 1s ease .3s 1 both; }
  .course-hub-orbit { animation: hubEmblemIn .65s var(--ease-spring) both; }
}
@media (hover: hover) and (pointer: fine) {
  .course-hub-metric:hover > svg { transform: translateX(3px); }
  .course-hub-metric:hover { border-color: var(--accent-line); box-shadow: var(--sh-sm); }
  .course-card-profile:hover svg { transform: translateX(5px); }
}
@media (max-width: 1140px) {
  .primary-nav { position: absolute; }
  .primary-nav.open a { animation: navLinkIn .26s var(--ease-out) both; animation-delay: calc(var(--nav-i, 0) * 24ms); }
}
@media (max-width: 640px) {
  :root { --header-offset: 68px; }
  .course-dialog { border-radius: 18px; }
  .course-dialog-head { padding: 1rem 3.9rem .8rem 1rem; }
  .course-modal-close { top: .7rem; right: .7rem; }
  .course-portal-tabs { padding: .55rem .75rem; }
  .course-portal-tab { flex: 0 0 auto; min-width: 104px; }
  .course-tab-copy small { display: none; }
  .course-portal-grid { padding: 1rem; }
  .course-hub-welcome { padding: 1rem; grid-template-columns: 1fr; }
  .course-hub-orbit { display: none; }
  .course-hub-metric { min-height: 100px; padding: .8rem; gap: .55rem; }
  .course-hub-metric > svg { display: none; }
  .course-hub-metric-icon { width: 30px; height: 30px; }
  .course-hub-metric strong { font-size: .95rem; }
  .course-portal-panel-head { padding: 1rem; }
  .course-portal-panel > #course-modal-schedule,
  .course-portal-panel > #course-modal-materials,
  .course-portal-panel > #course-modal-announcements,
  .course-portal-panel > #course-modal-syllabus { padding: 0 1rem 1rem; }
}
@media (max-height: 500px) {
  .course-dialog-head {
    min-height: calc(44px + .8rem);
    padding-block: .6rem;
  }
  .course-modal-close { top: .4rem; }
  .course-dialog-kicker, .course-dialog-meta { display: none; }
  .course-dialog-head h2 { font-size: 1rem; margin: 0; }
  .course-portal-tabs { padding-block: .3rem; }
  .course-portal-tab { min-height: 44px; }
}
@supports (height: 100dvh) {
  .course-dialog { height: min(880px, calc(100dvh - 2 * var(--modal-gutter))); max-height: calc(100dvh - 2 * var(--modal-gutter)); }
}
@keyframes navBackdropIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes navLinkIn { from { opacity: 0; transform: translateY(-5px); } to { opacity: 1; transform: none; } }
@keyframes hubDialogIn { from { opacity: 0; transform: translateY(18px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes hubContentIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes hubEmblemIn { from { opacity: 0; transform: scale(.8) rotate(-12deg); } to { opacity: 1; transform: none; } }
@keyframes hubWelcomeShine { from { opacity: .45; transform: translateX(-130%); } to { opacity: 0; transform: translateX(130%); } }

/* Reflow content instead of hiding overflow at the page boundary. */
.section-head > *, .footer-grid > *, .lab-strip-grid > *,
.course-grid > *, .students-grid > *, .alumni-year-items > *, .lab-themes-grid > *,
.research-toc, .course-results-row > *, .course-dialog, .course-dialog-head,
.course-portal-tabs, .course-portal-content, .course-hub-contact > * {
  min-width: 0;
}
.group-head h3 { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
.group-rule { min-width: 0; }
.pill-list li, .student-interests li, .student-role-badge,
.lab-director-name, .lab-director-role, .lab-director-links a,
.footer-grid p, .footer-col a, .footer-bottom p,
.course-dialog-meta > span, .course-portal-panel-head h3,
.course-hub-metric strong, .course-hub-metric small, .course-metric-note,
.course-material-item strong, .course-material-item small,
.course-roadmap-item h4, .course-roadmap-item p,
.course-assignment-item h4, .course-assignment-item p,
.course-syllabus-toolbar-copy, .course-syllabus-unavailable,
.course-hub-primary, .course-hub-contact a {
  overflow-wrap: anywhere;
}
.pill-list li, .student-interests li, .student-role-badge,
.lab-director-links a, .course-dialog-meta > span { max-width: 100%; }
.pub-cite a { white-space: normal; }
.course-dialog { min-height: 0; }
.course-hub-ta-card strong { white-space: normal; overflow-wrap: anywhere; }
.course-results-row { flex-wrap: wrap; }
.course-reset { flex-shrink: 0; }
.palette {
  top: var(--palette-top, 6vh);
  width: min(760px, calc(100% - 1.5rem));
  max-height: var(--palette-available-height, min(86vh, 700px));
}
.palette-item-title, .palette-item-desc { overflow-wrap: anywhere; }
.palette-esc { min-height: 44px; }
.palette-foot { flex-shrink: 0; }
@supports (height: 100dvh) {
  .palette { max-height: var(--palette-available-height, min(86dvh, 700px)); }
  .course-syllabus-frame, .course-syllabus-frame iframe {
    height: 56dvh;
    min-height: min(320px, 70dvh);
  }
}
@media (max-width: 640px) {
  .position-card-head { flex-wrap: wrap; }
  .position-card-date { margin-left: 0; white-space: normal; }
  .position-row { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: .45rem .75rem; }
  .position-row-date { grid-column: 2; white-space: normal; }
  .course-hub-primary { white-space: normal; }
  .course-portal-panel-head { gap: .65rem; }
  .palette-keys { gap: .35rem .7rem; }
}
@media (max-width: 480px) {
  .course-hub-metrics { grid-template-columns: minmax(0, 1fr); }
  .course-hub-metric { min-height: 84px; }
  .course-hub-metric > svg { display: block; }
  .course-hub-metric-icon { width: 36px; height: 36px; }
  .course-syllabus-unavailable { flex-direction: column; align-items: flex-start; }
  .lab-director { flex-direction: column; gap: 1rem; }
  .lab-director-info { flex: auto; width: 100%; }
  .student-role-badge { letter-spacing: .1em; }
  .student-head { align-items: flex-start; }
  .palette-item { display: grid; grid-template-columns: 32px minmax(0, 1fr); }
  .palette-item-icon { grid-row: 1 / span 2; }
  .palette-item-meta { grid-column: 2; justify-self: start; white-space: normal; }
  .palette-item-arrow { display: none; }
  .palette-item-title, .palette-item-desc { white-space: normal; }
  .palette-keys { display: none; }
}
@media (max-height: 500px) {
  .palette-input-meta, .palette-keys { display: none; }
  .palette-head { padding-block: .4rem; }
  .palette-foot { padding-block: .4rem; }
  .course-syllabus-frame, .course-syllabus-frame iframe { height: 60vh; min-height: 160px; }
}
/* A shared, quieter visual rhythm across the academic profile. */
:root {
  --motion-fast: 150ms;
  --motion-panel: 220ms;
  --sh-sm: 0 2px 10px -6px rgba(11, 19, 30, .14);
  --sh-md: 0 6px 22px -12px rgba(11, 19, 30, .18);
}
.btn, .course-card-profile, .course-reset, .course-syllabus-download {
  min-height: 44px;
  transition: background-color var(--motion-fast) ease, color var(--motion-fast) ease,
    border-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease,
    transform var(--motion-fast) var(--ease-out);
}
.btn { box-shadow: 0 2px 8px -4px rgba(21, 48, 92, .3); }
.btn-ghost { box-shadow: none; }
.pub-filters button, .alumni-filters button, .courses-tabs-v2 button,
.courses-active-toggle { min-height: 44px; }
.btn-icon svg, .course-card-profile svg { flex-shrink: 0; stroke-width: 2; }
.entry, .position-card, .contact-card, .course-card, .student-card, .pub, .lab-director {
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  box-shadow: var(--sh-sm);
  transition: border-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease;
}
.entry::before, .position-card::before, .student-card::before,
.student-card::after, .student-corner, .hero-meta a::before,
.hero-meta .profile-icon::before { display: none; }
.pub::before { display: none; }
.pub::after, .pub:hover::after {
  top: 1.3rem; bottom: 1.3rem; width: 2px;
  background: var(--accent-line); box-shadow: none; transition: none;
}
.pub-title, .pub:hover .pub-title { letter-spacing: -.008em; text-wrap: pretty; }
.pub-title { font-size: 1.12rem; line-height: 1.45; max-width: 76ch; }
.pub-authors { font-size: .87rem; line-height: 1.65; color: var(--ink-2); }
.pub-cite { font-size: .82rem; line-height: 1.7; max-width: 92ch; }
.pub-head { margin-bottom: .75rem; }
.pub-title { margin-bottom: .65rem; }
.pub-cite svg { display: inline; width: .8em; height: .8em; vertical-align: baseline; }
.research-content > .lede, .research-content .acc-body { max-width: 68ch; }
.research-content .acc-body { line-height: 1.8; }
.research-content .acc-body li + li { margin-top: .45rem; }
.course-card-desc { color: var(--ink-2); line-height: 1.7; }
.student-seminar { line-height: 1.7; }
.hero-meta a { box-shadow: none; border-radius: var(--r-md); }
.hero-meta .profile-icon { transition: background-color var(--motion-fast) ease; }
.hero-meta a::after { display: none; }
.primary-nav { transition: none; }
html.is-ui-ready .primary-nav {
  transition: opacity var(--motion-panel) ease, transform var(--motion-panel) var(--ease-out),
    visibility var(--motion-panel) ease;
}
.primary-nav.open a { animation: none; }
.course-modal.is-open .course-dialog { animation-duration: var(--motion-panel); }
.course-dialog.is-content-ready .course-portal-panel:not([hidden]) { animation: none; }
.reveal { transform: translateY(8px); transition-duration: 240ms; will-change: auto; }

/* Static ambient details keep attention on the work and avoid idle repainting. */
.vision-ribbon::before, .vision-ribbon::after,
.eyebrow-hero::before, .eyebrow-hero-dot, .eyebrow-hero-dot::after,
.eyebrow-hero-text, .ehw-initial, .ehw-word, .ehw-of,
.hero-portrait::before, .hero-portrait::after,
.position-live-dot::after, .student-live-dot::after, .student-photo-ring,
.course-hub-eyebrow i, .course-hub-orbit, .course-hub-orbit::after, .course-hub-orbit span,
.course-hub-welcome-glow, .course-portal-panel-icon::before,
.course-tab-icon::before, .course-hub-welcome::after,
.lab-constellation *, .lab-constellation *::before, .lab-constellation *::after {
  animation: none !important;
}
.eyebrow-hero::before, .course-hub-welcome::after { display: none; }
.lc-particles, .lc-ring-halo, .lc-ring-halo-2, .lc-hub-ring-2, .lc-hub-ring-3 { display: none; }
.lc-canvas { opacity: .55; }
.lab-hero-lede { max-width: 48ch; }
.lab-director-links a, .socials a, .student-links a { min-height: 44px; }
.lab-director-photo { box-shadow: none; }

.scroll-strip {
  scrollbar-width: thin;
  scrollbar-color: #b9b7ad transparent;
  scroll-padding-inline: .5rem;
  overscroll-behavior-inline: contain;
}
.scroll-strip::-webkit-scrollbar { display: block; height: 4px; }
.scroll-strip::-webkit-scrollbar-thumb { background: #b9b7ad; border-radius: 4px; }
.scroll-hint {
  display: block; margin: .35rem 0 0; color: var(--ink-3);
  font-size: .72rem; line-height: 1.4; text-align: right;
}
.pub-toolbar:has(+ .scroll-hint:not([hidden])),
.courses-toolbar-v2:has(+ .scroll-hint:not([hidden])) { margin-bottom: .6rem; }
.scroll-hint:not([hidden]) { margin-bottom: .7rem; }
.clipboard-status {
  position: fixed; left: 50%; bottom: max(1.25rem, env(safe-area-inset-bottom));
  z-index: 300; width: max-content; max-width: calc(100% - 2rem);
  transform: translateX(-50%); padding: .7rem 1rem; border-radius: var(--r-md);
  background: var(--accent-2); color: #fff; box-shadow: var(--sh-md);
  font-size: .88rem; line-height: 1.5; text-align: center; pointer-events: none;
}
.clipboard-status:empty { display: none; }
.pub-results-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6rem; margin-bottom: 1.4rem; }
.pub-results-row .pub-results-status { margin: 0; }
.pub-results-row .course-reset { flex: none; }
.no-js .pub-results-row { display: none; }
.no-results, .courses-empty { border: 1px dashed var(--line-2); border-radius: var(--r-lg); }

@media (hover: hover) and (pointer: fine) {
  .entry:hover, .position-card:hover, .contact-card:hover, .course-card:hover,
  .student-card:hover, .pub:hover, .position-row:hover, .lab-theme:hover, .lt-tile:hover {
    transform: none; border-color: var(--accent-line); box-shadow: var(--sh-sm);
  }
  .hero-meta a:hover { transform: translateY(-1px); box-shadow: none; }
  .hero-meta a:hover .profile-icon, .pub:hover .badge { transform: none; box-shadow: none; }
  .student-card:hover .student-interests li { transform: none; }
  .btn:hover { transform: translateY(-1px); box-shadow: var(--sh-sm); }
}
@media (max-width: 1140px) {
  .lab-hero-grid { gap: 2rem; }
  .lab-hero-visual { order: 0; width: min(100%, 340px); max-width: 340px; }
  .lab-hero-content { max-width: 48rem; margin-inline: auto; width: 100%; }
}
@media (max-width: 1024px) {
  .research-toc { overflow: visible; }
  .research-toc ul {
    width: 100%; overflow-x: auto; flex-wrap: nowrap;
    padding-block: .2rem .5rem;
  }
  .research-toc li { flex: none; }
  .research-toc a { display: flex; align-items: center; min-height: 44px; }
}
@media (max-width: 640px) {
  .lab-hero { padding-block: 1.8rem 2rem; }
  .lab-hero-grid { gap: 1.6rem; }
  .lab-hero-visual { width: min(100%, 288px); }
  .lab-hero-title { font-size: clamp(2rem, 8.5vw, 2.65rem); line-height: 1.12; }
  .lab-hero-lede { font-size: 1rem; line-height: 1.7; margin-bottom: 1.3rem; }
  .lab-director { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: .8rem; padding: 1rem; }
  .lab-director-photo { width: 56px; height: 64px; border-radius: 12px; }
  .lab-director-eyebrow { font-size: .58rem; letter-spacing: .1em; }
  .lab-director-name { font-size: 1.1rem; }
  .lab-director-role { font-size: .8rem; line-height: 1.55; }
  .lab-director-links { gap: .35rem; }
  .lab-director-links a { padding-inline: .6rem; font-size: .75rem; }
  .pub { padding: 1.15rem; }
  .pub-title { font-size: 1.08rem; }
  .pub-authors { font-size: .88rem; }
  .palette-item-title, .palette-item-desc { white-space: normal; }
  .reveal { opacity: 1; transform: none; transition: none; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media print {
  html, body { overflow: visible !important; }
  .reveal, .reveal.is-visible { opacity: 1 !important; transform: none !important; transition: none !important; }
  *, *::before, *::after { animation: none !important; }
  .nav-backdrop, .course-modal, .course-results-row, .courses-toolbar-v2, .pub-toolbar { display: none !important; }
}
