:root{--bg:#f8fafc;--fg:#0f172a;--muted:#64748b;--line:#e2e8f0;--card:#fff;--accent:#4f46e5;--accent-soft:#eef2ff;--warn:#b45309;--warn-soft:#fffbeb;--bad:#b91c1c;--bad-soft:#fef2f2;--radius:12px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;font:16px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}main{max-width:1080px;margin:0 auto;padding:0 16px 48px}h1{letter-spacing:-.01em;margin:16px 0 8px;font-size:1.6rem;line-height:1.2}h2{margin:24px 0 8px;font-size:1.1rem}h3{margin:0;font-size:1rem}.sr,.hp{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.sponsorbar{color:#e2e8f0;background:#0f172a;align-items:center;gap:8px;padding:8px 12px;font-size:.85rem;display:flex}.sponsorbar a{color:#e2e8f0;flex:1}.sponsorbar .tag{text-transform:uppercase;letter-spacing:.04em;background:#334155;border-radius:4px;margin-right:4px;padding:1px 6px;font-size:.7rem}.sponsorbar button{color:#94a3b8;cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:1.3rem;line-height:1}header.site{flex-wrap:wrap;justify-content:space-between;align-items:center;row-gap:6px;max-width:1080px;margin:0 auto;padding:12px 16px;display:flex}.logo{color:var(--fg);white-space:nowrap;font-size:1.1rem;font-weight:700}.logo .mark{color:var(--accent)}header nav{gap:14px;font-size:.95rem;display:flex}header nav a{color:var(--fg)}footer.site{max-width:1080px;color:var(--muted);border-top:1px solid var(--line);margin:0 auto;padding:24px 16px 40px;font-size:.85rem}.hero p{color:var(--muted);margin:0 0 12px}.search input{border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:100%;padding:12px 14px;font-size:1rem}.search input:focus,input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.chips{scrollbar-width:none;gap:6px;padding:10px 0 4px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{border:1px solid var(--line);cursor:pointer;color:var(--fg);background:#fff;border-radius:999px;flex:none;padding:6px 12px;font-size:.85rem}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.linkbtn{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:6px 0;font-size:.9rem}.filters{border:1px solid var(--line);border-radius:var(--radius);background:#fff;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0;padding:12px;display:grid}.filters label{color:var(--muted);flex-direction:column;gap:4px;font-size:.8rem;display:flex}.filters label.check{color:var(--fg);flex-direction:row;align-items:center}select,input,textarea{font:inherit;border:1px solid var(--line);color:var(--fg);background:#fff;border-radius:8px;padding:8px 10px}.count{color:var(--muted);margin:8px 0;font-size:.85rem}.cards{grid-template-columns:1fr;gap:10px;margin:0;padding:0;list-style:none;display:grid}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}.card>a,.card>div{color:inherit;padding:14px;display:block}.card>a:hover{border-radius:var(--radius);background:#fcfcff;text-decoration:none}.card.dim{opacity:.72}.card-top{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.tagline{color:#334155;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:4px 0 8px;font-size:.92rem;display:-webkit-box;overflow:hidden}.meta{color:var(--muted);flex-wrap:wrap;gap:12px;font-size:.8rem;display:flex}.clientlist{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.pill{color:#334155;background:#f1f5f9;border-radius:999px;padding:2px 8px;font-size:.75rem}.pill.hit{background:var(--accent-soft);color:var(--accent)}.badge{text-transform:uppercase;letter-spacing:.04em;background:var(--warn-soft);color:var(--warn);border-radius:4px;flex:none;padding:2px 6px;font-size:.7rem}.badge.st-archived,.badge.st-sunset{background:var(--bad-soft);color:var(--bad)}.empty{text-align:center;border:1px dashed var(--line);border-radius:var(--radius);background:#fff;padding:24px}.panel{border:1px solid var(--line);border-radius:var(--radius);background:#fff;margin-top:20px;padding:16px}.panel h2{margin-top:0}.catlist{grid-template-columns:1fr 1fr;gap:6px 16px;margin:0;padding:0;list-style:none;display:grid}.catlist span{color:var(--muted);font-size:.85rem}.changes{margin:0;padding:0;font-size:.92rem;list-style:none}.changes li{border-bottom:1px solid #f1f5f9;padding:6px 0}.changes time{color:var(--muted);font-variant-numeric:tabular-nums;margin-right:6px;font-size:.85rem}.signup{flex-wrap:wrap;gap:8px;display:flex}.signup input{flex:200px}button{font:inherit;background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:8px;padding:9px 16px}button:disabled{opacity:.6}button.secondary{color:var(--fg);background:#e2e8f0}.ok{color:#047857;background:#ecfdf5;border-radius:8px;padding:10px 12px}.err{color:var(--bad);width:100%;margin:4px 0 0;font-size:.9rem}.narrow{max-width:680px}.stack{flex-direction:column;gap:12px;display:flex}.stack label{flex-direction:column;gap:4px;font-size:.9rem;display:flex}.stack button{align-self:flex-start}fieldset{border:1px solid var(--line);border-radius:8px;padding:10px}legend{padding:0 4px;font-size:.9rem}.checks{grid-template-columns:1fr 1fr;gap:4px;display:grid}.check{align-items:center;gap:6px;font-size:.88rem;flex-direction:row!important;display:flex!important}.tool .crumb{color:var(--muted);margin:12px 0 0;font-size:.85rem}.tool .lede{color:#334155;margin-top:0}.tool section{margin-top:8px}.alert{background:var(--warn-soft);color:#78350f;border:1px solid #fde68a;border-radius:8px;padding:10px 12px;font-size:.92rem}.alert.st-archived,.alert.st-sunset{background:var(--bad-soft);color:#7f1d1d;border-color:#fecaca}.note{color:#334155;background:#f1f5f9;border-radius:8px;padding:8px 12px;font-size:.9rem}.muted{color:var(--muted)}.fine{color:var(--muted);margin:6px 0;font-size:.8rem}.code{color:#e2e8f0;background:#0f172a;border-radius:8px;align-items:flex-start;gap:8px;padding:10px 12px;font-size:.85rem;display:flex;overflow-x:auto}.code code{white-space:pre-wrap;word-break:break-all;flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}pre.code{white-space:pre-wrap}.copy{background:#334155;flex:none;padding:4px 10px;font-size:.75rem}.facts{grid-template-columns:120px 1fr;gap:6px 12px;margin:0;font-size:.92rem;display:grid}.facts dt{color:var(--muted)}.facts dd{word-break:break-word;margin:0}.pitfalls li{margin-bottom:6px}.stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;display:grid}.stats div{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:12px}.stats dt{color:var(--muted);font-size:.8rem}.stats dd{margin:4px 0 0;font-size:1.5rem;font-weight:700}.offer li{margin-bottom:6px}@media (min-width:720px){h1{font-size:2.1rem}.cards{grid-template-columns:1fr 1fr}.filters{grid-template-columns:repeat(4,1fr)}.chips{flex-wrap:wrap;overflow:visible}}@media (min-width:1024px){.cards{grid-template-columns:1fr 1fr 1fr}}.tablewrap{border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow-x:auto}table.list{border-collapse:collapse;width:100%;min-width:640px;font-size:.9rem}table.list th,table.list td{text-align:left;vertical-align:top;border-bottom:1px solid #f1f5f9;padding:10px 12px}table.list th{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#f8fafc;font-size:.75rem}.small{font-size:.82rem}.lede{color:#334155}.crumb{color:var(--muted);margin:12px 0 0;font-size:.85rem}.guide h2{margin-top:28px}.guide li{margin-bottom:6px}.guide code{background:#f1f5f9;border-radius:4px;padding:1px 5px;font-size:.88em}.footlinks{line-height:1.9}@media (max-width:719px){table.list{min-width:0}table.list thead{display:none}table.list tr{border-bottom:1px solid var(--line);padding:10px 12px;display:block}table.list td{border:0;padding:2px 0;display:block}table.list td:nth-child(2):before{content:"Works with: ";color:var(--muted)}table.list td:nth-child(3):before{content:"Runs: ";color:var(--muted)}table.list td:nth-child(4):before{content:"Transport: ";color:var(--muted)}table.list td:nth-child(5):before{content:"License: ";color:var(--muted)}}@media (max-width:430px){header.site{gap:8px}.logo{white-space:nowrap;font-size:1rem}header nav{gap:10px;font-size:.85rem}}
