:root{color-scheme:light;--ink: #121414;--paper: #FBFAF4;--forest: #2F6B3B;--muted: #4E5550;--muted-soft: #7A7D77;--rule: rgba(18, 20, 20, .18);--font-serif: "Fraunces", Georgia, serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--syn-key: var(--forest);--syn-string: var(--ink);--syn-number: #7a4a00;--syn-bracket: var(--muted);--syn-comment: #5C5F58;--syn-punct: var(--muted);--media-max: 780px;--gutter: 1.5rem;--section-gap: 4rem}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/assets/fonts/JetBrainsMono-var-fi.woff2) format("woff2")}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fonts/Fraunces-var-fi.woff2) format("woff2")}*,*:before,*:after{box-sizing:border-box}*{margin:0}html,body{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-mono);font-size:.9375rem;line-height:1.6;-webkit-font-smoothing:antialiased;font-feature-settings:"calt","liga"}a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:.22em}img{display:block;max-width:100%;height:auto}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:1rem;top:1rem;z-index:100;background:var(--ink);color:var(--paper);padding:.5rem 1rem}.shell{max-width:var(--media-max);margin:0 auto;padding:0 var(--gutter)}.site-header{padding:1.5rem var(--gutter) 0;display:flex;align-items:baseline;justify-content:space-between;max-width:var(--media-max);margin:0 auto;font-family:var(--font-mono);font-size:.8125rem}.site-header .wordmark{color:var(--ink);text-decoration:none;font-weight:500}.site-header nav{display:flex;gap:1.25rem}.site-header nav a{color:var(--muted);text-decoration:none}.site-header nav a[aria-current=page]{color:var(--ink)}main{padding-top:3rem}section+section{margin-top:var(--section-gap)}.block-title{font-family:var(--font-serif);font-weight:400;font-size:1.25rem;letter-spacing:-.01em;margin-bottom:1.25rem;color:var(--muted)}.manifest{font-family:var(--font-mono);font-size:.875rem;line-height:1.65;white-space:pre;overflow-x:auto;padding:0;margin:0;background:transparent;tab-size:2}.manifest+.manifest{margin-top:1.75rem}.receipts{font-family:var(--font-mono);font-size:.75rem;color:var(--muted);margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--rule);display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.receipts .cursor{display:inline-block;width:.55ch;height:1em;background:var(--muted);animation:blink 1.06s steps(1,end) infinite;vertical-align:text-bottom}@keyframes blink{0%,50%{opacity:1}50.01%,to{opacity:0}}@media(prefers-reduced-motion:reduce){.receipts .cursor{animation:none;opacity:1}}.about p{max-width:56ch}.about a.personal-link{color:var(--forest)}.site-footer{max-width:var(--media-max);margin:var(--section-gap) auto 3rem;padding:2rem var(--gutter) 0;border-top:1px solid var(--rule);font-family:var(--font-mono);font-size:.75rem;color:var(--muted);display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem}.site-footer a{color:var(--muted)}.outdoors{display:grid;gap:2rem;margin-top:1.5rem}.outdoors figure{margin:0}.outdoors button.thumb{background:none;border:0;padding:0;cursor:zoom-in;display:block;width:100%}.outdoors figcaption{font-size:.8125rem;color:var(--muted);margin-top:.5rem}dialog.lightbox{border:0;padding:0;max-width:92vw;max-height:92vh;background:var(--paper)}dialog.lightbox::backdrop{background:#0009}.manifest pre,.manifest code{background:transparent!important}.manifest .line{font-family:var(--font-mono)}.manifest span[style*="#005CC5"],.manifest span[style*="#032F62"]{color:var(--syn-string)!important}.manifest span[style*="#22863A"],.manifest span[style*="#6F42C1"]{color:var(--syn-key)!important}.manifest span[style*="#D73A49"]{color:var(--syn-bracket)!important}.manifest span[style*="#6A737D"]{color:var(--syn-comment)!important;font-style:italic}.manifest span[style*="#005cc5"]{color:var(--syn-number)!important}@view-transition{navigation:auto}.boot-console{font-family:var(--font-mono);font-size:.75rem;line-height:1.55;color:var(--muted);margin:0 0 1.5rem;padding:0;white-space:pre;overflow-x:auto;animation:bootFade .55s ease-out forwards;animation-delay:2.5s;opacity:1}.boot-console .line{display:block;animation:typeline .28s ease-out backwards;animation-delay:calc(var(--i, 0) * .35s)}@keyframes bootFade{0%{opacity:1;max-height:200px}to{opacity:0;max-height:0;margin:0}}@keyframes typeline{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}section[aria-label=identity]{position:relative;view-transition-name:hero}section[aria-label=identity] .manifest{position:relative;animation:heroFlash 1s ease-out forwards;animation-delay:5.3s}section[aria-label=identity] .manifest .line{animation:typeline .3s ease-out backwards;animation-delay:calc(3s + var(--i, 0) * .12s)}section[aria-label=identity] .manifest:before{content:"";position:absolute;left:-1rem;right:-1rem;height:2.4em;pointer-events:none;background:linear-gradient(to bottom,transparent 0%,color-mix(in srgb,var(--forest) 0%,transparent) 30%,color-mix(in srgb,var(--forest) 22%,transparent) 50%,color-mix(in srgb,var(--forest) 0%,transparent) 70%,transparent 100%);animation:scanBeam 2.1s ease-out forwards;animation-delay:3s;opacity:0;top:0}@keyframes scanBeam{0%{top:0;opacity:0}10%{opacity:1}90%{opacity:1}to{top:calc(100% - 1em);opacity:0}}@keyframes heroFlash{0%{box-shadow:0 0 color-mix(in srgb,var(--forest) 0%,transparent)}40%{box-shadow:0 0 0 6px color-mix(in srgb,var(--forest) 40%,transparent)}to{box-shadow:0 0 color-mix(in srgb,var(--forest) 0%,transparent)}}.receipts{animation:receiptsIn .7s ease-out backwards;animation-delay:5.6s}@keyframes receiptsIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@supports (animation-timeline: view()){.portfolio-card,section[aria-labelledby=portfolio-heading] article{animation:cardReveal linear both;animation-timeline:view();animation-range:entry 0% cover 25%}}@keyframes cardReveal{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}section[aria-labelledby=portfolio-heading] article{view-transition-name:var(--vt-name, none)}@media(prefers-reduced-motion:reduce){.boot-console,.boot-console .line,section[aria-label=identity] .manifest,section[aria-label=identity] .manifest .line,section[aria-label=identity] .manifest:before,.receipts,.portfolio-card,section[aria-labelledby=portfolio-heading] article{animation:none!important;opacity:1!important;transform:none!important}@view-transition{navigation:none}}
