:root{--black: #000000;--black-soft: #1a1a1a;--red: #e30613;--red-dark: #b8050f;--red-soft: #ffe5e7;--white: #ffffff;--gray-900: #1a1a1a;--gray-700: #404040;--gray-500: #737373;--gray-400: #a3a3a3;--gray-300: #d4d4d4;--gray-200: #e5e5e5;--gray-100: #f5f5f5;--gray-50: #fafafa;--bg: #000000;--bg-app: #fafafa;--bg-card: #ffffff;--text: #1a1a1a;--text-muted: #737373;--text-light: #ffffff;--primary: #000000;--accent: #e30613;--border: #e5e5e5;--success: #16a34a;--warning: #f59e0b;--danger: #e30613;--info: #2563eb;--radius: 6px;--shadow: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-lg: 0 10px 25px rgba(0,0,0,.12)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:var(--bg-app);color:var(--text);min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer;border:none;border-radius:var(--radius);padding:.55rem 1rem;font-size:.9rem;font-weight:500;transition:all .15s}button:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--black);color:var(--text-light)}.btn-primary:hover:not(:disabled){background:var(--gray-700)}.btn-accent{background:var(--accent);color:var(--white)}.btn-accent:hover:not(:disabled){background:var(--red-dark)}.btn-ghost{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-ghost:hover:not(:disabled){background:var(--gray-100)}.btn-danger{background:var(--danger);color:#fff}input,select,textarea{font-family:inherit;font-size:.9rem;padding:.55rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:#fff;width:100%;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #e306131a}label{display:block;font-size:.85rem;font-weight:500;margin-bottom:.25rem;color:var(--text)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}.app-shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:var(--black);color:var(--text-light);padding:0;display:flex;flex-direction:column;border-right:3px solid var(--accent)}.sidebar-brand{padding:1.25rem;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:.5rem;background:var(--white)}.sidebar-brand img{display:block;max-width:100%;height:auto;max-height:60px}.sidebar-nav{flex:1;padding-top:.5rem}.sidebar-nav-section{padding:.85rem 1.25rem .25rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--gray-500);font-weight:600}.sidebar-link{display:block;padding:.55rem 1.25rem;color:var(--gray-300);text-decoration:none;font-size:.9rem;border-left:3px solid transparent;transition:all .15s}.sidebar-link:hover{background:#ffffff0a;color:var(--white);text-decoration:none}.sidebar-link.active{background:#e306131f;color:var(--white);border-left-color:var(--accent);font-weight:500}.sidebar-footer{padding:1rem 1.25rem;border-top:1px solid rgba(255,255,255,.08);font-size:.85rem}.sidebar-footer button{width:100%;background:transparent;border:1px solid rgba(255,255,255,.15);color:var(--gray-300)}.sidebar-footer button:hover{background:#ffffff0d;color:var(--white)}.main{padding:1.5rem 2rem;max-width:1400px;width:100%}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.page-header h1{margin:0;font-size:1.5rem;color:var(--black)}.page-header p{margin:.25rem 0 0;color:var(--text-muted);font-size:.9rem}.grid{display:grid;gap:1rem}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 900px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.kpi-card{padding:1rem;border-top:3px solid var(--gray-200);transition:all .15s}.kpi-card.kpi-success{border-top-color:var(--success)}.kpi-card.kpi-danger{border-top-color:var(--accent)}.kpi-card.kpi-warning{border-top-color:var(--warning)}.kpi-card.kpi-info{border-top-color:var(--info)}.kpi-label{font-size:.8rem;color:var(--text-muted);margin-bottom:.4rem;text-transform:uppercase;letter-spacing:.03em;font-weight:500}.kpi-value{font-size:1.6rem;font-weight:700;margin:0;color:var(--black)}.kpi-sub{font-size:.8rem;color:var(--text-muted);margin-top:.25rem}table{width:100%;border-collapse:collapse;font-size:.9rem}th{text-align:left;padding:.7rem .75rem;background:var(--black);font-weight:600;color:var(--white);border-bottom:1px solid var(--border);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}td{padding:.6rem .75rem;border-bottom:1px solid var(--border)}tr:hover td{background:var(--gray-50)}.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.badge-success{background:#dcfce7;color:#166534}.badge-warning{background:#fef3c7;color:#92400e}.badge-danger{background:var(--red-soft);color:var(--red-dark)}.badge-info{background:#dbeafe;color:#1e40af}.badge-gray{background:var(--gray-200);color:var(--gray-700)}.linea-badge{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .5rem;border-radius:var(--radius);background:var(--gray-100);font-size:.75rem;font-weight:500}.linea-badge img{width:16px;height:16px;object-fit:contain}.form-row{display:grid;gap:.75rem;margin-bottom:.75rem}.form-row.cols-2{grid-template-columns:1fr 1fr}.form-row.cols-3{grid-template-columns:1fr 1fr 1fr}@media (max-width: 600px){.form-row.cols-2,.form-row.cols-3{grid-template-columns:1fr}}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.toolbar-left{flex:1}.toolbar-right{display:flex;gap:.5rem}.empty{text-align:center;padding:3rem 1rem;color:var(--text-muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:#fff;border-radius:var(--radius);width:100%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:2px solid var(--black);background:var(--black);color:var(--white)}.modal-header h2{margin:0;font-size:1.05rem;color:var(--white)}.modal-header .btn-ghost{color:var(--white);border-color:#fff3}.modal-header .btn-ghost:hover{background:#ffffff1a}.modal-body{padding:1.25rem}.modal-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:.75rem 1.25rem;border-top:1px solid var(--border);background:var(--gray-50)}.login-shell{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--black);padding:1rem;background-image:radial-gradient(circle at top right,rgba(227,6,19,.15) 0%,transparent 40%),radial-gradient(circle at bottom left,rgba(227,6,19,.08) 0%,transparent 40%)}.login-card{background:#fff;border-radius:var(--radius);padding:2rem;width:100%;max-width:400px;box-shadow:var(--shadow-lg);border-top:4px solid var(--accent)}.login-card .login-logo{display:block;margin:0 auto 1.5rem;max-width:220px;height:auto}.login-card h1{font-size:1.2rem;margin:0 0 .25rem;text-align:center;color:var(--black)}.login-card p{color:var(--text-muted);font-size:.85rem;margin:0 0 1.5rem;text-align:center}.error-msg{color:var(--accent);font-size:.85rem;margin-top:.5rem;padding:.5rem;background:var(--red-soft);border-radius:var(--radius)}.muted{color:var(--text-muted);font-size:.85rem}.center{text-align:center}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mb-2{margin-bottom:1rem}.flex{display:flex;gap:.5rem;align-items:center}.flex-between{display:flex;justify-content:space-between;align-items:center}.text-right{text-align:right}.config-banner{background:#fef3c7;border:1px solid #f59e0b;color:#92400e;padding:1rem 1.25rem;border-radius:var(--radius);margin:1rem}.config-banner h2{margin:0 0 .5rem;font-size:1rem}.config-banner code{background:#fff;padding:.1rem .4rem;border-radius:4px;font-family:monospace;font-size:.85rem}.linea-logo-cell{display:flex;align-items:center;gap:.6rem}.linea-logo-cell img{width:32px;height:32px;object-fit:contain;border-radius:4px;background:#fff;padding:2px;border:1px solid var(--border)}.linea-logo-cell .linea-name{font-weight:600}.linea-placeholder{width:32px;height:32px;border-radius:4px;background:var(--gray-200);display:inline-flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;color:var(--gray-700);border:1px solid var(--border)}
