:root{--bg:#f8f8fc;--surface:#fff;--border:#e4e5ef;--rule:#ecedf4;--text:#151729;--muted:#686c85;--faint:#9a9db3;--accent:#4f5fe0;--accent-soft:#4f5fe014;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;color-scheme:light}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);font:14px/1.7 var(--mono);-webkit-font-smoothing:antialiased}::selection{background:var(--accent);color:var(--bg)}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.col{max-width:680px;margin:0 auto;padding:0 22px}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}header.site{justify-content:space-between;align-items:baseline;gap:16px;padding:48px 0 0;display:flex}.mark{align-items:center;gap:10px;font-weight:600;display:inline-flex}.dot{background:var(--accent);width:10px;height:10px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 20%, transparent);border-radius:50%;flex:none;animation:2.4s ease-in-out infinite blink}@keyframes blink{50%{opacity:.45;box-shadow:0 0 0 6px color-mix(in srgb, var(--accent) 8%, transparent)}}@media (prefers-reduced-motion:reduce){.dot{animation:none}}nav{color:var(--muted);gap:18px;font-size:13px;display:flex}nav a[aria-current=page]{color:var(--text)}.intro{padding:56px 0 8px}.intro h1.page{margin:0 0 10px;font-size:22px}.avatar{width:120px;height:120px;box-shadow:0 0 0 4px var(--bg), 0 0 0 5px var(--border);border-radius:50%;margin:0 auto 28px;display:block;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%;display:block;transform:scale(1.12)}.intro p{color:var(--muted);margin:0 0 12px}.intro p b{color:var(--text);font-weight:500}a.u,.prose a,.note a{color:var(--text);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:3px}a.u:hover,.prose a:hover,.note a:hover{color:var(--accent);text-decoration-color:var(--accent)}.meta{color:var(--muted);flex-wrap:wrap;gap:6px 20px;margin-top:18px;font-size:13px;display:flex}.meta a{color:var(--text)}.meta a:hover{color:var(--accent)}section{padding-top:44px;scroll-margin-top:24px}.head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;margin-bottom:4px;padding-bottom:8px;display:flex}.head h2{letter-spacing:.02em;margin:0;font-size:13px;font-weight:600}.head h2 i{color:var(--accent);margin-right:8px;font-style:normal}.head a{color:var(--muted);font-size:12px}.head a:hover{color:var(--accent)}.head .d{color:var(--faint);font-size:12px}.rows{margin:0;padding:0;list-style:none}.rows li a,.rows li .row{border-bottom:1px solid var(--rule);grid-template-columns:1fr auto;gap:16px;padding:8px 0;display:grid}.rows li:last-child a,.rows li:last-child .row{border-bottom:0}.rows .t{color:var(--text)}.rows li a:hover .t{color:var(--accent)}.rows .s{color:var(--muted);font-size:12.5px;display:block}.rows .d{color:var(--faint);white-space:nowrap;font-size:12px}.role{color:var(--accent);margin-left:6px;font-size:11px}.proj li .row{grid-template-columns:210px 1fr auto}.proj div.row .n{color:var(--muted)}.proj .n{color:var(--text);font-weight:600}.proj .x{color:var(--muted)}@media (width<=640px){.proj li .row{grid-template-columns:1fr auto}.proj .x{grid-area:2/1/auto/-1;font-size:12.5px}}.note .c{color:var(--faint);font-size:11px}.note{color:var(--muted);margin:10px 0 0;font-size:12.5px}.book{grid-template-columns:84px 1fr;align-items:start;gap:20px;padding:12px 0 4px;display:grid}.book img{border:1px solid var(--border);width:84px;height:auto;display:block}.book .t{color:var(--text);font-weight:600;display:block}.book:hover .t{color:var(--accent)}.book .s{color:var(--faint);margin:2px 0 8px;font-size:12px;display:block}.book .x{color:var(--muted);font-size:13px;display:block}.tools{grid-template-columns:1fr 1fr;display:grid}.tool{border-bottom:1px solid var(--rule);padding:12px 16px 12px 0;display:block}.tool:nth-child(2n){border-left:1px solid var(--rule);padding:12px 0 12px 16px}.tool .n{color:var(--text);font-weight:600}.tool:hover .n{color:var(--accent)}.tool .c{color:var(--faint);margin-left:8px;font-size:11px}.tool .w{color:var(--muted);margin-top:2px;font-size:12.5px;display:block}@media (width<=640px){.tools{grid-template-columns:1fr}.tool,.tool:nth-child(2n){border-left:0;padding:10px 0}}.cat-nav{flex-wrap:wrap;gap:6px 18px;margin-top:14px;font-size:13px;display:flex}.search{flex-wrap:wrap;align-items:center;gap:10px 14px;margin:20px 0 6px;display:flex}.search input{font:13px var(--mono);color:var(--text);background:var(--surface);border:1px solid var(--border);outline:none;flex:260px;padding:8px 10px}.search input:focus{border-color:var(--accent)}.search input::placeholder{color:var(--faint)}.types{gap:2px;display:flex}.types button{font:12px var(--mono);color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;padding:4px 8px}.types button:hover{color:var(--accent)}.types button[aria-pressed=true]{color:var(--accent);border-color:var(--border);background:var(--surface)}.search .count{color:var(--faint);margin-left:auto;font-size:12px}[hidden]{display:none!important}.cat-nav b{color:var(--text);font-weight:600}.cat-nav a{color:var(--muted)}.cat-nav a:hover{color:var(--accent)}.group{scroll-margin-top:24px}.group-title{letter-spacing:-.01em;margin:56px 0 -16px;font-size:16px;font-weight:600}.group-title span{color:var(--muted);margin-top:2px;font-size:12.5px;font-weight:400;display:block}.res .top>span:first-child{min-width:0}.res .repo{overflow-wrap:anywhere;text-align:right}.blurb{color:var(--muted);margin:8px 0 4px;font-size:13px}.res{margin:0;padding:0;list-style:none}.res li{border-bottom:1px solid var(--rule);padding:14px 0}.res li:last-child{border-bottom:0}.res .top{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.res .name{color:var(--text);font-weight:600}.res .name:hover{color:var(--accent)}.flag{color:var(--muted);border:1px dashed var(--faint);white-space:nowrap;margin-left:8px;padding:0 6px;font-size:11px}.res .repo{color:var(--faint);font-size:12px}.res .why{color:var(--muted);margin:2px 0 0;font-size:13px}.res .take{border-left:2px solid var(--accent);color:var(--text);margin:8px 0 0;padding-left:12px;font-size:13px}.res .mine{color:var(--faint);margin:8px 0 0;font-size:12.5px}.res .mine a{color:var(--text);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:3px}.res .mine a:hover{color:var(--accent);text-decoration-color:var(--accent)}.res .mine i{color:var(--accent);margin-right:4px;font-style:normal}.res .cat{color:var(--faint);margin-left:8px;font-size:11px}a.repo:hover{color:var(--accent)}.res .right{text-align:right;justify-content:flex-end;align-items:baseline;gap:10px;display:inline-flex}.stars{color:var(--muted);white-space:nowrap;text-align:right;min-width:4.5ch;font-size:12px}.rating-line{align-items:baseline;gap:12px;margin:6px 0 0;font-size:12.5px;display:flex}.dots{color:var(--accent);letter-spacing:1px;white-space:nowrap}.pending{color:var(--faint);font-style:italic}.verdict{white-space:nowrap;border:1px solid;padding:0 6px;font-size:11px}.v-adopt{color:#15803d}.v-keep-watching{color:#a16207}.v-skip{color:#b91c1c}.ratings{padding:8px 0 0}.ratings .r{border-bottom:1px solid var(--rule);grid-template-columns:140px 1fr;padding:6px 0;font-size:13px;display:grid}.ratings .r:last-child{border-bottom:0}.ratings .k{color:var(--muted)}.crumb{font-size:12px;margin:0 0 12px!important}.prose h2{border-bottom:1px solid var(--border);margin:40px 0 10px;padding-bottom:8px;font-size:13px;font-weight:600}.prose h2 i{color:var(--accent);margin-right:8px;font-style:normal}.prose p{margin:0 0 14px}.prose blockquote{border-left:2px solid var(--accent);color:var(--muted);margin:18px 0;padding:2px 0 2px 16px}.tl{margin:0;padding:0;list-style:none}.tl li{border-bottom:1px solid var(--rule);grid-template-columns:90px 1fr;gap:16px;padding:7px 0;display:grid}.tl li:last-child{border-bottom:0}.tl b{color:var(--faint);font-weight:500}.tl small{color:var(--muted);font-size:12.5px;display:block}footer.site{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;margin-top:64px;padding:20px 0 56px;font-size:12px;display:flex}@media (width<=760px){nav{gap:12px}}
