/* ==========================================================================
   DIMMS Lab
   Site styles. Plain CSS, no build step. Sections:
   1. Tokens  2. Base  3. Type  4. Layout  5. Controls  6. Navigation
   7. Footer  8. Page header and sections  9. Motion  10. Utilities
   Page-specific styles live further down, each under its own heading.
   ========================================================================== */

/* 1. Tokens
   -------------------------------------------------------------------------- */

:root {
  --paper: #ffffff;
  --paper-raised: #ffffff;
  --paper-sunk: #f2f5f8;
  --ink: #0f1b2d;
  --ink-2: #3a485c;
  --ink-3: #5b6779;
  --rule: rgba(15, 27, 45, 0.10);
  --rule-strong: rgba(15, 27, 45, 0.26);
  --navy: #13284a;
  --night: #0a1630;
  --night-2: #0d1d3b;
  --on-night: #f1ede4;
  --on-night-2: #b9c2d2;
  --gold: #86600f;
  --gold-soft: #d8b15a;
  --teal: #0b6a74;
  --teal-soft: #3cc3cc;
  --coral: #d9472f;
  --coral-soft: #ff6f59;
  --steel: #a8b7cb;
  --teal-rgb: 11, 106, 116;
  --coral-rgb: 217, 71, 47;
  --focus: #c08a1e;
  --shadow-sm: 0 1px 2px rgba(15, 27, 45, 0.05), 0 2px 8px -4px rgba(15, 27, 45, 0.12);
  --shadow: 0 1px 2px rgba(15, 27, 45, 0.05), 0 18px 40px -24px rgba(15, 27, 45, 0.35);

  --font-serif: "Newsreader", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
  --font-sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  --step--1: 0.875rem;
  --step-0: 1.0625rem;
  --step-1: clamp(1.18rem, 1.1rem + 0.35vw, 1.35rem);
  --step-2: clamp(1.4rem, 1.25rem + 0.7vw, 1.75rem);
  --step-3: clamp(1.8rem, 1.5rem + 1.4vw, 2.6rem);
  --step-4: clamp(2.3rem, 1.8rem + 2.4vw, 3.7rem);
  --step-5: clamp(2.7rem, 1.9rem + 3.9vw, 5.4rem);

  --gutter: clamp(20px, 4.2vw, 64px);
  --container: 1320px;
  --measure: 68ch;
  --nav-h: 76px;
  --radius: 4px;
  --radius-lg: 10px;
  --ease: cubic-bezier(0.2, 0.7, 0.2, 1);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);

  color-scheme: light;
}

:root[data-theme="dark"] {
  --paper: #0a1424;
  --paper-raised: #0f1b30;
  --paper-sunk: #07101e;
  --ink: #ece6da;
  --ink-2: #b9c1cd;
  --ink-3: #8b96a8;
  --rule: rgba(236, 230, 218, 0.11);
  --rule-strong: rgba(236, 230, 218, 0.24);
  --gold: #dcb562;
  --gold-soft: #e6c67f;
  --teal: #5bc9d1;
  --coral: #ff7a65;
  --teal-rgb: 91, 201, 209;
  --coral-rgb: 255, 122, 101;
  --focus: #e6c67f;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3), 0 2px 8px -4px rgba(0, 0, 0, 0.5);
  --shadow: 0 1px 2px rgba(0, 0, 0, 0.35), 0 22px 44px -26px rgba(0, 0, 0, 0.8);
  color-scheme: dark;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --paper: #0a1424;
    --paper-raised: #0f1b30;
    --paper-sunk: #07101e;
    --ink: #ece6da;
    --ink-2: #b9c1cd;
    --ink-3: #8b96a8;
    --rule: rgba(236, 230, 218, 0.11);
    --rule-strong: rgba(236, 230, 218, 0.24);
    --gold: #dcb562;
    --gold-soft: #e6c67f;
    --teal: #5bc9d1;
    --coral: #ff7a65;
  --teal-rgb: 91, 201, 209;
  --coral-rgb: 255, 122, 101;
    --focus: #e6c67f;
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3), 0 2px 8px -4px rgba(0, 0, 0, 0.5);
    --shadow: 0 1px 2px rgba(0, 0, 0, 0.35), 0 22px 44px -26px rgba(0, 0, 0, 0.8);
    color-scheme: dark;
  }
}

/* 2. Base
   -------------------------------------------------------------------------- */

*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: calc(var(--nav-h) + 24px);
  background: var(--paper);
}

@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}

body {
  margin: 0;
  min-height: 100vh;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: var(--step-0);
  line-height: 1.65;
  font-kerning: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}

main { display: block; padding-top: var(--nav-h); outline: none; }
.has-overlay-nav main { padding-top: 0; }

img, picture, video, canvas { display: block; max-width: 100%; }
svg { max-width: 100%; }
.dl-glyph, .dl-mark, .dl-explorer__plot, .dl-diagram__svg { display: block; }
img { height: auto; }
picture img { width: 100%; }

a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 0.2em; }

button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }

::selection { background: rgba(216, 177, 90, 0.38); color: var(--ink); }

:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 3px;
  border-radius: 2px;
}

hr { border: 0; height: 1px; background: var(--rule); margin: 3rem 0; }

address { font-style: normal; }

/* 3. Type
   -------------------------------------------------------------------------- */

h1, h2, h3, h4, h5 {
  margin: 0;
  font-family: var(--font-serif);
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -0.012em;
  text-wrap: balance;
  font-optical-sizing: auto;
}

p { margin: 0 0 1em; text-wrap: pretty; }

.dl-kicker {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  margin: 0 0 1.4rem;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold);
}

.dl-kicker__num { color: var(--ink-3); letter-spacing: 0.08em; }
.dl-kicker--light { color: var(--gold-soft); }

.dl-h2 { font-size: var(--step-4); line-height: 1.04; letter-spacing: -0.02em; }
.dl-h3 { font-size: var(--step-2); line-height: 1.2; }

.dl-lead {
  font-family: var(--font-serif);
  font-size: var(--step-1);
  line-height: 1.5;
  color: var(--ink-2);
  max-width: 44ch;
}

.dl-mono {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
}

.dl-muted { color: var(--ink-3); }

em.dl-accent, .dl-accent { font-style: italic; color: var(--gold); }

/* Long-form text: news articles, profiles */
.dl-prose {
  font-family: var(--font-serif);
  font-size: 1.24rem;
  line-height: 1.68;
  color: var(--ink);
  max-width: var(--measure);
  font-variant-numeric: oldstyle-nums proportional-nums;
}

.dl-prose > * { margin-top: 0; margin-bottom: 0; }
.dl-prose > * + * { margin-top: 1.1em; }
.dl-prose > h2, .dl-prose > h3 { margin-top: 2.2em; font-size: 1.65rem; line-height: 1.2; }
.dl-prose > h2 + *, .dl-prose > h3 + * { margin-top: 0.7em; }
.dl-prose strong { font-weight: 600; }
.dl-prose a { color: var(--teal); text-decoration-color: rgba(11, 106, 116, 0.4); }
.dl-prose a:hover { text-decoration-color: currentColor; }
.dl-prose ul, .dl-prose ol { padding-left: 1.3em; }
.dl-prose li + li { margin-top: 0.45em; }
.dl-prose li::marker { color: var(--gold); }
.dl-prose > blockquote {
  margin-block: 2em;
  margin-inline: 0;
  padding: 0.1em 0 0.1em 1.5em;
  border-left: 2px solid var(--gold);
  font-size: 1.6rem;
  line-height: 1.4;
  font-style: italic;
  color: var(--ink);
}
.dl-prose blockquote p { margin: 0; }

/* 4. Layout
   -------------------------------------------------------------------------- */

.dl-container {
  width: min(100% - 2 * var(--gutter), var(--container));
  margin-inline: auto;
}

.dl-container--narrow { width: min(100% - 2 * var(--gutter), 920px); }

.dl-section { padding-block: clamp(80px, 8.6vw, 136px); position: relative; }
.dl-section--tight { padding-block: clamp(64px, 7vw, 112px); }
.dl-section--sunk { background: var(--paper-sunk); }
.dl-section--ruled { border-top: 1px solid var(--rule); }

.dl-sectionhead {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: 24px;
  align-items: end;
  margin-bottom: clamp(48px, 6vw, 88px);
}

.dl-sectionhead > .dl-kicker { grid-column: 1 / -1; }
.dl-sectionhead > .dl-h2 { grid-column: 1 / span 7; }
.dl-sectionhead > .dl-lead,
.dl-sectionhead > .dl-sectionhead__aside { grid-column: 9 / -1; margin: 0; }

@media (max-width: 960px) {
  .dl-sectionhead > .dl-h2,
  .dl-sectionhead > .dl-lead,
  .dl-sectionhead > .dl-sectionhead__aside { grid-column: 1 / -1; }
  .dl-sectionhead > .dl-lead,
  .dl-sectionhead > .dl-sectionhead__aside { margin-top: 1.4rem; }
}

/* 5. Controls
   -------------------------------------------------------------------------- */

.dl-icon { display: inline-block; width: 1.15em; height: 1.15em; flex: none; vertical-align: -0.2em; }

.dl-btn {
  --btn-bg: var(--ink);
  --btn-fg: var(--paper);
  display: inline-flex;
  align-items: center;
  gap: 0.65em;
  padding: 0.95em 1.45em;
  border: 1px solid var(--btn-bg);
  border-radius: var(--radius);
  background: var(--btn-bg);
  color: var(--btn-fg);
  font-family: var(--font-sans);
  font-size: 0.95rem;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.01em;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 0.25s var(--ease), border-color 0.25s var(--ease), color 0.25s var(--ease), transform 0.25s var(--ease);
}

.dl-btn .dl-icon { transition: transform 0.3s var(--ease); }
.dl-btn:hover .dl-icon:last-child { transform: translateX(3px); }
.dl-btn:hover { --btn-bg: var(--navy); }
:root[data-theme="dark"] .dl-btn:hover { --btn-bg: var(--gold-soft); --btn-fg: var(--night); }

.dl-btn--ghost {
  background: transparent;
  color: var(--ink);
  border-color: var(--rule-strong);
}
.dl-btn--ghost:hover { border-color: var(--ink); background: transparent; color: var(--ink); }

