:root{--color-bg:#f6f7f9;--color-surface:#fff;--color-border:#e2e5ea;--color-text:#1a1d23;--color-muted:#6b7280;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-danger:#dc2626;--radius:8px}*{box-sizing:border-box}body,html{padding:0;margin:0}body{background:var(--color-bg);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}a{color:inherit}button,input,select{font:inherit}button{cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius);border:1px solid transparent;padding:.55rem 1.1rem;font-weight:600;background:var(--color-primary);color:#fff;transition:background .15s ease}.btn:hover{background:var(--color-primary-hover)}.btn.secondary{background:transparent;color:var(--color-text);border-color:var(--color-border)}.field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:1rem}.field label{font-size:.85rem;color:var(--color-muted)}.field input,.field select{padding:.55rem .7rem}.card,.field input,.field select{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.card{padding:1.5rem}.error-text{color:var(--color-danger);font-size:.85rem}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem}.auth-shell .card{width:100%;max-width:420px}table.data-table{width:100%;border-collapse:collapse;font-size:.92rem}table.data-table td,table.data-table th{text-align:left;padding:.55rem .6rem;border-bottom:1px solid var(--color-border)}table.data-table th{color:var(--color-muted);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.02em}.btn.small{padding:.3rem .65rem;font-size:.82rem}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:.15rem .6rem;font-size:.75rem;font-weight:700;background:#eef2ff;color:var(--color-primary)}.badge.warn{background:#fff7ed;color:#c2410c}.badge.ok{background:#ecfdf5;color:#047857}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:1.5rem;gap:1.5rem}@media (max-width:800px){.grid-2{grid-template-columns:1fr}}