:root{--bg:#f4f6f8;--text:#17212b;--muted:#66727f;--line:#dce2e7;--primary:#176b57;-webkit-text-size-adjust:100%;text-size-adjust:100%}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif}
a{color:inherit;text-decoration:none}
input,select{font:inherit}
.shell{width:100%;margin:0;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
.topbar{background:#fff;border-bottom:1px solid var(--line)}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:54px;padding-top:5px;padding-bottom:5px}
h1{margin:0;font-size:22px;line-height:1.25}
.nav-link{flex-shrink:0;display:flex;align-items:center;min-height:44px;color:var(--primary);font-size:14px;font-weight:700}
.toolbar{display:grid;grid-template-columns:minmax(0,1fr) 128px;gap:8px;padding:12px 0}
.field{min-width:0}
.field label,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.field input,.field select{width:100%;min-height:38px;min-width:0;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--text);padding:7px 10px;outline:none}
.field input:focus,.field select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #176b5724}
.grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:10px;padding-bottom:22px}
.tool-card{min-width:0;min-height:166px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 6px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 14px #1827340e;touch-action:manipulation;transition:border-color .16s,box-shadow .16s}
.tool-card:hover{border-color:#b7c6c2;box-shadow:0 8px 24px #1827341c}
.tool-card:focus-visible,.nav-link:focus-visible{outline:3px solid #176b574d;outline-offset:3px}
.mark{display:grid;place-items:center;width:54px;height:54px;flex-shrink:0;margin-bottom:8px;border:1px solid var(--line);border-radius:50%}
.mark svg{width:32px;height:32px}
.icon-card{color:#285f91;background:#edf3fa}
.icon-globe{color:#176b57;background:#e5f3ee}
.tool-card h2{display:flex;align-items:center;justify-content:center;width:100%;min-height:38px;margin:0;font-size:14px;line-height:19px;text-align:center;overflow-wrap:anywhere}
.tool-en{display:block;width:100%;margin:2px 0 8px;color:var(--muted);font-size:11px;line-height:16px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.status{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border-radius:999px;color:var(--primary);background:#e5f3ee;font-size:11px;font-weight:700;line-height:16px;white-space:nowrap}
.status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.tool-card[hidden]{display:none}
#empty{margin:0;padding:45px 12px;text-align:center;font-size:14px;color:var(--muted)}
@media(min-width:1100px){.grid{grid-template-columns:repeat(10,minmax(0,1fr))}}
@media(min-width:1400px){.grid{grid-template-columns:repeat(12,minmax(0,1fr))}}
@media(min-width:1700px){.grid{grid-template-columns:repeat(14,minmax(0,1fr))}}
@media(max-width:700px){.grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}}
@media(max-width:560px){
  .shell{padding-left:max(8px,env(safe-area-inset-left));padding-right:max(8px,env(safe-area-inset-right))}
  .topbar-inner{min-height:50px;padding-top:3px;padding-bottom:3px}
  h1{font-size:19px}
  .nav-link{font-size:13px}
  .toolbar{grid-template-columns:minmax(0,1fr) 116px;gap:6px;padding:9px 0}
  .field input,.field select{min-height:44px;padding:8px;font-size:16px}
  .grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}
  .tool-card{min-height:154px;padding:9px 3px}
  .mark{width:46px;height:46px;margin-bottom:7px}
  .mark svg{width:28px;height:28px}
  .tool-card h2{font-size:12px;line-height:17px;min-height:34px}
  .tool-en{font-size:10px;margin-bottom:7px}
  .status{padding:3px 6px}
}
@media(max-width:430px){.grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.tool-card{transition:none}}
