/* BODHI Lab palette: Seawolf navy + turquoise (SBU secondary colors), saffron as highlight */
:root {
  color-scheme: light;
  --indigo: #002244;          /* SBU Navy */
  --saffron: #E9A94A;
  --green: #4A7C59;
  --cream: #F7F3E9;
  --turq: #0E6E85;            /* SBU Turquoise, darkened for text contrast */
  --sbu-red: #990000;

  --bg: #F7F9FB;
  --bg-soft: #EAF0F4;
  --card: #FFFFFF;
  --text: #0B1F3A;
  --text-soft: #4A5670;
  --accent: var(--turq);
  --accent-fill: var(--indigo);
  --leaf: var(--turq);
  --line: rgba(0, 34, 68, 0.12);

  --serif: "Fraunces", Georgia, "Times New Roman", serif;
  --sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --deva: "Tiro Devanagari Sanskrit", "Noto Serif Devanagari", serif;
  --max: 1280px;
  --radius: 14px;
}
:root[data-theme="dark"] {
  --bg: #0B1A30;
  --bg-soft: #12284A;
  --card: #13294A;
  --text: #EAF0F6;
  --text-soft: #B9C4D4;
  --accent: #7FD1E0;
  --leaf: #7FD1E0;
  --line: rgba(234, 240, 246, 0.14);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0B1A30;
    --bg-soft: #12284A;
    --card: #13294A;
    --text: #EAF0F6;
    --text-soft: #B9C4D4;
    --accent: #7FD1E0;
    --leaf: #7FD1E0;
    --line: rgba(234, 240, 246, 0.14);
  }
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0; background: var(--bg); color: var(--text);
  font-family: var(--sans); font-size: 17px; line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}
img, svg { max-width: 100%; }
a { color: var(--accent); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--text); }
h1, h2, h3 { font-family: var(--serif); font-weight: 500; line-height: 1.2; margin: 0 0 0.5em; letter-spacing: -0.01em; }
h1 { font-size: clamp(2.2rem, 5vw, 3.6rem); }
h2 { font-size: clamp(1.7rem, 3vw, 2.3rem); }
h3 { font-size: 1.25rem; }
p { margin: 0 0 1em; }
.wrap { max-width: var(--max); margin: 0 auto; padding: 0 24px; }
.deva { font-family: var(--deva); }
.eyebrow { font-size: 0.8rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--leaf); font-weight: 600; margin-bottom: 0.9rem; }

/* Header */
.site-header {
  position: sticky; top: 0; z-index: 10;
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter: blur(8px); border-bottom: 1px solid var(--line);
}
.nav { display: flex; align-items: center; justify-content: space-between; height: 68px; gap: 16px; }
.brand { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--text); }
.brand img { width: 30px; height: 30px; }
.brand b { font-family: var(--serif); font-weight: 500; font-size: 1.3rem; letter-spacing: 0.12em; }
.brand span { font-size: 0.8rem; letter-spacing: 0.2em; color: var(--leaf); }
.nav-links { display: flex; gap: 26px; list-style: none; margin: 0 8px 0 auto; padding: 0; }
.nav-links a { color: var(--text-soft); text-decoration: none; font-size: 0.95rem; }
.nav-links a:hover { color: var(--text); }
.nav-tools { display: flex; align-items: center; gap: 8px; }
.icon-btn {
  width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line);
  background: transparent; color: var(--text); cursor: pointer; font-size: 1rem;
  display: inline-flex; align-items: center; justify-content: center;
}
.menu-btn { display: none; }

/* Hero */
.hero { padding: 64px 0 40px; overflow: hidden; }
.hero-grid { display: grid; grid-template-columns: 1.1fr 0.9fr; align-items: center; gap: 40px; }
.hero h1 em { font-style: italic; color: var(--accent); }
.hero .lede { font-size: 1.15rem; color: var(--text-soft); max-width: 34em; }
.acronym { margin: 1.4rem 0 2rem; font-size: 0.98rem; color: var(--text-soft); }
.acronym b { color: var(--text); font-weight: 600; }
.cta { display: flex; flex-wrap: wrap; gap: 12px; }
.btn {
  display: inline-block; padding: 12px 22px; border-radius: 999px; text-decoration: none;
  font-weight: 500; font-size: 0.97rem; border: 1px solid var(--text); color: var(--text);
}
.btn.primary { background: var(--indigo); color: var(--cream); border-color: var(--indigo); }
:root[data-theme="dark"] .btn.primary { background: var(--saffron); color: var(--indigo); border-color: var(--saffron); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .btn.primary { background: var(--saffron); color: var(--indigo); border-color: var(--saffron); } }
.btn:hover { transform: translateY(-1px); }
.tree-box { position: relative; }
.tree-box svg { width: 100%; height: auto; display: block; }
.tree-caption { text-align: center; font-size: 0.85rem; color: var(--text-soft); margin-top: -6px; }
.tree-caption .deva { font-size: 1.05rem; color: var(--accent); margin-right: 6px; }

