:root{
  --bg:#f7f9fc;--surface:#ffffff;--surface-soft:#f1f4f8;
  --ink:#1b2738;--ink-soft:#526074;--navy:#274663;--navy-deep:#18324b;
  --steel:#7f8da0;--border:#dbe2ea;--border-strong:#c6d0db;
  --shadow:0 16px 44px rgba(24,50,75,.075);--maxw:1080px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  color:var(--ink);
  background:
    linear-gradient(rgba(39,70,99,.018) 1px,transparent 1px),
    linear-gradient(90deg,rgba(39,70,99,.018) 1px,transparent 1px),
    var(--bg);
  background-size:48px 48px;line-height:1.65;-webkit-font-smoothing:antialiased
}
a{color:inherit;text-decoration:none}
.site-shell{width:min(calc(100% - 42px),var(--maxw));margin:0 auto}
.site-header{
  position:sticky;top:0;z-index:20;background:rgba(247,249,252,.94);
  border-bottom:1px solid rgba(219,226,234,.9);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)
}
.nav{min-height:74px;display:flex;align-items:center;justify-content:space-between;gap:28px}
.brand{font-size:1.03rem;font-weight:690;letter-spacing:-.018em;white-space:nowrap;color:var(--navy-deep)}
.nav-links{display:flex;align-items:center;gap:25px;list-style:none;color:var(--ink-soft);font-size:.91rem}
.nav-links a{position:relative;transition:color 160ms ease}
.nav-links a::after{
  content:"";position:absolute;left:0;bottom:-8px;width:100%;height:1px;background:var(--navy);
  transform:scaleX(0);transform-origin:left;transition:transform 160ms ease
}
.nav-links a:hover,.nav-links a.active{color:var(--navy-deep)}
.nav-links a:hover::after,.nav-links a.active::after{transform:scaleX(1)}
.nav-cv{padding:7px 12px;border:1px solid var(--border-strong);border-radius:8px;color:var(--navy-deep)!important;background:rgba(255,255,255,.7)}
.nav-cv::after{display:none}
.hero{
  min-height:auto;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(230px,.55fr);
  gap:76px;align-items:center;padding:72px 0 38px
}
.eyebrow{
  display:inline-flex;align-items:center;gap:10px;color:var(--steel);font-size:.75rem;font-weight:650;
  letter-spacing:.15em;text-transform:uppercase;margin-bottom:18px
}
.eyebrow::before{content:"";width:32px;height:1px;background:var(--border-strong)}
h1{
  font-size:clamp(2.50rem,4.9vw,3.85rem);line-height:1.02;letter-spacing:-.045em;
  font-weight:700;color:var(--navy-deep);margin-bottom:20px
}
.hero-role{font-size:clamp(1rem,1.55vw,1.17rem);color:var(--ink-soft);max-width:660px;margin-bottom:26px}
.hero-copy{max-width:690px;color:var(--ink-soft);font-size:1rem;margin-bottom:28px}
.hero-copy strong{color:var(--ink);font-weight:620}
.hero-links{display:flex;flex-wrap:wrap;gap:14px 18px;align-items:center}
.hero-links a{
  display:inline-flex;align-items:center;gap:8px;font-size:.89rem;font-weight:590;color:var(--navy);
  padding-bottom:2px;border-bottom:1px solid var(--border-strong)
}
.hero-links a:hover{color:var(--navy-deep);border-color:var(--navy)}
.portrait-wrap{position:relative;justify-self:end;width:min(100%,292px)}
.portrait-wrap::before{
  content:"";position:absolute;inset:14px -14px -14px 14px;border:1px solid var(--border-strong);
  border-radius:17px;z-index:-1
}
.portrait{
  width:100%;aspect-ratio:.82;object-fit:cover;object-position:50% 30%;display:block;
  border-radius:17px;box-shadow:var(--shadow);filter:saturate(.86) contrast(1.02)
}
.content-section{padding:76px 0;border-top:1px solid var(--border)}
.section-head{display:grid;grid-template-columns:190px 1fr;gap:42px;margin-bottom:36px;align-items:start}
.section-kicker{color:var(--steel);text-transform:uppercase;letter-spacing:.15em;font-size:.74rem;font-weight:650;padding-top:6px}
.section-title{
  font-size:clamp(1.55rem,2.4vw,2.05rem);line-height:1.16;letter-spacing:-.028em;
  color:var(--navy-deep);font-weight:670;max-width:700px
}
.section-copy{color:var(--ink-soft);max-width:730px;margin-top:11px}
.research-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--border)}
.research-item{padding:25px 28px 27px 0;border-bottom:1px solid var(--border)}
.research-item:nth-child(odd){border-right:1px solid var(--border);padding-right:34px}
.research-item:nth-child(even){padding-left:34px}
.research-number{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--steel);font-size:.74rem;margin-bottom:9px}
.research-item h3{font-size:1.05rem;color:var(--navy-deep);margin-bottom:6px;font-weight:640}
.research-item p{color:var(--ink-soft);font-size:.93rem}
.page-hero{padding:76px 0 42px}
.page-hero .eyebrow{margin-bottom:13px}
.page-hero h1{font-size:clamp(2.35rem,4vw,3.35rem);margin-bottom:15px}
.page-intro{max-width:720px;color:var(--ink-soft);font-size:1rem}
.inner-content{padding:12px 0 84px}
.publication-list,.timeline{border-top:1px solid var(--border)}
.publication{display:grid;grid-template-columns:76px 1fr auto;gap:22px;padding:27px 0;border-bottom:1px solid var(--border);align-items:start}
.publication-year,.timeline-date{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--steel);font-size:.8rem;padding-top:3px}
.publication-title{color:var(--navy-deep);font-weight:635;line-height:1.38;margin-bottom:5px}
.publication-meta{color:var(--ink-soft);font-size:.9rem}
.publication-links{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.publication-links a,.text-link{font-size:.77rem;font-weight:620;color:var(--navy);border:1px solid var(--border-strong);padding:6px 9px;border-radius:7px;background:rgba(255,255,255,.55)}
.publication-links a:hover,.text-link:hover{background:var(--surface-soft)}
.timeline-row{display:grid;grid-template-columns:150px 1fr;gap:28px;padding:22px 0;border-bottom:1px solid var(--border)}
.timeline-row h3{font-size:1rem;font-weight:630;color:var(--navy-deep);margin-bottom:3px}
.timeline-row p{color:var(--ink-soft);font-size:.92rem}
.software-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.software-card{
  background:rgba(255,255,255,.72);border:1px solid var(--border);border-radius:13px;
  overflow:hidden;display:flex;flex-direction:column;
  min-height:330px;transition:transform 170ms ease,border-color 170ms ease,background 170ms ease,box-shadow 170ms ease
}
.software-card:hover{
  transform:translateY(-3px);border-color:#b8c3d0;background:var(--surface);
  box-shadow:0 12px 30px rgba(24,50,75,.065)
}
.software-media{
  width:100%;aspect-ratio:16/10;background:#eef2f6;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;overflow:hidden
}
.software-media img{
  width:100%;height:100%;display:block;object-fit:contain;background:#f6f8fb
}
.software-copy{
  padding:19px 20px 18px;display:flex;flex:1;flex-direction:column
}
.software-card h3{font-size:1rem;color:var(--navy-deep);margin-bottom:8px;font-weight:635}
.software-card p{color:var(--ink-soft);font-size:.89rem}
.software-card span{
  margin-top:auto;padding-top:18px;color:var(--steel);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.74rem
}
.section-footer-link{margin-top:22px}
footer{border-top:1px solid var(--border);padding:32px 0 42px;color:var(--steel);font-size:.81rem}
.footer-inner{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
.menu-button{display:none;width:40px;height:40px;border:1px solid var(--border);border-radius:8px;background:rgba(255,255,255,.7);color:var(--navy-deep);font-size:1.1rem;cursor:pointer}
@media(max-width:860px){
  .menu-button{display:inline-grid;place-items:center}.nav{min-height:68px;position:relative}
  .nav-links{position:absolute;left:0;right:0;top:68px;display:none;flex-direction:column;align-items:flex-start;gap:0;padding:12px 0 18px;background:rgba(247,249,252,.98);border-bottom:1px solid var(--border)}
  .nav-links.open{display:flex}.nav-links li{width:100%}.nav-links a{display:block;width:100%;padding:10px 0}.nav-links a::after{display:none}
  .nav-cv{border:0;border-radius:0;background:transparent;padding-left:0}
  .hero{min-height:auto;grid-template-columns:1fr;gap:38px;padding:54px 0 38px}
  .portrait-wrap{justify-self:start;width:min(68vw,285px)}
  .section-head{grid-template-columns:1fr;gap:8px}.research-list{grid-template-columns:1fr}
  .research-item:nth-child(odd){border-right:0;padding-right:0}.research-item:nth-child(even){padding-left:0}
  .publication{grid-template-columns:64px 1fr}.publication-links{grid-column:2;justify-content:flex-start}
  .software-grid{grid-template-columns:1fr}
}
@media(max-width:560px){
  .site-shell{width:min(calc(100% - 28px),var(--maxw))}h1{font-size:2.75rem}.hero{padding-top:46px}
  .content-section{padding:62px 0}.publication{grid-template-columns:1fr;gap:8px}.publication-links{grid-column:1}
  .timeline-row{grid-template-columns:1fr;gap:5px}
}
