@font-face{font-family:Adwaita;src:url('/assets/public/fonts/adwaita-sans.woff2') format('woff2');font-display:swap;font-weight:100 900}
@font-face{font-family:EchoPC;src:url('/assets/public/fonts/echo-pc.woff') format('woff');font-display:swap}
:root{color-scheme:dark;--bg:#020509;--surface:#071018;--text:#d5dedb;--muted:#a5b8b7;--line:#1c2b34;--accent:#ef6464;--link:var(--accent);font-family:Adwaita,'Segoe UI',sans-serif;font-size:16px;background:var(--bg);color:var(--text)}
*{box-sizing:border-box}body{margin:0;line-height:1.7}a{color:var(--link);text-underline-offset:.25em;text-decoration-thickness:1px}a:hover{color:#ff9999}a:focus-visible,button:focus-visible{outline:2px solid var(--link);outline-offset:5px}header{border-bottom:1px solid var(--line)}.header-inner{max-width:1064px;margin:auto;padding:26px 32px;display:flex;align-items:center;gap:40px}.brand{color:var(--text);text-decoration:none;line-height:1;white-space:nowrap}.wordmark{font-family:EchoPC,monospace;font-size:29px;letter-spacing:-.04em;position:relative;display:inline-block}.wordmark::after{content:attr(data-text);position:absolute;inset:0;color:var(--link);opacity:0;pointer-events:none;animation:glitch 13s infinite}.wordmark::before{content:attr(data-text);position:absolute;inset:0;color:#bd3f4b;opacity:0;pointer-events:none;animation:glitch 13s .08s infinite reverse}@keyframes glitch{0%,95%,97%,100%{opacity:0;transform:none;clip-path:inset(0)}95.2%,95.7%{opacity:.5;transform:translateX(1px);clip-path:inset(22% 0 56%)}96%,96.3%{opacity:.4;transform:translateX(-1px);clip-path:inset(64% 0 18%)}}nav{display:flex;gap:30px;margin-left:auto;align-items:center}nav a{font-size:.92rem;color:var(--muted);text-decoration:none;padding:4px 0}nav a[aria-current]{color:var(--text);box-shadow:0 1px var(--accent)}.language{font-size:.75rem;text-decoration:none;color:var(--muted);border-left:1px solid var(--line);padding-left:22px;line-height:1.4}main{max-width:920px;margin:0 auto;padding:64px 32px 88px}h1,h2,p,figure,dl{margin:0}h1{font-size:1.65rem;line-height:1.35;font-weight:650;letter-spacing:-.025em;margin-bottom:24px}h2{font-size:1.12rem;font-weight:650;line-height:1.4;margin-bottom:12px;letter-spacing:-.01em}p{max-width:73ch;margin-bottom:20px}.lead{font-size:1.15rem;line-height:1.65;color:var(--text)}.intro{max-width:750px}.intro>p:last-child{margin-bottom:0}figure{margin:30px 0 34px}figure img{display:block;max-width:100%;height:auto;width:100%;border-radius:2px}figcaption{font-size:.8rem;color:var(--muted);margin-top:11px;line-height:1.5}.projects{display:grid;grid-template-columns:1fr 1fr;gap:48px;margin-top:40px}.project{text-decoration:none;color:var(--text);border-top:1px solid var(--line);padding-top:22px}.project p{font-size:.95rem;color:var(--muted)}.project span,.research-entry span{font-size:.85rem;color:var(--link);text-decoration:underline;text-underline-offset:4px}.closing{margin-top:42px;padding-top:26px;border-top:1px solid var(--line);font-size:.9rem;color:var(--muted)}.research-list{margin-top:38px}.research-entry{display:block;max-width:750px;padding:28px 0;border-top:1px solid var(--line);text-decoration:none;color:var(--text)}.research-entry p{color:var(--muted)}.back{font-size:.8rem;display:inline-block;margin-bottom:25px;color:var(--muted)}article{max-width:750px;margin:0 auto}article h1{margin-bottom:15px}article>.lead{margin-bottom:25px}.achievement{margin-top:36px}.achievement p{margin-bottom:0}.context{color:var(--muted);font-size:.82rem;margin-top:34px;line-height:1.65;border-top:1px solid var(--line);padding-top:20px}.results{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:25px 0;margin:30px 0 40px}.results dt{font-size:1.4rem;line-height:1.4;color:var(--accent);margin-bottom:10px;white-space:nowrap}.results dd{font-size:.86rem;color:var(--muted);margin:0;line-height:1.6}.email{font-size:1.2rem;display:inline-block;margin:14px 0 6px}.contact{max-width:814px}.contact .achievement{margin-bottom:30px}.skip{position:fixed;top:-100px;left:15px;z-index:5;background:var(--surface);padding:10px}.skip:focus{top:10px}::selection{background:#59242c;color:#fff}
@media(max-width:650px){.header-inner{padding:22px 22px;gap:20px;flex-wrap:wrap}.brand{margin-right:auto}.wordmark{font-size:27px}nav{order:3;width:100%;margin:0;gap:28px}nav a{font-size:.88rem}.language{border:0;padding:0}.header-inner nav{margin-top:5px}main{padding:38px 22px 60px}h1{font-size:1.45rem;max-width:28ch}.lead{font-size:1.05rem}.projects{grid-template-columns:1fr;gap:28px}.results{grid-template-columns:1fr;gap:22px}.results>div{display:grid;grid-template-columns:145px 1fr;gap:16px}.results dt{font-size:1.2rem}.results dd{font-size:.83rem}figure{margin:24px -5px}figcaption{padding:0 5px}article h2{font-size:1.06rem}.email{font-size:1.1rem}.closing{margin-top:30px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;scroll-behavior:auto!important}}

.architecture{margin:34px 0 40px}.architecture figure{margin:20px 0 0}.architecture figure>a{display:block;border:1px solid var(--line);border-radius:2px;padding:18px}.architecture img{max-height:1000px;object-fit:contain}.architecture figcaption a{white-space:nowrap}@media(max-width:650px){.architecture figure>a{padding:8px}.architecture img{max-height:none}}

@font-face{font-family:LainMono;src:url('/assets/public/fonts/lain-mono.woff2') format('woff2');font-display:swap}.closing p:last-child{margin-bottom:0}.lain-art{container-type:inline-size;width:min(100%,440px);margin:0 auto 48px;color:var(--muted)}.lain-art pre{font-family:LainMono,monospace;font-size:min(16px,3.8cqi);font-weight:400;font-style:normal;line-height:1.05;letter-spacing:0;font-variant-ligatures:none;white-space:pre;text-align:left;width:max-content;max-width:100%;margin:0 auto;padding:0}
