/* Light surfaces, neutral grays, and an electric-blue accent. */
:root {
  color-scheme: only light;
  --bg: #f9fafc;
  --surface: #eef0f4;
  --ink: #191c23;
  --muted: #5d626c;
  --line: #d5d9e1;
  --accent: #2457ff;
  --accent-hover: #1742d4;
  --on-accent: #ffffff;
  --shell: 1240px;
  --sans: "Inter", "Helvetica Neue", Arial, sans-serif;
}
*,*::before,*::after { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:32px; }
body { margin:0; background:var(--bg); color:var(--ink); font:16px/1.65 var(--sans); -webkit-font-smoothing:antialiased; }
::selection { background:var(--accent); color:var(--on-accent); }
a { color:inherit; text-decoration-thickness:1px; text-underline-offset:5px; }
a,button,summary { -webkit-tap-highlight-color:transparent; }
a:focus-visible,button:focus-visible,summary:focus-visible { outline:3px solid var(--accent); outline-offset:6px; border-radius:3px; }
main:focus { outline:none; }
img,svg { display:block; max-width:100%; }
img { height:auto; }
figure,p,h1,h2,h3 { margin:0; }
h1,h2,h3 { font-weight:500; }
h1,h2 { letter-spacing:-0.055em; line-height:1.04; }
h2 { font-size:clamp(38px,4.1vw,60px); }
h3 { font-size:clamp(23px,2.15vw,29px); line-height:1.25; letter-spacing:-0.035em; }
h1 em,h2 em { color:var(--accent); font-family:Georgia,"Times New Roman",serif; font-weight:400; }
button { font:inherit; }
[hidden] { display:none !important; }
.shell { width:min(var(--shell),calc(100% - 96px)); margin-inline:auto; }
.skip-link { position:fixed; z-index:10; top:12px; left:16px; padding:10px 20px; background:var(--accent); color:var(--on-accent); transform:translateY(-160%); }
.skip-link:focus { transform:translateY(0); }
.header-inner { min-height:100px; display:flex; align-items:center; justify-content:space-between; gap:24px; border-bottom:1px solid var(--line); }
.brand { font-size:24px; font-weight:600; letter-spacing:-0.055em; text-decoration:none; white-space:nowrap; }
.brand>span { color:var(--accent); }
.header-inner nav { display:flex; gap:34px; align-items:center; }
.header-inner nav a { padding-block:12px; font-size:14px; text-decoration:none; }
.header-inner nav a:hover,.header-inner nav a[aria-current="page"] { color:var(--accent); }
.header-inner nav a:last-child>span { margin-left:9px; }
.eyebrow { font-size:11px; letter-spacing:0.13em; font-weight:600; text-transform:uppercase; line-height:1.5; }
.button { min-height:52px; display:inline-flex; align-items:center; justify-content:center; gap:26px; padding:12px 23px; border:1px solid transparent; border-radius:100px; font-size:13px; font-weight:600; text-decoration:none; cursor:pointer; transition:background 180ms ease,transform 180ms ease; }
.button-primary { background:var(--accent); color:var(--on-accent); }
.button-primary:hover { background:var(--accent-hover); transform:translateY(-2px); }
.text-link { display:inline-flex; gap:18px; align-items:center; min-height:44px; font-size:13px; font-weight:500; text-decoration:none; }
.text-link:hover { text-decoration:underline; }
.text-link>span { color:var(--accent); }
details { border-top:1px solid var(--line); }
summary { cursor:pointer; list-style:none; }
summary::-webkit-details-marker { display:none; }
.project-details summary { display:flex; justify-content:space-between; align-items:center; gap:20px; padding-block:17px; font-size:13px; }
summary:hover { color:var(--accent); }
.project-details summary>span,.expand-icon { font-size:23px; line-height:1; font-weight:400; transition:transform 180ms ease; }
details[open]>summary>span:last-child { transform:rotate(45deg); }
.detail-body { padding-block:0 24px; font-size:14px; color:var(--muted); }
.detail-body p+p { margin-top:13px; }
.tools-line { font-size:11px; line-height:1.8; color:var(--accent); }
.skills-list { margin:32px 0 0; }
.skills-list>div { display:grid; grid-template-columns:80px 1fr; gap:18px; border-top:1px solid var(--line); padding-block:14px; font-size:11px; }
.skills-list dt { color:var(--ink); }
.skills-list dd { margin:0; color:var(--muted); }
.site-footer { display:flex; align-items:center; justify-content:space-between; gap:24px; border-top:1px solid var(--line); padding-block:26px; font-size:10px; color:var(--muted); }
.site-footer a { text-decoration:none; padding-block:8px; color:var(--ink); }
.site-footer a:hover { color:var(--accent); }
/* An editorial CV with a section index and a separate print layout. */
.resume-main { max-width:1140px; padding-block:42px 70px; }
.resume-mark { display:none; }
.resume-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:30px; padding-bottom:24px; border-bottom:2px solid var(--accent); }
.resume-heading .eyebrow { color:var(--accent); margin-bottom:12px; }
.resume-heading h1 { font-size:clamp(44px,5.5vw,68px); }
.resume-heading h1>span { color:var(--accent); }
.resume-heading .subtitle { color:var(--muted); font-size:17px; margin-top:12px; }
.resume-actions { flex-shrink:0; text-align:right; }
.resume-heading .button { min-height:46px; gap:10px; border-radius:8px; }
.resume-overview { padding-block:22px 28px; }
.resume-intro { max-width:800px; font-size:17px; line-height:1.65; }
.resume-profile { display:flex; align-items:center; flex-wrap:wrap; gap:4px 28px; margin-top:12px; font-size:13px; color:var(--muted); }
.resume-links { display:flex; gap:6px 24px; flex-wrap:wrap; }
.resume-links a { min-height:44px; display:inline-flex; align-items:center; gap:6px; color:var(--accent); text-decoration:none; }
.resume-links a:hover { text-decoration:underline; }
.resume-layout { display:grid; grid-template-columns:190px minmax(0,1fr); gap:32px; align-items:start; }
.resume-nav { position:sticky; top:24px; padding-block:8px; max-height:calc(100svh - 48px); overflow-y:auto; }
.resume-nav .eyebrow { color:var(--muted); margin:0 0 14px 12px; }
.resume-nav-links { display:grid; gap:3px; }
.resume-nav-links a { display:flex; align-items:center; gap:12px; min-height:44px; padding:9px 10px; border-left:2px solid transparent; border-radius:0 5px 5px 0; font-size:13px; line-height:1.4; text-decoration:none; }
.resume-nav-links a>span { font-size:10px; font-variant-numeric:tabular-nums; color:var(--muted); }
.resume-nav-links a:hover { color:var(--accent); background:var(--surface); }
.resume-nav-links a[aria-current="location"] { color:var(--accent); background:#edf1ff; border-left-color:var(--accent); font-weight:600; }
.resume-nav-links a[aria-current="location"]>span { color:var(--accent); }
.resume-nav-toggle { display:none; }
.resume-nav .resume-back-top { display:flex; align-items:center; gap:18px; min-height:44px; margin:18px 12px 0; border-top:1px solid var(--line); padding-top:12px; color:var(--muted); font-size:12px; text-decoration:none; }
.resume-back-top:hover { color:var(--accent); }
.resume-content { min-width:0; background:#fff; padding:34px; border:1px solid var(--line); border-radius:4px; }
.resume-section:focus { outline:none; }
.resume-section+.resume-section { border-top:1px solid var(--line); margin-top:38px; padding-top:34px; }
.resume-section-heading { display:flex; align-items:baseline; gap:14px; margin-bottom:26px; }
.resume-section-heading>span { font-size:10px; font-variant-numeric:tabular-nums; color:var(--accent); }
.resume-section-heading h2 { font-size:28px; letter-spacing:-0.04em; line-height:1.15; }
.resume-section h3 { font-size:19px; letter-spacing:-0.025em; line-height:1.35; }
.resume-section p,.resume-section li { font-size:15px; color:#48515f; }
.resume-section .resume-organization { display:flex; align-items:baseline; justify-content:space-between; gap:16px; margin-bottom:24px; color:var(--ink); font-weight:600; }
.resume-organization>span { color:var(--muted); font-size:12px; font-weight:400; }
.resume-timeline { border-left:1px solid var(--line); padding-left:24px; }
.resume-timeline .resume-entry { position:relative; }
.resume-timeline .resume-entry::before { content:""; position:absolute; top:9px; left:-28px; width:7px; height:7px; border-radius:50%; background:var(--accent); box-shadow:0 0 0 4px #fff; }
.resume-entry+.resume-entry { margin-top:28px; }
.resume-entry-heading { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:3px 18px; }
.resume-section .resume-date { font-size:13px; white-space:nowrap; font-variant-numeric:tabular-nums; color:var(--muted); }
.resume-section .resume-affiliation { font-size:13px; margin-block:5px 11px; }
.resume-section ul { padding-left:18px; margin:10px 0 0; }
.resume-section li+li { margin-top:6px; }
.resume-section li::marker { color:var(--accent); }
.degree-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.degree { background:var(--bg); border-top:2px solid var(--accent); padding:18px; }
.resume-section .degree-meta { display:flex; align-items:baseline; justify-content:space-between; gap:12px; font-size:12px; color:var(--accent); margin-bottom:15px; }
.degree h3 { font-size:18px; }
.degree h3+p { margin-top:12px; font-size:13px; }
.publication+.publication { border-top:1px solid var(--line); margin-top:22px; padding-top:22px; }
.resume-section .publication-meta { font-size:12px; margin-bottom:9px; }
.publication h3 { font-size:20px; line-height:1.45; }
.publication a,.resume-project a { text-decoration:underline; text-decoration-color:var(--line); }
.publication a:hover,.resume-project a:hover { color:var(--accent); text-decoration:underline; }
.publication a>span,.resume-project a>span { color:var(--accent); white-space:nowrap; }
.leadership-roles { margin:18px 0 0; }
.leadership-roles>div { display:flex; justify-content:space-between; align-items:baseline; gap:20px; padding-block:6px; font-size:13px; }
.leadership-roles dd { color:var(--muted); margin:0; white-space:nowrap; font-variant-numeric:tabular-nums; }
.resume-project-grid { display:grid; grid-template-columns:1fr 1fr; gap:26px 30px; }
.resume-project h3 { font-size:17px; }
.resume-project p { font-size:14px; margin-top:8px; }
.resume-section .skills-list { margin:0; }
.resume-skills>div { grid-template-columns:145px minmax(0,1fr); gap:20px; padding-block:15px; font-size:14px; }
.resume-skills>div:first-child { border-top:0; padding-top:0; }
.resume-skills>div:last-child { padding-bottom:0; }
.resume-section .recognition-list { display:grid; grid-template-columns:1fr 1fr; gap:22px 30px; list-style:none; padding:0; margin:0; }
.recognition-list h3 { font-size:15px; line-height:1.45; }
.recognition-list p { font-size:12px; margin-top:5px; }
.resume-section .recognition-list li+li { margin:0; }
.resume-end { display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px 20px; margin-top:30px; padding-top:16px; border-top:1px solid var(--line); }
@media (max-width:1000px) {
  .shell { width:calc(100% - 64px); }
  .resume-layout { grid-template-columns:180px minmax(0,1fr); gap:24px; }
  .resume-content { padding:30px; }
}
@media (max-width:900px) {
  .resume-layout { grid-template-columns:minmax(0,1fr); gap:0; }
  .resume-nav { position:static; padding:14px 0; max-height:none; overflow:visible; background:var(--bg); }
  .resume-nav .eyebrow { margin-left:0; }
  .resume-nav-links { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .resume-nav .resume-back-top { display:none; }
  .resume-nav.is-enhanced { position:sticky; z-index:4; top:0; padding:10px 0; border-bottom:1px solid var(--line); }
  .resume-nav.is-enhanced>.eyebrow { display:none; }
  .resume-nav.is-enhanced .resume-nav-toggle { display:flex; align-items:center; gap:16px; width:100%; min-height:46px; padding:10px 14px; border:1px solid var(--line); border-radius:6px; background:#fff; color:var(--ink); font-size:13px; text-align:left; cursor:pointer; }
  .resume-nav-toggle>span:first-child { color:var(--muted); }
  .resume-nav-toggle [data-current-section] { margin-left:auto; font-weight:600; color:var(--accent); }
  .resume-nav-chevron { font-size:20px; line-height:1; }
  .resume-nav-toggle[aria-expanded="true"] .resume-nav-chevron { transform:rotate(180deg); }
  .resume-nav.is-enhanced .resume-nav-links { display:none; }
  .resume-nav.is-enhanced.is-open .resume-nav-links { display:grid; grid-template-columns:1fr; margin-top:8px; padding:8px; border:1px solid var(--line); border-radius:6px; background:#fff; max-height:55svh; overflow-y:auto; }
  .resume-section { scroll-margin-top:64px; }
  .resume-content { margin-top:18px; }
}
@media (max-width:700px) {
  .shell { width:calc(100% - 40px); }
  .header-inner { min-height:80px; gap:15px; }
  .brand { font-size:21px; }
  .header-inner nav { gap:19px; }
  .header-inner nav a { font-size:12px; }
  .header-inner nav a:last-child>span { display:none; }
  .site-footer { flex-wrap:wrap; gap:7px 18px; }
  .site-footer>p:nth-child(2) { flex-basis:100%; order:3; }
  .site-footer>a { margin-left:auto; }
  .resume-main { padding-block:28px 45px; }
  .resume-heading { display:block; padding-bottom:22px; }
  .resume-actions { margin-top:18px; text-align:left; }
  .resume-heading .subtitle { font-size:16px; }
  .resume-overview { padding-block:20px 12px; }
  .resume-intro { font-size:16px; }
  .resume-profile { gap:0 24px; margin-top:12px; }
  .resume-links { gap:6px 22px; }
  .resume-content { padding:18px 0 0; margin-top:12px; border:0; background:transparent; }
  .resume-section-heading { gap:10px; margin-bottom:22px; }
  .resume-section-heading h2 { font-size:25px; }
  .resume-section .resume-organization { display:block; }
  .resume-organization>span { display:block; margin-top:2px; }
  .resume-timeline { padding-left:18px; }
  .resume-timeline .resume-entry::before { left:-22px; box-shadow:0 0 0 4px var(--bg); }
  .degree-grid,.resume-project-grid,.resume-section .recognition-list { grid-template-columns:1fr; }
  .resume-skills>div { grid-template-columns:1fr; gap:5px; }
  .leadership-roles>div { flex-wrap:wrap; gap:2px 12px; padding-block:8px; }
}
@media (max-width:360px) { .header-inner nav { gap:12px; } .brand { font-size:19px; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition:none !important; animation:none !important; } }
/* Screen-only character keeps the compact, monochrome print layout intact. */
@media screen {
  .resume-page { --bg:#fcfbf8; --surface:#edf2fa; --ink:#172e40; --muted:#536474; --line:#dce1e5; --accent:#225c9c; --accent-hover:#164674; --display:Georgia,"Times New Roman",serif; --shell:1160px; }
  .resume-page .header-inner { min-height:86px; border-bottom:0; }
  .resume-page .brand>span { color:#a53470; }
  .resume-main { padding-top:28px; }
  .resume-heading { position:relative; min-height:240px; padding:36px 40px; border:0; border-radius:16px 16px 56px 16px; background:var(--surface); }
  .resume-mark { display:block; position:absolute; top:22px; right:54px; width:122px; height:108px; pointer-events:none; }
  .resume-heading h1 { font-family:var(--display); font-weight:400; letter-spacing:-0.055em; }
  .resume-heading h1>span { color:#a53470; }
  .resume-heading .eyebrow { margin-bottom:16px; }
  .resume-heading .subtitle { margin-top:14px; }
  .resume-heading .button { background:var(--ink); border-radius:100px; }
  .resume-heading .button:hover { background:var(--accent); }
  .resume-overview { padding:28px 40px 36px; }
  .resume-intro { max-width:790px; color:var(--ink); }
  .resume-profile { gap:4px 32px; margin-top:10px; }
  .resume-profile>p { display:flex; align-items:center; gap:8px; }
  .resume-profile>p::before { content:""; width:6px; height:6px; background:#6c8979; border-radius:50%; }
  .resume-layout { gap:32px; }
  .resume-nav { padding:18px 6px; }
  .resume-nav .eyebrow { font-size:10px; letter-spacing:0.1em; }
  .resume-nav-links { gap:5px; }
  .resume-nav-links a { padding:10px 12px; border:0; border-radius:9px; }
  .resume-nav-links a[aria-current="location"] { background:#e7eef8; }
  .resume-nav .resume-back-top { border:0; margin-top:14px; padding-top:0; }
  .resume-content { padding:36px 40px; border-color:#e5e5df; border-radius:16px; }
  .resume-section+.resume-section { margin-top:40px; padding-top:32px; }
  .resume-section-heading { align-items:center; gap:14px; margin-bottom:28px; }
  .resume-section-heading>span { display:grid; place-items:center; flex:0 0 34px; height:34px; background:#e8eff8; border-radius:11px 11px 11px 3px; font-size:11px; }
  .resume-section:nth-child(3n + 2) .resume-section-heading>span { color:#825021; background:#f5eadb; border-radius:50%; }
  .resume-section:nth-child(3n) .resume-section-heading>span { color:#8b3c65; background:#f3e8ee; border-radius:12px 4px 12px 4px; }
  .resume-section-heading h2 { font-family:var(--display); font-weight:400; font-size:29px; letter-spacing:-0.035em; }
  .resume-section h3 { font-weight:600; font-size:18px; }
  .resume-section .resume-organization { margin-bottom:28px; }
  .resume-timeline { border-color:#d9e3ee; }
  .resume-entry+.resume-entry { margin-top:30px; }
  .resume-section .resume-date { color:var(--accent); font-size:12px; }
  .degree { padding:22px; border:0; background:#edf2fa; border-radius:12px 12px 30px 12px; }
  .degree:nth-child(2) { background:#f5f0e7; }
  .resume-section .degree-meta { font-size:11px; font-weight:600; }
  .degree:nth-child(2) .degree-meta { color:#825021; }
  .resume-section .degree h3 { font-size:18px; line-height:1.45; }
  .publication h3 { font-size:19px; font-weight:500; }
  .publication a,.resume-project a { text-decoration-color:#b7c7d8; }
  .resume-section .publication-meta { color:var(--muted); font-size:11px; }
  .leadership-roles { padding:10px 16px; background:#f5f7f6; border-radius:10px; }
  .resume-project h3 { font-size:16px; }
  .resume-skills dt { font-weight:600; font-size:13px; }
  .recognition-list li { position:relative; padding-left:17px; }
  .recognition-list li::before { content:""; position:absolute; left:0; top:7px; width:7px; height:7px; border-radius:2px; background:#b78e58; transform:rotate(45deg); }
  .resume-section .recognition-list h3 { font-size:14px; }
  .resume-end { margin-top:32px; }
}
@media screen and (max-width:1000px) {
  .resume-heading { padding-inline:30px; }
  .resume-overview { padding-inline:30px; }
  .resume-layout { gap:24px; }
  .resume-content { padding:30px; }
}
@media screen and (max-width:900px) {
  .resume-layout { gap:0; }
  .resume-nav { padding:14px 0; }
  .resume-nav.is-enhanced { border:0; }
  .resume-nav.is-enhanced .resume-nav-toggle { border-color:#d8e1eb; border-radius:10px; box-shadow:0 3px 10px #172e4006; }
  .resume-nav.is-enhanced.is-open .resume-nav-links { border-color:#d8e1eb; border-radius:10px; }
}
@media screen and (max-width:700px) {
  .resume-page .header-inner { min-height:80px; }
  .resume-main { padding-top:16px; }
  .resume-heading { min-height:0; padding:26px; border-radius:14px 14px 38px 14px; }
  .resume-mark { width:72px; height:64px; top:16px; right:22px; }
  .resume-heading .eyebrow { margin-bottom:32px; }
  .resume-heading h1 { font-size:clamp(38px,8.6vw,54px); }
  .resume-heading .subtitle { font-size:15px; margin-top:12px; max-width:270px; }
  .resume-actions { margin-top:22px; }
  .resume-overview { padding:24px 6px 16px; }
  .resume-content { padding:20px 0 0; border:0; background:transparent; border-radius:0; }
  .resume-section-heading { gap:12px; margin-bottom:24px; }
  .resume-section-heading h2 { font-size:26px; }
  .resume-section-heading>span { flex-basis:30px; height:30px; font-size:10px; }
  .resume-section+.resume-section { margin-top:34px; padding-top:28px; }
  .degree { padding:22px; }
}
@media print {
  :root { color-scheme:only light; --bg:#fff; --surface:#fff; --ink:#111; --muted:#333; --line:#ccc; --accent:#333; }
  @page { margin:14mm; }
  body { font-size:10pt; background:white; }
  .site-header,.site-footer,.skip-link,.resume-actions,.resume-nav,.resume-end { display:none !important; }
  .shell,.resume-main { width:100%; max-width:none; margin:0; padding:0; }
  .resume-heading { display:block; padding-bottom:10px; border-bottom-width:1px; }
  .resume-heading .eyebrow { font-size:8pt; margin-bottom:8px; }
  .resume-heading h1 { font-size:30pt; }
  .resume-heading .subtitle { font-size:10pt; margin-top:6px; }
  .resume-overview { display:block; padding-block:12px; }
  .resume-intro { max-width:none; font-size:10pt; line-height:1.45; }
  .resume-profile { display:flex; align-items:baseline; flex-wrap:wrap; gap:8px 18px; font-size:9pt; padding-top:8px; margin-top:0; }
  .resume-links { margin:0; gap:16px; }
  .resume-links a { min-height:0; }
  .resume-layout { display:block; }
  .resume-content { padding:0; margin:0; border:0; box-shadow:none; }
  .resume-section { scroll-margin-top:0; }
  .resume-section+.resume-section { margin-top:16px; padding-top:14px; }
  .resume-section-heading { gap:10px; margin-bottom:12px; break-after:avoid; }
  .resume-section-heading>span { font-size:8pt; }
  .resume-section-heading h2 { font-size:13pt; }
  .resume-section h3 { font-size:11pt; }
  .resume-section p,.resume-section li,.resume-links a { font-size:9pt; line-height:1.45; }
  .resume-section .resume-organization { display:flex; margin-bottom:12px; break-after:avoid; }
  .resume-organization>span { display:inline; font-size:8pt; margin:0; }
  .resume-entry,.degree,.publication,.resume-project,.recognition-list li,.resume-skills>div { break-inside:avoid; }
  .resume-entry-heading { break-after:avoid; }
  .resume-section .resume-affiliation { font-size:8pt; margin-block:3px 6px; }
  .resume-section .resume-date { font-size:8pt; }
  .resume-timeline { padding-left:14px; }
  .resume-timeline .resume-entry::before { left:-18px; top:6px; }
  .resume-section ul { margin-top:6px; }
  .resume-section li+li { margin-top:3px; }
  .resume-entry+.resume-entry { margin-top:12px; }
  .degree-grid,.resume-project-grid,.resume-section .recognition-list { grid-template-columns:1fr 1fr; gap:12px 24px; }
  .degree { padding:10px 12px; border-top:1px solid var(--line); }
  .resume-section .degree-meta,.resume-section .publication-meta { font-size:8pt; margin-bottom:6px; }
  .degree h3+p { font-size:9pt; margin-top:6px; }
  .publication+.publication { margin-top:12px; padding-top:12px; }
  .leadership-roles { margin-top:8px; }
  .leadership-roles>div { font-size:9pt; padding-block:3px; }
  .resume-project p { margin-top:5px; }
  .resume-skills>div { grid-template-columns:125px minmax(0,1fr); gap:16px; padding-block:7px; font-size:9pt; line-height:1.45; }
  .recognition-list h3 { font-size:10pt; }
  .recognition-list p { font-size:8pt; margin-top:3px; }
  a { color:inherit; }
}
