:root{
  --blue:#1B2FE0;
  --blue-dark:#0B1450;
  --black:#0B0B0B;
  --gray-bg:#F2F3FC;
  --gray-border:#E3E4F0;
  --text:#26262b;
  --muted:#6b6b75;
  --green:#1a9c53;
  --orange:#e08a1c;
  --red:#d63a3a;
  --white:#ffffff;
}
*{box-sizing:border-box;}
body{margin:0;font-family:-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;background:var(--gray-bg);color:var(--text);}
.hidden{display:none !important;}

.logo-img{display:block;object-fit:contain;}
.logo-img-lg{height:56px;margin:0 auto;}
.logo-chip{background:#fff;border-radius:10px;padding:8px 14px;display:inline-block;}
.logo-img-sm{height:26px;}

/* LOGIN */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#eef0ff,#ffffff);}
.login-card{background:#fff;padding:48px 44px;border-radius:16px;box-shadow:0 12px 40px rgba(11,20,80,.12);width:360px;text-align:center;}
.login-sub{color:var(--muted);margin:6px 0 26px;font-size:14px;}
.login-card form{display:flex;flex-direction:column;gap:6px;text-align:left;}
.login-card label{font-size:13px;font-weight:600;color:var(--muted);margin-top:10px;}
.login-card input{padding:10px 12px;border:1px solid var(--gray-border);border-radius:8px;font-size:14px;}
.login-card input:focus{outline:none;border-color:var(--blue);}
.btn-primary{margin-top:20px;background:var(--blue);color:#fff;border:none;padding:12px;border-radius:10px;font-weight:700;font-size:15px;cursor:pointer;}
.btn-primary:hover{background:var(--blue-dark);}
.error-msg{color:var(--red);font-size:13px;min-height:16px;margin-top:6px;}

/* APP SHELL */
.app-shell{display:flex;min-height:100vh;}
.sidebar{width:230px;background:var(--black);color:#fff;display:flex;flex-direction:column;padding:24px 18px;position:sticky;top:0;height:100vh;}
.sidebar nav{display:flex;flex-direction:column;gap:4px;margin-top:30px;flex:1;}
.sidebar nav a{color:#d9d9e6;text-decoration:none;padding:10px 12px;border-radius:8px;font-size:14px;font-weight:600;display:flex;align-items:center;gap:10px;}
.nav-icon{width:18px;height:18px;flex-shrink:0;}
.btn-icon svg{display:block;}
.notif-wrap .btn-icon{display:inline-flex;align-items:center;}
.sidebar nav a:hover{background:#1a1a22;}
.sidebar nav a.active{background:var(--blue);color:#fff;}
.sidebar-footer{border-top:1px solid #26262f;padding-top:14px;font-size:13px;color:#b8b8c6;}
#user-badge{margin-bottom:8px;font-weight:600;color:#fff;}
.btn-link{background:none;border:none;color:#9ba3ff;cursor:pointer;padding:0;font-size:13px;}

.content{flex:1;display:flex;flex-direction:column;}
.topbar{background:#fff;padding:16px 30px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--gray-border);}
#page-title{font-size:20px;font-weight:800;}
.view-root{padding:28px 30px;flex:1;}

.btn-icon{background:none;border:none;font-size:20px;cursor:pointer;position:relative;}
.badge{position:absolute;top:-6px;right:-8px;background:var(--red);color:#fff;border-radius:10px;font-size:10px;padding:2px 5px;font-weight:700;}
.notif-wrap{position:relative;}
.notif-panel{position:absolute;right:0;top:34px;width:340px;background:#fff;border:1px solid var(--gray-border);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);max-height:400px;overflow:auto;z-index:50;}
.notif-item{padding:12px 14px;border-bottom:1px solid var(--gray-border);font-size:13px;}
.notif-item small{display:block;color:var(--muted);margin-top:3px;}

/* Generic UI */
.card{background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 10px rgba(20,20,60,.05);margin-bottom:18px;}
.grid{display:grid;gap:16px;}
.grid-4{grid-template-columns:repeat(4,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
.stat{background:#fff;border-radius:12px;padding:18px 20px;box-shadow:0 2px 10px rgba(20,20,60,.05);}
.stat .num{font-size:30px;font-weight:800;color:var(--blue);}
.stat .label{font-size:13px;color:var(--muted);font-weight:600;}

table{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;}
th{text-align:left;background:var(--blue);color:#fff;padding:10px 12px;font-size:13px;font-weight:700;}
td{padding:10px 12px;font-size:13.5px;border-bottom:1px solid var(--gray-border);}
tr:hover td{background:#fafbff;}

.pill{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11.5px;font-weight:700;color:#fff;}
.pill-green{background:var(--green);}
.pill-orange{background:var(--orange);}
.pill-red{background:var(--red);}
.pill-gray{background:#9a9aa4;}
.pill-blue{background:var(--blue);}

.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:10px;flex-wrap:wrap;}
.btn{background:var(--blue);color:#fff;border:none;padding:9px 16px;border-radius:8px;font-weight:700;font-size:13.5px;cursor:pointer;}
.btn.secondary{background:#fff;color:var(--blue);border:1px solid var(--blue);}
.btn.danger{background:var(--red);}
.btn:hover{opacity:.9;}
.search{padding:9px 12px;border:1px solid var(--gray-border);border-radius:8px;font-size:13.5px;width:240px;}

/* Modal */
.modal-overlay{position:fixed;inset:0;background:rgba(11,11,20,.45);display:flex;align-items:center;justify-content:center;z-index:100;}
.modal-box{background:#fff;border-radius:14px;padding:28px;width:520px;max-height:88vh;overflow:auto;}
.modal-box h3{margin:0 0 16px;font-size:18px;}
.form-row{margin-bottom:12px;display:flex;flex-direction:column;gap:4px;}
.form-row label{font-size:12.5px;font-weight:700;color:var(--muted);}
.form-row input, .form-row select, .form-row textarea{padding:9px 10px;border:1px solid var(--gray-border);border-radius:8px;font-size:13.5px;font-family:inherit;}
.form-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;}

.detail-tabs{display:flex;gap:6px;margin-bottom:14px;}
.detail-tabs button{background:#fff;border:1px solid var(--gray-border);padding:8px 14px;border-radius:8px;font-weight:700;font-size:13px;cursor:pointer;}
.detail-tabs button.active{background:var(--blue);color:#fff;border-color:var(--blue);}

.notelist{display:flex;flex-direction:column;gap:8px;}
.note-item{background:var(--gray-bg);border-radius:8px;padding:10px 12px;font-size:13px;}
.note-item small{color:var(--muted);display:block;margin-top:4px;}

.credbox{background:var(--gray-bg);border-radius:10px;padding:14px;font-family:monospace;font-size:13px;margin-top:10px;}

.empty{color:var(--muted);text-align:center;padding:40px 0;font-size:14px;}

/* Cotizaciones */
.qi-table{width:100%;border-collapse:collapse;}
.qi-table th{text-align:left;font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.02em;padding:0 8px 8px;}
.qi-table td{padding:6px 8px;vertical-align:top;}
.qi-table input, .qi-table textarea{width:100%;padding:8px 9px;border:1px solid var(--gray-border);border-radius:7px;font-size:13.5px;font-family:inherit;box-sizing:border-box;}
.qi-table textarea{resize:vertical;min-height:38px;}
.qi-remove{background:none;border:none;color:var(--red);cursor:pointer;font-size:18px;line-height:1;padding:6px;}
.qi-linetotal{font-weight:700;padding-top:10px;white-space:nowrap;}
.totals-box{margin-left:auto;width:280px;display:flex;flex-direction:column;gap:6px;font-size:14px;}
.totals-box .row{display:flex;justify-content:space-between;}
.totals-box .row.total{font-weight:800;font-size:17px;color:var(--blue);border-top:1px solid var(--gray-border);padding-top:8px;margin-top:4px;}
