@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

/* =========================================================================
   TEMA CLARO PROFESIONAL · barra lateral + contenido
   (mismos nombres de clases y variables que antes: toda la lógica JS
   existente sigue funcionando sin cambios)
   ========================================================================= */
:root{
  --bg:#F2F4F9; --surface:#FFFFFF; --surface-2:#F7F9FC; --surface-3:#EEF1F7;
  --border:#E2E7F0; --text:#1E2635; --text-mute:#5B6575; --text-dim:#8A94A6;
  --amber:#B45309; --amber-dim:#92400E; --copper:#9A5B2E;
  --green:#15803D; --green-dim:#166534; --red:#C2372A; --blue:#1D4ED8;
  --primary:#2563EB; --primary-dark:#1D4ED8; --primary-soft:#EFF4FF;
  --side-bg:linear-gradient(180deg,#232048 0%,#3A2A5E 60%,#4A2F63 100%);
  --radius:10px;
  --shadow:0 1px 2px rgba(23,32,55,.05), 0 4px 14px rgba(23,32,55,.06);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg);
  color:var(--text); font-family:'Inter',sans-serif; min-height:100vh; -webkit-font-smoothing:antialiased;
}
.mono{font-family:'IBM Plex Mono',monospace;}
#app{margin:0;padding:0;}

