:root{--paper:#faf6f4;--card:#ffffff;--ink:#221b1d;--ink-soft:#6a5a5e;--rule:#e8dcd9;--accent:#8c2233;--accent-strong:#6e1727}@media(prefers-color-scheme:dark){:root{--paper:#1e191b;--card:#292225;--ink:#efe8e6;--ink-soft:#a89a9d;--rule:#3d3236;--accent:#d9646f;--accent-strong:#e8828b}}*{box-sizing:border-box}html{font-size:17px}body{margin:0;background:var(--paper);color:var(--ink);font-family:ui-rounded,sf pro rounded,-apple-system,segoe ui,sans-serif;line-height:1.6}a{color:var(--accent)}.wrap{max-width:52rem;margin:0 auto;padding:0 1.25rem 3rem}.site-head{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:saturate(160%)blur(10px);backdrop-filter:saturate(160%)blur(10px);border-bottom:1px solid var(--rule)}.site-head-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;max-width:52rem;margin:0 auto;padding:.8rem 1.25rem}.brand{text-decoration:none;color:var(--ink)}.brand-mark{width:22px;height:22px;border-radius:50%;margin-right:.45rem;vertical-align:-.35rem}.brand-name{font-weight:700}.site-nav a{color:var(--ink-soft);text-decoration:none;margin-left:.9rem}.site-nav a:hover{color:var(--accent)}a:hover{color:var(--accent-strong)}.site-foot{max-width:52rem;margin:0 auto;padding:1.5rem 1.25rem 2.5rem;border-top:1px solid var(--rule)}.fine{color:var(--ink-soft);font-size:.85rem;margin:.2rem 0}.fine a{color:inherit}.hero{padding:2.6rem 0 1.4rem}.hero--id{display:flex;align-items:center;gap:1.2rem;padding:2.4rem 0 1.6rem}.hero-avatar{width:88px;height:88px;border-radius:50%;flex:none;box-shadow:0 0 0 1px var(--rule)}.hero-title{font-size:2rem;margin:0;letter-spacing:.01em;line-height:1.15}.hero-tagline{color:var(--ink-soft);margin:.25rem 0 0;font-size:1.05rem}.hero-lede{max-width:38rem;margin:0 0 1.2rem}.block{padding:1.4rem 0 .4rem;border-top:1px solid var(--rule)}.block h2{font-size:1.15rem;margin:0 0 .5rem;display:flex;align-items:center;gap:.5rem}.block h2 .icon{color:var(--accent);flex:none}.section-lede{color:var(--ink-soft);margin:0 0 .8rem;font-size:.92rem}.linkrow{list-style:none;margin:.2rem 0 .5rem;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}.linkrow li{font-size:.9rem}.linkrow a{display:inline-block;text-decoration:none;color:var(--ink);background:var(--card);border:1px solid var(--rule);border-radius:999px;padding:.25rem .8rem;line-height:1.4;transition:border-color .08s ease,color .08s ease}.linkrow a:hover{border-color:var(--accent);color:var(--accent)}.linkrow .more{color:var(--ink-soft);background:0 0;border-style:dashed}.cards{display:grid;gap:.8rem;margin-bottom:.4rem;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr))}.card{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:.8rem .9rem .6rem;display:flex;flex-direction:column;gap:.3rem;transition:transform .08s ease,border-color .08s ease}.card:hover{transform:translateY(-1px);border-color:var(--ink-soft)}.card-link{color:inherit;text-decoration:none;flex:1;display:grid;grid-template-columns:48px 1fr;gap:.75rem;align-items:start}.card-icon{width:48px;height:48px;border-radius:22%;display:block;box-shadow:0 0 0 1px var(--rule)}.card-icon--mono{display:flex;align-items:center;justify-content:center;background:var(--rule);color:var(--ink-soft);font-weight:700;font-size:1.4rem}.card-text{display:block;min-width:0}.card-name{display:block;font-weight:700;font-size:1rem;line-height:1.3}.badge{display:inline-block;vertical-align:.1em;margin-left:.3rem;font-size:.62rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:0 .45em}.card-platforms{display:block;color:var(--ink-soft);font-size:.78rem}.card-tagline{display:block;margin-top:.3rem;font-size:.88rem;line-height:1.45}.card-links{margin:.3rem 0 0;font-size:.8rem;border-top:1px solid var(--rule);padding-top:.45rem}.card-links a{text-decoration:none;margin-right:.9rem}.card-links a:hover{text-decoration:underline}.geekcode{margin:1.5rem 0 0;font-family:ui-monospace,sf mono,Menlo,monospace;font-size:.72rem;line-height:1.35;color:var(--ink-soft)}.geekcode a{color:inherit;text-decoration:none}.geekcode a:hover{color:var(--accent)}.prose{max-width:40rem}.prose--wide{max-width:none}.prose--wide p{max-width:40rem}.prose h1{font-size:1.7rem}.prose h2{font-size:1.15rem;margin-top:1.8rem}