:root{--paper:#f7f6f2;
  --surface:#fffefb;
  --ink:#233630;
  --muted:#606e66;
  --green:#126b55;
  --line:#dfe4dc;
  --gold:#a77728;
  --radius:18px;
  --font-sans:"Segoe UI","PingFang SC","Microsoft YaHei",Arial,sans-serif;
  --shadow-soft:0 2px 5px rgba(33,54,44,.025),0 10px 28px rgba(33,54,44,.035);
  font-family:var(--font-sans);
  color:var(--ink);
  background:var(--paper);
  font-synthesis:none;
  color-scheme:light}

*{box-sizing:border-box}
html{scroll-padding-top:96px;
  scroll-behavior:smooth}
body{margin:0;
  font-size:15px;
  line-height:1.75;
  position:relative;
  isolation:isolate}
body::before{content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background:radial-gradient(ellipse at 10% 8%,rgba(107,153,116,.13),transparent 48%),radial-gradient(ellipse at 93% 37%,rgba(198,171,103,.1),transparent 42%);
  animation:ambient-breathe 14s ease-in-out infinite alternate}
a{color:var(--green);
  text-decoration:none;
  text-underline-offset:4px;
  text-decoration-thickness:1px;
  transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}
a:hover{text-decoration:underline}
button{font:inherit;
  cursor:pointer;
  transition:color .18s ease,background-color .18s ease,box-shadow .18s ease}
button,a,summary{touch-action:manipulation}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--gold);
  outline-offset:5px;
  border-radius:3px}
h1,h2,h3,h4,p,figure{margin:0}
h1,h2{font-family:var(--font-sans)}
h2{font-size:clamp(24px,3vw,30px);
  font-weight:650;
  line-height:1.4;
  letter-spacing:-.035em}
h3{font-size:18px;
  line-height:1.5}
h4{font-size:17px}
img,video{display:block;
  max-width:100%}
img{height:auto}
summary{cursor:pointer;
  color:var(--green);
  font-weight:600}
summary:hover{text-decoration:underline}
.skip-link{position:fixed;
  left:16px;
  top:-80px;
  z-index:20;
  background:var(--green);
  color:white;
  padding:9px 18px}
.skip-link:focus{top:12px}
.page-shell{max-width:1100px;
  margin:0 auto;
  padding:0 32px}
.site-header{max-width:1164px;
  margin:0 auto;
  padding:17px 32px;
  position:sticky;
  top:0;
  z-index:10;
  display:flex;
  align-items:center;
  gap:28px;
  min-height:72px;
  background:rgba(247,246,242,.94);
  border-bottom:1px solid var(--line);
  backdrop-filter:blur(14px);
  transition:box-shadow .3s ease,background-color .3s ease}
.site-header.is-scrolled{background:rgba(247,246,242,.97);
  box-shadow:0 8px 22px rgba(33,54,44,.045)}