.dl-btn--gold { --btn-bg: var(--gold-soft); --btn-fg: var(--night); }
.dl-btn--gold:hover { --btn-bg: #ecd08f; --btn-fg: var(--night); }

.dl-btn--light { --btn-bg: var(--on-night); --btn-fg: var(--night); }
.dl-btn--light:hover { --btn-bg: var(--gold-soft); --btn-fg: var(--night); }

.dl-btn--outline-light {
  background: transparent;
  color: var(--on-night);
  border-color: rgba(241, 237, 228, 0.35);
}
.dl-btn--outline-light:hover { background: rgba(241, 237, 228, 0.08); border-color: var(--on-night); color: var(--on-night); }

.dl-textlink {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  font-weight: 500;
  font-size: 0.95rem;
  text-decoration: none;
  color: var(--ink);
  background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat;
  padding-bottom: 3px;
  transition: background-size 0.4s var(--ease), color 0.2s;
}
.dl-textlink:hover { background-size: 0 1px; background-position: 100% 100%; color: var(--teal); }
.dl-textlink .dl-icon { transition: transform 0.3s var(--ease); }
.dl-textlink:hover .dl-icon { transform: translateX(3px); }
.dl-textlink--light { color: var(--on-night); }
.dl-textlink--light:hover { color: var(--gold-soft); }

.dl-iconbtn {
  display: inline-grid;
  place-items: center;
  width: 42px;
  height: 42px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 50%;
  background: transparent;
  color: inherit;
  transition: background-color 0.2s, border-color 0.2s;
}
.dl-iconbtn:hover { border-color: currentColor; }
.dl-iconbtn .dl-icon { width: 20px; height: 20px; }

.dl-iconbtn__dark { display: none; }
:root[data-theme="dark"] .dl-iconbtn__light { display: none; }
:root[data-theme="dark"] .dl-iconbtn__dark { display: contents; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .dl-iconbtn__light { display: none; }
  :root:not([data-theme="light"]) .dl-iconbtn__dark { display: contents; }
}

.dl-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  padding: 0.42em 0.8em;
  border: 1px solid var(--rule-strong);
  border-radius: var(--radius);
  background: transparent;
  color: var(--ink);
  font-family: var(--font-mono);
  font-size: 0.74rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  line-height: 1.2;
  transition: border-color 0.2s, background-color 0.2s, color 0.2s;
}
.dl-chip .dl-icon { width: 13px; height: 13px; }
.dl-chip:hover { border-color: var(--ink); }
.dl-chip[aria-pressed="true"], .dl-chip.is-active { background: var(--ink); border-color: var(--ink); color: var(--paper); }

.dl-tag {
  display: inline-block;
  padding: 0.28em 0.65em;
  border-radius: 999px;
  background: var(--paper-sunk);
  color: var(--ink-2);
  font-size: 0.78rem;
  line-height: 1.3;
}

.dl-input {
  width: 100%;
  padding: 0.85em 1em 0.85em 2.8em;
  border: 1px solid var(--rule-strong);
  border-radius: var(--radius);
  background: var(--paper-raised);
  color: var(--ink);
  font-size: 1rem;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.dl-input::placeholder { color: var(--ink-3); }
.dl-input:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(216, 177, 90, 0.3); }

/* 6. Navigation
   -------------------------------------------------------------------------- */

.dl-skip {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 100;
  padding: 0.7em 1em;
  background: var(--ink);
  color: var(--paper);
  border-radius: var(--radius);
  font-weight: 500;
  text-decoration: none;
  transform: translateY(-160%);
  transition: transform 0.2s;
}
.dl-skip:focus { transform: none; }

.dl-mark { width: 46px; height: 46px; }

.dl-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  color: inherit;
  text-decoration: none;
}
.dl-brand__word {
  font-family: var(--font-serif);
  font-size: 1.38rem;
  line-height: 1;
  white-space: nowrap;
}
.dl-brand__name { font-weight: 600; letter-spacing: 0.09em; }
.dl-brand__lab { font-style: italic; font-weight: 400; }

@keyframes dl-orbit { from { transform: rotate(0); } to { transform: rotate(180deg); } }

.dl-nav {
  position: fixed;
  inset: 0 0 auto;
  z-index: 60;
  height: var(--nav-h);
  color: var(--ink);
  background: rgba(255, 255, 255, 0.88);
  -webkit-backdrop-filter: saturate(1.6) blur(16px);
  backdrop-filter: saturate(1.6) blur(16px);
  border-bottom: 1px solid var(--rule);
  transition: background-color 0.4s var(--ease), border-color 0.4s var(--ease), color 0.4s var(--ease), transform 0.45s var(--ease);
}
:root[data-theme="dark"] .dl-nav { background: rgba(10, 20, 36, 0.82); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .dl-nav { background: rgba(10, 20, 36, 0.82); }
}

.dl-nav--overlay:not(.is-scrolled) {
  background: transparent;
  border-bottom-color: transparent;
  color: var(--on-night);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
.dl-nav.is-hidden { transform: translateY(-100%); }

.dl-nav__inner {
  height: 100%;
  display: flex;
  align-items: center;
  gap: 2rem;
}

.dl-nav__links { margin-left: auto; }
.dl-nav__links ul { display: flex; gap: 0.35rem; margin: 0; padding: 0; list-style: none; }
.dl-nav__links a {
  position: relative;
  display: block;
  padding: 0.6rem 0.85rem;
  font-size: 0.93rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  text-decoration: none;
  opacity: 0.86;
  transition: opacity 0.2s;
}
.dl-nav__links a::after {
  content: "";
  position: absolute;
  left: 0.85rem;
  right: 0.85rem;
  bottom: 0.3rem;
  height: 1px;
  background: var(--gold-soft);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.45s var(--ease-out);
}
.dl-nav__links a:hover { opacity: 1; }
.dl-nav__links a:hover::after,
.dl-nav__links a[aria-current="page"]::after { transform: scaleX(1); transform-origin: left; }
.dl-nav__links a[aria-current="page"] { opacity: 1; }

.dl-nav__tools { display: flex; align-items: center; gap: 0.25rem; }
.dl-nav__menubtn { display: none; }

@media (max-width: 1020px) {
  .dl-nav__links { display: none; }
  .dl-nav__tools { margin-left: auto; }
  .dl-nav__menubtn { display: inline-grid; }
}

.dl-menu {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  flex-direction: column;
  background: var(--night);
  color: var(--on-night);
  overflow-y: auto;
}
.dl-menu[hidden] { display: none; }
.dl-menu__top { display: flex; align-items: center; justify-content: space-between; height: var(--nav-h); flex: none; }
.dl-menu__nav { flex: 1; display: flex; align-items: center; padding-block: 2rem; }
.dl-menu__nav ol { margin: 0; padding: 0; list-style: none; width: 100%; }
.dl-menu__nav li { border-top: 1px solid rgba(241, 237, 228, 0.1); }
.dl-menu__nav li:last-child { border-bottom: 1px solid rgba(241, 237, 228, 0.1); }
.dl-menu__nav a {
  display: flex;
  align-items: baseline;
  gap: 1.2rem;
  padding: 0.55rem 0;
  font-family: var(--font-serif);
  font-size: clamp(2rem, 8vw, 3.2rem);
  line-height: 1.15;
  text-decoration: none;
  opacity: 0;
  transform: translateY(14px);
  transition: color 0.2s;
}
.dl-menu.is-open .dl-menu__nav a { animation: dl-rise 0.6s var(--ease-out) forwards; }
.dl-menu.is-open .dl-menu__nav li:nth-child(2) a { animation-delay: 0.04s; }
.dl-menu.is-open .dl-menu__nav li:nth-child(3) a { animation-delay: 0.08s; }
.dl-menu.is-open .dl-menu__nav li:nth-child(4) a { animation-delay: 0.12s; }
.dl-menu.is-open .dl-menu__nav li:nth-child(5) a { animation-delay: 0.16s; }
.dl-menu.is-open .dl-menu__nav li:nth-child(6) a { animation-delay: 0.2s; }
.dl-menu.is-open .dl-menu__nav li:nth-child(7) a { animation-delay: 0.24s; }
.dl-menu__nav a:hover, .dl-menu__nav a[aria-current="page"] { color: var(--gold-soft); }
.dl-menu__num { font-family: var(--font-mono); font-size: 0.78rem; letter-spacing: 0.1em; color: var(--on-night-2); }
.dl-menu__foot { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; padding-block: 1.5rem 2rem; color: var(--on-night-2); font-size: 0.9rem; }
.dl-menu__foot p { margin: 0; }
.dl-menu__foot a { color: var(--on-night); }

@keyframes dl-rise { to { opacity: 1; transform: none; } }

/* 7. Footer
   -------------------------------------------------------------------------- */

.dl-footer {
  position: relative;
  background: var(--night);
  color: var(--on-night-2);
  font-size: 0.95rem;
  overflow: hidden;
}

.dl-footer::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(900px 420px at 85% -10%, rgba(60, 195, 204, 0.09), transparent 70%),
    radial-gradient(700px 380px at 5% 110%, rgba(216, 177, 90, 0.07), transparent 70%);
  pointer-events: none;
}

.dl-footer > * { position: relative; }
.dl-footer a { color: var(--on-night); text-decoration: none; }
.dl-footer a:hover { color: var(--gold-soft); }

.dl-footer__orbit {
  position: absolute;
  top: clamp(40px, 6vw, 90px);
  right: max(-120px, calc((100vw - var(--container)) / 2 - 140px));
  width: min(48vw, 600px);
  pointer-events: none;
}
.dl-mark--orbit { width: 100%; height: auto; opacity: 0.55; }
.dl-mark--orbit .dl-mark__orbits ellipse { vector-effect: non-scaling-stroke; stroke-width: 1px; stroke: rgba(216, 177, 90, 0.42); }
.dl-mark--orbit .dl-mark__sphere { opacity: 0.16; }
.dl-mark--orbit .dl-mark__dots { opacity: 0.5; }
.dl-mark--orbit .dl-mark__dots circle { r: 2.4px; }
@media (prefers-reduced-motion: no-preference) {
  .dl-mark--orbit { animation: dl-spin 160s linear infinite; }
}
@keyframes dl-spin { to { transform: rotate(360deg); } }
@media (max-width: 860px) { .dl-footer__orbit { opacity: 0.5; right: -30%; width: 90vw; } }

.dl-footer__cta {
  padding-block: clamp(80px, 10vw, 150px) clamp(64px, 7vw, 110px);
  border-bottom: 1px solid rgba(241, 237, 228, 0.1);
}

.dl-footer__headline {
  max-width: 22ch;
  color: var(--on-night);
  font-size: var(--step-4);
  line-height: 1.06;
  letter-spacing: -0.02em;
}

.dl-footer__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1.2rem 2rem; margin-top: 2.6rem; }
.dl-footer__actions .dl-btn { color: var(--night); }
.dl-footer__actions .dl-btn:hover { color: var(--night); }

.dl-footer__grid {
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: 3rem 2rem;
  padding-block: clamp(56px, 6vw, 88px);
}

.dl-footer__logo { display: inline-block; }
.dl-footer__logo img { display: block; width: 104px; height: auto; }
.dl-footer__brand p { max-width: 26ch; margin-top: 1.2rem; font-family: var(--font-serif); font-size: 1.1rem; line-height: 1.45; }

.dl-footer__col h3 {
  margin-bottom: 1rem;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold-soft);
}
.dl-footer__col ul { margin: 0; padding: 0; list-style: none; }
.dl-footer__col li + li { margin-top: 0.5rem; }
.dl-footer__col address { margin-bottom: 0.8rem; line-height: 1.6; }

.dl-social { display: flex; gap: 0.4rem; margin-top: 1.2rem !important; }
.dl-footer__col .dl-social li { margin: 0; }
.dl-social a {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border: 1px solid rgba(241, 237, 228, 0.18);
  border-radius: 50%;
  transition: border-color 0.2s, color 0.2s;
}
.dl-social a:hover { border-color: var(--gold-soft); }
.dl-social .dl-icon { width: 17px; height: 17px; }

.dl-footer__base {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.5rem 2rem;
  padding-block: 1.6rem 2rem;
  border-top: 1px solid rgba(241, 237, 228, 0.1);
  font-size: 0.85rem;
}
.dl-footer__base p { margin: 0; display: flex; gap: 0.7rem; }