/* ---------- Barra lateral ---------- */
#view-app{display:flex;min-height:100vh;}
.sidebar{
  width:232px;min-width:232px;background:var(--side-bg);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;
}
.side-brand{display:flex;align-items:center;gap:11px;padding:20px 18px 16px;border-bottom:1px solid rgba(255,255,255,.08);}
.side-brand .brand-mark{width:38px;height:38px;min-width:38px;border-radius:9px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;}
.side-brand .brand-mark svg{width:20px;height:20px;}
.side-brand h1{font-family:'Space Grotesk',sans-serif;font-size:15px;font-weight:700;margin:0;color:#fff;letter-spacing:.3px;}
.side-brand p{margin:2px 0 0;font-size:9.5px;color:rgba(255,255,255,.45);font-family:'IBM Plex Mono',monospace;letter-spacing:.6px;text-transform:uppercase;}
.side-nav{flex:1;padding:14px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;}
.side-nav .nav-group{font-size:9.5px;color:rgba(255,255,255,.38);font-family:'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:1px;padding:14px 12px 6px;}
.side-item{
  display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:8px;
  color:rgba(255,255,255,.72);font-size:13px;font-weight:500;cursor:pointer;
  transition:background .15s,color .15s;user-select:none;border:none;background:none;text-align:left;width:100%;
}
.side-item .ni{width:20px;text-align:center;font-size:15px;opacity:.9;}
.side-item:hover{background:rgba(255,255,255,.08);color:#fff;}
.side-item.flip{background:rgba(255,255,255,.14);color:#fff;font-weight:600;box-shadow:inset 3px 0 0 #7EB1FF;}
.side-item.locked{display:none;}
.side-foot{padding:12px 14px;border-top:1px solid rgba(255,255,255,.08);font-size:10.5px;color:rgba(255,255,255,.35);font-family:'IBM Plex Mono',monospace;}

/* ---------- Área principal ---------- */
.main-area{flex:1;min-width:0;padding:0 28px 60px;display:flex;flex-direction:column;}
.topbar{display:flex;align-items:center;justify-content:flex-end;gap:14px;padding:14px 0;margin-bottom:10px;border-bottom:1px solid var(--border);}
.brand{display:none;}
.topbar-right{display:flex;align-items:center;gap:10px;}
.user-pill{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);padding:6px 8px 6px 13px;border-radius:30px;font-size:12.5px;box-shadow:var(--shadow);}
.user-avatar{width:26px;height:26px;border-radius:50%;background:linear-gradient(155deg,var(--primary),#7C3AED);display:flex;align-items:center;justify-content:center;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:11px;color:#fff;}
.role-tag{font-family:'IBM Plex Mono',monospace;font-size:9.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;}
.icon-link{width:32px;height:32px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text-mute);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;box-shadow:var(--shadow);}
.icon-link:hover{color:var(--primary);border-color:var(--primary);}

.dot{width:7px;height:7px;border-radius:50%;background:var(--green);}

/* ---------- Título de página ---------- */
.page-title{font-family:'Space Grotesk',sans-serif;font-size:22px;font-weight:700;margin:14px 0 2px;}
.page-sub{font-size:13px;color:var(--text-mute);margin:0 0 22px;}

/* ---------- Tablero de métricas (Inicio) ---------- */
.kpi-section{margin-bottom:26px;}
.kpi-section > h4{
  font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:1.4px;color:var(--text-dim);
  text-transform:uppercase;margin:0 0 12px;display:flex;align-items:center;gap:10px;
}
.kpi-section > h4::after{content:"";flex:1;height:1px;background:var(--border);}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;}
.kpi-card{
  background:var(--surface);border:1px solid var(--border);border-radius:12px;
  padding:16px 18px;box-shadow:var(--shadow);transition:border-color .15s, transform .12s;
}
.kpi-card.clickable{cursor:pointer;}
.kpi-card.clickable:hover{border-color:var(--primary);transform:translateY(-2px);}
.kpi-card .k-lbl{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--text-mute);font-weight:600;text-transform:uppercase;letter-spacing:.6px;}
.kpi-card .k-lbl .ki{font-size:13px;}
.kpi-card b.k-val{display:block;font-family:'Space Grotesk',sans-serif;font-size:24px;font-weight:700;margin-top:8px;color:var(--text);}
.kpi-card .k-sub{display:block;font-size:11px;color:var(--text-dim);margin-top:3px;}

/* ---------- Portada de ingreso ---------- */
#view-login{min-height:100vh;display:flex;flex-direction:column;}
.login-cols{flex:1;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);}

/* Banner superior de la portada */
.login-banner{width:100%;background:var(--marca-oscuro,#101B33);line-height:0;}
.login-banner img{width:100%;max-height:190px;object-fit:cover;display:block;}
.login-banner a{display:block;line-height:0;}

/* Panel izquierdo: identidad de la empresa */
.login-brand{
  background:
    radial-gradient(circle at 18% 12%, rgba(255,255,255,.10), transparent 42%),
    linear-gradient(155deg, var(--marca-oscuro,#101B33) 0%, var(--marca,#1D4ED8) 130%);
  color:#fff;display:flex;align-items:center;justify-content:center;padding:48px 44px;position:relative;overflow:hidden;
}
.login-brand::after{
  content:"";position:absolute;inset:0;opacity:.07;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.6) 1px, transparent 1px),
                   linear-gradient(90deg, rgba(255,255,255,.6) 1px, transparent 1px);
  background-size:56px 56px;
}
.login-brand-inner{position:relative;z-index:1;max-width:420px;width:100%;}
.lb-logo{min-height:60px;display:flex;align-items:center;margin-bottom:22px;color:#fff;}
.lb-logo img{height:46px;width:auto;max-width:250px;object-fit:contain;display:block;}
/* Los logos oscuros necesitan fondo claro para verse sobre el panel oscuro.
   Se controla con la casilla "logo sobre fondo claro" en 🏢. */
.lb-logo.con-fondo{background:#fff;border-radius:12px;padding:12px 18px;display:inline-flex;
  box-shadow:0 4px 18px rgba(0,0,0,.18);min-height:auto;}
.lb-title{font-family:'Space Grotesk',sans-serif;font-size:30px;font-weight:700;margin:0 0 8px;letter-spacing:-.4px;line-height:1.15;}
.lb-slogan{font-size:14px;color:rgba(255,255,255,.72);margin:0 0 30px;line-height:1.55;max-width:360px;}
.lb-features{list-style:none;padding:0;margin:0 0 32px;display:flex;flex-direction:column;gap:11px;}
.lb-features li{display:flex;align-items:center;gap:11px;font-size:13.5px;color:rgba(255,255,255,.88);}
.lb-features li span{width:30px;height:30px;min-width:30px;border-radius:8px;background:rgba(255,255,255,.12);
  display:flex;align-items:center;justify-content:center;font-size:14px;}
.lb-contacto{display:flex;flex-direction:column;gap:7px;font-size:12.5px;color:rgba(255,255,255,.66);
  border-top:1px solid rgba(255,255,255,.14);padding-top:20px;}
.lb-contacto a{color:rgba(255,255,255,.82);text-decoration:none;}
.lb-contacto a:hover{color:#fff;text-decoration:underline;}
.lb-contacto div{display:flex;gap:9px;align-items:flex-start;}
.lb-redes{display:flex;gap:9px;margin-top:20px;flex-wrap:wrap;}
.lb-redes a{width:36px;height:36px;border-radius:9px;background:rgba(255,255,255,.11);border:1px solid rgba(255,255,255,.14);
  display:flex;align-items:center;justify-content:center;color:#fff;text-decoration:none;transition:all .18s;}
.lb-redes a:hover{background:rgba(255,255,255,.22);transform:translateY(-2px);}
.lb-redes svg{width:17px;height:17px;fill:currentColor;}

/* Panel derecho: formulario */
.login-form-side{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 28px;background:var(--bg);}
.login-card{
  width:100%;max-width:390px;background:var(--surface);border:1px solid var(--border);
  border-radius:16px;padding:34px 30px;position:relative;overflow:hidden;box-shadow:0 10px 40px rgba(23,32,55,.08);
}
.login-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--marca,var(--primary));}
.login-mark{width:54px;height:54px;border-radius:12px;background:var(--primary-soft);border:1px solid #D6E2FB;
  display:flex;align-items:center;justify-content:center;margin:0 auto 18px;color:var(--marca,var(--primary));overflow:hidden;}
.login-mark img{height:34px;width:auto;max-width:46px;object-fit:contain;}
.login-pie{margin-top:22px;font-size:11.5px;color:var(--text-dim);text-align:center;line-height:1.7;max-width:390px;}

@media(max-width:900px){
  .login-cols{grid-template-columns:1fr;}
  .login-banner img{max-height:120px;}
  .login-brand{padding:34px 24px;}
  .lb-features{display:none;}
  .login-brand-inner{max-width:520px;text-align:center;}
  .lb-logo{justify-content:center;}
  .lb-contacto{align-items:center;}
  .lb-contacto div{justify-content:center;}
  .lb-redes{justify-content:center;}
}
.login-card h2{font-family:'Space Grotesk',sans-serif;text-align:center;margin:0 0 4px;font-size:19px;}
.login-card p.sub{text-align:center;color:var(--text-mute);font-size:12.5px;margin:0 0 24px;}
.login-field{margin-bottom:14px;}
.login-field label{display:block;font-size:11px;color:var(--text-mute);font-family:'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;}
.login-field input{width:100%;background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:11px 12px;border-radius:8px;font-size:13.5px;}
.login-field input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.12);}
.login-error{background:#FDECEA;border:1px solid #F5C6BE;color:var(--red);font-size:12.5px;padding:9px 12px;border-radius:8px;margin-bottom:14px;display:none;}
.login-btn{width:100%;padding:12px;border-radius:8px;border:1px solid var(--primary-dark);background:linear-gradient(180deg,var(--primary),var(--primary-dark));color:#fff;font-weight:700;font-size:13.5px;cursor:pointer;font-family:'Inter',sans-serif;}
.login-btn:hover{filter:brightness(1.06);}
.login-hint{margin-top:18px;padding-top:16px;border-top:1px solid var(--border);font-size:11.5px;color:var(--text-dim);text-align:center;line-height:1.6;}
.security-note{display:flex;gap:8px;align-items:flex-start;margin-top:14px;font-size:11px;color:var(--text-dim);background:var(--surface-2);border:1px solid var(--border);padding:10px 12px;border-radius:8px;}

/* ---------- Paneles ---------- */
.panel-frame{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:26px 24px 22px;position:relative;box-shadow:var(--shadow);}
.panel-label{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:1.6px;color:var(--text-dim);text-transform:uppercase;margin:0 0 18px;display:flex;align-items:center;gap:10px;}
.panel-label::after{content:"";flex:1;height:1px;background:var(--border);}

/* Breakers antiguos (por si quedan referencias): ahora invisibles */
.breaker-row{display:none;}
.breaker{display:none;}
.stat{font-family:'IBM Plex Mono',monospace;}
.stat b{display:block;font-size:18px;color:var(--text);}
.stat span{font-size:10px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.6px;}
.lock-note{font-size:11px;color:var(--text-dim);font-family:'IBM Plex Mono',monospace;}

.hidden{display:none !important;}
.module-view{padding-top:6px;}
.module-header{display:flex;align-items:center;justify-content:space-between;margin:12px 0 18px;flex-wrap:wrap;gap:12px;}
.crumbs{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-mute);}
.crumbs b{color:var(--text);font-family:'Space Grotesk',sans-serif;font-size:19px;}
.back-btn{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);color:var(--text-mute);padding:7px 13px;border-radius:8px;cursor:pointer;font-size:12.5px;font-family:'Inter',sans-serif;transition:all .15s;box-shadow:var(--shadow);}
.back-btn:hover{color:var(--primary);border-color:var(--primary);}

.tabs{display:flex;gap:8px;margin-bottom:20px;border-bottom:1px solid var(--border);flex-wrap:wrap;}
.tab{font-family:'Inter',sans-serif;font-weight:600;font-size:12.5px;letter-spacing:.2px;color:var(--text-mute);background:none;border:none;padding:10px 4px;margin-right:16px;cursor:pointer;position:relative;}
.tab::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2.5px;border-radius:2px;background:transparent;transition:background .2s;}
.tab:hover{color:var(--text);}
.tab.active{color:var(--primary);}
.tab.active::after{background:var(--primary);}
.module-view.ven .tab.active::after, .module-view.usr .tab.active::after{background:var(--primary);}
.module-view.oc .tab.active::after{background:var(--primary);}

.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;flex-wrap:wrap;gap:10px;}
.toolbar-actions{display:flex;gap:8px;flex-wrap:wrap;}
.search-input{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:9px 12px;border-radius:8px;font-size:13px;min-width:220px;box-shadow:var(--shadow);}
.search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.1);}
.btn{font-family:'Inter',sans-serif;font-weight:600;font-size:13px;padding:9px 15px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:6px;box-shadow:var(--shadow);text-decoration:none;}
.btn:hover{border-color:var(--primary);color:var(--primary);}
.btn-primary{background:linear-gradient(180deg,var(--primary),var(--primary-dark));border-color:var(--primary-dark);color:#fff;}
.btn-primary:hover{filter:brightness(1.07);color:#fff;}
.module-view.ven .btn-primary, .module-view.usr .btn-primary{background:linear-gradient(180deg,var(--primary),var(--primary-dark));border-color:var(--primary-dark);color:#fff;}
.module-view.oc .btn-primary{background:linear-gradient(180deg,var(--primary),var(--primary-dark)) !important;border-color:var(--primary-dark) !important;color:#fff !important;}
.btn-ghost{background:transparent;box-shadow:none;}
.btn-sm{padding:6px 10px;font-size:12px;}
.file-btn{position:relative;overflow:hidden;}
.file-btn input{position:absolute;inset:0;opacity:0;cursor:pointer;}

.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;overflow-x:auto;box-shadow:var(--shadow);}
table{width:100%;border-collapse:collapse;font-size:13px;}
thead th{text-align:left;font-family:'Inter',sans-serif;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-mute);padding:11px 14px;border-bottom:1px solid var(--border);background:var(--surface-2);white-space:nowrap;}
tbody td{padding:11px 14px;border-bottom:1px solid #EDF0F6;color:var(--text);vertical-align:middle;}
tbody tr:last-child td{border-bottom:none;}
tbody tr:hover{background:#F6F9FE;}
.empty-row td{text-align:center;color:var(--text-dim);padding:36px;font-size:13px;}
.cell-mono{font-family:'IBM Plex Mono',monospace;color:var(--text-mute);font-size:12px;}
.row-actions{display:flex;gap:6px;justify-content:flex-end;}
.icon-btn{width:28px;height:28px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text-mute);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;}
.icon-btn:hover{color:var(--primary);border-color:var(--primary);}
.icon-btn.del:hover{color:var(--red);border-color:var(--red);}

.badge{font-family:'Inter',sans-serif;font-weight:600;font-size:11px;letter-spacing:.2px;padding:4px 10px;border-radius:20px;display:inline-flex;align-items:center;gap:6px;}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;}
.badge.pendiente{background:#FEF3E2;color:#B45309;}.badge.pendiente::before{background:#D97706;}
.badge.transito{background:#E7F0FE;color:#1D4ED8;}.badge.transito::before{background:#2563EB;}
.badge.recibido{background:#E5F5EC;color:#15803D;}.badge.recibido::before{background:#16A34A;}
.badge.cancelado{background:#FDECEA;color:#B91C1C;}.badge.cancelado::before{background:#DC2626;}
.badge.low{background:#FDECEA;color:#B91C1C;}.badge.low::before{background:#DC2626;}
.badge.ok{background:#E5F5EC;color:#15803D;}.badge.ok::before{background:#16A34A;}
.badge.parcial{background:#FEF3E2;color:#B45309;}.badge.parcial::before{background:#D97706;}
.badge.no{background:#FDECEA;color:#B91C1C;}.badge.no::before{background:#DC2626;}
.badge.admin{background:#F1E9FE;color:#6D28D9;}.badge.admin::before{background:#7C3AED;}
.badge.vendedor{background:#E7F0FE;color:#1D4ED8;}.badge.vendedor::before{background:#2563EB;}
.badge.completado{background:#E5F5EC;color:#15803D;}.badge.completado::before{background:#16A34A;}
.badge.importador{background:#FBEEE4;color:#9A5B2E;}.badge.importador::before{background:#C2703D;}

.overlay{position:fixed;inset:0;background:rgba(23,28,45,.45);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:100;overflow:auto;}
.modal{background:var(--surface);border:1px solid var(--border);border-radius:14px;width:100%;max-width:560px;padding:24px 24px 22px;box-shadow:0 18px 60px rgba(23,32,55,.18);}
.modal.wide{max-width:760px;}
.modal h3{margin-top:0;font-family:'Space Grotesk',sans-serif;font-size:17px;}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;}
.modal-head h3{margin:0;}
.modal-close{background:none;border:none;color:var(--text-mute);font-size:18px;cursor:pointer;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.form-grid.col1{grid-template-columns:1fr;}
.field{display:flex;flex-direction:column;gap:6px;}
.field.span2{grid-column:1/-1;}
.field label{font-size:11px;color:var(--text-mute);font-weight:600;text-transform:uppercase;letter-spacing:.4px;font-family:'Inter',sans-serif;}
.field input, .field select, .field textarea{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:10px 11px;border-radius:8px;font-size:13px;font-family:'Inter',sans-serif;}
.field input:focus, .field select:focus, .field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.1);}
.field-hint{font-size:11px;color:var(--text-dim);}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;}

.items-editor{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:14px;margin-top:6px;}
.items-row{display:grid;grid-template-columns:1fr 90px 110px 32px;gap:8px;margin-bottom:8px;align-items:center;}
.items-row select, .items-row input{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:8px 9px;border-radius:6px;font-size:12.5px;}
.items-total{display:flex;justify-content:flex-end;gap:10px;margin-top:10px;font-family:'IBM Plex Mono',monospace;font-size:14px;}
.items-total b{color:var(--primary);}

.sale-items-wrap{overflow-x:auto;}
table.sale-items-table{width:100%;border-collapse:collapse;min-width:880px;}
table.sale-items-table th{font-family:'Inter',sans-serif;font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-dim);text-align:left;padding:6px 6px;white-space:nowrap;}
table.sale-items-table td{padding:4px 6px;vertical-align:middle;}
table.sale-items-table input, table.sale-items-table select{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:7px 8px;border-radius:6px;font-size:12.5px;width:100%;}
table.sale-items-table .num{width:64px;}
table.sale-items-table .pct{width:56px;}
.totals-box{display:flex;flex-direction:column;align-items:flex-end;gap:4px;margin-top:12px;font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--text-mute);}
.totals-box .line{display:flex;gap:18px;min-width:220px;justify-content:space-between;}
.totals-box .line.grand{color:var(--text);font-size:16px;border-top:1px solid var(--border);padding-top:6px;margin-top:2px;}
.totals-box .line.grand b{color:var(--primary);}

.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:#1E2635;border:1px solid #2C3547;color:#fff;padding:12px 18px;border-radius:10px;font-size:13px;opacity:0;transition:all .25s;z-index:200;display:flex;align-items:center;gap:8px;max-width:90vw;box-shadow:0 8px 30px rgba(23,32,55,.3);}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.toast .dot{background:#4ADE80;}
.toast.error .dot{background:#F87171;}

.print-doc{position:fixed;left:-9999px;top:0;width:800px;background:#fff;}

/* ---------- Calendario de entregas ---------- */
.cal-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow);}
.cal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);}
.cal-title{font-family:'Space Grotesk',sans-serif;font-size:16px;font-weight:700;}
.cal-nav{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:7px 14px;border-radius:6px;cursor:pointer;font-size:13px;font-family:'Inter',sans-serif;}
.cal-nav:hover{border-color:var(--primary);color:var(--primary);}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);}
.cal-dayname{text-align:center;font-family:'Inter',sans-serif;font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);padding:10px 4px;border-bottom:1px solid var(--border);background:var(--surface-2);}
.cal-cell{min-height:82px;padding:6px 7px;border-right:1px solid #EDF0F6;border-bottom:1px solid #EDF0F6;vertical-align:top;}
.cal-cell:nth-child(7n+8){border-right:none;}
.cal-day-num{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--text-dim);margin-bottom:4px;}
.cal-day-num.today{color:var(--primary);font-weight:700;}
.cal-day-num.other-month{color:#D5DAE5;}
.cal-event{font-size:10.5px;font-weight:600;padding:3px 7px;border-radius:5px;margin-bottom:3px;cursor:pointer;background:#E7F0FE;color:#1D4ED8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid #C9DCFB;}
.cal-event:hover{background:#D4E4FC;}

/* ---------- Responsive ---------- */
@media(max-width:860px){
  #view-app{flex-direction:column;}
  .sidebar{width:100%;min-width:0;height:auto;position:relative;}
  .side-nav{flex-direction:row;flex-wrap:wrap;padding:8px;}
  .side-nav .nav-group{display:none;}
  .main-area{padding:0 14px 40px;}
}


/* ---------- Banner dentro del sistema ---------- */
.app-banner{margin:0 -28px 0;line-height:0;background:var(--surface-3);}
.app-banner img{width:100%;max-height:120px;object-fit:cover;display:block;}
.app-banner a{display:block;line-height:0;}
@media(max-width:860px){ .app-banner{margin:0 -14px;} .app-banner img{max-height:80px;} }

/* ---------- Menú de usuario (con cerrar sesión) ---------- */
.user-menu-wrap{position:relative;}
button.user-pill{cursor:pointer;font-family:'Inter',sans-serif;font-size:12.5px;color:var(--text);transition:border-color .15s;}
button.user-pill:hover{border-color:var(--primary);}
.user-caret{color:var(--text-dim);font-size:10px;margin-left:2px;}
.user-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:246px;background:var(--surface);
  border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 40px rgba(23,32,55,.16);
  padding:6px;z-index:120;overflow:hidden;}
.um-head{padding:11px 12px 12px;border-bottom:1px solid var(--border);margin-bottom:5px;}
.um-head div:first-child{font-weight:600;font-size:13.5px;color:var(--text);}
.um-head div:last-child{font-size:11.5px;color:var(--text-dim);margin-top:2px;word-break:break-all;}
.um-item{display:block;width:100%;text-align:left;background:none;border:none;padding:10px 12px;
  border-radius:8px;font-size:13px;color:var(--text);cursor:pointer;font-family:'Inter',sans-serif;transition:background .12s;}
.um-item:hover{background:var(--surface-2);}
.um-item.danger{color:#B91C1C;margin-top:4px;border-top:1px solid var(--border);border-radius:0 0 8px 8px;}
.um-item.danger:hover{background:#FDECEA;}
