@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-weight:200 800;font-display:optional;src:url(/_astro/atkinson-hyperlegible-next-latin-wght-normal.BcXVPD7q.woff2)format("woff2");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:Atkinson Hyperlegible Mono;font-style:normal;font-weight:200 800;font-display:optional;src:url(/_astro/atkinson-hyperlegible-mono-latin-wght-normal.CoA7y8X5.woff2)format("woff2");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}:root{color-scheme:light dark;--font-text:"Atkinson Hyperlegible Next", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"Atkinson Hyperlegible Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--color-bg:#f4f5f8;--color-surface:#fff;--color-text:#14161c;--color-muted:#565c69;--color-rule:#dfe2ea;--color-tag-rule:#878c98;--color-accent:#1f4fd1;--color-accent-tint:#e3e9fa;--gradient-1:#1f4fd1;--gradient-2:#6d2fd6;--gradient-3:#b4235f;--glow-1:#1f4fd114;--glow-2:#6d2fd60f;--grid-line:#1f4fd10f;--shadow-card:0 1px 2px #14161c0a, 0 12px 32px -12px #14161c24;--shadow-card-hover:0 2px 4px #14161c0d, 0 24px 48px -16px #1f4fd147;--text-base:1rem;--text-label:.875rem;--text-name:clamp(1rem, .9rem + .4vw, 1.125rem);--text-link:clamp(1rem, .95rem + .3vw, 1.125rem);--text-lead:clamp(1.125rem, 1rem + .6vw, 1.5rem);--text-display:clamp(2.375rem, .9rem + 5.2vw, 4.75rem);--leading-display:1.05;--leading-lead:1.4;--leading-body:1.5;--space-s:.75rem;--space-m:1rem;--space-l:1.5rem;--space-section:clamp(1.5rem, 6vw, 5rem);--gutter:1.25rem;--radius-card:1.5rem}@media (prefers-color-scheme:dark){:root{--color-bg:#0e1016;--color-surface:#161a24;--color-text:#eceef3;--color-muted:#a5abb8;--color-rule:#2a3142;--color-tag-rule:#6b7282;--color-accent:#86a8ff;--color-accent-tint:#232b40;--gradient-1:#86a8ff;--gradient-2:#c3a3ff;--gradient-3:#f3a0b4;--glow-1:#4f76ff33;--glow-2:#a06eff24;--grid-line:#86a8ff0f;--shadow-card:0 1px 2px #0000004d, 0 12px 32px -12px #0009;--shadow-card-hover:0 2px 4px #0000004d, 0 24px 56px -16px #4f76ff59}}*,:before,:after{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-text);font-size:var(--text-base);line-height:var(--leading-body);overflow-wrap:break-word;margin:0}body:before{content:"";z-index:-1;background:radial-gradient(40rem 28rem at 78% 8%, var(--glow-2), transparent 70%), radial-gradient(48rem 32rem at 12% 0%, var(--glow-1), transparent 70%), linear-gradient(var(--grid-line) 1px, transparent 1px) 0 0 / 2.5rem 2.5rem, linear-gradient(90deg, var(--grid-line) 1px, transparent 1px) 0 0 / 2.5rem 2.5rem;pointer-events:none;height:min(100svh,56rem);position:absolute;inset:0 0 auto;mask-image:linear-gradient(#000 40%,#0000)}h1,h2,h3,p,ul{margin:0}a{color:var(--color-accent);text-underline-offset:.2em;scroll-margin-block:1rem;text-decoration-line:underline;text-decoration-thickness:.08em}@media (hover:hover){a:hover{text-decoration-thickness:.16em}}:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px;border-radius:2px}::selection{background:var(--color-accent-tint);color:var(--color-text)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:no-preference){.hero{animation:.5s cubic-bezier(.2,.8,.2,1) rise}a{transition:text-decoration-thickness .15s ease-out}.links a{transition:color .15s ease-out,border-color .15s ease-out,translate .15s ease-out}}@media (prefers-reduced-motion:no-preference) and (hover:hover){.links a:hover{translate:0 -2px}}@keyframes rise{0%{translate:0 .75rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}main{max-width:68rem;padding-inline:var(--gutter);margin-inline:auto;overflow-y:clip}.hero{justify-content:center;gap:var(--space-m);min-height:100svh;padding-block:var(--space-section);flex-direction:column;display:flex;container-type:inline-size}.name{font-family:var(--font-mono);font-size:var(--text-name);letter-spacing:.04em;align-items:center;gap:.6em;font-weight:600;display:flex}.name:before{content:"";background:linear-gradient(135deg, var(--gradient-1), var(--gradient-3));border-radius:50%;flex:none;width:.6em;height:.6em}h1{max-width:20ch;font-size:var(--text-display);font-weight:650;line-height:var(--leading-display);letter-spacing:-.02em;text-wrap:balance}@supports (background-clip:text){.hero h1{background:linear-gradient(100deg, var(--gradient-1), var(--gradient-2) 55%, var(--gradient-3));color:#0000;-webkit-background-clip:text;background-clip:text}}@media (forced-colors:active){.hero h1{color:canvastext;background:0 0}}.keep{white-space:nowrap}@container (width<=14em){h1{hyphens:auto}.keep{white-space:normal}}.lede{max-width:34ch;font-size:var(--text-lead);line-height:var(--leading-lead);text-wrap:balance}h2{align-items:center;gap:var(--space-s);font-size:var(--text-lead);font-weight:650;line-height:var(--leading-lead);overflow-wrap:anywhere;display:flex}h2:before{content:"";background:linear-gradient(90deg, var(--gradient-1), var(--gradient-3));border-radius:3px;flex:none;width:1.5rem;height:3px}.about{gap:var(--space-m);padding-block:var(--space-section);flex-direction:column;display:flex}.about p{max-width:65ch}.projects{gap:var(--space-l);padding-block:var(--space-section);flex-direction:column;padding-block-end:max(4rem, var(--space-section));display:flex}.hero:has(~.projects){min-height:0;padding-block:clamp(4rem, 18svh, 10rem) var(--space-l)}.card-grid{gap:var(--space-l);grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));display:grid}.links{gap:var(--space-s);font-size:var(--text-link);flex-wrap:wrap;margin-block-start:var(--space-s);padding:0;list-style:none;display:flex}.links a{border:1px solid var(--color-tag-rule);background:var(--color-surface);color:var(--color-text);overflow-wrap:anywhere;border-radius:999px;align-items:center;gap:.45em;padding:.5em .9em;font-weight:600;text-decoration:none;display:inline-flex}.links svg{flex:none;width:1.1em;height:1.1em}@media (hover:hover){.links a:hover{border-color:var(--color-accent);color:var(--color-accent)}}.home a{padding-block:var(--space-s);overflow-wrap:anywhere;display:inline-block}
