:root{--paper:#f4f2ec;--ink:#14140f;--mut:#6b6a62;--line:#d6d3c7;--hi:#e8e5da;--acc:#e5481b;--mono:ui-monospace,"JetBrains Mono","SFMono-Regular",Menlo,Consolas,monospace}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 -apple-system,"Helvetica Neue",Arial,sans-serif;background-image:linear-gradient(var(--hi) 1px,transparent 1px),linear-gradient(90deg,var(--hi) 1px,transparent 1px);background-size:24px 24px}
a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}a:hover{color:var(--acc);text-decoration-color:var(--acc)}
.w{max-width:1200px;margin:0 auto;padding:0 24px}.mono,code,pre,kbd,.lbl,th{font-family:var(--mono)}.dim{color:var(--mut)}.r{text-align:right}
.top{border-bottom:1.5px solid var(--ink);background:var(--paper)}.row{display:flex;justify-content:space-between;align-items:center;height:56px}
.logo{font-family:var(--mono);font-size:15px;letter-spacing:.08em;text-decoration:none;display:flex;align-items:center;gap:10px}.logo b{color:var(--acc)}.sq{width:12px;height:12px;background:var(--acc);display:inline-block}
nav a{font-family:var(--mono);font-size:13px;margin-left:22px;text-decoration:none;text-transform:uppercase;letter-spacing:.06em}
.lbl{font-size:11.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--mut)}.lbl a{color:var(--mut)}
.hero{padding:56px 0 28px}.hero.sm{padding:20px 0 16px}.hero h1{font-size:48px;line-height:1.05;letter-spacing:-.02em;margin:10px 0 12px;font-weight:700;display:flex;align-items:center;gap:12px}.hero.sm h1{font-size:34px}
.lead{font-size:18px;color:#3c3b35;max-width:640px;margin:0}
.srch{margin-top:28px;display:flex;align-items:center;gap:10px;border:1.5px solid var(--ink);background:#fff;padding:0 14px;max-width:640px;height:52px}.srch input{flex:1;border:0;outline:0;font:16px var(--mono);background:transparent}.srch .mono{color:var(--acc);font-weight:700}
kbd{border:1px solid var(--line);padding:1px 7px;font-size:12px;color:var(--mut)}
.fam{display:grid;grid-template-columns:repeat(7,1fr);border:1.5px solid var(--ink);background:#fff;margin:8px 0 28px}.fam a{display:flex;flex-direction:column;gap:10px;padding:14px;border-right:1px solid var(--line);text-decoration:none}.fam a:last-child{border-right:0}.fam a:hover{background:var(--ink);color:var(--paper)}.fam b{font-size:22px;font-weight:500}.fam span{font-size:13px}
.tbar{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:8px 0}
.tw{overflow-x:auto;border:1.5px solid var(--ink);background:#fff}table.cat{width:100%;border-collapse:collapse;font-size:13.5px}
.cat th{text-align:left;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--mut);padding:10px 12px;border-bottom:1.5px solid var(--ink);background:#faf9f5;position:sticky;top:0}
.cat td{padding:10px 12px;border-bottom:1px solid var(--hi);vertical-align:top}.cat tr:hover td{background:#fbf6ec}.cat td.mono{font-size:12.5px;white-space:nowrap}
.nm{font-weight:600;text-decoration:none}.ds{color:var(--mut);font-size:12.5px;max-width:420px;margin-top:2px}.devs{font-size:12.5px;max-width:200px}.devs a{text-decoration:none;border-bottom:1px dotted var(--mut)}
.kind{font:10.5px var(--mono);border:1px solid var(--acc);color:var(--acc);padding:0 5px;margin-left:8px;vertical-align:2px;letter-spacing:.06em}
.strip{display:flex;justify-content:space-between;align-items:center;gap:24px;border:1.5px solid var(--ink);background:var(--ink);color:var(--paper);padding:22px 24px;margin:36px 0}.strip .lbl{color:#b9b6aa}.strip p{margin:4px 0 0}
.strip form{display:flex}.strip input{font:14px var(--mono);padding:11px 12px;border:0;width:250px}button{font:600 13px var(--mono);text-transform:uppercase;letter-spacing:.06em;background:var(--acc);color:#fff;border:0;padding:12px 18px;cursor:pointer}
.dgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));border-top:1.5px solid var(--ink);border-left:1.5px solid var(--ink);background:#fff}.dgrid a{display:flex;justify-content:space-between;padding:14px 16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-decoration:none}.dgrid a:hover{background:var(--ink);color:var(--paper)}
.crumb{font-size:12px;letter-spacing:.08em;color:var(--mut);padding-top:24px}.crumb a{color:var(--mut)}
.sheet{border:1.5px solid var(--ink);background:#fff;margin:14px 0}.shead{display:flex;gap:18px;padding:24px;border-bottom:1.5px solid var(--ink)}.shead h1{margin:6px 0;font-size:34px;letter-spacing:-.01em}.shead .ic{color:var(--acc)}
.cols{display:grid;grid-template-columns:330px 1fr}.cols aside{border-right:1px solid var(--line);padding:20px}.cols>div{padding:20px 28px;min-width:0}
.spec{width:100%;border-collapse:collapse;font-size:13px}.spec th{text-align:left;font-weight:400;color:var(--mut);font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;padding:7px 8px 7px 0;width:110px;vertical-align:top;border-bottom:1px solid var(--hi)}.spec td{padding:7px 0;border-bottom:1px solid var(--hi);word-break:break-word}
h3{font:600 12px var(--mono);text-transform:uppercase;letter-spacing:.1em;margin:22px 0 10px;border-top:1px solid var(--ink);padding-top:10px}h3 .dim{text-transform:none;letter-spacing:0;font-weight:400}
.feat,.req{padding-left:18px;margin:0}.feat li,.req li{margin:5px 0}.feat li::marker{color:var(--acc)}.req{font-size:13px;color:#3c3b35}
pre{background:#14140f;color:#e9e6dc;padding:14px 16px;overflow-x:auto;font-size:12.5px;line-height:1.6;margin:8px 0}.steps{padding-left:20px}.steps li{margin:6px 0}.note{font-size:11.5px;color:var(--mut);margin-top:18px}
.form{border:1.5px solid var(--ink);background:#fff;padding:24px;max-width:640px;display:grid;gap:14px}.form label{font:12px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--mut);display:grid;gap:6px}.form input,.form textarea{font:15px var(--mono);border:1px solid var(--line);padding:10px;color:var(--ink)}
.foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:28px 24px 40px;font-size:12.5px;color:var(--mut);border-top:1.5px solid var(--ink);margin-top:48px}
@media(max-width:900px){.fam{grid-template-columns:repeat(2,1fr)}.fam a{border-bottom:1px solid var(--line)}.cols{grid-template-columns:1fr}.cols aside{border-right:0;border-bottom:1px solid var(--line)}.hero h1{font-size:34px}.strip{flex-direction:column;align-items:stretch}.cat th:nth-child(1),.cat td:nth-child(1),.cat th:nth-child(7),.cat td:nth-child(7){display:none}nav a{margin-left:12px}}
.sub{display:flex}.sub input{font:14px var(--mono);padding:11px 12px;border:1px solid var(--ink);width:250px;min-width:0}.strip .sub input{border:0}
.fsub{width:100%;display:flex;align-items:center;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:8px}.sub.mini input{padding:8px 10px;font-size:13px}.sub.mini button{padding:8px 14px}
