:root{--bg:#111017;--surface:#1a1823;--surface-2:#221f2e;--border:#2f2b3f;--text:#ecebf3;--muted:#a7a3b8;--accent:#b3a6ff;--accent-ink:#15122a;--ok:#7fd686;--warn:#ffc266;--code-bg:#0b0a10;--radius:12px;--mono:ui-monospace, "Cascadia Code", "Cascadia Mono", Consolas, "SFMono-Regular", Menlo, monospace;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}@media (prefers-color-scheme:light){:root{--bg:#faf9fc;--surface:#fff;--surface-2:#f2f0f8;--border:#dcd8e8;--text:#1b1928;--muted:#5d5874;--accent:#5a48c8;--accent-ink:#fff;--ok:#1f7a32;--warn:#8a5a00;--code-bg:#f2f0f8}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:16px/1.65 var(--sans);margin:0}a{color:var(--accent);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.wrap{width:100%;max-width:760px;margin:0 auto;padding:0 20px}.skip{position:absolute;left:-9999px}.skip:focus{background:var(--surface);z-index:10;padding:8px 12px;top:12px;left:12px}.top{justify-content:space-between;align-items:center;padding-top:22px;padding-bottom:22px;display:flex}.brand{color:var(--text);letter-spacing:.02em;font-size:1.15rem;font-weight:700;text-decoration:none}.lang{color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:4px 10px;font-size:.9rem;text-decoration:none}.lang:hover{color:var(--text);border-color:var(--accent)}.hero{padding:40px 0 24px}.hero h1{letter-spacing:-.02em;margin:0 0 12px;font-size:clamp(2.2rem,6vw,3.2rem);line-height:1.1}.lead{color:var(--muted);max-width:60ch;margin:0 0 8px;font-size:1.15rem}.section-h{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:40px 0 14px;font-size:.8rem;font-weight:600}.project{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:18px;padding:24px}.project-head{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.project-head h3{letter-spacing:-.01em;margin:0;font-size:1.45rem}.project-summary{color:var(--muted);margin:8px 0 18px}.badge{border:1px solid;border-radius:999px;padding:2px 9px;font-size:.75rem;font-weight:600}.badge-active{color:var(--ok)}.badge-dev{color:var(--warn)}.badge-archived{color:var(--muted)}.cmd{margin:0 0 18px}.cmd-row{background:var(--code-bg);border:1px solid var(--border);border-radius:10px;align-items:center;gap:10px;padding:10px 10px 10px 14px;display:flex}.cmd-prompt{font-family:var(--mono);color:var(--muted);user-select:none}.cmd-text{font-family:var(--mono);white-space:nowrap;flex:1;min-width:0;font-size:1rem;overflow-x:auto}.cmd-btn{font:600 .9rem var(--sans);background:var(--accent);color:var(--accent-ink);cursor:pointer;border:0;border-radius:8px;flex-shrink:0;padding:8px 14px}.cmd-btn:hover{filter:brightness(1.08)}.cmd-status{min-height:1.2em;color:var(--ok);margin:6px 0 0;font-size:.85rem}.cmd-note{color:var(--muted);margin:2px 0 0;font-size:.92rem}.prose p{margin:0 0 12px}.prose code{font-family:var(--mono);background:var(--surface-2);border-radius:5px;padding:1px 6px;font-size:.92em}.prose pre{background:var(--code-bg);border:1px solid var(--border);border-radius:10px;padding:14px;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose img{border-radius:8px;max-width:100%;height:auto}.prose h2,.prose h3{margin:28px 0 10px;line-height:1.3}.prose ul,.prose ol{padding-left:1.3em}.links{flex-wrap:wrap;gap:8px 18px;margin:14px 0 0;padding:0;list-style:none;display:flex}.links a{font-weight:600}.notes{margin:0;padding:0;list-style:none}.notes li{border-bottom:1px solid var(--border);padding:14px 0}.notes li a{font-size:1.05rem;font-weight:600}.notes time{color:var(--muted);font-size:.85rem;display:block}.notes p{color:var(--muted);margin:4px 0 0}.note h1{margin:8px 0;font-size:clamp(1.8rem,5vw,2.4rem);line-height:1.2}.note .meta{color:var(--muted);margin:0 0 24px;font-size:.9rem}.back{margin:16px 0 0}.foot{color:var(--muted);border-top:1px solid var(--border);justify-content:space-between;gap:18px;margin-top:40px;padding-top:40px;padding-bottom:40px;font-size:.88rem;display:flex}.foot a{color:var(--muted)}@media (width<=520px){.project{padding:18px}.cmd-row{flex-wrap:wrap}.cmd-text{flex-basis:calc(100% - 50px)}.cmd-btn{width:100%}}.prose table{border-collapse:collapse;max-width:100%;margin:4px 0 18px;font-size:.92rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);text-align:left;vertical-align:top;min-width:160px;padding:8px 10px}.prose th{background:var(--surface-2);font-weight:600}.prose td:empty{background:0 0}