@media (max-width: 860px) {
  .dl-footer__grid { grid-template-columns: 1fr 1fr; }
  .dl-footer__brand { grid-column: 1 / -1; }
}
@media (max-width: 520px) {
  .dl-footer__grid { grid-template-columns: 1fr; }
}

/* 8. Page header and sections
   -------------------------------------------------------------------------- */

.dl-pagehead {
  position: relative;
  padding-block: clamp(72px, 9vw, 140px) clamp(48px, 6vw, 88px);
  border-bottom: 1px solid var(--rule);
  overflow: hidden;
}

.dl-pagehead__title {
  max-width: 16ch;
  font-size: var(--step-5);
  line-height: 1;
  letter-spacing: -0.025em;
}

.dl-pagehead__lead {
  max-width: 46ch;
  margin: 2rem 0 0;
  font-family: var(--font-serif);
  font-size: var(--step-2);
  line-height: 1.4;
  color: var(--ink-2);
}

/* 9. Motion
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: no-preference) {
  .js [data-reveal] {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.9s var(--ease-out), transform 0.9s var(--ease-out);
    transition-delay: var(--reveal-delay, 0s);
  }
  .js [data-reveal].is-in { opacity: 1; transform: none; }

  @view-transition { navigation: auto; }
  ::view-transition-old(root), ::view-transition-new(root) { animation-duration: 0.35s; }
}

/* No transitions while the page settles, so hidden elements start hidden instead of animating away. */
.dl-preload *, .dl-preload *::before, .dl-preload *::after { transition: none !important; }

/* 10. Utilities
   -------------------------------------------------------------------------- */

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

.dl-toast {
  position: fixed;
  left: 50%;
  bottom: 28px;
  z-index: 90;
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.8rem 1.1rem;
  border-radius: var(--radius);
  background: var(--ink);
  color: var(--paper);
  font-size: 0.9rem;
  box-shadow: var(--shadow);
  transform: translate(-50%, 140%);
  transition: transform 0.45s var(--ease-out);
}
.dl-toast.is-shown { transform: translate(-50%, 0); }
.dl-toast .dl-icon { color: var(--gold-soft); }

/* ==========================================================================
   Home
   ========================================================================== */

.dl-hero {
  position: relative;
  isolation: isolate;
  min-height: max(700px, min(100svh, 1040px));
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  color: var(--on-night);
  background:
    radial-gradient(1100px 680px at 76% 38%, rgba(26, 64, 112, 0.55), transparent 62%),
    linear-gradient(180deg, #071023 0%, #0a1630 52%, #0c1b38 100%);
  cursor: crosshair;
}

.dl-hero__canvas { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; }

.dl-hero__scrim {
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(7, 16, 35, 0.94) 0%, rgba(7, 16, 35, 0.8) 28%, rgba(7, 16, 35, 0.3) 52%, rgba(7, 16, 35, 0) 68%),
    linear-gradient(0deg, rgba(7, 16, 35, 0.92) 0%, rgba(7, 16, 35, 0) 34%),
    linear-gradient(180deg, rgba(7, 16, 35, 0.7) 0%, rgba(7, 16, 35, 0) 18%);
}

.dl-hero__grid {
  width: min(100% - 2 * var(--gutter), var(--container));
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 4fr);
  gap: 48px;
  align-items: end;
  padding-block: calc(var(--nav-h) + 88px) clamp(64px, 9vh, 112px);
}

.dl-hero__content { max-width: 780px; cursor: auto; }
.dl-hero__kicker { margin-bottom: 1.8rem; }

.dl-hero__title {
  font-size: clamp(2.8rem, 1.7rem + 4.2vw, 5.7rem);
  font-weight: 340;
  line-height: 1.01;
  letter-spacing: -0.028em;
  color: var(--on-night);
}
.dl-hero__title em { font-style: italic; font-weight: 340; color: var(--gold-soft); }

.dl-hero__lead {
  max-width: 54ch;
  margin: 1.9rem 0 0;
  font-size: 1.13rem;
  line-height: 1.68;
  color: var(--on-night-2);
}

.dl-hero__actions { display: flex; flex-wrap: wrap; gap: 0.9rem; margin-top: 2.5rem; }

.dl-hero__scroll {
  position: absolute;
  left: 50%;
  bottom: 22px;
  width: 1px;
  height: 46px;
  background: rgba(241, 237, 228, 0.18);
  overflow: hidden;
}
.dl-hero__scroll span {
  position: absolute;
  left: 0;
  top: -40%;
  width: 1px;
  height: 40%;
  background: var(--gold-soft);
  animation: dl-scrollcue 2.4s var(--ease) infinite;
}
@keyframes dl-scrollcue { to { top: 100%; } }

/* The instrument panel next to the hero text */
.dl-sim {
  justify-self: end;
  width: min(100%, 368px);
  margin: 0;
  padding: 18px 18px 16px;
  border: 1px solid rgba(241, 237, 228, 0.12);
  border-radius: var(--radius-lg);
  background: rgba(7, 16, 35, 0.74);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  color: var(--on-night-2);
  font-size: 0.82rem;
  line-height: 1.45;
  cursor: auto;
}

.dl-sim__head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}
.dl-sim__fig { color: var(--gold-soft); }
.dl-sim__title { color: var(--on-night); }
.dl-sim__day { margin-left: auto; color: var(--on-night); font-variant-numeric: tabular-nums; }

.dl-sim__chart { width: 100%; height: 66px; margin: 14px 0 12px; }

