/* v80: the tool catalog (tools/), rendered from the tool-catalog bank by build_tools.py; v80 adds grouped tools (.tl-fam) */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.tc-hero{padding-block:calc(var(--hdr) + clamp(36px,7vh,72px)) clamp(28px,4vh,44px)}
.tc-top h1{font-size:var(--fs-h1);line-height:1.05;letter-spacing:-.03em;font-weight:600;max-width:13em;text-wrap:balance}
.tc-top .lead{max-width:36em}
.tc{padding-top:clamp(28px,4vh,44px)}
.tc-ctl{position:sticky;top:0;z-index:5;margin-inline:calc(-1 * var(--gut));padding:14px var(--gut) 12px;background:var(--page);border-bottom:1px solid var(--hair)}
.tc-ctl:not([hidden]){display:grid;gap:12px}
.tc-search input{width:100%;max-width:560px;height:44px;padding:0 14px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--ink);font:inherit;font-size:15.5px}
.tc-search input:focus-visible{outline:2px solid var(--teal);outline-offset:1px;border-color:transparent}
.tc-kinds{display:flex;flex-wrap:wrap;gap:8px}
.tc-k{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;border-radius:999px;border:1px solid var(--edge);background:transparent;color:var(--sub);font:500 14px/1 var(--sans);cursor:pointer;transition:background-color var(--motion-base) var(--ease-out),color var(--motion-base) var(--ease-out)}
.tc-k span{font-weight:600;font-size:12.5px;color:var(--sub)}
.tc-k:hover{color:var(--ink);background:var(--hover)}
.tc-k[aria-pressed="true"]{background:rgba(33,173,143,.1);border-color:rgba(33,173,143,.5);color:var(--ink)}
.tc-k[aria-pressed="true"] span{color:var(--teal-hi)}
.tc-count{font-size:14px;color:var(--sub);min-height:1.3em}
.tc-g{margin-top:clamp(36px,5vh,56px)}
.tc-g[hidden]{display:none}
.tc-gh{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:8px clamp(24px,4vw,64px);align-items:baseline;padding-bottom:14px}
.tc-gh h2{font-size:clamp(22px,1.9vw,28px);line-height:1.2;letter-spacing:-.02em}
.tc-gh p{font-size:15.5px;line-height:1.5;color:var(--sub);max-width:40em}
.tc-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--hair)}
.tl{border-bottom:1px solid var(--hair)}
.tl[hidden]{display:none}
.tl summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr) 20px;gap:6px clamp(16px,3vw,40px);align-items:baseline;padding:14px 10px;margin-inline:-10px;border-radius:8px;transition:background-color var(--motion-base) var(--ease-out)}
.tl summary::-webkit-details-marker{display:none}
.tl summary::after{content:"";width:8px;height:8px;border:solid var(--sub);border-width:0 1.5px 1.5px 0;transform:translateY(-3px) rotate(45deg);justify-self:end;transition:transform var(--motion-base) var(--ease-out)}
.tl details[open] > summary::after{transform:translateY(1px) rotate(-135deg)}
@media (hover:hover) and (pointer:fine){.tl summary:hover{background:var(--hover)}}
.tl summary:focus-visible{outline:2px solid var(--teal);outline-offset:-2px}
.tl-n{font-size:16px;font-weight:600;color:var(--ink)}
.tl-s{font-size:15px;line-height:1.5;color:var(--sub)}
.tl-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px clamp(24px,4vw,56px);padding:4px 0 24px calc(33.3% + 4px)}
.tl-o{grid-column:1 / -1;font-size:15.5px;line-height:1.55;color:var(--ink);max-width:46em}
.tl-f h4{font-size:13.5px;font-weight:600;color:var(--ink);margin:0 0 6px}
.tl-f ul{margin:0;padding-left:18px;display:grid;gap:4px}
.tl-f li{font-size:14.5px;line-height:1.45;color:var(--sub)}
.tc-none{margin-top:32px;font-size:16px;color:var(--sub)}
.tc-note{margin-top:36px}
@media (max-width:899px){
  .tc-gh{grid-template-columns:minmax(0,1fr)}
  .tl summary{grid-template-columns:minmax(0,1fr) 20px}
  .tl-s{grid-column:1;grid-row:2}
  .tl summary::after{grid-column:2;grid-row:1}
  .tl-body{grid-template-columns:minmax(0,1fr);padding-left:0}
  .tc-kinds{flex-wrap:nowrap;overflow-x:auto;margin-inline:calc(-1 * var(--gut));padding:2px var(--gut) 4px;scrollbar-width:none}
  .tc-kinds::-webkit-scrollbar{display:none}
  .tc-k{flex:none}
}
/* v80: a group of tools that do parts of one job — one row, its tools listed inside, each opening on its own */
.tl-k{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:999px;border:1px solid var(--edge);font:500 12px/1.4 var(--sans);font-style:normal;color:var(--sub);vertical-align:2px;white-space:nowrap}
.tl-sub{list-style:none;margin:0 0 18px;padding:0 0 0 calc(33.3% + 4px)}
.tl-sub .tl{border-bottom:0;border-top:1px solid var(--hair)}
.tl-sub .tl summary{grid-template-columns:minmax(0,5fr) minmax(0,7fr) 20px;padding-block:12px}
.tl-sub .tl-n{font-size:15px}
.tl-sub .tl-s{font-size:14.5px}
.tl-sub .tl-body{grid-template-columns:minmax(0,1fr);padding:2px 0 18px}
@media (max-width:899px){
  .tl-sub{padding-left:14px;border-left:1px solid var(--hair)}
  .tl-sub .tl summary{grid-template-columns:minmax(0,1fr) 20px}
}
