:root{--paper:#f4f5f7;--card:#fff;--ink:#14181f;--ink-2:#39424e;--muted:#616b78;--rule:#dcdfe5;--rule-2:#ebedf1;--accent:#1f6f5c;--warn:#a8481f;--warn-bg:#f6e2d9;--dual-use:#7a4fa0;--dual-use-bg:#efe4f6}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#10141a;--card:#171d25;--ink:#e9ebee;--ink-2:#c2c7ce;--muted:#939ca6;--rule:#29323c;--rule-2:#222932;--accent:#4fb89c;--warn:#d97a4e;--warn-bg:#2b1f14;--dual-use:#b58ad9;--dual-use-bg:#241e2b}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);margin:0;font:16px/1.6 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.wrap{max-width:1080px;margin:0 auto;padding:0 22px}a{color:var(--accent);text-underline-offset:2px}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skip{position:absolute;left:-9999px}.skip:focus{background:var(--card);z-index:10;padding:10px 14px;top:12px;left:12px}header.site{border-bottom:1px solid var(--rule);background:var(--card)}.bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;padding-top:14px;padding-bottom:14px;display:flex}.brand{letter-spacing:-.02em;color:var(--ink);font-size:1.12rem;font-weight:700;text-decoration:none}.brand span{color:var(--accent)}nav.primary{flex-wrap:wrap;gap:18px;display:flex}nav.primary a{color:var(--ink-2);font-size:.94rem;text-decoration:none}nav.primary a:hover{color:var(--accent)}.banner{background:var(--warn-bg);color:var(--warn);text-align:center;border-bottom:1px solid var(--rule);padding:8px 16px;font-size:.85rem}main{padding:34px 22px 72px}h1{letter-spacing:-.02em;text-wrap:balance;margin:0 0 12px;font-size:clamp(1.7rem,4vw,2.4rem);line-height:1.15}h2{letter-spacing:-.01em;margin:0 0 10px;font-size:1.35rem}p{max-width:68ch;margin:0 0 14px}.muted{color:var(--muted);font-size:.9rem}.lede{color:var(--ink-2);max-width:62ch;font-size:1.08rem}.pillars{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:26px 0 34px;display:grid}.pillar{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:18px}.pillar h3{margin:0 0 8px;font-size:1.05rem}.pillar p{color:var(--ink-2);margin:0;font-size:.92rem}.grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin:18px 0;display:grid}.card{background:var(--card);border:1px solid var(--rule);color:inherit;border-radius:10px;flex-direction:column;gap:8px;padding:16px;text-decoration:none;display:flex}.card:hover{border-color:var(--accent)}.card h3{color:var(--ink);margin:0;font-size:1.02rem}.card p{color:var(--ink-2);margin:0;font-size:.88rem}.badges{flex-wrap:wrap;gap:6px;display:flex}.badge{text-transform:uppercase;letter-spacing:.03em;background:var(--rule-2);color:var(--ink-2);border-radius:999px;padding:3px 8px;font-size:.72rem;font-weight:600;display:inline-block}.badge.cost-free,.badge.cost-open_source{background:color-mix(in srgb, var(--accent) 16%, var(--card));color:var(--accent)}.badge.cost-freemium{color:var(--ink-2)}.badge.cost-paid{background:var(--rule-2)}.badge.dual-use{background:var(--dual-use-bg);color:var(--dual-use)}.filters{background:var(--card);border:1px solid var(--rule);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin:18px 0 8px;padding:14px;display:flex}.filters label{color:var(--ink-2);align-items:center;gap:6px;font-size:.85rem;display:flex}.filters select,.filters input[type=checkbox]{font:inherit}.filters button{font:inherit;border:1px solid var(--rule);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:6px;padding:6px 14px}.note{border-left:3px solid var(--accent);background:var(--rule-2);border-radius:0 8px 8px 0;margin:16px 0;padding:10px 14px;font-size:.9rem}.note.dual-use{border-left-color:var(--dual-use)}.tool-detail{max-width:68ch}.tool-meta{flex-wrap:wrap;gap:8px;margin:10px 0 18px;display:flex}.related{margin-top:30px}footer.site{border-top:1px solid var(--rule);background:var(--card)}footer.site .wrap{padding-top:18px;padding-bottom:18px}footer.site p{max-width:76ch;color:var(--ink-2);font-size:.9rem}footer.site nav{flex-wrap:wrap;gap:14px;margin-top:8px;display:flex}footer.site nav a{color:var(--muted);font-size:.85rem;text-decoration:none}footer.site nav a:hover{color:var(--accent)}
