:root{--bg: #040705;--window: #080c09;--surface: #0c120e;--line: #18241c;--line-strong: #263a2c;--text: #dbe6de;--text-soft: #b9c7bd;--muted: #7f9185;--faint: #4f6255;--accent: #a8f5c0;--accent-dim: #a8f5c01a;--glow: 0 0 12px #a8f5c038;--glow-text: 0 0 14px #a8f5c047;--glow-soft: 0 0 24px #a8f5c024;--link: #8ed8ea;--date: #d6bb82;--mono: ui-monospace, "JetBrains Mono", "Fira Code", SFMono-Regular, Menlo, Consolas, monospace;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--gutter: 56px;color:var(--text);background:var(--bg);font-family:var(--mono);font-synthesis:none;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}img{max-width:100%}html{scroll-behavior:smooth;scroll-padding-top:104px;-webkit-text-size-adjust:100%}body{margin:0;min-width:320px;color:var(--text);background:radial-gradient(900px 520px at 50% -180px,#1c7a4533,transparent 70%),var(--bg);overflow-wrap:break-word}a{color:var(--link);text-decoration:none;border-bottom:1px solid #8ed8ea40;transition:color .15s,border-color .15s}a:hover,a:focus-visible{color:var(--accent);border-bottom-color:currentColor}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:#2c6a42;color:#fff}.window{width:min(100% - 48px,920px);margin:40px auto;border:1px solid var(--line-strong);border-radius:12px;overflow:clip;background:var(--window);box-shadow:0 0 0 1px #a8ffc00d,0 40px 120px #000c}header{position:sticky;top:0;z-index:10;background:#060a07f2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.titlebar{display:flex;align-items:center;gap:8px;height:40px;padding:0 18px}.dot{width:11px;height:11px;border-radius:50%;opacity:.85}.red{background:#f0857b}.amber{background:#f2c76f}.green{background:#8fe3a6}.path{flex:1;margin-left:8px;color:var(--muted);font-size:12px;text-align:center}.status{color:var(--accent);font-size:11px}.status:before{content:"";display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor;vertical-align:1px}nav{display:flex;justify-content:center;flex-wrap:wrap;gap:4px 18px;padding:0 18px 10px}nav a{padding:2px 0;border:0;color:var(--muted);font-size:12px}nav a.active,nav a:hover{color:var(--accent);text-shadow:var(--glow-text)}nav a.active:before{content:"> "}main{padding:56px var(--gutter) 48px}.section{margin-top:88px;opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s cubic-bezier(.22,.7,.2,1)}.section:first-child{margin-top:0}.section.is-visible,.section.intro{opacity:1;transform:none}.prompt{margin:0;color:var(--accent);font-size:12.5px;text-shadow:var(--glow-text)}.prompt b{color:var(--link);font-weight:400}.prompt>span{color:var(--text-soft)}.prompt small{margin-left:6px;color:var(--faint);font-size:11.5px}main>.prompt{margin-top:72px}h2{display:flex;align-items:baseline;gap:14px;margin:14px 0 28px;color:#fff;font:600 27px/1.2 var(--serif);letter-spacing:-.01em}h2 span{color:var(--accent);font:12px var(--mono);letter-spacing:.04em;opacity:.8;text-shadow:var(--glow-text)}.manual{display:flex;justify-content:space-between;gap:15px;margin:14px 0 40px;color:var(--faint);font-size:11px;letter-spacing:.14em}.hero{display:grid;grid-template-columns:208px 1fr;gap:44px;align-items:center}.portrait-frame{position:relative;isolation:isolate;justify-self:center;width:100%;max-width:208px}.portrait-frame:after{content:"";position:absolute;top:10px;right:-10px;bottom:-10px;left:10px;border:1px solid var(--line-strong);border-radius:4px;z-index:-1}.portrait-frame img{display:block;width:100%;height:auto;aspect-ratio:150/172;object-fit:cover;object-position:50% 20%;border:1px solid #a8f5c029;border-radius:4px;box-shadow:var(--glow-soft);filter:saturate(.9) contrast(1.04)}.eyebrow{margin-bottom:10px;color:var(--date);font-size:11px;letter-spacing:.16em}h1{margin:0;color:#fff;font:600 clamp(34px,5.5vw,48px)/1.05 var(--serif);letter-spacing:-.02em;text-shadow:0 0 30px #a8f5c02e}.role{min-height:1.7em;margin-top:10px;color:var(--accent);font-size:14px;text-shadow:var(--glow-text)}.role:after,.cursor{content:"";display:inline-block;width:.55em;height:1.05em;margin-left:4px;background:var(--accent);box-shadow:0 0 10px #75f5a180;vertical-align:text-bottom;animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.affiliation{margin:18px 0 24px;color:var(--text-soft);font:16px/1.65 var(--serif)}.affiliation b{color:#fff;font-weight:600}.button{display:inline-block;padding:8px 16px;border:1px solid #a8f5c055;border-radius:6px;color:var(--accent);background:var(--accent-dim);font-size:13px;text-shadow:var(--glow-text);box-shadow:var(--glow);transition:background .15s,border-color .15s,box-shadow .2s}.button:hover,.button:focus-visible{border-color:var(--accent);background:#a8f5c02e;box-shadow:0 0 22px #a8f5c052}.button:before{content:"↓ "}.bio{max-width:68ch;margin:48px 0 0;color:var(--text);font:18px/1.75 var(--serif)}.abstract{max-width:68ch;margin:0 0 28px;color:var(--text-soft);font:17px/1.7 var(--serif)}.abstract b{color:#fff;font-variant:small-caps;letter-spacing:.05em}.research-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.research-card{padding:22px 24px;border:1px solid var(--line);border-radius:8px;background:var(--surface);transition:border-color .2s}.research-card:hover{border-color:var(--line-strong)}.card-index{margin-bottom:12px;color:var(--faint);font-size:11px;letter-spacing:.12em}.research-card h3{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin:0;color:#fff;font:600 18px/1.35 var(--serif)}.research-card p{margin:10px 0 0;color:var(--text-soft);font:15.5px/1.65 var(--serif)}.research-card h3 em,.entry-meta em{flex:none;padding:1px 8px;border-radius:99px;color:var(--accent);background:var(--accent-dim);font:400 10.5px/1.7 var(--mono);font-style:normal;letter-spacing:.04em}.entry-meta em{margin-left:8px;color:var(--muted);background:#ffffff0a}.keywords,.skills,.contact-links{display:flex;flex-wrap:wrap;gap:8px}.keywords{margin-top:24px}.keywords span,.skills span{padding:3px 10px;border-radius:4px;color:var(--text-soft);background:#ffffff08;font-size:12px}.keywords span:before{content:"#";color:var(--faint)}.bib{margin:0;padding:20px 24px;border-radius:8px;color:var(--muted);background:var(--surface);font:13px/1.8 var(--mono);white-space:pre-wrap}.entry{display:grid;grid-template-columns:132px 1fr;gap:28px;padding:18px 0;border-top:1px solid var(--line)}.entry:first-of-type{border-top:0;padding-top:0}.entry-date{padding-top:4px;color:var(--date);font-size:12px;line-height:1.6}.entry-date i{margin-right:6px;color:var(--faint);font-style:normal}.entry h3{margin:0;color:#fff;font:600 18px/1.4 var(--serif)}.entry-meta{margin-top:4px;color:var(--muted);font-size:12.5px;line-height:1.6}.entry-description{margin:6px 0 0;color:var(--text-soft);font:16px/1.65 var(--serif)}.entry-date+div>.entry-description:first-child{margin-top:2px}.entry-description .skills{margin-top:0}.news-list p{display:grid;grid-template-columns:132px 1fr;gap:28px;margin:0;padding:12px 0;border-top:1px solid var(--line);color:var(--text-soft);font:16px/1.65 var(--serif)}.news-list p:first-child{border-top:0;padding-top:0}.news-list span{color:var(--date);font:12px/2 var(--mono)}.section#contact .affiliation{margin:0 0 20px}.contact-links a{padding:7px 14px;border:1px solid var(--line-strong);border-radius:6px;color:var(--link);font-size:13px}.contact-links a:hover,.contact-links a:focus-visible{border-color:var(--accent);color:var(--accent)}.command-box{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:center;margin-top:36px;padding:16px 20px;border-radius:8px;background:var(--surface)}.command-box .prompt{white-space:nowrap}.command-box input{min-width:0;padding:4px 0;border:0;outline:0;color:#fff;background:transparent;font:13px var(--mono);caret-color:var(--accent)}.command-box input::placeholder{color:var(--faint)}.command-box:focus-within{box-shadow:inset 0 0 0 1px var(--line-strong)}.command-response{grid-column:2;min-height:1.6em;color:var(--muted);font-size:12.5px}footer{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:18px var(--gutter);border-top:1px solid var(--line);color:var(--faint);font-size:11.5px}@media (max-width:760px){:root{--gutter: 28px }.window{width:100%;margin:0;border-width:0 0 1px;border-radius:0}main{padding-top:40px}.section{margin-top:72px}.hero{grid-template-columns:168px 1fr;gap:28px}.research-grid{grid-template-columns:1fr}.entry,.news-list p{grid-template-columns:100px 1fr;gap:18px}}@media (max-width:560px){:root{--gutter: 18px }html{scroll-padding-top:96px}.window{min-height:100dvh}.titlebar{padding:0 max(14px,env(safe-area-inset-right)) 0 max(14px,env(safe-area-inset-left))}main{padding-left:max(var(--gutter),env(safe-area-inset-left));padding-right:max(var(--gutter),env(safe-area-inset-right))}.command-box input{font-size:16px}.contact-links a{padding:6px 0}.path{text-align:left;font-size:11.5px}nav{justify-content:flex-start;flex-wrap:nowrap;gap:18px;padding:0 14px 10px;overflow-x:auto;scrollbar-width:none}nav::-webkit-scrollbar{display:none}nav a{flex:0 0 auto;padding:8px 0}main{padding-top:28px}.section{margin-top:60px}.manual{margin-bottom:28px;font-size:10px}.manual span:nth-child(2){display:none}.hero{grid-template-columns:1fr;gap:26px}.portrait-frame{width:176px;max-width:176px;margin-inline:auto}.portrait-frame:after{top:7px;right:-7px;bottom:-7px;left:7px}.role{font-size:13px}.affiliation{font-size:15.5px}.bio{margin-top:32px;font-size:17px;line-height:1.7}h2{margin-bottom:22px;font-size:24px}.prompt{font-size:12px;line-height:1.6}.research-card{padding:18px}.research-card h3{flex-direction:column;gap:6px}.entry,.news-list p{grid-template-columns:1fr;gap:4px}.entry-date{padding-top:0;font-size:11.5px}.entry h3{font-size:17px}.command-box{grid-template-columns:1fr;padding:14px 16px}.command-box label{display:none}.command-response{grid-column:1}footer{flex-direction:column;gap:4px}}@media (max-width:360px){.status{display:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.section{opacity:1;transform:none;transition:none}.role:after,.cursor{animation:none}}
