.cursor-hidden,.cursor-hidden *{cursor:none!important}.cursor-ring,.cursor-dot{z-index:9999;pointer-events:none;opacity:0;will-change:transform;border-radius:0;position:fixed;top:0;left:0}.cursor-ring{border:1.5px solid color-mix(in oklch, var(--foreground) 55%, transparent);width:30px;height:30px;transition:transform .18s cubic-bezier(.22,1,.36,1),width .2s,height .2s,background-color .2s,border-color .2s,opacity .25s}.cursor-ring[data-hover=true]{border-color:var(--primary);background-color:color-mix(in oklch, var(--primary) 18%, transparent);width:46px;height:46px}.cursor-dot{background-color:var(--foreground);width:5px;height:5px;transition:opacity .25s}@media (prefers-reduced-motion:reduce){.cursor-ring{transition:opacity .25s}}@media (width<=768px){.cursor-hidden,.cursor-hidden *{cursor:auto!important}.cursor-ring,.cursor-dot{display:none!important}}.footer{background:radial-gradient(70% 60% at 50% 100%,oklch(12% .045 265/.55),#0000 70%);position:relative;overflow:clip}@media (width>=1024px){.footer__brand{border-right:1px solid oklch(100% 5.96046e-8 none/.07);padding-right:3rem}}.footer__mark{color:#fff;background:linear-gradient(135deg, color-mix(in oklch, var(--primary) 75%, white), var(--primary) 60%, color-mix(in oklch, var(--primary) 70%, #05070d));border:1px solid color-mix(in oklch, var(--primary) 45%, transparent);clip-path:polygon(30% 0,100% 0,100% 100%,0 100%,0 30%);flex:none;place-items:center;width:2.6rem;height:2.6rem;display:grid}.footer__brand-accent{color:color-mix(in oklch, var(--primary) 70%, white);font-style:italic;font-weight:600}.footer__tagline{max-width:30ch}.footer__status{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:color-mix(in oklch, var(--primary) 55%, var(--muted-foreground));align-items:center;gap:.55rem;margin-top:1.5rem;font-size:.62rem;font-weight:500;display:inline-flex}.footer__status-dot{background:var(--primary);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in oklch, var(--primary) 20%, transparent);border-radius:999px;flex:none;animation:2.4s ease-in-out infinite footer-status-pulse}@keyframes footer-status-pulse{0%,to{opacity:.55;box-shadow:0 0 0 2px color-mix(in oklch, var(--primary) 14%, transparent)}50%{opacity:1;box-shadow:0 0 0 4px color-mix(in oklch, var(--primary) 24%, transparent)}}.footer__label{font-family:var(--font-mono);letter-spacing:.24em;text-transform:uppercase;color:oklch(82% .05 258/.7);font-size:.65rem;font-weight:500}.footer__link{color:var(--muted-foreground);overflow-wrap:anywhere;transition:color .3s ease, padding-left .3s var(--ease-out-expo);padding-left:0;font-size:.875rem;text-decoration:none;display:inline-block;position:relative}.footer__link:before{content:"";background:var(--primary);width:5px;height:5px;box-shadow:0 0 8px color-mix(in oklch, var(--primary) 60%, transparent);opacity:0;transition:transform .3s var(--ease-out-expo), opacity .3s ease;position:absolute;top:50%;left:0;transform:translateY(-50%)rotate(45deg)scale(0)}.footer__link:hover,.footer__link:focus-visible{color:var(--foreground);padding-left:1rem}.footer__link:hover:before,.footer__link:focus-visible:before{opacity:1;transform:translateY(-50%)rotate(45deg)scale(1)}.footer__meta{border-top:1px solid oklch(100% 5.96046e-8 none/.07);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 2rem;padding-block:1.4rem;display:flex}.footer__copyright{font-family:var(--font-mono);letter-spacing:.08em;color:color-mix(in oklch, var(--muted-foreground) 80%, transparent);font-size:.68rem}.footer__legal-link{color:var(--muted-foreground);font-size:.75rem;text-decoration:none;transition:color .3s}.footer__legal-link:hover,.footer__legal-link:focus-visible{color:var(--foreground)}.footer__wordmark{-webkit-user-select:none;user-select:none;justify-content:center;margin-top:1.5rem;display:flex;overflow:hidden}.footer__wordmark-fit{white-space:nowrap;letter-spacing:-.045em;margin-bottom:-.06em;font-size:21vw;font-weight:800;line-height:.76;display:inline-block;position:relative}.footer__wordmark-text{white-space:nowrap;display:inline-block}.footer__char{background:linear-gradient(to bottom, color-mix(in oklch, var(--primary) 32%, oklch(42% .02 265)), color-mix(in oklch, var(--primary) 22%, oklch(16% .02 265)) 78%, color-mix(in oklch, var(--primary) 14%, oklch(10% .015 265)));color:#0000;-webkit-background-clip:text;background-clip:text;margin-inline:-.08em;padding-inline:.08em;display:inline-block}.footer__char[data-reveal][data-inview]{animation:footer-char-up .7s var(--ease-out-expo) calc(var(--reveal-i,0) * 55ms) both}@keyframes footer-char-up{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.footer__wordmark-glow{pointer-events:none;background:radial-gradient(clamp(9rem, 20vw, 18rem) circle at var(--spot-x,50%) var(--spot-y,120%), color-mix(in oklch, var(--primary) 55%, white), color-mix(in oklch, var(--primary) 60%, transparent) 45%, transparent 74%);color:#0000;opacity:0;-webkit-background-clip:text;background-clip:text;transition:opacity .5s;position:absolute;inset:0}.footer__wordmark:hover .footer__wordmark-glow{opacity:1}@media (prefers-reduced-motion:reduce){.footer__link,.footer__link:before,.footer__legal-link,.footer__wordmark-glow{transition:none}.footer__status-dot{animation:none}}.navbar{z-index:50;width:calc(100% - 32px);max-width:100%;position:fixed;top:10px;left:50%;transform:translate(-50%)}@media (width>=640px){.navbar{max-width:640px}}@media (width>=768px){.navbar{max-width:768px}}@media (width>=1024px){.navbar{max-width:1024px}}@media (width>=1280px){.navbar{max-width:1280px}}@media (width>=1536px){.navbar{max-width:1536px}}.navbar{border:1px solid color-mix(in oklch, var(--border) 90%, transparent);background-color:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-radius:0;transition:none;box-shadow:inset 0 1px oklch(100% 5.96046e-8 none/.07),0 8px 32px #00000059}html[data-intro]:not([data-intro-exit]) .navbar{opacity:0;animation:.8s 8.2s both navbar-in-safety}html[data-intro-exit] .navbar{animation:.8s both navbar-in}@keyframes navbar-in{0%{opacity:0}to{opacity:1}}@keyframes navbar-in-safety{0%{opacity:0}to{opacity:1}}html[data-navbar-ready] .navbar{transition:top .5s var(--ease-out-expo), width .5s var(--ease-out-expo), max-width .5s var(--ease-out-expo), border-radius .5s var(--ease-out-expo), border-color .5s var(--ease-out-expo), background-color .5s var(--ease-out-expo), box-shadow .5s var(--ease-out-expo), transform .5s var(--ease-out-expo) .5s}html[data-project-modal] .navbar{transition-delay:0s;transform:translate(-50%)translateY(calc(-100% - 42px))}html[data-scrolled=true] .navbar{border-color:#0000;border-bottom-color:var(--border);background-color:var(--glass-bg-strong);border-radius:0;width:100%;max-width:100%;top:0;box-shadow:inset 0 1px oklch(100% 5.96046e-8 none/.05),0 4px 24px #0003}.dock-container{align-items:center;gap:.25rem;display:flex}.dock-link{letter-spacing:.025em;color:color-mix(in oklch, var(--foreground) 65%, transparent);transform-origin:50%;will-change:transform;padding:.35rem 1rem;font-size:.875rem;font-weight:600;transition:transform .1s ease-out,color .2s,opacity .2s;position:relative}.dock-link:after{content:"";background:var(--primary);width:5px;height:5px;box-shadow:0 0 8px color-mix(in oklch, var(--primary) 60%, transparent);transition:transform .3s var(--ease-out-expo);pointer-events:none;position:absolute;bottom:-.1rem;left:50%;transform:translate(-50%)rotate(45deg)scale(0)}.dock-link[data-active]{color:var(--foreground)}.dock-link[data-active]:after{transform:translate(-50%)rotate(45deg)scale(1)}.dock-link .glow-mist{z-index:-10;background-color:color-mix(in oklch, var(--primary) 20%, transparent);opacity:0;filter:blur(10px);pointer-events:none;border-radius:9999px;transition:opacity .1s ease-out,transform .1s ease-out;position:absolute;inset:.25rem .5rem;transform:scale(.8)}.dock-link:hover{color:var(--foreground)}.dock-link:focus-visible{outline:2px solid var(--ring);outline-offset:4px;color:var(--foreground);opacity:1;border-radius:4px;transform:translateY(-4px)}.dock-link:focus-visible .glow-mist{opacity:1;transform:scale(1)}.navbar__burger{width:2.25rem;height:2.25rem;color:var(--foreground);cursor:pointer;-webkit-tap-highlight-color:transparent;background:oklch(100% 5.96046e-8 none/.04);border:1px solid oklch(100% 5.96046e-8 none/.12);border-color:oklch(100% 5.96046e-8 none/.12) oklch(100% 5.96046e-8 none/.12) oklch(100% 5.96046e-8 none/.12) oklch(100% 5.96046e-8 none/.12);flex:none;place-items:center;transition:border-color .3s,background-color .3s;display:inline-grid}.navbar__burger:hover,.navbar__burger[data-open]{border-color:color-mix(in oklch, var(--primary) 45%, transparent);background:color-mix(in oklch, var(--primary) 12%, transparent)}.navbar__burger:focus-visible{outline:2px solid var(--ring);outline-offset:2px}@media (width>=1024px){.navbar__burger{display:none}}.navbar__burger-box{width:1.2rem;height:.85rem;display:block;position:relative}.navbar__burger-bar{height:2px;transition:top .35s var(--ease-out-expo), bottom .35s var(--ease-out-expo), transform .35s var(--ease-out-expo), opacity .2s ease;background:currentColor;border-radius:2px;position:absolute;left:0;right:0}.navbar__burger-bar:first-child{top:0}.navbar__burger-bar:nth-child(2){top:50%;transform:translateY(-50%)}.navbar__burger-bar:nth-child(3){bottom:0}.navbar__burger[data-open] .navbar__burger-bar:first-child{top:50%;transform:translateY(-50%)rotate(45deg)}.navbar__burger[data-open] .navbar__burger-bar:nth-child(2){opacity:0}.navbar__burger[data-open] .navbar__burger-bar:nth-child(3){bottom:50%;transform:translateY(50%)rotate(-45deg)}.navbar__sheet{visibility:hidden;transition:grid-template-rows .42s var(--ease-out-expo), visibility 0s linear .42s;grid-template-rows:0fr;display:grid;position:absolute;top:calc(100% - 1px);left:0;right:0}.navbar__sheet[data-open]{visibility:visible;transition:grid-template-rows .42s var(--ease-out-expo), visibility 0s;grid-template-rows:1fr}.navbar__sheet-inner{min-height:0;overflow:hidden}.navbar__sheet-panel{border:1px solid color-mix(in oklch, var(--border) 80%, transparent);background:color-mix(in oklch, var(--background) 96%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);opacity:0;transition:opacity .3s ease, transform .42s var(--ease-out-expo);border-top:0;padding-block:.5rem;transform:translateY(-.75rem);box-shadow:0 18px 36px -12px #0000008c}.navbar__sheet[data-open] .navbar__sheet-panel{opacity:1;transform:translateY(0)}.navbar__sheet-list{flex-direction:column;display:flex}.navbar__sheet-list li:not(:last-child) .navbar__sheet-link{border-bottom:1px solid oklch(100% 5.96046e-8 none/.06)}.navbar__sheet-link{letter-spacing:-.01em;color:color-mix(in oklch, var(--foreground) 78%, transparent);transition:color .25s ease, background-color .25s ease, padding-left .3s var(--ease-out-expo), opacity .25s ease, transform .3s var(--ease-out-expo);opacity:0;align-items:center;gap:.75rem;padding:.85rem 1rem;font-size:.95rem;font-weight:500;text-decoration:none;display:flex;transform:translateY(8px)}.navbar__sheet-link:before{content:"";background:var(--primary);width:6px;height:6px;box-shadow:0 0 8px color-mix(in oklch, var(--primary) 60%, transparent);transition:transform .3s var(--ease-out-expo);flex:none;transform:rotate(45deg)scale(0)}.navbar__sheet-link:hover{color:var(--foreground);background:oklch(100% 5.96046e-8 none/.05);padding-left:1.2rem}.navbar__sheet-link:hover:before{transform:rotate(45deg)scale(1)}.navbar__sheet-link[data-active]{color:var(--foreground)}.navbar__sheet-link[data-active]:before{transform:rotate(45deg)scale(1)}.navbar__sheet-link:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.navbar__sheet[data-open] .navbar__sheet-link{opacity:1;transition:color .25s ease, background-color .25s ease, padding-left .3s var(--ease-out-expo), opacity .35s ease calc(.1s + var(--sheet-i,0) * 50ms), transform .4s var(--ease-out-expo) calc(.1s + var(--sheet-i,0) * 50ms);transform:translateY(0)}@media (prefers-reduced-motion:reduce){.navbar{opacity:1!important;animation:none!important}.navbar__sheet,.navbar__sheet-panel,.navbar__sheet-link,.navbar__burger-bar{transition:none!important}.navbar__sheet[data-open] .navbar__sheet-link{opacity:1;transform:none}}
