@import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap";.particles[data-v-22b1f988]{position:fixed;inset:0;z-index:-3;pointer-events:none}*,*:before,*:after{box-sizing:border-box}html,body{width:100%}html{scroll-behavior:smooth}:root{--bg: #0f1113;--surface: #171a1e;--muted: #bdbdbd;--text: #f2f2f2;--brand: #cfcfcf;--ring: rgba(255,255,255,.18);--border: rgba(255,255,255,.1);--btn-bg: #2a2d31;--btn-fg: #f2f2f2;--link: #ededed;--link-hover: #ffffff;--tag-bg: rgba(255,255,255,.06);--hover-border: rgba(255,255,255,.18);--selection-bg: rgba(255,255,255,.18);--selection-fg: #0f1113}:root[data-theme=light]{--bg: #f6f7f8;--surface: #ffffff;--muted: #4a4a4a;--text: #0f1113;--brand: #2e2e2e;--ring: rgba(0,0,0,.12);--border: rgba(0,0,0,.12);--btn-bg: #e9eaec;--btn-fg: #0f1113;--link: #0f1113;--link-hover: #000000;--tag-bg: rgba(0,0,0,.05);--hover-border: rgba(0,0,0,.18);--selection-bg: rgba(0,0,0,.12);--selection-fg: #ffffff}h1,h2,h3,nav,.btn,.tag,.project-title{font-family:JetBrains Mono,monospace}:root[data-theme=light] body{background:var(--bg)!important;color:var(--text)}:root[data-theme=light] nav{background-color:#ffffffb3;border-bottom:1px solid var(--border)}::selection,::-moz-selection{background:var(--selection-bg);color:var(--selection-fg);text-shadow:none}html,body,#app{height:100%}body{margin:0;font-family:Inter,sans-serif;color:var(--text);background:var(--bg);display:flex;flex-direction:column}#app{display:contents}nav{background-color:transparent;color:#fff;padding:1rem 2rem;font-family:JetBrains Mono,monospace;position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}main{flex:1 0 auto}nav>ul .name{font-weight:700;display:inline-block;font-family:JetBrains Mono,monospace;margin-right:auto}nav ul{list-style:none;padding:0;margin:0;display:flex;align-items:center}nav li{margin-left:1rem}nav a{color:var(--link);text-decoration:none}nav a:hover{color:var(--link-hover);text-shadow:none}:root[data-theme=light] .brand a{background:#0000000f}main,section{padding:2rem;max-width:none;width:100%}.hero.hero-full{min-height:calc(100dvh - 64px);display:grid;align-content:center;justify-items:start;gap:1rem}.hero h1{font-size:3rem;margin-top:1.25rem}.hero p{color:var(--muted)}.cta{display:flex;gap:.75rem;margin-bottom:.5rem}.btn{display:inline-block;background:var(--btn-bg);color:var(--btn-fg);padding:.6rem 1rem;border-radius:.5rem;font-weight:700;box-shadow:none;transition:box-shadow .2s ease,transform .15s ease}.btn:hover{background:linear-gradient(135deg,#ffffff29,#ffffff0f);box-shadow:0 0 0 6px var(--ring),0 6px 18px #00000040}.btn.btn-disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.btn-ghost{background:transparent;color:var(--link);border-color:var(--border)}.btn-ghost:hover{border-color:var(--brand);color:var(--brand);box-shadow:0 0 0 6px var(--ring)}.icon-btn{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:.5rem;padding:.35rem .5rem}.icon-btn:hover{border-color:var(--brand);color:var(--brand);box-shadow:0 0 0 4px var(--ring)}.scroll-cue{color:var(--brand);text-decoration:none}section+section{margin-top:3rem}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.carousel{position:relative;overflow:hidden}.carousel-viewport{position:relative;width:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;border-radius:.75rem;scroll-padding-left:0;scroll-padding-right:0;scroll-behavior:smooth;overscroll-behavior-x:contain}.carousel-viewport:before,.carousel-viewport:after{content:none!important;display:none!important;background:none!important}.carousel-viewport{scrollbar-width:none;-ms-overflow-style:none}.carousel-viewport::-webkit-scrollbar{display:none;height:0}.carousel-track{display:flex}.carousel-slide{flex:0 0 100%;scroll-snap-align:start;display:grid;place-items:center;padding:clamp(12px,4vw,28px)}.carousel .project-card{width:min(920px,100%);margin:0 auto;border-color:var(--border);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;background:var(--surface);border:1px solid var(--border);border-radius:.75rem;overflow:hidden}.carousel .project-card:hover{transform:translateY(-2px);border-color:var(--hover-border);box-shadow:0 12px 32px #00000040}.carousel-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:44px;height:44px;border-radius:999px;display:inline-grid;place-items:center;background:#00000073;color:#fff;border:1px solid var(--hover-border);box-shadow:0 2px 10px #00000059;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.carousel-btn.prev{left:8px}.carousel-btn.next{right:8px}.carousel-btn[disabled]{opacity:.4;cursor:not-allowed}.carousel-btn:hover{box-shadow:0 0 0 4px var(--ring),0 4px 14px #0006}:root[data-theme=light] .carousel-btn{background:#ffffffbf;color:var(--text);border-color:var(--border);box-shadow:0 2px 10px #00000026}:root[data-theme=light] .carousel-btn:hover{box-shadow:0 0 0 4px var(--ring),0 4px 14px #0003}.carousel-dots{display:flex;justify-content:center;gap:.5rem;margin-top:.75rem}.carousel-dots .dot{width:10px;height:10px;border-radius:999px;border:1px solid var(--border);background:var(--surface);transition:transform .15s ease,background .15s ease,border-color .15s ease}.carousel-dots .dot:hover{transform:scale(1.1)}.carousel-dots .dot.active{background:var(--brand);border-color:var(--brand);transform:scale(1.2)}@media (max-width: 720px){.carousel-btn{width:36px;height:36px}.carousel-viewport:before,.carousel-viewport:after{width:clamp(12px,8vw,48px)}}html:before{content:"";position:fixed;inset:-25vmax;z-index:-4;pointer-events:none;background:radial-gradient(44vmax 36vmax at 10% 20%,rgba(255,255,255,.08),transparent 65%),radial-gradient(40vmax 28vmax at 88% 24%,rgba(255,255,255,.06),transparent 60%),radial-gradient(48vmax 36vmax at 70% 86%,rgba(255,255,255,.06),transparent 68%);filter:blur(36px) saturate(115%);transform:translateZ(0) rotate(.0001deg);will-change:transform;animation:blobsParallax 55s ease-in-out infinite alternate}body:before{content:"";position:fixed;inset:-20vmax;z-index:-2;pointer-events:none;background:radial-gradient(40vmax 30vmax at 20% 30%,rgba(255,255,255,.1),transparent 60%),radial-gradient(32vmax 24vmax at 80% 18%,rgba(255,255,255,.08),transparent 60%),radial-gradient(36vmax 28vmax at 60% 82%,rgba(255,255,255,.08),transparent 65%);filter:blur(30px) saturate(115%);transform:translateZ(0);will-change:transform;animation:blobsMove 28s ease-in-out infinite alternate,blobsRotate 46s ease-in-out infinite alternate-reverse}body:after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(120% 80% at 50% 10%,rgba(0,0,0,.3),transparent 60%),radial-gradient(100% 100% at 50% 120%,rgba(0,0,0,.36),transparent 55%);mix-blend-mode:multiply}@keyframes blobsMove{0%{transform:translateZ(0) scale(1)}50%{transform:translate3d(2vmax,-1vmax,0) scale(1.02) rotate(.001deg)}to{transform:translate3d(-2vmax,2vmax,0) scale(1.01)}}@keyframes blobsRotate{0%{transform:translateZ(0) scale(1) rotate(0)}50%{transform:translate3d(4vmax,-2vmax,0) scale(1.06) rotate(3deg)}to{transform:translate3d(-4vmax,3vmax,0) scale(1.03) rotate(-3deg)}}@keyframes blobsParallax{0%{transform:translate3d(-2vmax,-1vmax,0) scale(1.02) rotate(-2deg)}50%{transform:translate3d(3vmax,2vmax,0) scale(1.05) rotate(1deg)}to{transform:translate3d(-1vmax,3vmax,0) scale(1.03) rotate(-1deg)}}footer{padding:2rem;max-width:none;width:100%;margin:0;border-top:1px solid var(--border)}footer ul{display:flex;gap:1rem;list-style:none;padding:0}footer a{color:var(--link);text-decoration:none}footer p{color:var(--muted)}.site-nav{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem;padding:.75rem 1.5rem}.brand a{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:8px;background:#ffffff0f}.menu{display:flex;align-items:center;gap:1rem;justify-self:end;list-style:none;margin:0;padding:0}.menu .nav-link{position:relative;padding:.25rem .1rem}.menu .nav-link.router-link-active{color:var(--brand)}.menu .nav-link:after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .2s ease}.menu .nav-link:hover:after{transform:scaleX(1)}.menu-btn{display:none}@media (max-width: 720px){.site-nav{grid-template-columns:auto auto 1fr}.menu-btn{display:inline-grid;place-items:center;width:36px;height:36px}.menu{display:none}.menu.open{display:grid;grid-auto-flow:row;gap:.5rem;justify-items:end;padding-top:.75rem}}.section-blend{background:transparent;border:0;border-radius:0;padding:inherit;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;position:static;overflow:visible}.section-blend:before{display:none}@media (min-width: 900px){section+section{margin-top:3rem}}.project-image{width:100%;height:160px;object-fit:cover;background:var(--bg);display:block}.carousel .project-image{height:auto;aspect-ratio:16 / 9;object-fit:cover;display:block}.carousel .project-body{padding:1rem}.carousel .tag{background:var(--tag-bg);border:1px solid var(--border);color:var(--brand);padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:700;display:inline-block}[data-reveal],.reveal{opacity:0;transform:translateY(12px) scale(.98);filter:saturate(.9);transition:opacity .6s ease,transform .6s ease,filter .6s ease;transition-delay:var(--reveal-delay, 0ms)}.is-visible{opacity:1;transform:none;filter:none}.reveal-left{transform:translate(-18px)}.reveal-right{transform:translate(18px)}.reveal-up{transform:translateY(18px)}.reveal-down{transform:translateY(-18px)}.reveal-scale{transform:scale(.96)}@keyframes upDown{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}.scroll-cue{animation:upDown 2.2s ease-in-out infinite}.btn{transition:box-shadow .2s ease,transform .15s ease,background .2s ease,color .2s ease}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition:none!important}html:before{animation:none!important}body:before{animation:none!important}}#contact a{color:var(--brand);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--brand) 60%,transparent);transition:color .2s ease,text-decoration-color .2s ease}#contact a:hover,#contact a:focus-visible{color:var(--brand);text-decoration-color:var(--brand)}
