.tool{display:grid;grid-template-columns:minmax(0,1fr);gap:24px}
.tool .panel{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);padding:24px}
.tool textarea{font:13px/1.5 var(--mono);min-height:220px}
.tool .row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}
.tool .out{min-height:40px}
.tool pre.code{background:#0a0d11;border:1px solid var(--line);border-radius:8px;padding:16px;overflow:auto;font:12.5px/1.55 var(--mono);max-height:560px;white-space:pre}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:16px 0}
.kpi{background:var(--bg3);border:1px solid var(--line);border-radius:10px;padding:14px}
.kpi b{display:block;font:600 22px var(--mono);color:var(--tx)}.kpi span{font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em}
.st{display:inline-block;font:600 11px var(--mono);padding:2px 8px;border-radius:4px;border:1px solid;white-space:nowrap}
.st.pass{color:var(--ac);border-color:var(--ac)}.st.warn,.st.info{color:var(--warn);border-color:var(--warn)}.st.fail{color:#ff6b6b;border-color:#ff6b6b}
.grade{display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:14px;font:700 40px var(--mono);border:2px solid}
.grade.A,.grade.B{color:var(--ac);border-color:var(--ac)}.grade.C,.grade.D{color:var(--warn);border-color:var(--warn)}.grade.F{color:#ff6b6b;border-color:#ff6b6b}
.err{color:#ff8b8b;border:1px solid #ff6b6b55;background:#ff6b6b11;border-radius:8px;padding:12px 16px}
.tool-cards .card .tag{font:600 11px var(--mono);color:var(--mut)}
.pill{display:inline-block;font:600 10.5px var(--mono);letter-spacing:.06em;padding:2px 7px;border-radius:4px;background:var(--bg3);color:var(--mut);margin-right:6px}
.pill.srv{color:var(--warn)}.pill.cli{color:var(--ac)}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.btn.ghost.sm{font-size:13px}
svg.ch{width:100%;height:auto;background:#0a0d11;border:1px solid var(--line);border-radius:8px}
svg.ch text{fill:var(--mut);font:11px var(--mono)}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--ac);border-radius:50%;animation:sp 1s linear infinite;vertical-align:-2px;margin-right:8px}@keyframes sp{to{transform:rotate(360deg)}}
.tool-cta{margin-top:8px}

/* tool-page shell bridge (v2 tokens, no style.css) */
.legacy section{padding:88px 0}
.legacy section.alt{background:var(--bg2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.legacy .lead{font-size:19px;color:var(--mut);max-width:640px}
.legacy .eyebrow{font:500 13px var(--mono);color:var(--ac);text-transform:uppercase;letter-spacing:.08em;margin-bottom:14px;display:block}
.legacy .mut,.legacy .muted{color:var(--mut)}
.legacy .small{font-size:14px}
.legacy .hero{padding-top:56px}
@media(max-width:600px){.legacy section{padding:60px 0}.legacy .hero{padding:48px 0}}
