:root{--bg:#f6f8fa;--surface:#fff;--text:#0e1a24;--muted:#4b5b69;--line:#dfe5ea;--accent:#0a6e8a;--accent-2:#12a4a0;--glow:#12a4a02e;--radius:18px;--max:72rem;--todo-bg:#fff4c2;--todo-text:#3d2f00;--todo-line:#b08900;--font:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--bg:#0a1117;--surface:#111b23;--text:#e8eef2;--muted:#9aabb8;--line:#22313c;--accent:#4cc3e0;--accent-2:#3ddbc8;--glow:#3ddbc824;--todo-bg:#3a3000;--todo-text:#ffe680;--todo-line:#c9a400}}@view-transition{navigation:auto}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font:400 clamp(1rem, .95rem + .25vw, 1.125rem)/1.6 var(--font);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100dvh;margin:0;display:flex}main{flex:1}img{max-width:100%;height:auto;display:block}a{color:var(--accent);text-underline-offset:.2em}a:hover{color:var(--accent-2)}:focus-visible{outline:3px solid var(--accent-2);outline-offset:3px;border-radius:4px}.wrap{width:min(100% - 2rem, var(--max));margin-inline:auto}.skip{position:absolute;left:-999px}.skip:focus{z-index:10;background:var(--surface);padding:.5rem 1rem;top:1rem;left:1rem}.sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.todo{background:var(--todo-bg);color:var(--todo-text);outline:1px dashed var(--todo-line);outline-offset:2px;border-radius:4px;padding-inline:.2em}.site-header{z-index:5;backdrop-filter:saturate(160%)blur(12px);background:color-mix(in srgb, var(--bg) 78%, transparent);border-bottom:1px solid var(--line);view-transition-name:site-header;position:sticky;top:0}.site-header .wrap{justify-content:space-between;align-items:center;gap:1rem;min-height:4rem;display:flex}.brand{letter-spacing:-.02em;color:var(--text);font-size:1.15rem;font-weight:700;text-decoration:none}.brand span{color:var(--accent)}.nav{flex-wrap:wrap;gap:clamp(.75rem,2vw,1.5rem);margin-left:auto;display:flex}.nav a{color:var(--muted);font-weight:500;text-decoration:none}.nav a[aria-current=page],.nav a:hover{color:var(--text)}.lang{border:1px solid var(--line);border-radius:99px;padding:2px;font-size:.8rem;font-weight:600;display:flex}.lang a{color:var(--muted);border-radius:99px;padding:.2rem .6rem;text-decoration:none}.lang a:hover{color:var(--text)}.lang a[aria-current=true]{background:var(--accent);color:var(--bg)}@media (width<=40rem){.site-header .wrap{flex-wrap:wrap;gap:.25rem 1rem;min-height:0;padding-block:.6rem}.lang{margin-left:auto}.nav{white-space:nowrap;order:3;gap:1rem;width:100%;margin-left:0;font-size:.95rem;overflow-x:auto}}.hero{isolation:isolate;padding:clamp(4rem,12vw,9rem) 0 clamp(3rem,8vw,6rem);position:relative;overflow:hidden}.hero:before{content:"";z-index:-1;background:radial-gradient(36rem 22rem at 72% 18%, var(--glow), transparent 70%), radial-gradient(30rem 20rem at 18% 82%, var(--glow), transparent 70%), radial-gradient(22rem 16rem at 45% 50%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 70%);animation:32s ease-in-out infinite alternate drift;position:absolute;inset:-30%;mask-image:linear-gradient(#000 50%,#0000 78%)}.hero:after{content:"";z-index:-1;opacity:.5;background-image:linear-gradient(to right, var(--line) 1px, transparent 1px), linear-gradient(to bottom, var(--line) 1px, transparent 1px);background-size:56px 56px;position:absolute;inset:0;mask-image:radial-gradient(70% 80% at 70% 30%,#000,#0000 75%)}@keyframes drift{50%{transform:translate(-4%,3%)scale(1.06)}to{transform:translate(3%,-2%)scale(1.02)}}.hero-plain{padding-bottom:clamp(4rem,10vw,7rem)}.home-intro{grid-template-columns:minmax(0,1fr);align-items:center;gap:clamp(1.5rem,4vw,3rem);display:grid}.hero-home h1{max-width:22ch;font-size:clamp(2rem,1.4rem + 2.8vw,3.6rem)}.hero-home .portrait{order:-1}@media (width>=48rem){.home-intro{grid-template-columns:minmax(0,1fr) 15rem}.hero-home .portrait{order:0;width:100%}}h1,h2,h3{letter-spacing:-.025em;margin:0 0 .6em;line-height:1.15}h1{font-size:clamp(2.4rem,1.6rem + 4vw,4.6rem);font-weight:750}h2{font-size:clamp(1.6rem,1.3rem + 1.4vw,2.4rem)}.lead{color:var(--muted);max-width:40rem;font-size:clamp(1.1rem,1rem + .6vw,1.4rem)}.gradient-text{background:linear-gradient(90deg, var(--accent), var(--accent-2));color:#0000;-webkit-background-clip:text;background-clip:text}section{padding:clamp(3rem,8vw,6rem) 0}section.tight{padding-block:clamp(2rem,5vw,3.5rem)}.eyebrow{text-transform:uppercase;letter-spacing:.14em;color:var(--accent);margin-bottom:.75rem;font-size:.78rem;font-weight:600}.grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:1.25rem;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);color:inherit;flex-direction:column;gap:.5rem;padding:1.5rem;text-decoration:none;transition:transform .25s,box-shadow .25s,border-color .25s;display:flex;position:relative}a.card:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line));box-shadow:0 18px 40px -18px var(--glow);color:inherit;transform:translateY(-4px)}.card h3,.card .h3{margin:0;font-size:1.25rem}.card-soon{border-style:dashed}.card .meta{color:var(--muted);margin-top:-.3rem;font-size:.9rem}a.card-cross,.card-cross{border-color:color-mix(in srgb, var(--accent) 40%, var(--line));background:linear-gradient(135deg, var(--surface), color-mix(in srgb, var(--glow) 60%, var(--surface)))}.card-cross .h3{font-size:clamp(1.4rem,1.2rem + 1vw,1.9rem)}.card p{color:var(--muted);margin:0}.card .more{color:var(--accent);margin-top:auto;padding-top:.75rem;font-weight:600}.tag{background:var(--glow);color:var(--accent);border-radius:99px;align-self:flex-start;padding:.2rem .6rem;font-size:.75rem;font-weight:600}.profile{grid-template-columns:minmax(0,1fr);align-items:center;gap:clamp(1.5rem,4vw,3rem);display:grid}@media (width>=48rem){.profile{grid-template-columns:14rem minmax(0,1fr)}.portrait{width:100%}}.portrait{aspect-ratio:1;object-fit:cover;width:min(100%,10rem);box-shadow:0 20px 50px -20px var(--glow);view-transition-name:portrait;border-radius:50%}.links{flex-wrap:wrap;gap:.6rem;margin-top:1.25rem;padding:0;list-style:none;display:flex}.links a{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:99px;align-items:center;gap:.4rem;padding:.5rem .9rem;font-weight:500;text-decoration:none;display:inline-flex}.links a:hover{border-color:var(--accent)}.links a.link-cross{border-color:color-mix(in srgb, var(--accent) 45%, var(--line));color:var(--accent)}.roles{gap:.3rem;margin:0 0 1rem;padding:0;font-size:clamp(1.05rem,1rem + .4vw,1.25rem);list-style:none;display:grid}.timeline{border-left:2px solid var(--line);margin:0;padding:0;list-style:none}.timeline li{padding:0 0 1.4rem 1.4rem;position:relative}.timeline li:before{content:"";background:var(--accent);width:12px;height:12px;box-shadow:0 0 0 4px var(--bg);border-radius:50%;position:absolute;top:.45rem;left:-7px}.timeline .when{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.9rem}.detail{color:var(--muted);margin-top:.2rem;font-size:.95rem}.bullets{gap:.6rem;max-width:46rem;margin:0;padding-left:1.2rem;display:grid}.pubs{gap:.9rem;margin:0;padding:0;list-style:none;display:grid}.pubs li{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1rem 1.2rem}.pubs .meta{color:var(--muted);font-size:.9rem}.source{color:var(--muted);font-size:.85rem}.draft{color:#241a00;text-align:center;background:#ffcf33;padding:.4rem 1rem;font-size:.9rem;font-weight:600}.site-footer{border-top:1px solid var(--line);color:var(--muted);padding:2rem 0 3rem;font-size:.9rem}.site-footer .wrap{flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;display:flex}.foot-lang,.foot-links{flex-wrap:wrap;gap:.5rem 1.5rem;display:flex}.site-footer a[aria-current=true]{color:var(--muted);text-decoration:none}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.reveal{animation:linear both reveal view();animation-range:entry cover 25%}@keyframes reveal{0%{opacity:0;transform:translateY(28px)}}}.hero h1,.hero .lead{animation:.9s cubic-bezier(.2,.7,.2,1) both rise}.hero .lead{animation-delay:.12s}@keyframes rise{0%{opacity:0;transform:translateY(18px)}}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}@view-transition{navigation:none}}
