.project-preview{isolation:isolate;border-radius:30px;min-width:0;height:345px;position:relative;overflow:clip}.preview-loadersz,.preview-tip-glide,.preview-stream-morph{background:var(--panel);color:var(--ink)}.preview-caption{font-size:12px;position:absolute;bottom:28px;left:25px}.demo-control{transition:transform .16s var(--ease-out);background:0 0;border:1px solid;border-radius:999px;align-items:center;gap:7px;padding:8px 11px;font-size:11px;display:inline-flex;position:absolute;bottom:20px;right:20px}.demo-control:active{transform:scale(.97)}.demo-control span{font-size:15px}.project-preview :focus-visible{outline-offset:4px;outline-color:currentColor}.loader-orbit{place-items:center;width:220px;height:220px;display:grid;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.loader-canvas{opacity:0;width:192px;height:192px;display:block}[data-loaded] .loader-canvas{opacity:1}.loader-fallback{grid-template-columns:1fr 1fr;gap:9px;display:grid;position:absolute;inset:75px;transform:rotate(20deg)}.loader-fallback span{background:currentColor;border-radius:50%}.loader-fallback span:nth-child(2){opacity:.65}.loader-fallback span:nth-child(3){opacity:.4}[data-loaded] .loader-fallback,[data-loaded] .tip-fallback{display:none}.tip-stage{position:absolute;inset:12px 12px 70px}.tip-anchor{color:#e8e9ef;width:52px;height:52px;transition:background-color .16s ease, transform .16s var(--ease-out);background:#ffffff0b;border:1px solid #ffffff20;border-radius:18px;place-items:center;padding:0;display:grid;position:absolute}.tip-anchor svg{width:20px;height:20px}.tip-anchor-a{top:36%;left:19%;transform:rotate(-8deg)}.tip-anchor-b{top:18%;right:18%;transform:rotate(7deg)}.tip-anchor-c{bottom:5%;right:23%;transform:rotate(-4deg)}.tip-anchor[data-active]{background:#ffffff24}.tip-fallback{color:#131211;background:#f1efeb;border-radius:14px;padding:12px 16px;font-size:12px;position:absolute;top:13%;left:10%}.tg-overlay.portfolio-tip{--tg-background:#f8f8f6;--tg-color:#131211;--tg-border:transparent;--tg-radius:9px;--tg-font:500 11px/1.45 "Inter Variable", Arial, sans-serif;--tg-padding:8px 10px;--tg-max-width:150px}.stream-sheet{background:var(--hero);color:var(--ink);border-radius:17px;padding:22px;position:absolute;inset:44px 28px 91px;transform:rotate(-5deg);box-shadow:0 10px 20px #2432220a}.sheet-top{align-items:center;gap:4px;padding-bottom:24px;display:flex}.sheet-top>span{opacity:.4;background:currentColor;border-radius:50%;width:4px;height:4px}.sheet-top>i{opacity:.3;background:currentColor;width:28px;height:1px;margin-left:auto}.stream-text{letter-spacing:-1px;overflow-wrap:break-word;font:27px/1.2 Georgia,Times New Roman,serif}.sheet-signature{color:var(--muted);font-size:10px;position:absolute;bottom:20px;left:22px}@media (hover:hover) and (pointer:fine){.tip-anchor:hover{background:#ffffff24}.demo-control:hover{transform:translateY(-1px)}}@media (width>=1500px){.project-preview{height:370px}}@media (width>=721px) and (width<=1000px){.project-preview{height:315px}.preview-caption{font-size:10px;bottom:23px;left:17px}.demo-control{padding:7px 9px;font-size:10px;bottom:15px;right:15px}.stream-sheet{padding:17px;inset:36px 16px 80px}.stream-text{font-size:23px}.tip-anchor{border-radius:15px;width:44px;height:44px}}@media (width<=720px){.project-preview{height:340px}.stream-sheet{inset-inline:max(30px,12%)}.stream-text{font-size:29px}}@media (prefers-reduced-motion:reduce){.demo-control,.tip-anchor{transition:none}.demo-control:hover,.demo-control:active{transform:none}}@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")}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-standard-normal.s-izfB6B.woff2)format("woff2")}.explore-label,.motion-word,.footer-phrase-motion{white-space:pre}.explore-letter,.motion-letter,.phrase-letter{transform-origin:bottom;display:inline-block;position:relative}.motion-letter:before,.phrase-letter:before{content:attr(data-letter);color:var(--motion-color);opacity:0;pointer-events:none;position:absolute;inset:0}.motion-word[data-word-played] .motion-letter{animation:title-study 2.6s linear calc(var(--letter-index) * 25ms) both paused}.motion-word[data-word-played] .motion-letter:before{animation:title-slip 2.6s linear calc(var(--letter-index) * 25ms) both paused}.motion-word[data-running] .motion-letter,.motion-word[data-running] .motion-letter:before{animation-play-state:running}@keyframes title-study{0%{opacity:0;transform:translateX(calc(6px + var(--letter-index) * 1px))}14%,30%{opacity:1;transform:translate(0)scale(1)}42%{transform:translateY(-3px)scale(1.3,1.15)skew(-8deg)}52%{transform:translateY(2px)scale(1.1,.9)skew(5deg)}64%,73%{opacity:1;transform:translateY(0)scale(1)}83%{opacity:0;transform:translateX(calc(6px + var(--letter-index) * 1px))}to{opacity:1;transform:translate(0)scale(1)}}@keyframes title-slip{0%,28%,66%,to{opacity:0;transform:translate(0)}42%,52%{opacity:.85;transform:translate(-2px,2px)}}.footer-phrase-motion{display:inline-block}.footer-phrase .phrase-letter{animation:phrase-study 14s var(--ease-out) infinite paused}.footer-phrase .phrase-letter:before{animation:phrase-echo 14s var(--ease-out) infinite paused}.footer-phrase[data-running] .phrase-letter,.footer-phrase[data-running] .phrase-letter:before{animation-play-state:running}@keyframes phrase-study{0%,16%,32%,47%,63%,78%,to{transform:translate(0)rotate(0)scale(1)}7%{transform:translateY(calc(var(--letter-wave) * -6px)) rotate(calc(var(--letter-wave) * 8deg)) scale(1.06)}39%{transform:translateY(-1px)skew(-6deg)}70%{transform:translateX(calc((6 - var(--letter-index)) * .6px)) translateY(calc(var(--letter-wave) * 3px)) scale(.94, 1.1)}}@keyframes phrase-echo{0%,16%,32%,47%,63%,78%,to{opacity:0;transform:translate(0)}7%{opacity:.6;transform:translate(-2px,3px)}39%{opacity:.75;text-shadow:-3px -2px var(--motion-color), -6px -4px var(--motion-color);transform:translate(-4px,-3px)}70%{opacity:.6;transform:translate(2px,2px)}}.stream-chat [data-effect=rush] [data-stream-morph-key]{transform-origin:bottom;animation:stream-rush .45s var(--ease-out) both;display:inline-block}@keyframes stream-rush{0%{opacity:0;text-shadow:0 -4px #9848e899,0 5px #337de888,0 2px #ea458b88;transform:scale(.95,1.7)}40%{opacity:1;text-shadow:0 -2px #e6a32677,0 3px #23b87977;transform:scale(1.02,1.2)}to{opacity:1;text-shadow:0 0 #0000;transform:scale(1)}}@media (width<=720px){.footer-phrase-motion{font-size:13px}}@media (prefers-reduced-motion:reduce){.motion-word[data-word-played] .motion-letter,.motion-word[data-word-played] .motion-letter:before,.footer-phrase .phrase-letter,.footer-phrase .phrase-letter:before,.stream-chat [data-effect=rush] [data-stream-morph-key]{animation:none}}.motion-word[data-reduced] .motion-letter,.motion-word[data-reduced] .motion-letter:before{animation:none}.hero-animation,.motion-word{display:inline-block}.motion-word.hero-wave[data-word-played] .motion-letter{animation:hero-word-wave 4.8s var(--ease-out) calc(var(--letter-index) * 55ms) infinite paused}.motion-word.hero-wave[data-word-played] .motion-letter:before{animation:hero-word-color 4.8s var(--ease-out) calc(var(--letter-index) * 55ms) infinite paused}.motion-word.hero-wave[data-running] .motion-letter,.motion-word.hero-wave[data-running] .motion-letter:before{animation-play-state:running}@keyframes hero-word-wave{0%,16%,56%,to{transform:translateY(0)rotate(0)scale(1)}30%{transform:translateY(-4px)rotate(-4deg)scale(1.13,1.18)}40%{transform:translateY(2px)rotate(3deg)scale(1.08,.91)}48%{transform:translateY(-1px)rotate(0)scaleY(1.03)}}@keyframes hero-word-color{0%,16%,56%,to{opacity:0;transform:translate(0)}30%{opacity:.9;transform:translate(-2px,3px)}40%{opacity:.75;transform:translate(2px,-1px)}48%{opacity:.3;transform:translate(-1px,1px)}}@media (prefers-reduced-motion:reduce){.motion-word.hero-wave[data-word-played] .motion-letter,.motion-word.hero-wave[data-word-played] .motion-letter:before{animation:none}}.motion-word.hero-wave[data-reduced] .motion-letter,.motion-word.hero-wave[data-reduced] .motion-letter:before{animation:none}:root{color-scheme:light;--paper:#f6f6f5;--hero:#fff;--ink:#131211;--muted:#686662;--line:#e2e2e0;--surface:#eaeaea;--panel:#f3f3f3;--button:#131211;--button-ink:#fff;--serif:"Newsreader Variable", Georgia, "Times New Roman", serif;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);font-synthesis:none;-webkit-font-smoothing:antialiased;font-family:Inter Variable,Arial,sans-serif}:root[data-theme=dark]{color-scheme:dark;--paper:#1c1c1c;--hero:#151515;--ink:#f4f4f2;--muted:#aaa9a6;--line:#353535;--surface:#303030;--panel:#252525;--button:#f4f4f2;--button-ink:#151515}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{background:var(--paper);color:var(--ink);isolation:isolate;margin:0}main{z-index:2;background:var(--paper);position:relative}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}svg{flex-shrink:0;width:24px;height:24px;display:block}h1,h2,h3,p{margin:0}::selection{color:#131211;background:#ddd}:focus-visible{outline-offset:5px;outline:2px solid}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;color:var(--button-ink);background:var(--button);border-radius:999px;padding:12px 20px;position:fixed;top:12px;left:12px;transform:translateY(-160%)}.skip-link:focus{transform:none}.section-width{width:min(1008px,100% - 64px);margin-inline:auto}.site-header{z-index:50;background:var(--hero);justify-content:space-between;align-items:center;gap:16px;min-height:76px;padding:20px 24px;display:flex;position:fixed;inset:0 0 auto;overflow:clip}@keyframes header-name-in{0%{opacity:0;translate:-18px}to{opacity:1;translate:0}}@keyframes header-controls-in{0%{opacity:0;translate:calc(100% + var(--header-inset,0px) + 24px) 0}to{opacity:1;translate:0}}@keyframes header-nav-in{0%{opacity:0}to{opacity:1}}.site-header>.wordmark{animation:header-name-in .6s var(--ease-out) backwards;transform:translateX(var(--header-inset,0px));transition:transform .24s var(--ease-out)}.wordmark{letter-spacing:-.8px;align-items:center;gap:3px;font-size:19px;font-weight:650;display:inline-flex}.wordmark svg{width:20px;height:20px}.header-word{white-space:nowrap;transform-origin:0;transition:transform .45s var(--ease-out);display:inline-block}.header-letter{transform-origin:bottom;transition:transform .45s var(--ease-out);display:inline-block;position:relative}.header-letter-ink{position:relative}.header-letter-echo{opacity:0;color:var(--letter-color);pointer-events:none;transition:transform .45s var(--ease-out), opacity .3s ease;position:absolute;inset:0}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.header-wordmark:hover .header-word{transform:scale(1.13)}.header-wordmark:hover .header-letter{transform:translateY(var(--footer-lift)) rotate(var(--footer-turn))}.header-wordmark:hover .header-letter-echo{opacity:.9;transform:translate(-3px,4px)}}.header-nav{color:var(--muted);transition:opacity .18s ease, transform .18s var(--ease-out), visibility .18s;gap:4px;font-size:14px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.header-mobile-showcase{display:none}.header-nav a{border-radius:999px;padding:8px 12px;transition:color .16s,background-color .16s}.header-nav a.is-active,.site-menu a.is-active{color:var(--ink);background:var(--surface)}.site-menu a.is-active{box-shadow:0 0 0 6px var(--surface);border-radius:6px}.header-nav a{animation:.6s 60ms backwards header-nav-in}.header-actions{animation:header-controls-in .6s var(--ease-out) 60ms backwards;transform:translateX(calc(var(--header-inset,0px) * -1));align-items:center;gap:20px;transition:opacity .18s,visibility .18s;display:flex}.header-github{border:1px solid var(--line);border-radius:999px;align-items:center;gap:7px;padding:5px 13px;font-size:14px;display:flex;position:relative}.header-github svg{width:14px;height:14px}.header-github:before{content:"";border-radius:inherit;pointer-events:none;opacity:0;background:linear-gradient(90deg,#9848e8,#337de8,#ea458b,#cd860b,#239968,#9848e8) 0 0/200% 100%;padding:1px;transition:opacity .2s;animation:2.4s linear infinite paused collaborate-spectrum;position:absolute;inset:-1px;mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-position:0 0,0 0;mask-size:auto,auto;mask-repeat:repeat,repeat;mask-clip:content-box,border-box;mask-origin:content-box,border-box;mask-composite:exclude;mask-mode:match-source,match-source}.header-social-icon{place-items:center;width:14px;height:14px;display:grid;position:relative}.header-social-icon svg{transition:opacity .2s}.header-social-icon .social-spectrum{opacity:0;position:absolute}.header-github:is(:focus-visible,:active) .collaborate-copy,.header-github:is(:focus-visible,:active) .social-base{opacity:0}.header-github:is(:focus-visible,:active) .collaborate-spectrum,.header-github:is(:focus-visible,:active) .social-spectrum,.header-github:is(:focus-visible,:active):before{opacity:1}@media (hover:hover) and (pointer:fine){.header-github:hover .collaborate-copy,.header-github:hover .social-base{opacity:0}.header-github:hover .collaborate-spectrum,.header-github:hover .social-spectrum,.header-github:hover:before{opacity:1}.header-github:hover .collaborate-spectrum,.header-github:hover .social-spectrum stop,.header-github:hover:before{animation-play-state:running}}.site-header[data-compact]>.wordmark{transform:none}.site-header[data-compact] .header-nav,.site-header[data-compact] .header-actions{opacity:0;visibility:hidden;pointer-events:none}.site-header[data-compact] .header-nav{transform:translate(-50%,-6px)}.menu-trigger{opacity:0;visibility:hidden;width:32px;height:32px;transition:opacity .18s ease, transform .18s var(--ease-out), visibility .18s;background:0 0;border:0;border-radius:50%;align-content:center;justify-items:center;gap:5px;display:grid;position:absolute;right:24px;transform:translate(6px)}.menu-trigger span{background:currentColor;width:17px;height:1px}.site-header[data-compact] .menu-trigger{opacity:1;visibility:visible;transform:none}.site-header[data-keyboard] .header-nav,.site-header[data-keyboard]>.wordmark,.site-header[data-keyboard] .menu-trigger{transition:none}.site-menu{border:1px solid var(--line);width:225px;max-width:calc(100vw - 40px);color:var(--ink);background:var(--hero);transform-origin:100% 0;opacity:0;transition:opacity .16s ease, transform .18s var(--ease-out), display .18s allow-discrete, overlay .18s allow-discrete;border-radius:12px;flex-direction:column;gap:18px;margin:0;padding:20px;font-size:14px;position:fixed;inset:74px 24px auto auto;transform:translateY(-8px)scale(.96);box-shadow:0 12px 28px #0000000d}.site-menu:popover-open{opacity:1;transition-duration:.24s;display:flex;transform:translateY(0)scale(1)}.menu-theme{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;gap:28px;padding-top:18px;display:flex}@starting-style{.site-menu:popover-open{opacity:0;transform:translateY(-8px)scale(.96)}}.theme-switch{isolation:isolate;border:1px solid var(--line);background:0 0;border-radius:999px;justify-content:space-around;align-items:center;width:64px;height:34px;padding:3px;display:flex;position:relative}.theme-icon{place-items:center;width:26px;height:26px;display:grid}.theme-icon svg{width:14px;height:14px}.theme-thumb{z-index:-1;background:var(--ink);width:26px;height:26px;transition:transform .25s var(--ease-in-out);border-radius:50%;position:absolute;top:3px;left:3px}.theme-switch .theme-icon:first-child{color:var(--hero)}[data-theme=dark] .theme-thumb{transform:translate(30px)}[data-theme=dark] .theme-switch .theme-icon:first-child{color:var(--ink)}[data-theme=dark] .theme-switch .theme-icon:nth-child(2){color:var(--hero)}.theme-switch[data-instant] .theme-thumb{transition:none}::view-transition-group(root){animation-duration:.25s}::view-transition-old(root){animation:.2s both theme-fade}::view-transition-new(root){animation:none}@keyframes theme-fade{to{opacity:0}}.hero{isolation:isolate;background:var(--hero);padding:176px 24px 80px;position:relative;overflow:clip}.hero-content{text-align:center;width:min(100%,669px);margin-inline:auto}.hero-note{color:var(--muted);align-items:center;gap:10px;font-size:14px;display:inline-flex}.hero-note>span{background:var(--surface);border-radius:999px;padding:4px 9px;font-size:13px;display:inline-block}.hero h1{font:300 64px/1 var(--serif);letter-spacing:-1.8px;margin:32px auto 24px}.hero h1 .hero-title-line,.section-heading h2 span,.about h2 span{color:#777370}[data-theme=dark] .hero h1 .hero-title-line,[data-theme=dark] .section-heading h2 span,[data-theme=dark] .about h2 span{color:var(--muted)}.hero-description{color:var(--muted);margin-inline:auto;font-size:17px;line-height:1.6}.hero-title{position:relative}.hero-title-copy{color:inherit}.hero-type-canvas{z-index:4;opacity:0;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.hero-title[data-kinetic] .hero-title-copy{visibility:hidden}.hero-title[data-kinetic][data-reading] .hero-title-copy{visibility:visible}.hero-type-canvas[data-visible]{opacity:1}.hero-github{transition:transform .16s var(--ease-out), color .16s ease;align-items:center;gap:9px;display:inline-flex}.hero-actions .hero-github:active{color:var(--ink);transition-duration:80ms;transform:translateY(1px)scale(.96)}.hero-actions .hero-github:active svg{transition-duration:80ms;transform:rotate(4deg)scale(.9)}.hero-actions .hero-projects:active{background:color-mix(in srgb, var(--button) 85%, var(--button-ink));transition-duration:80ms;transform:translateY(1px)scale(.96)}.hero-github svg{width:17px;height:17px;transition:transform .16s var(--ease-out)}.hero-projects{cursor:pointer;user-select:none;position:relative}.collaborate-label{position:relative}.collaborate-copy{transition:opacity .2s}.collaborate-spectrum{color:#0000;opacity:0;background:linear-gradient(90deg,#9848e8,#337de8,#ea458b,#cd860b,#239968,#9848e8) 0 0/200% 100%;-webkit-background-clip:text;background-clip:text;transition:opacity .2s;animation:2.4s linear infinite paused collaborate-spectrum;position:absolute;inset:0}@keyframes collaborate-spectrum{to{background-position:-200% 0}}@media (hover:none){.hero-github:active .collaborate-copy{opacity:0}.hero-github:active .collaborate-spectrum{opacity:1;transition-duration:80ms}}.button-ink{pointer-events:none;width:36px;height:36px;position:absolute;top:-12px;right:-14px}.button-ink i{opacity:0;width:22px;height:3px;transition:transform .2s var(--ease-out), opacity .16s ease;background:linear-gradient(90deg,#b59bd1,#7392d5);border-radius:999px;position:absolute;top:6px;left:8px;transform:rotate(-35deg)translate(-8px)scaleX(.45)}.button-ink i:nth-child(2){background:linear-gradient(90deg,#db939d,#e9ac7b);transition-delay:30ms;top:16px;transform:rotate(-5deg)translate(-8px)scaleX(.45)}.button-ink i:nth-child(3){background:linear-gradient(90deg,#aaa479,#92b392);transition-delay:60ms;top:26px;transform:rotate(25deg)translate(-8px)scaleX(.45)}.hero-actions .hero-projects[data-burst] .button-ink i{opacity:0;transition:none}.hero-actions{justify-content:center;align-items:center;gap:24px;margin-top:40px;font-size:17px;display:flex}.text-link{color:var(--muted)}.button{background:var(--button);min-height:36px;color:var(--button-ink);transition:transform .16s var(--ease-out), background-color .16s ease;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:8px 17px;font-size:14px;font-weight:500;line-height:1.2;display:inline-flex}.hero-actions .button{padding-block:7px;font-size:17px}.button-outline{color:var(--ink);border-color:var(--line);background:0 0}.button svg{width:16px;height:16px}.button:active{transform:scale(.98)}.intro{animation:arrive .7s var(--ease-out) both;animation-delay:var(--delay,0s)}@keyframes arrive{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.project-gallery{cursor:grab;touch-action:pan-y;width:min(100%,840px);margin:128px auto 0}.project-gallery[data-dragging]{cursor:grabbing;user-select:none}.gallery-track{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.gallery-slot{min-width:0}.project-gallery[data-enter-pending] .gallery-slot{opacity:0}.gallery-project{outline:1px solid color-mix(in srgb, var(--ink) 12%, transparent);box-shadow:0 3px 12px color-mix(in srgb, var(--ink) 5%, transparent);min-width:0;transition:transform .45s var(--ease-out);border-radius:8px;position:relative;overflow:clip}.gallery-link{z-index:2;cursor:pointer;border-radius:inherit;position:absolute;inset:0}.gallery-link:focus-visible{outline-offset:-4px}.gallery-project .tip-anchor-d{bottom:8%;left:8%;transform:rotate(5deg)}.gallery-project .tip-anchor-e{bottom:27%;left:44%;transform:rotate(-6deg)}.gallery-project .tip-anchor-f{bottom:2%;right:8%;transform:rotate(8deg)}.gallery-project .tip-anchor{z-index:3;pointer-events:auto}.project-gallery[data-entering] .tip-fallback{visibility:hidden}.gallery-project .project-preview{isolation:auto;background:color-mix(in srgb, var(--surface) 58%, var(--hero));height:280px;color:var(--ink);border-radius:8px;transition:background-color .3s}.card-spectrum{pointer-events:none;opacity:0;width:100%;height:100%;transition:opacity .2s;position:absolute;inset:0}.gallery-project[data-spectrum] .card-spectrum{opacity:1}.gallery-caption{color:var(--ink);pointer-events:none;background:linear-gradient(transparent, color-mix(in srgb, var(--hero) 92%, transparent));padding:32px 12px 11px;position:absolute;inset:auto 0 0}.gallery-caption h2{letter-spacing:-.3px;font-size:13px;font-weight:500}.gallery-caption a{pointer-events:auto}.gallery-caption p{color:var(--muted);margin-top:4px;font-size:10px}.gallery-project .preview-caption,.gallery-project .demo-control{display:none}.gallery-project .tip-stage{inset:8px 8px 55px}.gallery-project .tip-anchor-a{top:28%;left:8%}.gallery-project .tip-anchor-b{top:10%;left:44%}.gallery-project .tip-anchor-c{top:33%;right:8%}.gallery-project .tip-anchor{width:34px;height:34px;color:var(--ink);border-color:var(--line);background:color-mix(in srgb, var(--surface) 65%, transparent);border-radius:11px}.gallery-project .tip-anchor svg{width:16px;height:16px}.gallery-project .tip-fallback{padding:8px 10px;font-size:10px}.gallery-project .loader-orbit{width:200px;height:200px;top:44%}.gallery-project .loader-canvas{width:176px;height:176px}.gallery-project .loader-fallback{inset:55px}.gallery-project .stream-sheet{border-radius:8px;padding:14px;inset:22px 14px 52px}.gallery-project .sheet-top{padding-bottom:14px}.gallery-project .sheet-signature{font-size:8px;bottom:12px;left:14px}.gallery-project .stream-text{letter-spacing:-.7px;font-size:21px;line-height:1.2}.stream-chat{background:var(--hero);color:var(--ink);border-radius:10px;flex-direction:column;gap:10px;padding:14px;display:flex;position:absolute;inset:22px 18px 55px}.chat-heading{align-items:center;gap:6px;font-size:11px;font-weight:600;display:flex}.chat-heading svg{width:14px;height:14px}.chat-prompt{background:var(--surface);border-radius:10px 10px 3px;align-self:flex-end;max-width:90%;padding:7px 9px;font-size:10px;line-height:1.4}.stream-viewport{flex:1;min-height:0;overflow:clip;mask-image:linear-gradient(#0000,#000 8px calc(100% - 3px),#0000)}.stream-chat .stream-text{letter-spacing:0;transition:transform .18s var(--ease-out);font:12px/1.55 Inter Variable,Arial,sans-serif}.stream-chat .stream-text p+p{margin-top:12px}.stream-chat [data-effect=wipe] [data-stream-morph-key]{animation:chat-wipe .45s var(--ease-in-out) both}.stream-chat [data-effect=blur] [data-stream-morph-key]{animation:.45s ease-out both chat-blur}.stream-chat [data-effect=fade] [data-stream-morph-key]{animation:.35s ease-out both chat-fade}.preview-stream-morph:not([data-running]) [data-stream-morph-key]{animation-play-state:paused}@keyframes chat-wipe{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes chat-blur{0%{opacity:0;filter:blur(4px)}to{opacity:1;filter:blur()}}@keyframes chat-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.framework-glyph,.framework-glyph-ink,.framework-glyph:after,.site-header>.wordmark,.header-nav a,.header-actions,.header-actions>*,.menu-trigger{animation:none}.header-word,.header-letter,.header-letter-echo,.footer-word,.footer-letter,.footer-letter-echo{transition:none}.header-github:before,.header-github .collaborate-spectrum{animation:none}.header-github:before,.header-social-icon svg,.footer-social svg{transition:none}.social-spectrum stop{animation:none}.stack-pair,.framework-logo,.stack-mark svg,.language-square{transition:none}.stream-chat [data-effect] [data-stream-morph-key]{animation:none}.stream-chat .stream-text{transition:none}}[data-reveal][data-pending]{opacity:0;transform:translateY(14px)}[data-reveal][data-visible]{animation:arrive .7s var(--ease-out) both;animation-delay:var(--delay,0s)}.stack-strip{padding-block:120px 100px}.stack-strip>p{color:var(--muted);max-width:650px;font-size:17px;line-height:1.6}.stack-logos{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin:32px auto 0;display:grid}.stack-pair{background:var(--surface);height:110px;transition:background-color .42s var(--ease-out), transform .2s var(--ease-out);border-radius:14px;position:relative;overflow:clip;container-type:inline-size}.stack-face{animation:logo-out var(--pair-duration,20s) var(--ease-in-out) infinite;animation-delay:var(--pair-delay);place-items:center;animation-play-state:paused;display:grid;position:absolute;inset:0}.stack-face+.stack-face{animation-name:logo-in}.stack-mark{letter-spacing:-.8px;justify-content:center;align-items:center;gap:8px;font-size:20px;font-weight:600;display:flex}.framework-name{white-space:pre}.framework-glyph{animation:framework-letter var(--pair-duration,20s) var(--ease-out) infinite paused;animation-delay:calc(var(--pair-delay) + var(--glyph-rank) * 18ms);display:inline-block;position:relative}.framework-glyph-ink{animation:framework-ink var(--pair-duration,20s) linear infinite paused;animation-delay:calc(var(--pair-delay) + var(--glyph-rank) * 18ms)}.framework-glyph:after{content:var(--flip-a);text-align:center;opacity:0;color:var(--glyph-color);animation:framework-flip var(--pair-duration,20s) steps(1, end) infinite paused;animation-delay:calc(var(--pair-delay) + var(--glyph-rank) * 18ms);position:absolute;inset:0;overflow:clip}.stack-strip[data-running] .framework-glyph,.stack-strip[data-running] .framework-glyph-ink,.stack-strip[data-running] .framework-glyph:after{animation-play-state:running}.stack-pair[data-hovered] .framework-glyph{animation-play-state:paused;transform:none!important}.stack-pair[data-hovered] .framework-glyph-ink{animation-play-state:paused;opacity:1!important}.stack-pair[data-hovered] .framework-glyph:after{animation-play-state:paused;opacity:0!important}@keyframes framework-letter{0%,42%,50%,92%,to{transform:translateY(0)}46%{transform:translateY(-8px)}96%{transform:translateY(8px)}}@keyframes framework-ink{0%,44%,47%,94%,97%,to{opacity:1}44.5%,46.5%,94.5%,96.5%{opacity:0}}@keyframes framework-flip{0%,44%,46.5%,94%,96.5%,to{opacity:0;content:var(--flip-a)}44.5%,94.5%{opacity:1;content:var(--flip-a)}45.2%,95.2%{opacity:1;content:var(--flip-b)}45.9%,95.9%{opacity:1;content:var(--flip-c)}}.stack-mark svg{width:25px;height:25px}.framework-logo{filter:grayscale()brightness(0);transition:filter .42s var(--ease-out)}[data-theme=dark] .framework-logo{filter:grayscale()brightness(0)invert()}.stack-mark svg,.language-square{transition:color .42s var(--ease-out), background-color .42s var(--ease-out)}.stack-pair[data-hovered]{background:color-mix(in srgb, var(--hover-brand) 42%, var(--hero))}.stack-strip[data-running] .stack-pair[data-hovered] .stack-face{animation-play-state:paused}.stack-pair[data-hovered] .stack-face{opacity:0!important;transform:none!important}.stack-pair[data-hovered] .stack-face[data-selected]{opacity:1!important}.stack-pair[data-hovered] svg{color:var(--brand)}.stack-pair[data-hovered] .stack-vue svg path+path{fill:#35495e}.stack-pair[data-hovered] .framework-logo{filter:none}[data-theme=dark] .stack-pair[data-hovered] .framework-logo[data-monochrome]{filter:invert()}.stack-pair[data-hovered] .language-square{background:var(--brand);color:#fff}.stack-pair[data-hovered] .stack-javascript .language-square{color:#131211}.framework-cursor{z-index:1100;pointer-events:none;visibility:hidden;width:18px;height:22px;position:fixed;top:0;left:0}.framework-cursor[data-visible]{visibility:visible}.framework-cursor svg{width:100%;height:100%;fill:var(--cursor-color);stroke:var(--hero);stroke-width:1.5px;stroke-linejoin:round;display:block}@media (hover:hover) and (pointer:fine){.stack-logos[data-custom-cursor] .stack-pair{cursor:none}}.stack-javascript,.stack-typescript{letter-spacing:-.3px;font-size:13px}.language-square{background:var(--ink);width:26px;height:26px;color:var(--surface);letter-spacing:-.8px;justify-content:end;align-items:end;padding:3px;font-size:15px;display:flex}.stack-strip[data-running] .stack-face{animation-play-state:running}@keyframes logo-out{0%,42%{opacity:1;transform:translateY(0)}50%,92%{opacity:0;transform:translate(calc(var(--swap-x,0px) * -1), calc(var(--swap-y,18px) * -1))}to{opacity:1;transform:translateY(0)}}@keyframes logo-in{0%,42%{opacity:0;transform:translate(var(--swap-x,0px), var(--swap-y,18px))}50%,92%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translate(var(--swap-x,0px), var(--swap-y,18px))}}.eyebrow{text-transform:uppercase;letter-spacing:1px;color:var(--muted);font-size:12px}.work{background:var(--hero);padding-block:100px;position:relative;overflow:clip}.work:before{content:"";background:radial-gradient(var(--line) 1px, transparent 1px) 0 0/9px 9px;pointer-events:none;width:55%;position:absolute;top:120px;bottom:100px;right:0;mask-image:linear-gradient(90deg,#0000,#000)}.section-heading{text-align:center;width:min(100% - 48px,700px);margin:0 auto 56px;position:relative}.section-heading h2{font:400 34px/1.08 var(--serif);letter-spacing:-1px}.project-carousel{position:relative}.carousel-viewport{scrollbar-width:none;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;overflow-x:auto}.carousel-viewport::-webkit-scrollbar{display:none}.carousel-viewport{cursor:grab}.carousel-viewport[data-dragging]{scroll-snap-type:none;user-select:none;cursor:grabbing}.carousel-track{gap:32px;display:flex}.carousel-track:after{content:"";flex:0 0 var(--carousel-tail,200px)}.project-slide{background:var(--panel);scroll-snap-align:start;border-radius:18px;flex:0 0 min(776px,100%);grid-template-columns:1fr 42%;min-width:0;height:380px;display:grid;overflow:clip}.slide-copy{flex-direction:column;justify-content:space-between;padding:40px;display:flex}.slide-copy>p{letter-spacing:-.45px;font-size:19px;line-height:1.5}.slide-meta h3{font-size:15px;font-weight:550}.slide-meta>span{color:var(--muted);margin-top:5px;font-size:13px;display:block}.slide-links{gap:24px;margin-top:18px;font-size:13px;display:flex}.slide-links a{align-items:center;gap:5px;display:inline-flex}.slide-links svg{width:16px;height:16px}.project-slide .project-preview{height:100%;color:var(--ink);background:0 0;border-radius:0}.project-slide .demo-control{top:20px;bottom:auto}.project-slide .preview-caption{display:none}.project-slide .tip-anchor{color:var(--ink);border-color:var(--line);background:var(--hero)}.carousel-controls{align-items:center;gap:8px;margin-top:36px;display:flex}.carousel-controls button{border:1px solid var(--line);background:var(--hero);width:34px;height:34px;transition:background-color .16s ease, transform .16s var(--ease-out);border-radius:50%;place-items:center;font-size:27px;line-height:1;display:grid}.carousel-controls button span{margin-top:-3px}.carousel-controls button:disabled{opacity:.35;cursor:default}.carousel-progress{background:var(--line);flex:1;height:1px;margin-right:24px;overflow:hidden}.carousel-progress span{background:var(--ink);width:33.333%;height:100%;transform:translateX(var(--carousel-progress,0%));transition:transform .4s var(--ease-out);display:block}.project-tabs{isolation:isolate;gap:4px;width:fit-content;margin-top:30px;display:flex;position:relative}.project-tabs button{color:var(--muted);background:0 0;border:0;border-radius:999px;padding:11px 20px;font-size:14px;transition:color .16s;position:relative}.project-tabs button[aria-pressed=true]{color:var(--ink)}.project-tab-highlight{z-index:-1;width:var(--tab-width,103px);transform:translateX(var(--tab-x,0px));background:var(--surface);transition:transform .4s var(--ease-out), width .4s var(--ease-out);border-radius:999px;position:absolute;top:0;bottom:0;left:0}.project-tabs[data-instant] .project-tab-highlight,.project-carousel[data-instant] .carousel-progress span{transition:none}.about{grid-template-columns:1fr 1fr;align-items:center;gap:72px;padding-block:140px;display:grid}.about h2{font:400 36px/1.08 var(--serif);letter-spacing:-1px;margin:24px 0}.about-copy>p:not(.eyebrow){color:var(--muted);max-width:430px;font-size:15px;line-height:1.7}.about-copy>p+p{margin-top:15px}.about-copy>.button{margin-top:28px}.source-window{border:1px solid var(--line);background:var(--hero);border-radius:16px;overflow:hidden;transform:rotate(-2deg);box-shadow:0 16px 32px #00000004}.source-toolbar{border-bottom:1px solid var(--line);align-items:center;gap:5px;padding:16px;display:flex}.source-toolbar>span{background:var(--muted);opacity:.45;border-radius:50%;width:6px;height:6px}.source-toolbar>p{color:var(--muted);margin-left:16px;font-size:11px}.source-window pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:26px;font:12px/1.9 Consolas,SFMono-Regular,monospace}.source-window code{font:inherit}.code-muted{color:var(--muted)}.code-string{text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}.source-bottom{border-top:1px solid var(--line);color:var(--muted);align-items:center;gap:6px;padding:14px 20px;font-size:11px;display:flex}.source-dot{background:currentColor;border-radius:50%;width:5px;height:5px}.questions{background:var(--hero);border-top:1px solid var(--line);padding-block:90px}.questions>div{grid-template-columns:1fr 1fr;gap:72px;display:grid}.questions h2{font:400 34px/1.1 var(--serif);letter-spacing:-1px}.question-list details{border-bottom:1px solid var(--line)}.question-list summary{cursor:pointer;justify-content:space-between;align-items:center;gap:20px;padding:24px 0;font-size:15px;list-style:none;display:flex}.question-list details:first-child summary{padding-top:0}.question-list summary::-webkit-details-marker{display:none}.question-list summary svg{width:16px;height:16px;transition:transform .22s var(--ease-out)}.question-list details[open] summary svg{transform:rotate(45deg)}.answer{color:var(--muted);font-size:14px;line-height:1.7}.answer p{padding-bottom:24px}@supports (interpolate-size:allow-keywords){.question-list details{interpolate-size:allow-keywords}.question-list details::details-content{height:0;transition:height .28s var(--ease-out), content-visibility .28s allow-discrete;overflow:clip}.question-list details[open]::details-content{height:auto}}.site-footer{z-index:0;background:var(--hero);color:var(--ink);position:sticky;bottom:0}.footer-content{padding-block:80px 64px}.footer-grid{grid-template-columns:2fr 1.1fr .8fr 1.2fr;gap:36px;display:grid}.footer-word{white-space:nowrap;transform-origin:0;display:inline-block}.footer-letter{transform-origin:bottom;display:inline-block;position:relative}.footer-letter-ink{position:relative}.footer-letter-echo{opacity:0;pointer-events:none;position:absolute;inset:0}.footer-word{transition:transform .45s var(--ease-out);transform:scale(1.13)}.footer-letter{transform:translateY(var(--footer-lift,0px)) rotate(var(--footer-turn,0deg));transition:transform .45s var(--ease-out)}.footer-letter-echo{opacity:.9;color:var(--letter-color);transition:transform .45s var(--ease-out), opacity .3s ease;transform:translate(-3px,4px)}@media (hover:hover) and (pointer:fine){.footer-wordmark[data-gathered] .footer-word{transform:scale(1)}.footer-wordmark[data-gathered] .footer-letter{transform:translateY(0)rotate(0)}.footer-wordmark[data-gathered] .footer-letter-echo{opacity:0;transform:translate(0)}}.footer-intro>p{color:var(--muted);margin:18px 0 20px;font-size:13px;line-height:1.6}.footer-socials{align-items:center;gap:8px;margin-left:-10px;display:flex}.footer-social{border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:relative}.footer-social svg{width:23px;height:23px;transition:opacity .2s}.footer-social svg[data-icon=npm]{width:34px}.footer-social .social-spectrum{opacity:0;position:absolute}.social-spectrum stop{animation:2.4s linear infinite paused social-color}.social-spectrum stop:nth-child(2){animation-delay:-480ms}.social-spectrum stop:nth-child(3){animation-delay:-960ms}.social-spectrum stop:nth-child(4){animation-delay:-1440ms}.social-spectrum stop:nth-child(5){animation-delay:-1920ms}@keyframes social-color{0%,to{stop-color:#9848e8}20%{stop-color:#337de8}40%{stop-color:#ea458b}60%{stop-color:#e6a326}80%{stop-color:#23b879}}.footer-social:focus-visible .social-base,.footer-social:active .social-base{opacity:0}.footer-social:focus-visible .social-spectrum,.footer-social:active .social-spectrum{opacity:1}@media (hover:hover) and (pointer:fine){.footer-social:hover .social-base{opacity:0}.footer-social:hover .social-spectrum{opacity:1}.footer-social:hover .social-spectrum stop{animation-play-state:running}}.footer-links{color:var(--muted);flex-direction:column;align-items:start;gap:16px;font-size:13px;display:flex}.footer-links .eyebrow{margin-bottom:6px;font-size:11px}.motion-toggle{color:inherit;font-size:inherit;text-align:left;background:0 0;border:0;padding:0}.motion-toggle:disabled{cursor:default}@media (hover:hover) and (pointer:fine){.gallery-track:has(.gallery-project:is(:hover,[data-tooltip-hover])) .gallery-project:not(:hover,[data-tooltip-hover]) .project-preview,.gallery-track:has(.gallery-project:focus-within) .gallery-project:not(:focus-within) .project-preview{background:var(--surface)}.gallery-slot:has(.gallery-project:is(:hover,[data-tooltip-hover])),.gallery-slot:has(.gallery-project:focus-within){z-index:4}.project-gallery:not([data-dragging]) .gallery-project:is(:hover,[data-tooltip-hover]),.project-gallery .gallery-project:focus-within{transform:translateY(-14px)scale(1.045)}.hero-github:hover .collaborate-copy{opacity:0}.hero-github:hover .collaborate-spectrum{opacity:1}.hero-actions[data-animate] .hero-github:hover .collaborate-spectrum{animation-play-state:running}.hero-projects:hover .button-ink i{opacity:1;transform:rotate(-35deg)translate(6px)scaleX(1)}.hero-projects:hover .button-ink i:nth-child(2){transform:rotate(-5deg)translate(6px)scaleX(1)}.hero-projects:hover .button-ink i:nth-child(3){transform:rotate(25deg)translate(6px)scaleX(1)}.hero-github:hover svg{transform:translateY(-2px)rotate(-8deg)}.header-nav a:hover{color:var(--ink);background:var(--surface)}.button:hover{transform:translateY(-1px)}.text-link:hover,.slide-links a:hover,.footer-links a:hover{color:var(--ink)}.slide-links a:hover,.footer-links a:hover{text-underline-offset:4px;text-decoration:underline}.carousel-controls button:not(:disabled):hover{background:var(--surface)}.carousel-controls button:not(:disabled):active{transform:scale(.95)}.gallery-project .loader-orbit,.gallery-project .stream-sheet{transition:scale .4s var(--ease-out)}.gallery-project:hover .loader-orbit,.gallery-project:hover .stream-sheet{scale:1.045}}@media (width<=1000px){.header-nav a{padding-inline:8px}.header-actions{gap:12px}.stack-mark{gap:5px;font-size:17px}.stack-javascript,.stack-typescript{font-size:11px}.stack-mark svg{width:20px;height:20px}.about,.questions>div{gap:40px}}@media (width<=720px){html{scroll-padding-top:88px}.section-width{width:calc(100% - 40px)}.site-header{min-height:70px;padding:18px 20px}.site-header[data-compact]{padding-inline:20px}.site-header>.wordmark{transform:none}.wordmark{font-size:18px}.wordmark svg{width:18px;height:18px}.header-nav,.header-actions{display:none}.menu-trigger{opacity:1;visibility:visible;animation:header-controls-in .6s var(--ease-out) 60ms backwards;right:20px;transform:none}.header-mobile-showcase{background:var(--surface);min-height:40px;color:var(--ink);white-space:nowrap;animation:header-controls-in .6s var(--ease-out) 80ms backwards;transition:background-color .16s ease, scale .16s var(--ease-out);border-radius:999px;align-items:center;padding:8px 11px;font-size:12px;line-height:1;display:inline-flex;position:absolute;top:50%;right:60px;transform:translateY(-50%)}.header-mobile-showcase:active{scale:.97}.header-mobile-showcase[aria-current=page]{background:var(--ink);color:var(--hero)}.header-mobile-showcase:focus-visible{background:var(--line);color:var(--ink);outline:none}.site-menu{top:68px;right:20px}.hero{padding:142px 20px 56px}.hero-note{gap:7px;font-size:11px}.hero-note>span{font-size:10px}.hero h1{letter-spacing:-1.7px;margin-block:28px 20px;font-size:clamp(38px,7.5vw,56px)}.hero-description{max-width:420px;font-size:15px;line-height:1.65}.hero-copy-break{display:none}.hero-actions{gap:18px;margin-top:28px;font-size:13px}.hero-actions .button{padding-inline:14px;font-size:13px}.project-gallery{touch-action:pan-x pan-y;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;margin-top:60px;padding:6px 3px 16px;scroll-padding-inline:3px;overflow:auto hidden}.gallery-track{gap:10px;display:flex}.gallery-track:after{content:"";flex:0 0 max(0px,100% - min(260px,82%) - 10px)}.project-gallery::-webkit-scrollbar{display:none}.project-gallery[data-entering]{scroll-snap-type:none}.gallery-slot{scroll-snap-align:start;flex:0 0 min(260px,82%)}.gallery-project .project-preview{height:240px}.gallery-stream-morph .stream-chat{gap:8px;padding:10px;inset:10px 10px 48px}.gallery-stream-morph .chat-heading,.gallery-stream-morph .chat-prompt{flex-shrink:0}.stack-strip{padding-block:64px}.stack-strip>p{font-size:15px}.stack-logos{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:28px}.stack-pair{border-radius:10px;height:86px}.stack-mark{letter-spacing:-.4px;gap:5px;font-size:clamp(11px,11cqi,17px)}.stack-mark svg,.framework-logo{flex-shrink:0;width:20px;height:20px}.stack-javascript,.stack-typescript{gap:5px;font-size:10px}.language-square{width:22px;height:22px;font-size:13px}.work{padding-block:64px}.section-heading{margin-bottom:32px}.section-heading h2{font-size:30px}.carousel-track{gap:16px}.project-slide{grid-template-rows:auto 230px;grid-template-columns:1fr;height:auto;min-height:460px}.slide-copy{padding:24px}.slide-copy>p{font-size:17px;line-height:1.45}.slide-meta{margin-top:18px}.slide-meta>span{display:none}.slide-links{margin-top:10px;font-size:12px}.project-slide .project-preview{height:230px}.project-slide .tip-stage{inset:5px 25px 20px}.project-slide .tip-anchor{border-radius:13px;width:42px;height:42px}.project-slide .loader-orbit{top:45%}.project-slide .stream-sheet{padding:18px;inset:20px 30px 25px}.project-slide .stream-text{font-size:25px}.project-slide .sheet-top{padding-bottom:15px}.project-slide .sheet-signature{bottom:14px;left:18px}.project-slide .demo-control{padding:6px 9px;font-size:10px;top:8px;right:12px}.carousel-controls{margin-top:22px}.carousel-progress{margin-right:12px}.project-tabs{gap:0;margin-top:22px}.project-tabs button{padding:10px 12px;font-size:12px}.about{grid-template-columns:1fr;gap:40px;padding-block:80px}.about h2{font-size:32px}.source-window{transform:rotate(-1deg)}.source-window pre{padding:24px;font-size:12px}.questions{padding-block:64px}.questions>div{grid-template-columns:1fr;gap:36px}.questions h2{font-size:30px}.question-list summary{font-size:14px}.site-footer{position:relative}.footer-content{padding-block:48px}.footer-grid{grid-template-columns:1fr 1fr;gap:36px 24px}.footer-intro{grid-column:1/-1}.footer-links{font-size:13px}}@media (width<=360px){.site-header .header-wordmark{font-size:16px}.header-mobile-showcase{padding-inline:8px}}@media (prefers-reduced-motion:reduce){.header-mobile-showcase{transition:none;animation:none}}@media (width<=380px){.stack-logos{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-actions{flex-direction:column;gap:16px}}@media (prefers-reduced-motion:reduce){.framework-glyph,.framework-glyph-ink,.framework-glyph:after,.site-header>.wordmark,.header-nav a,.header-actions,.header-actions>*,.menu-trigger{animation:none}.header-word,.header-letter,.header-letter-echo,.footer-word,.footer-letter,.footer-letter-echo{transition:none}.header-github:before,.header-github .collaborate-spectrum{animation:none}.header-github:before,.header-social-icon svg,.footer-social svg{transition:none}.social-spectrum stop{animation:none}.stack-pair,.framework-logo,.stack-mark svg,.language-square{transition:none}.hero-type-canvas{opacity:0}.button-ink,.hero-github:hover svg{transform:none}.button-ink{display:none}.hero-github svg,.hero-github,.collaborate-copy,.collaborate-spectrum{transition:none}.hero-actions .hero-github:active,.hero-actions .hero-github:active svg,.hero-actions .hero-projects:active{transform:none}.gallery-project,.gallery-project .project-preview{transition:none}.project-gallery .gallery-project:is(:hover,[data-tooltip-hover]),.project-gallery .gallery-project:focus-within{transform:none}html{scroll-behavior:auto}.intro,[data-reveal][data-visible],.stack-face{animation:none}.stack-face+.stack-face{display:none}.site-menu,.site-header>.wordmark,.header-actions,.header-nav,.menu-trigger,.button,.theme-thumb,.header-nav a,.project-tab-highlight,.carousel-progress span,.carousel-controls button,.question-list summary svg,.question-list details::details-content{transition:none}.site-footer{position:relative}[data-reveal][data-pending]{opacity:1;transform:none}.button:hover,.button:active{transform:none}.gallery-project:hover .loader-orbit,.gallery-project:hover .stream-sheet{scale:1}}.particle-playground{color:var(--ink);padding-block:36px 96px}.particle-playground canvas{touch-action:pan-y;width:100%;height:300px;display:block}@media (width<=720px){.particle-playground{padding-block:24px 56px}.particle-playground canvas{height:200px}}.install-lane{opacity:0;width:min(100%,840px);height:34px;margin:26px auto 0;transition:opacity .18s}.install-lane[data-ready]{animation:install-arrive .65s var(--ease-out) .1s both}@keyframes install-arrive{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.project-install{border:1px solid var(--line);background:var(--hero);width:274px;height:34px;color:var(--muted);transition:transform .46s var(--ease-in-out);border-radius:12px;align-items:center;gap:8px;padding:3px 5px 3px 14px;display:flex}.install-command{white-space:nowrap;text-align:left;flex:1;align-items:center;gap:1ch;font:13px/20px ui-monospace,SFMono-Regular,Consolas,monospace;display:flex}.install-package{white-space:pre;width:12ch;height:20px;color:var(--ink);display:inline-block;position:relative}.install-word{transform-origin:0;transition:transform .42s var(--ease-out), opacity .36s ease, filter .42s var(--ease-out);line-height:20px;position:absolute;inset:0 auto auto 0}.project-install[data-keyboard] .install-word{transition:none}@media (prefers-reduced-motion:reduce){.install-word{transition:opacity .12s;filter:none!important;transform:none!important}.install-lane[data-ready]{animation:.25s both install-arrive}@keyframes install-arrive{0%{opacity:0}to{opacity:1}}}.install-copy{width:26px;height:26px;color:var(--ink);transition:background-color .16s ease, transform .12s var(--ease-out);background:0 0;border:0;border-radius:10px;place-items:center;padding:4px;display:grid;position:relative}.install-copy svg{width:18px;height:18px}.copy-icon,.copy-check{transition:opacity .16s}.copy-check,[data-copied] .copy-icon{opacity:0}[data-copied] .copy-check{opacity:1}.install-copy:active{transform:scale(.94)}@media (hover:hover) and (pointer:fine){.install-copy:hover{background:var(--surface)}}@media (width<=720px){.install-lane{width:calc(100% - 40px);margin-top:14px}.project-install{width:100%}}.project-install[data-keyboard],.project-install[data-keyboard] .install-package{transition:none}@media (prefers-reduced-motion:reduce){.project-install{transition:none}}.hero-accents{pointer-events:none;z-index:-1;position:absolute;inset:0}.hero-accent{transition:transform .25s var(--ease-out);display:block;position:absolute}.hero-accent svg{width:100%;height:100%}.accent-float{width:100%;height:100%;animation:7s ease-in-out infinite paused accent-drift;display:block}.hero[data-playful] .accent-float{animation-play-state:running}.accent-flower{color:#338ce8;width:clamp(44px,6vw,82px);height:clamp(44px,6vw,82px);top:24%;left:max(24px,50% - 540px)}.accent-loop{color:#22b689;width:66px;height:66px;top:36%;right:max(24px,50% - 545px)}.accent-loop .accent-float{animation-delay:-2.2s}.accent-pill{width:16px;height:38px;top:38%;left:max(84px,50% - 420px)}.accent-pill .accent-float{color:#e7b748;animation-delay:-4s}.accent-spark{color:#a78ad6;width:29px;height:29px;top:20%;right:max(90px,50% - 435px)}.accent-spark .accent-float{animation-delay:-5.5s}@keyframes accent-drift{0%,to{transform:translateY(0)rotate(-9deg)}50%{transform:translateY(-9px)rotate(9deg)}}.header-github,.footer-social,.menu-trigger,.install-copy{transition:scale .14s var(--ease-out)}.header-github:active,.footer-social:active,.menu-trigger:active,.install-copy:active{scale:.95}@media (width<=1050px) and (width>=721px){.accent-flower{width:36px;height:36px;top:14%;left:7%}.accent-loop{width:36px;height:36px;top:15%;right:7%}.accent-pill,.accent-spark{display:none}}@media (width<=720px){.accent-flower{width:25px;height:25px;top:89px;left:26px}.accent-loop{width:26px;height:26px;top:87px;right:27px}.accent-pill,.accent-spark{display:none}}@media (prefers-reduced-motion:reduce){.accent-float{animation:none}.hero-accent,.header-github,.footer-social,.menu-trigger,.install-copy{transition:none}.header-github:active,.footer-social:active,.menu-trigger:active,.install-copy:active{scale:1}.stack-pair{transition:background-color .2s}}.hero-accent{pointer-events:auto;cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;background:0 0;border:0;padding:0}.hero-accent:after{content:"";position:absolute;inset:-10px}.accent-touch{width:100%;height:100%;display:block}.hero-accent[data-held]{cursor:grabbing}.hero-accent[data-held] .accent-float{animation-play-state:paused}.hero-accent:focus-visible{outline:2px solid var(--ink);outline-offset:9px;border-radius:12px}.project-install{position:relative}.install-receipt{z-index:6;border:1px solid var(--line);background:var(--hero);color:var(--ink);pointer-events:none;opacity:0;transform-origin:100% 100%;transition:opacity .14s ease, transform .18s var(--ease-out);border-radius:5px;padding:9px 15px 9px 11px;position:absolute;bottom:calc(100% + 8px);right:0;transform:translateY(4px)scale(.96);box-shadow:0 3px 10px #0000000b}.install-receipt:after{content:"";border-top:1px solid var(--line);border-right:1px solid var(--line);width:5px;height:5px;position:absolute;top:3px;right:3px}.receipt-heading{white-space:nowrap;align-items:center;gap:7px;font-size:12px;font-weight:500;display:flex}.receipt-check{font-size:13px;line-height:1}.project-install[data-copied] .install-receipt{opacity:1;transform:translate(0,0)scale(1)}.project-install[data-receipt-instant] .install-receipt,[data-motion-paused] .install-receipt{transition:opacity .12s;transform:none}@media (prefers-reduced-motion:reduce){.install-receipt{transition:opacity .12s;transform:none}}.passing-thoughts{padding:90px 0 110px;overflow:clip}.thoughts-heading{justify-content:space-between;align-items:center;margin-bottom:48px;display:flex}.thoughts-heading h2{letter-spacing:-.05em;font:600 clamp(30px,4vw,42px)/1.15 Inter Variable,sans-serif}.thoughts-window{touch-action:pan-y;cursor:grab;outline:none;padding:14px 0;position:relative;mask-image:linear-gradient(90deg,#0000,#000 9% 91%,#0000)}.thoughts-window[data-dragging]{cursor:grabbing}.thoughts-track,.thoughts-set{width:max-content;display:flex}.thoughts-set{gap:24px;padding-left:24px}.thoughts-track{will-change:transform}.thought-card{perspective:1100px;outline:none;flex:none;width:470px}.thought-paper{border:1px solid color-mix(in srgb, var(--line) 60%, var(--hero));background:var(--hero);isolation:isolate;will-change:transform;border-radius:10px;flex-direction:column;height:232px;padding:30px;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 3px #00000004}.thought-paper>p{z-index:2;letter-spacing:-.035em;max-width:390px;font-size:21px;line-height:1.4;position:relative}.thought-foil{pointer-events:none;z-index:1;border-radius:inherit;width:100%;height:100%;position:absolute;inset:0}@media (width<=600px){.passing-thoughts{padding:50px 0 65px}.thoughts-heading{margin-bottom:24px}.thought-card{width:310px}.thought-paper{height:238px;padding:22px}.thought-paper>p{font-size:19px}.thoughts-set{gap:16px;padding-left:16px}.thoughts-window{padding:10px 0;mask-image:linear-gradient(90deg,#0000,#000 4% 96%,#0000)}}@media (prefers-reduced-motion:reduce){.thoughts-window{overflow-x:auto}.thoughts-track{will-change:auto}.thoughts-set[aria-hidden],.thought-foil{display:none}}.thoughts-window:focus-visible{outline:2px solid var(--line);outline-offset:-4px}.thought-post-head{z-index:2;color:var(--muted);align-items:center;gap:10px;margin-bottom:18px;font-size:12px;display:flex;position:relative}.thought-scribble{border:1px solid var(--line);width:32px;height:32px;color:var(--ink);border-radius:50%;place-items:center;display:grid}.thought-scribble svg{width:27px;height:27px}.thought-post-foot{z-index:2;min-height:28px;color:var(--muted);margin-top:auto;padding-top:12px;font-size:11px;position:relative}.thoughts-window[data-native]{overscroll-behavior-x:contain;touch-action:pan-x pan-y;scroll-snap-type:x proximity;scrollbar-width:none;cursor:auto;padding:12px 20px 18px;scroll-padding-inline:20px;overflow-x:auto;mask-image:none}.thoughts-window[data-native]::-webkit-scrollbar{display:none}.thoughts-window[data-native] .thoughts-track{will-change:auto;transform:none}.thoughts-window[data-native] .thoughts-set{gap:14px;padding:0}.thoughts-window[data-native] .thoughts-set[aria-hidden]{display:none}.thoughts-window[data-native] .thought-card{scroll-snap-align:center;width:min(82vw,320px)}.thoughts-window[data-native] .thought-paper{height:216px;padding:22px}.thoughts-window[data-native] .thought-paper>p{font-size:18px}.thought-mobile-hint{color:var(--muted);margin-top:10px;font-size:13px;display:none}@media (width<=720px),(hover:none) and (pointer:coarse){.thought-mobile-hint{display:block}.thoughts-window .thought-card{cursor:pointer}}.thought-dialog{width:min(390px,100vw - 28px);max-height:calc(100dvh - 32px);color:var(--ink);background:0 0;border:0;padding:56px 12px 16px;overflow:visible}.thought-dialog::backdrop{background:#0009}.thought-dialog-slot .thought-card{perspective:950px;width:100%}.thought-dialog-slot .thought-paper{touch-action:none;-webkit-user-select:none;user-select:none;height:auto;min-height:280px;padding:28px}.thought-dialog-slot .thought-paper>p{font-size:22px;line-height:1.4}.thought-dialog-slot .thought-post-foot{padding-top:40px}.thought-dialog-close{color:#fff;background:0 0;border:0;place-items:center;width:44px;height:44px;padding:0;display:grid;position:absolute;top:0;right:8px}.thought-dialog-close svg{width:20px;height:20px}.thought-dialog>p{text-align:center;color:#fff;margin:22px 0 0;font-size:12px;line-height:1.5}.thoughts-window .thought-card:focus-visible .thought-paper{outline:2px solid var(--ink);outline-offset:-3px}:root[data-thought-transition]::view-transition-old(root),:root[data-thought-transition]::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-group(thought-expanded-card){animation-duration:.3s;animation-timing-function:var(--ease-out)}::view-transition-old(thought-expanded-card),::view-transition-new(thought-expanded-card){mix-blend-mode:normal;height:100%}@media (width<=720px),(hover:none) and (pointer:coarse){.thought-card,.thought-card *,.thought-dialog-close{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}}.thought-dialog-close:focus,.thought-dialog-close:focus-visible,.thoughts-window .thought-card:focus,.thoughts-window .thought-card:focus-visible,.thoughts-window .thought-card:focus-visible .thought-paper{outline:none}.elastic-study{padding-block:24px 64px}.elastic-reel{touch-action:pan-y;-webkit-user-select:none;user-select:none;outline:none;max-width:760px;margin-inline:auto}.elastic-reel:focus-visible{outline:none}.elastic-stage{height:320px;position:relative}.elastic-stage canvas{opacity:0;pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.elastic-reel[data-ready] canvas{opacity:1}.elastic-reel[data-ready] .elastic-stage{cursor:grab}.elastic-reel[data-dragging] .elastic-stage{cursor:grabbing}.elastic-items{justify-content:center;align-items:center;gap:10px;height:100%;margin:0;padding:0;list-style:none;display:flex}.elastic-items li{width:44px;min-width:0;height:55%}.elastic-items button{background:var(--sketch-color);border:0;border-radius:12px;width:100%;height:100%;padding:0;overflow:hidden}.elastic-fallback{writing-mode:vertical-rl;color:#29242e;font-size:16px}.elastic-caption{text-align:center;min-height:54px;padding-top:8px;display:grid}.elastic-caption-copy{flex-direction:column;grid-area:1/1;align-items:center;gap:5px;display:flex}.elastic-caption-copy[aria-hidden]{pointer-events:none}.elastic-name{font-size:14px;font-weight:500}.elastic-description{color:var(--muted);font-size:12px}@media (width<=600px){.elastic-study{padding-block:8px 40px}.elastic-stage{height:280px}.elastic-items{gap:6px}.elastic-items li{width:28px}}