.dl-sim__legend { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 18px; margin: 0; }
.dl-sim__legend > div { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.dl-sim__legend > div[hidden] { display: none; }
.dl-sim__legend dt { display: flex; align-items: center; gap: 8px; }
.dl-sim__legend dd { margin: 0; font-family: var(--font-mono); font-size: 0.78rem; color: var(--on-night); font-variant-numeric: tabular-nums; }

.dl-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; flex: none; }
.dl-dot--s { background: #a8b7cb; }
.dl-dot--i { background: #ff6f59; box-shadow: 0 0 8px rgba(255, 111, 89, 0.8); }
.dl-dot--r { background: #3cc3cc; }
.dl-dot--v { border: 1.5px solid #d8b15a; }

.dl-sim__controls {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid rgba(241, 237, 228, 0.1);
}

.dl-simbtn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 11px;
  border: 1px solid rgba(241, 237, 228, 0.2);
  border-radius: 999px;
  background: transparent;
  color: var(--on-night);
  font-size: 0.77rem;
  line-height: 1.2;
  transition: border-color 0.2s, background-color 0.2s, color 0.2s;
}
.dl-simbtn .dl-icon { width: 13px; height: 13px; }
.dl-simbtn:hover { border-color: rgba(241, 237, 228, 0.7); }
.dl-simbtn--toggle[aria-pressed="true"] { background: var(--gold-soft); border-color: var(--gold-soft); color: var(--night); }
.dl-simbtn__icon { display: contents; }
.dl-simbtn__icon--play,
.dl-simbtn[aria-pressed="true"] .dl-simbtn__icon--pause { display: none; }
.dl-simbtn[aria-pressed="true"] .dl-simbtn__icon--play { display: contents; }

.dl-sim__caption { margin-top: 12px; font-size: 0.78rem; line-height: 1.5; color: var(--on-night-2); }

@media (prefers-reduced-motion: no-preference) {
  .dl-hero__content > * { opacity: 0; transform: translateY(18px); animation: dl-rise 1.1s var(--ease-out) forwards; }
  .dl-hero__content > :nth-child(1) { animation-delay: 0.1s; }
  .dl-hero__content > :nth-child(2) { animation-delay: 0.22s; }
  .dl-hero__content > :nth-child(3) { animation-delay: 0.38s; }
  .dl-hero__content > :nth-child(4) { animation-delay: 0.52s; }
  .dl-sim { opacity: 0; animation: dl-fade 1.4s 0.8s var(--ease) forwards; }
}

@keyframes dl-fade { to { opacity: 1; } }

@media (min-width: 961px) and (max-height: 860px) {
  .dl-hero__grid { padding-block: calc(var(--nav-h) + 44px) 48px; }
  .dl-hero__kicker { margin-bottom: 1.2rem; }
  .dl-hero__title { font-size: clamp(2.6rem, 1.3rem + 3.3vw, 4.7rem); }
  .dl-hero__lead { margin-top: 1.3rem; font-size: 1.05rem; }
  .dl-hero__actions { margin-top: 1.7rem; }
  .dl-sim__caption { display: none; }
}

@media (max-width: 960px) {
  .dl-hero { align-items: stretch; }
  .dl-hero__grid { grid-template-columns: 1fr; align-content: end; gap: 36px; padding-top: calc(var(--nav-h) + 36vh); }
  .dl-hero__scrim {
    background:
      linear-gradient(0deg, rgba(7, 16, 35, 0.96) 0%, rgba(7, 16, 35, 0.88) 48%, rgba(7, 16, 35, 0.2) 78%, rgba(7, 16, 35, 0.55) 100%);
  }
  .dl-sim { justify-self: stretch; width: 100%; }
  .dl-hero__scroll { display: none; }
}

@media (max-width: 520px) {
  .dl-hero__lead { font-size: 1.02rem; }
  .dl-hero__actions .dl-btn { flex: 1 1 auto; justify-content: center; }
  .dl-sim__caption { display: none; }
}

/* Introduction */
.dl-intro__grid {
  display: grid;
  grid-template-columns: minmax(0, 8fr) minmax(0, 4fr);
  gap: clamp(40px, 6vw, 104px);
  align-items: start;
}

.dl-intro__statement {
  margin: 0;
  font-family: var(--font-serif);
  font-size: clamp(1.65rem, 1.15rem + 1.6vw, 2.55rem);
  line-height: 1.28;
  letter-spacing: -0.014em;
}
.dl-intro__statement em { font-style: italic; color: var(--gold); }

.dl-director-chip {
  display: flex;
  align-items: center;
  gap: 16px;
  padding-bottom: 26px;
  border-bottom: 1px solid var(--rule);
  text-decoration: none;
}
.dl-director-chip__photo { flex: none; width: 68px; height: 68px; border-radius: 50%; overflow: hidden; }
.dl-director-chip__photo img { width: 100%; height: 100%; object-fit: cover; }
.dl-director-chip__label {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--gold);
}
.dl-director-chip__name { display: block; margin-top: 4px; font-family: var(--font-serif); font-size: 1.22rem; line-height: 1.25; transition: color 0.2s; }
.dl-director-chip:hover .dl-director-chip__name { color: var(--teal); }
.dl-director-chip__role { display: block; margin-top: 2px; font-size: 0.84rem; line-height: 1.4; color: var(--ink-3); }

.dl-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 26px 0 0; }
.dl-facts > div { display: flex; flex-direction: column-reverse; justify-content: flex-end; }
.dl-facts dt { margin-top: 6px; font-size: 0.8rem; line-height: 1.35; color: var(--ink-3); }
.dl-facts dd { margin: 0; font-family: var(--font-serif); font-size: 2.7rem; line-height: 1; font-variant-numeric: lining-nums; }
.dl-facts dd.dl-facts__text { font-size: 1.45rem; line-height: 1.85rem; }

@media (max-width: 960px) {
  .dl-intro__grid { grid-template-columns: 1fr; }
}

/* Research themes with drawn figures */
.dl-themes {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: 1px solid var(--rule-strong);
}

.dl-theme {
  position: relative;
  padding: 40px 36px 48px 0;
  border-bottom: 1px solid var(--rule);
}
.dl-theme:not(:nth-child(3n + 1)) { padding-left: 36px; border-left: 1px solid var(--rule); }
.dl-theme__num { position: absolute; top: 40px; right: 36px; font-family: var(--font-mono); font-size: 0.72rem; color: var(--ink-3); }
.dl-theme h3 { margin: 26px 0 10px; font-size: 1.6rem; line-height: 1.15; }
.dl-theme p { margin: 0; max-width: 36ch; color: var(--ink-2); }

@media (max-width: 960px) {
  .dl-themes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dl-theme, .dl-theme:not(:nth-child(3n + 1)) { padding: 36px 28px 40px 0; border-left: 0; }
  .dl-theme:nth-child(2n) { padding-left: 28px; border-left: 1px solid var(--rule); }
  .dl-theme__num { right: 28px; }
}
@media (max-width: 600px) {
  .dl-themes { grid-template-columns: 1fr; }
  .dl-theme, .dl-theme:nth-child(2n) { padding: 32px 0 36px; border-left: 0; }
  .dl-theme__num { right: 0; top: 32px; }
}

.dl-glyph { width: 100%; max-width: 190px; height: auto; aspect-ratio: 160 / 96; stroke: var(--ink-2); stroke-width: 1.4; }
.dl-glyph .g-axis { stroke: var(--rule-strong); stroke-width: 1.2; }
.dl-glyph .g-line { stroke: var(--ink-3); stroke-width: 1.1; }
.dl-glyph .g-steel { stroke: var(--ink-3); stroke-width: 1.6; }
.dl-glyph .g-coral { stroke: var(--coral); stroke-width: 1.8; }
.dl-glyph .g-fill { fill: rgba(var(--coral-rgb), 0.1); }
.dl-glyph .g-teal { stroke: var(--teal); stroke-width: 1.8; }
.dl-glyph .g-gold { stroke: var(--gold); stroke-width: 1.7; }
.dl-glyph .g-arrow { stroke: var(--gold); stroke-width: 1.5; }
.dl-glyph .g-dash { stroke: var(--ink-3); stroke-width: 1.2; }
.dl-glyph .g-band { fill: rgba(var(--teal-rgb), 0.16); stroke: none; }
.dl-glyph .g-nodes circle { fill: var(--paper); stroke: var(--ink-2); stroke-width: 1.3; }
.dl-glyph .g-nodes .g-node-gold { fill: var(--gold); stroke: var(--gold); }
.dl-glyph .g-nodes .g-node-coral { fill: var(--coral); stroke: var(--coral); }
.dl-glyph .g-virus circle { fill: var(--coral); stroke: none; }
.dl-glyph .g-hex path { fill: var(--paper-sunk); stroke: var(--paper); stroke-width: 1.5; }
.dl-glyph .g-hex .g-hex-1 { fill: rgba(var(--teal-rgb), 0.32); }
.dl-glyph .g-hex .g-hex-2 { fill: rgba(var(--teal-rgb), 0.66); }
.dl-glyph .g-hex .g-hex-3 { fill: var(--coral); }
.dl-section--sunk .dl-glyph .g-nodes circle { fill: var(--paper-sunk); }

@media (prefers-reduced-motion: no-preference) {
  .js .dl-glyph .gd {
    stroke-dasharray: 1;
    stroke-dashoffset: 1;
    transition: stroke-dashoffset 1.8s var(--ease-out) 0.25s;
  }
  .js .dl-glyph .g-axis { transition-delay: 0s; }
  .js .dl-glyph .g-gold, .js .dl-glyph .g-coral { transition-delay: 0.5s; }
  .js .dl-glyph .g-arrow { transition-delay: 1.1s; }
  .js .dl-glyph .g-dash, .js .dl-glyph .g-band, .js .dl-glyph .g-hex path,
  .js .dl-glyph .g-nodes, .js .dl-glyph .g-virus { opacity: 0; transition: opacity 0.9s var(--ease) 0.6s; }
  .js .dl-glyph .g-fill { fill-opacity: 0; transition: stroke-dashoffset 1.8s var(--ease-out) 0.5s, fill-opacity 1s var(--ease) 1.2s; }
  .js .dl-glyph .g-hex path:nth-child(2n) { transition-delay: 0.75s; }
  .js .dl-glyph .g-hex path:nth-child(3n) { transition-delay: 0.9s; }

  .js .is-in .dl-glyph .gd { stroke-dashoffset: 0; }
  .js .is-in .dl-glyph .g-dash, .js .is-in .dl-glyph .g-band, .js .is-in .dl-glyph .g-hex path,
  .js .is-in .dl-glyph .g-nodes, .js .is-in .dl-glyph .g-virus { opacity: 1; }
  .js .is-in .dl-glyph .g-fill { fill-opacity: 1; }
}
.dl-glyph .g-dash { stroke-dasharray: 0.025 0.02; }

.dl-section__more { margin: 48px 0 0; }

/* Publications list (home, publications page, profiles) */
.dl-publist { border-top: 1px solid var(--rule-strong); }

.dl-pub {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  column-gap: 32px;
  padding: 30px 0 32px;
  border-bottom: 1px solid var(--rule);
}
.dl-pub--year { grid-template-columns: 110px minmax(0, 1fr); }
.dl-pub:target { background: linear-gradient(90deg, rgba(216, 177, 90, 0.12), transparent 70%); }

.dl-pub__year { margin: 0; padding-top: 0.45rem; font-family: var(--font-mono); font-size: 0.82rem; color: var(--gold); }

.dl-pub__title { max-width: 62ch; font-size: clamp(1.25rem, 1.1rem + 0.45vw, 1.55rem); line-height: 1.28; letter-spacing: -0.008em; }
.dl-pub__title a {
  text-decoration: none;
  background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat;
  transition: background-size 0.6s var(--ease-out), color 0.2s;
}
.dl-pub__title a:hover { background-size: 100% 1px; color: var(--teal); }

.dl-pub__authors { margin: 0.75rem 0 0.35rem; max-width: 92ch; font-size: 0.93rem; line-height: 1.55; color: var(--ink-3); }
.dl-pub__authors strong { color: var(--ink); font-weight: 600; }

.dl-pub__venue { margin: 0; font-size: 0.9rem; color: var(--ink-3); }
.dl-pub__venue cite { font-family: var(--font-serif); font-size: 1.06rem; font-style: italic; color: var(--ink-2); }
.dl-pub__date::before { content: "·"; margin: 0 0.55em; }

.dl-pub__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 1.15rem; }
.dl-pub__topics { display: inline-flex; flex-wrap: wrap; gap: 6px; margin-left: auto; }

.dl-cite {
  margin-top: 1.1rem;
  padding: 18px 20px;
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  background: var(--paper-raised);
}
.dl-cite__row + .dl-cite__row { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--rule); }
.dl-cite__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.dl-cite__label { font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-3); }
.dl-cite__text { margin: 0; font-size: 0.92rem; line-height: 1.6; }
.dl-cite__bib { margin: 0; padding: 0; overflow-x: auto; font-family: var(--font-mono); font-size: 0.78rem; line-height: 1.6; white-space: pre; color: var(--ink-2); }

@media (max-width: 720px) {
  .dl-pub--year { grid-template-columns: 1fr; }
  .dl-pub__year { padding: 0 0 0.6rem; }
  .dl-pub__topics { margin-left: 0; }
}

/* News on the home page and the news index */
.dl-newsgrid {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  gap: clamp(36px, 5vw, 88px);
  align-items: start;
}

.dl-feature { display: grid; gap: 28px; }
.dl-feature__media { display: block; aspect-ratio: 3 / 2; overflow: hidden; border-radius: var(--radius); background: var(--paper-sunk); }
.dl-feature__media picture, .dl-feature__media img { width: 100%; height: 100%; }
.dl-feature__media img { object-fit: cover; transition: transform 1.4s var(--ease-out); }
.dl-feature:hover .dl-feature__media img { transform: scale(1.03); }
.dl-feature__title { font-size: var(--step-3); line-height: 1.1; letter-spacing: -0.016em; }
.dl-feature__title a { text-decoration: none; }
.dl-feature__title a:hover { color: var(--teal); }
.dl-feature__summary { margin: 1rem 0 1.4rem; max-width: 52ch; font-family: var(--font-serif); font-size: 1.22rem; line-height: 1.5; color: var(--ink-2); }

.dl-newsitem__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin: 0 0 0.75rem;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
}
.dl-newsitem__cat { color: var(--gold); }

.dl-newsitem { position: relative; }
.dl-newsitem__link { display: block; text-decoration: none; }
.dl-newsitem__title { font-size: 1.38rem; line-height: 1.24; transition: color 0.2s; }
.dl-newsitem__link:hover .dl-newsitem__title { color: var(--teal); }
.dl-newsitem__summary { margin: 0.55rem 0 0; font-size: 0.95rem; line-height: 1.6; color: var(--ink-2); }
.dl-newsitem__more { display: inline-flex; align-items: center; gap: 0.45em; margin-top: 0.9rem; font-size: 0.86rem; font-weight: 500; color: var(--teal); }
.dl-newsitem__more .dl-icon { transition: transform 0.3s var(--ease); }
.dl-newsitem__link:hover .dl-newsitem__more .dl-icon { transform: translateX(3px); }

.dl-newslist--compact { border-top: 1px solid var(--rule-strong); }
.dl-newslist--compact .dl-newsitem { padding: 26px 0; border-bottom: 1px solid var(--rule); }
.dl-newslist--compact .dl-newsitem__more { display: none; }

@media (max-width: 960px) {
  .dl-newsgrid { grid-template-columns: 1fr; }
}

/* Portrait wall on the home page */
.dl-mosaic {
  --cols: var(--cols-lg, 6);
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
}
.dl-mosaic > li { flex: 0 0 calc((100% - (var(--cols) - 1) * 12px) / var(--cols)); min-width: 0; }

.dl-mosaic__item {
  position: relative;
  display: block;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--paper-sunk);
  color: var(--on-night);
  text-decoration: none;
}
.dl-mosaic__item picture, .dl-mosaic__item img { width: 100%; height: 100%; }
.dl-mosaic__item img { object-fit: cover; filter: grayscale(1) contrast(1.04); transition: filter 0.7s var(--ease), transform 1.2s var(--ease-out); }
.dl-mosaic__item:hover img, .dl-mosaic__item:focus-visible img { filter: none; transform: scale(1.04); }

.dl-mosaic__caption {
  position: absolute;
  inset: auto 0 0;
  padding: 44px 12px 12px;
  background: linear-gradient(0deg, rgba(7, 16, 35, 0.88), rgba(7, 16, 35, 0));
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.4s var(--ease), transform 0.5s var(--ease-out);
}
.dl-mosaic__item:hover .dl-mosaic__caption, .dl-mosaic__item:focus-visible .dl-mosaic__caption { opacity: 1; transform: none; }
.dl-mosaic__name { display: block; font-family: var(--font-serif); font-size: 1.02rem; line-height: 1.2; }
.dl-mosaic__role { display: block; margin-top: 2px; font-size: 0.72rem; line-height: 1.3; color: var(--on-night-2); }

