@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#0b1220;--bg-raised:#111b2e;--bg-card:#0e1729;--glass:#ffffff0a;--glass-border:#ffffff17;--text:#e6ecf5;--text-soft:#c3cede;--muted:#8b98ad;--accent:#3b82f6;--accent-strong:#2563eb;--accent-soft:#3b82f629;--accent-text:#93b8ff;--radius:18px;--container-width:1380px;--header-height:64px;--font:"Inter Variable", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.6}h1,h2,h3,p,ul,ol{margin:0}a{color:inherit}img{max-width:100%;height:auto;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.container{width:100%;max-width:var(--container-width);margin:0 auto;display:block}@media (width<=1440px){.container{max-width:calc(100% - 8rem)}}@media (width<=768px){.container{max-width:calc(100% - 2rem)}}.section{z-index:1;padding-block:96px;position:relative}.section-title{letter-spacing:-.02em;margin-bottom:40px;font-size:clamp(28px,4vw,40px)}.glass{border:1px solid var(--glass-border);border-radius:var(--radius);background:var(--glass);backdrop-filter:blur(12px)}.tag{color:#bcd3ff;background:var(--accent-soft);border-radius:999px;padding:4px 12px;font-size:13px;display:inline-block}.tag-list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.btn{border-radius:12px;align-items:center;gap:8px;padding:12px 22px;font-weight:600;text-decoration:none;transition:transform .2s,background-color .2s;display:inline-flex}.btn:hover{transform:translateY(-2px)}.btn--primary{color:#fff;background:var(--accent-strong)}.btn--ghost{border:1px solid var(--glass-border);background:var(--glass)}.btn--ghost:hover{background:#ffffff14}.btn--sm{padding:8px 16px;font-size:14px}.visually-hidden{white-space:nowrap;clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.lang-switcher{border:1px solid var(--glass-border);background:var(--glass);border-radius:10px;margin:0;padding:3px;list-style:none;display:flex}.lang-switcher__link{color:var(--muted);border-radius:7px;padding:4px 10px;font-size:13px;font-weight:600;text-decoration:none;transition:color .2s,background-color .2s;display:block}.lang-switcher__link:hover{color:var(--text)}.lang-switcher__link[aria-current=page]{color:#fff;background:var(--accent-strong)}.header{z-index:10;border-bottom:1px solid var(--glass-border);backdrop-filter:blur(14px);background:#0b1220b3;position:sticky;top:0}.header__inner{height:var(--header-height);justify-content:space-between;align-items:center;gap:16px;display:flex}.header__logo{letter-spacing:.04em;font-weight:800;text-decoration:none}.header__nav{gap:28px;padding:0;list-style:none;display:flex}.header__nav a{color:var(--muted);font-size:15px;text-decoration:none;transition:color .2s}.header__nav a:hover{color:var(--text)}@media (width<=720px){.header__nav{display:none}}.header__actions{align-items:center;gap:12px;display:flex}.hero{--x:70vw;--y:40svh;--glow-opacity:1;isolation:isolate;z-index:0;min-height:calc(100svh - var(--header-height));align-items:center;display:flex;position:relative}.hero__bg{pointer-events:none;z-index:-1;position:absolute;inset:0 0 -320px;overflow:hidden}.hero__grid{background-image:linear-gradient(#ffffff0d 1px,#0000 1px),linear-gradient(90deg,#ffffff0d 1px,#0000 1px);background-size:64px 64px;position:absolute;inset:0;mask-image:radial-gradient(70% 60% at 50% 42%,#000 30%,#0000 100%)}.hero__glow{pointer-events:none;will-change:transform;transform:translate(calc(var(--x) - 50%), calc(var(--y) - 50%));width:640px;height:640px;opacity:var(--glow-opacity);filter:blur(40px);background:radial-gradient(circle,#3b82f659,#10b9811f 45%,#0000 70%);border-radius:50%;transition:opacity .6s;position:absolute;top:0;left:0}.hero__content{justify-items:start;gap:24px;padding-block:80px;display:grid}.hero__title{letter-spacing:-.035em;overflow-wrap:anywhere;font-size:clamp(34px,9vw,88px);line-height:1.02}.hero__title span{color:var(--muted);font-weight:500;display:block}.hero__tagline{max-width:560px;color:var(--text-soft);font-size:clamp(18px,2vw,21px)}.hero__actions{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}:root{--swiper-theme-color:#007aff}:host{z-index:1;margin-left:auto;margin-right:auto;display:block;position:relative}.swiper{z-index:1;margin-left:auto;margin-right:auto;padding:0;list-style:none;display:block;position:relative;overflow:hidden}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{z-index:1;width:100%;height:100%;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box;display:flex;position:relative}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate(0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;transition-property:transform;display:block;position:relative}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px;& .swiper-slide,& .swiper-cube-shadow{transform-style:preserve-3d}}.swiper-css-mode{&>.swiper-wrapper{scrollbar-width:none;-ms-overflow-style:none;overflow:auto;&::-webkit-scrollbar{display:none}}&>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}&.swiper-horizontal{&>.swiper-wrapper{scroll-snap-type:x mandatory}&>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}&>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}}&.swiper-vertical{&>.swiper-wrapper{scroll-snap-type:y mandatory}&>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}&>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}}&.swiper-free-mode{&>.swiper-wrapper{scroll-snap-type:none}&>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}}&.swiper-centered{&>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}&>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}}&.swiper-centered.swiper-horizontal{&>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}&>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}}&.swiper-centered.swiper-vertical{&>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}&>.swiper-wrapper:before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}}}.swiper-3d{& .swiper-slide-shadow,& .swiper-slide-shadow-left,& .swiper-slide-shadow-right,& .swiper-slide-shadow-top,& .swiper-slide-shadow-bottom,& .swiper-slide-shadow,& .swiper-slide-shadow-left,& .swiper-slide-shadow-right,& .swiper-slide-shadow-top,& .swiper-slide-shadow-bottom{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;top:0;left:0}& .swiper-slide-shadow{background:#00000026}& .swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}& .swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}& .swiper-slide-shadow-top{background-image:linear-gradient(#0000,#00000080)}& .swiper-slide-shadow-bottom{background-image:linear-gradient(#00000080,#0000)}}.swiper-lazy-preloader{z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-top-color:#0000;border-radius:50%;width:42px;height:42px;margin-top:-21px;margin-left:-21px;position:absolute;top:50%;left:50%}.swiper:not(.swiper-watch-progress),.swiper-watch-progress .swiper-slide-visible{& .swiper-lazy-preloader{animation:1s linear infinite swiper-preloader-spin}}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.project-slider{gap:14px;width:100%;display:grid}.project-slider__swiper{width:100%}.project-slider__figure{gap:12px;margin:0;display:grid}.project-slider__image{border:1px solid var(--glass-border);background:var(--bg-raised);border-radius:10px;width:100%;height:auto;box-shadow:0 18px 40px #00000059}.project-slider__caption{color:var(--text-soft);font-size:14px}.project-slider__pagination{justify-content:center;gap:6px;display:flex}.project-slider__bullet{cursor:pointer;background:#ffffff40;border:0;border-radius:2px;width:18px;height:4px;padding:0;transition:width .3s,background-color .3s}.project-slider__bullet--active{background:var(--accent);width:32px}.project-structure{gap:14px;width:100%;margin:0;display:grid}.project-structure__notice{color:#fde68a;background:#facc151a;border:1px solid #facc1559;border-radius:10px;padding:10px 14px;font-size:14px}.project-structure__label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:13px}.project-structure__tree{border:1px solid var(--glass-border);color:var(--text-soft);background:#00000040;border-radius:10px;margin:0;padding:16px 18px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;line-height:1.7;list-style:none}.project-structure__line{overflow-wrap:anywhere}.accordion__toggle{cursor:pointer;border:1px solid var(--glass-border);font:inherit;color:var(--text);background:var(--glass);border-radius:10px;align-items:center;gap:10px;padding:8px 14px;font-size:14px;font-weight:600;transition:background-color .2s;display:inline-flex}.accordion__toggle:hover{background:#ffffff14}.accordion__icon{border-bottom:2px solid;border-right:2px solid;width:8px;height:8px;transition:transform .3s;transform:translateY(-2px)rotate(45deg)}.accordion__toggle[aria-expanded=true] .accordion__icon{transform:translateY(2px)rotate(-135deg)}.accordion__panel{grid-template-rows:1fr;transition:grid-template-rows .35s;display:grid}.accordion__inner{min-height:0;padding-top:14px;transition:padding-top .35s;overflow:hidden}.accordion.is-collapsed .accordion__panel{grid-template-rows:0fr}.accordion.is-collapsed .accordion__inner{padding-top:0}.project-card{transform-origin:50% 0;background-color:var(--bg-card);grid-template-columns:repeat(2,minmax(0,1fr));display:grid;overflow:hidden}.project-card:nth-of-type(2n) .project-card__media{order:2}.project-card__media{background:radial-gradient(circle at 30% 20%, var(--accent-soft), transparent 60%), var(--bg-raised);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex}.project-card__body{align-content:center;gap:16px;padding:40px;display:grid}.project-card__title{letter-spacing:-.01em;font-size:26px}.project-card__summary{color:var(--text-soft)}.project-card__role{border-left:3px solid var(--accent);color:var(--text-soft);background:var(--accent-soft);border-radius:0 8px 8px 0;padding:12px 14px;font-size:15px}.project-card__role strong{color:var(--text)}.project-card__highlights{color:var(--muted);gap:6px;padding-left:18px;font-size:15px;display:grid}.project-card__links{flex-wrap:wrap;justify-content:center;gap:8px 20px;padding:0;list-style:none;display:flex}.project-card__link{color:var(--accent-text);font-weight:600;text-decoration:none}.project-card__link:hover{text-decoration:underline}@media (width<=860px){.project-card{grid-template-columns:1fr}.project-card:nth-of-type(2n) .project-card__media{order:0}.project-card__media{padding:16px}.project-card__body{padding:24px}}.projects{--stack-step:14px;--stack-top:calc(var(--header-height) + 16px + 3 * var(--stack-step));--stack-height:max(520px, calc(100svh - var(--stack-top) - 16px));--stack-gap:32px;flex-direction:column;display:flex}.projects__marker{pointer-events:none;height:var(--stack-top);margin-top:calc(var(--stack-gap) - var(--stack-top))}@media (width>860px) and (prefers-reduced-motion:no-preference){.projects>.project-card{top:var(--stack-top);height:var(--stack-height);position:sticky}.projects .project-card__body:has(.accordion:not(.is-collapsed)),.projects .project-card__body{scrollbar-width:thin;overflow-y:auto}}.timeline{border-left:1px solid var(--glass-border);gap:40px;padding:0 0 0 28px;list-style:none;display:grid}.timeline__job{position:relative}.timeline__job:before{content:"";background:var(--accent);width:11px;height:11px;box-shadow:0 0 0 4px var(--accent-soft);border-radius:50%;position:absolute;top:9px;left:-34px}.timeline__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;margin-bottom:12px;display:flex}.timeline__head h3{font-size:21px}.timeline__head span{color:var(--accent-text);font-weight:500}.timeline__period{color:var(--muted);font-size:15px}.timeline__points{color:var(--text-soft);gap:8px;padding-left:18px;display:grid}.skills{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;display:grid}.skills__group{padding:24px}.skills__title{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:14px;font-size:15px}.contact{text-align:center;justify-items:center;gap:16px;padding:64px 24px;display:grid}.contact__title{margin-bottom:0}.contact__text{max-width:520px;color:var(--text-soft)}.contact__links{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:8px;display:flex}.contact__footer{color:var(--muted);text-align:center;margin-top:48px;font-size:14px}
