:root {
  --bg: #ffffff; --page: #f7f8fb; --panel: #f3f5f9; --card: #ffffff;
  --text: #161a22; --soft: #3a4150; --muted: #687083; --rule: #e4e7ee;
  --accent: #1d3b78; --accent-2: #2f6fb3; --accent-soft: #eaf0fa; --link: #22509a; --bar: #2f5ea8;
  --teal: #0f8a8a; --amber: #b9770e;
  --shadow: 0 1px 2px rgba(20,30,60,.05), 0 6px 20px -8px rgba(20,30,60,.12);
  --shadow-hover: 0 2px 4px rgba(20,30,60,.06), 0 14px 30px -10px rgba(20,30,60,.22);
  --radius: 12px;
  --serif: "Source Serif 4", Georgia, "Times New Roman", serif;
  --sans: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
}
/* Dark mode only when opened directly; inside Google Sites stay light to match the site. */
@media (prefers-color-scheme: dark) {
  :root:not(.embedded) {
    --bg: #12151b; --page: #12151b; --panel: #1a1e26; --card: #191d25;
    --text: #e8eaef; --soft: #c4c9d3; --muted: #8e96a6; --rule: #2a303b;
    --accent: #a9c1ee; --accent-2: #7fb0e8; --accent-soft: #1d2636; --link: #9fbcf0; --bar: #6f95dc;
    --teal: #4cc3c3; --amber: #e2a94a;
    --shadow: 0 1px 2px rgba(0,0,0,.3); --shadow-hover: 0 10px 26px -10px rgba(0,0,0,.6);
  }
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 76px; }
body { margin: 0; background: var(--bg); color: var(--text); font: 15.5px/1.65 var(--sans); -webkit-font-smoothing: antialiased; }
a { color: var(--link); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 2px; }
img { max-width: 100%; }

