:root{--bg:#1f8a4d;--panel:#17713f;--code-bg:#15693a;--text:#dcd8a4;--text-h:#fff6c2;--border:#fff6c24d;--accent:#ffd23f;--on-accent:#1c1500;--item-0:#5c9eff;--item-1:#ffd23f;--item-2:#ff6ac1;--item-3:#5af78e;--item-4:#5ad4e6;--item-5:#c9a06a;--item-6:#b8e62d;--item-7:#ff9ec4;--item-8:#8fd0ff;--item-9:#2fd6b6;--item-10:#ff9f45;--item-forced:#c08bff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ansi-0:#000;--ansi-8:#666;--ansi-1:#900;--ansi-9:#e50000;--ansi-2:#00a600;--ansi-10:#00d900;--ansi-3:#990;--ansi-11:#e5e500;--ansi-4:#0000b2;--ansi-12:#00f;--ansi-5:#b200b2;--ansi-13:#e500e5;--ansi-6:#00a6b2;--ansi-14:#00e5e5;--ansi-7:#bfbfbf;--ansi-15:#e5e5e5;--ansi-ui-red:var(--ansi-9);--ansi-ui-green:var(--ansi-10);--ansi-ui-yellow:var(--ansi-11);--ansi-ui-blue:var(--ansi-12);--ansi-ui-magenta:var(--ansi-13);--ansi-ui-cyan:var(--ansi-14);--ansi-ui-text:var(--ansi-15);--ansi-ui-dim:var(--ansi-7);--ansi-ui-inverse:var(--ansi-0)}[data-theme=man-page],[data-theme=novel],[data-theme=silver-aerogel],[data-theme=basic],[data-theme=lvucodes]{--ansi-ui-red:var(--ansi-1);--ansi-ui-green:var(--ansi-2);--ansi-ui-yellow:var(--ansi-3);--ansi-ui-blue:var(--ansi-4);--ansi-ui-magenta:var(--ansi-5);--ansi-ui-cyan:var(--ansi-6);--ansi-ui-text:var(--ansi-0);--ansi-ui-dim:var(--ansi-8);--ansi-ui-inverse:var(--ansi-7)}:root[data-ansi-mode=dark]{--ansi-ui-red:var(--ansi-9);--ansi-ui-green:var(--ansi-10);--ansi-ui-yellow:var(--ansi-11);--ansi-ui-blue:var(--ansi-12);--ansi-ui-magenta:var(--ansi-13);--ansi-ui-cyan:var(--ansi-14);--ansi-ui-text:var(--ansi-15);--ansi-ui-dim:var(--ansi-7);--ansi-ui-inverse:var(--ansi-0)}:root[data-ansi-mode=light]{--ansi-ui-red:var(--ansi-1);--ansi-ui-green:var(--ansi-2);--ansi-ui-yellow:var(--ansi-3);--ansi-ui-blue:var(--ansi-4);--ansi-ui-magenta:var(--ansi-5);--ansi-ui-cyan:var(--ansi-6);--ansi-ui-text:var(--ansi-0);--ansi-ui-dim:var(--ansi-8);--ansi-ui-inverse:var(--ansi-7)}[data-theme=homebrew]{--bg:#000;--panel:#0c1a0c;--code-bg:#0f230f;--text:#1fb43a;--text-h:#39ff5a;--border:#39ff5a4d;--accent:#39ff5a}[data-theme=pro]{--bg:#000;--panel:#161616;--code-bg:#1d1d1d;--text:#c8c8c8;--text-h:#fff;--border:#ffffff38;--accent:#4aa3ff}[data-theme=ocean]{--bg:#224fbc;--panel:#1b429e;--code-bg:#173887;--text:#d4dfff;--text-h:#fff;--border:#ffffff4d;--accent:#38c6e8;--on-accent:#06283d}[data-theme=red-sands]{--bg:#7a251e;--panel:#641d18;--code-bg:#551813;--text:#f3d3ab;--text-h:#fff;--border:#ffffff47;--accent:#ffce54}[data-theme=man-page]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4e8c8;--panel:#ecdcb0;--code-bg:#e5d29c;--text:#4a3b22;--text-h:#1f1809;--border:#1f180947;--accent:#9a5b00;--on-accent:#fff}[data-theme=novel]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#dfdbc3;--panel:#d2ccae;--code-bg:#cac3a1;--text:#4b3a2a;--text-h:#1c130a;--border:#1c130a47;--accent:#7a4a1f;--on-accent:#fff}[data-theme=silver-aerogel]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#bcbcbc;--panel:#adadad;--code-bg:#a3a3a3;--text:#2a2a2a;--text-h:#000;--border:#00000040;--accent:#1565c0;--on-accent:#fff}[data-theme=basic]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--panel:#f0f0f0;--code-bg:#eaeaea;--text:#444;--text-h:#000;--border:#0003;--accent:#1565c0;--on-accent:#fff}[data-theme=lvucodes]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5f8ff;--panel:#e6eeff;--code-bg:#d9e5ff;--text:#41464f;--text-h:#1a1d24;--border:#1a1d2433;--accent:#0957fe;--on-accent:#fff}[data-theme=man-page],[data-theme=novel],[data-theme=silver-aerogel],[data-theme=basic],[data-theme=lvucodes]{--item-0:#1565c0;--item-1:#8a6d00;--item-2:#c2185b;--item-3:#1f8a3b;--item-4:#0e7c8a;--item-5:#8a5a2b;--item-6:#5a8a00;--item-7:#b5497f;--item-8:#1d74d8;--item-9:#0a8f78;--item-10:#b35c00;--item-forced:#7b1fa2}*{caret-color:#0000}input,textarea,select,[contenteditable]{caret-color:auto}:root{--purple:var(--accent);--purple-light:color-mix(in srgb, var(--accent) 12%, var(--bg));--text-faint:color-mix(in srgb, var(--text) 60%, var(--bg));--shadow:0 2px 2px #0000000a, 0 4px 12px #0000000d;--font-sans:"Atkinson Hyperlegible Next", "B612", "IBM Plex Sans", "Lexend", "Libertinus Sans", "Noto Sans", "Oxygen", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, sans-serif;--font-serif:"Atkinson Hyperlegible Next", "B612", "IBM Plex Serif", "Libertinus Serif", "Noto Serif", Georgia, "Times New Roman", serif;--font-mono:"Atkinson Hyperlegible Mono", "B612 Mono", "IBM Plex Mono", "Libertinus Mono", "Noto Sans Mono", "Nova Mono", "Oxygen Mono", ui-monospace, SFMono-Regular, Menlo, monospace;color:var(--text-h);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg)}body{font-family:var(--font-sans);background:radial-gradient(1100px 520px at 50% -10%, color-mix(in srgb, var(--purple) 16%, transparent) 0%, transparent 62%), var(--bg);color:var(--text-h);background-attachment:fixed;margin:0;line-height:1.55}#root{flex-direction:column;width:min(80%,1400px);min-height:100svh;margin:0 auto;display:flex}@media (width<=640px){#root{width:auto;margin:0 16px}}a{color:var(--purple);border-radius:6px;padding:0 2px;text-decoration:underline}a:hover{background-color:var(--purple-light);text-decoration:underline}h1,h2,h3{color:var(--text-h);font-weight:800}h1{letter-spacing:-.02em;margin:0 0 6px;font-size:clamp(2.4rem,6vw,3.4rem)}h2{letter-spacing:-.01em;margin:0 0 12px;font-size:1.6rem}h3{margin:0 0 6px;font-size:1.1rem;font-weight:700}p{margin:0}code{font-family:var(--font-mono);background:color-mix(in srgb, var(--purple) 10%, transparent);border-radius:6px;padding:2px 6px;font-size:.88em}.nav{justify-content:space-between;align-items:center;margin:18px 0;display:flex}.nav .brand{font-family:var(--font-mono);color:var(--text-h);letter-spacing:-.3px;padding:0 8px;font-size:1.05rem;font-weight:700;text-decoration:none}.nav .brand:hover{background-color:var(--purple-light)}.nav nav{gap:24px;display:flex}.nav nav a{color:var(--text);padding:0 8px;font-size:.98rem;text-decoration:none;transition:background .12s}.nav nav a:hover{color:var(--purple)}@media (width<=640px){.nav nav{gap:16px}}main{flex-grow:1}.about{text-align:center;margin:44px auto}.about .tagline{color:var(--text);margin:0 auto 6px;font-size:clamp(1.2rem,3vw,1.7rem)}.about .bio{color:var(--text-faint);max-width:52ch;margin:12px auto 0;font-size:1rem}.projects{margin:40px auto}.projects h2{text-align:center}.projects .section-lead{text-align:center;color:var(--text-faint);max-width:50ch;margin:0 auto 34px}.projects .grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}@media (width<=1024px){.projects .grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=480px){.projects .grid{grid-template-columns:1fr}}.projects .grid li{display:flex}.projects .card{background:var(--panel);border:1px solid var(--border);width:100%;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;padding:22px;text-decoration:none;transition:transform .12s,border-color .2s;display:flex}.projects .card:hover{background:var(--panel);border-color:color-mix(in srgb, var(--purple) 40%, var(--border));text-decoration:none;transform:translateY(-2px)}.projects .project-name{color:var(--text-h);margin-bottom:6px;font-size:1.1rem;font-weight:700;display:block}.projects .project-blurb{color:var(--text);font-size:.92rem;display:block}.footer{text-align:center;color:var(--text-faint);border-top:2px solid var(--border);margin-top:32px;padding:24px 0 40px;font-size:.88rem}.footer .theme-row{justify-content:center;margin-bottom:16px;display:flex}.theme-bar{color:var(--text);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin:0 0 18px;font-size:.85rem;display:flex}.theme-btn{border:1px solid var(--border);background:var(--code-bg);color:var(--text-h);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:.82rem}.theme-btn:hover{filter:brightness(1.12)}.theme-btn.active{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:500}
