:root{--bg: #0f0f10;--bg-2: #131314;--surface: #161617;--panel: #1b1b1d;--line: rgba(226, 221, 215, .085);--line-mid: rgba(226, 221, 215, .17);--text: #f0efed;--text-mid: #b4b1ac;--text-dim: #83807c;--text-faint:#56534f;--accent: #d98b6a;--accent-hi: #e9a98a;--accent-soft: rgba(217, 139, 106, .4);--accent-ink: rgba(217, 139, 106, .08);--amber: #d2a24c;--red: #d4615d;--portrait-line: rgba(150, 178, 180, .075);--portrait-sep: rgba(106, 170, 162, .42);--portrait-dot: rgba(126, 194, 184, .55);--sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 36px;--s7: 56px;--s8: 84px;--s9: 120px;--nav-h: 60px;--max: 1080px;--measure: 72ch;--gutter: clamp(22px, 4.5vw, 56px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:15.5px;font-weight:300;line-height:1.7;letter-spacing:-.001em;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--sans);font-weight:500;line-height:1.16;letter-spacing:-.021em;color:var(--text)}h1{font-size:clamp(34px,4.8vw,54px);font-weight:600;letter-spacing:-.033em}h2{font-size:clamp(21px,2.4vw,27px);font-weight:500;letter-spacing:-.024em}h3{font-size:17px;font-weight:500;letter-spacing:-.014em}p{max-width:var(--measure);color:var(--text-mid)}strong{color:var(--text);font-weight:500}a{color:var(--accent);text-decoration:none;transition:color .16s ease}a:hover{color:var(--accent-hi)}.label{display:inline-flex;align-items:center;gap:var(--s2);font-family:var(--mono);font-size:11.5px;font-weight:400;letter-spacing:.04em;color:var(--text-dim)}.label--accent{color:var(--accent)}.label-rule{display:flex;align-items:center;gap:var(--s4);width:100%}.label-rule:after{content:"";flex:1;height:1px;background:var(--line)}.caption{font-family:var(--mono);font-size:11.5px;line-height:1.7;color:var(--text-faint);letter-spacing:.02em}.container{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}main{position:relative;z-index:2}section{position:relative}.rule{height:1px;background:var(--line);border:0}.panel{background:var(--surface);border:1px solid var(--line);padding:var(--s6);transition:border-color .18s ease,background .18s ease}a.panel:hover,.panel--link:hover{border-color:var(--accent-soft);background:var(--panel)}.tag{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.03em;padding:2px 8px;border:1px solid var(--line-mid);color:var(--text-dim);white-space:nowrap}.tag--accent{border-color:var(--accent-soft);color:var(--accent)}.tag--amber{border-color:#d2a24c5c;color:var(--amber)}.btn{display:inline-flex;align-items:center;gap:var(--s2);font-family:var(--sans);font-size:13.5px;font-weight:450;letter-spacing:-.005em;padding:10px 18px;border:1px solid var(--line-mid);background:transparent;color:var(--text-mid);cursor:pointer;transition:color .16s,border-color .16s,background .16s}.btn:hover{color:var(--text);border-color:var(--accent-soft)}.btn--accent{color:var(--accent);border-color:var(--accent-soft)}.btn--accent:hover{color:var(--bg);background:var(--accent);border-color:var(--accent)}.kv{display:grid;grid-template-columns:minmax(0,160px) minmax(0,1fr);gap:var(--s2) var(--s5)}.kv dt{font-family:var(--mono);font-size:12px;color:var(--text-dim);padding-top:2px}.kv dd{color:var(--text)}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:#1a2128;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#26303a}:focus-visible{outline:1px solid var(--accent-soft);outline-offset:2px}::selection{background:#6fcdbd33;color:var(--text)}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.portrait-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.phase-portrait{display:block;width:100%;height:100%}@media (max-width: 1040px){.portrait-bg{opacity:.5}}@media (max-width: 760px){.portrait-bg{opacity:.28}}.phase-portrait__saddle{position:absolute;width:20px;height:20px;margin:-10px 0 0 -10px;padding:0;border:0;background:transparent;pointer-events:auto;cursor:default}.phase-portrait__saddle:focus{outline:none}.page-header{padding-block:var(--s8) var(--s6)}.page-sub{color:var(--text-mid);max-width:66ch}.section-label{display:flex;align-items:center;gap:var(--s4);font-family:var(--mono);font-size:11.5px;letter-spacing:.07em;color:var(--accent)}.section-label:after{content:"";flex:1;height:1px;background:var(--line);max-width:120px}.tag-accent{border-color:var(--accent-soft);color:var(--accent)}.tag-warn{border-color:#d2a24c5c;color:var(--amber)}.btn-accent{color:var(--accent);border-color:var(--accent-soft)}.btn-accent:hover{color:var(--bg);background:var(--accent);border-color:var(--accent)}.mono{font-family:var(--mono)}.nav{position:sticky;top:0;z-index:40;height:var(--nav-h);background:#07090bc7;backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);border-bottom:1px solid transparent;transition:border-color .2s ease,background .2s ease}.nav--scrolled{border-bottom-color:var(--line);background:#07090bed}.nav__inner{height:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--s5)}.nav__wordmark{font-family:var(--mono);font-size:14px;font-weight:400;letter-spacing:.01em;color:var(--text)}.nav__wordmark:hover{color:var(--text)}.nav__tld{color:var(--text-faint)}.nav__links{display:flex;align-items:center;gap:var(--s1)}.nav__link{position:relative;font-family:var(--sans);font-size:14px;font-weight:400;letter-spacing:-.008em;color:var(--text-dim);padding:6px 13px;transition:color .18s}.nav__link:hover{color:var(--text-mid)}.nav__link.active{color:var(--text)}.nav__link.active:after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:1px;background:var(--accent-soft)}.nav__burger{display:none;flex-direction:column;justify-content:center;gap:4px;width:34px;height:34px;padding:0 7px;background:none;border:1px solid var(--line);cursor:pointer}.nav__burger span{display:block;height:1px;background:var(--text-mid);transition:transform .2s,opacity .2s}.nav__burger.open span:nth-child(1){transform:translateY(5px) rotate(45deg)}.nav__burger.open span:nth-child(2){opacity:0}.nav__burger.open span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.nav__mobile{display:none;flex-direction:column;background:var(--bg-2);border-bottom:1px solid var(--line)}.nav__mobile.open{display:flex}.nav__mobile-link{font-size:13.5px;letter-spacing:.03em;color:var(--text-mid);padding:14px var(--gutter);border-top:1px solid var(--line)}.nav__mobile-link.active{color:var(--accent)}@media (max-width: 760px){.nav__links{display:none}.nav__burger{display:flex}}.footer{border-top:1px solid var(--line);background:var(--bg-2);position:relative;z-index:2}.footer__inner{display:flex;flex-wrap:wrap;gap:var(--s6);justify-content:space-between;align-items:flex-start;padding-block:var(--s7)}.footer__left{display:flex;flex-direction:column}.footer__nav,.footer__links{display:flex;flex-wrap:wrap;gap:var(--s4)}.footer__link{font-size:12px;letter-spacing:.03em;color:var(--text-dim)}.footer__link:hover{color:var(--accent)}.footer__bottom{display:flex;justify-content:space-between;padding-block:var(--s4);border-top:1px solid var(--line)}.hero{position:relative;border-bottom:1px solid var(--line)}.hero__inner{padding-block:clamp(64px,13vh,150px) clamp(56px,10vh,112px)}.hero__id{max-width:620px}.hero__text{min-width:0}.hero__photo{display:block;width:100%;aspect-ratio:1;object-fit:cover;border:1px solid var(--line-mid);filter:saturate(.9) contrast(1.02)}.hero__id--withphoto{max-width:920px}@media (min-width: 880px){.hero__id--withphoto{display:grid;grid-template-columns:clamp(180px,19vw,248px) minmax(0,1fr);gap:clamp(28px,3.5vw,52px);align-items:start}.hero__id--withphoto .hero__text{max-width:620px}}@media (max-width: 879px){.hero__photo{width:clamp(150px,42vw,220px);margin-bottom:var(--s5)}}.hero__name{margin:var(--s4) 0 var(--s5)}.hero__role{font-size:17px;font-weight:400;color:var(--accent);margin-bottom:var(--s3);letter-spacing:-.014em}.hero__org{font-family:var(--mono);font-size:12px;line-height:1.85;color:var(--text-dim);margin-bottom:var(--s6)}.hero__bio{font-size:16.5px;line-height:1.72;color:var(--text-mid);max-width:62ch;margin-bottom:var(--s7)}.hero__actions{display:flex;flex-wrap:wrap;gap:var(--s3)}.strip{padding-block:var(--s9)}.strip--tight{padding-block:var(--s8)}.strip__all{color:var(--text-dim)}.strip__all:hover{color:var(--accent)}.strip__grid{margin-top:var(--s7);display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1px;background:var(--line);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.work{border:0;display:flex;flex-direction:column;gap:var(--s4);padding:var(--s6);background:transparent;min-height:230px}.work:hover{background:#b7c9e708}.work__title{color:var(--text);font-size:17px;font-weight:500;letter-spacing:-.015em}.work__desc{font-size:14.5px;line-height:1.68;color:var(--text-dim);flex:1}.work__tags{display:flex;flex-wrap:wrap;gap:var(--s2)}.recent{list-style:none;margin-top:var(--s5)}.recent__item{display:grid;grid-template-columns:72px minmax(0,1fr);gap:var(--s4);padding:var(--s4) 0;border-top:1px solid var(--line)}.recent__item:last-child{border-bottom:1px solid var(--line)}.recent__year{font-family:var(--mono);font-size:12px;color:var(--text-faint);padding-top:6px}.recent__title{color:var(--text);font-size:16px;line-height:1.55;max-width:76ch;letter-spacing:-.012em}.recent__venue{font-family:var(--mono);font-size:12px;color:var(--text-dim);margin-top:var(--s2);display:flex;align-items:center;gap:var(--s3)}.recent__status{text-transform:uppercase}@media (max-width: 960px){.strip{padding-block:var(--s8)}}.news{list-style:none;margin-top:var(--s5)}.news__item{display:grid;grid-template-columns:96px minmax(0,1fr);gap:var(--s4);padding:var(--s3) 0;border-top:1px solid var(--line)}.news__item:last-child{border-bottom:1px solid var(--line)}.news__date{font-family:var(--mono);font-size:12px;color:var(--text-faint)}.news__text{color:var(--text-mid);font-size:14.5px}.page{padding-bottom:var(--s9)}.page-header{padding-block:var(--s8) var(--s7)}.page-title{margin:var(--s3) 0 var(--s4)}.page-sub{color:var(--text-mid);max-width:68ch;font-size:16px}.prose p+p{margin-top:var(--s4)}.prose{color:var(--text-mid)}.modules{list-style:none;border-top:1px solid var(--line)}.module{display:block;padding:var(--s6) 0;border-bottom:1px solid var(--line);color:inherit;transition:background .18s ease}.module:hover{background:#e2ddd706}.module__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4)}.module__title{color:var(--text);transition:color .18s}.module:hover .module__title{color:var(--accent)}.module__summary{margin-top:var(--s3);color:var(--text-mid);max-width:70ch}.module__foot{margin-top:var(--s5);display:flex;align-items:center;justify-content:space-between;gap:var(--s4);flex-wrap:wrap}.module__tags{display:flex;flex-wrap:wrap;gap:var(--s2)}.module__go{font-family:var(--mono);font-size:12px;color:var(--accent);white-space:nowrap}.muted,.article__back{color:var(--text-dim)}.article__back:hover{color:var(--accent)}.article__tags{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s5)}.article__tabs{display:flex;gap:var(--s1);border-bottom:1px solid var(--line);padding-bottom:0}.article__tab{position:relative;background:none;border:0;cursor:pointer;font-family:var(--sans);font-size:14px;color:var(--text-dim);padding:10px 16px;transition:color .16s}.article__tab:hover{color:var(--text-mid)}.article__tab.is-on{color:var(--text)}.article__tab.is-on:after{content:"";position:absolute;left:16px;right:16px;bottom:-1px;height:1px;background:var(--accent)}.article__stage{margin-top:var(--s5);border-bottom:1px solid var(--line)}.article__loading{display:grid;place-items:center;min-height:420px;color:var(--text-dim)}.article__body{padding-top:var(--s7)}.article__links{margin-top:var(--s7)}.article__links ul{list-style:none;margin-top:var(--s3);display:grid;gap:var(--s2)}.article__paper-title{font-size:19px;max-width:60ch}.article__paper-meta{font-family:var(--mono);font-size:12.5px;color:var(--text-dim);margin-top:var(--s3);display:flex;align-items:center;gap:var(--s3)}.article__abstract{margin-top:var(--s5);color:var(--text-mid)}.article__paper-links{margin-top:var(--s6);display:flex;gap:var(--s3);flex-wrap:wrap}.story-list{list-style:none;border-top:1px solid var(--line)}.story-item{width:100%;display:grid;grid-template-columns:110px minmax(0,1fr);gap:var(--s4);text-align:left;background:none;border:0;border-bottom:1px solid var(--line);padding:var(--s5) 0;cursor:pointer;color:inherit;font:inherit;transition:background .18s}.story-item:hover{background:#e2ddd706}.story-item__date{font-family:var(--mono);font-size:12px;color:var(--text-faint)}.story-item__title{display:block;color:var(--text);font-size:17px}.story-item__blurb{display:block;color:var(--text-dim);font-size:14px;margin-top:var(--s2)}.story{padding-top:var(--s8);max-width:68ch}.story__back{background:none;border:0;cursor:pointer;color:var(--text-dim);font:inherit;padding:0}.story__back:hover{color:var(--accent)}.story__title{margin-top:var(--s5);font-size:clamp(26px,3.4vw,38px)}.story__date{font-family:var(--mono);font-size:12px;color:var(--text-faint);margin-top:var(--s3)}.story__body{margin-top:var(--s7);color:var(--text-mid);font-size:16.5px;line-height:1.85}.story__body p+p{margin-top:var(--s5)}.pubs__source{margin-top:var(--s4)}.pubs__year{margin-top:var(--s7)}.pubs{list-style:none;margin-top:var(--s4)}.pub{padding:var(--s5) 0;border-top:1px solid var(--line)}.pub:last-child{border-bottom:1px solid var(--line)}.pub__title{color:var(--text);font-size:17px;max-width:74ch}.pub__authors{font-size:14px;color:var(--text-mid);margin-top:var(--s2)}.pub__meta{font-family:var(--mono);font-size:12.5px;color:var(--text-dim);margin-top:var(--s3);display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap}.pub__abstract{margin-top:var(--s4);color:var(--text-mid);font-size:14.5px;max-width:76ch}.pub__links{margin-top:var(--s5);display:flex;gap:var(--s2);flex-wrap:wrap}.cv-actions{display:flex;flex-wrap:wrap;gap:var(--s3);margin-top:var(--s6)}.cv-section{margin-top:var(--s8)}.cv-list{list-style:none;margin-top:var(--s5)}.cv-entry{display:grid;grid-template-columns:150px minmax(0,1fr);gap:var(--s5);padding:var(--s5) 0;border-top:1px solid var(--line)}.cv-entry:first-child{border-top:0}.cv-entry:last-child{border-bottom:1px solid var(--line)}.cv-entry__when{font-family:var(--mono);font-size:12px;color:var(--text-faint);padding-top:3px}.cv-entry__what{color:var(--text)}.cv-entry__where{font-family:var(--mono);font-size:12.5px;color:var(--text-dim);margin-top:var(--s2)}.cv-entry__note,.cv-entry__desc{margin-top:var(--s3);color:var(--text-mid);font-size:14.5px}.cv-entry__tags{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s4)}.cv-skills{margin-top:var(--s5);display:block}.cv-skill{display:grid;grid-template-columns:150px minmax(0,1fr);gap:var(--s5);padding:var(--s3) 0;border-top:1px solid var(--line)}.cv-skill:first-child{border-top:0}.cv-skill:last-child{border-bottom:1px solid var(--line)}@media (max-width: 680px){.cv-entry,.cv-skill{grid-template-columns:minmax(0,1fr);gap:var(--s2)}}@media print{@page{margin:18mm}body{background:#fff;color:#111}body:after,.nav,.footer,.cv-actions,.portrait-bg{display:none!important}.page-header{padding-block:0 var(--s5)}.cv-entry,.cv-skill{border-color:#ddd;break-inside:avoid}.cv-entry__when,.cv-entry__where{color:#555}.cv-entry__what,.page-title{color:#000}.cv-entry__note,.cv-entry__desc,.page-sub,.kv dd{color:#222}.label{color:#000!important}.tag{border-color:#bbb;color:#444}a{color:#000}}.contact__list{display:block}.contact__row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:var(--s5);padding:var(--s4) 0;border-top:1px solid var(--line)}.contact__row:last-child{border-bottom:1px solid var(--line)}@media (max-width: 680px){.contact__row{grid-template-columns:minmax(0,1fr);gap:var(--s1)}}.admin-gate{min-height:100vh;display:grid;place-items:center;padding:var(--s5)}.admin-gate__form{display:flex;flex-direction:column;gap:var(--s4);width:min(380px,100%);padding:var(--s6)}.admin-gate__title{font-size:26px;margin-top:calc(var(--s2) * -1)}.admin-gate__err{color:var(--red)}.admin-gate__back{color:var(--text-dim);align-self:flex-start}.admin{min-height:100vh}.admin__bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;padding:var(--s3) var(--gutter);background:#0f0f10eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.admin__bar-left,.admin__bar-right{display:flex;align-items:center;gap:var(--s4)}.admin__state{color:var(--text-faint)}.admin__bar .btn{padding:6px 12px}.admin__notice{padding:var(--s3) var(--gutter);color:var(--text-mid);border-bottom:1px solid var(--line);max-width:none}.admin__body{display:grid;grid-template-columns:160px minmax(0,1fr);gap:var(--s6);padding:var(--s6) var(--gutter) var(--s9);max-width:1180px;margin:0 auto}.admin__rail{display:flex;flex-direction:column;gap:2px;position:sticky;top:calc(var(--s7) + 12px);align-self:start}.admin__tab{font-family:var(--mono);font-size:12px;letter-spacing:.03em;text-align:left;padding:7px 10px;background:transparent;border:0;border-left:1px solid var(--line);color:var(--text-dim);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.admin__tab:hover{color:var(--text);background:var(--bg-2)}.admin__tab.is-on{color:var(--accent);border-left-color:var(--accent);background:var(--accent-ink)}.admin__pane{min-width:0}.admin__h{margin-bottom:var(--s5)}.admin__lead{max-width:76ch;margin-bottom:var(--s5)}.admin__rule{margin:var(--s6) 0 var(--s4)}.admin__orcid{display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap;margin-bottom:var(--s4)}.fld{display:block;margin-bottom:var(--s4);min-width:0}.fld__label{display:block;margin-bottom:5px}.fld__hint{display:block;margin-top:4px}.in{width:100%;font-family:var(--sans);font-size:14px;font-weight:300;line-height:1.6;color:var(--text);background:var(--bg-2);border:1px solid var(--line);padding:8px 11px;transition:border-color .15s,background .15s}.in:hover{border-color:var(--line-mid)}.in:focus{outline:none;border-color:var(--accent-soft);background:var(--surface)}.in--mono{font-family:var(--mono);font-size:12.5px}textarea.in{resize:vertical;min-height:64px}select.in{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding-right:28px;background-image:linear-gradient(45deg,transparent 50%,var(--text-dim) 50%),linear-gradient(135deg,var(--text-dim) 50%,transparent 50%);background-position:calc(100% - 15px) 17px,calc(100% - 11px) 17px;background-size:4px 4px,4px 4px;background-repeat:no-repeat}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 var(--s5)}.list{margin-bottom:var(--s6)}.list__head{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);padding-bottom:var(--s2);border-bottom:1px solid var(--line);margin-bottom:var(--s3)}.list__hint{margin-bottom:var(--s3);max-width:76ch}.list__empty{padding:var(--s2) 0 var(--s4)}.btn--sm{padding:5px 11px;font-size:12.5px}.card{border:1px solid var(--line);margin-bottom:6px;background:var(--bg-2)}.card.is-open{border-color:var(--line-mid);background:var(--surface)}.card__bar{display:flex;align-items:center;gap:var(--s3);padding:2px 6px 2px 0}.card__title{flex:1;min-width:0;display:flex;align-items:center;gap:var(--s3);font-family:var(--mono);font-size:12.5px;text-align:left;color:var(--text-mid);background:transparent;border:0;padding:9px 12px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.card__title:hover{color:var(--text)}.card__chev{color:var(--accent);width:10px;flex:none}.card__untitled{color:var(--text-faint);font-style:normal}.card__tools{display:flex;gap:2px;flex:none}.icon{width:26px;height:26px;display:grid;place-items:center;font-family:var(--mono);font-size:12px;color:var(--text-faint);background:transparent;border:1px solid transparent;cursor:pointer;transition:color .14s,border-color .14s}.icon:hover:not(:disabled){color:var(--text);border-color:var(--line-mid)}.icon:disabled{opacity:.25;cursor:default}.icon--danger:hover:not(:disabled){color:var(--red);border-color:#d4615d66}.card__body{padding:var(--s4) var(--s5) var(--s5);border-top:1px solid var(--line)}.card__body .list{margin-bottom:var(--s4)}.upload{display:flex;margin-top:var(--s2);align-items:center;gap:var(--s4);flex-wrap:wrap;margin-bottom:var(--s4)}.upload__state{color:var(--text-mid)}@media (max-width: 760px){.admin__body{grid-template-columns:1fr;gap:var(--s5)}.admin__rail{position:static;flex-direction:row;flex-wrap:wrap}.admin__tab{border-left:0;border-bottom:1px solid var(--line)}.admin__tab.is-on{border-bottom-color:var(--accent)}}.admin__offline{color:var(--amber)}.icon--danger.is-armed{width:auto;padding:0 8px;font-size:11px;letter-spacing:.03em;color:var(--red);border-color:#d4615d73}