@media (hover: none) {
  .dl-mosaic__caption { opacity: 1; transform: none; }
  .dl-mosaic__item img { filter: none; }
}
@media (max-width: 1020px) { .dl-mosaic { --cols: var(--cols-md, 4); } }
@media (max-width: 560px) { .dl-mosaic { --cols: var(--cols-sm, 2); } }

/* Group photo (Team page, home page) */
.dl-groupphoto { margin: 0 0 clamp(48px, 6vw, 80px); }
.dl-groupphoto picture { display: block; overflow: hidden; border-radius: var(--radius-lg); background: var(--paper-sunk); aspect-ratio: 2400 / 1111; }
.dl-groupphoto img { width: 100%; height: 100%; object-fit: cover; }
.dl-groupphoto figcaption { margin-top: 12px; font-size: 0.84rem; color: var(--ink-3); }
@media (prefers-reduced-motion: no-preference) {
  .js .dl-groupphoto[data-reveal] picture { clip-path: inset(0 0 100% 0 round var(--radius-lg)); transition: clip-path 1.3s var(--ease-out) 0.1s; }
  .js .dl-groupphoto[data-reveal].is-in picture { clip-path: inset(0 0 0 0 round var(--radius-lg)); }
  .js .dl-groupphoto[data-reveal] img { transform: scale(1.08); transition: transform 1.8s var(--ease-out); }
  .js .dl-groupphoto[data-reveal].is-in img { transform: none; }
}

/* Initials for members without a photo */
.dl-monogram {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: radial-gradient(circle at 32% 26%, #1d3c69 0%, #0c1a33 72%);
  color: var(--gold-soft);
  font-family: var(--font-serif);
  font-size: clamp(1.7rem, 1rem + 2.4vw, 2.9rem);
  letter-spacing: 0.06em;
}
.dl-monogram::before,
.dl-monogram::after {
  content: "";
  position: absolute;
  left: 8%;
  right: 8%;
  top: 50%;
  aspect-ratio: 1 / 0.36;
  border: 1px solid rgba(216, 177, 90, 0.28);
  border-radius: 50%;
  transform: translateY(-50%) rotate(-28deg);
}
.dl-monogram::after { transform: translateY(-50%) rotate(28deg); border-color: rgba(60, 195, 204, 0.22); }
.dl-monogram span { position: relative; z-index: 1; }

/* ==========================================================================
   Research
   ========================================================================== */

.dl-figcaption { max-width: 92ch; margin: 18px 0 0; font-size: 0.84rem; line-height: 1.6; color: var(--ink-3); }

/* Interactive transmission model */
.dl-explorer {
  display: grid;
  grid-template-columns: minmax(280px, 4fr) minmax(0, 8fr);
  border: 1px solid var(--rule-strong);
  border-radius: var(--radius-lg);
  background: var(--paper-raised);
  overflow: hidden;
}

.dl-explorer__controls { padding: 10px 28px 26px; border-right: 1px solid var(--rule); }
.dl-explorer__figure { padding: 28px 30px 24px; min-width: 0; }
.dl-explorer__reset { margin-top: 20px; font-size: 0.88rem; border: 0; background-color: transparent; cursor: pointer; }

.dl-range { padding: 18px 0 16px; border-bottom: 1px solid var(--rule); }
.dl-range label { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; font-size: 0.92rem; font-weight: 500; }
.dl-range output { font-family: var(--font-mono); font-size: 0.84rem; color: var(--gold); font-variant-numeric: tabular-nums; white-space: nowrap; }
.dl-range__hint { margin: 6px 0 0; font-size: 0.8rem; line-height: 1.5; color: var(--ink-3); }
.dl-range__hint a { color: var(--teal); }
.dl-range__track { position: relative; }

.dl-range input[type="range"] {
  -webkit-appearance: none;
  appearance: none;
  display: block;
  width: 100%;
  height: 26px;
  margin: 8px 0 0;
  background: transparent;
  cursor: pointer;
}
.dl-range input[type="range"]::-webkit-slider-runnable-track { height: 2px; background: var(--rule-strong); }
.dl-range input[type="range"]::-moz-range-track { height: 2px; background: var(--rule-strong); }
.dl-range input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  margin-top: -8px;
  border: 3px solid var(--paper-raised);
  border-radius: 50%;
  background: var(--ink);
  box-shadow: 0 0 0 1px var(--ink);
  transition: transform 0.2s var(--ease);
}
.dl-range input[type="range"]::-moz-range-thumb {
  width: 12px;
  height: 12px;
  border: 3px solid var(--paper-raised);
  border-radius: 50%;
  background: var(--ink);
  box-shadow: 0 0 0 1px var(--ink);
}
.dl-range input[type="range"]:hover::-webkit-slider-thumb { transform: scale(1.12); }
.dl-range input[type="range"]:focus-visible { outline: none; }
.dl-range input[type="range"]:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 1px var(--ink), 0 0 0 6px rgba(216, 177, 90, 0.45); }
.dl-range input[type="range"]:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 1px var(--ink), 0 0 0 6px rgba(216, 177, 90, 0.45); }

.dl-range__marker {
  --hit: 0.667;
  position: absolute;
  top: 21px;
  left: calc(9px + var(--hit) * (100% - 18px));
  width: 2px;
  height: 14px;
  background: var(--gold);
  transform: translate(-50%, -50%);
  pointer-events: none;
}
.dl-range__marker[hidden] { display: none; }

.dl-explorer__stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin: 0 0 18px; }
.dl-explorer__stats dt { font-size: 0.76rem; line-height: 1.3; color: var(--ink-3); }
.dl-explorer__stats dd { margin: 6px 0 0; font-family: var(--font-serif); font-size: clamp(1.4rem, 1.1rem + 0.9vw, 2rem); line-height: 1; font-variant-numeric: lining-nums tabular-nums; transition: color 0.3s; }
.is-contained .dl-explorer__stats [data-out="reff"] { color: var(--teal); }

.dl-explorer__plot { width: 100%; height: auto; overflow: visible; }
.ex-grid line { stroke: var(--rule); stroke-width: 1; }
.ex-grid .ex-axis, .ex-axis { stroke: var(--rule-strong); }
.ex-tick { font-family: var(--font-mono); font-size: 11px; fill: var(--ink-3); }
.ex-s, .ex-r, .ex-i { fill: none; stroke-linejoin: round; stroke-linecap: round; }
.ex-s { stroke: var(--ink-3); stroke-width: 2; }
.ex-r { stroke: var(--teal); stroke-width: 2.2; }
.ex-i { stroke: var(--coral); stroke-width: 2.6; }
.ex-i-area { fill: var(--coral); opacity: 0.12; }
.ex-vacc-band { fill: var(--gold-soft); opacity: 0.16; }
.ex-vacc-label { font-family: var(--font-mono); font-size: 11px; fill: var(--gold); }
.ex-peak-line { stroke: var(--coral); stroke-dasharray: 3 4; opacity: 0.6; }
.ex-peak-dot { fill: var(--coral); stroke: var(--paper-raised); stroke-width: 2.5; }
.ex-peak-label { font-family: var(--font-sans); font-size: 13px; font-weight: 500; fill: var(--ink); paint-order: stroke; stroke: var(--paper-raised); stroke-width: 5px; stroke-linejoin: round; }
.ex-lab { font-family: var(--font-sans); font-size: 12px; font-weight: 500; paint-order: stroke; stroke: var(--paper-raised); stroke-width: 4px; }
.ex-lab--s { fill: var(--ink-3); }
.ex-lab--r { fill: var(--teal); }

.dl-explorer__legend { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-top: 10px; font-size: 0.8rem; color: var(--ink-3); }
.ex-key { display: inline-block; width: 16px; height: 2px; margin-right: 8px; vertical-align: middle; }
.ex-key--s { background: var(--ink-3); }
.ex-key--i { background: var(--coral); height: 3px; }
.ex-key--r { background: var(--teal); }
.ex-key--v { height: 9px; background: var(--gold-soft); opacity: 0.4; }

.dl-explorer__summary { min-height: 3.2em; margin: 16px 0 0; padding-top: 16px; border-top: 1px solid var(--rule); font-family: var(--font-serif); font-size: 1.12rem; line-height: 1.5; color: var(--ink-2); }

@media (max-width: 960px) {
  .dl-explorer { grid-template-columns: 1fr; }
  .dl-explorer__figure { order: -1; padding: 22px 18px 18px; }
  .dl-explorer__controls { border-right: 0; border-top: 1px solid var(--rule); padding: 4px 20px 22px; }
  .dl-explorer__stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Research areas */
.dl-areas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(32px, 5vw, 88px); }
.dl-area { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 28px; align-items: start; padding: 38px 0 40px; border-top: 1px solid var(--rule); }
.dl-area .dl-glyph { max-width: 140px; }
.dl-area h3 { margin: 0 0 10px; font-size: 1.55rem; line-height: 1.18; }
.dl-area p { margin: 0; color: var(--ink-2); }

