:root{--bg:#0f1a14;--card:#1a2b22;--line:#2d4a3a;--text:#e8f5ee;--muted:#8fb39f;--accent:#3ecf8e;--warn:#f0c14b;--danger:#e87a6b;--rare:#c9a0ff}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,"Noto Sans TC",sans-serif;background:var(--bg);color:var(--text);line-height:1.45}
header{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
header h1{font-size:1.1rem;margin:0}.tabs{display:flex;gap:6px;flex-wrap:wrap}
button,.tab{background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 12px;cursor:pointer}
button.primary{background:var(--accent);color:#062;border-color:transparent;font-weight:600}
button:disabled{opacity:.45;cursor:not-allowed}.tab.active{border-color:var(--accent);color:var(--accent)}
main{padding:12px 16px 40px;max-width:1100px;margin:0 auto}.panel{display:none}.panel.active{display:block}
.grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px}
.card h3{margin:0 0 6px;font-size:1rem}.muted{color:var(--muted);font-size:.85rem}
.badge{display:inline-block;font-size:.72rem;padding:2px 6px;border-radius:999px;border:1px solid var(--line);margin-right:4px}
.badge.rare{border-color:var(--rare);color:var(--rare)}.badge.warn{border-color:var(--warn);color:var(--warn)}
.sil{display:inline-flex;align-items:center;gap:4px;background:#0b1510;border-radius:8px;padding:4px 8px;margin:3px 3px 0 0;font-size:.85rem}
.sil.locked{opacity:.75;filter:grayscale(.3)}.sil.unlocked{border:1px solid var(--accent)}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}
input,select{background:#0b1510;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px}
table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{border-bottom:1px solid var(--line);padding:6px;text-align:left;vertical-align:top}
.reason{font-size:.78rem;color:var(--muted)}.fail{color:var(--danger)}.ok{color:var(--accent)}
.toast{position:fixed;bottom:16px;right:16px;background:var(--card);border:1px solid var(--accent);padding:10px 14px;border-radius:10px;max-width:320px;display:none}
.redline{background:#1a1510;border:1px solid var(--warn);border-radius:10px;padding:10px;margin:10px 0;font-size:.9rem}
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);display:none;align-items:center;justify-content:center;padding:16px}
.modal{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;max-width:480px;width:100%}