/* Sections */
section { padding: 72px 0; }
.section-head { max-width: 44em; margin-bottom: 40px; }
.section-head p { color: var(--text-soft); }
.alt { background: var(--bg-soft); }

.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; }
.card {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 26px 24px;
}
.card .num { font-family: var(--serif); color: var(--accent); font-size: 0.95rem; letter-spacing: 0.1em; }
.card p { color: var(--text-soft); font-size: 0.97rem; margin: 0; }
.card .tags { margin-top: 14px; display: flex; flex-wrap: wrap; gap: 6px; }
.tag { font-size: 0.75rem; padding: 3px 10px; border-radius: 999px; background: var(--bg-soft); color: var(--leaf); border: 1px solid var(--line); }

/* Name story */
.story { display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 48px; align-items: start; }
.story-glyph { font-family: var(--deva); font-size: clamp(4rem, 10vw, 7rem); line-height: 1; color: var(--accent); }
.story-glyph small { display: block; font-family: var(--serif); font-size: 1rem; color: var(--text-soft); margin-top: 12px; font-style: italic; }
.palette { display: flex; gap: 10px; margin-top: 22px; flex-wrap: wrap; }
.swatch { display: flex; align-items: center; gap: 8px; font-size: 0.82rem; color: var(--text-soft); }
.swatch i { width: 18px; height: 18px; border-radius: 50%; border: 1px solid var(--line); display: inline-block; }

/* Outputs list */
.outputs { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.outputs li { display: grid; grid-template-columns: 170px 1fr auto; gap: 20px; padding: 18px 0; border-bottom: 1px solid var(--line); align-items: baseline; }
.outputs .name { font-family: var(--serif); font-size: 1.15rem; }
.outputs .desc { color: var(--text-soft); font-size: 0.97rem; }
.outputs .venue { font-size: 0.82rem; color: var(--leaf); white-space: nowrap; }

/* People */
.people { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; }
.person { display: flex; gap: 18px; align-items: center; }
.avatar {
  width: 72px; height: 72px; border-radius: 50%; flex: none;
  background: var(--indigo); color: var(--saffron); display: flex; align-items: center; justify-content: center;
  font-family: var(--serif); font-size: 1.5rem;
}
.person.open .avatar { background: transparent; border: 1.5px dashed var(--accent); color: var(--accent); }
.person h3 { margin: 0; }
.person p { margin: 2px 0 0; font-size: 0.93rem; color: var(--text-soft); }

/* News */
.news { list-style: none; padding: 0; margin: 0; }
.news li { display: grid; grid-template-columns: 120px 1fr; gap: 20px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.news time { color: var(--leaf); font-size: 0.9rem; }

/* Join */
.join { text-align: center; }
.join p { max-width: 38em; margin: 0 auto 1.4em; color: var(--text-soft); }

/* Footer */
footer { border-top: 1px solid var(--line); padding: 36px 0 48px; font-size: 0.9rem; color: var(--text-soft); }
.foot { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 16px; }
footer a { color: var(--text-soft); }

/* Motion */
.reveal { opacity: 0; transform: translateY(14px); transition: opacity 0.7s ease, transform 0.7s ease; }
.reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; transition: none; } html { scroll-behavior: auto; } }

/* Responsive */
@media (max-width: 860px) {
  .hero-grid, .story { grid-template-columns: 1fr; }
  .tree-box { max-width: 380px; margin: 0 auto; order: -1; }
  .hero { padding-top: 32px; }
  .outputs li { grid-template-columns: 1fr; gap: 4px; }
  .news li { grid-template-columns: 1fr; gap: 2px; }
  .menu-btn { display: inline-flex; }
  .nav-links {
    display: none; position: absolute; top: 68px; left: 0; right: 0; flex-direction: column; gap: 0;
    background: var(--bg); border-bottom: 1px solid var(--line); padding: 8px 24px 16px;
  }
  .nav-links.open { display: flex; }
  .nav-links a { display: block; padding: 10px 0; }
}

/* Glyphs: single saffron colour (darker saffron on cream for contrast) */
.bn { font-family: "Tiro Bangla", "Noto Serif Bengali", serif; }
.glyph.green { color: var(--leaf); }
.glyph { color: var(--accent); display: inline-block; padding: 0.12em 0.1em; line-height: 1.3; }
.tree-caption .glyph { font-size: 1.5rem; }
.tree-caption .glyph-line { display: block; margin-bottom: -2px; }

