@font-face{font-family:Geist Mono Local;src:url(/fonts/GeistMono-Regular.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Geist Mono Local;src:url(/fonts/GeistMono-SemiBold.woff2)format("woff2");font-style:normal;font-weight:600;font-display:swap}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#050403;--color-bg-raised:#100900;--color-panel:#160d02;--color-panel-active:#241400;--color-overlay:#050301;--amber-strong:#ffc247;--amber-primary:#ffad24;--amber-hot:#ff8c18;--amber-soft:#d9902b;--amber-muted:#8d5b1d;--amber-dim:#4e3518;--amber-line:#b87920;--cli-blue:#d9902b;--text-primary:#ffd477;--text-secondary:#c18a36;--text-muted:#8a8580;--text-inverse:#160b00;--status-ok:#b6ff54;--status-warning:#ffc247;--status-danger:#ff4c38;--status-info:#78e8c5;--glow-soft:0 0 5px #ff9d1847;--glow-text:0 0 5px #ffad246b;--cli-bg:var(--color-bg);--cli-fg:#e8e4dc;--cli-dim:var(--text-muted);--cli-acc:var(--amber-primary);--cli-alt:var(--amber-strong);--cli-line:#b8792061;--ocean-opacity:.35;--ocean-mask-fade:24%;--ocean-mask-content-start:25%;--ocean-mask-content-end:75%;--ocean-mask-content-strength:45%;--content-text-shadow:0 0 6px #000, 0 0 12px #000;--font-mono:"Geist Mono Local", ui-monospace, monospace}*{box-sizing:border-box;scroll-behavior:smooth}html,body{min-height:100%;margin:0}body{background:var(--cli-bg);color:var(--cli-fg);font-family:var(--font-mono);font-synthesis:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.site-ascii-ocean{z-index:0;width:100%;height:100%;opacity:var(--ocean-opacity);-webkit-mask-image:linear-gradient(to right, #000 0%, #000 calc(var(--ocean-mask-content-start) - var(--ocean-mask-fade)), rgb(0 0 0/var(--ocean-mask-content-strength)) var(--ocean-mask-content-start), rgb(0 0 0/var(--ocean-mask-content-strength)) var(--ocean-mask-content-end), #000 calc(var(--ocean-mask-content-end) + var(--ocean-mask-fade)), #000 100%);-webkit-mask-image:linear-gradient(to right, #000 0%, #000 calc(var(--ocean-mask-content-start) - var(--ocean-mask-fade)), rgb(0 0 0/var(--ocean-mask-content-strength)) var(--ocean-mask-content-start), rgb(0 0 0/var(--ocean-mask-content-strength)) var(--ocean-mask-content-end), #000 calc(var(--ocean-mask-content-end) + var(--ocean-mask-fade)), #000 100%);mask-image:linear-gradient(to right, #000 0%, #000 calc(var(--ocean-mask-content-start) - var(--ocean-mask-fade)), rgb(0 0 0/var(--ocean-mask-content-strength)) var(--ocean-mask-content-start), rgb(0 0 0/var(--ocean-mask-content-strength)) var(--ocean-mask-content-end), #000 calc(var(--ocean-mask-content-end) + var(--ocean-mask-fade)), #000 100%);pointer-events:none;display:block;position:fixed;inset:0}p,h2,h3,dl,dd{margin:0}a{color:var(--cli-alt);text-underline-offset:2px;text-decoration:underline}a:hover{color:#fff0c0;text-shadow:var(--glow-text)}a:focus-visible{outline:2px solid var(--amber-strong);outline-offset:3px}::selection{color:var(--text-inverse);background:var(--amber-primary)}html{background:var(--color-bg);scrollbar-color:var(--amber-muted) var(--color-bg)}.cli-root{z-index:1;overflow-wrap:anywhere;min-height:100vh;text-shadow:var(--content-text-shadow);font-size:14px;line-height:1.9;position:relative}.cli-col{padding:4.5rem 1.5rem 5rem}.cli-col>*{max-width:48rem;margin-left:auto;margin-right:auto}.cli-banner{z-index:1;overflow-wrap:normal;white-space:pre;letter-spacing:-.04em;line-height:1;position:relative}.cli-block{margin-bottom:2.25rem}.cli-dim{color:var(--cli-dim)}.cli-acc{color:var(--cli-acc)}.cli-blu{color:var(--cli-blue)}.cli-b{font-weight:600}.experience-heading{justify-content:space-between;gap:2rem;display:flex}@media (max-width:38rem){.experience-heading{flex-direction:column;align-items:flex-start;gap:.25rem}}.cli-wrap{text-indent:-1.5rem;white-space:pre-wrap;padding-left:1.5rem}.indent{padding-left:2ch}.about-summary{margin-top:1.5rem}.cli-rule{color:var(--cli-dim);font-size:inherit;align-items:center;gap:.6rem;margin-bottom:.9rem;font-weight:400;display:flex}.cli-rule:after{background:var(--cli-line);content:"";flex:1;height:1px}.project+.project{margin-top:1.9em}.project h3{font-size:inherit}.project-heading{justify-content:space-between;align-items:baseline;gap:2rem;display:flex}.project-heading h3{min-width:0}.project-heading>span{color:var(--cli-dim);text-align:right;flex-shrink:1}.project-subtitle{color:color-mix(in srgb, var(--cli-fg) 78%, var(--cli-bg))}@media (max-width:38rem){.project-heading{flex-direction:column;align-items:flex-start;gap:.25rem}.project-heading>span{text-align:left}}.project a:hover{text-shadow:none}.project-bullets{color:var(--cli-fg);gap:.35rem;margin:.9rem 0 0 2ch;padding-left:1.5ch;line-height:1.5;display:grid}.project-bullets li::marker{color:var(--amber-primary)}.lastfm-section{gap:2.25rem;display:grid}.lastfm-list{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.lastfm-track{grid-template-columns:2.25rem minmax(0,1fr) auto;align-items:center;gap:.65rem;display:grid}.lastfm-track-main{min-width:0}.lastfm-track-cover{aspect-ratio:1;object-fit:cover;width:2.25rem;display:block}.lastfm-track-cover-empty{background:var(--color-panel)}.lastfm-title{color:var(--amber-strong);text-decoration:none}.lastfm-title:hover{text-shadow:none;text-decoration:underline}.lastfm-meta{color:var(--text-muted)}.lastfm-artist{color:inherit;text-decoration:none}.lastfm-artist:hover{color:color-mix(in srgb, var(--text-muted) 75%, white);text-shadow:none;text-decoration:underline}.lastfm-now-playing{color:var(--amber-primary)}.lastfm-album-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;margin:0;padding:0;list-style:none;display:grid}.lastfm-album-tile{aspect-ratio:1;min-width:0;color:inherit;text-decoration:none;display:block;position:relative;overflow:hidden}.lastfm-album-tile:hover{text-shadow:none}.lastfm-album-cover{object-fit:cover;width:100%;height:100%;display:block}.lastfm-album-cover-empty{background:var(--color-panel)}.lastfm-album-overlay{background:color-mix(in srgb, var(--color-bg) 88%, transparent);color:var(--text-primary);text-align:center;opacity:0;flex-direction:column;justify-content:center;align-items:center;gap:.25rem;padding:.5rem;transition:opacity .14s;display:flex;position:absolute;inset:0}.lastfm-album-tile:hover .lastfm-album-overlay,.lastfm-album-tile:focus-visible .lastfm-album-overlay{opacity:1}.lastfm-album-title,.lastfm-album-artist,.lastfm-album-plays{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.lastfm-album-title{color:var(--amber-strong);font-weight:600}.lastfm-album-artist,.lastfm-album-plays{color:var(--cli-fg);font-size:.9em}.lastfm-album-tile:focus-visible{outline:2px solid var(--amber-strong);outline-offset:2px}@media (prefers-reduced-motion:reduce){.lastfm-album-overlay{transition:none}}.cli-footer{border-top:1px solid var(--cli-line);justify-content:space-between;align-items:center;gap:1rem;margin-top:3rem;padding-top:1rem;display:flex}.cli-footer-copyright{color:var(--cli-dim)}.cli-footer a{color:var(--cli-acc);text-decoration:none}.language-toggle{color:var(--cli-acc);font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.language-toggle:hover{color:#fff0c0;text-shadow:var(--glow-text)}.language-toggle:focus-visible{outline:2px solid var(--amber-strong);outline-offset:3px}.cli-footer a:hover{text-shadow:none;text-decoration:underline}.stack-list{margin:0;padding-left:2ch;list-style:none}.stack-list li{position:relative}.stack-list li:before{color:var(--amber-primary);content:"●";font-size:1em;font-weight:600;position:absolute;left:-2ch}.stack-label{width:12ch;color:var(--cli-dim);display:inline-block}@media (max-width:720px){.cli-root{font-size:12px}.cli-col{padding:2.5rem 1rem 3rem}}
