@layer reset{:where(html,body,header,main,footer,nav,section,article,aside,div,figure,form,fieldset,dialog,table,ul,ol,li,dl,p,h1,h2,h3,h4,a,span,label,button,input,textarea,select,img,svg,video){box-sizing:border-box}:where(body,h1,h2,h3,h4,h5,h6,p,ul,ol,dl,dd,figure,blockquote,pre,fieldset){margin:0}:where(img,svg,video){block-size:auto;max-inline-size:100%;display:block}:where(input,button,textarea,select){font:inherit}:where(table){border-collapse:collapse}}@layer tokens{:root{--night:#111916;--deep:#0b110f;--pine:#1e2925;--moss:#3d524b;--teal:#416269;--sea:#5f8586;--sage:#9cbbb3;--mint:#c9ecde;--mist:#f6faf8;--bg:var(--night);--raised:var(--pine);--sunken:#18221e;--ink:var(--mist);--soft:#e2ece8;--muted:#c8d9d3;--rule:#26332e;--line:var(--moss);--edge:var(--sea);--signal:var(--mint);--accent:var(--sage);--on-signal:var(--night);--glass:#1e2925c7;--glow:#c9ecde59;--font-sans:"Wishcode Sans", ui-sans-serif, system-ui, sans-serif;--font-mono:"Wishcode Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--step--2:.75rem;--step--1:.875rem;--step-0:1.0625rem;--step-1:clamp(1.1875rem, 1.05rem + .55vw, 1.4375rem);--step-2:clamp(1.25rem, 1.1rem + .6vw, 1.5rem);--step-3:clamp(2rem, 1.3rem + 2.8vw, 4rem);--step-4:clamp(2.75rem, 1.2rem + 6.6vw, 8rem);--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-s:1rem;--space-m:1.5rem;--space-l:2.5rem;--space-xl:clamp(4rem, 2rem + 6vw, 9rem);--gutter:clamp(1rem, .5rem + 2.5vw, 2.5rem);--page-max:86rem;--measure:62ch;--radius:.25rem;--target-min:1.5rem;--ease-out:cubic-bezier(.2, .7, .2, 1);--ease-expo:cubic-bezier(.16, 1, .3, 1);--dur-s:.15s;--dur-m:.4s;--dur-l:.8s;--dur-entry:.5s;@media (pointer:coarse){--target-min:2.75rem}--radius-l:1.5rem;color-scheme:dark;accent-color:var(--signal)}@media (forced-colors:active){:root{--bg:Canvas;--deep:Canvas;--raised:Canvas;--sunken:Canvas;--glass:Canvas;--ink:CanvasText;--soft:CanvasText;--muted:CanvasText;--line:CanvasText;--rule:CanvasText;--edge:CanvasText;--teal:CanvasText;--signal:LinkText;--accent:CanvasText;--on-signal:Canvas}}}@layer base{html{-webkit-text-size-adjust:none;text-size-adjust:none;scrollbar-gutter:stable;scrollbar-color:var(--edge) var(--bg)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}@view-transition{navigation:auto}main{view-transition-name:main}::view-transition-old(main){animation:page-out var(--dur-s) var(--ease-out) both}::view-transition-new(main){animation:page-in .3s var(--ease-expo) both}}@keyframes page-out{to{opacity:0;translate:0 -.5rem}}@keyframes page-in{0%{opacity:0;translate:0 .75rem}}body{background-color:var(--bg);min-block-size:100dvh;color:var(--ink);font-family:var(--font-sans);font-size:var(--step-0);font-size-adjust:from-font;overflow-wrap:break-word;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);font-weight:420;line-height:1.55;display:grid}:where(h1,h2){letter-spacing:-.04em;text-wrap:balance;font-weight:400;font-stretch:118%;line-height:1}:where(h3,h4){letter-spacing:-.01em;text-wrap:balance;font-weight:560;line-height:1.2}h1{font-size:var(--step-4);letter-spacing:-.045em}h2{font-size:var(--step-3)}h3{font-size:var(--step-2)}:where(p,li,dd,td,th){text-wrap:pretty}a{color:var(--signal);text-underline-offset:.2em;text-decoration-thickness:.07em;&:hover{text-decoration-thickness:.14em}}:where(a:any-link,button,input,textarea,select,summary):focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:var(--radius)}::selection{background-color:var(--signal);color:var(--on-signal)}:where(code,kbd,samp){font-family:var(--font-mono);font-size:.875em}hr{border:0;border-block-start:1px solid var(--rule)}:target{scroll-margin-block-start:var(--space-l)}}@layer layout{.wrapper{inline-size:min(100% - 2 * var(--gutter), var(--page-max));margin-inline:auto}.band{padding-block:var(--space-l) var(--space-xl)}.band+.band{padding-block-start:0}.band-grid{gap:var(--space-m) var(--gutter);border-block-start:1px solid var(--rule);padding-block-start:var(--space-m);display:grid;@media (width>=56rem){grid-template-columns:repeat(12,minmax(0,1fr));&>.band-label{grid-column:1/span 3}&>.band-body{grid-column:4/-1}}@media (width>=80rem){&>.band-label{grid-column:1/span 2}&>.band-body{grid-column:3/-1}}}.band-label{align-self:start}.stack>*+*{margin-block-start:var(--stack-space,var(--space-s))}.prose{max-inline-size:var(--measure);&>*+*{margin-block-start:var(--space-s)}& :is(h2,h3){font-size:var(--step-2);margin-block-start:var(--space-l)}& h3{font-size:var(--step-1)}& :is(ul,ol){padding-inline-start:1.25em}& li+li{margin-block-start:var(--space-3xs)}& li::marker{color:var(--muted)}}.cluster{gap:var(--space-xs) var(--space-m);flex-wrap:wrap;align-items:center;display:flex}}@layer components{.skip-link{z-index:10;padding:var(--space-2xs) var(--space-s);background-color:var(--raised);color:var(--ink);border:2px solid var(--signal);border-radius:var(--radius);position:absolute;inset-block-start:var(--space-s);inset-inline-start:var(--space-s);translate:0 -200%;&:focus-visible{translate:0}}.label{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.05em;text-transform:uppercase;font-variant-numeric:tabular-nums lining-nums;color:var(--muted);font-weight:450;line-height:1.5}.lead{max-inline-size:44ch;font-size:var(--step-1);line-height:1.45}.button{isolation:isolate;background-color:var(--accent);background-image:linear-gradient(180deg, var(--mint), var(--accent) 75%);min-block-size:3.25rem;box-shadow:inset 0 1px 0 #ffffff59, 0 1rem 2.5rem -1.25rem var(--glow);color:var(--on-signal);font-size:var(--step-1);cursor:pointer;transition:box-shadow var(--dur-m) var(--ease-out), scale var(--dur-s) var(--ease-out);border:0;border-radius:999px;justify-content:space-between;align-items:center;gap:.75em;padding:.65em 1.5em;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex;position:relative;overflow:hidden;&:before{content:"";z-index:-1;background:linear-gradient(105deg,#0000 35%,#ffffff8c 50%,#0000 65%);position:absolute;inset:0;translate:-110%}&:after{content:"→";content:"→" / "";transition:translate var(--dur-m) var(--ease-expo)}&:hover{box-shadow:inset 0 1px 0 #ffffff59, 0 1.25rem 3rem -1rem var(--glow)}@media (prefers-reduced-motion:no-preference){&:hover:before{transition:translate .9s var(--ease-expo);translate:110%}&:hover:after{translate:.2em}&:active{scale:.98}}}.text-link{min-block-size:var(--target-min);color:var(--ink);text-decoration-color:var(--edge);align-items:center;font-weight:500;display:inline-flex;&:hover{color:var(--signal);text-decoration-color:currentColor}}.page-head{padding-block:var(--space-xl) var(--space-l);&>*+*{margin-block-start:var(--space-s)}&>.lead{margin-block-start:var(--space-m)}&>:is(nav,.cluster){margin-block-start:var(--space-l)}& h1{max-inline-size:16ch}}.icon-button{border:1px solid var(--edge);block-size:3rem;inline-size:3rem;color:var(--ink);cursor:pointer;touch-action:manipulation;transition:border-color var(--dur-s) var(--ease-out), color var(--dur-s) var(--ease-out), box-shadow var(--dur-m) var(--ease-out);background:0 0;border-radius:50%;place-items:center;padding:0;display:grid;&:not(:disabled):hover{border-color:var(--signal);color:var(--signal);box-shadow:0 0 1.5rem -.25rem var(--glow)}&:focus-visible{border-radius:50%}&:disabled{opacity:.4;cursor:default}}.granted-comet,.granted-flash{opacity:0;pointer-events:none;position:absolute;inset-block-start:50%;inset-inline-start:50%;@media (forced-colors:active){display:none}}.granted-comet{filter:drop-shadow(0 0 .75rem var(--mint));margin:-14px 0 0 -14px;&:before{content:"";background:linear-gradient(90deg, transparent, var(--mint));block-size:2px;inline-size:11rem;rotate:var(--comet-tail,34.3deg);transform-origin:100%;border-radius:2px;position:absolute;inset-block-start:calc(50% - 1px);inset-inline-end:50%}& .star{color:var(--mist);position:relative}}.granted-flash{aspect-ratio:1;background:radial-gradient(closest-side,#f6faf8f2,#c9ecde80 30%,#c9ecde1f 60%,#0000);border-radius:50%;inline-size:min(64%,19rem);translate:-50% -50%;&:before,&:after{content:"";border-radius:50%;position:absolute}&:before{background:repeating-conic-gradient(#c9ecde80 0 2deg, transparent 2deg 15deg);inset:-22%;mask:radial-gradient(closest-side,#0000 20%,#000 32%,#0000 90%)}&:after{border:1px solid var(--mint);inset:0}}@keyframes comet-fall{0%{translate:var(--comet-from,-22rem -15rem);opacity:0}20%,85%{opacity:1}to{opacity:0;translate:0}}@keyframes flash{0%{opacity:0;scale:.1}25%{opacity:1}to{opacity:0;scale:1.3}}@keyframes flash-rays{0%{rotate:-20deg;scale:.4}to{rotate:10deg;scale:1.1}}@keyframes flash-ring{0%{scale:.2}to{scale:1.2}}@keyframes arrive{0%{opacity:0;scale:.8;translate:var(--arrive-from,0 0);filter:blur(.5rem)brightness(2)}}.facts{gap:var(--space-2xs) var(--space-m);grid-template-columns:max-content 1fr;align-items:baseline;display:grid;& dt{grid-column:1}& dd{grid-column:2;margin:0}}}@layer utilities{.hairline{border-block-start:1px solid;border-image:linear-gradient(90deg, transparent, var(--line) 20%, var(--line) 80%, transparent) 1}@media (prefers-reduced-motion:no-preference){.page-head>h1{animation:rise var(--dur-entry) var(--ease-expo) both}.page-head>:not(h1){animation:fade-up var(--dur-entry) var(--ease-expo) 80ms both}.rise{animation:rise var(--dur-entry) var(--ease-expo) both}.rise-lines>*{animation:rise var(--dur-entry) var(--ease-expo) both;&:nth-child(2){animation-delay:90ms}}@supports (animation-timeline:view()) and (animation-range:entry){.reveal{animation:linear both reveal view();animation-range:entry 5% cover 30%}}}@keyframes rise{0%{clip-path:inset(-.3em -.3em 100%);translate:0 .4em}to{clip-path:inset(-.3em)}}@keyframes fade-up{0%{opacity:0;translate:0 1.25rem}}@keyframes reveal{0%{opacity:0;translate:0 2.5rem}}.visually-hidden:not(:focus,:active){clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}}@font-face{font-family:Wishcode Sans;src:url(/_astro/wishcode-sans.PIWP08lc.woff2)format("woff2");font-weight:400 700;font-stretch:100% 125%;font-style:normal;font-display:swap}@font-face{font-family:Wishcode Mono;src:url(/_astro/wishcode-mono.BFmfrbAI.woff2)format("woff2");font-weight:400 700;font-style:normal;font-display:swap}@media print{.skip-link,.site-nav,.lang-switch{display:none!important}body{color:#000;background:0 0}}.star[data-astro-cid-nkc4qp7t]{color:var(--signal);flex-shrink:0}.site-header[data-astro-cid-nen7h5rs]{view-transition-name:site-header}.header-inner[data-astro-cid-nen7h5rs]{justify-content:space-between;align-items:center;gap:var(--space-s);padding-block:var(--space-s);display:flex;&>[data-astro-cid-nen7h5rs]{white-space:nowrap;flex-shrink:0}}.header-end[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-2xs);display:flex}.site-header[data-astro-cid-nen7h5rs]:not(.is-wide) .header-inner[data-astro-cid-nen7h5rs]{row-gap:var(--space-2xs);flex-wrap:wrap}.site-logo[data-astro-cid-nen7h5rs]{min-block-size:2.75rem;color:var(--ink);font-size:var(--step-1);letter-spacing:-.01em;text-transform:lowercase;align-items:center;gap:.5em;font-weight:520;text-decoration:none;display:inline-flex;&:hover{color:var(--signal)}}.lang-switch[data-astro-cid-nen7h5rs]{border-radius:var(--radius);min-block-size:2.75rem;min-inline-size:2.75rem;color:var(--muted);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.05em;justify-content:flex-end;align-items:center;padding-inline:.5em 0;font-weight:500;text-decoration:none;display:inline-flex;&:hover{color:var(--ink);text-underline-offset:.5em;text-decoration:underline}}.is-measuring[data-astro-cid-nen7h5rs] [data-astro-cid-nen7h5rs]{transition:none!important}.menu-button[data-astro-cid-nen7h5rs]{anchor-name:--menu-button;align-items:center;gap:var(--space-2xs);border:1px solid var(--edge);border-radius:var(--radius);min-block-size:2.75rem;color:var(--ink);cursor:pointer;background:0 0;padding:.5em .75em;font-weight:560;display:inline-flex;&:hover{border-color:var(--ink)}}.site-menu[data-astro-cid-nen7h5rs]{padding:0;list-style:none;& a{min-block-size:var(--target-min);border-radius:var(--radius);color:var(--ink);align-items:center;padding:.6em .8em;font-weight:500;text-decoration:none;display:flex;&:hover{color:var(--signal)}&[aria-current=page]{text-decoration:underline;text-decoration-color:var(--signal);text-underline-offset:.5em;text-decoration-thickness:2px}}}@supports selector(:popover-open){.site-menu[data-astro-cid-nen7h5rs][popover]{inset:auto;inset-block-start:4.5rem;margin:0;block-size:fit-content;max-block-size:calc(100dvh - 6rem);inline-size:min(80dvw,18rem);max-inline-size:calc(100dvw - 2rem);padding:var(--space-2xs);border:1px solid var(--edge);border-radius:var(--radius);background-color:var(--raised);color:var(--ink);margin-block-start:.5rem;position:fixed;inset-block-start:anchor(--menu-button bottom);inset-inline-end:var(--gutter);overflow:auto;box-shadow:0 1rem 2.5rem -1rem oklch(0% 0 0/.35)}@media (prefers-reduced-motion:no-preference){.site-menu[data-astro-cid-nen7h5rs][popover]{transition-behavior:allow-discrete;opacity:0;transition:opacity .18s ease-out,translate .18s ease-out,display .18s,overlay .18s;translate:0 -.5rem;&:is(:popover-open,.\:popover-open){opacity:1;translate:0;@starting-style{opacity:0;translate:0 -.5rem}}}}@media (prefers-reduced-motion:reduce){.site-menu[data-astro-cid-nen7h5rs][popover]{transition-behavior:allow-discrete;opacity:0;transition:opacity .12s linear,display .12s,overlay .12s;&:is(:popover-open,.\:popover-open){opacity:1;@starting-style{opacity:0}}}}}.site-header[data-astro-cid-nen7h5rs].is-wide{& .menu-button{display:none}& .site-menu{align-items:center;gap:var(--space-3xs);block-size:auto;max-block-size:none;inline-size:auto;max-inline-size:none;box-shadow:none;opacity:1;background:0 0;border:0;margin:0;padding:0;display:flex;position:static;overflow:visible;translate:none}}.site-header[data-astro-cid-nen7h5rs].no-popover{& .header-inner,& .header-inner>[data-astro-cid-nen7h5rs]{white-space:normal;flex-wrap:wrap}& .site-menu{flex-wrap:wrap}}@media (forced-colors:active){.site-menu[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=page]{color:linktext}}@property --wordmark-drift{syntax:"<percentage>";inherits:false;initial-value:50%}.site-footer[data-astro-cid-jo6i4kqk]{overflow-x:clip;container-type:inline-size}.finale-inner[data-astro-cid-jo6i4kqk]{isolation:isolate;justify-items:center;gap:var(--space-m);padding-block:var(--space-xl);text-align:center;display:grid;& h2{font-size:var(--step-4)}}.finale-burst[data-astro-cid-jo6i4kqk]{place-items:center;block-size:9rem;inline-size:9rem;display:grid;position:relative}.finale-rays[data-astro-cid-jo6i4kqk]{z-index:-1;aspect-ratio:1;background:repeating-conic-gradient(#c9ecde33 0 1.5deg, transparent 1.5deg 12deg);pointer-events:none;inline-size:min(40rem,120cqi);position:absolute;inset-block-start:50%;inset-inline-start:50%;translate:-50% -50%;mask:radial-gradient(closest-side,#000 6%,#00000059 35%,#0000);@media (prefers-reduced-motion:no-preference){animation:140s linear infinite reverse spin}}.finale-inner[data-astro-cid-jo6i4kqk] .finale-star{filter:drop-shadow(0 0 1.5rem var(--glow));@media (prefers-reduced-motion:no-preference){animation:60s linear infinite spin,4s ease-in-out infinite alternate breathe}}.finale-mail[data-astro-cid-jo6i4kqk]{letter-spacing:-.02em;overflow-wrap:anywhere;text-shadow:0 0 2rem #c9ecde59;background:linear-gradient(90deg, transparent, var(--signal), transparent) bottom / 40% 2px no-repeat;padding-block:.15em;font-size:clamp(1.5rem,1rem + 2.4vw,3rem);font-weight:450;text-decoration:none;@media (prefers-reduced-motion:no-preference){transition:background-size var(--dur-l) var(--ease-expo)}&:hover,&:focus-visible{background-size:100% 2px}}.footer-base[data-astro-cid-jo6i4kqk]{justify-content:space-between;align-items:center;gap:var(--space-s) var(--space-l);padding-block:var(--space-m);flex-wrap:wrap;display:flex;&.hairline{margin-block-start:var(--space-xl);padding-block-start:var(--space-l)}}.footer-nav[data-astro-cid-jo6i4kqk],.footer-meta[data-astro-cid-jo6i4kqk]{flex-wrap:wrap;align-items:center;padding:0;list-style:none;display:flex;& a{min-block-size:var(--target-min);align-items:center;display:inline-flex}}.footer-nav[data-astro-cid-jo6i4kqk]{gap:var(--space-2xs) var(--space-m);font-size:var(--step-0);font-weight:500;@container (inline-size>=30rem){font-size:var(--step-1)}& a{color:var(--ink);background:linear-gradient(var(--signal), var(--signal)) left bottom / 0 1px no-repeat;transition:color var(--dur-s) var(--ease-out), background-size var(--dur-m) var(--ease-expo);text-decoration:none;&:hover{color:var(--signal);background-size:100% 1px}}}.footer-meta[data-astro-cid-jo6i4kqk]{gap:0 var(--space-m);& a{color:inherit;text-decoration-color:var(--edge);&:hover{color:var(--signal);text-decoration-color:currentColor}}}.footer-wordmark[data-astro-cid-jo6i4kqk]{--spot-x:var(--wordmark-drift);--spot-y:45%;--fit:min(100cqi - 2 * var(--gutter), var(--page-max));inline-size:var(--fit);block-size:.86em;font-size:calc(var(--fit) / 4.72);letter-spacing:-.045em;text-transform:lowercase;white-space:nowrap;color:#0000;background:radial-gradient(circle 1.1em at var(--spot-x) var(--spot-y), var(--mist), #f6faf800), linear-gradient(var(--sage), var(--moss) 90%);user-select:none;background-clip:text;margin-block-start:var(--space-s);margin-inline:auto;font-weight:620;font-stretch:125%;line-height:1;overflow:clip;mask-image:linear-gradient(#000 35%,#0000 96%);@media (prefers-reduced-motion:no-preference){animation:16s ease-in-out infinite alternate wordmark-drift}}@keyframes wordmark-drift{0%{--wordmark-drift:4%}to{--wordmark-drift:96%}}@keyframes spin{to{rotate:1turn}}@keyframes breathe{to{scale:1.12}}@media (forced-colors:active){.finale-rays[data-astro-cid-jo6i4kqk]{display:none}.finale-mail[data-astro-cid-jo6i4kqk]{text-decoration:underline}.footer-wordmark[data-astro-cid-jo6i4kqk]{color:canvastext;background:0 0;mask-image:none}}.sky[data-astro-cid-m7vhzqk3]{z-index:-1;pointer-events:none;view-transition-name:sky;--sky-base:radial-gradient(120% 60% at 30% 12%, #5f858638, transparent 60%), radial-gradient(90% 50% at 80% 30%, #41626933, transparent 65%), linear-gradient(var(--deep), var(--bg));background:var(--sky-base);block-size:100lvh;position:fixed;inset:0 0 auto}.sky[data-astro-cid-m7vhzqk3].is-static{background:url(/_astro/sky-stars.BaUb9KYA.svg) 0 0 / 640px 640px, var(--sky-base)}@media (scripting:none){.sky[data-astro-cid-m7vhzqk3]{background:url(/_astro/sky-stars.BaUb9KYA.svg) 0 0 / 640px 640px, var(--sky-base)}}canvas[data-astro-cid-m7vhzqk3]{opacity:0;block-size:100%;inline-size:100%;transition:opacity .6s var(--ease-out);&.is-live{opacity:1}}@media (forced-colors:active){.sky[data-astro-cid-m7vhzqk3]{display:none}}@media print{.sky[data-astro-cid-m7vhzqk3]{display:none}}