/* Name page */
.name-hero { padding: 72px 0 24px; text-align: center; }
.glyphs { display: flex; justify-content: center; align-items: baseline; gap: 28px; flex-wrap: wrap; line-height: 1.25; }
.glyphs .deva, .glyphs .bn { font-size: clamp(4rem, 12vw, 7.5rem); }
.glyphs .sep { font-size: 2rem; color: var(--text-soft); }
.name-hero .gloss { font-family: var(--serif); font-style: italic; color: var(--text-soft); margin-top: 8px; }
.prose { max-width: 42em; margin: 0 auto; }
.prose h2 { margin-top: 0.4em; }
.prose p { color: var(--text-soft); }
.prose p b, .prose p em { color: var(--text); }
.layer { display: grid; grid-template-columns: 56px 1fr; gap: 18px; padding: 26px 0; border-bottom: 1px solid var(--line); }
.layer:last-child { border-bottom: 0; }
.layer .n { font-family: var(--serif); font-size: 2rem; color: var(--accent); line-height: 1; }
.layer h3 { margin-bottom: 0.3em; }
.mark-row { display: grid; grid-template-columns: 260px 1fr; gap: 32px; align-items: center; }
@media (max-width: 860px) { .mark-row { grid-template-columns: 1fr; } .mark-row svg { max-width: 260px; margin: 0 auto; display: block; } }

/* ===== Merge additions: projects, publications, PI card, tree controls ===== */
.skip-link { position: absolute; left: -999px; top: 8px; z-index: 50; background: var(--indigo); color: var(--cream); padding: 8px 14px; border-radius: 8px; }
.skip-link:focus { left: 12px; }
section[id] { scroll-margin-top: 72px; }

.cards.three { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.card .label { font-size: 0.78rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--leaf); font-weight: 600; margin-bottom: 8px; }
.card .emerging { color: var(--accent); margin-left: 6px; }

