@layer tokens{:root{color-scheme:light;--paper:oklch(95.2% .012 85);--paper-raised:oklch(97.4% .009 85);--paper-sunk:oklch(92.4% .014 84);--ink:oklch(20.5% .014 60);--ink-muted:oklch(45.5% .014 62);--ink-faint:oklch(50% .013 66);--rule:oklch(85.5% .012 80);--rule-strong:oklch(20.5% .014 60);--moss:oklch(48% .049 137);--umber:oklch(50.5% .083 62);--oxblood:oklch(42.5% .126 27);--slate:oklch(43.5% .061 254);--verdigris:oklch(43% .085 195);--moss-wash:color-mix(in oklab, var(--moss) 16%, var(--paper));--umber-wash:color-mix(in oklab, var(--umber) 16%, var(--paper));--oxblood-wash:color-mix(in oklab, var(--oxblood) 16%, var(--paper));--slate-wash:color-mix(in oklab, var(--slate) 16%, var(--paper));--verdigris-wash:color-mix(in oklab, var(--verdigris) 16%, var(--paper));--seam:var(--ink);--seam-wash:var(--paper-sunk);--status-ongoing:var(--moss);--focus:oklch(42.5% .126 27);--shadow-plate:0 1px 2px oklch(0% 0 0/.04), 0 8px 24px -18px oklch(0% 0 0/.35);--astro-code-background:var(--paper-sunk);--astro-code-foreground:var(--ink);--astro-code-token-comment:var(--ink-faint);--astro-code-token-string:var(--moss);--astro-code-token-keyword:var(--oxblood);--astro-code-token-function:var(--slate);--astro-code-token-constant:var(--umber);--astro-code-token-parameter:var(--ink);--astro-code-token-string-expression:var(--moss);--astro-code-token-punctuation:var(--ink-muted);--astro-code-token-link:var(--verdigris);--font-display:"Fraunces", "Fraunces Fallback", Georgia, "Times New Roman", serif;--font-body:"Schibsted Grotesk", "Schibsted Fallback", system-ui, sans-serif;--font-mono:"Geist Mono", "Geist Mono Fallback", ui-monospace, "Cascadia Mono", Consolas, monospace;--step--2:clamp(.694rem, .68rem + .06vw, .729rem);--step--1:clamp(.833rem, .8rem + .14vw, .911rem);--step-0:clamp(1rem, .95rem + .24vw, 1.139rem);--step-1:clamp(1.2rem, 1.11rem + .38vw, 1.424rem);--step-2:clamp(1.44rem, 1.3rem + .6vw, 1.78rem);--step-3:clamp(1.728rem, 1.51rem + .92vw, 2.225rem);--step-4:clamp(2.074rem, 1.75rem + 1.38vw, 2.781rem);--step-5:clamp(2.488rem, 2.01rem + 2.04vw, 3.476rem);--step-6:clamp(2.986rem, 2.3rem + 2.93vw, 4.346rem);--step-7:clamp(3.583rem, 2.61rem + 4.15vw, 5.432rem);--step-8:clamp(4.3rem, 2.93rem + 5.85vw, 6.79rem);--leading-tight:.94;--leading-snug:1.14;--leading-body:1.62;--tracking-display:-.024em;--tracking-label:.16em;--space-3xs:clamp(.25rem, .24rem + .05vw, .28rem);--space-2xs:clamp(.5rem, .48rem + .1vw, .57rem);--space-xs:clamp(.75rem, .72rem + .15vw, .85rem);--space-s:clamp(1rem, .95rem + .24vw, 1.14rem);--space-m:clamp(1.5rem, 1.43rem + .36vw, 1.71rem);--space-l:clamp(2rem, 1.9rem + .48vw, 2.28rem);--space-xl:clamp(3rem, 2.86rem + .73vw, 3.42rem);--space-2xl:clamp(4rem, 3.81rem + .97vw, 4.56rem);--space-3xl:clamp(6rem, 5.71rem + 1.46vw, 6.84rem);--measure:62ch;--shell:78rem;--gutter:clamp(1.25rem, .9rem + 1.6vw, 2.75rem);--ease-out:cubic-bezier(.22, 1, .36, 1);--dur-fast:.13s;--dur-base:.24s}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:oklch(16.5% .01 70);--paper-raised:oklch(20% .011 70);--paper-sunk:oklch(13.5% .009 70);--ink:oklch(92.5% .014 82);--ink-muted:oklch(72% .013 80);--ink-faint:oklch(62% .012 78);--rule:oklch(29% .011 72);--rule-strong:oklch(92.5% .014 82);--moss:oklch(72% .07 137);--umber:oklch(74.5% .093 62);--oxblood:oklch(66% .13 27);--slate:oklch(70% .07 254);--verdigris:oklch(68% .1 195);--moss-wash:color-mix(in oklab, var(--moss) 20%, var(--paper));--umber-wash:color-mix(in oklab, var(--umber) 20%, var(--paper));--oxblood-wash:color-mix(in oklab, var(--oxblood) 20%, var(--paper));--slate-wash:color-mix(in oklab, var(--slate) 20%, var(--paper));--verdigris-wash:color-mix(in oklab, var(--verdigris) 20%, var(--paper));--focus:oklch(78% .13 27);--shadow-plate:0 1px 0 oklch(100% 0 0/.04), 0 10px 30px -20px oklch(0% 0 0/.8)}}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark;--paper:oklch(16.5% .01 70);--paper-raised:oklch(20% .011 70);--paper-sunk:oklch(13.5% .009 70);--ink:oklch(92.5% .014 82);--ink-muted:oklch(72% .013 80);--ink-faint:oklch(62% .012 78);--rule:oklch(29% .011 72);--rule-strong:oklch(92.5% .014 82);--moss:oklch(72% .07 137);--umber:oklch(74.5% .093 62);--oxblood:oklch(66% .13 27);--slate:oklch(70% .07 254);--verdigris:oklch(68% .1 195);--moss-wash:color-mix(in oklab, var(--moss) 20%, var(--paper));--umber-wash:color-mix(in oklab, var(--umber) 20%, var(--paper));--oxblood-wash:color-mix(in oklab, var(--oxblood) 20%, var(--paper));--slate-wash:color-mix(in oklab, var(--slate) 20%, var(--paper));--verdigris-wash:color-mix(in oklab, var(--verdigris) 20%, var(--paper));--focus:oklch(78% .13 27);--shadow-plate:0 1px 0 oklch(100% 0 0/.04), 0 10px 30px -20px oklch(0% 0 0/.8)}[data-hue=moss]{--seam:var(--moss);--seam-wash:var(--moss-wash)}[data-hue=umber]{--seam:var(--umber);--seam-wash:var(--umber-wash)}[data-hue=oxblood]{--seam:var(--oxblood);--seam-wash:var(--oxblood-wash)}[data-hue=slate]{--seam:var(--slate);--seam-wash:var(--slate-wash)}[data-hue=verdigris]{--seam:var(--verdigris);--seam-wash:var(--verdigris-wash)}}@layer fonts{@font-face{font-family:Fraunces;src:url(/portfolio/fonts/fraunces-latin-opsz-normal.woff2)format("woff2-variations");font-weight:100 900;font-stretch:100%;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Schibsted Grotesk;src:url(/portfolio/fonts/schibsted-grotesk-latin-wght-normal.woff2)format("woff2-variations");font-weight:400 900;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono;src:url(/portfolio/fonts/geist-mono-latin-wght-normal.woff2)format("woff2-variations");font-weight:100 900;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Fallback;src:local(Georgia),local(Times New Roman),local(Times);size-adjust:103%;ascent-override:92%;descent-override:24%;line-gap-override:0%}@font-face{font-family:Schibsted Fallback;src:local(Segoe UI),local(Helvetica Neue),local(Arial);size-adjust:101.5%;ascent-override:96%;descent-override:24%;line-gap-override:0%}@font-face{font-family:Geist Mono Fallback;src:local(Cascadia Mono),local(Consolas);size-adjust:102.4%;ascent-override:98.14%;descent-override:28.81%;line-gap-override:0%}}@layer reset{*,:before,:after{box-sizing:border-box}html{text-size-adjust:100%;scroll-behavior:smooth}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd,ol,ul{margin:0;padding:0}ul[role=list],ol[role=list]{list-style:none}img,picture,svg,video{max-width:100%;height:auto;display:block}input,button,textarea,select{font:inherit;color:inherit}:target{scroll-margin-block-start:var(--space-2xl)}}@layer base{body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);line-height:var(--leading-body);font-synthesis-weight:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;min-height:100vh}h1,h2,h3,h4{font-family:var(--font-display);font-weight:400;line-height:var(--leading-snug);letter-spacing:var(--tracking-display);text-wrap:balance}h1{font-size:var(--step-6);line-height:var(--leading-tight)}h2{font-size:var(--step-4)}h3{font-size:var(--step-2)}h4{font-size:var(--step-1)}p{text-wrap:pretty}a{color:inherit;text-underline-offset:.22em;text-decoration-thickness:1px;text-decoration-color:color-mix(in oklab, currentColor 35%, transparent);transition:text-decoration-color var(--dur-fast) var(--ease-out)}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:1px}::selection{background:color-mix(in oklab, var(--seam) 24%, var(--paper));color:var(--ink)}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.92em}hr{border:0;border-block-start:1px solid var(--rule);margin-block:var(--space-l)}.label{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-faint);font-weight:500}.shell{inline-size:min(100% - (var(--gutter) * 2), var(--shell));margin-inline:auto}.prose{max-inline-size:var(--measure)}.prose>*+*{margin-block-start:var(--space-s)}.prose h2{margin-block-start:var(--space-xl)}.prose h3{margin-block-start:var(--space-l)}.prose pre{background:var(--paper-sunk);border:1px solid var(--rule);padding:var(--space-s);font-size:var(--step--1);line-height:1.55;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose :not(pre)>code{background:var(--paper-sunk);border:1px solid var(--rule);overflow-wrap:anywhere;padding:.12em .36em}.prose blockquote{border-inline-start:3px solid var(--seam,var(--rule-strong));color:var(--ink);padding-inline-start:var(--space-s);font-style:italic}.prose ul,.prose ol{gap:var(--space-2xs);padding-inline-start:var(--space-m);display:grid}.prose strong{font-weight:600}.visually-hidden:not(:focus):not(:active){clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.skip-link{z-index:100;padding:var(--space-2xs) var(--space-s);background:var(--ink);color:var(--paper);font-family:var(--font-mono);font-size:var(--step--1);text-decoration:none;position:absolute;inset-block-start:var(--space-xs);inset-inline-start:var(--space-xs);transform:translateY(-200%)}.skip-link:focus{transform:none}}@layer components{.register-wrap{--scroll-fade:var(--paper-raised);--scroll-shadow:color-mix(in oklab, var(--ink) 22%, transparent);border:1px solid var(--rule);background:linear-gradient(to right, var(--scroll-fade) 30%, transparent), linear-gradient(to right, transparent, var(--scroll-fade) 70%) 100% 0, radial-gradient(farthest-side at 0 50%, var(--scroll-shadow), transparent), radial-gradient(farthest-side at 100% 50%, var(--scroll-shadow), transparent) 100% 0, var(--paper-raised);background-repeat:no-repeat;background-size:2.5rem 100%,2.5rem 100%,.9rem 100%,.9rem 100%;background-attachment:local,local,scroll,scroll;overflow-x:auto}.register-wrap:focus-visible{outline-offset:-2px}.register-hint{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-faint);margin-block-start:var(--space-2xs)}.register{border-collapse:collapse;inline-size:100%;font-size:var(--step--1)}.register th,.register td{padding:var(--space-2xs) var(--space-s);text-align:start;vertical-align:top;border-block-end:1px solid var(--rule)}}@layer motion{:root{--ease-out-quart:cubic-bezier(.25, 1, .5, 1);--dur-slow:.64s}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0s!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}@keyframes rise-in{0%{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:translateY(0)}}@keyframes rise-in-scroll{0%{opacity:0;transform:translateY(1rem)}12%{opacity:1}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:no-preference){.hero__title,.hero__lede{animation-name:rise-in;animation-duration:var(--dur-slow);animation-timing-function:var(--ease-out-quart);animation-fill-mode:both}.hero__title{animation-delay:0s}.hero__lede{animation-delay:.13s}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){main section:not(.hero),.proj__hero,.proj__out{animation-name:rise-in-scroll;animation-timing-function:var(--ease-out-quart);animation-fill-mode:both;animation-timeline:view();animation-range:entry cover 30%}}}::view-transition-group(*){animation-timing-function:var(--ease-out-quart)}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}.theme-toggle__track[data-astro-cid-l6lhmie6]{border:1px solid var(--rule);background:var(--paper-sunk);border-radius:9999px;align-items:center;gap:2px;padding:2px;display:inline-flex}.theme-toggle__btn[data-astro-cid-l6lhmie6]{aspect-ratio:1;block-size:1.75rem;inline-size:1.75rem;color:var(--ink-muted);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);background:0 0;border:none;border-radius:9999px;justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-toggle__btn[data-astro-cid-l6lhmie6] svg[data-astro-cid-l6lhmie6]{fill:none;stroke:currentColor;stroke-width:1.3px;stroke-linecap:round;stroke-linejoin:round;block-size:.95rem;inline-size:.95rem}.theme-toggle__btn[data-astro-cid-l6lhmie6][data-theme-option=dark] svg[data-astro-cid-l6lhmie6]{fill:currentColor;stroke:none}.theme-toggle__btn[data-astro-cid-l6lhmie6]:hover{background:var(--paper-raised);color:var(--ink)}.theme-toggle__btn[data-astro-cid-l6lhmie6][aria-checked=true],.theme-toggle__btn[data-astro-cid-l6lhmie6][aria-checked=true]:hover{background:var(--seam,var(--ink));color:var(--paper)}.theme-toggle__btn[data-astro-cid-l6lhmie6]:focus-visible{outline-offset:2px;border-radius:9999px}@media (width<=30rem){.theme-toggle__track[data-astro-cid-l6lhmie6]{gap:.375rem;padding:.25rem}.theme-toggle__btn[data-astro-cid-l6lhmie6]{block-size:2.5rem;inline-size:2.5rem}.theme-toggle__btn[data-astro-cid-l6lhmie6] svg[data-astro-cid-l6lhmie6]{block-size:1.3rem;inline-size:1.3rem}}.site-head[data-astro-cid-hkbrpulz]{border-block-end:1px solid var(--rule);background:var(--paper)}.site-head__inner[data-astro-cid-hkbrpulz],.site-foot__inner[data-astro-cid-hkbrpulz]{justify-content:space-between;align-items:baseline;gap:var(--space-s);padding-block:var(--space-s);flex-wrap:wrap;display:flex}.site-head__name[data-astro-cid-hkbrpulz]{font-family:var(--font-display);font-size:var(--step-1);letter-spacing:var(--tracking-display);text-decoration:none}.site-head__controls[data-astro-cid-hkbrpulz]{align-items:center;gap:var(--space-m);flex-wrap:wrap;display:flex}.site-head__nav[data-astro-cid-hkbrpulz]{column-gap:var(--space-m);row-gap:var(--space-2xs);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.04em;flex-wrap:wrap;display:flex}.site-head__nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{border-block-end:1px solid #0000;padding-block-end:2px;text-decoration:none;position:relative}.site-head__nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]:after{content:"";position:absolute;inset-block:-4px;inset-inline:-4px}.site-head__nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]:hover,.site-head__nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz][aria-current=page]{border-block-end-color:var(--seam,var(--ink))}.site-foot[data-astro-cid-hkbrpulz]{border-block-start:1px solid var(--rule-strong);margin-block-start:var(--space-3xl)}.site-foot__inner[data-astro-cid-hkbrpulz]{padding-block:var(--space-l) var(--space-xl)}.site-foot__note[data-astro-cid-hkbrpulz]{max-inline-size:48ch;font-size:var(--step--1);color:var(--ink-muted)}.site-foot__links[data-astro-cid-hkbrpulz]{gap:var(--space-m);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;display:flex}.site-foot__links[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{position:relative}.site-foot__links[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]:after{content:"";position:absolute;inset-block:-6px;inset-inline:-4px}@media (width<=34rem){.site-head__name[data-astro-cid-hkbrpulz]{font-size:var(--step-0)}.site-head__inner[data-astro-cid-hkbrpulz]{grid-template-columns:1fr auto;align-items:center;display:grid}.site-head__controls[data-astro-cid-hkbrpulz]{display:contents}.site-head__controls[data-astro-cid-hkbrpulz]>nav[data-astro-cid-hkbrpulz]{grid-area:2/1/auto/-1}}