@media (max-width: 960px) { .dl-areas { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .dl-area { grid-template-columns: 1fr; gap: 18px; } }

/* How the pieces connect */
.dl-diagram { margin: 0; overflow-x: auto; }
.dl-diagram__svg { width: 100%; min-width: 760px; height: auto; overflow: visible; }
.dl-diagram__edge { fill: none; stroke: var(--rule-strong); stroke-width: 1.4; transition: stroke 0.3s, opacity 0.3s, stroke-width 0.3s; }
.dl-diagram__edge:not(.dl-diagram__edge--frame) { stroke: var(--gold); stroke-opacity: 0.55; stroke-dasharray: 3 9; }
.dl-diagram__edge--frame { stroke-dasharray: 4 7; }
.dl-diagram__node { cursor: default; outline: none; transition: opacity 0.3s; }
.dl-diagram__node circle { fill: var(--paper-raised); stroke: var(--ink-2); stroke-width: 1.2; transition: stroke 0.3s, fill 0.3s; }
.dl-diagram__node text { font-family: var(--font-serif); font-size: 20px; fill: var(--ink); }
.dl-diagram__node--bridge circle { fill: var(--gold); stroke: var(--paper-sunk); stroke-width: 4; }
.dl-diagram__node--bridge text { font-family: var(--font-sans); font-size: 15px; font-weight: 500; fill: var(--ink-2); }
.dl-diagram__node--hub circle { fill: var(--night); stroke: var(--gold-soft); stroke-width: 1.4; }
.dl-diagram__node--hub text { font-size: 24px; fill: var(--on-night); }
.dl-diagram__node--hub .dl-diagram__halo { fill: none; stroke: var(--gold); stroke-dasharray: 2 7; stroke-opacity: 0.7; transform-box: fill-box; transform-origin: center; }
.dl-diagram__eq { font-family: var(--font-serif); font-style: italic; font-size: 18px !important; fill: var(--gold) !important; }
.dl-diagram__apps text { font-family: var(--font-sans); font-size: 16px; fill: var(--ink-2); }
.dl-diagram__apps .dl-diagram__appslabel { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase; fill: var(--gold); }
.dl-diagram__node:focus-visible circle:last-of-type { stroke: var(--focus); stroke-width: 2.5; }

.has-active .dl-diagram__edge { opacity: 0.22; }
.has-active .dl-diagram__edge.is-lit { opacity: 1; stroke: var(--gold); stroke-opacity: 1; stroke-width: 2.2; }
.has-active .dl-diagram__node { opacity: 0.4; }
.has-active .dl-diagram__node.is-lit { opacity: 1; }
.dl-diagram__node--pillar.is-lit circle { stroke: var(--gold); stroke-width: 2; }

@media (prefers-reduced-motion: no-preference) {
  .dl-diagram__edge:not(.dl-diagram__edge--frame) { animation: dl-flow 2.6s linear infinite; }
  .dl-diagram__halo { animation: dl-spin 60s linear infinite; }
}
@keyframes dl-flow { to { stroke-dashoffset: -48; } }

/* Current projects */
.dl-projects { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 20px; }
.dl-project { grid-column: span 2; }
.dl-project:nth-child(-n + 2) { grid-column: span 3; }
@media (max-width: 1020px) { .dl-projects { grid-template-columns: repeat(2, minmax(0, 1fr)); } .dl-project, .dl-project:nth-child(-n + 2) { grid-column: auto; } }
@media (max-width: 640px) { .dl-projects { grid-template-columns: 1fr; } }
.dl-project {
  display: flex;
  flex-direction: column;
  padding: 28px 28px 24px;
  border: 1px solid var(--rule);
  border-radius: var(--radius-lg);
  background: var(--paper-raised);
  transition: border-color 0.3s, box-shadow 0.4s var(--ease-out), transform 0.4s var(--ease-out);
}
.dl-project:hover { border-color: var(--rule-strong); box-shadow: var(--shadow); transform: translateY(-3px); }
.dl-project__status { display: inline-flex; align-items: center; gap: 9px; margin: 0 0 20px; font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 0.15em; text-transform: uppercase; color: var(--teal); }
.dl-project__status span { width: 7px; height: 7px; border-radius: 50%; background: var(--teal); box-shadow: 0 0 0 0 rgba(11, 106, 116, 0.35); }
.dl-project__title { font-size: 1.5rem; line-height: 1.2; }
.dl-project__desc { flex: 1; margin: 12px 0 24px; font-size: 0.95rem; color: var(--ink-2); }
.dl-project__team { display: flex; flex-wrap: wrap; gap: 10px 18px; margin: 0; padding-top: 18px; border-top: 1px solid var(--rule); }
.dl-project__team a { display: inline-flex; align-items: center; gap: 9px; font-size: 0.88rem; font-weight: 500; text-decoration: none; }
.dl-project__team a:hover span { color: var(--teal); }
.dl-project__face { flex: none; width: 30px; height: 30px; border-radius: 50%; overflow: hidden; }
.dl-project__face img { width: 100%; height: 100%; object-fit: cover; }
.dl-project__face--initials { display: grid; place-items: center; background: var(--night); color: var(--gold-soft); font-family: var(--font-serif); font-size: 0.72rem; letter-spacing: 0.04em; }

@media (prefers-reduced-motion: no-preference) {
  .dl-project__status span { animation: dl-pulse 2.6s var(--ease) infinite; }
}
@keyframes dl-pulse {
  0% { box-shadow: 0 0 0 0 rgba(11, 106, 116, 0.4); }
  70%, 100% { box-shadow: 0 0 0 8px rgba(11, 106, 116, 0); }
}

/* Applications and collaboration */
.dl-impact { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(56px, 7vw, 128px); }
.dl-impact .dl-h2 { margin-bottom: 36px; font-size: var(--step-3); }
.dl-impact__list { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--rule-strong); }
.dl-impact__list li { display: flex; align-items: baseline; gap: 22px; padding: 17px 0; border-bottom: 1px solid var(--rule); font-family: var(--font-serif); font-size: 1.45rem; line-height: 1.25; }
.dl-impact__list span { font-family: var(--font-mono); font-size: 0.72rem; color: var(--gold); }
.dl-collab { margin: 0; border-top: 1px solid var(--rule-strong); }
.dl-collab > div { padding: 18px 0 20px; border-bottom: 1px solid var(--rule); }
.dl-collab dt { font-family: var(--font-serif); font-size: 1.32rem; line-height: 1.25; }
.dl-collab dd { margin: 6px 0 0; font-size: 0.95rem; color: var(--ink-2); }

@media (max-width: 860px) { .dl-impact { grid-template-columns: 1fr; } }

/* ==========================================================================
   Publications
   ========================================================================== */

.dl-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 0 0 64px;
  border-top: 1px solid var(--rule-strong);
  border-bottom: 1px solid var(--rule);
}
.dl-stats > div { display: flex; flex-direction: column-reverse; justify-content: flex-end; padding: 26px 0 28px; }
.dl-stats > div + div { padding-left: 28px; border-left: 1px solid var(--rule); }
.dl-stats dt { margin-top: 10px; font-size: 0.84rem; color: var(--ink-3); }
.dl-stats dd { margin: 0; font-family: var(--font-serif); font-size: clamp(2.4rem, 1.7rem + 2.2vw, 3.8rem); line-height: 1; font-variant-numeric: lining-nums; }
@media (max-width: 760px) {
  .dl-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dl-stats > div:nth-child(3) { padding-left: 0; border-left: 0; }
  .dl-stats > div:nth-child(n + 3) { border-top: 1px solid var(--rule); }
}

.dl-pubtools {
  position: relative;
  display: grid;
  grid-template-columns: minmax(240px, 420px) minmax(0, 1fr);
  gap: 16px 28px;
  align-items: center;
  margin-bottom: 16px;
}
.dl-search { position: relative; display: block; }
.dl-search .dl-icon { position: absolute; left: 14px; top: 50%; width: 18px; height: 18px; color: var(--ink-3); transform: translateY(-50%); pointer-events: none; }
.dl-filters { display: flex; flex-wrap: wrap; gap: 8px; }
.dl-pubtools__count { grid-column: 1 / -1; margin: 0; font-size: 0.85rem; color: var(--ink-3); }
@media (max-width: 860px) { .dl-pubtools { grid-template-columns: 1fr; } }

.dl-pubyear { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 32px; margin-top: 56px; }
.dl-pubyear[hidden] { display: none; }
.dl-pubyear__label {
  position: sticky;
  top: calc(var(--nav-h) + 28px);
  align-self: start;
  font-size: clamp(3rem, 2.2rem + 2.6vw, 4.6rem);
  line-height: 0.9;
  letter-spacing: -0.03em;
  font-variant-numeric: lining-nums;
  color: var(--ink);
}
@media (max-width: 860px) {
  .dl-pubyear { grid-template-columns: 1fr; gap: 12px; }
  .dl-pubyear__label { position: static; }
}

.dl-pub[hidden] { display: none; }
.dl-pubempty { margin: 48px 0; font-family: var(--font-serif); font-size: 1.35rem; color: var(--ink-3); }

.dl-scholar {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  margin-top: 64px;
  padding: 24px 28px;
  border: 1px solid var(--rule);
  border-radius: var(--radius-lg);
  background: var(--paper-raised);
}
.dl-scholar .dl-icon { flex: none; width: 24px; height: 24px; margin-top: 2px; color: var(--gold); }
.dl-scholar p { margin: 0; color: var(--ink-2); }
.dl-scholar a { color: var(--teal); }

/* ==========================================================================
   Team and profiles
   ========================================================================== */

.dl-teamcount { max-width: 44ch; margin: 0 0 56px; font-family: var(--font-serif); font-size: var(--step-2); line-height: 1.4; color: var(--ink-2); }

.dl-director {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(32px, 5vw, 88px);
  align-items: center;
  padding: clamp(20px, 2.6vw, 36px);
  border: 1px solid var(--rule);
  border-radius: var(--radius-lg);
  background: var(--paper-raised);
}
.dl-director__photo { display: block; aspect-ratio: 4 / 5; overflow: hidden; border-radius: var(--radius); background: var(--paper-sunk); }
.dl-director__photo picture, .dl-director__photo img { width: 100%; height: 100%; }
.dl-director__photo img { object-fit: cover; transition: transform 1.4s var(--ease-out); }
.dl-director:hover .dl-director__photo img { transform: scale(1.03); }
.dl-director__name { font-size: var(--step-4); line-height: 1.04; letter-spacing: -0.02em; }
.dl-director__name a { text-decoration: none; }
.dl-director__name a:hover { color: var(--teal); }
.dl-director__title { margin: 14px 0 0; color: var(--ink-3); }
.dl-director__bio { max-width: 52ch; margin: 26px 0; font-family: var(--font-serif); font-size: 1.28rem; line-height: 1.55; color: var(--ink-2); }
.dl-director__links { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }

.dl-interests { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.dl-interests li { padding: 0.42em 0.9em; border: 1px solid var(--rule-strong); border-radius: 999px; font-size: 0.86rem; line-height: 1.3; color: var(--ink-2); }

@media (max-width: 860px) {
  .dl-director { grid-template-columns: 1fr; }
  .dl-director__photo { max-width: 420px; }
}

.dl-teamgroup { margin-top: clamp(80px, 9vw, 136px); }
.dl-teamgroup__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 36px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--rule-strong);
}
.dl-teamgroup__title { font-size: var(--step-3); }
.dl-teamgroup__count { font-family: var(--font-mono); font-size: 0.8rem; color: var(--ink-3); }

.dl-people { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 48px 24px; }
.dl-people--alumni { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (max-width: 1020px) { .dl-people, .dl-people--alumni { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 700px) { .dl-people, .dl-people--alumni { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 16px; } }

.dl-person { position: relative; display: block; color: inherit; text-decoration: none; }
.dl-person__photo { position: relative; aspect-ratio: 4 / 5; margin-bottom: 18px; overflow: hidden; border-radius: var(--radius); background: var(--paper-sunk); }
.dl-person__photo picture, .dl-person__photo img { width: 100%; height: 100%; }
.dl-person__photo img { object-fit: cover; transition: transform 1.2s var(--ease-out), filter 0.6s var(--ease); }
a.dl-person:hover .dl-person__photo img { transform: scale(1.045); }
.dl-person__name { font-size: 1.34rem; line-height: 1.2; transition: color 0.2s; }
a.dl-person:hover .dl-person__name { color: var(--teal); }
.dl-person__role { margin: 6px 0 0; font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 0.13em; text-transform: uppercase; color: var(--gold); }
.dl-person__summary { margin: 10px 0 0; font-size: 0.9rem; line-height: 1.5; color: var(--ink-2); }
.dl-person__go {
  position: absolute;
  top: 12px;
  right: 12px;
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--paper);
  color: var(--ink);
  opacity: 0;
  transform: scale(0.8);
  transition: opacity 0.3s var(--ease), transform 0.45s var(--ease-out);
}
.dl-person__go .dl-icon { width: 17px; height: 17px; }
a.dl-person:hover .dl-person__go, a.dl-person:focus-visible .dl-person__go { opacity: 1; transform: none; }
.dl-person--alumni .dl-person__photo img { filter: grayscale(1); }
.dl-person--alumni:hover .dl-person__photo img { filter: none; }
.dl-people--alumni .dl-person__name { font-size: 1.15rem; }

/* Profile pages */
.dl-profile { padding-block: clamp(36px, 4.5vw, 64px) clamp(80px, 9vw, 136px); }

.dl-backlink {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: clamp(32px, 4vw, 56px);
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--ink-3);
  text-decoration: none;
  transition: color 0.2s;
}
.dl-backlink .dl-icon { transition: transform 0.3s var(--ease); }
.dl-backlink:hover { color: var(--ink); }
.dl-backlink:hover .dl-icon { transform: translateX(-3px); }