/* Indigo band for projects (works in both themes) */
.band { background: #002244; color: #EAF0F6; }
:root[data-theme="dark"] .band { background: #071528; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .band { background: #071528; } }
.band .eyebrow { color: #E9A94A; }
.band .section-head p { color: #C9CCD6; }
.projects { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 0 36px; }
.project { border-top: 1px solid rgba(247, 243, 233, 0.18); padding: 22px 0 28px; }
.project .kind { font-size: 0.78rem; letter-spacing: 0.1em; text-transform: uppercase; color: #E9A94A; margin-bottom: 6px; }
.project h3 { font-size: 1.5rem; color: #F7F3E9; margin-bottom: 0.3em; }
.project p { color: #C9CCD6; font-size: 0.96rem; margin-bottom: 10px; }
.project .status { font-size: 0.82rem; color: #8DBB98; }
.plinks { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 12px; }
.plinks a { font-size: 0.9rem; font-weight: 500; }
.band .plinks a { color: #E9A94A; }
.band .plinks a:hover { color: #F7F3E9; }

/* Publications */
.pubs { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.pubs li { display: grid; grid-template-columns: 170px 1fr auto; gap: 24px; padding: 22px 0; border-bottom: 1px solid var(--line); align-items: start; }
.pmeta { display: flex; flex-direction: column; gap: 2px; font-size: 0.85rem; color: var(--text-soft); }
.pyear { font-family: var(--serif); font-size: 1.5rem; color: var(--accent); line-height: 1.1; }
.pstatus { color: var(--leaf); font-size: 0.8rem; }
.pubs h3 { font-size: 1.12rem; margin-bottom: 0.35em; }
.pubs h3 a { color: var(--text); text-decoration: none; }
.pubs h3 a:hover { color: var(--accent); }
.pubs p { margin: 0; font-size: 0.92rem; color: var(--text-soft); }
.pubs p b { color: var(--text); font-weight: 600; }
.pread { font-size: 0.88rem; font-weight: 500; white-space: nowrap; }
.more { margin-top: 24px; }

/* PI card */
.people { grid-template-columns: 1fr; }
.pi { display: grid; grid-template-columns: 220px 1fr; gap: 32px; align-items: start; }
.pi img { width: 100%; height: auto; border-radius: 12px; display: block; aspect-ratio: 4 / 5; object-fit: cover; }
.pi .role { color: var(--text-soft); font-size: 0.95rem; }
.pi p { color: var(--text-soft); }
.person.open { max-width: 520px; text-decoration: none; color: inherit; }

/* Tree controls */
.tree-controls { display: flex; justify-content: center; gap: 8px; margin: 2px 0 6px; }
.chip { font: inherit; font-size: 0.85rem; padding: 6px 16px; border-radius: 999px; border: 1px solid var(--line); background: var(--card); color: var(--text); cursor: pointer; }
.chip:hover { border-color: var(--accent); color: var(--accent); }
.chip:focus-visible, .btn:focus-visible, .icon-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.motto { font-family: var(--serif); font-style: italic; color: var(--text); }
.join .email a { font-size: 1.05rem; }

@media (max-width: 860px) {
  .pubs li { grid-template-columns: 1fr; gap: 6px; }
  .pmeta { flex-direction: row; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; }
  .pi { grid-template-columns: 1fr; }
  .pi img { max-width: 260px; }
}

/* ===== Multi-page ===== */
.page-head { padding: 64px 0 8px; }
.page-head .lede { font-size: 1.12rem; color: var(--text-soft); max-width: 42em; }
section.tight { padding-top: 32px; }
.nav-links a[aria-current="page"] { color: var(--text); text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 2px; text-underline-offset: 8px; }
.band a.on-band { color: #E9A94A; }
.band .more { margin-top: 12px; }
.join-cta { text-align: center; margin-top: 40px; }
.join-cta p { color: var(--text-soft); }

/* ===== Name page: three roots, maps, motto ===== */
.name-hero .eyebrow, .name-hero .gloss { color: var(--text); }
.roots { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.root-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 22px 24px 26px; }
.root-card figure { margin: 0 0 14px; background: var(--bg-soft); border-radius: 10px; padding: 12px 12px 6px; }
.root-card figcaption { text-align: center; font-size: 0.78rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-soft); margin-top: 2px; }
.root-card .label { font-size: 0.78rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--leaf); font-weight: 600; margin-bottom: 6px; }
.root-card p { color: var(--text-soft); font-size: 0.96rem; }
.root-card p b, .root-card p em { color: var(--text); }
svg.map { width: 100%; height: auto; display: block; }
.map-hi-saffron { fill: #E9A94A; fill-opacity: 0.85; stroke: #B8741A; stroke-width: 1; }
.map-hi-green { fill: #4A7C59; fill-opacity: 0.8; stroke: #35603F; stroke-width: 1; }
.map-dot { fill: var(--text); }
.map-label { font: 500 14px var(--sans); fill: var(--text); stroke: var(--bg-soft); stroke-width: 3px; paint-order: stroke; }
.sci-a { fill: none; stroke: #1B2A4E; stroke-width: 2.4; stroke-linecap: round; }
.sci-b { fill: none; stroke: #E9A94A; stroke-width: 2.4; stroke-linecap: round; }
.sci-rung { stroke: #4A7C59; stroke-width: 1.2; opacity: 0.8; }
.sci-edge { stroke: var(--text-soft); stroke-width: 0.7; opacity: 0.35; }
.sci-hot { fill: none; stroke: #E9A94A; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.sci-node { fill: var(--card); stroke: var(--text-soft); stroke-width: 1.2; }
.sci-node-hot { fill: #E9A94A; stroke: #B8741A; stroke-width: 1.2; }
.sci-leaf { fill: #4A7C59; }
.sci-vein { stroke: #F7F3E9; stroke-width: 1.2; opacity: 0.8; }
:root[data-theme="dark"] .sci-a { stroke: #F7F3E9; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .sci-a { stroke: #F7F3E9; } }

.motto-sec { padding: 56px 0 72px; text-align: center; border-top: 1px solid var(--line); }
.motto-sec blockquote { margin: 0 auto; max-width: 40em; }
.motto-sec .sk { font-size: clamp(1.6rem, 3.4vw, 2.3rem); color: var(--accent); margin: 0 0 6px; line-height: 1.4; }
.motto-sec .translit { font-family: var(--serif); font-style: italic; color: var(--text-soft); margin: 0 0 10px; }
.motto-sec .trans { font-family: var(--serif); font-size: 1.35rem; color: var(--text); margin: 0 0 12px; }
.motto-sec footer { font-size: 0.85rem; color: var(--leaf); border: 0; padding: 0; }
.motto-note { max-width: 38em; margin: 24px auto 0; color: var(--text-soft); }

@media (max-width: 960px) { .roots { grid-template-columns: 1fr; max-width: 560px; margin: 0 auto; } }
.name-title { margin: 0 0 4px; }

/* Home: two columns, sticky news sidebar */
.home-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 48px; align-items: start; }
.cards.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.home-sub { margin-top: 64px; }
.news-side { position: sticky; top: 96px; }
.news-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 24px 24px 16px; }
.news-card h2 { font-size: 1.4rem; }
.news-side .news li { grid-template-columns: 1fr; gap: 2px; padding: 12px 0; font-size: 0.93rem; }
.news-side .news li:last-child { border-bottom: 0; }
.news-side .more { margin-top: 10px; }
.projects.on-light { grid-template-columns: 1fr; }
.projects.on-light .project { border-top-color: var(--line); padding: 20px 0 22px; }
.projects.on-light .project .kind { color: var(--accent); }
.projects.on-light .project h3 { color: var(--text); }
.projects.on-light .project p { color: var(--text-soft); }
.projects.on-light .project .status { color: var(--leaf); }
@media (max-width: 960px) { .home-grid { grid-template-columns: 1fr; } .news-side { position: static; } }
@media (max-width: 640px) { .cards.two { grid-template-columns: 1fr; } }

/* Join: four role cards, centered buttons */
.cards.four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cta.center { justify-content: center; }
.join-cta .btn { margin: 6px 0 18px; }
@media (max-width: 1024px) { .cards.four { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .cards.four { grid-template-columns: 1fr; } }

/* ===== Theme figures (2026-11-02) ===== */
.fig-panel{border-radius:14px 14px 0 0;padding:18px 18px 10px;display:flex;align-items:center;justify-content:center;aspect-ratio:3/2}
.fig-panel.t-teal{background:#E3F1F4}.fig-panel.t-indigo{background:#E6EAF2}.fig-panel.t-saffron{background:#F6EEDF}.fig-panel.t-green{background:#E4EFE6}
.fig-mini{flex:0 0 92px;height:92px;border-radius:12px;padding:6px}
.fig-mini.t-sand,.fig-panel.t-sand{background:#F6EEDF}.fig-mini.t-sage,.fig-panel.t-sage{background:#E8EFE6}
.theme-fig{width:100%;height:100%;display:block;overflow:visible}
.theme-fig *{stroke-linecap:round;stroke-linejoin:round}
.theme-fig path,.theme-fig line,.theme-fig circle,.theme-fig rect{fill:none}
.theme-fig .f-line{stroke:var(--text);stroke-width:1.8}
.theme-fig .f-soft{stroke:var(--text);stroke-width:1.3;opacity:.35}
.theme-fig .f-dash{stroke:var(--text);stroke-width:1.4;stroke-dasharray:3 4;opacity:.55}
.theme-fig .f-hi{stroke:var(--saffron);stroke-width:3.2}
.theme-fig .f-arc{stroke:var(--text);stroke-width:1.3;opacity:.45}
.theme-fig .f-arc-hi{stroke:var(--saffron);stroke-width:2}
.theme-fig .f-tok{stroke:var(--text);stroke-width:1.5;fill:var(--card)}
.theme-fig .f-tok-hi{stroke:var(--saffron);stroke-width:2;fill:var(--saffron);fill-opacity:.35}
.theme-fig .f-net-faint line{stroke:var(--text);stroke-width:1;opacity:.14}
.theme-fig .f-net-faint circle{fill:var(--text);opacity:.18}
.theme-fig .f-net line{stroke:var(--text);stroke-width:1.1;opacity:.45}
.theme-fig .f-net circle{fill:var(--text);opacity:.7}
.theme-fig .f-lens-fill{fill:var(--card);opacity:.85}
.theme-fig .f-handle{stroke:var(--text);stroke-width:6}
.theme-fig .f-dot-hi{fill:var(--saffron);stroke:none}
.theme-fig .f-card{fill:var(--card);stroke:var(--text);stroke-width:1.2;opacity:.9}
.theme-fig .f-bar{fill:var(--text);opacity:.55}
.theme-fig .f-bar-hi{fill:var(--saffron)}
.theme-fig .f-ripple{stroke:var(--saffron);stroke-width:1.6}
.theme-fig .f-leaf{fill:var(--leaf);stroke:var(--leaf);stroke-width:1.2;fill-opacity:.85}
.theme-fig .f-vein{stroke:var(--card);stroke-width:1;opacity:.8}
.theme-fig .f-node{fill:var(--card);stroke:var(--text);stroke-width:1.6}
.theme-fig .f-ghost{stroke:var(--text);stroke-width:1.4;stroke-dasharray:2 3;opacity:.4}
.theme-fig .f-hi-shape{fill:var(--saffron);fill-opacity:.25;stroke:var(--saffron);stroke-width:2}
.theme-fig .f-loop{stroke:var(--leaf);stroke-width:1.6;stroke-dasharray:4 4}
.theme-fig .f-leaf-ring{stroke:var(--leaf);stroke-width:2}
.theme-fig .f-check{stroke:var(--leaf);stroke-width:2.8}
.theme-fig .f-hex{stroke:var(--text);stroke-width:1;opacity:.28}
.theme-fig .f-hex-hi{fill:var(--saffron);fill-opacity:.4;stroke:var(--saffron);stroke-width:1.2}
.theme-fig .f-pop{stroke-width:1.5;fill-opacity:.16}
.theme-fig .f-pdot{stroke:none}
.theme-fig .f-teal{stroke:#3E8A86;fill:#3E8A86}.theme-fig .f-saf{stroke:var(--saffron);fill:var(--saffron)}.theme-fig .f-grn{stroke:var(--leaf);fill:var(--leaf)}
:root[data-theme="dark"] .fig-panel.t-teal,:root[data-theme="dark"] .fig-mini.t-sage{background:rgba(141,187,152,.10)}
:root[data-theme="dark"] .fig-panel.t-indigo{background:rgba(201,204,214,.08)}
:root[data-theme="dark"] .fig-panel.t-saffron,:root[data-theme="dark"] .fig-mini.t-sand,:root[data-theme="dark"] .fig-panel.t-sand,:root[data-theme="dark"] .fig-panel.t-sage{background:rgba(233,169,74,.10)}
:root[data-theme="dark"] .fig-panel.t-green{background:rgba(141,187,152,.12)}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) .fig-panel.t-teal,:root:not([data-theme="light"]) .fig-mini.t-sage{background:rgba(141,187,152,.10)}
:root:not([data-theme="light"]) .fig-panel.t-indigo{background:rgba(201,204,214,.08)}
:root:not([data-theme="light"]) .fig-panel.t-saffron,:root:not([data-theme="light"]) .fig-mini.t-sand,:root:not([data-theme="light"]) .fig-panel.t-sand,:root:not([data-theme="light"]) .fig-panel.t-sage{background:rgba(233,169,74,.10)}
:root:not([data-theme="light"]) .fig-panel.t-green{background:rgba(141,187,152,.12)}
}

.card.has-fig { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.card.has-fig .card-body { padding: 20px 24px 24px; }
.fig-panel { border-radius: 0; padding: 16px 18px 8px; aspect-ratio: auto; height: 190px; }
.card.mini-fig { display: flex; gap: 16px; align-items: center; padding: 14px 18px 14px 14px; }
.card.mini-fig h3 { font-size: 1.1rem; margin: 2px 0 4px; }
.card.mini-fig p { font-size: 0.9rem; }
.card.mini-fig .tags { display: none; }
@media (max-width: 640px) { .fig-panel { height: 160px; } }

/* ===== Project pages (2026-11-02) ===== */
.proj-hero-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 40px; align-items: center; }
.proj-fig { border-radius: var(--radius); height: 280px; }
.crumb { font-size: 0.85rem; color: var(--text-soft); margin: 0 0 18px; }
.crumb a { color: var(--text-soft); }
.proj-hero h1 { font-size: clamp(2.6rem, 5vw, 3.6rem); margin: 0 0 6px; }
.proj-hero .expand { font-family: var(--serif); font-size: 1.1rem; color: var(--text-soft); margin: 0 0 16px; }
.proj-hero .expand b { color: var(--accent); font-weight: 500; }
.proj-meta { display: flex; flex-wrap: wrap; gap: 8px; margin: 18px 0 22px; }
.pill { font-size: 0.82rem; padding: 5px 12px; border-radius: 999px; border: 1px solid var(--line); background: var(--card); color: var(--text); }
.pill.soft { color: var(--leaf); }
.proj .cta { display: flex; flex-wrap: wrap; gap: 10px; }
.proj-body > * { max-width: 880px; }
.proj-body > .stat-row { max-width: none; }
.proj-body h2 { font-size: 1.6rem; margin: 48px 0 14px; }
.proj-body p, .proj-body li { color: var(--text-soft); }
.stat-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-top: 8px; }
.stat { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px 18px; }
.stat b { display: block; font-family: var(--serif); font-size: 1.7rem; font-weight: 500; color: var(--accent); }
.stat span { font-size: 0.86rem; color: var(--text-soft); }
.principle { border-left: 3px solid var(--saffron); padding: 4px 0 4px 16px; color: var(--text) !important; font-family: var(--serif); font-size: 1.12rem; }
.steps { counter-reset: s; list-style: none; padding: 0; display: grid; gap: 12px; }
.steps li { counter-increment: s; position: relative; padding: 14px 18px 14px 58px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); }
.steps li::before { content: counter(s); position: absolute; left: 18px; top: 13px; width: 26px; height: 26px; border-radius: 50%; background: var(--saffron); color: #1B2A4E; font-weight: 600; font-size: 0.85rem; display: grid; place-items: center; }
.steps li b { color: var(--text); }
.table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius); background: var(--card); }
table.data { width: 100%; border-collapse: collapse; font-size: 0.92rem; }
table.data th { text-align: left; font-size: 0.75rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--leaf); padding: 12px 14px; border-bottom: 1px solid var(--line); }
table.data td { padding: 12px 14px; border-bottom: 1px solid var(--line); vertical-align: top; color: var(--text-soft); }
table.data tr:last-child td { border-bottom: 0; }
table.data td:first-child { font-weight: 600; color: var(--text); }
.verdict { display: inline-block; font-size: 0.78rem; font-weight: 600; padding: 2px 10px; border-radius: 999px; white-space: nowrap; }
.verdict.ok { background: rgba(74, 124, 89, 0.15); color: var(--leaf); }
.verdict.hold { background: rgba(233, 169, 74, 0.18); color: var(--accent); }
.findings { padding-left: 20px; margin-top: 18px; }
.findings li { margin-bottom: 8px; }
.proj-pubs { list-style: none; padding: 0; }
.proj-pubs li { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px 18px; margin-bottom: 10px; }
.proj-pubs h3 { font-size: 1.05rem; margin: 6px 0 4px; }
.proj-pubs .pvenue { font-size: 0.8rem; color: var(--leaf); font-weight: 600; letter-spacing: 0.04em; }
.proj-pubs p { font-size: 0.9rem; margin: 0; }
.bib { position: relative; }
.bib pre { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 18px; overflow-x: auto; font-size: 0.82rem; color: var(--text); margin: 0; }
.btn.small { padding: 6px 14px; font-size: 0.82rem; position: absolute; right: 12px; top: 12px; background: var(--bg-soft); color: var(--text); border: 1px solid var(--line); }
.project h3 a { color: inherit; text-decoration: none; }
.project h3 a:hover { text-decoration: underline; }
@media (max-width: 860px) {
  .proj-hero-grid { grid-template-columns: 1fr; gap: 24px; }
  .proj-fig { height: 200px; }
  .stat-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.proj-body pre.cmd { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 16px; font-size: 0.9rem; color: var(--text); }

/* ===== Palette: news card in navy, footer SBU line, news badges (2026-11-02) ===== */
.news-card { background: #002244; border: 0; color: #E6EDF5; }
.news-card h2, .news-card .news span { color: #E6EDF5; }
.news-card .eyebrow, .news-card time { color: #7FD1E0; }
.news-card a { color: #E9A94A; }
.news-card .news li { border-color: rgba(255, 255, 255, 0.14); }
:root[data-theme="dark"] .news-card { background: #071528; border: 1px solid var(--line); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .news-card { background: #071528; border: 1px solid var(--line); } }
footer { border-top: 3px solid var(--sbu-red); }
.btn.primary { background: var(--indigo); border-color: var(--indigo); color: #FFFFFF; }
.news .meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.badge { display: inline-block; font-size: 0.66rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; line-height: 1.5; white-space: nowrap; }
.badge.paper   { background: rgba(14, 110, 133, 0.14); color: #0E6E85; }
.badge.grant, .badge.award { background: rgba(233, 169, 74, 0.20); color: #8A5A12; }
.badge.release { background: rgba(74, 86, 112, 0.14); color: #3B4660; }
.badge.lab     { background: rgba(0, 34, 68, 0.10); color: #002244; }
.badge.member  { background: rgba(74, 124, 89, 0.16); color: #2F6340; }
.badge.collab  { background: rgba(0, 84, 154, 0.12); color: #00549A; }
.badge.talk    { background: rgba(153, 0, 0, 0.10); color: #990000; }
.news-card .badge.paper   { background: rgba(127, 209, 224, 0.18); color: #9FE0EC; }
.news-card .badge.grant, .news-card .badge.award { background: rgba(233, 169, 74, 0.22); color: #F2C680; }
.news-card .badge.release { background: rgba(255, 255, 255, 0.12); color: #D5DCE8; }
.news-card .badge.lab     { background: rgba(255, 255, 255, 0.16); color: #FFFFFF; }
.news-card .badge.member  { background: rgba(141, 187, 152, 0.22); color: #B6DABF; }
.news-card .badge.collab  { background: rgba(120, 170, 230, 0.20); color: #B9D3F5; }
.news-card .badge.talk    { background: rgba(255, 120, 120, 0.18); color: #FFC2C2; }
:root[data-theme="dark"] .badge.paper{background:rgba(127,209,224,.18);color:#9FE0EC}
:root[data-theme="dark"] .badge.grant,:root[data-theme="dark"] .badge.award{background:rgba(233,169,74,.22);color:#F2C680}
:root[data-theme="dark"] .badge.release{background:rgba(255,255,255,.12);color:#D5DCE8}
:root[data-theme="dark"] .badge.lab{background:rgba(255,255,255,.16);color:#FFFFFF}
:root[data-theme="dark"] .badge.member{background:rgba(141,187,152,.22);color:#B6DABF}
:root[data-theme="dark"] .badge.collab{background:rgba(120,170,230,.20);color:#B9D3F5}
:root[data-theme="dark"] .badge.talk{background:rgba(255,120,120,.18);color:#FFC2C2}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .badge.paper{background:rgba(127,209,224,.18);color:#9FE0EC}
  :root:not([data-theme="light"]) .badge.grant,:root:not([data-theme="light"]) .badge.award{background:rgba(233,169,74,.22);color:#F2C680}
  :root:not([data-theme="light"]) .badge.release{background:rgba(255,255,255,.12);color:#D5DCE8}
  :root:not([data-theme="light"]) .badge.lab{background:rgba(255,255,255,.16);color:#FFFFFF}
  :root:not([data-theme="light"]) .badge.member{background:rgba(141,187,152,.22);color:#B6DABF}
  :root:not([data-theme="light"]) .badge.collab{background:rgba(120,170,230,.20);color:#B9D3F5}
  :root:not([data-theme="light"]) .badge.talk{background:rgba(255,120,120,.18);color:#FFC2C2}
}
main .news:not(.news-side .news) li { grid-template-columns: 190px 1fr; }
@media (max-width: 640px) { main .news:not(.news-side .news) li { grid-template-columns: 1fr; } }

/* ===== Funding timeline (2026-11-02) ===== */
.funding { position: relative; }
.fund-summary { display: flex; flex-wrap: wrap; gap: 10px 28px; margin: 4px 0 18px; color: var(--text-soft); }
.fund-summary b { font-family: var(--serif); font-size: 1.6rem; font-weight: 500; color: var(--indigo); margin-right: 6px; }
.fund-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.fchip { font: inherit; font-size: 0.85rem; display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px; border-radius: 999px; border: 1px solid var(--line); background: var(--card); color: var(--text); cursor: pointer; }
.fchip.on { background: var(--indigo); border-color: var(--indigo); color: #fff; }
.sw { display: inline-block; width: 12px; height: 12px; border-radius: 3px; }
.sw.pi, .fbar.pi { background: #002244; }
.sw.mpi, .fbar.mpi { background: #E9A94A; }
.sw.coi, .fbar.coi { background: #1791AD; }
.sw.sup, .fbar.sup { background: #4A7C59; }
.fund-scroll { overflow-x: auto; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 18px 20px 14px; }
.fund-chart { position: relative; min-width: 620px; padding-bottom: 22px; }
.fund-axis { position: relative; height: 22px; border-bottom: 1px solid var(--line); margin-bottom: 10px; }
.fund-axis span { position: absolute; transform: translateX(-50%); font-size: 0.78rem; color: var(--text-soft); top: 0; }
.fund-axis span:first-child { transform: none; }
.fund-axis span:last-child { transform: translateX(-100%); }
.fund-grid { position: absolute; inset: 22px 0 0 0; pointer-events: none; }
.fund-grid i { position: absolute; top: 0; bottom: 0; width: 1px; background: var(--line); }
.fund-now { position: absolute; top: 0; bottom: -22px; width: 2px; background: #990000; }
.fund-now em { position: absolute; bottom: 2px; left: 6px; font-style: normal; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: #990000; white-space: nowrap; }
.fund-rows { list-style: none; margin: 0; padding: 6px 0 4px; position: relative; }
.fund-rows li { position: relative; height: 38px; }
.fbar { position: absolute; top: 4px; height: 30px; border-radius: 8px; display: flex; align-items: center; padding: 0 10px; color: #fff; font-size: 0.82rem; font-weight: 500; text-decoration: none; white-space: nowrap; overflow: hidden; box-shadow: 0 1px 2px rgba(0, 34, 68, 0.15); transition: transform 0.15s ease, opacity 0.2s ease, box-shadow 0.15s ease; cursor: pointer; min-width: 8px; }
.fbar span { overflow: hidden; text-overflow: ellipsis; }
.fbar.mpi { color: #002244; }
.fbar:hover, .fbar:focus-visible { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0, 34, 68, 0.22); outline: none; }
.fbar.completed { opacity: 0.55; }
.fbar.pending { background: repeating-linear-gradient(135deg, rgba(0,34,68,.08) 0 6px, rgba(0,34,68,.02) 6px 12px) !important; color: #002244; border: 1.5px dashed #002244; box-shadow: none; }
.fbar.dim { opacity: 0.15; }
.fund-tip { position: absolute; z-index: 5; width: 300px; max-width: calc(100% - 8px); background: #002244; color: #E6EDF5; border-radius: 12px; padding: 14px 16px; box-shadow: 0 12px 32px rgba(0, 34, 68, 0.3); pointer-events: none; }
.fund-tip h4 { font-family: var(--serif); font-weight: 500; font-size: 1rem; margin: 6px 0 6px; color: #fff; line-height: 1.3; }
.fund-tip p { margin: 0 0 4px; font-size: 0.82rem; color: #C9D4E3 !important; }
.fund-tip .tt-top { display: flex; align-items: center; gap: 8px; font-size: 0.72rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: #7FD1E0; }
.fund-tip .tt-dates { color: #fff !important; font-weight: 500; }
.fund-tip .tt-link { color: #E9A94A !important; }
.fund-note { display: none; font-size: 0.85rem; color: var(--text-soft); margin-top: 10px; }
@media (max-width: 700px) { .fund-note { display: block; } }
.fund-tip .sw { box-shadow: 0 0 0 1.5px rgba(255, 255, 255, 0.85); }

/* People: coming soon note (2026-11-02) */
.team-soon { margin-top: 32px; padding: 32px 32px 28px; border: 1.5px dashed rgba(0, 34, 68, 0.25); border-radius: var(--radius); background: var(--bg-soft); text-align: center; }
.team-soon h2 { font-size: 1.6rem; margin: 0 0 10px; }
.team-soon p { max-width: 40em; margin: 0 auto 20px; color: var(--text-soft); }
.team-soon .cta { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }

/* Join: five role cards (2026-11-02) */
.cards.five { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; }
.cards.five .card { padding: 22px 20px; }
@media (max-width: 1200px) { .cards.five { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 760px) { .cards.five { grid-template-columns: 1fr; } }