/* ---------- Top bar (hidden inside Google Sites) ---------- */
.topbar { position: sticky; top: 0; z-index: 20; background: color-mix(in srgb, var(--bg) 88%, transparent); backdrop-filter: saturate(1.4) blur(10px); border-bottom: 1px solid var(--rule); }
.topbar .in { max-width: 1120px; margin: 0 auto; padding: 0 28px; height: 60px; display: flex; align-items: center; gap: 28px; }
.topbar .nm { display: flex; align-items: center; gap: 10px; font-family: var(--serif); font-weight: 600; font-size: 1.12em; color: var(--text); white-space: nowrap; }
.topbar .nm::before { content: "VA"; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 8px; background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: #fff; font-size: .72em; letter-spacing: .02em; }
.topbar nav { display: flex; gap: 6px; margin-left: auto; overflow-x: auto; }
.topbar nav a { color: var(--muted); font-size: .9em; font-weight: 500; white-space: nowrap; padding: 6px 12px; border-radius: 999px; text-decoration: none; transition: background .15s, color .15s; }
.topbar nav a:hover { color: var(--text); background: var(--panel); }
.topbar nav a.active { color: var(--accent); background: var(--accent-soft); }
.embedded .topbar { display: none; }

/* ---------- Layout ---------- */
.page { max-width: 1120px; margin: 0 auto; padding: 36px 28px 48px; display: grid; grid-template-columns: 290px minmax(0, 1fr); gap: 56px; }
.embedded .page { padding-top: 18px; }
aside { position: sticky; top: 90px; align-self: start; }
.embedded aside { top: 18px; }
.photo { width: 100%; max-width: 290px; aspect-ratio: 4 / 5; object-fit: cover; object-position: center 25%; border-radius: var(--radius); display: block; background: var(--panel); box-shadow: var(--shadow); }
aside h1 { font-family: var(--serif); font-weight: 600; font-size: 1.9em; line-height: 1.15; margin: 20px 0 6px; letter-spacing: -.01em; }
.role { font-weight: 600; color: var(--soft); }
.aff { color: var(--muted); font-size: .94em; line-height: 1.5; }
.badge { display: inline-block; justify-self: start; margin-top: 12px; font-size: .74em; font-weight: 600; letter-spacing: .03em; color: var(--accent); background: var(--accent-soft); padding: 4px 10px; border-radius: 999px; }
.contact { list-style: none; margin: 18px 0 0; border-top: 1px solid var(--rule); padding: 14px 0 0; }
.contact li { margin: 4px 0; }
.contact a { display: flex; align-items: center; gap: 10px; color: var(--soft); font-size: .92em; word-break: break-word; padding: 3px 0; }
.contact a:hover { color: var(--link); text-decoration: none; }
.contact svg { width: 16px; height: 16px; flex-shrink: 0; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; opacity: .8; }
.stats { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 18px; background: var(--panel); border-radius: 10px; }
.stat { padding: 12px 0; text-align: center; }
.stat + .stat { border-left: 1px solid var(--rule); }
.stat b { display: block; font-family: var(--serif); font-size: 1.55em; font-weight: 600; line-height: 1.1; font-variant-numeric: tabular-nums; color: var(--accent); }
.stat span { font-size: .68em; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.chart { margin-top: 16px; }
.chart .lbl, .eyebrow { font-size: .72em; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); font-weight: 600; margin-bottom: 4px; }
.eyebrow { color: var(--accent-2); }
.chart svg { width: 100%; height: auto; display: block; overflow: visible; }
.chart .bar { fill: var(--bar); }
.chart .hit { fill: transparent; }
.chart text { fill: var(--muted); font: 10px var(--sans); }
.chart text.val { fill: var(--text); font-weight: 600; }
.chart .base { stroke: var(--rule); }
.tip { position: fixed; pointer-events: none; background: var(--text); color: var(--bg); font-size: .78em; padding: 3px 8px; border-radius: 4px; opacity: 0; transition: opacity .1s; z-index: 30; }

/* ---------- Sections ---------- */
main section { padding: 4px 0 36px; }
main section + section { padding-top: 8px; }
h2 { font-family: var(--serif); font-weight: 600; font-size: 1.55em; margin: 0 0 16px; letter-spacing: -.01em; display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
h2::before { content: ""; width: 22px; height: 3px; border-radius: 2px; background: linear-gradient(90deg, var(--accent), var(--accent-2)); align-self: center; }
h2 .more { font-family: var(--sans); font-size: .56em; font-weight: 600; margin-left: auto; }
.lead { font-size: 1.04em; color: var(--soft); margin: 0 0 14px; max-width: 72ch; }
.lead strong { color: var(--text); font-weight: 600; }
.chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.chips span { font-size: .82em; color: var(--soft); background: var(--panel); border: 1px solid var(--rule); padding: 3px 11px; border-radius: 999px; }

/* Highlights strip */
.highlights { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 0 0 30px; }
.hl { background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); padding: 14px 16px; box-shadow: var(--shadow); }
.hl b { display: block; font-family: var(--serif); font-size: 1.6em; font-weight: 600; color: var(--accent); line-height: 1.1; }
.hl span { font-size: .82em; color: var(--muted); }

/* Thesis feature */
.thesis { position: relative; overflow: hidden; border-radius: 16px; background: linear-gradient(135deg, #10285a 0%, #1d4b8f 55%, #2f78b8 100%); color: #eef3fb; display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); box-shadow: var(--shadow); }
.thesis .tx { padding: 26px 28px; }
.thesis .k { font-size: .72em; letter-spacing: .12em; text-transform: uppercase; color: #9fc2ef; font-weight: 600; }
.thesis h3 { font-family: var(--serif); font-size: 1.35em; line-height: 1.25; margin: 8px 0 10px; font-weight: 600; color: #fff; }
.thesis p { margin: 0 0 10px; color: #d5e1f3; font-size: .95em; }
.thesis .meta { font-size: .85em; color: #b9cdea; }
.thesis a { color: #fff; font-weight: 600; }
.thesis .im { background: #0c1f45; display: grid; place-items: center; }
.thesis .im img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Journey timeline */
.journey { list-style: none; margin: 0; padding: 0; position: relative; }
.journey::before { content: ""; position: absolute; left: 7px; top: 8px; bottom: 8px; width: 2px; background: linear-gradient(var(--bar), var(--rule)); }
.journey li { position: relative; padding: 0 0 18px 32px; }
.journey li:last-child { padding-bottom: 0; }
.journey li::before { content: ""; position: absolute; left: 1px; top: 6px; width: 14px; height: 14px; border-radius: 50%; background: var(--bg); border: 2px solid var(--bar); }
.journey li.now::before { background: var(--bar); box-shadow: 0 0 0 4px var(--accent-soft); }
.journey .what { font-weight: 600; }
.journey .tag { font-size: .7em; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--accent); background: var(--accent-soft); padding: 2px 8px; border-radius: 999px; margin-left: 8px; vertical-align: 2px; }
.journey .where { color: var(--soft); font-size: .94em; }
.journey .with { color: var(--muted); font-size: .9em; }

/* Image cards (home research snapshot, research teasers) */
.tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.tile { display: flex; flex-direction: column; background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); color: var(--text); transition: transform .18s, box-shadow .18s; }
a.tile:hover { text-decoration: none; transform: translateY(-2px); box-shadow: var(--shadow-hover); }
.tile .im { aspect-ratio: 16 / 9; background: var(--panel); overflow: hidden; }
.tile .im img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .4s; }
a.tile:hover .im img { transform: scale(1.03); }
.tile .tx { padding: 14px 16px 16px; }
.tile h3 { font-size: 1em; font-weight: 600; margin: 0 0 4px; }
.tile p { margin: 0; color: var(--muted); font-size: .9em; line-height: 1.5; }

/* Citations */
.cite { padding: 13px 0; border-bottom: 1px solid var(--rule); }
.cite:last-child { border-bottom: none; }
.cite .t { font-weight: 600; color: var(--text); }
.cite .a, .cite .v { color: var(--soft); font-size: .94em; }
.cite .a strong { color: var(--text); font-weight: 600; }
.cite .meta { font-size: .8em; color: var(--muted); margin-top: 4px; display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.pill { font-size: .9em; font-weight: 600; color: var(--accent); background: var(--accent-soft); padding: 1px 8px; border-radius: 999px; }

/* Call to action */
.cta { background: linear-gradient(135deg, var(--accent-soft), color-mix(in srgb, var(--accent-soft) 40%, var(--bg))); border: 1px solid var(--rule); border-radius: 16px; padding: 22px 24px; display: flex; gap: 16px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.cta p { margin: 0; color: var(--soft); max-width: 60ch; }
.cta p b { color: var(--text); font-family: var(--serif); font-size: 1.2em; display: block; margin-bottom: 2px; }
.btn { display: inline-block; background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: #fff; font-weight: 600; font-size: .9em; padding: 10px 18px; border-radius: 999px; white-space: nowrap; box-shadow: 0 6px 16px -6px rgba(29,59,120,.5); }
.btn:hover { text-decoration: none; filter: brightness(1.08); }

footer { grid-column: 1 / -1; border-top: 1px solid var(--rule); padding-top: 18px; color: var(--muted); font-size: .82em; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; }

/* ---------- Inner pages ---------- */
.page.single { display: block; max-width: 1040px; }
.pagehead { margin: 4px 0 34px; padding: 30px 32px; border-radius: 18px; background: radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--accent-2) 22%, transparent) 0%, transparent 55%), linear-gradient(135deg, var(--accent-soft), var(--page)); border: 1px solid var(--rule); }
.pagehead h1 { font-family: var(--serif); font-weight: 600; font-size: 2.2em; line-height: 1.15; margin: 4px 0 10px; letter-spacing: -.01em; }
.pagehead p { color: var(--soft); margin: 0; max-width: 74ch; font-size: 1.04em; }
.pagehead p strong { color: var(--text); }
.single footer { margin-top: 8px; }
.jump { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.jump a { font-size: .82em; font-weight: 500; color: var(--soft); background: var(--card); border: 1px solid var(--rule); padding: 4px 12px; border-radius: 999px; }
.jump a:hover { color: var(--accent); border-color: var(--accent-2); text-decoration: none; }

/* Research features: image + text, alternating */
.feature { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 32px; align-items: center; padding: 26px 0; border-bottom: 1px solid var(--rule); }
.feature:last-child { border-bottom: none; }
.feature.flip .fig { order: 2; }
.fig { margin: 0; }
.fig .frame { background: #fff; border: 1px solid var(--rule); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); aspect-ratio: 4 / 3; display: grid; place-items: center; }
.fig img { display: block; max-width: 100%; max-height: 100%; object-fit: contain; }
.fig.cover .frame { padding: 0; }
.fig.cover img { width: 100%; height: 100%; object-fit: cover; }
.fig figcaption { font-size: .78em; color: var(--muted); margin-top: 6px; }
.feature .ch { font-size: .72em; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: var(--teal); }
.feature h3 { font-family: var(--serif); font-size: 1.35em; font-weight: 600; margin: 4px 0 8px; line-height: 1.25; }
.feature p { margin: 0 0 10px; color: var(--soft); }
.papers { list-style: none; margin: 8px 0 0; padding: 0; font-size: .88em; }
.papers li { padding: 3px 0 3px 18px; color: var(--muted); position: relative; }
.papers li::before { content: ""; position: absolute; left: 2px; top: 11px; width: 7px; height: 7px; border-radius: 50%; background: var(--accent-2); opacity: .7; }
.status { display: inline-block; font-size: .7em; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; padding: 1px 8px; border-radius: 999px; margin-left: 4px; vertical-align: 2px; color: var(--amber); background: color-mix(in srgb, var(--amber) 14%, transparent); }

.minis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.mini { background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); padding: 16px 18px; box-shadow: var(--shadow); }
.mini h3 { font-size: 1em; font-weight: 600; margin: 0 0 6px; }
.mini p { margin: 0 0 6px; font-size: .9em; color: var(--muted); }
.mini .papers { font-size: .84em; }

.taggroup { display: grid; grid-template-columns: 11em minmax(0, 1fr); gap: 8px 16px; align-items: start; padding: 10px 0; border-bottom: 1px solid var(--rule); }
.taggroup:last-child { border-bottom: none; }
.taggroup b { font-size: .86em; color: var(--soft); padding-top: 3px; }

/* Cards (collaborators) */
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.card { display: block; background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); padding: 16px 18px; color: var(--text); box-shadow: var(--shadow); }
.card .k { font-size: .7em; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.card h3 { font-size: 1.02em; font-weight: 600; margin: 2px 0 4px; }
.card p { margin: 0; font-size: .88em; color: var(--muted); line-height: 1.5; }
.card ul { margin: 8px 0 0; padding-left: 16px; font-size: .85em; color: var(--soft); }
.card ul li { margin: 2px 0; }

/* Publications list */
.pubbar { position: sticky; top: 60px; z-index: 5; background: var(--bg); display: flex; align-items: center; gap: 16px; flex-wrap: wrap; border-bottom: 1px solid var(--rule); margin-bottom: 4px; padding-top: 4px; }
.embedded .pubbar { top: 0; }
.tabs { display: flex; gap: 6px; flex-wrap: wrap; padding: 6px 0 8px; }
.tabs button { font: inherit; font-size: .86em; font-weight: 500; color: var(--muted); background: var(--panel); border: 1px solid transparent; padding: 5px 12px; border-radius: 999px; cursor: pointer; }
.tabs button:hover { color: var(--text); }
.tabs button.on { color: #fff; background: var(--accent); }
.tabs button span { opacity: .7; font-weight: 400; margin-left: 4px; }
.search { margin-left: auto; font: inherit; font-size: .86em; padding: 7px 12px; border: 1px solid var(--rule); border-radius: 999px; background: var(--card); color: var(--text); width: 250px; }
.yr { font-family: var(--serif); font-weight: 600; color: var(--accent); font-size: 1.15em; margin: 24px 0 2px; }
.none { color: var(--muted); padding: 14px 0; display: none; }
.ygroup .cite { display: grid; grid-template-columns: 2.8em minmax(0, 1fr); }
.cite .no { color: var(--muted); font-size: .85em; padding-top: 2px; font-variant-numeric: tabular-nums; }
.cite .kind { text-transform: uppercase; letter-spacing: .06em; font-size: .92em; }
.metrics { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 18px; }
.metrics div { background: var(--card); border: 1px solid var(--rule); border-radius: 10px; padding: 8px 16px; }
.metrics div b { font-family: var(--serif); font-size: 1.35em; font-weight: 600; display: block; line-height: 1.15; color: var(--accent); }
.metrics div span { font-size: .68em; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }

/* Teaching & CV */
.edu { list-style: none; margin: 0; padding: 0; }
.edu li { display: grid; grid-template-columns: 8.5em minmax(0, 1fr); gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--rule); }
.edu li:last-child { border-bottom: none; }
.edu .w { color: var(--accent); font-weight: 600; font-variant-numeric: tabular-nums; font-size: .9em; padding-top: 1px; }
.edu .what { font-weight: 600; }
.edu .where { color: var(--soft); font-size: .94em; }
.edu .more { color: var(--muted); font-size: .88em; }
.edu .more i { color: var(--soft); }
.tbl { width: 100%; border-collapse: separate; border-spacing: 0; font-size: .92em; background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); }
.tbl th { text-align: left; font-size: .7em; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); font-weight: 600; padding: 10px 14px; background: var(--panel); border-bottom: 1px solid var(--rule); }
.tbl td { padding: 12px 14px; border-bottom: 1px solid var(--rule); vertical-align: top; }
.tbl tr:last-child td { border-bottom: none; }
.tbl td .code { font-size: .78em; font-weight: 600; color: var(--accent); background: var(--accent-soft); padding: 1px 7px; border-radius: 999px; margin-left: 4px; }
.tbl td small { display: block; color: var(--muted); font-size: .86em; margin-top: 2px; }
.tablewrap { overflow-x: auto; }

/* ---------- Responsive ---------- */
@media (max-width: 900px) {
  .page { grid-template-columns: 1fr; gap: 28px; padding: 20px 16px 40px; }
  aside { position: static; display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 0 20px; }
  aside .photo { grid-row: 1 / span 5; max-width: 140px; }
  aside h1 { margin-top: 0; font-size: 1.5em; }
  .contact, .stats, .chart { grid-column: 1 / -1; }
  .tiles, .minis { grid-template-columns: 1fr; }
  .highlights { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .thesis { grid-template-columns: 1fr; }
  .thesis .im { max-height: 220px; }
  .feature { grid-template-columns: 1fr; gap: 16px; }
  .feature.flip .fig { order: 0; }
  .topbar .in { padding: 0 16px; gap: 12px; }
  .topbar .nm span { display: none; }
  .topbar nav a { padding: 6px 9px; }
}
@media (max-width: 700px) {
  .pagehead { padding: 22px 20px; }
  .pagehead h1 { font-size: 1.6em; }
  .search { width: 100%; margin: 0 0 8px; }
  .taggroup { grid-template-columns: 1fr; gap: 4px; }
  .edu li { grid-template-columns: 1fr; gap: 2px; }
  .tbl thead { display: none; }
  .tbl tr { display: block; padding: 10px 14px; border-bottom: 1px solid var(--rule); }
  .tbl td { display: block; padding: 2px 0; border: none; }
}
@media (max-width: 480px) {
  aside { grid-template-columns: 1fr; }
  aside .photo { grid-row: auto; max-width: 200px; margin-bottom: 4px; }
  .topbar .nm::before { display: none; }
}

/* ---------- News strip (Home) ---------- */
.news { list-style: none; margin: 0; padding: 0; background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; }
.news li { display: grid; grid-template-columns: 6.6em minmax(0, 1fr); gap: 14px; align-items: baseline; padding: 12px 18px; border-bottom: 1px solid var(--rule); }
.news li:last-child { border-bottom: none; }
.news time { font-size: .78em; font-weight: 700; letter-spacing: .04em; color: var(--accent-2); text-transform: uppercase; font-variant-numeric: tabular-nums; }
.news .what { color: var(--soft); font-size: .95em; }
.news .what b { color: var(--text); font-weight: 600; }
.news li.new time::after { content: "New"; margin-left: 6px; font-size: .85em; color: #fff; background: var(--teal); padding: 1px 6px; border-radius: 999px; letter-spacing: .03em; }

/* Key result callout (Research) */
.keyres { display: flex; gap: 10px; align-items: flex-start; margin: 4px 0 12px; padding: 10px 14px; border-radius: 10px; background: color-mix(in srgb, var(--teal) 9%, var(--bg)); border: 1px solid color-mix(in srgb, var(--teal) 25%, transparent); font-size: .92em; color: var(--soft); }
.keyres b { color: var(--teal); font-weight: 700; white-space: nowrap; }

/* Publications extras */
.cite .meta .bib { font: inherit; font-size: 1em; color: var(--link); background: none; border: none; padding: 0; cursor: pointer; }
.cite .meta .bib:hover { text-decoration: underline; }
.cite .meta .bib.ok { color: var(--teal); }
.cite .first { font-weight: 700; color: var(--teal); }

/* ---------- Motion (subtle; off for reduced-motion users) ---------- */
.anim .reveal { opacity: 0; transform: translateY(14px); transition: opacity .6s cubic-bezier(.2,.7,.2,1), transform .6s cubic-bezier(.2,.7,.2,1); transition-delay: var(--d, 0ms); }
.anim .reveal.in { opacity: 1; transform: none; }
.anim .chart .bar { transform: scaleY(0); transform-box: fill-box; transform-origin: 50% 100%; transition: transform .9s cubic-bezier(.2,.8,.2,1); transition-delay: var(--d, 0ms); }
.anim .chart.in .bar { transform: scaleY(1); }
.anim .journey li::before { transform: scale(0); transition: transform .45s cubic-bezier(.3,1.4,.5,1); transition-delay: var(--d, 0ms); }
.anim .journey.in li::before { transform: scale(1); }
.anim .journey::before { transform: scaleY(0); transform-origin: top; transition: transform 1.1s ease; }
.anim .journey.in::before { transform: scaleY(1); }
.thesis canvas.mol { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.thesis .tx { position: relative; }
.photo { animation: none; }
.anim .photo { animation: photoIn .9s cubic-bezier(.2,.7,.2,1) both; }
@keyframes photoIn { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .anim .reveal, .anim .chart .bar, .anim .journey li::before, .anim .journey::before, .anim .photo { transition: none !important; animation: none !important; opacity: 1 !important; transform: none !important; }
}
@media print {
  .anim .reveal, .anim .chart .bar, .anim .journey li::before, .anim .journey::before { opacity: 1 !important; transform: none !important; }
  .topbar, .thesis canvas.mol { display: none !important; }
}
@media (max-width: 700px) {
  .news li { grid-template-columns: 1fr; gap: 2px; padding: 10px 14px; }
}
.thesis .tx > *:not(canvas) { position: relative; z-index: 1; }

/* Home footer sits outside .page so the sticky sidebar can never slide over it */
.page-foot { max-width: 1120px; margin: 0 auto; padding: 0 28px 40px; }
@media (max-width: 900px) { .page-foot { padding: 0 16px 32px; } }

/* Talks: press clipping and journal covers */
.press { margin: 0; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 28px; align-items: center; }
.press .frame { background: #fff; border: 1px solid var(--rule); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); }
.press img { display: block; width: 100%; height: auto; }
.press .ch { font-size: .72em; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: var(--teal); }
.press h3 { font-family: var(--serif); font-size: 1.3em; font-weight: 600; margin: 4px 0 8px; line-height: 1.25; }
.press p { margin: 0; color: var(--soft); }
.covers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.cover { display: flex; flex-direction: column; color: var(--text); }
.cover:hover { text-decoration: none; }
.cover img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; border-radius: 8px; box-shadow: var(--shadow); transition: transform .25s, box-shadow .25s; background: var(--panel); }
.cover:hover img { transform: translateY(-3px); box-shadow: var(--shadow-hover); }
.cover .j { margin-top: 10px; font-weight: 600; }
.cover .d { font-size: .8em; color: var(--accent-2); font-weight: 600; letter-spacing: .02em; }
.cover .t { font-size: .88em; color: var(--muted); margin-top: 2px; line-height: 1.45; }
@media (max-width: 900px) { .press { grid-template-columns: 1fr; gap: 14px; } }
@media (max-width: 600px) { .covers { grid-template-columns: 1fr 1fr; gap: 14px; } }
