.wrap{max-width:1040px;margin:0 auto;padding:60px 20px 90px;display:flex;flex-direction:column;gap:40px}
.masthead{display:flex;flex-direction:column;gap:12px}
.eyebrow{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink)}
.masthead h1{font-size:34px;font-weight:700;line-height:1.1;letter-spacing:-.015em}
.masthead h1 .dot{color:var(--accent)}
.lede{font-size:15.5px;color:var(--muted);max-width:66ch;line-height:1.55}

.cat{display:flex;flex-direction:column;gap:14px}
.cat-h{font-size:12px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);
  display:flex;align-items:center;gap:9px}
.cat-h::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--accent);flex:none}
.cat.android .cat-h::before{background:var(--warn)}
.cat.general .cat-h::before{background:#8a63d2}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(210px,100%),1fr));gap:12px}
a.tool{display:flex;flex-direction:column;gap:5px;padding:13px 15px;text-decoration:none;color:inherit;
  border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:10px;background:var(--surface);
  transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease}
a.tool.android{border-left-color:var(--warn)}
a.tool.general{border-left-color:#8a63d2}
a.tool:hover{transform:translateY(-2px);border-color:var(--line2);border-left-color:var(--accent);box-shadow:var(--shadow)}
a.tool.android:hover{border-left-color:var(--warn)}
a.tool.general:hover{border-left-color:#8a63d2}
:root[data-theme="dark"] a.tool:hover{box-shadow:0 2px 6px rgba(0,0,0,.5),0 10px 22px rgba(0,0,0,.4)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) a.tool:hover{box-shadow:0 2px 6px rgba(0,0,0,.5),0 10px 22px rgba(0,0,0,.4)}}
a.tool:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
a.tool h3{font-size:15px;font-weight:650;letter-spacing:-.005em;line-height:1.25}
a.tool .ext{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;font-size:11.5px;color:var(--faint);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (prefers-reduced-motion: reduce){ a.tool{transition:none} a.tool:hover{transform:none} }
@media (max-width:640px){ .wrap{padding:40px 18px 70px;gap:32px} .masthead h1{font-size:27px} }