.dl-profile__head {
  display: grid;
  grid-template-columns: minmax(220px, 4fr) minmax(0, 8fr);
  gap: clamp(32px, 5vw, 88px);
  align-items: end;
  padding-bottom: clamp(40px, 5vw, 64px);
  border-bottom: 1px solid var(--rule);
}
.dl-profile__photo { aspect-ratio: 4 / 5; overflow: hidden; border-radius: var(--radius); background: var(--paper-sunk); }
.dl-profile__photo picture, .dl-profile__photo img { width: 100%; height: 100%; }
.dl-profile__photo img { object-fit: cover; }
.dl-profile--alumni .dl-profile__photo img { filter: grayscale(0.35); }
.dl-profile__name { font-size: var(--step-5); line-height: 1; letter-spacing: -0.026em; }
.dl-profile__title { margin: 20px 0 0; font-family: var(--font-serif); font-size: var(--step-2); line-height: 1.3; color: var(--ink-2); }
.dl-profile__dept { margin: 6px 0 0; color: var(--ink-3); }
.dl-profile__contact { display: flex; flex-wrap: wrap; gap: 12px 26px; margin: 30px 0 0; padding: 0; list-style: none; }
.dl-profile__contact li { display: inline-flex; align-items: center; gap: 9px; font-size: 0.93rem; color: var(--ink-2); }
.dl-profile__contact a { display: inline-flex; align-items: center; gap: 9px; color: var(--ink); text-decoration: none; }
.dl-profile__contact a:hover { color: var(--teal); }
.dl-profile__contact .dl-icon { color: var(--gold); }

.dl-profile__body { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: clamp(32px, 6vw, 104px); padding-top: clamp(40px, 5vw, 64px); }
.dl-profile__label { margin-bottom: 22px; font-family: var(--font-mono); font-size: 0.72rem; font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gold); }
.dl-profile__section + .dl-profile__section { margin-top: 64px; }
.dl-profile__aside { position: sticky; top: calc(var(--nav-h) + 32px); align-self: start; }
.dl-profile__aside .dl-interests { flex-direction: column; align-items: flex-start; }

@media (max-width: 860px) {
  .dl-profile__head { grid-template-columns: 1fr; align-items: start; }
  .dl-profile__photo { max-width: 340px; }
  .dl-profile__body { grid-template-columns: 1fr; }
  .dl-profile__aside { position: static; }
  .dl-profile__aside .dl-interests { flex-direction: row; }
}

.dl-nextperson {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 4px 24px;
  margin-top: clamp(72px, 8vw, 120px);
  padding: 34px 0 36px;
  border-top: 1px solid var(--rule-strong);
  border-bottom: 1px solid var(--rule);
  text-decoration: none;
}
.dl-nextperson__label { grid-column: 1; font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-3); }
.dl-nextperson__name { grid-column: 1; font-family: var(--font-serif); font-size: var(--step-4); line-height: 1.05; letter-spacing: -0.02em; transition: color 0.2s; }
.dl-nextperson__role { grid-column: 1; font-size: 0.92rem; color: var(--ink-3); }
.dl-nextperson .dl-icon { grid-column: 2; grid-row: 1 / span 3; width: 52px; height: 52px; stroke-width: 1.2; transition: transform 0.45s var(--ease-out); }
.dl-nextperson:hover .dl-nextperson__name { color: var(--teal); }
.dl-nextperson:hover .dl-icon { transform: translateX(10px); }

/* ==========================================================================
   News index and articles
   ========================================================================== */

.dl-feature--wide { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 80px); align-items: center; }
.dl-feature--wide .dl-feature__media { aspect-ratio: 4 / 3; }
.dl-feature--wide .dl-feature__title { font-size: var(--step-4); }
.dl-feature__flag { padding: 0.2em 0.6em; border-radius: 2px; background: var(--gold-soft); color: var(--night); letter-spacing: 0.1em; }
@media (max-width: 860px) { .dl-feature--wide { grid-template-columns: 1fr; } }

.dl-newsbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; margin: clamp(56px, 7vw, 96px) 0 0; padding-bottom: 20px; border-bottom: 1px solid var(--rule-strong); }

.dl-newslist--full .dl-newsitem {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 240px;
  gap: 40px;
  align-items: start;
  padding: 34px 0;
  border-bottom: 1px solid var(--rule);
}
.dl-newslist--full .dl-newsitem[hidden] { display: none; }
.dl-newslist--full .dl-newsitem:not(:has(.dl-newsitem__thumb)) { grid-template-columns: minmax(0, 1fr); }
.dl-newslist--full .dl-newsitem__link { display: grid; grid-template-columns: 190px minmax(0, 1fr); column-gap: 36px; }
.dl-newslist--full .dl-newsitem__meta { grid-row: 1 / span 3; flex-direction: column; gap: 8px; padding-top: 6px; }
.dl-newslist--full .dl-newsitem__title { font-size: clamp(1.4rem, 1.2rem + 0.6vw, 1.8rem); line-height: 1.2; }
.dl-newslist--full .dl-newsitem__summary { max-width: 64ch; font-size: 1rem; }
.dl-newsitem__thumb { aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--radius); background: var(--paper-sunk); }
.dl-newsitem__thumb picture, .dl-newsitem__thumb img { width: 100%; height: 100%; }
.dl-newsitem__thumb img { object-fit: cover; transition: transform 1.2s var(--ease-out); }
.dl-newsitem__thumb.is-contain img { object-fit: contain; }
.dl-newsitem:hover .dl-newsitem__thumb img { transform: scale(1.04); }
.dl-newsitem:target { animation: dl-target 2.6s var(--ease); }
@keyframes dl-target { 0%, 40% { background: rgba(216, 177, 90, 0.16); } 100% { background: transparent; } }

@media (max-width: 860px) {
  .dl-newslist--full .dl-newsitem { grid-template-columns: 1fr; gap: 20px; }
  .dl-newslist--full .dl-newsitem__link { grid-template-columns: 1fr; }
  .dl-newslist--full .dl-newsitem__meta { grid-row: auto; flex-direction: row; }
  .dl-newsitem__thumb { order: -1; max-width: 420px; }
}

/* Article pages */
.dl-article__head { padding-block: clamp(36px, 4.5vw, 64px) clamp(36px, 4vw, 56px); }
.dl-article__title { max-width: 22ch; font-size: clamp(2.3rem, 1.6rem + 3vw, 4.4rem); line-height: 1.04; letter-spacing: -0.024em; }
.dl-article__dek { max-width: 52ch; margin: 26px 0 0; font-family: var(--font-serif); font-size: var(--step-2); line-height: 1.4; color: var(--ink-2); }

.dl-status {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 26px 0 0;
  padding: 0.5em 0.95em;
  border: 1px solid var(--teal);
  border-radius: 999px;
  color: var(--teal);
  font-size: 0.86rem;
  font-weight: 500;
}
.dl-status .dl-icon { width: 15px; height: 15px; }
.dl-status--closed { border-color: var(--rule-strong); color: var(--ink-3); }

.dl-article__media { margin: 0; overflow: hidden; border-radius: var(--radius); background: var(--paper-sunk); }
.dl-article__media img { width: 100%; max-height: 78vh; object-fit: cover; }
.dl-article__media.is-contain { max-width: 820px; }
.dl-article__media.is-contain img { object-fit: contain; }

.dl-gallery { display: grid; gap: 16px; }
.dl-gallery--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dl-gallery--3 { grid-template-columns: 1.5fr 1fr 1fr; }
.dl-gallery figure { margin: 0; }
.dl-gallery picture { display: block; overflow: hidden; border-radius: var(--radius); background: var(--paper-sunk); }
.dl-gallery img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.dl-gallery--3 img { aspect-ratio: 4 / 5; }
.dl-gallery--3 figure:first-child img { aspect-ratio: auto; height: 100%; }
.dl-gallery--3 figure:first-child picture { height: calc(100% - 2.6em); }
.dl-gallery figcaption { margin-top: 10px; font-size: 0.84rem; line-height: 1.45; color: var(--ink-3); }
@media (max-width: 700px) {
  .dl-gallery--2, .dl-gallery--3 { grid-template-columns: 1fr; }
  .dl-gallery--3 figure:first-child picture { height: auto; }
}

.dl-article__body {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 4fr);
  gap: clamp(40px, 6vw, 104px);
  padding-block: clamp(48px, 6vw, 80px) 0;
}
.dl-article__aside { align-self: start; position: sticky; top: calc(var(--nav-h) + 32px); }
.dl-article__aside .dl-profile__label:not(:first-child) { margin-top: 36px; }
.dl-article__portrait { width: min(100%, 340px); margin: 0 0 36px; }
.dl-article__portrait picture { display: block; overflow: hidden; border-radius: var(--radius); background: var(--paper-sunk); }
.dl-article__portrait figcaption { margin-top: 10px; font-size: 0.84rem; line-height: 1.45; color: var(--ink-3); }
.dl-publist--aside .dl-pub { padding: 22px 0 24px; }
.dl-publist--aside .dl-pub__title { font-size: 1.15rem; }
.dl-publist--aside .dl-pub__topics { display: none; }
.dl-article__links { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--rule-strong); }
.dl-article__links a { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--rule); text-decoration: none; font-weight: 500; }
.dl-article__links a:hover { color: var(--teal); }
.dl-article__share { margin-top: 36px; }
@media (max-width: 960px) {
  .dl-article__body { grid-template-columns: 1fr; }
  .dl-article__aside { position: static; }
}

.dl-more { margin-top: clamp(80px, 9vw, 136px); padding-block: 48px clamp(80px, 9vw, 136px); border-top: 1px solid var(--rule-strong); }
.dl-more__title { margin-bottom: 32px; font-size: var(--step-3); }
.dl-more__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; }
.dl-more__grid .dl-newsitem__more { display: none; }
@media (max-width: 860px) { .dl-more__grid { grid-template-columns: 1fr; gap: 28px; } }

/* ==========================================================================
   Contact
   ========================================================================== */

.dl-contact { display: grid; grid-template-columns: 1.25fr 1fr 1fr; gap: 20px; }
.dl-contactcard {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: clamp(24px, 2.6vw, 36px);
  border: 1px solid var(--rule);
  border-radius: var(--radius-lg);
  background: var(--paper-raised);
}
.dl-contactcard--lead { background: var(--night); border-color: transparent; color: var(--on-night); }
.dl-contactcard--lead .dl-kicker { color: var(--gold-soft); }
.dl-contactcard__title { font-size: 1.7rem; line-height: 1.15; }
.dl-contactcard__sub { margin: 8px 0 0; font-size: 0.92rem; color: var(--ink-3); }
.dl-contactcard--lead .dl-contactcard__sub { color: var(--on-night-2); }
.dl-contactcard__address { margin: 16px 0 0; line-height: 1.7; color: var(--ink-2); }
.dl-contactcard__note { margin: 14px 0 22px; font-size: 0.9rem; color: var(--ink-3); }
.dl-contactlist { flex: 1; width: 100%; margin: 24px 0 28px; padding: 0; list-style: none; }
.dl-contactlist li { display: flex; align-items: center; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--rule); font-size: 0.95rem; }
.dl-contactcard--lead .dl-contactlist li { border-color: rgba(241, 237, 228, 0.12); }
.dl-contactlist .dl-icon { color: var(--gold); }
.dl-contactcard--lead .dl-contactlist .dl-icon { color: var(--gold-soft); }
.dl-contactlist a { text-decoration: none; }
.dl-contactlist a:hover { color: var(--teal); }
.dl-contactcard--lead .dl-contactlist a:hover { color: var(--gold-soft); }
@media (max-width: 960px) { .dl-contact { grid-template-columns: 1fr; } }

