@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-400-normal.C38fXH4l.woff2)format("woff2"),url(/_astro/inter-latin-400-normal.CyCys3Eg.woff)format("woff")}@font-face{font-family:Inter Tight;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/inter-tight-latin-800-normal.CRGCHRPv.woff2)format("woff2"),url(/_astro/inter-tight-latin-800-normal.D2te1T7i.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/jetbrains-mono-latin-600-normal.C8RAYTDA.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-600-normal.BfsvjouI.woff)format("woff")}:root{--bg:#f3e6d6;--fg:#1d1610;--muted:#5b4a3a;--accent:#6b5cff;--glass:#ffffff8c;--glass-border:#1d16101f;--focus:#6b5cff;--font-head:"Inter Tight", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--tint:var(--scene-bg,var(--bg));--scrim-in:88%;--scrim-mid:60%;color-scheme:light}[data-theme=night]{--bg:#07051a;--fg:#fff;--muted:#c9c2e8;--accent:#ff6ad5;--glass:#100a249e;--glass-border:#ffffff29;--focus:#6affc8;--tint:var(--scene-bg,var(--bg));--scrim-in:92%;--scrim-mid:74%;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color:var(--fg);transition:background-color .6s,color .6s}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media (prefers-reduced-motion:reduce){html{transition:none}}body{font:400 17px/1.6 var(--font-body);background:0 0;margin:0}h1,h2,h3{font-family:var(--font-head);letter-spacing:-.03em;text-wrap:balance;margin:0 0 .4em;font-weight:800;line-height:1.05}p{text-wrap:pretty}h1,h2{font-size:clamp(32px,4.4vw,64px)}a{color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:6px}.kicker{font:600 13px/1 var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);align-items:center;gap:12px;margin:0 0 1.1rem;display:flex}.kicker:before{content:"";opacity:.6;background:currentColor;width:28px;height:1px}.neon{margin-bottom:.28em;padding-bottom:.12em}[data-theme=night] .neon{background:linear-gradient(90deg,#ff6ad5,#ffd36a,#6affc8);color:#0000;-webkit-background-clip:text;background-clip:text}.skip{position:absolute;top:8px;left:-999px}.skip:focus{z-index:100;background:var(--bg);padding:8px 12px;left:16px}.room{z-index:0;pointer-events:none;position:fixed;inset:0}.chrome{z-index:10;align-items:center;gap:24px;padding:18px 28px;display:flex;position:fixed;inset:0 0 auto}.logo{font:800 18px/1 var(--font-head);letter-spacing:-.02em;align-items:center;gap:10px;text-decoration:none;display:inline-flex}.logo-mark{background:radial-gradient(circle at 35% 35%,#fff3c4,#ffb347 60%,#ff7a3d);border-radius:50%;width:12px;height:12px;box-shadow:0 0 10px #ffa03c8c}[data-theme=night] .logo-mark{background:conic-gradient(from 200deg,#ff6ad5,#ffd36a,#6affc8,#ff6ad5);box-shadow:0 0 12px #ff6ad599}.nav{gap:20px;margin-left:auto;font-size:15px;display:flex}.nav a{opacity:.85;padding:4px 0;text-decoration:none;transition:opacity .2s;position:relative}.nav a:after{content:"";transform-origin:100%;background:currentColor;height:1.5px;transition:transform .25s;position:absolute;inset:auto 0 0;transform:scaleX(0)}.nav a:hover{opacity:1}.nav a:hover:after{transform-origin:0;transform:scaleX(1)}.clock{font:600 13px/1 var(--font-mono);letter-spacing:.1em;background:var(--glass);border:1px solid var(--glass-border);backdrop-filter:blur(8px);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:8px;margin:0;padding:8px 12px;display:inline-flex}.clock svg{flex:none}.clock-sun{fill:#f0a020;stroke:#f0a020;stroke-width:1.6px;stroke-linecap:round}.clock-moon{fill:#ffe08a;display:none}.clock[data-phase=night] .clock-sun{display:none}.clock[data-phase=night] .clock-moon{display:block}main{z-index:1;position:relative}.sec{align-items:center;min-height:100svh;padding:96px 6vw;display:flex;position:relative}.scrim{z-index:0;pointer-events:none;position:fixed;inset:0}.scrim span{will-change:opacity;position:absolute;inset:0}.scrim-l,.scrim-r{-webkit-backdrop-filter:blur(5px)}.scrim-l{-webkit-mask-image:linear-gradient(90deg,#000 30%,#0000 58%);mask-image:linear-gradient(90deg,#000 30%,#0000 58%)}.scrim-r{-webkit-mask-image:linear-gradient(270deg,#000 30%,#0000 58%);mask-image:linear-gradient(270deg,#000 30%,#0000 58%)}.room[data-low-power=true]~.scrim span{-webkit-backdrop-filter:none}.pager{display:none}.scrim-l{opacity:var(--scrim-l,1);background:linear-gradient(90deg, color-mix(in srgb, var(--tint) var(--scrim-in), transparent) 0%, color-mix(in srgb, var(--tint) var(--scrim-mid), transparent) 40%, transparent 62%)}.scrim-r{opacity:var(--scrim-r,0);background:linear-gradient(270deg, color-mix(in srgb, var(--tint) var(--scrim-in), transparent) 0%, color-mix(in srgb, var(--tint) var(--scrim-mid), transparent) 40%, transparent 62%)}.scrim-c{opacity:var(--scrim-c,0);background:linear-gradient(0deg, color-mix(in srgb, var(--tint) var(--scrim-in), transparent) 0%, color-mix(in srgb, var(--tint) var(--scrim-mid), transparent) 30%, transparent 62%)}.chrome:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(180deg, color-mix(in srgb, var(--tint) 82%, transparent) 0%, color-mix(in srgb, var(--tint) 40%, transparent) 60%, transparent 100%);-webkit-backdrop-filter:blur(10px);position:absolute;inset:0 0 -36px;-webkit-mask-image:linear-gradient(#000 0% 45%,#0000 100%);mask-image:linear-gradient(#000 0% 45%,#0000 100%)}.sec .content{width:min(42%,560px)}#hero .content{width:min(48%,660px)}.sec h1{letter-spacing:-.045em;margin-bottom:.32em;font-size:clamp(44px,6.2vw,92px);line-height:.96}.sec--right{justify-content:flex-end}.sec--center{text-align:center;justify-content:center;align-items:flex-end;padding-bottom:12vh}.sec--center .content{width:min(680px,100%)}.sec--center .kicker{justify-content:center}.sec--center .kicker:after{content:"";opacity:.6;background:currentColor;width:28px;height:1px}.lead{font-size:20px;line-height:1.55}#hero .lead{max-width:36ch}.muted{color:var(--muted)}.btn{font:600 13px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg);background:var(--glass);border:1px solid var(--glass-border);backdrop-filter:blur(8px);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:.6em;padding:13px 18px;text-decoration:none;transition:transform .2s,box-shadow .2s,background-color .2s;display:inline-flex}.btn:hover{box-shadow:0 8px 24px -10px color-mix(in srgb, var(--fg) 45%, transparent);transform:translateY(-2px)}.btn svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none}.btn--primary{background:var(--fg);color:var(--bg);border-color:#0000}[data-theme=night] .btn--primary{color:#120a24;background:linear-gradient(100deg,#ff6ad5,#ffd36a 55%,#6affc8) border-box;box-shadow:0 0 28px -6px #ff6ad58c}[data-theme=night] .btn--primary:hover{box-shadow:0 0 36px -4px #ff6ad5b3}.btn--lg{font:800 clamp(18px, 1.7vw, 23px)/1 var(--font-head);letter-spacing:-.01em;text-transform:none;padding:16px 26px}.btn--icon{width:54px;height:54px;padding:0;position:relative}.btn--icon:after{content:"Copied";font:600 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;background:var(--fg);color:var(--bg);opacity:0;pointer-events:none;border-radius:6px;padding:6px 8px;transition:opacity .2s,translate .2s;position:absolute;bottom:calc(100% + 8px);left:50%;translate:-50% 4px}.btn--icon[data-copied]:after{opacity:1;translate:-50%}.actions{flex-wrap:wrap;gap:10px;margin-top:2rem;display:flex}.cue{font:600 12px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);align-items:center;gap:14px;margin-top:2.6rem;text-decoration:none;display:inline-flex}.more{margin-top:1.4rem}.cue-line{background:color-mix(in srgb, currentColor 22%, transparent);width:1.5px;height:38px;position:relative;overflow:hidden}.cue-line:after{content:"";background:currentColor;height:40%;animation:2.2s cubic-bezier(.6,0,.4,1) infinite drip;position:absolute;inset:0 0 auto}@keyframes drip{0%{transform:translateY(-100%)}to{transform:translateY(260%)}}.status{font:600 12px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;background:var(--glass);border:1px solid var(--glass-border);backdrop-filter:blur(8px);border-radius:999px;align-items:center;gap:10px;margin:1.4rem 0 0;padding:9px 14px;display:inline-flex}.pulse{background:#1fbf5f;border-radius:50%;flex:none;width:8px;height:8px;position:relative}.pulse:after{content:"";background:inherit;border-radius:50%;animation:2s ease-out infinite ping;position:absolute;inset:0}@keyframes ping{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(3.2)}}.cards{gap:10px;display:grid}.card{background:var(--glass);border:1px solid var(--glass-border);backdrop-filter:blur(8px);border-radius:14px;grid-template-columns:auto 1fr auto;gap:0 16px;padding:14px 20px 14px 22px;text-decoration:none;transition:transform .25s,border-color .25s,box-shadow .25s;display:grid;position:relative;overflow:hidden}.card:before{content:"";background:linear-gradient(180deg, var(--a1), var(--a2));width:3px;transition:width .25s;position:absolute;inset:0 auto 0 0}.card:hover,.card:focus-visible{border-color:color-mix(in srgb, var(--a1) 55%, var(--glass-border));box-shadow:0 10px 30px -14px color-mix(in srgb, var(--a1) 70%, transparent);transform:translate(6px)}.card:hover:before,.card:focus-visible:before{width:6px}.card-n{font:600 12px/1 var(--font-mono);letter-spacing:.08em;color:var(--muted);padding-top:6px}.card h3{margin:0 0 4px;font-size:20px}.card p{margin:0 0 8px;font-size:15.5px;line-height:1.45}.card-go{opacity:.45;align-self:center;font-size:20px;transition:transform .25s,opacity .25s}.card:hover .card-go,.card:focus-visible .card-go{opacity:1;transform:translate(4px)}.stack{font:600 12px/1.5 var(--font-mono);color:var(--muted);flex-wrap:wrap;gap:2px 0;margin:0;padding:0;list-style:none;display:flex}.stack li+li:before{content:"/";opacity:.5;margin:0 8px}.tags{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tags li{font:600 12px/1 var(--font-mono);border:1px solid var(--glass-border);background:var(--glass);border-radius:999px;padding:7px 11px}.tags li.lang{align-items:center;gap:7px;padding-left:4px;transition:border-color .2s,transform .2s;display:inline-flex}.lang-logo{background:var(--spine);width:20px;height:20px;fill:var(--ink);border-radius:999px;flex:none;margin-block:-4px;padding:3.5px;box-shadow:inset 0 0 0 1px #fff3}.tags li.lang:hover{border-color:var(--spine);transform:translateY(-2px)}@media (prefers-reduced-motion:reduce){.tags li.lang{transition:none}}.rows{border-top:1px solid var(--glass-border);margin:0;padding:0;list-style:none}.row{border-bottom:1px solid var(--glass-border);padding:15px 0}.skills .row{grid-template-columns:7.5em 1fr;align-items:center;gap:16px;display:grid}.skills dt{font:600 12px/1 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.skills dd{margin:0}.after .row{gap:3px;display:grid}.after strong{font:800 19px/1.3 var(--font-head);letter-spacing:-.01em}.after strong a{text-underline-offset:4px;text-decoration:underline 1.5px}.after .row>span{color:var(--muted)}.cta{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin-top:1.8rem;display:flex}.contact-links{flex-wrap:wrap;justify-content:center;gap:10px;margin:12px 0 0;padding:0;list-style:none;display:flex}.foot{font:600 11px/1.4 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:3rem 0 0}.scrubber{z-index:10;position:fixed;top:50%;right:18px;transform:translateY(-50%)}.track{position:relative}.scrubber ol{margin:0;padding:0;list-style:none;display:grid}.scrubber a{width:24px;height:32px;color:var(--muted);text-decoration:none;display:block;position:relative}.scrubber .dot{position:absolute;inset:0}.scrubber .dot:before{content:"";background:var(--tint);border:1.5px solid;border-radius:50%;width:7px;height:7px;margin:-3.5px;transition:transform .2s;position:absolute;top:50%;left:50%}.scrubber a:hover .dot:before,.scrubber a:focus-visible .dot:before{transform:scale(1.35)}.scrubber a[aria-current=true]{color:var(--fg)}.tag{white-space:nowrap;font:600 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg);background:var(--glass);border:1px solid var(--glass-border);backdrop-filter:blur(8px);opacity:0;pointer-events:none;border-radius:999px;gap:6px;margin-right:4px;padding:6px 10px;transition:opacity .2s,transform .2s;display:inline-flex;position:absolute;top:50%;right:100%;transform:translate(6px,-50%)}.tag .l{color:var(--muted)}.scrubber a:hover .tag,.scrubber a:focus-visible .tag{opacity:1;transform:translateY(-50%)}.rail{background:linear-gradient(#ffc98a,#ffe2a8 20%,#8fd0ff 40%,#ff9a4a 60%,#ff2ad4 80%,#6a5cff);border-radius:2px;width:2px;position:absolute;top:16px;bottom:16px;right:11px}.orb{right:5px;top:calc(9px + var(--f,0) * 32px);pointer-events:none;border-radius:50%;width:14px;height:14px;transition:box-shadow .5s;position:absolute;box-shadow:0 0 14px 4px #ffaa3c8c}.orb:before{content:"";background:radial-gradient(circle at 35% 35%,#fffbe6,#ffd36a 45%,#ff9a3d);border-radius:50%;position:absolute;inset:0}html[data-phase=night] .orb{box-shadow:0 0 14px 4px #aa96ff80}html[data-phase=night] .orb:before{background:#f3efff;-webkit-mask:radial-gradient(circle at 74% 30%,#0000 4.8px,#000 5.4px);mask:radial-gradient(circle at 74% 30%,#0000 4.8px,#000 5.4px)}.sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}::selection{background:var(--accent);color:#fff}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.sec:not(#hero) .content>:not(.cards,.rows),.cards>*,.rows>*{animation:linear both rise view();animation-range:entry cover 26%}}}@keyframes rise{0%{opacity:0;translate:0 28px}}@media (prefers-reduced-motion:reduce){.card,.btn,.nav a,.nav a:after,.tag,.card-go{transition:none}.cue-line:after,.pulse:after{animation:none}}.stills{display:none;position:absolute;inset:0}.room.fallback .stills{display:block}.room.fallback canvas{display:none}.still{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .3s;position:absolute;inset:0}.still[data-index="0"]{opacity:1}@media (prefers-reduced-motion:reduce){.still{transition:none}}@media (width>=760px) and (width<=1023px){.sec .content{width:min(48%,520px)}#hero .content{width:min(56%,560px)}}@media (width<=759px){:root{--band:calc(58px + 40svh + 12px)}.chrome{background:var(--bg);gap:10px;padding:10px 12px;transition:background-color .6s}.chrome:before{display:none}.logo{gap:8px;font-size:16px}.logo-mark{width:10px;height:10px}.nav{display:none}.clock{padding:7px 10px;font-size:12px}.clock svg{display:none}.scrubber{margin-inline:auto;position:static;transform:none}.scrubber ol{grid-auto-flow:column}.scrubber a{width:21px;height:32px}.scrubber .dot:before{border-width:1.5px;width:6px;height:6px;margin:-3px}.tag{clip-path:inset(50%);border:0;width:1px;height:1px;padding:0;overflow:hidden}.rail{background:linear-gradient(90deg,#ffc98a,#ffe2a8 20%,#8fd0ff 40%,#ff9a4a 60%,#ff2ad4 80%,#6a5cff);width:auto;height:2px;margin-top:-1px;inset:50% 10.5px auto}.orb{width:12px;height:12px;top:50%;right:auto;left:calc(4.5px + var(--f,0) * 21px);margin-top:-6px}.room{z-index:3;height:40svh;box-shadow:0 0 0 1px var(--glass-border), 0 18px 40px -22px #00000080;border-radius:22px;inset:58px 12px auto;overflow:hidden}.scrim{height:var(--band);z-index:2;background:var(--bg);transition:background-color .6s;display:block;inset:0 0 auto}.scrim:after{content:"";background:linear-gradient(var(--bg), transparent);height:28px;position:absolute;inset:100% 0 auto}.scrim span{display:none}main{padding:var(--band) 0 8svh}.sec{min-height:0;scroll-margin-top:var(--band);padding:36px 20px 20px;display:block}.sec .content,.sec--center .content,#hero .content{width:100%}.sec h1{font-size:clamp(36px,10.4vw,46px)}.sec h2{margin-bottom:.45em;font-size:clamp(28px,8vw,34px)}.kicker{margin-bottom:.7rem;font-size:11px}.kicker:before{width:20px}.lead{font-size:17px;line-height:1.55}.sec--center{text-align:left}.sec--center .kicker{justify-content:flex-start}.sec--center .kicker:after{display:none}.actions .btn{flex:1}.cue{display:none}.cards{border-top:1px solid var(--glass-border);gap:0}.card{border:0;border-bottom:1px solid var(--glass-border);-webkit-backdrop-filter:none;background:0 0;border-radius:0;gap:0 10px;padding:16px 4px 16px 16px}.card:before{border-radius:3px;width:3px;inset:18px auto 18px 0}.card:hover,.card:focus-visible{box-shadow:none;transform:none}.card:hover:before,.card:focus-visible:before{width:3px}.card h3{font-size:19px}.card p{font-size:15px}.card-go{opacity:.5}.more{margin-top:1rem}.skills .row{grid-template-columns:1fr;gap:10px}.tags li.lang{cursor:pointer}.cta{justify-content:flex-start}.cta .btn--lg{flex:1}.contact-links{grid-template-columns:repeat(3,1fr);display:grid}.contact-links .btn{width:100%;padding-inline:8px}}html.still-mode main,html.still-mode .chrome,html.still-mode .scrubber,html.still-mode .scrim{visibility:hidden}
