/* Hallmark · macrostructure: Marquee Hero · tone: restrained academic · anchor hue: cyan
 * genre: atmospheric · theme: inherited Midnight · nav: N9 · footer: Ft2
 * design-system: design.md · designed-as-app
 * pre-emit critique: P4 H4 E4 S5 R4 V4 (scope exceptions documented in design.md)
 */
@import url("../../tokens.css");
:root { --bg:var(--color-paper); --surface:var(--color-surface); --ink:var(--color-ink); --muted:var(--color-muted); --rule:var(--color-rule); --accent:var(--color-accent); --accent-ink:var(--color-accent-ink); --mono:var(--font-mono); }
:root[data-theme="light"] { --bg:var(--color-paper); --surface:var(--color-surface); --ink:var(--color-ink); --muted:var(--color-muted); --rule:var(--color-rule); --accent:var(--color-accent); --accent-ink:var(--color-accent-ink); }
html,body { overflow-x:clip; }
html { scroll-padding-top:calc(var(--nav-height, 100px) + 48px); }
body { font-family:var(--font-body); background-image:none; }
body::before { display:none; }
h1,h2,h3,.cover-title { font-family:var(--font-display); font-style:normal; overflow-wrap:anywhere; min-width:0; }
a { text-underline-offset:.25em; }
:where(a,button,input,select,textarea,summary):focus-visible { outline:2px solid var(--color-focus); outline-offset:4px; }
button,select,.button,.text-link,nav a,footer a { white-space:nowrap; }
button,.button { transition:transform var(--dur-short) var(--ease-out); }
button:active,.button:active { transform:translateY(1px); }
button:disabled { opacity:.5; cursor:not-allowed; }
.site-header,main,footer { width:min(1200px,calc(100% - 40px)); }
.site-header { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:var(--space-xs) var(--space-sm); padding-block:var(--space-xs); min-height:0; background:var(--bg); backdrop-filter:none; }
.site-header .wordmark { font-size:var(--text-body); grid-column:1; grid-row:1; }
.small-monogram { border-radius:var(--radius-control); width:36px; height:36px; }
.display-controls { grid-column:1; grid-row:2; justify-content:flex-start; gap:var(--space-xs); }
.icon-button { width:44px; height:44px; }
.lang-select { min-height:44px; }
.menu-toggle { grid-column:2; grid-row:1 / 3; min-height:44px; padding:var(--space-xs) var(--space-sm); color:var(--ink); border:1px solid var(--rule); border-radius:var(--radius-control); background:var(--surface); font-size:var(--text-sm); }
.menu-toggle[aria-expanded="true"] { border-color:var(--accent); }
.site-header nav { grid-column:1 / -1; grid-row:3; width:100%; margin:0; display:grid; grid-template-columns:minmax(0,1fr); gap:0; justify-content:start; padding-block:var(--space-xs); }
.site-header nav a { padding:var(--space-xs) var(--space-sm); min-height:44px; display:flex; align-items:center; font-size:var(--text-sm); border-radius:var(--radius-control); }
.site-header nav a:hover { background:var(--surface); }
.site-header nav .nav-cv { border:0; }
.site-header.has-menu nav { display:none; }
.site-header.has-menu.is-menu-open nav { display:grid; max-height:55svh; overflow-y:auto; }
.site-header nav a[aria-current="location"]::after { left:0; top:10px; bottom:10px; width:2px; height:auto; }
/* Keep the complete painting in the opening viewport; navigation follows it. */
body.has-cover .site-header { position:sticky; background:var(--bg); text-shadow:none; }
body.has-cover .site-header :is(nav a,.wordmark,.icon-button,.lang-switch,.lang-select) { color:var(--ink); text-shadow:none; }
body.has-cover .header-backdrop { display:none; background:var(--bg); border-bottom:1px solid var(--rule); }
body.has-cover.is-past-cover .header-backdrop { display:block; height:var(--header-bottom,112px); }
.has-reading-progress .cover { margin-top:24px; min-height:calc(100svh - 24px); }
.cover::before { background-size:contain; background-position:center; }
.cover { --cover-title:clamp(40px,5.6vw,84px); --cover-sub:clamp(16px,1.7vw,23px); --cover-width:880px; --cover-shift:min(8%,90px); }
@media(max-width:760px) { .cover { --cover-width:none; --cover-shift:0; } }
.hero { grid-template-columns:minmax(0,1fr); gap:var(--space-xl); padding-block:var(--space-2xl); min-height:0; }
.hero h1 { font-size:var(--text-display); letter-spacing:-.055em; margin-bottom:var(--space-md); }
.hero .eyebrow { font-family:var(--font-body); font-size:var(--text-sm); letter-spacing:.02em; text-transform:none; }
.signal-dot { box-shadow:none; }
.affiliation { font-size:var(--text-body); margin-bottom:var(--space-lg); }
.intro { max-width:65ch; font-size:var(--text-lead); line-height:1.8; }
.hero-links { flex-wrap:wrap; gap:var(--space-md); }
.button { min-height:44px; border-radius:var(--radius-control); padding:var(--space-xs) var(--space-md); }
.button:hover { transform:none; box-shadow:none; }
.research-visual { width:min(100%,350px); justify-self:center; opacity:.8; }
.research-visual::before { background:none; }
.orbit { animation:none; }
.core-monogram { box-shadow:none; border-radius:var(--radius-control); }
.visual-heading,.visual-footer { letter-spacing:.06em; }
.news-section { padding-block:var(--space-xl); }
.news-list li { grid-template-columns:minmax(0,1fr); gap:var(--space-xs); }
.news-date { font-family:var(--font-body); }
.interests { display:block; padding-block:var(--space-lg); }
.interests h2 { margin-bottom:var(--space-sm); font-family:var(--font-body); font-size:var(--text-body); text-transform:none; letter-spacing:0; }
.interest-tags { gap:var(--space-xs) var(--space-md); }
.interest-tags li { border:0; background:none; padding:0; font-size:var(--text-sm); }
.content-section { display:block; padding-block:var(--space-2xl); }
.section-heading { position:static; margin-bottom:var(--space-lg); }
.section-number { display:none; }
.section-heading h2,.news-section h2 { font-size:var(--text-title); letter-spacing:-.035em; font-weight:600; }
.entry-heading { align-items:baseline; gap:var(--space-sm); flex-wrap:wrap; }
.entry-heading h3 { font-size:clamp(1.2rem,2vw,1.6rem); line-height:1.35; }
.entry p { max-width:72ch; line-height:1.8; }
#research .section-body { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--space-xl); }
#research .entry { border:0; border-top:2px solid var(--rule); border-radius:0; padding:var(--space-lg) 0 0; background:none; box-shadow:none; transform:none; }
#research .entry:hover { transform:none; border-color:var(--accent); }
#publications .manuscript { border-left:2px solid var(--accent); padding:var(--space-sm) var(--space-md); background:var(--surface); }
.status { border-radius:var(--radius-control); }
.compact-list article { padding-block:var(--space-md); }
.honors-list li { gap:var(--space-sm); }
.creative-section { padding-block:var(--space-2xl); }
.creative-links { display:grid; grid-template-columns:minmax(0,1fr); gap:0; }
.creative-card { border:0; border-top:1px solid var(--rule); border-radius:0; background:none; padding:var(--space-lg) 0; transform:none; }
.creative-card:hover { transform:none; background:none; box-shadow:none; }
.creative-card .eyebrow { display:none; }
.creative-card h3 { font-size:1.5rem; }
.contact-section { padding-block:var(--space-2xl); }
.contact-section h2 { font-size:var(--text-title); }
.contact-links { flex-wrap:wrap; gap:var(--space-sm) var(--space-lg); }
.contact-links a { font-size:var(--text-body); }
.visitor-section { padding-block:var(--space-xl); }
footer { gap:var(--space-sm); padding-block:var(--space-lg); font-size:var(--text-sm); }
footer a { min-height:44px; display:inline-flex; align-items:center; }
.portfolio-intro { padding-block:var(--space-2xl) var(--space-xl); }
.portfolio-intro h1,.project-detail .portfolio-intro h1 { font-size:var(--text-title); letter-spacing:-.04em; max-width:25ch; }
.portfolio-subtitle,.topic-intro { max-width:65ch; }
.projects-grid { grid-template-columns:minmax(0,1fr); gap:var(--space-xl); }
.project-card,.project-index-grid .project-cover { border-radius:var(--radius-control); }
.project-card { background:none; border:0; }
.project-card-body { padding:var(--space-md) 0; }
.project-cover { background:var(--surface); }
.project-cover img { object-fit:contain; }
.project-actions { gap:var(--space-sm) var(--space-md); }
.project-actions a { min-height:44px; display:inline-flex; align-items:center; }
.topic-heading { flex-wrap:wrap; }
.source-code { max-width:100%; font-family:var(--font-mono); border-radius:var(--radius-control); padding:var(--space-md); }
.table-wrap { max-width:100%; }
.practice-note summary { min-height:44px; padding-block:var(--space-sm); }
.portfolio-empty { grid-template-columns:minmax(0,1fr); padding-block:var(--space-xl); }
.empty-viewfinder { max-width:240px; opacity:.6; }
@media(min-width:48rem) {
 .site-header,main,footer,.cover-inner { width:min(1200px,calc(100% - 80px)); }
 .hero { grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); padding-block:var(--space-3xl); }
 .news-list li { grid-template-columns:150px minmax(0,1fr); gap:var(--space-lg); }
 #research .section-body,.projects-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .creative-links { grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--space-lg); }
 .portfolio-empty { grid-template-columns:minmax(0,1fr) minmax(0,1.6fr); }
}
@media(min-width:80rem) {
 .site-header { display:flex; gap:var(--space-md); min-height:88px; }
 .site-header.has-menu nav { display:flex; width:auto; margin-left:auto; gap:var(--space-sm); padding:0; }
 .site-header nav a { padding:var(--space-xs) 0; font-size:.8125rem; }
 .menu-toggle { display:none; }
 .display-controls { margin-left:var(--space-xs); }
 .site-header nav a[aria-current="location"]::after { top:auto; bottom:0; height:2px; width:auto; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition:none!important; } }
@media print { .site-header,.menu-toggle,.research-visual,.cover,.header-backdrop { display:none!important; } .content-section,.hero { padding-block:var(--space-md); } #research .section-body { display:block; } }

@media(min-width:48rem) {
 .project-index-grid { grid-template-columns:minmax(0,1fr); }
 .project-index-grid .project-card { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:var(--space-xl); align-items:center; }
 .project-index-grid .project-card-body { padding:0; }
}
.menu-toggle:hover { border-color:var(--accent); }

.site-header .wordmark > span:last-child { display:inline; }
@media print {
 :root,:root[data-theme="light"] { --color-paper:var(--color-reading-paper); --color-ink:var(--color-reading-ink); --color-muted:var(--color-reading-muted); --color-accent:var(--color-reading-accent); --color-rule:var(--color-reading-rule); --color-surface:var(--color-reading-panel); }
 body { background:var(--bg); color:var(--ink); }
}
