@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff) format("woff");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-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff) format("woff");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-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2) format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2) format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2) format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff) format("woff");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-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2) format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff) format("woff");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-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2) format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff) format("woff");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-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff");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-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff) format("woff");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-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2) format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2) format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2) format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff) format("woff");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-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2) format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff) format("woff");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-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2) format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff) format("woff");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-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff");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-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff) format("woff");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-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2) format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2) format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2) format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff) format("woff");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-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2) format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff) format("woff");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-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2) format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff) format("woff");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-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff");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-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff) format("woff");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-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2) format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2) format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2) format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff) format("woff");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-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2) format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff) format("woff");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-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2) format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff) format("woff");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-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff");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}*{box-sizing:border-box}:root{--font-display: "IBM Plex Mono";--font-sans: "Inter";--background: #090b0e;--background-elevated: rgba(15, 18, 24, .84);--background-panel: rgba(18, 22, 29, .94);--surface: rgba(255, 255, 255, .04);--surface-strong: rgba(255, 255, 255, .06);--border: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .16);--text-primary: #f3f7f3;--text-secondary: rgba(235, 242, 236, .72);--text-muted: rgba(235, 242, 236, .5);--accent-green: #67c584;--accent-blue: #78a8ff;--accent-purple: #9b7efb;--shadow: 0 22px 60px rgba(0, 0, 0, .35)}html{background:var(--background)}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.project-card__actions button:hover,.project-card__actions a:hover,.contact-link:hover{transform:none}}body{margin:0;min-height:100vh;background:radial-gradient(circle at top,rgba(120,168,255,.08),transparent 22%),linear-gradient(180deg,#0b0d11,#090b0e);color:var(--text-primary);font-family:var(--font-sans),sans-serif;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}button,a{transition:color .18s ease,border-color .18s ease,background-color .18s ease,opacity .18s ease,transform .18s ease}button{appearance:none;background:none;border:0;color:inherit;cursor:pointer;font:inherit;padding:0}:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}.site-shell{position:relative}.site-shell__grid,.site-shell__noise{inset:0;pointer-events:none;position:fixed}.site-shell__grid{background-image:linear-gradient(rgba(255,255,255,.028) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.028) 1px,transparent 1px);background-position:center center;background-size:36px 36px;-webkit-mask-image:radial-gradient(circle at center,black 45%,transparent 82%);mask-image:radial-gradient(circle at center,black 45%,transparent 82%);opacity:.34}.site-shell__noise{background-image:radial-gradient(circle at 15% 20%,rgba(255,255,255,.045) 0 1px,transparent 1px),radial-gradient(circle at 80% 30%,rgba(255,255,255,.038) 0 1px,transparent 1px),radial-gradient(circle at 35% 75%,rgba(255,255,255,.032) 0 1px,transparent 1px);background-size:160px 160px;opacity:.18}.sticky-header{position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.sticky-header__inner{align-items:center;background:#07090cbd;border-bottom:1px solid var(--border);display:flex;gap:1.5rem;justify-content:space-between;margin:0 auto;max-width:76rem;padding:1rem 1.5rem}.sticky-header__brand{color:var(--text-primary);font-family:var(--font-display),monospace;font-size:.92rem;letter-spacing:.04em;text-transform:lowercase}.sticky-header__nav{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.sticky-header__link{background:transparent;border:1px solid transparent;border-radius:999px;color:var(--text-muted);font-size:.88rem;padding:.42rem .78rem}.sticky-header__link:hover,.sticky-header__link[data-active=true]{background:#78a8ff14;border-color:#78a8ff38;color:var(--accent-blue)}.site-main{margin:0 auto;max-width:76rem;padding:1rem 1.5rem 4rem}.hero-shell,.section-shell{margin-bottom:1.5rem;scroll-margin-top:6rem}.hero-shell{display:flex}.hero-shell .window-frame{width:100%}.hero-shell .window-frame__body{display:flex;padding:clamp(1.25rem,2vw,2rem)}.hero-shell__content{display:grid;gap:1rem;width:100%}.hero-shell__layout{align-items:start;display:grid;gap:1.4rem;grid-template-columns:minmax(0,.95fr) minmax(20rem,1.05fr)}.hero-shell__intro{align-content:start;display:grid;gap:1rem}.hero-shell__eyebrow,.section-shell__eyebrow{color:var(--accent-green);font-family:var(--font-display),monospace;font-size:.74rem;letter-spacing:.12em;margin:0;text-transform:uppercase}.hero-shell__title{font-family:var(--font-display),monospace;font-size:clamp(2.6rem,6.8vw,4.6rem);letter-spacing:-.04em;line-height:.96;margin:0;max-width:10ch}.hero-shell__description,.section-shell__description{color:var(--text-secondary);font-size:1.04rem;line-height:1.65;margin:0;max-width:36rem}.hero-shell__actions{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem}.hero-shell__action{align-items:center;border:1px solid var(--border);border-radius:999px;display:inline-flex;font-family:var(--font-display),monospace;font-size:.76rem;gap:.35rem;padding:.6rem .88rem}.hero-shell__action:before{color:var(--accent-green);content:">"}.hero-shell__action:hover{border-color:#78a8ff38;color:var(--text-primary);transform:translateY(-1px)}.hero-shell__terminal,.contact-shell{background:#ffffff08;border:1px solid var(--border);border-radius:1rem;color:var(--text-secondary);font-family:var(--font-display),monospace;font-size:.92rem;line-height:1.8;padding:1rem 1.1rem}.hero-shell__terminal{align-self:stretch;margin:0;min-height:9.1rem;overflow:hidden;white-space:pre-wrap}.hero-shell__terminal-text{display:inline}.hero-shell__cursor{animation:hero-cursor-blink 1s steps(1,end) infinite;background:var(--text-primary);border-radius:1px;display:inline-block;height:1.15em;margin-left:.12rem;transform:translateY(.18em);vertical-align:baseline;width:.72ch}.hero-shell__cursor[data-reduced-motion=true]{animation:none}.contact-shell p{margin:0}.contact-shell{display:grid;gap:.9rem}.contact-shell__prompt{color:var(--text-primary);font-family:var(--font-display),monospace}.section-shell__inner{background:#ffffff05;border:1px solid var(--border);border-radius:1.5rem;padding:1.5rem}.section-shell__header{display:grid;gap:.55rem;margin-bottom:1.25rem}.section-shell__title{font-family:var(--font-display),monospace;font-size:clamp(1.5rem,4vw,2.5rem);letter-spacing:-.03em;line-height:1.05;margin:0;max-width:18ch}.section-shell__content{display:grid;gap:1rem}.window-frame{background:var(--background-elevated);border:1px solid var(--border-strong);border-radius:1.5rem;box-shadow:var(--shadow);overflow:hidden}.window-frame__bar{align-items:center;background:#ffffff0d;border-bottom:1px solid var(--border);display:grid;gap:1rem;grid-template-columns:auto 1fr auto;padding:.85rem 1rem}.window-frame__lights{display:flex;gap:.42rem}.window-frame__light{border-radius:999px;display:block;height:.78rem;width:.78rem}.window-frame__light[data-tone=red]{background:#ff5f57}.window-frame__light[data-tone=yellow]{background:#febc2e}.window-frame__light[data-tone=green]{background:#28c840}.window-frame__title,.window-frame__status{color:var(--text-muted);font-family:var(--font-display),monospace;font-size:.78rem;margin:0}.window-frame__title{justify-self:center;text-align:center}.window-frame__status{justify-self:end}.window-frame__body{padding:1.25rem}.token-list{display:flex;flex-wrap:wrap;gap:.7rem}.token-list__item{background:#ffffff0a;border:1px solid var(--border);border-radius:999px;color:var(--text-secondary);font-family:var(--font-display),monospace;font-size:.8rem;padding:.55rem .8rem}.project-grid,.homelab-grid{display:grid;gap:.9rem;grid-template-columns:repeat(2,minmax(0,1fr))}.project-grid,.homelab-grid{align-items:stretch;grid-auto-rows:1fr}.project-card,.homelab-panel{background:var(--surface);border:1px solid var(--border);border-radius:1rem;padding:1rem}.project-card{display:flex;flex-direction:column;gap:.85rem;height:100%}.project-card__header,.homelab-panel__header{align-items:center;display:flex;gap:.75rem;justify-content:space-between}.project-card h3,.homelab-panel h3{font-size:1rem;margin:0}.project-card__summary{color:var(--text-secondary);line-height:1.65;margin:0}.project-card__stack{color:var(--text-secondary);font-family:var(--font-display),monospace;font-size:.82rem;margin:auto 0 0}.project-card__stack span{color:var(--text-muted)}.project-card__actions{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between}.project-card__actions button,.project-card__actions a{align-items:center;border:1px solid var(--border);border-radius:999px;display:inline-flex;font-family:var(--font-display),monospace;font-size:.76rem;gap:.35rem;padding:.55rem .8rem}.project-card__actions button:before,.project-card__actions a:before{color:var(--accent-green);content:">"}.project-card__actions button:hover,.project-card__actions a:hover,.contact-link:hover{border-color:#78a8ff38;color:var(--text-primary);transform:translateY(-1px)}.homelab-panel{align-content:start;display:grid;gap:.8rem;height:100%}.homelab-panel ul{align-content:start;color:var(--text-secondary);display:grid;gap:.5rem 1rem;grid-template-columns:repeat(2,minmax(0,1fr));list-style:none;margin:0;padding:0}.homelab-panel li{min-width:0}.status-badge{background:#67c5841a;border:1px solid rgba(103,197,132,.24);border-radius:999px;color:var(--accent-green);display:inline-flex;font-family:var(--font-display),monospace;font-size:.72rem;padding:.32rem .55rem;text-transform:lowercase}.supporting-row{align-items:stretch;display:grid;gap:1.5rem;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:1.5rem}.supporting-row>.section-shell{height:100%;margin-bottom:0}.supporting-row>.section-shell .window-frame,.supporting-row>.section-shell .section-shell__inner{height:100%}.supporting-row .github-shell{align-content:start;width:min(100%,31rem)}.supporting-row .contact-shell{align-content:start;height:100%}.github-shell{display:grid;gap:.9rem}.github-shell__label{color:var(--text-muted);font-family:var(--font-display),monospace;font-size:.8rem;margin:0}.contact-links{display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}.contact-link{align-items:center;background:#ffffff05;border:1px solid var(--border);border-radius:.9rem;display:flex;gap:.75rem;padding:.9rem}.contact-link svg{color:var(--accent-blue);flex:none;height:1rem;width:1rem}.contact-link span{color:var(--text-secondary);font-family:var(--font-display),monospace;font-size:.82rem}.detail-modal{align-items:center;background:#030508bd;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;inset:0;justify-content:center;padding:1.5rem;position:fixed;z-index:40}.detail-modal__surface{max-height:min(90vh,56rem);max-width:52rem;width:100%}.detail-modal__surface .window-frame__body{overflow:auto}.detail-modal__dialog,.detail-modal__content{display:grid;gap:1rem}.detail-modal__header{align-items:center;display:flex;gap:1rem;justify-content:space-between}.detail-modal__close,.detail-modal__links a{align-items:center;border:1px solid var(--border);border-radius:999px;display:inline-flex;font-family:var(--font-display),monospace;font-size:.76rem;gap:.35rem;padding:.55rem .8rem}.detail-modal__close:before,.detail-modal__links a:before{color:var(--accent-green);content:">"}.detail-modal__title{font-family:var(--font-display),monospace;font-size:clamp(1.8rem,4vw,2.6rem);letter-spacing:-.03em;line-height:1.02;margin:0}.detail-modal__summary{color:var(--text-secondary);line-height:1.7;margin:0}.detail-modal__meta{color:var(--text-muted);display:flex;flex-wrap:wrap;font-family:var(--font-display),monospace;font-size:.8rem;gap:.75rem}.detail-modal__columns{display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr))}.detail-modal__section{background:#ffffff08;border:1px solid var(--border);border-radius:1rem;padding:1rem}.detail-modal__section h3{font-size:.95rem;margin:0 0 .8rem}.detail-modal__section ul{color:var(--text-secondary);display:grid;gap:.55rem;list-style:none;margin:0;padding:0}.detail-modal__links{display:flex;flex-wrap:wrap;gap:.75rem}.github-contribution-calendar{--calendar-cell-size: .78rem;--calendar-gap: .2rem;--calendar-day-label-width: 2.15rem;display:grid;gap:.42rem;overflow-x:auto;padding-bottom:.15rem}.github-contribution-calendar__months{color:var(--text-muted);display:grid;font-family:var(--font-display),monospace;font-size:.72rem;gap:var(--calendar-gap);margin-left:calc(var(--calendar-day-label-width) + .45rem);min-width:max-content}.github-contribution-calendar__month{line-height:1;white-space:nowrap}.github-contribution-calendar__body{align-items:start;display:grid;gap:.45rem;grid-template-columns:var(--calendar-day-label-width) max-content}.github-contribution-calendar__days{color:var(--text-muted);display:grid;font-family:var(--font-display),monospace;font-size:.72rem;gap:var(--calendar-gap);grid-template-rows:repeat(7,var(--calendar-cell-size))}.github-contribution-calendar__day{align-self:center;line-height:1}.github-contribution-calendar__grid{background:#ffffff04;border:1px solid rgba(255,255,255,.04);border-radius:.85rem;display:grid;gap:var(--calendar-gap);grid-auto-flow:column;grid-template-rows:repeat(7,var(--calendar-cell-size));min-width:max-content;padding:.28rem}.github-contribution-calendar__cell{background:#60677029;border:1px solid rgba(255,255,255,.03);border-radius:.16rem;box-shadow:none;height:var(--calendar-cell-size);width:var(--calendar-cell-size)}.github-contribution-calendar__cell[data-intensity=empty]{background:#ffffff05;border-color:#ffffff04}.github-contribution-calendar__cell[data-intensity=idle]{background:#4e50574d;border-color:#ffffff09}.github-contribution-calendar__cell[data-intensity=low]{background:#7c363fe6;border-color:#d066771f}.github-contribution-calendar__cell[data-intensity=mid]{background:#c74b5bf5;border-color:#ff91a32e;box-shadow:0 0 5px #d0506029}.github-contribution-calendar__cell[data-intensity=high]{background:#ff5870fa;border-color:#ffb0c247;box-shadow:0 0 8px #ff5c7447}.site-footer{padding:0 1.5rem 2.5rem}.site-footer__inner{border-top:1px solid var(--border);color:var(--text-muted);display:flex;font-family:var(--font-display),monospace;font-size:.78rem;justify-content:space-between;margin:0 auto;max-width:76rem;padding-top:1rem}@keyframes hero-cursor-blink{0%,49%{opacity:1}50%,to{opacity:0}}@media(max-width:980px){.supporting-row{grid-template-columns:minmax(0,1fr)}}@media(max-width:720px){.sticky-header__inner,.site-main,.site-footer{padding-left:1rem;padding-right:1rem}.window-frame__bar{grid-template-columns:auto 1fr}.window-frame__status{display:none}.hero-shell{min-height:auto}.hero-shell .window-frame__body{padding:1.1rem}.hero-shell__layout{gap:1rem;grid-template-columns:minmax(0,1fr)}.hero-shell__title{font-size:clamp(2.3rem,13vw,3.7rem)}.hero-shell__terminal{min-height:8.6rem}.project-grid,.homelab-grid,.contact-links,.detail-modal__columns,.homelab-panel ul{grid-template-columns:minmax(0,1fr)}.homelab-grid{grid-auto-rows:auto}.site-footer__inner{align-items:flex-start;flex-direction:column}.github-contribution-calendar{--calendar-cell-size: .68rem;--calendar-gap: .16rem;--calendar-day-label-width: 1.8rem}.detail-modal{align-items:flex-start;padding:1rem}}
