@font-face{font-display:swap;font-family:Onest Variable;font-style:normal;font-weight:100 900;src:url(/static/media/onest-cyrillic-ext-wght-normal.55ef23b55eb1a7d0112d.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-display:swap;font-family:Onest Variable;font-style:normal;font-weight:100 900;src:url(/static/media/onest-cyrillic-wght-normal.6a40b71686e23c82715d.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Onest Variable;font-style:normal;font-weight:100 900;src:url(/static/media/onest-math-wght-normal.f804fb6d6e9c537a5af1.woff2) format("woff2-variations");unicode-range:u+0302-0303,u+0305,u+0307-0308,u+0310,u+0312,u+0315,u+031a,u+0326-0327,u+032c,u+032f-0330,u+0332-0333,u+0338,u+033a,u+0346,u+034d,u+0391-03a1,u+03a3-03a9,u+03b1-03c9,u+03d1,u+03d5-03d6,u+03f0-03f1,u+03f4-03f5,u+2016-2017,u+2034-2038,u+203c,u+2040,u+2043,u+2047,u+2050,u+2057,u+205f,u+2070-2071,u+2074-208e,u+2090-209c,u+20d0-20dc,u+20e1,u+20e5-20ef,u+2100-2112,u+2114-2115,u+2117-2121,u+2123-214f,u+2190,u+2192,u+2194-21ae,u+21b0-21e5,u+21f1-21f2,u+21f4-2211,u+2213-2214,u+2216-22ff,u+2308-230b,u+2310,u+2319,u+231c-2321,u+2336-237a,u+237c,u+2395,u+239b-23b7,u+23d0,u+23dc-23e1,u+2474-2475,u+25af,u+25b3,u+25b7,u+25bd,u+25c1,u+25ca,u+25cc,u+25fb,u+266d-266f,u+27c0-27ff,u+2900-2aff,u+2b0e-2b11,u+2b30-2b4c,u+2bfe,u+3030,u+ff5b,u+ff5d,u+1d400-1d7ff,u+1ee??}@font-face{font-display:swap;font-family:Onest Variable;font-style:normal;font-weight:100 900;src:url(/static/media/onest-symbols-wght-normal.efb0d56d1de0903bbd68.woff2) format("woff2-variations");unicode-range:u+0001-000c,u+000e-001f,u+007f-009f,u+20dd-20e0,u+20e2-20e4,u+2150-218f,u+2190,u+2192,u+2194-2199,u+21af,u+21e6-21f0,u+21f3,u+2218-2219,u+2299,u+22c4-22c6,u+2300-243f,u+2440-244a,u+2460-24ff,u+25a0-27bf,u+28??,u+2921-2922,u+2981,u+29bf,u+29eb,u+2b??,u+4dc0-4dff,u+fff9-fffb,u+10140-1018e,u+10190-1019c,u+101a0,u+101d0-101fd,u+102e0-102fb,u+10e60-10e7e,u+1d2c0-1d2d3,u+1d2e0-1d37f,u+1f0??,u+1f100-1f1ad,u+1f1e6-1f1ff,u+1f30d-1f30f,u+1f315,u+1f31c,u+1f31e,u+1f320-1f32c,u+1f336,u+1f378,u+1f37d,u+1f382,u+1f393-1f39f,u+1f3a7-1f3a8,u+1f3ac-1f3af,u+1f3c2,u+1f3c4-1f3c6,u+1f3ca-1f3ce,u+1f3d4-1f3e0,u+1f3ed,u+1f3f1-1f3f3,u+1f3f5-1f3f7,u+1f408,u+1f415,u+1f41f,u+1f426,u+1f43f,u+1f441-1f442,u+1f444,u+1f446-1f449,u+1f44c-1f44e,u+1f453,u+1f46a,u+1f47d,u+1f4a3,u+1f4b0,u+1f4b3,u+1f4b9,u+1f4bb,u+1f4bf,u+1f4c8-1f4cb,u+1f4d6,u+1f4da,u+1f4df,u+1f4e3-1f4e6,u+1f4ea-1f4ed,u+1f4f7,u+1f4f9-1f4fb,u+1f4fd-1f4fe,u+1f503,u+1f507-1f50b,u+1f50d,u+1f512-1f513,u+1f53e-1f54a,u+1f54f-1f5fa,u+1f610,u+1f650-1f67f,u+1f687,u+1f68d,u+1f691,u+1f694,u+1f698,u+1f6ad,u+1f6b2,u+1f6b9-1f6ba,u+1f6bc,u+1f6c6-1f6cf,u+1f6d3-1f6d7,u+1f6e0-1f6ea,u+1f6f0-1f6f3,u+1f6f7-1f6fc,u+1f7??,u+1f800-1f80b,u+1f810-1f847,u+1f850-1f859,u+1f860-1f887,u+1f890-1f8ad,u+1f8b0-1f8bb,u+1f8c0-1f8c1,u+1f900-1f90b,u+1f93b,u+1f946,u+1f984,u+1f996,u+1f9e9,u+1fa00-1fa6f,u+1fa70-1fa7c,u+1fa80-1fa89,u+1fa8f-1fac6,u+1face-1fadc,u+1fadf-1fae9,u+1faf0-1faf8,u+1fb??}@font-face{font-display:swap;font-family:Onest Variable;font-style:normal;font-weight:100 900;src:url(/static/media/onest-vietnamese-wght-normal.38f4c848b613014dabfa.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-display:swap;font-family:Onest Variable;font-style:normal;font-weight:100 900;src:url(/static/media/onest-latin-ext-wght-normal.ac1c020ee1960e51b1dd.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-display:swap;font-family:Onest Variable;font-style:normal;font-weight:100 900;src:url(/static/media/onest-latin-wght-normal.61e67dc12923318022ca.woff2) format("woff2-variations");unicode-range:u+00??,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-display:swap;font-family:JetBrains Mono Variable;font-style:normal;font-weight:100 800;src:url(/static/media/jetbrains-mono-cyrillic-ext-wght-normal.d539db020336f57425d6.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-display:swap;font-family:JetBrains Mono Variable;font-style:normal;font-weight:100 800;src:url(/static/media/jetbrains-mono-cyrillic-wght-normal.37ac7420bb0322435b68.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:JetBrains Mono Variable;font-style:normal;font-weight:100 800;src:url(/static/media/jetbrains-mono-greek-wght-normal.37f52feea3c5bd1fd627.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-display:swap;font-family:JetBrains Mono Variable;font-style:normal;font-weight:100 800;src:url(/static/media/jetbrains-mono-vietnamese-wght-normal.b8c38c3c8fb199cde7e7.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-display:swap;font-family:JetBrains Mono Variable;font-style:normal;font-weight:100 800;src:url(/static/media/jetbrains-mono-latin-ext-wght-normal.d4c248b90e9a0c38ac4c.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-display:swap;font-family:JetBrains Mono Variable;font-style:normal;font-weight:100 800;src:url(/static/media/jetbrains-mono-latin-wght-normal.6724bbc0741b07b1d0b2.woff2) format("woff2-variations");unicode-range:u+00??,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}.theme-toggle{align-items:center;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:999px;cursor:pointer;display:flex;height:26px;justify-content:space-between;padding:0 6px;position:relative;width:48px}.theme-toggle__thumb{background:var(--color-primary);border-radius:50%;box-shadow:var(--glow-primary);height:20px;left:2px;position:absolute;top:2px;width:20px;z-index:2}.theme-toggle__thumb,.theme-toggle__track-icon{align-items:center;display:flex;justify-content:center}.theme-toggle__track-icon{color:var(--color-text-muted);z-index:1}.theme-toggle__thumb-icon{color:var(--color-on-primary);height:12px;width:12px}@media (pointer:coarse){.theme-toggle:after{content:"";inset:-10px -6px;position:absolute}}.download-resume-btn{align-items:center;background:#0000;border:1px solid var(--color-border);border-radius:var(--radius-pill);color:var(--color-text-secondary);display:inline-flex;font-family:var(--font-sans);font-size:var(--fs-xs);font-weight:600;gap:var(--space-2);padding:.5rem .9rem;transition:border-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.download-resume-btn:hover{border-color:var(--color-primary);box-shadow:var(--glow-primary);color:var(--color-primary)}.download-resume-btn svg{height:15px;width:15px}@media (max-width:768px){.download-resume-btn span{display:none}.download-resume-btn{padding:.5rem}}.header{backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);background:color-mix(in srgb,var(--color-bg) 72%,#0000);border-bottom:1px solid color-mix(in srgb,var(--color-border) 60%,#0000);position:-webkit-sticky;position:sticky;top:0;z-index:50}@media (prefers-reduced-motion:no-preference){.header{animation:header-in .5s var(--ease-out) both}}@keyframes header-in{0%{opacity:0;transform:translateY(-12px)}}@media (prefers-reduced-transparency:reduce){.header{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--color-bg)}}.header__inner{align-items:center;display:grid;grid-template-columns:1fr auto 1fr;height:68px}.header__logo{color:var(--color-text-primary);font-size:var(--fs-md);font-weight:600;justify-self:start;letter-spacing:-.02em}.header__logo-dot{color:var(--color-primary)}.header__nav{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-pill);display:flex;gap:2px;padding:4px}.header__nav-link{border-radius:var(--radius-pill);color:var(--color-text-muted);font-size:var(--fs-sm);padding:.45rem 1rem;transition:color var(--duration-fast) ease,background-color var(--duration-fast) ease}@media (hover:hover) and (pointer:fine){.header__nav-link:hover{background:var(--color-bg-card);color:var(--color-text-primary)}}.header__actions{align-items:center;display:flex;gap:var(--space-3);justify-self:end}@media (max-width:768px){.header__inner{display:flex;justify-content:space-between}.header__nav{display:none}}.header__progress{background:var(--color-primary);bottom:-1px;height:2px;left:0;position:absolute;right:0;transform-origin:left}.header__nav-link{position:relative}.header__nav-text{position:relative;z-index:1}.header__nav-pill{background:var(--color-primary-solid);border-radius:var(--radius-pill);inset:0;position:absolute}.header__nav-link.is-active{color:var(--color-on-primary)}@media (hover:hover) and (pointer:fine){.header__nav-link.is-active:hover{background:#0000;color:var(--color-on-primary)}}.header__burger{border:1px solid var(--color-border-hover);border-radius:var(--radius-pill);display:none;height:44px;position:relative;width:44px}.header__burger span{background:var(--color-text-primary);height:2px;left:13px;position:absolute;right:13px;transition:top .35s var(--ease-out),transform .35s var(--ease-out)}.header__burger span:first-child{top:16px}.header__burger span:nth-child(2){top:24px}.header__burger.is-open span:first-child{top:20px;transform:rotate(45deg)}.header__burger.is-open span:nth-child(2){top:20px;transform:rotate(-45deg)}.mobile-menu{display:none;flex-direction:column;inset:0;justify-content:center;padding:calc(68px + var(--space-5)) var(--space-5) var(--space-6);position:fixed;transform:translateY(-100%);transition:transform .6s var(--ease-in-out),visibility 0s linear .6s;visibility:hidden;z-index:45}.mobile-menu.is-open{transform:none;transition:transform .6s var(--ease-in-out),visibility 0s;visibility:visible}.mobile-menu__link{color:var(--color-text-primary);display:block;font-size:clamp(2.6rem,14vw,4.75rem);font-weight:800;letter-spacing:-.03em;line-height:1.08;opacity:0;padding:.08em 0;transition:opacity .3s ease,translate .3s ease;translate:0 24px}.mobile-menu.is-open .mobile-menu__link{opacity:1;transition:opacity .5s ease,translate .6s var(--ease-out);transition-delay:calc(.25s + var(--i)*70ms);translate:0 0}@media (max-width:768px){.header__burger{display:block}.mobile-menu{display:flex}}.footer{border-top:1px solid var(--color-border);padding:var(--space-6) 0}.footer__inner{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-5);justify-content:space-between}.footer__meta{display:flex;flex-direction:column;gap:var(--space-1)}.footer__name{color:var(--color-text-secondary);font-size:var(--fs-sm)}.footer__log{color:var(--color-text-muted);font-size:var(--fs-xs)}.footer__links{display:flex;gap:var(--space-2)}.footer__link{align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-pill);color:var(--color-text-secondary);display:inline-flex;font-size:var(--fs-sm);gap:var(--space-2);padding:.5rem 1rem;transition:color var(--duration-fast) ease,border-color var(--duration-fast) ease}@media (hover:hover) and (pointer:fine){.footer__link:hover{border-color:var(--color-primary);color:var(--color-primary)}}.resume-pdf{display:none}@media print{@page{size:A4;margin:12mm 15mm 16mm}body,html{background:#fff!important;background-image:none!important;overflow:visible!important}#root>:not(.resume-pdf),body:after,body:before{display:none!important}.resume-pdf{color:#16131e;display:block!important;font-family:Onest Variable,Onest,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:10.5pt;line-height:1.45;position:static;-webkit-print-color-adjust:exact;print-color-adjust:exact;width:100%}.resume-pdf__header{align-items:center;border-bottom:2px solid #b22222;display:flex;gap:16px;margin-bottom:12px;padding-bottom:12px;position:relative}.resume-pdf__photo{border:2px solid #b22222;border-radius:50%;box-shadow:0 0 0 3px #f6e4e4;flex-shrink:0;height:62px;object-fit:cover;width:62px}.resume-pdf__heading h1{color:#16131e;font-size:20pt;font-weight:700;letter-spacing:-.01em;margin:0 0 3px}.resume-pdf__role{color:#5b5670;font-size:10.5pt;font-weight:600}.resume-pdf__pitch{border-left:2px solid #d9d6e2;color:#4a4558;font-size:9.5pt;margin-bottom:16px;padding-left:10px}.resume-pdf__columns{display:flex;gap:22px}.resume-pdf__col--main{flex:1.6 1}.resume-pdf__col--side{border-left:1px solid #d9d6e2;flex:1 1;padding-left:18px}.resume-pdf__section{break-inside:avoid;margin-bottom:15px;page-break-inside:avoid}.resume-pdf__section h2{align-items:center;color:#b22222;display:flex;font-size:8.5pt;font-weight:700;gap:6px;letter-spacing:.1em;margin-bottom:9px;text-transform:uppercase}.resume-pdf__section h2:before{background:#b22222;border-radius:50%;content:"";flex-shrink:0;height:6px;width:6px}.resume-pdf__section--contacts{border-bottom:1px solid #d9d6e2;margin-bottom:18px;padding-bottom:14px}.resume-pdf__contacts{display:flex;flex-direction:column;gap:7px;list-style:none}.resume-pdf__contacts li{align-items:center;color:#4a4558;display:flex;font-size:8.8pt;gap:8px}.resume-pdf__contact-icon{align-items:center;background:#efedf4;border-radius:6px;color:#5b5670;display:flex;flex-shrink:0;height:20px;justify-content:center;width:20px}.resume-pdf__contact-icon svg{height:11px;width:11px}.resume-pdf__project,.resume-pdf__timeline-item{break-inside:avoid;margin-bottom:10px;page-break-inside:avoid}.resume-pdf__project{background:#f7f6fa;border:1px solid #e4e1ec;border-radius:8px;padding:8px 10px}.resume-pdf__project-top{align-items:baseline;display:flex;gap:8px;justify-content:space-between}.resume-pdf__project h3,.resume-pdf__timeline-item h3{color:#16131e;font-size:10pt;font-weight:700}.resume-pdf__project-link{color:#5b5670;font-family:JetBrains Mono Variable,JetBrains Mono,monospace;font-size:7.5pt;white-space:nowrap}.resume-pdf__project p,.resume-pdf__timeline-item p{color:#4a4558;font-size:9pt;margin-top:3px}.resume-pdf__tags{display:flex;flex-wrap:wrap;gap:4px;list-style:none;margin-top:6px}.resume-pdf__tags li{background:#fff;border:1px solid #b2222255;border-radius:999px;color:#b22222;font-size:7.5pt;font-weight:600;padding:1px 8px}.resume-pdf__timeline-item{display:flex;gap:10px;padding-left:12px;position:relative}.resume-pdf__timeline-item:before{background:#5b5670;border-radius:50%;content:"";height:6px;left:0;position:absolute;top:4px;width:6px}.resume-pdf__period{color:#6a647a;flex-shrink:0;font-family:JetBrains Mono Variable,JetBrains Mono,monospace;font-size:8pt;padding-top:1px;width:78px}.resume-pdf__skills{list-style:none}.resume-pdf__skills li{border-bottom:1px dashed #d9d6e2;break-inside:avoid;display:flex;flex-direction:column;margin-bottom:9px;padding-bottom:9px;page-break-inside:avoid}.resume-pdf__skills li:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.resume-pdf__skills strong{color:#16131e;font-size:9.5pt}.resume-pdf__skills span{color:#6a647a;font-size:8pt;margin-top:2px}.resume-pdf__footer{border-top:1px solid #d9d6e2;color:#8c869e;display:flex;font-family:JetBrains Mono Variable,JetBrains Mono,monospace;font-size:7.5pt;justify-content:space-between;margin-top:18px;padding-top:8px}}.btn{align-items:center;border-radius:var(--radius-pill);display:inline-flex;font-family:var(--font-sans);font-size:.95rem;font-weight:600;gap:var(--space-2);justify-content:center;letter-spacing:-.005em;padding:.95rem 1.8rem;transition:background-color var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out);white-space:nowrap}.btn--primary{background:var(--color-primary-solid);color:var(--color-on-primary)}.btn--outline{background:#0000;border:var(--border-width) solid var(--color-border-hover);color:var(--color-text-primary)}@media (hover:hover) and (pointer:fine){.btn--primary:hover{background:color-mix(in srgb,var(--color-primary-solid) 86%,var(--color-text-primary))}.btn--outline:hover{border-color:var(--color-primary);color:var(--color-primary)}}.btn{overflow:hidden;position:relative}.btn--primary:after{background:linear-gradient(105deg,#0000 35%,#ffffff59 50%,#0000 65%);content:"";inset:0;pointer-events:none;position:absolute;transform:translateX(-120%)}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.btn--primary:hover:after{transform:translateX(120%);transition:transform .7s var(--ease-out)}}.hero{align-items:stretch;display:flex;height:calc(100dvh - 68px);min-height:600px;overflow:hidden;padding:var(--space-5) 0 var(--space-6);position:relative}.hero__wrap{grid-gap:var(--space-5);display:grid;gap:var(--space-5);grid-template-rows:minmax(0,1fr) auto;position:relative;z-index:1}.hero__grid{grid-gap:var(--space-6);display:grid;gap:var(--space-6);grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);min-height:0}.hero__main{align-self:center;container-type:inline-size}.hero__title{color:var(--color-text-primary);font-size:min(10.5vw,24vh);font-weight:800;letter-spacing:-.02em;line-height:1;text-transform:uppercase}@supports (width:1cqw){.hero__title{font-size:min(19cqw,24vh)}}.hero__greeting{color:var(--color-text-secondary);display:block;font-size:clamp(1.75rem,2.2vw,2.75rem);font-weight:300;letter-spacing:-.01em;line-height:1.2;margin-bottom:.3em;text-transform:none}.hero__wmask,.hero__word{display:block}.hero__wmask{margin-bottom:-.14em;overflow:hidden;padding:0 .06em .14em 0}.hero__wtext{display:block;white-space:nowrap}.hero__wtext--scarlet{color:var(--color-primary)}.hero__visual{min-height:0;min-width:0}.hero__photo{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);height:100%;margin:0;overflow:hidden;width:100%}.hero__photo-img{height:100%;object-fit:cover;object-position:50% 25%;transition:transform 1.4s cubic-bezier(.22,1,.36,1);width:100%}@media (hover:hover) and (pointer:fine){.hero__photo:hover .hero__photo-img{transform:scale(1.035)}}.hero__dock{align-items:center;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);display:flex;gap:var(--space-6);justify-content:space-between;padding:var(--space-4) var(--space-5)}.hero__copy{min-width:0}.hero__role{color:var(--color-text-muted);font-size:var(--fs-sm);line-height:1.4;margin-bottom:var(--space-1)}.hero__pitch{text-wrap:pretty;color:var(--color-text-secondary);font-size:.98rem;line-height:1.5;max-width:68ch}.hero__cta{display:flex;flex-shrink:0;gap:var(--space-3)}.hero__bg{inset:0;overflow:hidden;pointer-events:none;position:absolute;z-index:0}.hero__bg:after{background:linear-gradient(to bottom,#0000 55%,var(--color-bg) 100%);content:"";inset:0;position:absolute}.hero__bgl{font-size:min(24vw,42vh);font-weight:800;inset:2% -3% auto -3%;letter-spacing:-.02em;line-height:.92;position:absolute;text-transform:uppercase;white-space:nowrap}.hero__bgw{display:block;will-change:transform}.hero__bgw--a{text-align:right}.hero__bgl--glow{color:#0000;opacity:.32;text-shadow:0 0 24px var(--color-primary)}.hero__bgl--body{color:#0000;opacity:.1;text-shadow:0 0 9px var(--color-text-primary)}.hero__bgl--trace{color:var(--color-primary);opacity:.07;text-shadow:0 0 3px var(--color-primary)}@media (prefers-reduced-motion:no-preference){.hero__wtext{animation:hero-word 1.1s var(--ease-out) both;animation-delay:calc(var(--w)*.14s + .2s)}.hero__greeting{animation:hero-rise .9s var(--ease-out) .1s both}.hero__photo{animation:hero-photo 1.3s var(--ease-out) .35s both}.hero__photo-img{animation:hero-photo-img 1.6s var(--ease-out) .35s backwards}.hero__dock{animation:hero-rise 1s var(--ease-out) .8s both}.hero__bg{animation:hero-bg-in 1.8s var(--ease-out) .2s backwards}}@keyframes hero-word{0%{transform:translateY(110%)}}@keyframes hero-rise{0%{opacity:0;transform:translateY(20px)}}@keyframes hero-photo{0%{-webkit-clip-path:inset(100% 0 0 0 round 28px);clip-path:inset(100% 0 0 0 round 28px)}to{-webkit-clip-path:inset(0 0 0 0 round 28px);clip-path:inset(0 0 0 0 round 28px)}}@keyframes hero-photo-img{0%{transform:scale(1.25)}}@keyframes hero-bg-in{0%{opacity:0}}@media (max-height:520px),(max-width:900px){.hero{height:auto;min-height:0;padding-top:var(--space-6)}.hero__wrap{grid-template-rows:none}.hero__grid{gap:var(--space-5);grid-template-columns:1fr}.hero__photo{aspect-ratio:4/3;height:auto}.hero__dock{align-items:stretch;flex-direction:column;gap:var(--space-5);padding:var(--space-5)}.hero__cta{flex-wrap:wrap}.hero__cta .btn{flex:1 1 auto}.hero__bgl--body,.hero__bgl--trace{display:none}}@media (max-width:900px){.hero__title{font-size:19vw}.hero__bgl{font-size:30vw}}@supports (width:1cqw){@media (max-width:900px){.hero__title{font-size:20cqw}}}.section-heading{margin-bottom:var(--space-8)}.section-heading__title{font-size:var(--fs-h2);font-weight:600;letter-spacing:-.05em;line-height:1;margin-bottom:var(--space-5)}.section-heading__desc{color:var(--color-text-muted);font-size:var(--fs-md);max-width:52ch}.section-heading--lead .section-heading__desc{color:var(--color-text-secondary);font-size:clamp(1.25rem,2.2vw,1.75rem);letter-spacing:-.015em;line-height:1.35;max-width:48ch}.section-heading__mask{display:inline-block;margin-bottom:-.14em;margin-right:.14em;overflow:hidden;padding-bottom:.14em;padding-right:.1em;vertical-align:top}.section-heading__word{display:inline-block}.scroll-text{color:var(--color-text-primary);font-size:clamp(1.9rem,4.4vw,4.2rem);font-weight:500;letter-spacing:-.04em;line-height:1.12;margin-bottom:var(--space-9);max-width:24em}.scroll-text__word{display:inline-block;will-change:opacity}.skills__pin{height:calc(100vh + var(--n)*40vh)}.skills__sticky{grid-gap:var(--space-8);align-items:center;display:grid;gap:var(--space-8);grid-template-columns:minmax(0,7fr) minmax(0,5fr);height:100vh;height:100dvh;padding-top:68px;position:-webkit-sticky;position:sticky;top:0}.skills__item{font-size:min(7.2vw,9.4vh);letter-spacing:-.05em;line-height:1.06;position:relative}.skills__name{color:var(--color-text-muted);display:block;font:inherit;font-weight:600;letter-spacing:inherit;opacity:1;text-align:left;transition:color .3s ease,translate .45s var(--ease-out),opacity .4s ease}.skills__item--primary .skills__name{font-weight:800}.skills__item--future .skills__name{font-weight:300}.skills__item[data-d="1"] .skills__name{opacity:.7}.skills__item[data-d="2"] .skills__name{opacity:.5}.skills__item[data-d="3"] .skills__name{opacity:.36}.skills__item:before{background:var(--color-primary);content:"";height:.1em;left:0;margin-top:-.05em;position:absolute;top:50%;transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease-out);width:.2em}.skills__item.is-active:before{transform:scaleX(1)}.skills__item.is-active .skills__name{color:var(--color-primary);translate:.3em 0}.skills__inline{display:none}.skills__panel-wrap{min-height:clamp(280px,50vh,460px);position:relative}.skills__panel{--glow:#280e0e52;--hi:#ffffff8c;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:inset 0 1px 0 var(--hi),0 2px 4px #1e0a0a1f,0 24px 40px -14px var(--glow),0 70px 100px -34px var(--glow);display:flex;flex-direction:column;gap:var(--space-6);justify-content:space-between;min-height:clamp(280px,50vh,460px);padding:var(--space-6)}.skills__panel.on-scarlet{--glow:#b2222299;--hi:#ffffff47}.skills__panel.on-ink{--glow:#0a06088c;--hi:#ffffff24}[data-theme=dark] .skills__panel{--glow:#000000b3;--hi:#ffffff14}[data-theme=dark] .skills__panel.on-scarlet{--glow:#b222228c;--hi:#fff3}.skills__panel--future{border-color:var(--color-border-hover);border-style:dashed;box-shadow:none}.skills__note{color:var(--color-text-muted);font-size:var(--fs-xs)}.skills__detail{color:var(--color-text-primary);font-size:clamp(1.25rem,2vw,1.75rem);font-weight:500;letter-spacing:-.02em;line-height:1.3}.skills__panel-name{color:var(--color-primary);font-size:var(--fs-md);font-weight:700;letter-spacing:-.02em}@media (max-height:520px),(max-width:900px){.skills__pin{height:auto}.skills__sticky{display:block;height:auto;padding-top:0;position:static}.skills__panel-wrap{display:none}.skills__item{font-size:clamp(2rem,10vw,4rem);overflow-wrap:anywhere;padding:var(--space-3) 0}.skills__name{color:var(--color-text-primary);opacity:1!important;translate:none!important}.skills__item--primary .skills__name{color:var(--color-primary)}.skills__inline{text-wrap:pretty;color:var(--color-text-secondary);display:block;font-size:var(--fs-base);letter-spacing:0;line-height:1.5;margin-top:var(--space-2)}.skills__item:before{display:none}}.badge{align-items:center;border:1px solid var(--color-border-hover);border-radius:var(--radius-pill);color:var(--color-text-secondary);cursor:default;display:inline-flex;font-size:.74rem;padding:.3rem .8rem}.project-card{--ghost-base:var(--color-bg-card);background-color:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);flex-direction:column;gap:var(--space-7);min-height:clamp(320px,54vh,500px);overflow:hidden;padding:var(--space-7);position:-webkit-sticky;position:sticky;top:calc(92px + var(--i)*18px)}.project-card,.project-card__top{display:flex;justify-content:space-between}.project-card__top{align-items:flex-start;gap:var(--space-5)}.project-card__title{font-size:clamp(2.6rem,6.4vw,6rem);font-weight:700;letter-spacing:-.055em;line-height:.95;max-width:14ch}.project-card__links{display:flex;flex-shrink:0;gap:var(--space-2)}.project-card__icon-link{border:1px solid var(--color-border-hover);border-radius:var(--radius-pill);color:var(--color-text-primary);display:grid;height:48px;place-items:center;transition:background-color var(--duration-fast) ease,color var(--duration-fast) ease,border-color var(--duration-fast) ease;width:48px}@media (hover:hover) and (pointer:fine){.project-card__icon-link:hover{background:var(--color-text-primary);border-color:var(--color-text-primary);color:var(--color-bg)}}.project-card__bottom{grid-gap:var(--space-6);align-items:end;display:grid;gap:var(--space-6);grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}.project-card__description{color:var(--color-text-secondary);font-size:clamp(1rem,1.3vw,1.15rem);max-width:52ch}.project-card__tags{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:flex-end}@media (max-width:900px){.project-card{min-height:0;padding:var(--space-5);position:relative;transform:none!important}.project-card__bottom{grid-template-columns:1fr}.project-card__tags{justify-content:flex-start}}.project-card__mask{margin-bottom:-.16em;margin-right:.14em;overflow:hidden;padding-bottom:.16em;padding-right:.08em;vertical-align:top}.project-card__mask,.project-card__word{display:inline-block}.project-card__bottom,.project-card__top{position:relative;z-index:1}.project-card__ghost{align-items:flex-end;bottom:-6%;display:flex;flex-direction:column;pointer-events:none;position:absolute;right:-2%;-webkit-user-select:none;user-select:none;z-index:0}.project-card__ghost-word{color:color-mix(in srgb,var(--ghost-base) 90%,var(--color-text-primary));font-size:clamp(5rem,15vw,15rem);font-weight:800;letter-spacing:-.02em;line-height:.82;text-rendering:geometricPrecision;white-space:nowrap}@media (max-width:900px){.project-card__ghost-word{font-size:clamp(4rem,22vw,8rem)}}.project-card.on-ink,.project-card.on-scarlet{--ghost-base:var(--color-bg)}.projects__stack{display:flex;flex-direction:column;gap:14vh}@media (max-width:900px){.projects__stack{gap:var(--space-4)}}.timeline{padding-bottom:0}.timeline__pin{height:calc(100vh + var(--n)*22vh)}.timeline__sticky{display:flex;flex-direction:column;gap:var(--space-7);height:100vh;height:100dvh;justify-content:center;overflow:hidden;padding-top:68px;position:-webkit-sticky;position:sticky;top:0}.timeline__track{align-items:center;display:flex;gap:var(--space-5);padding:0 calc((100vw - min(80vw, 520px))/2);position:relative;width:-webkit-max-content;width:max-content;will-change:transform}.timeline__card{--ghost-base:var(--color-bg-card);background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);display:flex;flex:0 0 auto;flex-direction:column;gap:var(--space-6);justify-content:space-between;min-height:clamp(330px,50vh,440px);overflow:hidden;padding:var(--space-6);position:relative;translate:0 var(--dy);width:min(80vw,520px)}.timeline__ghost{bottom:-12%;color:color-mix(in srgb,var(--ghost-base) 90%,var(--color-text-primary));font-size:clamp(7rem,15vw,13rem);font-weight:800;letter-spacing:-.02em;line-height:.82;pointer-events:none;position:absolute;right:-4%;text-rendering:geometricPrecision;-webkit-user-select:none;user-select:none;white-space:nowrap}.timeline__period,.timeline__text{position:relative;z-index:1}.timeline__period{color:var(--color-primary);font-size:clamp(1.4rem,2.6vw,2.2rem);font-weight:800;letter-spacing:-.05em;line-height:1.05}.timeline__title{font-size:clamp(1.35rem,2.2vw,1.9rem);letter-spacing:-.04em;margin-bottom:var(--space-2)}.timeline__description{color:var(--color-text-secondary)}.timeline__bar{background:var(--color-border);height:2px;margin:0 var(--space-6)}.timeline__bar-fill{background:var(--color-primary);display:block;height:100%;transform-origin:left}@media (max-height:520px),(max-width:900px){.timeline__pin{height:auto}.timeline__sticky{height:auto;overflow:visible;padding-top:0;position:static}.timeline__track{align-items:stretch;flex-direction:column;padding:0 var(--space-5)}.timeline__card,.timeline__track{transform:none!important;width:auto}.timeline__card{filter:none!important;flex:none;min-height:0;opacity:1!important;overflow-wrap:anywhere;translate:none}.timeline__ghost{font-size:clamp(5rem,28vw,9rem);transform:none!important}.timeline__bar{display:none}}.timeline__card.on-ink,.timeline__card.on-scarlet{--ghost-base:var(--color-bg)}.contact__head{margin-bottom:var(--space-8)}.contact__title{font-size:clamp(3rem,9.5vw,9rem);font-weight:800;letter-spacing:-.055em;line-height:.98;margin-bottom:var(--space-5);max-width:13ch}.contact__highlight{font-weight:200}.contact__subtitle{color:var(--color-text-muted);font-size:var(--fs-md);margin-bottom:var(--space-6);max-width:40ch}.contact__list{border-top:1px solid var(--color-border)}.contact__row{grid-gap:var(--space-4);align-items:center;border-bottom:1px solid var(--color-border);display:grid;gap:var(--space-4);grid-template-columns:28px minmax(90px,200px) 1fr 16px;padding:var(--space-5) 0}.contact__icon,.contact__row{transition:color var(--duration-fast) ease}.contact__icon{color:var(--color-text-muted)}.contact__label{color:var(--color-text-primary);font-size:clamp(1.25rem,2.4vw,1.9rem);font-weight:600;letter-spacing:-.03em}.contact__handle{color:var(--color-text-muted);font-size:var(--fs-sm);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact__arrow{color:var(--color-text-muted);transition:transform var(--duration-base) var(--ease-out),color var(--duration-fast) ease}@media (hover:hover) and (pointer:fine){.contact__row:hover .contact__arrow,.contact__row:hover .contact__icon,.contact__row:hover .contact__label{color:var(--color-primary)}.contact__row:hover .contact__arrow{transform:translateX(6px)}}@media (max-width:600px){.contact__row{grid-template-columns:28px 1fr 16px}.contact__handle{display:none}}.contact__row{isolation:isolate;position:relative}.contact__row:before{background:var(--color-primary-soft);border-radius:var(--radius-sm);content:"";inset:0 calc(var(--space-4)*-1);position:absolute;transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease-out);z-index:-1}@media (hover:hover) and (pointer:fine){.contact__row:hover:before{transform:scaleX(1)}}.contact{border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin-top:calc(var(--space-7)*-1);padding-top:clamp(5rem,10vw,8rem);position:relative;z-index:1}:root{--color-bg:#e8e8e8;--color-bg-elevated:#efefef;--color-bg-card:#f1f1f1;--color-border:#cbcbcb;--color-border-hover:#a9a9a9;--color-primary:#b22222;--color-primary-solid:#b22222;--color-on-primary:#e8e8e8;--color-primary-soft:#b2222217;--color-secondary:#666;--color-ink-solid:#151515;--color-on-ink:#e8e8e8;--color-accent-on-ink:#e8574f;--color-text-primary:#151515;--color-text-secondary:#3a3a3a;--color-text-muted:#666;--glow-primary:0 0 0 1px #b2222240;--glow-primary-strong:0 0 0 1px #b2222280;--glow-secondary:0 0 0 1px var(--color-border-hover);--shadow-card:0 30px 60px -36px #3c0a0a59;--gradient-bg-glow:none;--grain-opacity:0.05;--font-sans:"Onest Variable","Onest",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono Variable","JetBrains Mono",ui-monospace,monospace;--fs-xs:0.8rem;--fs-sm:0.92rem;--fs-base:1rem;--fs-md:1.15rem;--fs-lg:1.5rem;--fs-h2:clamp(2.8rem,8vw,7.5rem);--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4.5rem;--space-9:7rem;--container-max:1560px;--radius-sm:12px;--radius-md:20px;--radius-lg:28px;--radius-pill:999px;--border-width:1px;--ease-out:cubic-bezier(0.23,1,0.32,1);--ease-in-out:cubic-bezier(0.77,0,0.175,1);--duration-fast:0.16s;--duration-base:0.24s;color-scheme:light}[data-theme=dark]{--color-bg:#121011;--color-bg-elevated:#181516;--color-bg-card:#1c1819;--color-border:#2e292a;--color-border-hover:#4a4344;--color-primary:#e85a52;--color-primary-solid:#b22222;--color-on-primary:#f1f1f1;--color-primary-soft:#e85a521a;--color-secondary:#948e8d;--color-ink-solid:#ecebea;--color-on-ink:#121011;--color-accent-on-ink:#b22222;--color-text-primary:#ecebea;--color-text-secondary:#c4c0bf;--color-text-muted:#948e8d;--glow-primary:0 0 0 1px #e85a5247;--glow-primary-strong:0 0 0 1px #e85a5280;--shadow-card:0 30px 60px -34px #000c;--gradient-bg-glow:none;--grain-opacity:0.05;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:88px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--color-bg);color:var(--color-text-secondary);font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.6;overflow-x:hidden;overflow-x:clip;position:relative;transition:background-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}body:after,body:before{content:"";inset:0;pointer-events:none;position:fixed;z-index:-1}body:after{background-image:var(--gradient-bg-glow)}body:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");opacity:var(--grain-opacity)}h1,h2,h3,h4{color:var(--color-text-primary);font-weight:600;letter-spacing:-.03em;line-height:1.1}a{text-decoration:none}a,button{color:inherit}button{background:none;border:none;cursor:pointer;font-family:inherit}ul{list-style:none}img,svg{display:block;max-width:100%}::selection{background:var(--color-primary-soft);color:var(--color-primary)}:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--color-primary);outline-offset:3px}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:var(--color-border-hover);border-radius:10px}.container{margin:0 auto;max-width:var(--container-max);padding:0 var(--space-6);width:100%}.section{padding:clamp(5rem,11vw,9rem) 0;position:relative}.mono{font-family:var(--font-mono)}.text-muted{color:var(--color-text-muted)}.on-scarlet{--color-bg:#b22222;--color-bg-elevated:#a01e1e;--color-bg-card:#a01e1e;--color-border:#e8e8e852;--color-border-hover:#e8e8e899;--color-primary:#e8e8e8;--color-primary-solid:#e8e8e8;--color-on-primary:#b22222;--color-primary-soft:#e8e8e81f;--color-text-primary:#f4f4f4;--color-text-secondary:#f4f4f4;--color-text-muted:#f3d6d6}.on-ink,.on-scarlet{background:var(--color-bg);color:var(--color-text-primary)}.on-ink{--color-bg:var(--color-ink-solid);--color-bg-elevated:var(--color-ink-solid);--color-bg-card:var(--color-ink-solid);--color-border:color-mix(in srgb,var(--color-on-ink) 28%,#0000);--color-border-hover:color-mix(in srgb,var(--color-on-ink) 55%,#0000);--color-primary:var(--color-accent-on-ink);--color-primary-solid:var(--color-on-ink);--color-on-primary:var(--color-ink-solid);--color-primary-soft:color-mix(in srgb,var(--color-on-ink) 10%,#0000);--color-text-primary:var(--color-on-ink);--color-text-secondary:color-mix(in srgb,var(--color-on-ink) 88%,#0000);--color-text-muted:color-mix(in srgb,var(--color-on-ink) 68%,#0000)}.visually-hidden{clip:rect(0 0 0 0);height:1px;overflow:hidden;position:absolute;width:1px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-delay:0ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@media (max-width:768px){.container{padding:0 var(--space-5)}}@supports not (color:color-mix(in srgb,red 50%,blue)){.header{background:var(--color-bg);border-bottom-color:var(--color-border)}.project-card__ghost-word,.timeline__ghost{color:var(--color-border)}.on-ink{--color-border:#e8e8e847;--color-border-hover:#e8e8e88c;--color-primary-soft:#e8e8e81a;--color-text-secondary:#e8e8e8e0;--color-text-muted:#e8e8e8ad}[data-theme=dark] .on-ink{--color-border:#12101147;--color-border-hover:#1210118c;--color-primary-soft:#1210111a;--color-text-secondary:#121011e0;--color-text-muted:#121011ad}}
/*# sourceMappingURL=main.a633cfcf.css.map*/