/* Tool page styles - shares shell.css tokens (--bg, --raised, --ink, --muted, --line, --blue, --ok, --warn, --bad) */
.twrap{max-width:860px;margin:0 auto;padding:48px 20px 80px}
.tk{font-family:'IBM Plex Mono',ui-monospace,monospace;text-transform:uppercase;font-size:12px;color:var(--muted);letter-spacing:.02em;margin:0 0 10px}
.twrap h1{font-size:clamp(30px,6vw,52px);margin:0 0 14px}
.tlede{max-width:640px;margin-bottom:30px}
.tform,.tform2{display:grid;gap:16px;margin-bottom:18px}
.tform2{grid-template-columns:1fr 1fr}
.tfl{display:grid;gap:6px;font-size:14px;color:var(--muted)}
.tfl input,.tfl textarea,.tfl select{width:100%;background:var(--raised);border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:12px 14px;font:inherit;font-size:15px}
.tfl textarea{resize:vertical;min-height:90px}
.tfl input:focus,.tfl textarea:focus,.tfl select:focus{outline:2px solid var(--blue);outline-offset:1px}
.tbtn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--raised);color:var(--ink);border-radius:999px;padding:12px 22px;font:inherit;font-size:15px;cursor:pointer;text-decoration:none}
.tbtn.blue{background:var(--blue);border-color:var(--blue)}
.tbtn.ghost{background:transparent}
.tbtn:hover{filter:brightness(1.12)}
.tlink{background:none;border:none;color:var(--muted);font:inherit;font-size:14px;cursor:pointer;text-decoration:underline;padding:4px 0}
.tlink:hover{color:var(--ink)}
.trow{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:14px 0}
.tcount{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--muted)}
.tresult{margin-top:20px;background:var(--raised);border:1px solid var(--line);border-radius:14px;padding:20px}
.tpre{white-space:pre-wrap;font:inherit;font-size:15px;margin:0;color:var(--ink)}
.tsummary{font-size:18px;margin-bottom:14px}
.tsummary b{color:var(--ok)}
.tcheck{display:flex;gap:12px;padding:10px 0;border-top:1px solid var(--line);align-items:baseline}
.tcheck b{font-family:'IBM Plex Mono',monospace;font-size:12px}
.tcheck.ok>b{color:var(--ok)}
.tcheck.flag>b{color:var(--warn)}
.tcheck span{color:var(--muted);font-size:14px}
.tcheck span b{color:var(--ink);font-family:inherit;font-size:14px}
.tgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin:18px 0}
.tgrid>div{background:var(--raised);border:1px solid var(--line);border-radius:12px;padding:14px}
.tgrid b{display:block;font-size:22px;font-weight:500}
.tgrid span{font-size:13px;color:var(--muted)}
.tlist{display:grid;gap:12px;margin:16px 0}
.titem{background:var(--raised);border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.titem header{display:flex;justify-content:space-between;gap-10px;align-items:baseline;margin-bottom:6px}
.titem p{margin:0 0 6px;font-size:14px}
.titem small{color:var(--muted);font-size:12px}
.tbadge{font-family:'IBM Plex Mono',monospace;font-size:11px;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:3px 10px;white-space:nowrap}
.tstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:10px;margin:14px 0}
.tstats>div{background:var(--raised);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.tstats b{display:block;font-size:18px}
.tstats span{font-size:12px;color:var(--muted)}
.trowline{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.trowline .tnum{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--muted);min-width:22px}
.trowline.done .tcheckline{text-decoration:line-through;color:var(--muted)}
.tcheckline{display:flex;gap:10px;align-items:center;flex:1;font-size:15px;color:var(--ink)}
.tcheckline input{width:18px;height:18px;accent-color:var(--blue)}
.tbar{height:8px;background:var(--raised);border:1px solid var(--line);border-radius:999px;overflow:hidden;margin:8px 0 6px}
.tbar div{height:100%;background:var(--ok);width:0;transition:width .3s}
.tscore{display:flex;align-items:baseline;gap:14px;margin:16px 0}
.tscore b{font-size:44px;font-weight:500;color:var(--ok)}
.tscore span{color:var(--muted)}
.tfl input[type=range]{padding:0;accent-color:var(--blue)}
.tscval{font-family:'IBM Plex Mono',monospace;font-size:12px}
.tprevwrap{margin-top:18px}
.tprev{background:#fff;color:#0b0b0b;border-radius:14px;padding:22px;min-height:120px}
.tprev b{display:block;font-size:19px;margin-bottom:8px}
.tprev p{color:#232323;margin:0 0 8px;font-size:15px}
.tprev small{color:#666}
.tgate{background:var(--raised);border:1px solid var(--line);border-radius:16px;padding:26px;max-width:640px}
.tgate h2{font-size:clamp(22px,4vw,30px)}
.tnote{font-size:13px;color:var(--muted)}
.tstatus{margin-top:44px;border-top:1px solid var(--line);padding-top:18px;display:grid;gap:4px}
.tstatus b{font-size:13px}
.tstatus span{font-size:13px;color:var(--muted)}
#ttoast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(80px);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:999px;font-size:14px;transition:transform .25s;z-index:99}
#ttoast.show{transform:translateX(-50%) translateY(0)}
@media(max-width:640px){.tform2{grid-template-columns:1fr}.twrap{padding:32px 16px 60px}}
.tsugs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 14px}
.tchip{border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.05);color:inherit;border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer}
.tchip:hover{background:rgba(255,255,255,.12)}
