@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/geist-mono-vietnamese-wght-normal-DadHysG0.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/geist-mono-latin-wght-normal-XN7g48iV.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}*{box-sizing:border-box}[hidden]{display:none!important}html,body{color:#ecedeb;background:#0c0f12;height:100%;margin:0;font-family:Geist Mono Variable,ui-monospace,monospace}.ascii-scene{position:fixed;inset:0;overflow:hidden}.ascii-scene--contained{position:absolute}.ascii-scene__canvas-wrap{position:absolute;inset:0}.ascii-scene__canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.lang-switch{letter-spacing:.08em;gap:.5rem;font-size:.8em;display:flex}.lang-switch__link{color:inherit;opacity:.55;text-decoration:none}.lang-switch__link:hover,.lang-switch__link:focus-visible,.lang-switch__link[aria-current]{opacity:1}:root{--vt-duration:.25s;--vt-easing:cubic-bezier(.32, .72, 0, 1)}::view-transition-old(root){animation-duration:var(--vt-duration);animation-timing-function:var(--vt-easing)}::view-transition-new(root){animation-duration:var(--vt-duration);animation-timing-function:var(--vt-easing)}:root{--vt-duration:.15s}::view-transition-group(root){animation-duration:var(--vt-duration)}::view-transition-old(root){display:none}::view-transition-new(root){animation:none}@keyframes terminal-blink{50%{opacity:0}}.terminal{color:#ecedeb;background:#0c0f12;flex-direction:column;min-height:100dvh;font-family:Geist Mono Variable,ui-monospace,SF Mono,JetBrains Mono,Cascadia Code,Menlo,Consolas,monospace;font-size:15px;line-height:1.4;display:flex}@media (width>=900px){.terminal{height:100dvh;overflow:hidden}}.terminal__titlebar,.terminal__status,.terminal__cmd{flex:none;align-items:center;padding:0 1rem;display:flex}.terminal__titlebar{color:#c3c7cb;background:#1a1f24;justify-content:space-between;min-height:2rem;font-size:13px}.terminal__user{color:#ecedeb}.terminal__body{flex-direction:column;flex:1;gap:1.4rem;min-height:0;padding:1.4rem 1rem .6rem;display:flex}.terminal__status{color:#0c0f12;background:#8ab4f8;gap:1.4rem;min-height:1.9rem;padding:0;font-size:13px;font-weight:600}.terminal__mode{color:#8ab4f8;background:#0c0f12;align-self:stretch;align-items:center;padding:0 .9rem;display:flex}.terminal__path{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.terminal__cmd{color:#c3c7cb;min-height:1.9rem;font-size:14px}.terminal__cmd:before{content:":";color:#8ab4f8;margin-right:.6rem}.terminal__cmd:after{content:"";background:#ecedeb;width:.6em;height:1.1em;margin-left:.4rem;animation:1.1s step-end infinite terminal-blink;display:inline-block}.panel{border:1px solid #3a4046;min-height:0;position:relative}.panel--accent{border:3px double #8ab4f8}.panel--fill{flex:1}.panel__label{z-index:2;color:#c3c7cb;background:#0c0f12;padding:0 .5rem;font-size:13px;position:absolute;top:-.65rem;left:.9rem}.panel--accent>.panel__label{color:#8ab4f8}.panel__pad{flex-direction:column;height:100%;padding:clamp(1.25rem,2vw,1.75rem);display:flex}.nav{flex:none;justify-content:space-between;align-items:stretch;min-height:3.4rem;display:flex}.nav__home{color:#c3c7cb;align-items:center;padding:0 1.4rem;text-decoration:none;display:flex}.nav__user{color:#ecedeb;margin-left:.6rem;font-weight:700}.nav__links{display:flex}.nav__link{color:inherit;align-items:center;gap:.6rem;padding:0 1.4rem;font-size:clamp(1rem,1.5vw,1.25rem);font-weight:700;text-decoration:none;display:flex}.nav__link:hover,.nav__link[aria-current]{color:#0c0f12;background:#8ab4f8}.nav__key{opacity:.7;font-size:12px;font-weight:400}.home{flex:1;gap:1rem;min-height:0;display:grid}@media (width>=900px){.home{grid-template-columns:1fr minmax(30rem,44%)}}.home__scene{min-height:45dvh}.home__canvas{background:radial-gradient(at 50% 55%,#151a1f,#0c0f12 70%);position:absolute;inset:0;overflow:hidden}.home__metrics{text-align:right;color:#c3c7cb;background:#0c0f12;border:1px solid #3a4046;flex-direction:column;margin:0;padding:.5rem .9rem;font-size:13px;display:flex;position:absolute;bottom:1.2rem;right:1.4rem}.home__right{flex-direction:column;gap:1.4rem;min-height:0;display:flex}.home__banner{white-space:pre;margin:0;font:clamp(8px,min(1.1vw,2dvh),18px)/1 Geist Mono Variable,ui-monospace,SF Mono,JetBrains Mono,Cascadia Code,Menlo,Consolas,monospace;overflow:hidden}.home__tagline{color:#c3c7cb;margin:.9rem 0 0;font-size:1.05rem;font-weight:400}.index{flex-direction:column;justify-content:flex-end;height:100%;padding:.9rem 0;display:flex}.index__row{color:inherit;align-items:center;gap:1rem;padding:.7rem 1.7rem;text-decoration:none;display:flex}.index__row.is-active{color:#0c0f12;background:#8ab4f8}.index__caret{visibility:hidden;width:1.2rem;font-size:2rem}.index__row.is-active>.index__caret{visibility:visible}.index__num{opacity:.7;font-size:14px}.index__word{letter-spacing:-.03em;flex:1;font-size:clamp(2rem,min(4.4vw,7dvh),4.5rem);font-weight:700;line-height:1.05}.index__tag{letter-spacing:.08em;font-size:12px}.filter{flex-wrap:wrap;align-items:center;gap:.6rem;margin:-.4rem 0 -.5rem;font-size:14px;display:flex}.filter__label{color:#9aa0a6}.filter__chip{font:inherit;color:#c3c7cb;cursor:pointer;background:0 0;border:1px solid #3a4046;border-radius:0;padding:.1rem .8rem}.filter__chip.is-active{color:#0c0f12;background:#8ab4f8;border-color:#8ab4f8;font-weight:700}.scroller{flex:1;gap:.9rem;min-height:0;display:flex}.scroller__view{scrollbar-width:none;flex-direction:column;flex:1;min-width:0;padding:.8rem 2px 2px;display:flex;overflow-y:auto}.scroller__view::-webkit-scrollbar{display:none}.scroller__track{border-left:1px dashed #3a4046;flex:none;width:.7rem;margin-top:.8rem;position:relative}.scroller__thumb{background:#8ab4f8;position:absolute;top:0;left:.15rem;right:0}.grid{flex:none;grid-template-columns:1fr;align-content:start;gap:1.4rem;margin:0;padding:0;list-style:none;display:grid}@media (width>=900px){.grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.card:hover,.card:focus-within{border:3px double #8ab4f8;margin:-2px}.card__link{color:inherit;flex-direction:column;height:100%;text-decoration:none;display:flex}.card__shot.shot{aspect-ratio:16/10;flex:none;margin:.9rem .9rem 0;display:flex}.card__shot.shot .shot__image{object-fit:cover;object-position:top;height:100%}.card__foot{color:#9aa0a6;flex-direction:column;gap:.4rem;margin-top:auto;padding:1rem 1.25rem 1.1rem;display:flex}.card:hover .card__foot,.card:focus-within .card__foot{color:#0c0f12;background:#8ab4f8}.card__row{letter-spacing:.07em;justify-content:space-between;align-items:end;font-size:12px;display:flex}.card__name{white-space:nowrap;letter-spacing:-.03em;color:#ecedeb;flex:1;min-width:0;font-size:clamp(1.4rem,2.2vw,2.1rem);font-weight:700}.card:hover .card__name,.card:focus-within .card__name{color:inherit}.shot{border:1px solid #3a4046;flex-direction:column;display:flex;overflow:hidden}.shot__bar{color:#9aa0a6;border-bottom:1px solid #3a4046;flex:none;align-items:center;gap:.9rem;min-height:1.9rem;padding:0 .75rem;font-size:12px;display:flex}.shot__url{border:1px solid #3a4046;flex:1;padding:.1rem .6rem}.shot__body{flex:1;min-height:0;overflow:hidden}.shot__image{width:100%;height:auto;display:block}.project{align-items:start;gap:1.4rem;display:grid}@media (width>=900px){.project--shots{grid-template-columns:1fr 35rem}}.project__shots{flex-direction:column;gap:1.4rem;display:flex}@media (width>=900px){.project__info.panel{position:sticky;top:.8rem}}.project__info .kv{padding-top:2rem}.project__title{letter-spacing:-.04em;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:anywhere;margin:0;font-size:clamp(2.5rem,4vw,4rem);line-height:1}.project__badge{color:#0c0f12;letter-spacing:.08em;background:#8ab4f8;align-self:flex-start;margin-top:1rem;padding:.1rem .7rem;font-size:13px;font-weight:700}.project__text{margin:1.5rem 0 0;font-size:1.05rem;line-height:1.5}.project__pager{color:#c3c7cb;flex:none;justify-content:space-between;font-size:1rem;display:flex}.project__step{color:inherit;text-decoration:none}.project__step:hover{color:#8ab4f8}.breadcrumb{color:#9aa0a6;margin:-.4rem 0 -.5rem .25rem}.breadcrumb__current{color:#ecedeb}.portrait{isolation:isolate;aspect-ratio:1;background:#000;border:3px double #8ab4f8;border-radius:50%;position:relative;overflow:hidden}.portrait:before,.portrait:after{content:"";z-index:2;pointer-events:none;position:absolute;inset:0}.portrait:before{background:repeating-linear-gradient(0deg,#00000040 0 1px,#0000 1px 3px)}.portrait:after{background:radial-gradient(#0000 45%,#00000080 100%)}.portrait__channel{isolation:isolate;mix-blend-mode:screen;position:absolute;inset:0}.portrait__channel:after{content:"";mix-blend-mode:multiply;position:absolute;inset:0}.portrait__channel--r{transform:translate(-4px)}.portrait__channel--r:after{background:red}.portrait__channel--g:after{background:#0f0}.portrait__channel--b{transform:translate(4px)}.portrait__channel--b:after{background:#00f}.portrait__image{object-fit:cover;filter:grayscale()contrast(1.3);width:100%;height:100%;position:absolute;inset:0}.kv{border-bottom:1px dashed #3a4046;margin:auto 0 0}.kv__row{border-top:1px dashed #3a4046;grid-template-columns:8rem 1fr;gap:1rem;padding:.8rem 0;font-size:clamp(1rem,1.3vw,1.2rem);display:grid}.kv__key{color:#9aa0a6}.kv__value{margin:0}.kv__link{color:#8ab4f8;text-decoration:none}.kv__link:after{content:" ↗"}.kv__link:hover{text-decoration:underline}.columns{flex:1;gap:1.4rem;min-height:0;display:grid}@media (width>=900px){.columns{grid-template-columns:1fr 1fr}}.columns__stack{flex-direction:column;gap:1.4rem;min-height:0;display:flex}.about__name{letter-spacing:-.05em;margin:0;font-size:clamp(3.5rem,8vw,9rem);line-height:.92}.about__lead{color:#c3c7cb;margin:2rem 0 0;font-size:clamp(1.1rem,1.6vw,1.6rem);line-height:1.5}.about__portrait{width:min(17.5rem,24dvh)}.about__bio{margin:auto 0 0}.stack{grid-template-columns:repeat(4,1fr);gap:1rem;margin:0;padding:0;list-style:none;display:grid}@media (width>=900px){.stack{grid-template-columns:repeat(8,1fr)}}.stack__tile{aspect-ratio:1;color:#8ab4f8;border:1px solid #3a4046;justify-content:center;align-items:center;display:flex;position:relative}.stack__tile:hover{background:#13181d;border-color:#8ab4f8}.stack__tile svg{fill:currentColor;width:36%;height:36%}.stack__name{color:#0c0f12;text-align:center;opacity:0;background:#8ab4f8;padding:.25rem 0;font-size:12px;font-weight:700;transition:opacity .15s;position:absolute;inset:auto 0 0}.stack__tile:hover .stack__name{opacity:1}.mail__prompt{color:#9aa0a6;margin:0;font-size:1.1rem}.mail__addr{color:#8ab4f8;letter-spacing:-.045em;word-break:break-all;margin:1.5rem 0 0;font-size:clamp(1.6rem,3.6vw,4.5rem);font-weight:700;line-height:1.05;text-decoration:none}.mail__note{color:#c3c7cb;margin:1.3rem 0 0;font-size:1.2rem}.form{flex-direction:column;gap:1rem;height:100%;display:flex}.form__title{letter-spacing:-.03em;margin:0 0 .6rem;font-size:clamp(1.8rem,2.6vw,2.7rem)}.form__done{color:#8ab4f8;margin:0}.form__field{flex-direction:column;gap:.4rem;font-size:1.1rem;display:flex}.form__input{width:100%;font:inherit;color:#ecedeb;background:0 0;border:1px solid #3a4046;border-radius:0;padding:.6rem 1rem;font-size:1.2rem}.form__input:focus{border:3px double #8ab4f8;outline:none;padding:calc(.6rem - 2px) calc(1rem - 2px)}.form__error{color:#e87a6d;font-size:.9rem}.form__foot{color:#9aa0a6;justify-content:space-between;align-items:center;margin-top:auto;font-size:14px;display:flex}.form__send{font:inherit;color:#0c0f12;cursor:pointer;background:#8ab4f8;border:0;border-radius:0;padding:.6rem 1.7rem;font-size:1.2rem;font-weight:700}.not-found__code{letter-spacing:-.06em;color:#8ab4f8;margin:0;font-size:clamp(6rem,18vw,14rem);line-height:.85}.not-found__text{margin:1.5rem 0 0;font-size:1.4rem}.not-found__back{color:#8ab4f8;margin-top:auto;text-decoration:none}@media (width>=900px){html{background:#000}.terminal{border-radius:2rem/2.5rem;overflow:hidden}}.crt{z-index:9999;pointer-events:none;background:radial-gradient(#0000 65%,#00000059 100%),repeating-linear-gradient(#0003 0 1px,#0000 1px 3px);position:fixed;inset:0;overflow:hidden;box-shadow:inset 0 0 5rem #0006}@media (width>=900px){.crt{border-radius:2rem/2.5rem}}.terminal__bar,.terminal__cmd-go{white-space:nowrap;width:0;display:none;overflow:hidden}.terminal__bar{margin-right:.8rem}@keyframes terminal-fill{to{width:10ch}}@keyframes terminal-type{to{width:calc(var(--len) * 1ch)}}html[data-transition=enter] .terminal__bar{animation:terminal-fill var(--vt-duration) steps(10, end) forwards;display:inline-block}html[data-transition=enter] .terminal__cmd-text{display:none}html[data-transition=enter] .terminal__cmd-go{animation:terminal-type var(--vt-duration) steps(var(--len), end) forwards;display:inline-block}.stage{z-index:9400;background:#0c0f12;position:fixed;inset:0;overflow:hidden}@keyframes boot-log-blink{50%{opacity:0}}.boot-log{z-index:9500;color:#8ab4f8;place-content:center;padding:2rem;font-family:Geist Mono Variable,ui-monospace,SF Mono,JetBrains Mono,Cascadia Code,Menlo,Consolas,monospace;font-size:13px;line-height:1.45;display:grid;position:fixed;inset:0;overflow:hidden}.boot-log__box{box-sizing:border-box;background:#0c0f12;border:1px solid #ecedeb;width:calc(100vw - 4rem);height:calc(100dvh - 4rem);padding:1rem 1.2rem;position:relative}.boot-log__title{color:#ecedeb;background:#0c0f12;padding:0 .5rem;position:absolute;top:-.8em;left:1rem}.boot-log__body{height:100%;overflow:hidden}.boot-log__line{white-space:pre}.boot-log__cursor:after{content:"_";color:#ecedeb;animation:1s step-end infinite boot-log-blink}.boot-log .ok{color:#8bd5a0}.boot-log .dim{color:#9aa0a6}.boot-log .warn{color:#e8c46d}.boot-log .err{color:#e87a6d}.boot-log .art{color:#ecedeb;line-height:1.05}.boot-log .cmdline{color:#ecedeb}.prompt{z-index:9450;color:#ecedeb;place-content:center;gap:.6rem;padding:1.6rem;font-family:Geist Mono Variable,ui-monospace,SF Mono,JetBrains Mono,Cascadia Code,Menlo,Consolas,monospace;font-size:14px;line-height:1.45;display:grid;position:fixed;inset:0}.prompt__box{background:#0c0f12;border:1px solid #ecedeb;min-width:min(26rem,100%);margin:0;padding:.4rem 1rem .7rem}.prompt__title{color:#ecedeb;padding:0 .5rem}.prompt__options{gap:.6rem;display:flex}.prompt__option{color:#9aa0a6;font:inherit;cursor:pointer;background:0 0;border:0;padding:0 .2rem}.prompt__option:before{content:"○ "}.prompt__option:focus{color:#ecedeb;outline:none}.prompt__option:focus:before{content:"● "}.prompt__sep{color:#9aa0a6}.terminal__tools{align-items:center;gap:1.2rem;display:flex}.fx-menu{display:none;position:relative}@media (width>=900px){.fx-menu{display:block}}.fx-menu__button{letter-spacing:.08em;color:inherit;opacity:.55;cursor:pointer;font-size:.8em;list-style:none}.fx-menu__button::-webkit-details-marker{display:none}.fx-menu__button:hover,.fx-menu__button:focus-visible,.fx-menu[open]>.fx-menu__button{opacity:1}.fx-menu__panel{z-index:50;color:#ecedeb;background:#0c0f12f0;border:1px solid #8ab4f8;width:19rem;padding:.8rem;font-size:12px;position:absolute;top:calc(100% + .6rem);right:0}.fx-menu__title{letter-spacing:.08em;text-transform:uppercase;color:#8ab4f8;margin:0 0 .6rem;font-size:12px}.fx-menu__item{margin-bottom:.7rem;display:block}.fx-menu__item:last-child{margin-bottom:0}.fx-menu__item input[type=range]{accent-color:#8ab4f8;cursor:pointer;width:100%;margin:.2rem 0 0;display:block}.fx-menu__toggle{cursor:pointer;align-items:center;gap:.5rem;display:flex}.fx-menu__toggle input{accent-color:#8ab4f8;cursor:pointer;margin:0}.fx-menu input[type=range]:disabled{opacity:.35;cursor:not-allowed}.fx-menu__label{color:#9aa0a6}.fx-menu__label output{color:#ecedeb}
