:root{--bg:#eef2f1;--surface:#f8faf9;--ink:#14213d;--muted:#56627a;--line:#c8d1d4;--accent:#2349b8;--accent-ink:#fff;--ok:#2f855a;--pending:#b7791f;--danger:#b42318;--term-bg:#14213d;--term-ink:#dce5f0;--term-dim:#8b9bb4;--term-ok:#7fd1a3;--term-pending:#f2c46d;--font:"Schibsted Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--radius-sm:6px;--radius-lg:14px;--wrap:68rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0f1829;--surface:#16223a;--ink:#e4eaf2;--muted:#9aa8bf;--line:#2b3a57;--accent:#8aa7ff;--accent-ink:#0f1829;--ok:#6fcf97;--pending:#f2c46d;--danger:#ff8a7a;--term-bg:#0a1220;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font);flex-direction:column;min-height:100vh;margin:0;font-size:1.0625rem;line-height:1.6;display:flex}main{flex:1}h1,h2,h3{margin:0;line-height:1.15}p{margin:0}a{color:var(--accent);text-underline-offset:.2em}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:2px}.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:1.25rem}.skip-link{background:var(--ink);color:var(--bg);border-radius:var(--radius-sm);z-index:10;padding:.5rem .875rem;position:absolute;top:-3rem;left:1rem}.skip-link:focus{top:1rem}.site-header{border-bottom:1px solid var(--line)}.site-header__inner{justify-content:space-between;align-items:center;gap:1rem;height:4rem;display:flex}.wordmark{letter-spacing:-.01em;color:var(--ink);font-size:1.125rem;font-weight:800;text-decoration:none}.nav{gap:1.5rem;margin:0;padding:0;list-style:none;display:flex}.nav a{color:var(--ink);font-weight:500;text-decoration:none}.nav a:hover{color:var(--accent)}.site-footer{border-top:1px solid var(--line);color:var(--muted);margin-top:5rem;font-size:.9375rem}.site-footer__inner{flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-block:1.75rem;display:flex}.footer-links{gap:1.25rem;margin:0;padding:0;list-style:none;display:flex}.footer-links a{color:var(--muted)}.button{border:1.5px solid var(--accent);border-radius:var(--radius-sm);background:var(--accent);min-height:2.75rem;color:var(--accent-ink);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:.625rem 1.125rem;font-size:1rem;font-weight:700;text-decoration:none;display:inline-flex}.button:hover{filter:brightness(1.08)}.button:disabled{opacity:.6;cursor:progress}.button--quiet{color:var(--ink);border-color:var(--line);background:0 0}.button--quiet:hover{border-color:var(--ink);filter:none}.hero{grid-template-columns:1fr;align-items:center;gap:2.5rem;padding-block:3.5rem 2rem;display:grid}@media (min-width:900px){.hero{grid-template-columns:1.05fr 1fr;gap:3.5rem;padding-block:6rem 3rem}}.hero__name{color:var(--muted);margin-bottom:.75rem;font-weight:700}.hero__title{letter-spacing:-.03em;max-width:14ch;font-size:clamp(2.25rem,5.5vw,3.75rem);font-weight:800;line-height:1.02}.hero__intro{max-width:34rem;color:var(--muted);margin-top:1.5rem;font-size:1.1875rem}.hero__actions{flex-wrap:wrap;gap:.75rem;margin-top:2rem;display:flex}.trace{background:var(--term-bg);color:var(--term-ink);border-radius:var(--radius-lg);margin:0;overflow:hidden;box-shadow:0 24px 48px -28px #14213d8c}.trace__bar{border-bottom:1px solid #ffffff14;gap:.4rem;padding:.875rem 1rem;display:flex}.trace__bar span{background:#ffffff2e;border-radius:50%;width:.625rem;height:.625rem}.trace__body{font-family:var(--mono);margin:0;padding:1.25rem 1.25rem 1.5rem;font-size:clamp(.75rem,2.6vw,.9375rem);line-height:2;overflow-x:auto}.trace__cmd{color:var(--term-dim)}.trace__hop{opacity:0;animation:.35s ease-out forwards hop-in;display:inline}.trace__n,.trace__note{color:var(--term-dim)}.trace__hop--up .trace__state{color:var(--term-ok)}.trace__hop--pending .trace__state,.trace__hop--pending .trace__host{color:var(--term-pending)}@keyframes hop-in{to{opacity:1}}@media (prefers-reduced-motion:reduce){.trace__hop{opacity:1;animation:none}}.section{padding-top:3rem}.section__title{letter-spacing:-.015em;margin-bottom:1.25rem;font-size:1.5rem;font-weight:800}.page{padding-top:3.5rem}.page--narrow>*{max-width:40rem}.page__title{letter-spacing:-.025em;font-size:clamp(2rem,5vw,3rem);font-weight:800}.page__lead{color:var(--muted);max-width:38rem;margin-block:1rem 2.5rem;font-size:1.1875rem}.projects{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.project{border-bottom:1px solid var(--line);gap:.5rem;padding-block:1.5rem;display:grid}.project__head{flex-wrap:wrap;align-items:baseline;gap:.5rem 1rem;display:flex}.project__title{font-size:1.25rem;font-weight:700}.project__summary{max-width:44rem}.project__stack{color:var(--muted);font-size:.9375rem}.project__links{gap:1.25rem;font-weight:500;display:flex}.status{color:var(--muted);align-items:center;gap:.375rem;font-size:.8125rem;font-weight:500;display:inline-flex}.status:before{content:"";background:var(--line);border-radius:50%;width:.5rem;height:.5rem}.status--live:before{background:var(--ok)}.status--in-progress:before{background:var(--pending)}.form{gap:1.25rem;display:grid}.field{gap:.375rem;display:grid}.field label{font-weight:500}.field input,.field textarea{width:100%;font:inherit;color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:.625rem .75rem}.field textarea{resize:vertical}.field input:focus-visible,.field textarea:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);outline:none}.field [aria-invalid=true]{border-color:var(--danger)}.field__error,.form__error{color:var(--danger);font-size:.9375rem}.form .button{justify-self:start}.hp{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.form-done{border:1.5px solid var(--ok);border-radius:var(--radius-lg);background:var(--surface);justify-items:start;gap:.75rem;padding:1.5rem;display:grid}.form-done__title{font-size:1.25rem;font-weight:700}