.scroll-progress{position:fixed;
  inset:0 0 auto;
  height:3px;
  z-index:30;
  pointer-events:none;
  background:linear-gradient(90deg,var(--green),#74a67b,#bfa366);
  transform:scaleX(0);
  transform-origin:left;
  will-change:transform}
.brand{font-size:14px;
  font-weight:750;
  letter-spacing:.1em;
  color:var(--ink);
  white-space:nowrap;
  display:flex;
  align-items:center;
  gap:9px}
.brand:hover{text-decoration:none}
.brand-dot{width:7px;
  height:7px;
  border-radius:50%;
  background:var(--green);
  position:relative}
.brand-dot::after{content:"";
  position:absolute;
  inset:-4px;
  border:1px solid rgba(18,107,85,.3);
  border-radius:50%;
  animation:brand-pulse 4s ease-out infinite}
.site-nav{display:flex;
  gap:10px;
  margin-left:auto;
  font-size:13px}
.site-nav a{color:var(--muted);
  white-space:nowrap;
  padding:5px 7px;
  border-radius:7px;
  position:relative}
.site-nav a::after{content:"";
  position:absolute;
  left:7px;
  right:7px;
  bottom:1px;
  height:2px;
  border-radius:2px;
  background:var(--green);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .3s cubic-bezier(.22,1,.36,1)}
.site-nav a[aria-current=location]{color:var(--green);
  background:#eaf0e9}
.site-nav a[aria-current=location]::after{transform:scaleX(1)}
.site-nav a:hover{color:var(--green);
  background:#eaf0e9;
  text-decoration:none}
.header-controls{display:flex;
  align-items:center;
  gap:12px}
.lang-switch{display:flex;
  align-items:center;
  gap:3px;
  background:#edf0e9;
  border:1px solid #e1e6dc;
  padding:3px;
  border-radius:30px}
.lang-switch button{border:0;
  border-radius:24px;
  background:transparent;
  color:var(--muted);
  font-size:12px;
  padding:4px 10px;
  min-height:30px}
.lang-switch button[aria-pressed=true]{background:var(--green);
  color:white;
  box-shadow:0 1px 3px rgba(18,107,85,.18)}
.lang-switch button:not([aria-pressed=true]):hover{background:#e1e8df;
  color:var(--ink)}
.menu-toggle{display:none;
  background:transparent;
  border:1px solid var(--line);
  border-radius:8px;
  width:38px;
  height:38px;
  padding:9px}
.menu-toggle span{display:block;
  height:2px;
  margin:4px 0;
  background:var(--ink);
  transition:transform .25s ease}
.menu-open .menu-toggle span:first-child{transform:translateY(3px) rotate(45deg)}
.menu-open .menu-toggle span:last-child{transform:translateY(-3px) rotate(-45deg)}
.anchor-alias{position:absolute;
  width:1px;
  height:1px;
  pointer-events:none}
.hero{display:grid;
  grid-template-columns:minmax(0,1fr) 140px;
  gap:50px;
  align-items:center;
  padding:57px 0 49px}
.eyebrow{color:var(--green);
  font-size:11.5px;
  font-weight:650;
  letter-spacing:.12em;
  line-height:1.5;
  margin-bottom:11px}
.hero .eyebrow span{color:#b9bfb2;
  margin:0 7px}
h1{font-size:clamp(40px,5vw,50px);
  font-weight:650;
  line-height:1.2;
  display:flex;
  align-items:baseline;
  gap:22px;
  letter-spacing:-.03em}
.name-alternate{font-family:var(--font-sans);
  font-size:19px;
  font-weight:400;
  letter-spacing:0;
  color:var(--muted)}
.identity-line{margin-top:13px;
  color:var(--muted);
  font-size:14px}
.research-statement{font-size:19px;
  font-weight:600;
  margin-top:20px;
  line-height:1.65;
  max-width:800px}
.profile-text{margin-top:9px;
  color:var(--muted);
  max-width:780px}
.profile-links{display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin-top:22px;
  font-size:13px;
  font-weight:600}
.profile-links a,.reserved-link{padding:5px 12px;
  border:1px solid #dce4da;
  border-radius:8px;
  line-height:1.7}
.profile-links a{background:var(--surface)}
.profile-links a:hover{background:#edf3ed;
  border-color:#b9cebf;
  text-decoration:none}
.reserved-link{color:#828b80;
  font-weight:400;
  border-style:dashed}
.portrait-slot{height:275px;
  width:220px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 14px 30px rgba(31,48,39,.11);
  transition:transform .35s cubic-bezier(.22,1,.36,1),box-shadow .35s ease;
  align-self:start;
  margin-top:24px}
.portrait-slot img{display:block;
  width:100%;
  height:100%;
  object-fit:contain}
@media(hover:hover) and (prefers-reduced-motion:no-preference){.portrait-slot:hover{transform:scale(1.12);
  box-shadow:0 22px 42px rgba(31,48,39,.18);
  z-index:3}}
.profile-more{margin-top:10px;
  color:var(--muted);
  max-width:820px}
.section{position:relative;
  padding:38px 0;
  border-top:1px solid var(--line)}
.section-heading{display:flex;
  align-items:end;
  justify-content:space-between;
  gap:20px;
  margin-bottom:25px}
.section-note{font-size:12px;
  color:var(--muted);
  margin-bottom:3px;
  white-space:nowrap}
.research-card{display:grid;
  grid-template-columns:290px minmax(0,1fr);
  gap:28px;
  padding:24px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:var(--shadow-soft);
  position:relative;
  isolation:isolate;
  transition:transform .35s cubic-bezier(.22,1,.36,1),border-color .25s ease,box-shadow .35s ease;
  margin-bottom:16px;
  align-items:start}
.research-card:last-child{margin-bottom:0}
.research-card:focus-within{border-color:#b9cebf}
.research-visual{position:relative;
  border-radius:12px;
  overflow:hidden;
  background:#edf1e8;
  aspect-ratio:1.3}
.research-visual>a{display:flex;
  height:100%;
  width:100%;
  align-items:center;
  justify-content:center}
.research-visual img{width:100%;
  height:100%;
  object-fit:contain;
  transition:transform .65s cubic-bezier(.22,1,.36,1)}
.research-visual .robot-photo{object-fit:cover}
.diagram-visual{background:#eef1e9}
.diagram-visual > a {
  padding: 6px 6px 36px;
}
.visual-caption{position:absolute;
  left:0;
  bottom:0;
  right:0;
  padding:7px 10px;
  background:rgba(255,254,251,.96);
  border-top:1px solid var(--line);
  font-size:11px;
  letter-spacing:.025em;
  color:#526258;
  pointer-events:none}
.research-topline{display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px}
.research-category{font-size:11px;
  font-weight:650;
  color:var(--muted);
  letter-spacing:.045em}
.status{display:inline-block;
  padding:3px 9px;
  border:1px solid transparent;
  border-radius:8px;
  font-size:11px;
  font-weight:650;
  white-space:nowrap;
  line-height:1.6}
.status-review{color:#126b55;
  background:#edf5ef;
  border-color:#d8e8dc}
.status-ongoing{color:#86601f;
  background:#fbf4e5;
  border-color:#eee2c5}
.research-copy h3{font-size:19px;
  line-height:1.45;
  letter-spacing:-.015em;
  margin-bottom:10px}
.research-copy h3 a{color:var(--ink)}
.research-copy h3 a:hover{color:var(--green)}
.research-copy>p{font-size:14px;
  color:var(--muted);
  line-height:1.8}
.research-copy .research-evidence{font-size:12px;
  margin-top:9px;
  color:#697469}
#vla-moe .research-metrics{display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;
  margin:14px 0 12px;
  border:1px solid #dce6d8;
  border-radius:9px;
  background:#f1f5ed}
#vla-moe .research-metrics>span{display:grid;
  gap:3px;
  padding:10px 12px;
  border-right:1px solid #dce6d8}
#vla-moe .research-metrics>span:last-child{border-right:0}
#vla-moe .research-metrics strong{color:var(--green);
  font-size:18px;
  font-weight:650;
  line-height:1.4;
  font-variant-numeric:tabular-nums}
#vla-moe .research-metrics small{color:var(--muted);
  font-size:10px;
  line-height:1.7}
@media(max-width:380px){#vla-moe .research-metrics>span{padding:9px 8px}
#vla-moe .research-metrics strong{font-size:16px}}
.research-links{display:flex;
  gap:16px;
  align-items:center;
  flex-wrap:wrap;
  margin-top:15px;
  font-size:13px;
  font-weight:600}
.research-links .link-primary{padding:6px 12px;
  border:1px solid var(--green);
  border-radius:8px;
  background:var(--green);
  color:white;
  line-height:1.6;
  box-shadow:0 1px 2px rgba(18,107,85,.12)}
.research-links .link-primary:hover{background:#0c5947;
  border-color:#0c5947;
  text-decoration:none}
.link-note{font-size:11px;
  font-weight:400;
  color:var(--muted)}
.research-demo{font-size:12px;
  margin-top:12px}
.research-demo video{width:100%;
  max-height:350px;
  margin-top:12px;
  border-radius:8px;
  background:#132520}
.research-demo p{margin:8px 0;
  color:var(--muted);
  font-size:12px}
.updates-list{list-style:none;
  margin:0;
  padding:0}
.updates-list li{display:grid;
  grid-template-columns:110px minmax(0,1fr);
  gap:22px;
  padding:12px 0;
  border-bottom:1px solid var(--line);
  font-size:14px}
.updates-list li:last-child{border-bottom:0}
.updates-list time{font-variant-numeric:tabular-nums;
  font-size:13px;
  font-weight:600;
  color:var(--muted);
  padding-top:2px}
.updates-list a{color:var(--ink);
  font-weight:600}
.updates-list span{color:var(--muted);
  margin-left:7px;
  font-size:13px}
.projects-grid{display:grid;
  grid-template-columns:1fr 1fr;
  gap:24px}
.project-card{display:grid;
  grid-template-columns:72px minmax(0,1fr);
  gap:18px;
  align-items:start;
  padding:22px;
  background:#f0f3ed;
  border:1px solid var(--line);
  border-radius:14px;
  position:relative;
  isolation:isolate;
  transition:transform .35s cubic-bezier(.22,1,.36,1),border-color .25s ease,box-shadow .35s ease}
.research-card::before,.project-card::before{content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  z-index:-1;
  pointer-events:none;
  background:radial-gradient(380px circle at var(--spot-x,50%) var(--spot-y,50%),rgba(87,148,106,.12),transparent 72%);
  opacity:0;
  transition:opacity .35s ease}
.project-card p{font-size:13.5px;
  line-height:1.8;
  color:var(--muted);
  margin-top:9px}
.project-mark{background:#e0ebe1;
  color:#12674e;
  border-radius:12px;
  padding:12px 8px;
  font-size:21px;
  font-weight:650;
  line-height:1.3;
  text-align:center}
.project-mark span{display:block;
  font-size:12px;
  margin-top:5px;
  font-weight:400}
.agriculture-mark{background:#e9e3ca;
  color:#726023}
.project-card .research-links{gap:14px}
.background-grid{display:grid;
  grid-template-columns:1fr 1.1fr 1.15fr;
  gap:32px}
.background-block{border-left:2px solid #cadbcd;
  padding-left:18px;
  font-size:13.5px;
  color:var(--muted)}
.background-block h3{color:var(--ink);
  font-size:15px;
  margin-bottom:14px}
.background-block h4{color:var(--ink);
  margin-top:4px}
.background-block p{margin:7px 0}
.background-block .background-date{font-size:11px;
  color:var(--green)}
.plain-list{margin:0;
  padding-left:18px}
.plain-list li{margin-bottom:10px}
.teaching-title{color:var(--ink);
  font-weight:600}
.tool-line{font-size:12px;
  padding-top:12px;
  border-top:1px solid var(--line);
  line-height:1.9}
.awards-details{font-size:12px;
  margin-top:13px}
.awards-gallery{display:grid;
  gap:12px;
  margin-top:16px}
.awards-gallery img{width:100%;
  max-height:240px;
  object-fit:contain;
  border:1px solid var(--line);
  border-radius:8px;
  background:white}
.contact-section{padding:36px 28px;
  margin:18px 0 0;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px;
  background:#edf3ed;
  border:1px solid #dce6da;
  border-radius:var(--radius)}
.contact-section h2{font-size:26px}
.contact-section p:not(.eyebrow){margin-top:10px;
  color:var(--muted);
  font-size:13px}
.contact-email{font-size:15px;
  font-weight:600;
  overflow-wrap:anywhere;
  background:var(--surface);
  padding:10px 16px;
  border:1px solid #cddccc;
  border-radius:9px}
.contact-email:hover{background:#fff;
  border-color:#a7c3b0;
  text-decoration:none}
.contact-email span{margin-left:10px}
.profile-links a,.research-links .link-primary,.contact-email,.lang-switch button{position:relative;
  overflow:hidden;
  transition:transform .25s cubic-bezier(.22,1,.36,1),color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .25s ease}
.research-links .link-primary::after{content:"";
  position:absolute;
  inset:-40% auto;
  left:-70%;
  width:45%;
  pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent);
  transform:skewX(-20deg)}
.profile-links a:active,.research-links .link-primary:active,.contact-email:active,.lang-switch button:active{transform:scale(.97)}
.site-footer{display:flex;
  gap:24px;
  justify-content:space-between;
  padding:24px 0 30px;
  color:var(--muted);
  font-size:12px}
.muted{color:var(--muted)}

/* Public study overview reuses the homepage's typography and spacing. */
.topic-hero{padding:48px 0 35px;
  border-bottom:1px solid var(--line)}
.topic-hero h1{font-size:clamp(29px,4vw,43px);
  display:block;
  line-height:1.4;
  max-width:900px;
  margin:14px 0}
.topic-subtitle{color:var(--muted);
  font-size:15px;
  max-width:850px}
.topic-hero .research-links{font-size:14px;
  margin-top:24px}
.topic-layout{display:grid;
  grid-template-columns:minmax(0,1fr) 360px;
  gap:38px;
  align-items:center;
  padding:35px 0}
.topic-layout h2{font-size:26px;
  margin-bottom:15px}
.topic-layout p{color:var(--muted);
  margin:10px 0}
.topic-layout img{border-radius:12px;
  border:1px solid var(--line)}
.topic-grid{display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:24px;
  margin-bottom:32px}
.topic-block{border-top:2px solid #abc2b1;
  padding:20px 0}
.topic-block h3{font-size:17px;
  margin-bottom:10px}
.topic-block p{font-size:14px;
  color:var(--muted)}
.methods{display:flex;
  flex-wrap:wrap;
  gap:9px;
  margin:15px 0}
.methods span{font-size:12px;
  background:#e6eee5;
  color:var(--green);
  border-radius:6px;
  padding:4px 11px}
.topic-findings{padding:26px 30px;
  background:#f0f3ed;
  border:1px solid var(--line);
  border-radius:14px;
  margin-bottom:36px}
.topic-findings h2{font-size:25px;
  margin-bottom:14px}
.topic-findings li{font-size:14px;
  color:var(--muted);
  margin:10px 0}
.topic-findings ul{margin:0;
  padding-left:20px}

@media(min-width:1400px){.page-shell{max-width:1160px}
.site-header{max-width:1224px}
.research-card{grid-template-columns:310px minmax(0,1fr)}
}

@media(max-width:1000px){.site-header{gap:20px}
.site-nav{gap:2px}
.research-card{grid-template-columns:240px minmax(0,1fr);
  gap:23px}
.research-topline{flex-wrap:wrap}
.section-note{white-space:normal;
  text-align:right}
.hero{gap:25px}
.research-statement{font-size:18px}
.background-grid{gap:22px}
.project-card{grid-template-columns:55px minmax(0,1fr);
  padding:18px;
  gap:13px}
.project-mark{font-size:17px}
.topic-layout{grid-template-columns:minmax(0,1fr) 290px}
}

@media(max-width:760px){html{scroll-padding-top:83px}
.page-shell{padding:0 22px}
.site-header{padding:12px 22px;
  gap:16px;
  min-height:64px;
  flex-wrap:wrap}
.brand{font-size:12px}
.header-controls{margin-left:auto}
.site-nav{order:3;
  width:100%;
  gap:15px;
  margin-left:0;
  flex-wrap:wrap}
.js .site-nav{display:none}
.js .menu-toggle{display:block}
.js .site-header.menu-open .site-nav{display:flex;
  flex-direction:column;
  gap:0;
  padding:9px 0 3px;
  animation:menu-arrive .25s cubic-bezier(.22,1,.36,1) both}
.site-nav a{padding:7px 0}
.hero{grid-template-columns:minmax(0,1fr) 120px;
  gap:20px;
  padding:36px 0 33px}
.portrait-slot{width:120px;
  height:150px;
  margin-top:15px;
  border-radius:12px}
h1{font-size:40px;
  gap:12px;
  flex-wrap:wrap}
.name-alternate{font-size:16px}
.identity-line{font-size:12px;
  line-height:1.8}
.hero-copy{display:contents}
.hero .eyebrow,.hero h1,.hero .identity-line{grid-column:1}
.hero .eyebrow{margin-bottom:-10px;
  font-size:9px}
.hero h1{grid-row:2}
.hero .identity-line{grid-row:3;
  margin:0}
.hero .portrait-slot{grid-column:2;
  grid-row:1/4;
  align-self:center;
  margin:0}
.research-statement,.profile-text,.profile-more,.profile-links{grid-column:1/-1;
  margin-top:0}
.research-statement{font-size:18px;
  line-height:1.7}
.profile-text{font-size:13px}
.profile-more{font-size:13px;
  margin-top:9px}
.profile-links{font-size:12px;
  gap:8px}
.profile-links a,.reserved-link{padding:5px 10px}
.section{padding:29px 0}
.section-heading{align-items:start;
  flex-direction:column;
  gap:10px;
  margin-bottom:20px}
.section-note{text-align:left;
  font-size:11px}
.section-heading .eyebrow{margin-bottom:7px}
.research-card{grid-template-columns:1fr;
  padding:18px;
  gap:18px}
.research-visual{aspect-ratio:1.8;
  max-height:260px}
.research-visual .robot-photo{object-position:center 55%}
.diagram-visual img{width:auto;
  max-width:100%;
  height:100%;
  padding:0}
.research-topline{gap:9px}
.research-copy h3{font-size:18px}
.research-copy>p{font-size:13px}
.research-copy .research-evidence{font-size:12px}
.research-links{gap:16px;
  line-height:1.8}
.updates-list li{grid-template-columns:1fr;
  gap:4px;
  padding:12px 0}
.updates-list p span{display:block;
  margin:4px 0 0}
.projects-grid{grid-template-columns:1fr;
  gap:14px}
.project-card{grid-template-columns:65px minmax(0,1fr);
  padding:20px}
.background-grid{grid-template-columns:1fr;
  gap:26px}
.background-block{padding-left:17px}
.awards-gallery{grid-template-columns:repeat(3,1fr)}
.awards-gallery img{max-height:150px}
.contact-section{flex-direction:column;
  align-items:start;
  padding:26px 21px;
  margin-top:12px;
  gap:18px}
.contact-email{font-size:13px}
.site-footer{gap:12px;
  flex-wrap:wrap;
  font-size:10px}
.topic-hero{padding:32px 0 25px}
.topic-layout{grid-template-columns:1fr;
  gap:20px;
  padding:28px 0}
.topic-layout img{max-width:420px;
  width:100%;
  margin:auto}
.topic-grid{grid-template-columns:1fr;
  gap:0}
.topic-block{padding:18px 0}
.topic-findings{padding:22px}
.topic-findings h2{font-size:23px}
}

@media(max-width:380px){.page-shell{padding:0 16px}
.site-header{padding:11px 16px}
.hero{grid-template-columns:minmax(0,1fr) 95px;
  gap:16px}
.portrait-slot{width:95px;
  height:119px}
.name-alternate{font-size:14px}
.research-card{padding:14px}
.research-links{gap:12px}
.research-category{font-size:9px}
.status{font-size:10px}
.profile-links{gap:7px}
.profile-links a,.reserved-link{padding:5px 9px}
.contact-email{font-size:12px}
}

.cv-page{padding:34px 0 28px}
.cv-heading{margin-bottom:17px}
.cv-heading h1{display:block;
  font-size:clamp(30px,4vw,42px);
  line-height:1.25}
.cv-heading p:last-child{margin-top:8px;
  color:var(--muted)}
.cv-password-gate{max-width:620px;
  margin:28px auto;
  padding:24px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,254,251,.86);
  box-shadow:var(--shadow-soft)}
.cv-password-gate h2{margin:0 0 8px;
  font-size:20px}
.cv-password-gate>p{margin:0 0 18px;
  color:var(--muted);
  font-size:14px}
.cv-password-gate label{display:block;
  margin-bottom:7px;
  font-size:13px;
  font-weight:650}
.cv-password-row{display:flex;
  flex-wrap:wrap;
  gap:9px}
.cv-password-row input{flex:1 1 220px;
  min-width:0;
  padding:9px 12px;
  border:1px solid var(--line);
  border-radius:9px;
  background:var(--surface);
  color:var(--ink);
  font:inherit}
.cv-password-message{min-height:21px;
  margin:9px 0 0;
  color:var(--muted);
  font-size:12px}
.cv-password-message[data-error="true"]{color:#9d2633}
.cv-actions{display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:10px;
  margin:18px 0 16px}
.cv-button{display:inline-flex;
  align-items:center;
  gap:7px;
  padding:8px 14px;
  border:1px solid var(--line);
  border-radius:9px;
  background:var(--surface);
  color:var(--ink);
  font-size:13px;
  font-weight:650;
  line-height:1.6}
.cv-button:hover{text-decoration:none;
  border-color:#b9cebf;
  background:#edf3ed}
.cv-button-primary{border-color:var(--green);
  background:var(--green);
  color:#fff}
.cv-button-primary:hover{border-color:#0c5947;
  background:#0c5947;
  color:#fff}
.cv-preview{display:grid;
  gap:22px;
  padding:18px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,254,251,.72);
  box-shadow:var(--shadow-soft)}
.cv-preview-page{width:100%;
  max-width:760px;
  margin:0 auto;
  padding:14px 14px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fff;
  box-shadow:0 5px 18px rgba(33,54,44,.045)}
.cv-preview-page figcaption{margin-bottom:10px;
  color:var(--muted);
  font-size:12px;
  font-weight:650}
.cv-preview-page img{display:block;
  width:100%;
  height:auto}
.cv-note{margin-top:11px;
  color:var(--muted);
  font-size:12px}
.cv-home-link{padding:6px 11px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--surface);
  color:var(--green);
  font-size:13px;
  font-weight:600}
.cv-home-link:hover{text-decoration:none;
  background:#edf3ed}
@media(max-width:760px){.cv-page{padding:25px 0}
.cv-password-gate{margin:22px 0;padding:18px}
.cv-preview{gap:14px;
  padding:9px;
  border-radius:12px}
.cv-preview-page{padding:8px 8px 5px;
  border-radius:9px}
.cv-preview-page figcaption{font-size:11px}
.cv-heading h1{font-size:32px}
.cv-actions{gap:8px}
.cv-button{font-size:12px;
  padding:7px 10px}
}

@keyframes ambient-breathe{from{opacity:.45}to{opacity:1}}
@keyframes brand-pulse{0%,65%,100%{transform:scale(.8);opacity:0}12%{opacity:.8}45%{transform:scale(1.6);opacity:0}}
@keyframes button-sheen{from{left:-70%}to{left:140%}}
@keyframes menu-arrive{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.motion-paused body::before,.motion-paused .brand-dot::after{animation-play-state:paused}

@media(hover:hover) and (pointer:fine){.research-card:hover{border-color:#b3cbb9;
  transform:translateY(-4px);
  box-shadow:0 4px 12px rgba(33,54,44,.035),0 18px 38px rgba(33,54,44,.08)}
.project-card:hover{transform:translateY(-3px);
  border-color:#b9cebf;
  box-shadow:0 12px 25px rgba(33,54,44,.06)}
.research-card:hover::before,.project-card:hover::before{opacity:1}
.research-card:hover .robot-photo{transform:scale(1.045)}
.profile-links a:hover,.research-links .link-primary:hover,.contact-email:hover{transform:translateY(-2px);
  box-shadow:0 5px 12px rgba(33,54,44,.09)}
.profile-links a:active,.research-links .link-primary:active,.contact-email:active{transform:scale(.97)}
.research-links .link-primary:hover::after{animation:button-sheen .65s ease-out}
}
.research-links .link-primary:focus-visible::after{animation:button-sheen .65s ease-out}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}
*,*::before,*::after{animation:none !important;
  transition:none !important}
body::before{opacity:.6}
.brand-dot::after{display:none}
.research-card:hover,.project-card:hover,.research-card:hover .robot-photo,.profile-links a:hover,.research-links .link-primary:hover,.contact-email:hover,.profile-links a:active,.research-links .link-primary:active,.contact-email:active,.lang-switch button:active{transform:none}
}

