.analytics-consent-banner{position:fixed;right:var(--space-4);bottom:calc(var(--space-4) + env(safe-area-inset-bottom,0px));z-index:80;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-4);width:min(680px,calc(100vw - var(--space-8)));padding:var(--space-4);color:var(--color-text-primary);background:color-mix(in srgb,var(--color-bg-raised) 94%,transparent);border:1px solid var(--color-border-default);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.analytics-consent-copy{display:grid;gap:var(--space-2)}.analytics-consent-copy p,.analytics-consent-controls p{margin:0;color:var(--color-text-secondary);font-size:.9rem;line-height:1.5}.analytics-consent-copy a{color:var(--color-accent-engineering);text-underline-offset:.18em}.analytics-consent-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2)}.analytics-consent-btn{min-height:var(--touch-target-min);padding:0 var(--space-4);color:var(--color-text-primary);background:transparent;border:1px solid var(--color-border-default);border-radius:var(--radius-lg);cursor:pointer}.analytics-consent-btn--primary{color:var(--color-bg-canvas);background:var(--color-text-primary);border-color:var(--color-text-primary)}.analytics-consent-btn:hover,.analytics-consent-btn:focus-visible{border-color:var(--color-accent-engineering)}.analytics-consent-controls{display:grid;gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-4);border:1px solid var(--color-border-default);border-radius:var(--radius-xl);background:var(--color-bg-surface)}.analytics-consent-controls.compact{margin-top:var(--space-3)}@media(max-width:700px){.analytics-consent-banner{left:var(--space-3);right:var(--space-3);bottom:calc(var(--space-3) + env(safe-area-inset-bottom,0px));grid-template-columns:1fr;width:auto}.analytics-consent-actions{justify-content:stretch}.analytics-consent-btn{flex:1}}:root{--app-bottom-nav-height: 64px}.bottom-nav{display:none}@media(max-width:768px){.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:999;display:flex;align-items:stretch;justify-content:space-around;padding:6px 0;padding-bottom:calc(6px + env(safe-area-inset-bottom));background:#121212f2;border-top:1px solid var(--color-border-strong, rgba(255, 255, 255, .15));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 -2px 12px #0000004d}.bottom-nav-btn{position:relative;display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:12px 0;min-height:var(--touch-target-min, 44px);color:var(--color-text-secondary, #B8C0CA);background:transparent;border:none;cursor:pointer;transition:color var(--transition-fast),opacity var(--transition-fast);-webkit-tap-highlight-color:transparent;opacity:.5;text-decoration:none;font-family:inherit}.bottom-nav-btn:active{opacity:.7}.bottom-nav-btn.active{color:var(--color-accent-engineering, #4CC9F0);opacity:1}.bottom-nav-btn:focus-visible{outline:2px solid var(--color-accent-engineering, #4CC9F0);outline-offset:-2px}.bottom-nav-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.bottom-nav-icon svg{width:100%;height:100%;transition:transform var(--transition-fast)}.bottom-nav-btn:active .bottom-nav-icon svg{transform:scale(.85)}.bottom-nav-label{font-size:.65rem;font-family:var(--font-mono, "IBM Plex Mono", monospace);font-weight:500;letter-spacing:.02em;white-space:nowrap}}.skip-to-content{position:fixed;top:-100%;left:50%;transform:translate(-50%);padding:var(--space-sm) var(--space-md);background:var(--color-bg-canvas);color:var(--color-accent-engineering);border:1px solid var(--color-accent-engineering);border-radius:var(--radius-sm);font-size:.9rem;z-index:10000;transition:top var(--transition-fast);text-decoration:none;white-space:nowrap}.skip-to-content:focus{top:var(--space-sm)}.app{min-height:100vh;display:flex;flex-direction:column;background-color:var(--color-bg-canvas)}.nav{position:fixed;top:0;left:0;right:0;height:56px;z-index:1000;background:#0e1116f0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border-default)}.nav-container{display:flex;align-items:center;justify-content:space-between;height:100%;padding:0 var(--space-lg);max-width:1400px;margin:0 auto;width:100%}.nav-logo{font-family:var(--font-display);font-size:1.25rem;font-weight:700;color:var(--color-text-primary);letter-spacing:-.02em;text-decoration:none;transition:color var(--transition-fast)}.nav-logo:hover{color:var(--color-accent-engineering)}.nav-logo-prompt{font-family:var(--font-mono);color:var(--color-accent-engineering);font-weight:400;margin-right:.25em}.nav-logo-image{display:block;height:34px;width:auto;max-width:240px;object-fit:contain}.nav-links{display:flex;align-items:center;gap:0;list-style:none;margin:0;padding:0}.nav-links>li{display:flex;align-items:center}.nav-links>li+li:before{content:">";margin:0 .65rem;color:var(--color-accent-engineering);font-family:var(--font-mono);font-size:.72rem;font-weight:500;opacity:.28;pointer-events:none;transition:opacity var(--transition-base),color var(--transition-base)}.nav-links:hover>li+li:before,.nav-links>li:has(.nav-link:hover)+li:before,.nav-links>li:has(.nav-link.active)+li:before{opacity:.55}.nav-link{position:relative;color:var(--color-text-secondary);font-family:var(--font-mono);font-size:.875rem;font-weight:400;text-decoration:none;padding:var(--space-sm) 0 var(--space-sm) .95rem;letter-spacing:.05em;text-transform:lowercase;transition:color var(--transition-fast)}.nav-link:hover,.nav-link.active{color:var(--color-text-primary)}.nav-link:focus-visible{outline:2px solid var(--color-accent-engineering);outline-offset:3px;border-radius:2px}.nav-link:before{content:"> ";position:absolute;left:0;top:50%;transform:translateY(-50%);color:var(--color-accent-engineering);font-family:var(--font-mono);font-size:.84rem;font-weight:500;opacity:.28;transition:opacity var(--transition-base),color var(--transition-base)}.nav-link:hover:before,.nav-link.active:before{opacity:1}.hamburger{display:none;flex-direction:column;justify-content:space-around;width:28px;height:24px;background:transparent;border:none;cursor:pointer;padding:10px 8px;margin:-10px -8px;z-index:1001}.hamburger-line{width:100%;height:2px;background:var(--color-text-primary);border-radius:2px;transition:all var(--transition-base);transform-origin:center}.hamburger.active .hamburger-line:nth-child(1){transform:translateY(7px) rotate(45deg)}.hamburger.active .hamburger-line:nth-child(2){opacity:0;transform:translate(-20px)}.hamburger.active .hamburger-line:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.nav-menu{display:flex;align-items:center;gap:var(--space-lg)}.lang-switcher{display:flex;gap:2px;margin-left:var(--space-lg);padding-left:var(--space-lg);border-left:1px solid var(--color-border-default)}.lang-btn{padding:var(--space-xs) var(--space-sm);font-size:.85rem;font-weight:500;color:var(--color-text-muted);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);transition:all var(--transition-fast);cursor:pointer}.lang-btn:hover{color:var(--color-text-secondary);border-color:var(--color-border-default)}.lang-btn.active{color:var(--color-text-primary);background:#2e344066;border:1px solid var(--color-border-strong)}.lang-cycle-btn{display:none}@keyframes pageFadeIn{0%{opacity:0}to{opacity:1}}.main .container>*{animation:pageFadeIn .2s ease both}.main{flex:1;margin-top:var(--app-nav-height, 70px);padding:var(--space-xl) var(--space-lg);min-height:calc(100vh - var(--app-nav-height, 70px))}.main.main--home{padding:0;min-height:calc(100vh - var(--app-nav-height, 56px))}.main--home>.container{width:100%;max-width:none;padding:0}.footer{padding:var(--space-xl) var(--space-lg) var(--space-lg);text-align:center;border-top:1px solid var(--color-border-default);background:linear-gradient(180deg,transparent 0%,var(--color-bg-surface) 100%)}.footer .container{display:flex;flex-direction:column;align-items:center;gap:var(--space-md)}.footer-social{display:flex;justify-content:center;gap:var(--space-md);margin:0}.footer-social-link{color:var(--color-text-muted);transition:color var(--transition-base),opacity var(--transition-base);display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-sm);border:1px solid transparent;opacity:.6}.footer-social-link:hover{color:var(--color-text-primary);opacity:1;border-color:var(--color-border-default);background:var(--color-bg-raised)}.footer-social-link:focus-visible{outline:2px solid var(--color-accent-engineering);outline-offset:3px;border-radius:var(--radius-sm)}.footer-text{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted);margin:0;letter-spacing:.04em;opacity:.7}.footer-text:before{content:"> ";color:var(--color-accent-engineering);opacity:.5}.footer-privacy-link{color:inherit;text-decoration:none}.footer-privacy-link:hover,.footer-privacy-link:focus-visible{text-decoration:underline}@media(max-width:768px){.nav-container{padding:0 var(--space-md)}.nav-menu{display:none}.main{padding:var(--space-lg) var(--space-md);padding-bottom:calc(var(--app-bottom-nav-height, 64px) + env(safe-area-inset-bottom) + var(--space-lg))}.lang-cycle-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-lg);border:1px solid var(--color-border-strong, rgba(255,255,255,.15));background:transparent;color:var(--color-text-secondary);font-family:var(--font-mono, "IBM Plex Mono", monospace);font-size:.75rem;font-weight:600;letter-spacing:.05em;cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast);-webkit-tap-highlight-color:transparent}.lang-cycle-btn:active{color:var(--color-text-primary);border-color:var(--color-accent-engineering)}.footer{padding-bottom:calc(var(--app-bottom-nav-height, 64px) + env(safe-area-inset-bottom) + var(--space-xl))}.app--projects-index .footer{padding-bottom:calc(var(--app-bottom-nav-height, 64px) + env(safe-area-inset-bottom) + 148px + var(--space-lg))}}.error-boundary{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;text-align:center;padding:2rem}.error-boundary-title{font-size:1.5rem;color:var(--color-text-primary)}.error-boundary-description{color:var(--color-text-secondary);margin-top:.75rem}.error-boundary-actions{display:flex;gap:1rem;margin-top:2rem}.error-boundary-actions .btn-secondary{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border-strong);text-decoration:none;padding:.6rem 1.5rem;border-radius:var(--radius-md)}.error-boundary-actions .btn-secondary:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}body.neural-graph-active{overflow:hidden}@media(max-width:768px){body.neural-graph-active{overflow:hidden}}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-cyrillic-ext-600-normal-DXSZftVr.woff2) format("woff2"),url(/assets/ibm-plex-serif-cyrillic-ext-600-normal-CDMeBxaJ.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 Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-cyrillic-600-normal-6oiym5iu.woff2) format("woff2"),url(/assets/ibm-plex-serif-cyrillic-600-normal-C8YEAlRA.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-vietnamese-600-normal-BBruYZNA.woff2) format("woff2"),url(/assets/ibm-plex-serif-vietnamese-600-normal-DZRaS25B.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 Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-latin-ext-600-normal-CU6LeQOd.woff2) format("woff2"),url(/assets/ibm-plex-serif-latin-ext-600-normal-D1-_Ic5L.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 Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-latin-600-normal-DAxitmSu.woff2) format("woff2"),url(/assets/ibm-plex-serif-latin-600-normal-D3rpGdkS.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 Serif";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-serif-cyrillic-ext-700-normal-CFcTJr1V.woff2) format("woff2"),url(/assets/ibm-plex-serif-cyrillic-ext-700-normal-Dq7XTXEq.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 Serif";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-serif-cyrillic-700-normal-BSMLrh7C.woff2) format("woff2"),url(/assets/ibm-plex-serif-cyrillic-700-normal-CHVzwaSb.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-serif-vietnamese-700-normal-hPmb8oh_.woff2) format("woff2"),url(/assets/ibm-plex-serif-vietnamese-700-normal-B3aSYR1A.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 Serif";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-serif-latin-ext-700-normal-BoBbeF2z.woff2) format("woff2"),url(/assets/ibm-plex-serif-latin-ext-700-normal-5BnP_gGI.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 Serif";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-serif-latin-700-normal-bnJnpGuO.woff2) format("woff2"),url(/assets/ibm-plex-serif-latin-700-normal-BBiG0u0D.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.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 Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-cyrillic-ext-700-normal-BmRLXWpJ.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-700-normal-DCQwxkRk.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 Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-cyrillic-700-normal-D_uavGvn.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-700-normal-RFb1v-CK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-greek-700-normal-wyJ6jzdA.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-700-normal-CkZN0sRy.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-vietnamese-700-normal-CkEo6LDy.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-700-normal-BV5B8Are.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 Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-ext-700-normal-aMgXseD4.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-700-normal-DZH6Xh-4.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 Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.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: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}.brand-glyph{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:0;transition:transform var(--transition-fast, .15s ease)}.brand-glyph svg{display:block}a:hover .brand-glyph,button:hover .brand-glyph,.neural-project-cta:hover .brand-glyph,.ntt-cta:hover .brand-glyph,.ntt-kb-link:hover .brand-glyph,.btn:hover .brand-glyph{transform:rotate(18deg) scale(1.06)}@media(prefers-reduced-motion:reduce){.brand-glyph{transition:none}a:hover .brand-glyph,button:hover .brand-glyph,.neural-project-cta:hover .brand-glyph,.ntt-cta:hover .brand-glyph,.ntt-kb-link:hover .brand-glyph,.btn:hover .brand-glyph{transform:none}}:root{--color-bg-canvas: #0E1116;--color-bg-surface: #151A21;--color-bg-raised: #1D242D;--color-text-primary: #F4F1EA;--color-text-secondary: #B8C0CA;--color-text-muted: #7D8896;--color-border-default: #2A3440;--color-border-strong: #46515F;--color-accent-engineering: #4CC9F0;--color-accent-art: #F25F5C;--color-accent-research: #B8F24B;--color-node-collab: #1D242D;--color-node-collab-border: #46515F;--bg-primary: var(--color-bg-canvas);--bg-secondary: var(--color-bg-canvas);--bg-tertiary: var(--color-bg-raised);--bg-card: var(--color-bg-surface);--text-primary: var(--color-text-primary);--text-secondary: var(--color-text-secondary);--text-tertiary: var(--color-text-muted);--accent-primary: var(--color-accent-engineering);--accent-secondary: var(--color-text-secondary);--accent-tertiary: var(--color-text-primary);--border-subtle: var(--color-border-default);--border-medium: var(--color-border-strong);--border-accent: var(--color-border-strong);--color-theme: var(--color-text-muted);--color-medium: var(--color-accent-art);--color-person: var(--color-node-collab);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4);--shadow-md: 0 4px 8px rgba(0, 0, 0, .5);--shadow-lg: 0 10px 24px rgba(0, 0, 0, .6);--shadow-glow: none;--font-display: "IBM Plex Serif", Georgia, serif;--font-body: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "IBM Plex Mono", "Fira Code", monospace;--font-size-xs: 13px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 20px;--font-size-xl: 25px;--font-size-2xl: 31px;--font-size-3xl: 39px;--font-size-4xl: 49px;--font-size-5xl: 61px;--font-size-hero: clamp(3.25rem, 8vw, 7.5rem);--line-height-display: 1.05;--line-height-headline: 1.2;--line-height-body: 1.5;--line-height-caption: 1.35;--letter-spacing-caps: .08em;--letter-spacing-display: -.02em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-9: 36px;--space-10: 40px;--space-11: 44px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--space-24: 96px;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 8px;--radius-xl: 14px;--app-nav-height: 56px;--app-footer-height: 0px;--touch-target-min: 44px;--touch-target-comfortable: 48px;--motion-fast: .12s;--motion-base: .18s;--motion-slow: .32s;--motion-xslow: .52s;--transition-fast: var(--motion-fast) var(--easing-standard);--transition-base: var(--motion-base) var(--easing-standard);--transition-slow: var(--motion-slow) var(--easing-standard);--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-expressive: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--easing-standard: var(--ease-standard);--easing-expressive: var(--ease-expressive);--shadow-focus: 0 0 0 3px rgba(76, 201, 240, .4);--accent-gradient: linear-gradient(135deg, var(--color-accent-engineering) 0%, var(--color-text-secondary) 50%, var(--color-text-primary) 100%)}.display-name-emphasis,.neural-hero-title-emphasis,.cv-name-emphasis{font-style:italic}.subnav-control-surface{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:.8rem;background:linear-gradient(180deg,#121212f5,#121212d6),#121212e6;border:1px solid rgba(255,255,255,.06);border-radius:var(--radius-xl);box-shadow:0 8px 24px #0003;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.subnav-control-btn{position:relative;overflow:hidden;isolation:isolate;min-width:0;min-height:50px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:.82rem .95rem;color:var(--text-secondary);background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);cursor:pointer;transition:border-color .2s ease,background .2s ease,color .2s ease,box-shadow .2s ease,opacity .2s ease,transform .2s ease;-webkit-tap-highlight-color:transparent}.subnav-control-btn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#a6a6a64d,#76767638);transform-origin:left center;transform:scaleX(var(--long-press-progress, 0));opacity:0;transition:transform 90ms linear,opacity .18s ease;pointer-events:none;z-index:0}.subnav-control-btn>*{position:relative;z-index:1}.subnav-control-btn:hover{color:var(--color-text-primary);border-color:color-mix(in srgb,var(--color-accent-engineering) 28%,rgba(255,255,255,.08))}.subnav-control-btn:focus-visible{outline:2px solid var(--color-accent-engineering);outline-offset:2px}.subnav-control-btn:active{transform:scale(.96)}.subnav-control-btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.subnav-control-btn--primary{color:var(--color-text-primary)}.subnav-control-btn--active{color:var(--color-text-primary);border-color:var(--color-accent-engineering);background:#ffffff12;box-shadow:0 0 0 1px color-mix(in srgb,var(--color-accent-engineering) 18%,transparent)}.subnav-control-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.subnav-control-icon svg{width:100%;height:100%;flex-shrink:0}.subnav-control-label{min-width:0;font-size:.76rem;font-family:var(--font-mono);font-weight:600;line-height:1;letter-spacing:.02em;white-space:nowrap}@media(max-width:420px){.subnav-control-surface{gap:8px;padding:.62rem}.subnav-control-btn{min-height:48px;gap:6px;padding:.72rem}.subnav-control-label{font-size:.7rem}}@media(max-width:380px){.subnav-control-btn{padding-inline:.68rem}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-body);font-size:1rem;line-height:1.6;color:var(--color-text-primary);background-color:var(--color-bg-canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:700;line-height:1.15;color:var(--color-text-primary);letter-spacing:-.01em}h1:before,h2:before,h3:before,h4:before,h5:before,h6:before{content:"> ";font-family:var(--font-mono, "IBM Plex Mono", monospace);font-weight:500;color:var(--color-accent-engineering, #4CC9F0);letter-spacing:normal}h1{font-size:clamp(1.75rem,4vw,2.75rem);font-weight:700;letter-spacing:-.02em}h2{font-size:clamp(1.35rem,2.5vw,2rem)}h3{font-size:clamp(1.1rem,1.8vw,1.5rem)}p{color:var(--color-text-secondary);margin-bottom:1rem}a{color:var(--color-accent-engineering);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-text-primary)}::selection{background:#4cc9f02e;color:var(--color-text-primary)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-canvas)}::-webkit-scrollbar-thumb{background:var(--color-border-default);border-radius:var(--radius-md)}::-webkit-scrollbar-thumb:hover{background:var(--color-border-strong)}:focus-visible{outline:1px solid var(--color-accent-engineering);outline-offset:2px}.container{width:100%;max-width:1400px;margin:0 auto;padding:0 var(--space-lg)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skeleton{position:relative;overflow:hidden;background:#ffffff0f}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.09) 50%,transparent 100%);transform:translate(-100%);animation:skeletonShimmer 1.6s ease-in-out infinite}@keyframes skeletonShimmer{to{transform:translate(100%)}}img{max-width:100%;height:auto;display:block}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none}input,textarea,select{font-family:inherit;font-size:inherit}ul,ol{list-style:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:9998;pointer-events:none;opacity:.022;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px;mix-blend-mode:soft-light}html.app-ready .prerender-fallback{display:none}
