:root{font-family:DM Sans Variable,sans-serif;font-synthesis:none;--mono:"JetBrains Mono Variable",ui-monospace,monospace;--bg:#040907;--surface:#08120e;--raised:#0e1b16;--text:#dffcf1;--muted:#93c2b1;--faint:#557f70;--accent:#6ff0cc;--line:rgba(111,240,204,.16);--glow:rgba(111,240,204,.28);--scan:rgba(0,0,0,.22);color-scheme:dark;background:var(--bg);color:var(--text)}:root[data-theme=light]{--bg:#eef3ec;--surface:#f7faf5;--raised:#e2ebe2;--text:#0b2a20;--muted:#3c5f52;--faint:#6b857a;--accent:#0f6e55;--line:rgba(15,110,85,.2);--glow:rgba(15,110,85,.14);--scan:rgba(11,42,32,.05);color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}::selection{background:var(--accent);color:var(--bg)}p{margin:0}body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:10;background:repeating-linear-gradient(0deg,var(--scan) 0 1px,transparent 1px 3px),radial-gradient(ellipse at center,transparent 55%,var(--scan) 100%)}.page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;width:min(100% - 32px,960px);margin-inline:auto}.header{display:flex;align-items:center;justify-content:space-between;padding:20px 0}.monogram{font-family:Manrope Variable,sans-serif;font-size:28px;font-weight:800;letter-spacing:-.13em;line-height:1}.monogram span{color:var(--accent)}.icon-button{border:0;color:var(--muted);background:transparent;display:grid;place-items:center;min-height:44px;min-width:44px;border-radius:8px}.icon-button:hover{color:var(--text);background:var(--raised)}main{flex:1;display:flex;flex-direction:column;justify-content:center;gap:clamp(56px,9vw,96px);padding:24px 0 48px}.terminal{width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(28px,5vw,64px);align-items:center}.terminal.not-found{grid-template-columns:minmax(0,1fr)}.portrait{position:relative;width:min(100%,420px);aspect-ratio:1;justify-self:center;border-radius:50%;overflow:hidden;background:var(--bg);box-shadow:0 0 80px var(--glow)}.portrait img,.portrait-ascii,.portrait-shader{position:absolute;inset:0;width:100%;height:100%;display:block}.portrait img{object-fit:cover;transition:opacity .6s}.portrait.has-ascii img{opacity:0}.portrait-ascii{transition:opacity .8s}.portrait-shader{opacity:0;transition:opacity .8s}.portrait-shader.is-ready{opacity:1}.portrait.is-live .portrait-ascii{opacity:0}.shader-canvas{width:100%;height:100%}.readout{display:grid;gap:14px;font-family:var(--mono);min-width:0}.prompt{color:var(--faint);font-size:13px}.prompt span{color:var(--accent)}h1{font-family:var(--mono);font-weight:600;letter-spacing:-.05em;font-size:clamp(36px,6vw,58px);line-height:1;margin:0;color:var(--text);text-shadow:0 0 24px var(--glow)}.cursor{display:inline-block;width:.5em;height:.82em;margin-left:.12em;vertical-align:-.04em;background:var(--accent);animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.tagline{font-size:16px;font-weight:500;color:var(--text)}.accent{color:var(--accent)}.bio{color:var(--muted);font-size:14px;line-height:1.7;max-width:46ch}.role{color:var(--faint);font-size:12px}.socials{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px;max-width:440px}.socials a{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 16px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:14px;transition:border-color .2s,background-color .2s}.socials a:hover{border-color:var(--accent);background:var(--raised)}.socials .cmd{color:var(--faint)}.socials .label{color:var(--text);font-weight:600}.socials .handle{margin-left:auto;color:var(--muted);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.socials svg{color:var(--accent);flex-shrink:0}.projects{display:grid;gap:14px;font-family:var(--mono)}h2{font-family:var(--mono);font-weight:600;font-size:22px;letter-spacing:-.03em;margin:0;color:var(--text)}.project-list{list-style:none;margin:4px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px}.project-list a{display:grid;gap:10px;height:100%;padding:18px 18px 20px;border:1px solid var(--line);border-radius:8px;background:var(--surface);transition:border-color .2s,background-color .2s}.project-list a:hover{border-color:var(--accent);background:var(--raised)}.project-head{display:flex;align-items:center;gap:10px}.project-name{color:var(--text);font-weight:600;font-size:15px}.project-domain{margin-left:auto;color:var(--faint);font-size:12px}.project-head svg{color:var(--accent);flex-shrink:0}.project-head .project-logo{color:var(--text)}.project-desc{color:var(--muted);font-family:DM Sans Variable,sans-serif;font-size:14px;line-height:1.6}.back{justify-self:start;margin-top:12px;padding:12px 18px;border:1px solid var(--line);border-radius:8px;color:var(--accent);font-size:14px}.back:hover{border-color:var(--accent)}.footer{color:var(--faint);font-family:var(--mono);font-size:11px;text-align:center;padding:20px 0 28px}@media(max-width:760px){.terminal{grid-template-columns:minmax(0,1fr);gap:32px}.portrait{width:min(100%,300px)}.readout{text-align:left}main{padding-top:8px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}.cursor{animation:none}}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-ext-wght-normal-C8S-KRRz.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-ext-wght-normal-BOFOeGcA.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-wght-normal-Xz1IZZA0.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-ext-wght-normal-EocZY2iu.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
