@font-face{font-family:"DM Sans";font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/dm-sans-latin-ext.woff2)format("woff2");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";font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/dm-sans-latin.woff2)format("woff2");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:"Inter";font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/inter-cyrillic-ext.woff2)format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Inter";font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/inter-cyrillic.woff2)format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Inter";font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/inter-greek-ext.woff2)format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:"Inter";font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/inter-greek.woff2)format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Inter";font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/inter-vietnamese.woff2)format("woff2");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:"Inter";font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/inter-latin-ext.woff2)format("woff2");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:"Inter";font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/inter-latin.woff2)format("woff2");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:"Roboto Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto-mono-cyrillic-ext.woff2)format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Roboto Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto-mono-cyrillic.woff2)format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Roboto Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto-mono-greek.woff2)format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Roboto Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto-mono-vietnamese.woff2)format("woff2");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:"Roboto Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto-mono-latin-ext.woff2)format("woff2");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:"Roboto Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto-mono-latin.woff2)format("woff2");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}:root{color-scheme:dark light;--bg-page:#111;--bg-code:#1a1a1a;--bg-note:rgba(252, 252, 252, 0.03);--text-primary:#fcfcfc;--text-muted:#999;--border-strong:#fcfcfc;--border-subtle:rgba(252, 252, 252, 0.1);--border-rule:rgba(252, 252, 252, 0.14);--underline-rest:rgba(252, 252, 252, 0.35);--underline-hover:#fcfcfc;--focus-ring:#fcfcfc;--fade-left:linear-gradient(90deg, #111 0%, rgba(17, 17, 17, 0.96) 20%, rgba(17, 17, 17, 0.55) 42%, rgba(17, 17, 17, 0) 75%);--fade-bottom:linear-gradient(180deg, rgba(17, 17, 17, 0) 55%, rgba(17, 17, 17, 0.6) 81%, #111 100%);--fade-about:linear-gradient(90deg, #111 0%, rgba(17, 17, 17, 0.8) 32%, rgba(17, 17, 17, 0) 60%);--fade-header:linear-gradient(180deg, rgba(17, 17, 17, 0) 45%, #111 100%)}@media (prefers-color-scheme:light){:root{--bg-page:#fcfcfc;--bg-code:#f5f5f5;--bg-note:rgba(0, 0, 0, 0.02);--text-primary:#111;--text-muted:#666;--border-strong:#000;--border-subtle:rgba(0, 0, 0, 0.08);--border-rule:rgba(0, 0, 0, 0.1);--underline-rest:rgba(0, 0, 0, 0.3);--underline-hover:#111;--focus-ring:#000;--fade-left:linear-gradient(90deg, #fcfcfc 0%, rgba(252, 252, 252, 0.96) 20%, rgba(252, 252, 252, 0.55) 42%, rgba(252, 252, 252, 0) 75%);--fade-bottom:linear-gradient(180deg, rgba(252, 252, 252, 0) 55%, rgba(252, 252, 252, 0.6) 81%, #fcfcfc 100%);--fade-about:linear-gradient(90deg, #fcfcfc 0%, rgba(252, 252, 252, 0.8) 32%, rgba(252, 252, 252, 0) 60%);--fade-header:linear-gradient(180deg, rgba(252, 252, 252, 0) 45%, #fcfcfc 100%)}}*{margin:0;padding:0;box-sizing:border-box}body{background-color:var(--bg-page);line-height:1.6;font-family:"DM Sans",sans-serif}a,body{color:var(--text-primary)}a:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.hero,.page-header,.terrain{position:relative;overflow:hidden}.terrain{position:absolute;inset:0}.terrain img{position:absolute;top:0;left:22%;width:100%;height:100%;object-fit:cover;object-position:100% 50%}.terrain::after{content:"";position:absolute;inset:0}.hero .terrain::after{background:var(--fade-about),var(--fade-bottom),var(--fade-left)}.page-header .terrain::after{background:var(--fade-header),var(--fade-left)}.header-grid{position:relative;display:grid;grid-template-columns:repeat(12,1fr);gap:0 1.5rem;max-width:1300px;margin:0 auto;padding:0 2rem}#about,#links,#not-found,#projects,.header-cell{grid-column:3/11}.eyebrow{display:block;font-family:"Inter",sans-serif;font-size:.85rem;font-weight:400;letter-spacing:2px;text-transform:uppercase;opacity:.6}.hero{min-height:820px;padding-top:200px}.hero-name{font-family:"Inter",sans-serif;font-size:3.6rem;font-weight:300;letter-spacing:-.7px;line-height:1.15;margin:.4rem 0 1.4rem}.hero-tagline{max-width:520px;font-size:1.05rem;line-height:1.8;opacity:.8;margin:0}.hero-links{display:flex;flex-wrap:wrap;gap:2.5rem;margin-top:2rem}.page-header{height:360px}.page-header .header-grid{position:absolute;top:120px;left:0;right:0}.page-header .header-cell{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem}.page-header-home{display:flex;flex-direction:column;flex:none;text-decoration:none;color:inherit}.page-header-name,.strip-link{font-family:"Inter",sans-serif;white-space:nowrap}.page-header-name{display:block;font-size:2.2rem;font-weight:300;letter-spacing:-.7px;line-height:1.2;margin-top:5px}.strip-link{display:inline-flex;align-items:center;gap:.6rem;font-size:.75rem;font-weight:500;letter-spacing:2px;text-transform:uppercase;text-decoration:none;padding:.6rem 1rem;line-height:1;margin-bottom:4px;background:var(--bg-page);border:1px solid var(--border-rule);transition:border-color .2s}.strip-link:focus-visible,.strip-link:hover{border-color:var(--border-strong)}.strip-arrow{flex:none;display:block}.layout-grid{display:grid;grid-template-columns:repeat(12,1fr);max-width:1300px;margin:0 auto;gap:5rem 1.5rem;padding:6rem 2rem}.hero+.layout-grid{margin-top:-200px;padding-top:0}.page-header+.layout-grid{padding-top:4rem}.layout-grid,h2,section{position:relative}h2{font-family:"Inter",sans-serif;font-size:.8rem;text-transform:uppercase;letter-spacing:2px;margin-bottom:2.5rem;font-weight:500;color:var(--text-muted);display:inline-block;margin-left:30px}h2::before{content:"";position:absolute;width:20px;height:1px;background:var(--border-strong);left:-30px;top:50%;transform:translateY(-50%)}p{margin-bottom:1.5rem;font-size:1rem;line-height:1.8;opacity:.87}p:last-child{margin-bottom:0}.projects-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4rem}.project-card{position:relative;padding-top:1.5rem}.project-title{font-family:"Inter",sans-serif;font-size:1.1rem;font-weight:500;margin-bottom:1rem;letter-spacing:-.3px}.project-desc{font-size:.95rem;line-height:1.7;margin-bottom:0}.tech{font-family:"Roboto Mono",monospace;font-size:.75rem;opacity:.6;margin-top:1rem}.inline-link{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--underline-rest);transition:text-decoration-color .2s}.inline-link:hover{text-decoration-color:var(--underline-hover)}.project-links{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 2rem;margin-top:.75rem}.project-link{text-decoration:none;font-size:.95rem;border-bottom:1px solid var(--border-strong);padding-bottom:2px;transition:opacity .2s}.project-link:hover{opacity:.6}.links{display:flex;flex-wrap:wrap;gap:3.5rem;margin-top:.5rem}.link-item{text-decoration:none;font-size:1rem;position:relative;transition:opacity .2s;padding:3px 0}.link-item::after{content:"";position:absolute;width:0;height:1px;background:currentcolor;left:0;bottom:0;transition:width .3s}.link-item:hover::after{width:100%}.link-item:hover{opacity:.7}.link-list{display:flex;flex-direction:column;gap:2.75rem;margin-top:.5rem}.link-entry-name{font-family:"Inter",sans-serif;font-size:1.1rem;font-weight:500;letter-spacing:-.3px;text-decoration:none;border-bottom:1px solid var(--border-strong);padding-bottom:2px;transition:opacity .2s}.link-entry-name:hover{opacity:.6}.link-entry-url{font-family:"Roboto Mono",monospace;font-size:.75rem;opacity:.6;margin-top:.75rem}.link-entry-desc{font-size:.95rem;line-height:1.7;margin-top:.4rem;margin-bottom:0}.pre-footer{text-align:center;padding-top:2rem}.pre-footer-link{font-size:.8rem;letter-spacing:.5px;color:var(--text-muted);text-decoration:none;border-bottom:1px solid transparent;padding-bottom:2px;transition:color .2s,border-color .2s}.pre-footer-link:focus-visible,.pre-footer-link:hover{color:var(--text-primary);border-bottom-color:var(--underline-rest)}footer{text-align:center;padding:4rem 0 2rem;font-size:.8rem;opacity:.5;letter-spacing:.5px}footer p{font-size:inherit;opacity:1}@media (max-width:1100px){#about,#links,#not-found,#projects,.header-cell{grid-column:2/12}}@media (max-width:900px){.header-grid,.layout-grid{grid-template-columns:repeat(6,1fr);gap:4rem 1rem;padding:4rem 1.5rem}.header-grid{gap:0 1rem;padding:0 1.5rem}#about,#links,#not-found,#projects,.header-cell{grid-column:1/7}.hero{min-height:0;padding:7rem 0 calc(200px + 4rem)}.hero-name{font-size:2.6rem}.page-header{height:220px}.page-header .header-grid{top:100px}.page-header-name{font-size:1.8rem}.strip-link{gap:.45rem;font-family:"DM Sans",sans-serif;font-size:.92rem;font-weight:400;letter-spacing:normal;text-transform:none;padding:4px 0;margin-bottom:6px;background:0 0;border:0;border-bottom:1px solid var(--border-strong);transition:opacity .2s,border-color .2s}.strip-link:focus-visible,.strip-link:hover{opacity:.7;border-bottom-color:var(--underline-rest)}.projects-grid{grid-template-columns:1fr;gap:3rem}.links{gap:2rem}}