@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:300 600;font-display:swap;src:url(/fonts/jetbrains-mono-latin.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{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d1117;--bg-soft:#161b22;--bg-raise:#1c2129;--border:#30363d;--fg:#c9d1d9;--fg-dim:#8b949e;--fg-faint:#8b949e;--green:#3fb950;--green-dim:#2ea043;--grid-line:#ffffff06;--dot-base:#ffffff14;--dot-bright:var(--green);--amber:#d29922;--red:#f85149;--mono:"JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--btn-fg:#04260f;--vignette-opacity:.6;--sel-bg:#3fb95059}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--bg-soft:#f6f8fa;--bg-raise:#eff2f5;--border:#d0d7de;--fg:#1f2328;--fg-dim:#59636e;--fg-faint:#59636e;--green:#1a7f37;--green-dim:#116329;--amber:#9a6700;--red:#cf222e;--grid-line:#0000000d;--dot-base:#00000021;--dot-bright:var(--green);--btn-fg:#fff;--vignette-opacity:.3;--sel-bg:#1a7f3740}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);font-family:var(--mono);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.65}::selection{background:var(--sel-bg)}a{color:inherit;text-decoration:none}a:hover{color:var(--green)}h1,h2,h3{letter-spacing:-.02em;margin:0;font-weight:600}.container{max-width:1000px;margin:0 auto;padding:0 24px}.dollar{color:var(--green)}.dim{color:var(--fg-dim)}.ok,.accent{color:var(--green)}#root{z-index:1;position:relative}.dot-background{z-index:-1;pointer-events:none;--mx:50vw;--my:50vh;--torch-radius:220px;position:fixed;inset:0}.dot-background>div{position:absolute;inset:0}.bg-grid{background-image:linear-gradient(to right, var(--grid-line) 1px, transparent 1px), linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px);background-position:-1px -1px;background-size:96px 96px}.bg-dots-base{background-image:radial-gradient(circle, var(--dot-base) 1px, transparent 1.4px);background-size:24px 24px}.bg-dots-torch{background-image:radial-gradient(circle, var(--dot-bright) 1.4px, transparent 1.8px);opacity:.95;-webkit-mask-image:radial-gradient(circle var(--torch-radius) at var(--mx) var(--my), #000 0%, #000000a6 35%, transparent 75%);-webkit-mask-image:radial-gradient(circle var(--torch-radius) at var(--mx) var(--my), #000 0%, #000000a6 35%, transparent 75%);mask-image:radial-gradient(circle var(--torch-radius) at var(--mx) var(--my), #000 0%, #000000a6 35%, transparent 75%);background-size:24px 24px}.bg-vignette{background:radial-gradient(ellipse at top, transparent 0%, var(--bg) 75%);opacity:var(--vignette-opacity)}@supports not ((-webkit-mask-image:radial-gradient(circle, #000, transparent)) or (mask-image:radial-gradient(circle, #000, transparent))){.bg-dots-torch{display:none}}.caret{vertical-align:-10%;background:var(--green);width:.55ch;height:1em;margin-left:.25rem;animation:1.1s steps(2,end) infinite blink;display:inline-block}@keyframes blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.dot{background:var(--green);border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block;position:relative}.dot:after{content:"";border-radius:inherit;background:inherit;animation:2.2s ease-out infinite pulse;position:absolute;inset:0}@keyframes pulse{0%{opacity:.5;transform:scale(1)}60%,to{opacity:0;transform:scale(2.5)}}[data-reveal]{opacity:0;transition:opacity .55s ease-out,transform .55s ease-out;transform:translateY(12px)}[data-reveal].is-in{opacity:1;transform:none}.topbar{z-index:50;background:color-mix(in oklab, var(--bg) 78%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0}.topbar-inner{flex-wrap:wrap;align-items:center;gap:20px;min-height:56px;display:flex}.brand{color:var(--fg);align-items:center;font-weight:600;display:inline-flex}.brand:hover{color:var(--fg)}.brand-tld{margin-left:5px;font-weight:400}.nav-links{gap:22px;margin:0 auto;display:flex}.nav-links a{color:var(--fg-dim)}.nav-links a .tilde{color:var(--fg-faint)}.nav-links a:hover{color:var(--fg)}.nav-links a.active{color:var(--green)}.theme-toggle{border:1px solid var(--border);width:36px;height:36px;color:var(--fg-dim);cursor:pointer;background:0 0;border-radius:10px;justify-content:center;align-items:center;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.theme-toggle:hover{color:var(--green);border-color:var(--green-dim);background:var(--bg-raise)}.pill{border:1px solid var(--green-dim);color:var(--green);border-radius:999px;align-items:center;padding:2px 10px;font-size:12px;display:inline-flex}.pill .dot{width:7px;height:7px;margin-right:6px}.hero{padding:96px 24px 72px}.hero-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:start;gap:44px;display:grid}@media (max-width:940px){.hero-grid{grid-template-columns:1fr}}.status-line{color:var(--fg-dim);margin:0 0 8px;font-size:13px}.big{letter-spacing:-.04em;margin:14px 0 6px;font-size:clamp(2.5rem,6vw,4.5rem);font-weight:500;line-height:1.02}.hero-copy .dollar{color:var(--fg-faint);font-weight:300}.role{color:var(--green);margin:0 0 20px;font-size:clamp(1rem,2.2vw,1.25rem)}.lead{color:var(--fg-dim);max-width:640px;margin:0 0 28px}.cta-row{flex-wrap:wrap;gap:14px;margin-bottom:44px;display:flex}.btn{background:var(--green);color:var(--btn-fg);border:1px solid var(--green);cursor:pointer;border-radius:8px;padding:10px 18px;font-family:inherit;font-size:14px;font-weight:600;transition:transform .15s,background .15s;display:inline-block}.btn:active{transform:scale(.97)}.btn.ghost{color:var(--fg);border-color:var(--border);background:0 0}@media (hover:hover) and (pointer:fine){.btn:hover{background:var(--green-dim);color:var(--btn-fg);transform:translateY(-1px)}.btn.ghost:hover{border-color:var(--fg-dim);color:var(--fg);background:var(--bg-raise)}}.term{border:1px solid var(--border);background:var(--bg-soft);border-radius:10px;flex-direction:column;width:100%;max-width:640px;height:400px;display:flex;position:relative;overflow:hidden}.term:before{content:"";pointer-events:none;background-image:linear-gradient(var(--green-dim), var(--green-dim)), linear-gradient(var(--green-dim), var(--green-dim)), linear-gradient(var(--green-dim), var(--green-dim)), linear-gradient(var(--green-dim), var(--green-dim)), linear-gradient(var(--green-dim), var(--green-dim)), linear-gradient(var(--green-dim), var(--green-dim)), linear-gradient(var(--green-dim), var(--green-dim)), linear-gradient(var(--green-dim), var(--green-dim));background-position:0 0,0 0,100% 0,100% 0,0 100%,0 100%,100% 100%,100% 100%;background-repeat:no-repeat;background-size:16px 2px,2px 16px,16px 2px,2px 16px,16px 2px,2px 16px,16px 2px,2px 16px;position:absolute;inset:2px}.term-head{background:var(--bg-raise);border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 14px;display:flex}.term-dots{gap:6px;display:flex}.term-dots i{border-radius:50%;width:10px;height:10px;display:block}.term-dots i:first-child{background:var(--red)}.term-dots i:nth-child(2){background:var(--amber)}.term-dots i:nth-child(3){background:var(--green)}.term-title{color:var(--fg-dim);font-size:13px}.term-ready{color:var(--green);margin-left:auto;font-size:12px}.term-ready:before{content:"● "}.term-ready.busy{color:var(--amber)}.term-body{flex-direction:column;flex:1;min-height:0;padding:14px;font-size:13.5px;display:flex}.term-log{scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex:1;min-height:0;padding-right:6px;overflow-y:auto}.term-log::-webkit-scrollbar{width:6px}.term-log::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.line{margin:0 0 8px}.line.sys{color:var(--fg-faint)}.line.q{color:var(--fg)}.line.a{color:var(--fg-dim)}@keyframes line-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.line.pop{animation:.22s ease-out both line-in}.prompt{color:var(--green);margin-right:8px}.chips{border-top:1px dashed var(--border);flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px;display:flex}.chip{background:var(--bg-raise);border:1px solid var(--border);color:var(--fg-dim);cursor:pointer;border-radius:6px;padding:3px 10px;font-family:inherit;font-size:12px;transition:color .15s,border-color .15s}.chip:hover{color:var(--green);border-color:var(--green-dim)}.prompt-row{border:1px solid var(--border);background:var(--bg);border-radius:8px;align-items:center;margin-top:10px;padding:8px 12px;transition:border-color .15s;display:flex}.prompt-row:focus-within{border-color:var(--green-dim)}.prompt-row input{min-width:0;color:var(--fg);caret-color:var(--green);background:0 0;border:none;outline:none;flex:1;padding:0;font-family:inherit;font-size:13.5px}.prompt-row input::placeholder{color:var(--fg-faint)}.send{border:1px solid var(--border);color:var(--fg-dim);cursor:pointer;background:0 0;border-radius:6px;margin-left:auto;padding:3px 10px;font-family:inherit;font-size:12px;transition:color .15s,border-color .15s}.send:hover{color:var(--green);border-color:var(--green-dim)}.chip:disabled,.send:disabled{opacity:.45;cursor:default}.section{padding:72px 24px;scroll-margin-top:70px}.sec-head{margin-bottom:32px}.sec-head h2{margin:6px 0;font-size:clamp(1.4rem,3vw,1.8rem)}.sec-head p{margin:0;font-size:13px}.pcards{scroll-snap-type:x proximity;scrollbar-color:var(--fg-faint) var(--bg-soft);gap:24px;margin-top:8px;padding:8px 4px 24px;scroll-padding-inline:4px;display:flex;overflow-x:auto}.project-slide{scroll-snap-align:start;flex:0 0 min(340px,85%);min-width:0;display:flex}.project-controls{justify-content:flex-end;gap:12px;margin-bottom:16px;display:flex}.pcards:focus-visible,.project-controls button:focus-visible{outline:2px solid var(--green);outline-offset:3px}.pcard{overflow-wrap:anywhere;border:1px solid var(--border);background:var(--bg-soft);border-radius:12px;flex-direction:column;flex:1;min-width:0;padding:20px;transition:border-color .2s,transform .2s,background .2s;display:flex}.pcard:hover{border-color:var(--green-dim);background:var(--bg-raise);transform:translateY(-2px)}.pnum{color:var(--green);font-size:13px}.ptitle{margin:10px 0 2px;font-size:1.15rem}.plink{color:var(--fg-dim);text-underline-offset:3px;margin-left:8px;text-decoration:underline}.plink:hover{color:var(--green)}.pmeta{margin:0 0 10px;font-size:12.5px}.pdesc{color:var(--fg-dim);margin:0}.pstats{color:var(--green);margin:12px 0 0;font-size:12.5px}.pdim{font-size:12.5px}.pcard-foot{border-top:1px dashed var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:auto;padding-top:12px;font-size:12.5px;display:flex}.pcard-action{min-height:44px;color:var(--green);white-space:nowrap;align-items:center;margin:-8px -8px -8px auto;padding:8px;font-weight:600;display:inline-flex}.pcard-action:hover{color:var(--fg);text-underline-offset:4px;text-decoration:underline}.pcard-action:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:6px}.sec-foot{margin-top:24px;font-size:14px}.sec-foot.split{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.sec-foot a:hover{color:var(--fg)}.crumb{letter-spacing:.04em;font-size:13px}.about-grid{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:48px;margin-top:8px;display:grid}.about-copy{overflow-wrap:anywhere;min-width:0}.about-handle{margin:12px 0 22px;font-size:14px}.about-rows{margin:26px 0 0;padding:0;list-style:none}.about-rows li{border-bottom:1px solid var(--border);align-items:baseline;gap:16px;padding:12px 0;font-size:14px;display:flex}.about-rows li>span:last-child{overflow-wrap:anywhere;min-width:0}.about-rows .k{flex-shrink:0;width:110px}.photo-card{border:1px solid var(--green-dim);background:var(--bg-soft);width:100%;min-width:0;max-width:360px;box-shadow:0 0 40px color-mix(in srgb, var(--green) 12%, transparent);border-radius:14px;padding:10px;position:relative}.photo-badge{background:var(--green);color:var(--btn-fg);border-radius:999px;padding:4px 12px;font-size:12px;font-weight:600;position:absolute;top:-13px;right:16px}.photo-card img{aspect-ratio:4/5;object-fit:cover;border-radius:8px;width:100%;display:block}.photo-placeholder{aspect-ratio:4/5;border:1px dashed var(--border);border-radius:8px;flex-direction:column;justify-content:center;gap:8px;padding:20px;font-size:12.5px;display:flex}.photo-placeholder p{margin:0}.photo-ascii{color:var(--green);opacity:.5;font-size:40px}.contact-grid{grid-template-columns:1fr 1fr;align-items:start;gap:48px;display:grid}.klist{gap:10px;margin:22px 0 0;padding:0;list-style:none;display:grid}.klist li{font-size:13.5px}.k{min-width:92px;display:inline-block}.cform label{color:var(--fg-dim);gap:6px;margin-bottom:14px;font-size:12.5px;display:grid}.cform input,.cform textarea{background:var(--bg-soft);border:1px solid var(--border);color:var(--fg);border-radius:8px;outline:none;padding:10px 12px;font-family:inherit;font-size:14px;transition:border-color .15s}.cform input:focus,.cform textarea:focus{border-color:var(--green-dim)}.small{font-size:12px}.sent{border:1px dashed var(--green-dim);border-radius:8px;margin-top:4px;padding:24px}.footer{border-top:1px solid var(--border);margin-top:40px;padding:20px 0 44px}.foot-inner{flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:13px;display:flex}.foot-links{gap:14px;display:flex}.foot-links a:hover{color:var(--fg)}@media (max-width:940px){.about-grid{grid-template-columns:minmax(0,1fr);gap:36px}.about-grid .photo-card{justify-self:center}}@media (max-width:480px){#about{padding:40px 20px}.about-rows li{flex-direction:column;align-items:flex-start;gap:4px}}@media (max-width:720px){.contact-grid{grid-template-columns:1fr}.nav-links{flex-wrap:wrap;order:3;justify-content:center;gap:0 16px;width:100%;padding-bottom:8px}.nav-links a{align-items:center;min-height:44px;display:inline-flex}.theme-toggle{width:44px;height:44px;margin-left:auto}}@media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transition:none;transform:none}.caret,.dot:after{animation:none}.bg-dots-torch{display:none}.line.pop{animation:none}html{scroll-behavior:auto}}@media (hover:none),(pointer:coarse){.bg-dots-torch{display:none}}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--green);outline-offset:4px}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--bg-soft);padding:12px 16px;position:fixed;top:8px;left:8px;transform:translateY(-160%)}.skip-link:focus{transform:none}.btn,.chip,.send,.theme-toggle{min-height:44px}.theme-toggle{min-width:44px}.chip,.send{padding:8px 12px}.btn:disabled{opacity:.45;cursor:default;transform:none}.lead,.pdesc{font-size:16px;line-height:1.75}.pcard-foot{margin-top:auto;padding-top:16px}.project-spotlight{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:32px;margin:0 0 40px;display:grid}.project-spotlight img{border-radius:8px;width:100%;height:auto;display:block}.project-spotlight figcaption{min-width:0}.project-spotlight h3{font-size:1.4rem}.project-spotlight p{margin:12px 0 20px}@media (max-width:720px){.project-spotlight{grid-template-columns:minmax(0,1fr);gap:16px}}.about-text-only{grid-template-columns:minmax(0,1fr);max-width:720px;margin-inline:auto}.contact-title{margin-bottom:24px;font-size:clamp(1.6rem,3.4vw,2.2rem);line-height:1.2}.cinfo,.cform{overflow-wrap:anywhere;min-width:0}.cform fieldset{border:0;min-width:0;margin:0;padding:0}.cform input,.cform textarea{width:100%;min-height:44px;font-size:16px}.cform input::placeholder,.cform textarea::placeholder{color:var(--fg-dim);opacity:1}.cform textarea{resize:vertical}.captcha-wrap{margin:18px 0}.form-notice{margin-bottom:12px;padding:12px 0}.form-notice p{margin:0}.form-notice [role=alert]{color:var(--fg)}.cform .small a{text-underline-offset:3px;text-decoration:underline}@media (max-width:720px){.hero{padding:48px 20px 32px}.hero-grid{gap:24px}.cta-row{margin-bottom:0}.topbar-inner{gap:8px 20px}.term{height:380px}.prompt-row input{font-size:16px}.section{padding-block:48px;scroll-margin-top:150px}.contact-grid{gap:24px}}
