:root{--bg:#f7f7f8;--card:#fff;--accent:#111;--accent-fg:#fff;--border:#e5e7eb;--success:#16a34a;--muted:#6b7280}
*{box-sizing:border-box}body{font-family:Inter,system-ui,sans-serif;max-width:960px;margin:0 auto;padding:16px;background:var(--bg);color:#111}
header{text-align:center;margin:16px 0}header h1{margin:0;font-size:28px}header p{color:var(--muted);margin:4px 0}
nav{display:flex;gap:8px;justify-content:center;margin:16px 0}nav button{padding:10px 18px;border:1px solid var(--border);background:var(--card);border-radius:999px;cursor:pointer;font-weight:600}nav button.active{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.tab{display:none}.tab.active{display:block}
.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px;margin:16px 0;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.form{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin:12px 0}label{font-size:13px;color:#374151}input,select{padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:#fff}
button.primary{background:var(--accent);color:var(--accent-fg);border:none;padding:10px 16px;border-radius:10px;font-weight:700;cursor:pointer}
button.primary:disabled{opacity:.6;cursor:not-allowed}
.log{background:#0b1220;color:#8ef0a8;padding:12px;border-radius:12px;min-height:80px;max-height:280px;overflow:auto;white-space:pre-wrap;font-size:12px;line-height:1.4}
.log.small{min-height:40px}
.reco{background:#f0fdf4;border:1px solid #bbf7d0;padding:12px;border-radius:12px;margin-top:12px}
.reco.hidden{display:none}.reco h3{margin:0 0 8px}
.hidden{display:none !important}.loader{display:flex;align-items:center;gap:10px;margin:12px 0;color:var(--muted)}.loader.hidden{display:none}
.spinner{width:18px;height:18px;border:3px solid #e5e7eb;border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.row{display:flex;gap:8px;margin:8px 0;flex-wrap:wrap}
table{border-collapse:collapse;width:100%;margin-top:8px}th,td{border:1px solid var(--border);padding:6px 8px;font-size:12px;text-align:left}th{background:#f9fafb}
.small{font-size:12px;color:var(--muted)}details summary{cursor:pointer;font-weight:600;margin:8px 0}
