@font-face{font-family:Archivo;src:url(/fonts/archivo.woff2)format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:Space Mono;src:url(/fonts/space-mono.woff2)format("woff2");font-weight:400;font-display:swap}@layer personal.tokens{[data-personal-theme=black]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--p-bg:oklch(0% 0 none);--p-surface:oklch(13% 0 none);--p-raised:oklch(18% 0 none);--p-text:oklch(98% 0 none);--p-muted:oklch(73% 0 none);--p-border:oklch(30% 0 none);--p-control-border:oklch(48% 0 none);--p-accent:oklch(83% .13 200);--p-accent-ink:oklch(10% 0 none);--p-cyan:oklch(83% .13 200);--p-violet:oklch(78% .14 300);--p-amber:oklch(85% .14 85);--p-coral:oklch(78% .14 25);--p-success:oklch(82% .14 155);--p-error:var(--p-coral);--p-font:Archivo, sans-serif;--p-mono:"Space Mono", ui-monospace, monospace;--p-radius:.375rem;--p-gap:clamp(1rem, .75rem + 1vw, 1.5rem);--p-display:clamp(2rem, 1.5rem + 2vw, 3.5rem);--p-body:1rem;--p-duration:.16s;--p-ease:cubic-bezier(.23, 1, .32, 1);--p-ease-in-out:cubic-bezier(.77, 0, .175, 1);--p-step-label:.6875rem;--p-step-small:.875rem;--p-step-title:clamp(1.125rem, 1rem + .5vw, 1.375rem);--p-step-section:clamp(1.5rem, 1.15rem + 1.4vw, 2.25rem)}[data-personal-accent=violet]{--p-accent:var(--p-violet)}[data-personal-accent=amber]{--p-accent:var(--p-amber)}[data-personal-accent=coral]{--p-accent:var(--p-coral)}}@layer personal.base{.personal-ui{color:var(--p-text);background:var(--p-bg);font:var(--p-body)/1.6 var(--p-font)}.personal-ui *,.personal-ui :before,.personal-ui :after{box-sizing:border-box}.personal-ui ::selection{color:var(--p-accent-ink);background:var(--p-accent)}.personal-ui :focus-visible{outline:2px solid var(--p-accent);outline-offset:4px}.personal-ui :is(input,textarea){caret-color:var(--p-accent)}.personal-ui :is(h1,h2,h3){color:var(--p-text);text-wrap:balance;letter-spacing:-.025em;line-height:1.15}.personal-ui a{color:var(--p-accent);text-underline-offset:.2em}.personal-ui p{max-inline-size:70ch}.personal-ui{scrollbar-color:var(--p-border) var(--p-bg)}}@layer personal.components{.p-display{font-size:var(--p-display);font-weight:650}.p-muted{color:var(--p-muted)}.p-code{font-family:var(--p-mono);font-variant-numeric:tabular-nums;font-size:.875rem}.p-panel{background:var(--p-surface);border:1px solid var(--p-border);border-radius:var(--p-radius);padding:var(--p-gap)}.p-button{border:1px solid var(--p-control-border);border-radius:var(--p-radius);background:var(--p-surface);min-block-size:44px;color:var(--p-text);font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1rem;font-weight:550;text-decoration:none;display:inline-flex}.p-button[data-primary]{background:var(--p-text);color:var(--p-bg);border-color:var(--p-text)}.p-button[data-accent]{background:var(--p-accent);color:var(--p-accent-ink);border-color:var(--p-accent)}.p-button:not([data-primary],[data-accent])[aria-pressed=true]{border-color:var(--p-accent);color:var(--p-accent)}.p-button:active{background:var(--p-raised)}.p-button[data-primary]:active{background:var(--p-muted)}.p-button[data-accent]:active{background:color-mix(in oklch, var(--p-accent) 82%, white)}.p-button:disabled{opacity:.45;cursor:default}.p-field{background:var(--p-bg);min-block-size:44px;inline-size:100%;color:var(--p-text);border:1px solid var(--p-control-border);border-radius:var(--p-radius);font:inherit;padding:.6rem .8rem}.p-field::placeholder{color:var(--p-muted)}.p-field-label{color:var(--p-muted);font-size:var(--p-step-small);gap:.375rem;display:grid}:is(.p-field[aria-invalid=true],.p-field:user-invalid){border-color:var(--p-error)}.p-field-error{color:var(--p-error);font-size:var(--p-step-small);margin:0}.p-row{border-block-end:1px solid var(--p-border);flex-wrap:wrap;align-items:center;gap:1rem;padding-block:1rem;display:flex}.p-row>:last-child{margin-inline-start:auto}.p-rule{border:0;border-block-start:1px solid var(--p-border);margin-block:var(--p-gap)}.p-tags{flex-wrap:wrap;gap:.5rem;display:flex}.p-tag{border:1px solid var(--p-border);color:var(--p-muted);border-radius:.25rem;padding:.15rem .55rem;font-size:.8rem}.p-tag[data-selected]{color:var(--p-accent);border-color:color-mix(in oklch, var(--p-accent) 60%, var(--p-border));background:color-mix(in oklch, var(--p-accent) 8%, var(--p-bg))}.p-label{--c:var(--p-muted);border:1px solid color-mix(in oklch, var(--c) 45%, transparent);block-size:1.5rem;color:var(--c);font:400 var(--p-step-label)/1 var(--p-mono);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;border-radius:2px;align-items:center;padding-inline:.45rem;display:inline-flex}.p-label[data-fill]{border-color:var(--c);background:var(--c);color:var(--p-accent-ink)}.p-chips{flex-wrap:wrap;gap:.5rem;display:flex}.p-chip{--c:var(--p-text);border:1px solid var(--p-border);min-block-size:2.25rem;color:var(--p-muted);font:400 var(--p-step-label)/1 var(--p-mono);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:2px;align-items:center;gap:.55rem;padding-inline:.8rem;display:inline-flex;position:relative}.p-chip:before{content:"";background:var(--c);block-size:.5rem;inline-size:.5rem}.p-chip[data-plain]:before{display:none}.p-chip:after{content:"";position:absolute;inset:min(0px,50% - 22px)}.p-chip-count{color:var(--p-muted);font-variant-numeric:tabular-nums;letter-spacing:0}.p-chip[aria-pressed=true]{border-color:var(--p-text);color:var(--p-text)}.p-chip:active{background:var(--p-raised)}.p-chip:disabled{opacity:.4;cursor:default}.p-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));gap:.875rem;display:grid}.p-card{--c:var(--p-muted);border:1px solid var(--p-border);border-radius:var(--p-radius);background:var(--p-surface);flex-direction:column;gap:.75rem;padding:1.25rem;display:flex;position:relative}.p-card:before{content:"";z-index:1;background:var(--c);transform-origin:0;block-size:1px;position:absolute;inset:-1px -1px auto;scale:0 1}.p-card-media{aspect-ratio:16/9;border-radius:calc(var(--p-radius) - 1px) calc(var(--p-radius) - 1px) 0 0;background:var(--p-raised);margin:-1.25rem -1.25rem 0;display:block;overflow:clip}.p-card-media img{object-fit:cover;block-size:100%;inline-size:100%;display:block}.p-card-top{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.p-card-title{font-size:var(--p-step-title);letter-spacing:-.015em;text-wrap:balance;margin:0;font-weight:650;line-height:1.2}.p-card-link{color:inherit;text-decoration:none}.p-card-link:after{content:"";border-radius:inherit;position:absolute;inset:0}.p-card-link:focus-visible{outline:2px solid #0000}.p-card:has(.p-card-link:focus-visible){outline:2px solid var(--p-accent);outline-offset:3px}.p-card-text{color:var(--p-muted);margin:0;font-size:.9375rem;line-height:1.55}.p-card-foot{border-block-start:1px solid var(--p-border);margin-block-start:auto;padding-block-start:.75rem}.p-card :is(button,a:not(.p-card-link)){z-index:1;position:relative}.p-card:active{background:var(--p-raised)}.p-card[aria-current=true]{border-color:var(--p-text)}.p-card[aria-current=true]:before{scale:1}.p-card[aria-disabled=true]{opacity:.45}.p-card[aria-disabled=true] .p-card-link{pointer-events:none}.p-index{border-block-start:1px solid var(--p-border);margin:0;padding:0;list-style:none;container-type:inline-size}.p-index>li{border-block-end:1px solid var(--p-border)}.p-index-row{--c:var(--p-muted);color:inherit;grid-template-columns:4.5rem minmax(0,1fr) auto 1rem;align-items:center;gap:.25rem 1rem;padding:.875rem .5rem;text-decoration:none;display:grid}.p-index-row:focus-visible{outline-offset:-2px}.p-index-code{color:var(--c);font:400 var(--p-step-label)/1 var(--p-mono);letter-spacing:.14em;text-transform:uppercase}.p-index-title{color:var(--p-text);font-weight:600;display:block}.p-index-text{color:var(--p-muted);font-size:var(--p-step-small);line-height:1.5;display:block}.p-index-count{color:var(--p-muted);font:400 .75rem/1 var(--p-mono);font-variant-numeric:tabular-nums}.p-index-arrow{block-size:1rem;inline-size:1rem;color:var(--c);display:block}.p-index-row:active{background:var(--p-raised)}.p-index-row[aria-current=page]{background:var(--p-surface)}.p-index-row[aria-current=page] .p-index-title{color:var(--c)}.p-index-row[aria-disabled=true]{opacity:.45;pointer-events:none}@container (width<30rem){.p-index-row{grid-template-columns:3rem minmax(0,1fr) 1rem}.p-index-count{display:none}}.p-head{border-block-start:2px solid var(--p-text);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 2rem;margin-block-end:1.25rem;padding-block-start:.75rem;display:flex}.p-head>:is(h1,h2,h3){font-size:var(--p-step-section);letter-spacing:-.02em;margin:0;font-weight:650}.p-head>p{max-inline-size:52ch;color:var(--p-muted);margin:0;font-size:.9375rem}.p-head[data-size=small]{border-block-start-width:1px}.p-head[data-size=small]>:is(h1,h2,h3){letter-spacing:0;font-size:1.0625rem}.p-note{--c:var(--p-amber);border-block-start:1px solid var(--p-border);padding-block-start:.875rem}.p-note>p{max-inline-size:68ch;color:var(--p-text);margin:0;line-height:1.6}.p-note-lead{color:var(--c);font-weight:650}.p-banner:has(.p-banner-action:focus-visible){border-color:var(--p-control-border)}.p-banner{--c:var(--p-accent);border:1px solid var(--p-border);border-radius:var(--p-radius);background:var(--p-surface);gap:.625rem;padding:clamp(1.25rem,1rem + 1.5vw,2rem);display:grid}.p-banner-title{font-size:var(--p-step-section);letter-spacing:-.02em;margin:0;font-weight:650}.p-banner-text{max-inline-size:62ch;color:var(--p-muted);margin:0}.p-banner-action{color:var(--c);text-underline-offset:.2em;justify-self:start;font-weight:600}.p-meta{color:var(--p-muted);font:400 .75rem/1.6 var(--p-mono);font-variant-numeric:tabular-nums;flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.p-meta>li+li:before{content:"·";padding-inline:.6em}.p-meta b{color:var(--p-text);font-weight:400}.p-brand{max-inline-size:none;color:var(--p-muted);font:400 var(--p-step-label)/1 var(--p-mono);letter-spacing:.3em;text-transform:uppercase;align-items:center;gap:14px;margin:0;display:flex}.p-brand b{color:var(--p-text);font-weight:400}.p-brand:after{content:"";background:var(--p-border);transform-origin:0;flex:1;block-size:1px}.p-icon-button{border:1px solid var(--p-border);border-radius:var(--p-radius);block-size:2.25rem;inline-size:2.25rem;color:var(--p-muted);cursor:pointer;background:0 0;place-items:center;padding:0;display:inline-grid;position:relative}.p-icon-button:after{content:"";position:absolute;inset:min(0px,50% - 22px)}.p-icon-button svg{block-size:1rem;inline-size:1rem}.p-icon-button:active{background:var(--p-raised)}.p-icon-button:disabled{opacity:.4;cursor:default}.p-dialog{border:1px solid var(--p-border);border-radius:var(--p-radius);background:var(--p-bg);max-block-size:calc(100dvh - 2rem);inline-size:min(72rem,100vw - 2rem);max-inline-size:none;color:var(--p-text);opacity:0;padding:0}.p-dialog[open]{opacity:1;grid-template-rows:auto minmax(0,1fr);display:grid}.p-dialog::backdrop{opacity:0;background:oklch(0% 0 none/.72)}.p-dialog[open]::backdrop{opacity:1}.p-dialog-bar{border-block-end:1px solid var(--p-border);align-items:center;gap:.5rem;padding:.625rem .75rem .625rem 1.25rem;display:flex}.p-dialog-title{min-inline-size:0;color:var(--p-muted);font:400 .75rem/1.4 var(--p-mono);white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;overflow:clip}.p-dialog-body{overscroll-behavior:contain;overflow-y:auto}:root:has(.p-dialog:modal){overflow:hidden}@media (width<40rem){.p-dialog{border:0;border-radius:0;block-size:100dvh;max-block-size:100dvh;inline-size:100vw}}@media (hover:hover) and (pointer:fine){.p-button:not(:disabled):hover{border-color:var(--p-accent)}.p-chip:not(:disabled):hover{border-color:var(--p-control-border);color:var(--p-text)}.p-card:not([aria-disabled=true]):hover{border-color:var(--p-control-border)}.p-card:not([aria-disabled=true]):hover:before{scale:1}.p-index-row:hover{background:var(--p-surface)}.p-index-row:hover .p-index-arrow{translate:.375rem}.p-icon-button:not(:disabled):hover{border-color:var(--p-control-border);color:var(--p-text)}.p-banner:has(.p-banner-action:hover){border-color:var(--p-control-border)}.p-banner-action:hover,.personal-ui a:hover{text-decoration-thickness:2px}}.p-card,.p-chip,.p-index-row,.p-icon-button{transition:background-color var(--p-duration) var(--p-ease), border-color var(--p-duration) var(--p-ease), color var(--p-duration) var(--p-ease)}.p-dialog,.p-dialog::backdrop{transition:opacity .24s var(--p-ease), display .24s allow-discrete, overlay .24s allow-discrete}@starting-style{.p-dialog[open],.p-dialog[open]::backdrop{opacity:0}}@media (prefers-reduced-motion:no-preference){.p-button{transition:background-color var(--p-duration) ease-out, border-color var(--p-duration) ease-out}.p-chip,.p-icon-button{transition:background-color var(--p-duration) var(--p-ease), border-color var(--p-duration) var(--p-ease), color var(--p-duration) var(--p-ease), scale .12s var(--p-ease)}.p-chip:active,.p-icon-button:active{scale:.97}.p-card:before{transition:scale .5s var(--p-ease)}.p-index-arrow{transition:translate var(--p-duration) var(--p-ease)}.p-brand:after{animation:p-draw 1.1s .15s var(--p-ease) backwards}.p-dialog{transition:opacity .24s var(--p-ease), translate .32s var(--p-ease), display .32s allow-discrete, overlay .32s allow-discrete;translate:0 .5rem}.p-dialog[open]{translate:0}@starting-style{.p-dialog[open]{translate:0 .5rem}}}@keyframes p-draw{0%{scale:0 1}}}.p-foot{border-block-start:1px solid var(--p-border);color:var(--p-muted);font:400 11px/1 var(--p-mono);letter-spacing:.2em;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 22px;margin-block-start:48px;padding-block:22px 32px;display:flex}.p-foot nav{flex-wrap:wrap;gap:14px 22px;display:flex}.p-foot a{color:inherit;align-items:center;gap:.5em;margin-block:-7px;padding-block:7px;text-decoration:none;display:inline-flex}.p-foot svg{block-size:.75rem;inline-size:.75rem}.p-foot a:focus-visible{color:var(--p-text)}@media (hover:hover) and (pointer:fine){.p-foot a:hover{color:var(--p-text)}}@media (prefers-reduced-motion:no-preference){.p-foot a{transition:color var(--p-duration) ease-out}}:root{--ease:cubic-bezier(.16, 1, .3, 1);--hub-surface:oklch(13% 0 none)}*,:before,:after{box-sizing:border-box}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-font-smoothing:antialiased}html,body{background:var(--p-bg);min-height:100%;color:var(--p-text);font-family:var(--p-font);margin:0}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.hub{max-width:1120px;margin:0 auto;padding:48px clamp(16px,3vw,32px) 72px}.hub>:not(.hub-tide){z-index:1;position:relative}.hub-tide{z-index:0;pointer-events:none;width:100%;height:100%;image-rendering:pixelated;animation:hub-tide-in 2.4s .3s var(--ease) backwards;transition:opacity .6s var(--ease);position:fixed;inset:0;-webkit-mask-image:radial-gradient(120% 80% at 50% 30%,#000 40%,#0000 100%);mask-image:radial-gradient(120% 80% at 50% 30%,#000 40%,#0000 100%)}@keyframes hub-tide-in{0%{opacity:0}}.hub:has(.hub-grid.has-active) .hub-tide{opacity:.45}.hub-brand{font:400 11px/1 var(--p-mono);letter-spacing:.3em;color:var(--p-muted);align-items:center;gap:14px;margin:0 0 28px;display:flex}.hub-brand:after{content:"";background:var(--p-border);transform-origin:0;height:1px;animation:hub-draw 1.1s .15s var(--ease) forwards;flex:1;transform:scaleX(0)}@keyframes hub-draw{to{transform:scaleX(1)}}.hub-foot{animation:hub-in .7s .7s var(--ease) backwards}.hub-grid{perspective:1100px;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.hub-card:last-child:nth-child(3n+1){grid-column:1/-1}@media (width<=900px){.hub-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hub-card:last-child:nth-child(3n+1){grid-column:auto}.hub-card:last-child:nth-child(odd){grid-column:1/-1}}@media (width<=600px){.hub-grid{grid-template-columns:minmax(0,1fr)}.hub-card:last-child:nth-child(odd){grid-column:auto}}.hub-card{animation:hub-in .7s var(--ease) backwards;animation-delay:calc(.2s + var(--i) * 70ms);transition:opacity .3s var(--ease), filter .3s var(--ease), transform .6s var(--ease)}@keyframes hub-in{0%{opacity:0;translate:0 10px}to{opacity:1;translate:0}}.hub-card.is-active{transition:opacity .3s var(--ease), filter .3s var(--ease), transform .12s linear}.hub-grid.has-active .hub-card:not(.is-active){opacity:.38;filter:grayscale()}.hub-link{isolation:isolate;border:1px solid var(--p-border);background:var(--hub-surface);height:100%;min-height:210px;color:inherit;transition:border-color .3s var(--ease), background .35s var(--ease);-webkit-tap-highlight-color:transparent;border-radius:6px;flex-direction:column;padding:20px 20px 18px;text-decoration:none;display:flex;position:relative;overflow:hidden}.hub-link>:not(.hub-fx){z-index:1;position:relative}.hub-card.is-active .hub-link{border-color:color-mix(in srgb, var(--c) 55%, transparent);background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%), color-mix(in srgb, var(--c) 13%, transparent), transparent 60%), var(--hub-surface)}.hub-link:before{content:"";z-index:2;background:var(--c);transform-origin:0;height:1px;transition:transform .4s var(--ease);position:absolute;top:0;left:0;right:0;transform:scaleX(0)}.hub-card.is-active .hub-link:before{transform:scaleX(1)}.hub-link:focus-visible{outline:1px solid var(--c);outline-offset:-1px}.hub-fx{width:100%;height:100%;image-rendering:pixelated;pointer-events:none;z-index:0;position:absolute;inset:0}.hub-top{justify-content:space-between;align-items:center;margin-bottom:30px;display:flex}.hub-tag{border:1px solid color-mix(in srgb, var(--c) 45%, transparent);font:400 10px/1.2 var(--p-mono);letter-spacing:.16em;color:var(--c);padding:4px 7px}.hub-card.is-active .hub-tag{background:var(--c);color:var(--p-bg);animation:.34s hub-glitch}@keyframes hub-glitch{0%{clip-path:inset(0 0 55%);transform:translate(-4px)}20%{clip-path:inset(45% 0 0);transform:translate(4px)}40%{clip-path:inset(15% 0 40%);transform:translate(-2px)}60%{clip-path:inset(60% 0 5%);transform:translate(2px)}to{clip-path:inset(0);transform:none}}.hub-arrow{font:400 13px/1 var(--p-mono);color:var(--p-muted);transition:transform .35s var(--ease), color .2s}.hub-card.is-active .hub-arrow{color:var(--c);transform:translate(3px,-3px)}.hub-name{letter-spacing:-.01em;overflow-wrap:anywhere;margin:auto 0 8px;font-size:21px;font-weight:700;display:block}.hub-blurb{max-width:36ch;min-height:3.1em;color:var(--p-muted);font-size:14px;line-height:1.55;transition:color .2s;display:block}.hub-card.is-active :is(.hub-name,.hub-blurb){text-shadow:0 0 4px #000,0 1px 2px #000}.hub-card.is-active .hub-blurb{color:oklch(88% 0 none)}@media (prefers-reduced-motion:reduce){.hub-card{animation:none;transform:none!important}.hub-foot{animation:none}.hub-brand:after{animation:none;transform:none}.hub-tide{transition:none;animation:none}.hub-card.is-active .hub-tag{animation:none}.hub-link:before,.hub-arrow{transition:none}}
