:root{--primary:#0D6EFD;--secondary:#FF6B00;--bg:#F5F7FA;--panel:#fff;--text:#1f2937;--muted:#64748b;--danger:#c62828;--success:#138a3d;--darkblue:#001F5B}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}aside{position:fixed;left:0;top:0;bottom:0;width:270px;background:linear-gradient(180deg,var(--darkblue),var(--primary));color:#fff;padding:18px;overflow:auto}main{margin-left:270px;min-height:100vh;padding:22px 28px 60px}.auth-main{margin-left:0;display:grid;place-items:center}.brand{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:800;margin-bottom:22px}.brand img{width:46px;height:46px;object-fit:contain;background:#fff;border-radius:12px;padding:4px}.brand b{background:var(--secondary);color:#111;padding:10px;border-radius:12px}nav a{display:block;color:#e5eef8;text-decoration:none;padding:11px 12px;border-radius:10px;margin:4px 0}nav a.active,nav a:hover{background:rgba(255,255,255,.16);color:#fff}.nav-title{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#bcd3e9;margin:18px 10px 8px}.logout{margin-top:20px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}h1{margin:0;font-size:28px}h2{margin:0 0 14px}.userchip{background:#fff;border:1px solid #e2e8f0;border-radius:999px;padding:8px 14px;color:var(--primary);font-weight:700}.panel{background:var(--panel);border:1px solid #e5e7eb;border-radius:18px;box-shadow:0 10px 25px rgba(15,76,129,.06);padding:20px;margin-bottom:20px}.narrow{max-width:760px}.auth-card{width:min(440px,92vw)}.login-logo{max-width:230px;max-height:110px;display:block;margin:0 auto 22px}.login-logo-text{text-align:center;font-weight:900;color:var(--primary);font-size:28px;margin-bottom:22px}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.card{background:linear-gradient(135deg,#fff,#f8fbff);border:1px solid #e5e7eb;border-radius:18px;padding:18px;border-left:6px solid var(--secondary);box-shadow:0 12px 28px rgba(13,110,253,.08)}.card small{display:block;color:var(--muted);font-weight:700}.card strong{font-size:28px;color:var(--primary)}label{display:block;font-weight:700;margin-bottom:12px}input,select,textarea{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:10px 12px;margin-top:6px;background:#fff}textarea{font-family:inherit}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.check{display:flex;gap:8px;align-items:center}.check input{width:auto}.button,button{border:0;border-radius:10px;padding:10px 14px;background:#e2e8f0;color:#111;text-decoration:none;cursor:pointer;font-weight:800;display:inline-block}.primary{background:var(--primary);color:#fff}.danger{background:#fee2e2;color:#991b1b}.actions{display:flex;gap:8px;align-items:center}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th{background:var(--primary);color:#fff;text-align:left;padding:11px;white-space:nowrap}td{border-bottom:1px solid #e5e7eb;padding:10px;vertical-align:top}tr:nth-child(even){background:#f8fafc}.row-error{background:#fff1f2!important}.badge{padding:5px 9px;border-radius:999px;background:#e2e8f0;font-size:12px;font-weight:800}.badge.ready,.ok{color:var(--success)}.badge.needs_mapping,.error{color:var(--danger)}.alert{padding:12px 14px;border-radius:12px;margin-bottom:14px}.alert.success{background:#dcfce7;color:#166534}.alert.danger{background:#fee2e2;color:#991b1b}.help{color:var(--muted);font-size:14px}.smart{border-left:6px solid var(--secondary);background:linear-gradient(135deg,#fff,#fffdf4)}pre{background:#0b1220;color:#dbeafe;padding:14px;border-radius:12px;overflow:auto;max-height:420px}footer{position:fixed;left:270px;right:0;bottom:0;background:#fff;border-top:1px solid #e5e7eb;text-align:center;color:#64748b;padding:10px;font-size:13px}@media(max-width:850px){aside{position:static;width:auto}main{margin-left:0}footer{left:0}.panel-head{display:block}}
@media print{aside,header form,.button,button,footer{display:none!important}main{margin:0}.panel{box-shadow:none;border:1px solid #ccc}}

.auth-card{background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(245,247,250,.92));border-top:5px solid var(--primary);border-bottom:5px solid var(--secondary)}
.primary{background:linear-gradient(90deg,var(--primary),var(--secondary));color:#fff}
.login-logo{max-width:320px;max-height:210px}
.brand span{font-weight:900;letter-spacing:.2px}
.row-duplicate{background:#ffe2e2!important;border-left:5px solid #dc3545}.tag-danger{display:inline-block;background:#dc3545;color:white;border-radius:999px;padding:2px 8px;font-size:11px;margin-left:6px}.table-toolbar{display:flex;gap:8px;margin-bottom:12px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:18px}.chart-card canvas{max-width:100%}.select2-container--default .select2-selection--multiple{min-height:42px;border:1px solid #d6dde8;border-radius:10px}.badge.duplicate{background:#dc3545;color:#fff}.badge.removed{background:#6c757d;color:#fff}.inline{display:inline}
@media print{aside,.panel.form-panel button,.button,.table-toolbar,footer{display:none!important}.dashboard-grid{grid-template-columns:1fr 1fr}.panel{break-inside:avoid}}

/* User menu permission matrix */
.permission-box{margin-top:18px;border:1px solid rgba(0,0,0,.08);border-radius:18px;padding:18px;background:linear-gradient(180deg,#ffffff,#f8fbff)}
.permission-box h3{margin:18px 0 10px;color:var(--primary);font-size:15px;text-transform:uppercase;letter-spacing:.08em}
.permission-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 16px;margin-bottom:8px}
.permission-check{background:#fff;border:1px solid rgba(15,76,129,.12);border-radius:12px;padding:10px 12px;display:flex;align-items:center;gap:8px}
.permission-check:hover{border-color:var(--primary);box-shadow:0 6px 16px rgba(13,110,253,.08)}
.permission-check input{width:18px;height:18px}

textarea{min-height:82px;padding:10px;border:1px solid #d7dfef;border-radius:10px;font-family:inherit}
.span2{grid-column:span 2}
.button.small{font-size:12px;padding:5px 8px;margin-top:5px;display:inline-block}
.table-toolbar{display:flex;gap:8px;margin:10px 0}