.dl-map { margin: clamp(40px, 5vw, 72px) 0 0; }
.dl-map iframe {
  display: block;
  width: 100%;
  height: clamp(320px, 42vw, 480px);
  border: 1px solid var(--rule);
  border-radius: var(--radius-lg);
  filter: grayscale(0.85) contrast(1.05);
  transition: filter 0.6s var(--ease);
}
.dl-map:hover iframe { filter: none; }
:root[data-theme="dark"] .dl-map iframe { filter: grayscale(1) invert(0.9) hue-rotate(180deg) contrast(0.9); }
.dl-map figcaption { margin-top: 12px; font-size: 0.84rem; color: var(--ink-3); }

/* ==========================================================================
   Activities
   ========================================================================== */

.dl-nextmeeting {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  overflow: hidden;
  border-radius: var(--radius-lg);
  background: var(--night);
  color: var(--on-night);
}
.dl-nextmeeting__date {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 32px 28px;
  background: linear-gradient(160deg, #13305a, #0b1a36);
  border-right: 1px solid rgba(241, 237, 228, 0.1);
}
.dl-nextmeeting__weekday { font-family: var(--font-mono); font-size: 0.74rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gold-soft); }
.dl-nextmeeting__day { margin: 6px 0 2px; font-family: var(--font-serif); font-size: 5.4rem; line-height: 0.95; font-variant-numeric: lining-nums; }
.dl-nextmeeting__month { color: var(--on-night-2); }
.dl-nextmeeting__body { padding: clamp(28px, 3vw, 44px); }
.dl-nextmeeting__body .dl-kicker { color: var(--gold-soft); margin-bottom: 16px; }
.dl-nextmeeting__title { max-width: 30ch; font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.4rem); line-height: 1.15; }
.dl-nextmeeting__roles { display: flex; flex-wrap: wrap; gap: 14px 48px; margin: 24px 0 0; }
.dl-nextmeeting__roles[hidden] { display: none; }
.dl-nextmeeting__roles dt { font-size: 0.8rem; color: var(--on-night-2); }
.dl-nextmeeting__roles dd { margin: 4px 0 0; font-family: var(--font-serif); font-size: 1.3rem; }
.dl-nextmeeting__topic { margin: 14px 0 0; color: var(--on-night-2); }
.dl-nextmeeting__where { display: flex; flex-wrap: wrap; gap: 10px; margin: 22px 0 26px; color: var(--on-night-2); font-size: 0.95rem; }
.dl-nextmeeting .dl-btn { --btn-bg: var(--gold-soft); --btn-fg: var(--night); }
.dl-nextmeeting.is-loading .dl-nextmeeting__title { opacity: 0.55; }
.dl-livedot { width: 8px; height: 8px; border-radius: 50%; background: var(--coral-soft); box-shadow: 0 0 0 0 rgba(255, 111, 89, 0.5); }
.dl-kicker--plain { gap: 10px; }
@media (prefers-reduced-motion: no-preference) { .dl-livedot { animation: dl-pulse-red 2s var(--ease) infinite; } }
@keyframes dl-pulse-red { 0% { box-shadow: 0 0 0 0 rgba(255, 111, 89, 0.55); } 70%, 100% { box-shadow: 0 0 0 9px rgba(255, 111, 89, 0); } }
@media (max-width: 700px) {
  .dl-nextmeeting { grid-template-columns: 1fr; }
  .dl-nextmeeting__date { flex-direction: row; align-items: baseline; gap: 12px; padding: 20px 24px; border-right: 0; border-bottom: 1px solid rgba(241, 237, 228, 0.1); }
  .dl-nextmeeting__day { margin: 0; font-size: 2.6rem; }
}

.dl-agenda__tabs { display: flex; gap: 8px; margin-bottom: 28px; }
.dl-agenda__tabs [aria-selected="true"] { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.dl-agenda__panel[hidden] { display: none; }
.dl-agenda__strip { display: flex; gap: 3px; height: 14px; }
.dl-agenda__strip span { flex: var(--min) 1 0; border-radius: 2px; background: var(--teal); transform-origin: left; }
.dl-agenda__strip span:nth-child(2), .dl-agenda__list li:nth-child(2) { --key: var(--gold); }
.dl-agenda__strip span:nth-child(3), .dl-agenda__list li:nth-child(3) { --key: var(--coral); }
.dl-agenda__strip span:nth-child(4), .dl-agenda__list li:nth-child(4) { --key: var(--navy); }
.dl-agenda__strip span:nth-child(5), .dl-agenda__list li:nth-child(5) { --key: var(--ink-3); }
.dl-agenda__strip span { background: var(--key, var(--teal)); }
:root[data-theme="dark"] .dl-agenda__strip span:nth-child(4), :root[data-theme="dark"] .dl-agenda__list li:nth-child(4) { --key: var(--teal-soft); }
.dl-agenda__scale { display: flex; justify-content: space-between; margin-top: 10px; font-family: var(--font-mono); font-size: 0.72rem; color: var(--ink-3); }
.dl-agenda__list { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 24px; margin: 32px 0 0; padding: 0; list-style: none; }
.dl-agenda__list li { padding-top: 14px; border-top: 3px solid var(--key, var(--teal)); }
.dl-agenda__min { display: block; font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.08em; color: var(--ink-3); }
.dl-agenda__name { display: block; margin-top: 8px; font-family: var(--font-serif); font-size: 1.22rem; line-height: 1.2; }
.dl-agenda__desc { display: block; margin-top: 6px; font-size: 0.86rem; line-height: 1.45; color: var(--ink-2); }
@media (prefers-reduced-motion: no-preference) {
  .js .dl-agenda .dl-agenda__strip span { transform: scaleX(0); transition: transform 0.9s var(--ease-out); }
  .js .dl-agenda .dl-agenda__strip span:nth-child(2) { transition-delay: 0.12s; }
  .js .dl-agenda .dl-agenda__strip span:nth-child(3) { transition-delay: 0.24s; }
  .js .dl-agenda .dl-agenda__strip span:nth-child(4) { transition-delay: 0.36s; }
  .js .dl-agenda .dl-agenda__strip span:nth-child(5) { transition-delay: 0.48s; }
  .js .dl-agenda.is-in .dl-agenda__strip span { transform: none; }
}
@media (max-width: 960px) { .dl-agenda__list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .dl-agenda__list { grid-template-columns: 1fr; } }

.dl-spaces { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.dl-space {
  display: flex;
  flex-direction: column;
  padding: clamp(26px, 2.6vw, 36px);
  border: 1px solid var(--rule);
  border-radius: var(--radius-lg);
  background: var(--paper-raised);
  text-decoration: none;
  transition: transform 0.45s var(--ease-out), box-shadow 0.45s var(--ease-out), border-color 0.3s;
}
.dl-space:hover { transform: translateY(-4px); box-shadow: var(--shadow); border-color: var(--rule-strong); }
.dl-space--dark { background: var(--night); border-color: transparent; color: var(--on-night); }
.dl-space__icon { display: grid; place-items: center; width: 52px; height: 52px; margin-bottom: 28px; border: 1px solid var(--rule-strong); border-radius: 50%; color: var(--gold); }
.dl-space--dark .dl-space__icon { border-color: rgba(241, 237, 228, 0.2); color: var(--gold-soft); }
.dl-space__icon .dl-icon { width: 22px; height: 22px; }
.dl-space h3 { font-size: 1.6rem; line-height: 1.15; }
.dl-space p { flex: 1; margin: 12px 0 26px; font-size: 0.95rem; color: var(--ink-2); }
.dl-space--dark p { color: var(--on-night-2); }
.dl-space__go { display: inline-flex; align-items: center; gap: 8px; font-size: 0.9rem; font-weight: 500; color: var(--teal); }
.dl-space--dark .dl-space__go { color: var(--gold-soft); }
.dl-space__go .dl-icon { transition: transform 0.3s var(--ease); }
.dl-space:hover .dl-space__go .dl-icon:last-child { transform: translateX(4px); }
@media (max-width: 960px) { .dl-spaces { grid-template-columns: 1fr; } }

.dl-hubgrid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(40px, 6vw, 104px); align-items: start; }
.dl-features { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--rule-strong); }
.dl-features li { padding: 28px 28px 30px 0; border-bottom: 1px solid var(--rule); }
.dl-features li:nth-child(2n) { padding-left: 28px; border-left: 1px solid var(--rule); }
.dl-features .dl-icon { width: 26px; height: 26px; color: var(--gold); }
.dl-features h3 { margin: 18px 0 8px; font-size: 1.4rem; }
.dl-features p { margin: 0; font-size: 0.95rem; color: var(--ink-2); }
@media (max-width: 860px) { .dl-hubgrid { grid-template-columns: 1fr; } }
@media (max-width: 560px) {
  .dl-features { grid-template-columns: 1fr; }
  .dl-features li:nth-child(2n) { padding-left: 0; border-left: 0; }
}

.dl-seminar .dl-lead { max-width: 56ch; margin: 22px 0 28px; }
.dl-seminar .dl-lead a { color: var(--teal); }

/* ==========================================================================
   Not found
   ========================================================================== */

.dl-notfound { padding-block: clamp(96px, 14vw, 200px) clamp(80px, 10vw, 140px); }
.dl-notfound__title { max-width: 16ch; font-size: var(--step-5); line-height: 1; letter-spacing: -0.025em; }
.dl-notfound__text { max-width: 52ch; margin: 28px 0 40px; font-family: var(--font-serif); font-size: var(--step-1); color: var(--ink-2); }
.dl-notfound__links { max-width: 560px; margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--rule-strong); }
.dl-notfound__links a { display: flex; align-items: center; justify-content: space-between; padding: 16px 0; border-bottom: 1px solid var(--rule); font-family: var(--font-serif); font-size: 1.5rem; text-decoration: none; }
.dl-notfound__links a:hover { color: var(--teal); }
.dl-notfound__links .dl-icon { transition: transform 0.3s var(--ease); }
.dl-notfound__links a:hover .dl-icon { transform: translateX(5px); }

/* ==========================================================================
   Print
   ========================================================================== */

@media print {
  .dl-nav, .dl-menu, .dl-footer, .dl-hero__canvas, .dl-sim__controls, .dl-pub__actions, .dl-skip { display: none !important; }
  body { background: #fff; color: #000; }
  main { padding-top: 0; }
  .js [data-reveal] { opacity: 1 !important; transform: none !important; }
  a { text-decoration: underline; }
}
