@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");:root{--bg-base:#f8fafc;--bg-surface:#ffffff;--bg-elevated:#f1f5f9;--text-main:#0f172a;--text-muted:#64748b;--accent-primary:#3b82f6;--accent-hover:#2563eb;--success:#16a34a;--danger:#ef4444;--border:#e2e8f0;--radius:12px}[data-theme=dark]{--bg-base:#0f172a;--bg-surface:#1e293b;--bg-elevated:#334155;--text-main:#f8fafc;--text-muted:#94a3b8;--border:#334155;--success:#22c55e}*{box-sizing:border-box;padding:0;margin:0;font-family:Inter,sans-serif}body{background-color:var(--bg-base);color:var(--text-main);min-height:100vh;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius)}.btn-primary{background:var(--accent-primary);color:white;border:none;padding:12px 24px;border-radius:var(--radius);font-weight:600;font-size:14px;cursor:pointer;transition:background .15s ease;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.input-field{width:100%;background:var(--bg-base);border:1px solid var(--border);color:var(--text-main);padding:12px 16px;border-radius:var(--radius);font-size:14px;outline:none;transition:border-color .15s ease}.input-field:focus{border-color:var(--accent-primary)}.label{display:block;font-size:13px;font-weight:500;color:var(--text-muted);margin-bottom:6px}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--border);border-top-color:var(--accent-primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.table-responsive{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.stat-grid{grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px}.charts-grid,.stat-grid{display:grid;margin-bottom:32px}.charts-grid{grid-template-columns:2fr 1fr;grid-gap:24px;gap:24px}@media (max-width:900px){.stat-grid{grid-template-columns:repeat(2,1fr)}.charts-grid{grid-template-columns:1fr}}@media (max-width:540px){.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px}}