/* ══════════════════════════════════════════════════
   EVORE CRM — Corporate Design System
   Light: Salesforce-inspired blue/white
   Dark: Charcoal with blue accents
   ══════════════════════════════════════════════════ */

/* ── Light theme (default) ───────────────────────── */
:root{
  /* Sidebar (light — tinted off-white) */
  --sb:#F7FAFD;--sb-text:#4A5568;--sb-active:#0176D3;--sb-hover:#E8F1FB;--sb-border:#E2E8F0;
  /* Brand accent */
  --ac:#0176D3;--ac2:#0047A1;--ac-rgb:1,118,211;
  /* Page surfaces */
  --bg:#F3F5F9;--surface:#FFFFFF;--surface2:#EEF2F8;
  /* Borders & shadows */
  --border:#D5DFF0;--border2:#B8C9E0;
  --shadow:0 1px 4px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);
  --shadow-md:0 4px 12px rgba(0,0,0,.08),0 2px 4px rgba(0,0,0,.04);
  --shadow-lg:0 8px 24px rgba(0,0,0,.10),0 4px 8px rgba(0,0,0,.06);
  /* Text */
  --text:#1A2536;--text2:#5A6A85;
  /* Topbar */
  --topbar-bg:#FFFFFF;--topbar-border:#E2E8F0;--input-bg:#FFFFFF;
  /* Semantic colors */
  --green:#2E844A;--red:#C23934;--orange:#DD7A01;--yellow:#F6C500;
  /* Status badge tokens */
  --st-ok-bg:#EDFBF0;--st-ok-text:#1A6B3C;--st-ok-border:#BEEFD3;
  --st-err-bg:#FFF0EE;--st-err-text:#8A1A1A;--st-err-border:#FFCCC7;
  --st-warn-bg:#FFF8E6;--st-warn-text:#7A4A00;--st-warn-border:#FADDAA;
  --st-info-bg:#EBF4FF;--st-info-text:#0A3D7A;--st-info-border:#B3D4F5;
  --st-muted-bg:#F4F6F9;--st-muted-text:#4A5568;--st-muted-border:#CBD5E0;
  /* Card */
  --card-shadow:var(--shadow);
  /* Shape */
  --radius:8px;--radius-sm:4px;--radius-lg:16px;--radius-pill:20px;--br:8px;
  /* Motion */
  --transition-fast:150ms ease;--transition-base:250ms ease;--transition-slow:350ms cubic-bezier(.4,0,.2,1);
  /* Spacing scale (8px base) */
  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;
  /* Typography */
  --font-micro:.69rem;--font-caption:.75rem;--font-small:.82rem;--font-body:.875rem;--font-title:1rem;--font-display:1.25rem;--font-hero:1.75rem;
  /* Content max-widths */
  --content-sm:480px;--content-md:700px;--content-lg:900px;--content-xl:1100px;
  /* Layout */
  --topbar-height:52px;--sb-width:64px;--sb-expanded-width:240px;
}

/* Logo theme toggle */
.logo-light{display:block}.logo-dark{display:none!important}
html[data-theme="dark"] .logo-light{display:none!important}
html[data-theme="dark"] .logo-dark{display:block!important}
/* Accessibility: visually hidden but screen-reader accessible */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ── Base reset ──────────────────────────────────── */
*{box-sizing:border-box}
body{background:var(--surface);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Helvetica Neue',Arial,sans-serif;font-size:14px;line-height:1.57;color:var(--text);transition:background-color .2s,color .2s}

/* ── Sidebar ───────────────────────────────────── */
/* ── Dock Sidebar (lite=64px, expanded=240px) ── */
#sb{position:fixed;top:0;left:0;height:100vh;height:100dvh;width:64px;background:var(--sb);border-right:1px solid var(--sb-border);box-shadow:2px 0 8px rgba(0,0,0,.04);display:flex;flex-direction:column;align-items:center;z-index:1050;padding:6px 0;overflow:visible;transition:width .25s cubic-bezier(.4,0,.2,1)}
.sb-brand{padding:8px;display:flex;align-items:center;justify-content:center;width:100%;flex-shrink:0;border-bottom:1px solid var(--sb-border);margin-bottom:4px;gap:8px}
#sb.sb-expanded .sb-brand{justify-content:flex-start;padding:12px 14px;min-height:56px}
.sb-brand a,.sb-brand img,.sb-brand>span{display:none!important}
/* Toggle button replaces logo */
#sb-expand{width:36px;height:36px;border-radius:8px;border:none;background:var(--sb-hover);color:var(--sb-text);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}
#sb-expand:hover{background:var(--sb-hover);color:var(--sb-active)}
.sb-sec{display:none}
.sb-nav{overflow-y:auto;overflow-x:visible;flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0;width:100%;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}
.sb-nav::-webkit-scrollbar{width:6px}
.sb-nav::-webkit-scrollbar-track{background:transparent}
.sb-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);border-radius:3px}
.sb-nav::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.4)}
.sb-nav .nav-link{color:var(--sb-text);width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;padding:0!important;margin:0;transition:all .2s cubic-bezier(.34,1.56,.64,1);text-decoration:none;position:relative;border:none!important;flex-shrink:0;gap:0;overflow:hidden}
.sb-nav .nav-link span{display:none!important;white-space:nowrap;font-size:.82rem;font-weight:500}
.sb-nav .nav-link i{font-size:1.15rem;width:auto;opacity:.7;transition:all .2s;flex-shrink:0}
.sb-nav .nav-link:hover{background:var(--sb-hover);color:var(--sb-active);transform:scale(1.18)}
.sb-nav .nav-link:hover i{opacity:1}
.sb-nav .nav-link.active{background:var(--sb-hover);color:var(--sb-active)}
.sb-nav .nav-link.active i{opacity:1;color:var(--sb-active)}
.sb-nav .nav-link.active::before{content:'';position:absolute;left:0;width:3px;height:20px;background:var(--sb-active);border-radius:0 3px 3px 0}
/* ── Expanded mode ── */
#sb.sb-expanded{width:240px;align-items:stretch}
#sb.sb-expanded .sb-brand a{display:flex!important;flex:1;align-items:center;min-width:0;overflow:hidden}
#sb.sb-expanded .sb-brand img{width:100%!important;max-width:none!important;height:34px!important;object-fit:contain!important;object-position:left!important;display:none!important}
#sb.sb-expanded .sb-brand img.logo-light{display:block!important}
html[data-theme="dark"] #sb.sb-expanded .sb-brand img.logo-light{display:none!important}
html[data-theme="dark"] #sb.sb-expanded .sb-brand img.logo-dark{display:block!important}
#sb.sb-expanded .sb-sec{display:block;font-size:.6rem;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--sb-text);opacity:.45;padding:.7rem .9rem .15rem}
#sb.sb-expanded .sb-nav{align-items:stretch;padding:4px 6px}
#sb.sb-expanded .sb-nav .nav-link{width:auto;height:auto;padding:.42rem .75rem!important;justify-content:flex-start;gap:.6rem;border-radius:8px}
#sb.sb-expanded .sb-nav .nav-link span{display:inline!important}
#sb.sb-expanded .sb-nav .nav-link:hover{transform:none}
#sb.sb-expanded .sb-nav .nav-link i{font-size:1rem}
#sb.sb-expanded .dock-div{width:100%;margin:2px 0}
#sb.sb-expanded .sb-foot{align-items:stretch;padding:8px 10px}
#sb.sb-expanded .sb-foot .d-flex{flex-direction:row!important;align-items:center!important}
#sb.sb-expanded .sb-foot .ui{display:block!important}
#sb.sb-expanded .sb-foot .u-name{display:block!important;font-size:.8rem;color:var(--text)}
#sb.sb-expanded .sb-foot .u-rol{display:inline-block!important;color:var(--sb-active);background:var(--sb-hover)}
#sb.sb-expanded+#main,.sb-expanded~#main{margin-left:240px!important}
#sb.sb-expanded~.dock-panel,.sb-expanded~.dock-panel{left:244px!important}
/* Dock tooltip */
.dock-tip{position:fixed;background:var(--text);color:#fff;padding:6px 14px;border-radius:10px;font-size:.78rem;font-weight:600;white-space:nowrap;pointer-events:none;z-index:1065;opacity:0;transition:opacity .15s;box-shadow:var(--shadow-md)}
.dock-tip.show{opacity:1}
.sb-expanded .dock-tip{display:none!important}
.dock-div{width:28px;height:1px;background:var(--sb-border);margin:3px 0;flex-shrink:0}
.sb-foot{padding:8px 0 6px;display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:auto;width:100%;border-top:1px solid var(--sb-border)}
.sb-foot>.d-flex{flex-direction:column!important;gap:4px!important;align-items:center!important;width:100%}
.sb-foot>.d-flex>.d-flex{justify-content:center!important}
.sb-foot .ui,.sb-foot .u-name,.sb-foot .u-rol{display:none!important}
.sb-foot .rounded-circle{width:30px!important;height:30px!important;font-size:.7rem!important}
.sb-foot .notif-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:10px;font-size:.9rem}

/* ── Dock flyout panel (hold to open) ────────── */
.dock-panel{position:fixed;left:68px;width:260px;max-height:calc(100vh - 24px);background:var(--surface);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:1060;display:none;overflow:hidden;color:var(--text);animation:dockIn .18s ease}
@keyframes dockIn{from{opacity:0;transform:translateX(-8px) scale(.95)}to{opacity:1;transform:none}}
.dock-panel-head{padding:12px 14px 10px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border);text-decoration:none;color:var(--text);transition:background .12s;cursor:pointer}
.dock-panel-head:hover{background:var(--surface2);color:var(--text)}
.dock-panel-head i{font-size:1.05rem;color:var(--sb-active)}
.dock-panel-head span{font-size:.82rem;font-weight:700;letter-spacing:.3px}
.dock-panel-head .dp-arrow{margin-left:auto;font-size:.7rem;opacity:.4}
.dock-panel-body{padding:6px;max-height:calc(100vh - 100px);overflow-y:auto;-webkit-overflow-scrolling:touch}
.dock-panel-link{display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:var(--radius);color:var(--text2);font-size:.83rem;text-decoration:none;transition:all .12s}
.dock-panel-link:hover{background:var(--sb-hover);color:var(--sb-active)}
.dock-panel-link.dp-active{background:var(--sb-hover);color:var(--sb-active)}
.dock-panel-link i{font-size:.9rem;width:18px;text-align:center;opacity:.6}
.dock-panel-link:hover i{opacity:1;color:var(--sb-active)}

/* ── Overlay ─────────────────────────────────── */
#sb-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1040}
#sb-overlay.open{display:block}
#dock-overlay{display:none;position:fixed;inset:0;z-index:1055}

/* ── Topbar ──────────────────────────────────────── */
#main{margin-left:64px;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--surface)}
.topbar{background:rgba(255,255,255,.85);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:.6rem 1.25rem;border-bottom:1px solid var(--topbar-border);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:var(--shadow);gap:.75rem;transition:background-color .2s,border-color .2s}
.pg-title{font-size:1rem;font-weight:600;color:var(--text);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;min-width:0}
.topbar-right{flex-wrap:nowrap;flex-shrink:0}
#sb-tog{display:none;background:none;border:none;color:var(--text);font-size:1.25rem;padding:.3rem .4rem;border-radius:3px;cursor:pointer;flex-shrink:0;line-height:1}
#sb-tog:hover{background:var(--surface2)}

/* ── Content area ────────────────────────────────── */
.content{padding:var(--sp-5);animation:fadeIn var(--transition-base) ease;flex:1;background:var(--surface)}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes toastIn{from{transform:translateX(100px);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes msgIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes cardIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes chatNotifIn{from{opacity:0;transform:translateY(12px) scale(.95)}to{opacity:1;transform:none}}
.row.g-3>[class*="col-"]{animation:cardIn .3s ease backwards}
.row.g-3>[class*="col-"]:nth-child(2){animation-delay:.04s}
.row.g-3>[class*="col-"]:nth-child(3){animation-delay:.08s}
.row.g-3>[class*="col-"]:nth-child(4){animation-delay:.12s}
.row.g-3>[class*="col-"]:nth-child(5){animation-delay:.16s}
.row.g-3>[class*="col-"]:nth-child(6){animation-delay:.2s}
.row.g-3>[class*="col-"]:nth-child(n+7){animation-delay:.24s}
.toast-close{background:none;border:none;color:rgba(255,255,255,.6);font-size:.9rem;cursor:pointer;padding:0 0 0 8px;line-height:1;transition:color .12s}
.toast-close:hover{color:#fff}

/* ── Skeleton loading ────────────────────────────── */
.skeleton{background:linear-gradient(90deg,var(--surface2) 25%,var(--surface) 50%,var(--surface2) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:6px;min-height:20px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.skeleton-row{display:flex;gap:var(--sp-3);margin-bottom:var(--sp-3)}
.skeleton-row .skeleton{flex:1;height:16px}
.skeleton-card{padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
.skeleton-card .skeleton{margin-bottom:var(--sp-2)}

/* ── Stat Cards ──────────────────────────────────── */
.sc{background:var(--surface);border-radius:var(--radius);padding:var(--sp-4);box-shadow:var(--shadow);transition:box-shadow .15s,background-color .2s,border-color .2s;height:100%;border:1px solid var(--border)}
.sc:hover{box-shadow:var(--shadow-md)}
.sc-accent{border-top:3px solid var(--ac)}
.si{width:42px;height:42px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:1.15rem;flex-shrink:0}
.sv{font-size:1.55rem;font-weight:700;color:var(--text);line-height:1.1;transition:color var(--transition-fast)}
.sl{color:var(--text2);font-size:.77rem;margin-top:.15rem;font-weight:500}
.sc-highlight{border:2px solid var(--ac)}

/* ── Table Cards ─────────────────────────────────── */
.tc{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;transition:all var(--transition-fast)}
.tc:hover{box-shadow:var(--shadow-md)}
.ch{background:var(--surface);border-bottom:1px solid var(--border);padding:var(--sp-3) var(--sp-4);font-weight:600;color:var(--text);font-size:var(--font-title);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-1)}
.table{margin:0;border-collapse:collapse;border:none!important;background:transparent!important}
.table>:not(caption)>*>*{box-shadow:none!important}
.table th{font-size:var(--font-micro);font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text2);border-bottom:2px solid var(--border);padding:var(--sp-3) var(--sp-4);white-space:nowrap;background:var(--surface2)}
.table td{padding:var(--sp-3) var(--sp-4);vertical-align:middle;border-bottom:1px solid var(--border);color:var(--text);font-size:var(--font-body);background:transparent}
.table tbody tr:nth-child(even) td{background:rgba(0,0,0,.015)}
.table tbody tr:last-child td{border-bottom:none}
.table tbody tr:hover{background:var(--surface2)}

/* ── Form Card ───────────────────────────────────── */
.fc{background:var(--surface);border-radius:var(--radius);padding:var(--sp-5);border:1px solid var(--border);max-width:var(--content-lg);transition:background-color .2s,border-color .2s}
.fc-lift{transition:box-shadow var(--transition-fast),transform var(--transition-fast),background-color .2s,border-color .2s}
.fc-lift:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
/* Card-list: card used in grid listings (no padding, overflow hidden) */
.card-list{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);padding:0;overflow:hidden;transition:background-color .2s,border-color .2s}
.card-list .card-list-bar{height:4px;flex-shrink:0}
.card-list .card-list-body{padding:1rem 1.15rem}
.card-list .card-list-actions{padding:.5rem 1.15rem;border-top:1px solid var(--border);display:flex;align-items:center;gap:.5rem}
.form-label{font-weight:600;font-size:.82rem;color:var(--text);margin-bottom:.3rem}
.form-label .req{color:var(--red);margin-left:2px;font-weight:700}
.form-text{font-size:.76rem;color:var(--text2);margin-top:.2rem}
.form-control,.form-select{border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:.48rem .75rem;font-size:.88rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background-color .2s,color .2s;background:var(--input-bg);color:var(--text)}
.form-control:focus,.form-select:focus{border-color:var(--ac);box-shadow:0 0 0 3px rgba(var(--ac-rgb),.2);outline:none}
.form-control.is-invalid{border-color:var(--red)}
.form-section{background:var(--surface2);border-radius:var(--radius);padding:1rem 1.2rem;margin-bottom:1rem;border:1px solid var(--border);border-left:3px solid var(--ac);transition:background-color .2s,border-color .2s}
.form-section-title{font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:1px;color:var(--ac);margin-bottom:.65rem}
.input-hint{display:flex;align-items:flex-start;gap:.4rem;padding:.45rem .75rem;background:rgba(var(--ac-rgb),.08);border-radius:var(--radius-sm);font-size:.77rem;color:var(--ac);margin-top:.4rem}
.input-hint i{color:var(--ac);flex-shrink:0;margin-top:1px}

/* ── Keyboard focus styles ── */
:focus-visible{outline:2px solid var(--ac);outline-offset:2px;border-radius:4px}
.btn:focus-visible{box-shadow:0 0 0 3px rgba(var(--ac-rgb),.35);outline:none}
.form-control:focus-visible,.form-select:focus-visible{box-shadow:0 0 0 3px rgba(var(--ac-rgb),.25);border-color:var(--ac)}
.nav-link:focus-visible{outline:2px solid var(--sb-active);outline-offset:-2px}
.dropdown-item:focus-visible{background:var(--surface2);outline:none}

/* ── Buttons ─────────────────────────────────────── */
.btn{border-radius:var(--radius-sm);font-weight:600;font-size:.84rem;transition:all var(--transition-fast);min-height:36px}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--ac);border-color:var(--ac);color:#fff}
.btn-primary:hover{background:var(--ac2);border-color:var(--ac2);color:#fff;box-shadow:0 2px 8px rgba(var(--ac-rgb),.35)}
.btn-ghost{background:transparent;border:1.5px solid var(--border);color:var(--text);transition:all .15s}
.btn-ghost:hover{background:var(--surface2);border-color:var(--border2);box-shadow:var(--shadow)}
.btn-lg{min-height:44px;font-size:.9rem;padding:.65rem 1.4rem}
.btn-sm{font-size:var(--font-small);padding:var(--sp-1) var(--sp-3)}
.btn-action{background:var(--ac);border:none;color:#fff;border-radius:var(--radius-sm);padding:.5rem 1rem;font-weight:600;font-size:.82rem;display:flex;align-items:center;gap:.5rem;cursor:pointer;transition:background .12s;white-space:nowrap}
.btn-action:hover{background:var(--ac2);color:#fff}

/* ── Badges ──────────────────────────────────────── */
.b{padding:3px 10px;border-radius:4px;font-size:.72rem;font-weight:600;display:inline-block;white-space:nowrap;text-transform:uppercase;letter-spacing:.3px;transition:opacity var(--transition-fast)}
.b-activo,.b-completado,.b-completada,.b-baja,.b-vip,.b-vigente,.b-aprobada,.b-recibida,.b-en_transito,.b-pagado,.b-usado,.b-aprobado{background:var(--st-ok-bg);color:var(--st-ok-text);border:1px solid var(--st-ok-border)}
.b-inactivo,.b-perdido,.b-alta,.b-vencida,.b-cancelado,.b-cancelada,.b-detenida,.b-rechazado{background:var(--st-err-bg);color:var(--st-err-text);border:1px solid var(--st-err-border)}
.b-prospecto,.b-pendiente,.b-media,.b-anticipo_pagado,.b-en_revision,.b-enviada,.b-pendiente_materiales,.b-pausada{background:var(--st-warn-bg);color:var(--st-warn-text);border:1px solid var(--st-warn-border)}
.b-negociacion,.b-en_progreso,.b-cliente_activo,.b-confirmacion_orden,.b-en_produccion,.b-reservado{background:var(--st-info-bg);color:var(--st-info-text);border:1px solid var(--st-info-border)}
.b-borrador,.b-convertida{background:var(--st-muted-bg);color:var(--st-muted-text);border:1px solid var(--st-muted-border)}
.b-unico,.b-mensual{background:#EEFDF8;color:#1A5A4A;border:1px solid #BBEDE2}
.b-cita{background:#F8F0FF;color:#5B21B6;border:1px solid #DDD6FE}
.b-reunion{background:#F0F0FF;color:#3730A3;border:1px solid #C7D2FE}
.b-recordatorio{background:#FFF8E6;color:#7A4A00;border:1px solid #FADDAA}

/* ── Status select ───────────────────────────────── */
.status-select{-webkit-appearance:none;appearance:none;border:none;padding:2px 20px 2px 8px;border-radius:3px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.3px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='currentColor' opacity='.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 5px center;transition:filter .12s}
.status-select:hover{filter:brightness(.92)}
.status-select:focus{outline:2px solid var(--ac);outline-offset:1px}
.status-select.b-activo,.status-select.b-completado,.status-select.b-completada,.status-select.b-vip,.status-select.b-vigente,.status-select.b-pagado{background-color:var(--st-ok-bg);color:var(--st-ok-text)}
.status-select.b-inactivo,.status-select.b-perdido,.status-select.b-cancelado{background-color:var(--st-err-bg);color:var(--st-err-text)}
.status-select.b-prospecto,.status-select.b-pendiente,.status-select.b-anticipo_pagado{background-color:var(--st-warn-bg);color:var(--st-warn-text)}
.status-select.b-negociacion,.status-select.b-en_progreso,.status-select.b-cliente_activo{background-color:var(--st-info-bg);color:var(--st-info-text)}
.status-select.b-borrador{background-color:var(--st-muted-bg);color:var(--st-muted-text)}

/* ── Calendar / Events ───────────────────────────── */
.ev-tarea{background:#FFF8E6;color:#7A4A00;border-left:2px solid #DD7A01}
.ev-evento{background:#EBF4FF;color:#0A3D7A;border-left:2px solid #0176D3}
.ev-nota{background:#F5F0FF;color:#4A1D96;border-left:2px solid #7C3AED}
.ev-caducidad{background:#FFF0EE;color:#8A1A1A;border-left:2px solid #C23934}
.ev-venta{background:#EDFBF0;color:#1A6B3C;border-left:2px solid #2E844A}
.cal-day{border:1px solid var(--border);min-height:110px;vertical-align:top;padding:.3rem;cursor:pointer;transition:background .12s}
.cal-day:hover{background:var(--surface2)}
.cal-day.today{background:#EBF4FF;border-color:#B3D4F5}
.cal-day.other-month{background:var(--bg);opacity:.6}
.cal-ev{font-size:.69rem;padding:2px 5px;border-radius:2px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}

/* ── Misc components ─────────────────────────────── */
.alert{border-radius:var(--radius);border:none;transition:background-color .2s,border-color .2s;animation:slideDown var(--transition-base) ease}
@keyframes slideDown{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.prod-row{background:var(--surface2);border-radius:var(--radius);padding:.75rem;margin-bottom:.5rem;border:1px solid var(--border);transition:background-color .2s,border-color .2s}
.totales-box{background:var(--surface2);border-radius:var(--radius);padding:1rem 1.4rem;border:1px solid var(--border);transition:background-color .2s,border-color .2s}
.chat-bubble{background:var(--surface2);border-radius:4px 12px 12px 4px;padding:.6rem .9rem;margin-bottom:.5rem;max-width:80%;color:var(--text)}
.chat-bubble.mine{background:var(--ac);color:#fff;border-radius:12px 4px 4px 12px;margin-left:auto}
.chat-bubble.mine .chat-meta{color:rgba(255,255,255,.65)}
.chat-meta{font-size:.7rem;color:var(--text2);margin-top:.2rem}
.mp-row{background:var(--surface2);border-radius:var(--radius);padding:.6rem .9rem;margin-bottom:.4rem;border-left:3px solid var(--ac);color:var(--text)}
.lote-row{background:var(--surface2);border-radius:var(--radius);padding:.6rem .9rem;margin-bottom:.4rem;border-left:3px solid var(--green);color:var(--text)}
.lote-venc{border-left-color:var(--red)!important}
.lote-warn{border-left-color:var(--orange)!important}
.stock-bar-wrap{background:var(--border);border-radius:3px;height:6px;overflow:hidden;flex:1}
.stock-bar{height:100%;border-radius:3px;background:var(--green)}
.stock-bar.warn{background:var(--orange)}.stock-bar.bad{background:var(--red)}

/* ── Quick actions bar ───────────────────────────── */
.qa-bar{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.2rem}
.qa-btn{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:.4rem .85rem;font-size:.8rem;font-weight:600;color:var(--text2);display:flex;align-items:center;gap:.4rem;cursor:pointer;text-decoration:none;transition:border-color .12s,color .12s,background-color .2s;white-space:nowrap}
.qa-btn:hover{border-color:var(--ac);color:var(--ac);background:rgba(var(--ac-rgb),.06)}
.qa-btn i{font-size:.9rem}

/* ── Onboarding / Empty states ───────────────────── */
.onboard-banner{background:linear-gradient(135deg,#0B2D61 0%,#0176D3 100%);border-radius:var(--radius);padding:1.5rem 1.75rem;color:#fff;margin-bottom:1.2rem;position:relative;overflow:hidden}
.onboard-banner::before{content:'';position:absolute;top:-30px;right:-30px;width:140px;height:140px;background:rgba(255,255,255,.05);border-radius:50%}
.onboard-steps{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.8rem}
.onboard-step{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);border-radius:3px;padding:.35rem .7rem;font-size:.77rem;display:flex;align-items:center;gap:.35rem;cursor:pointer;text-decoration:none;color:#fff;transition:background .12s}
.onboard-step:hover{background:rgba(255,255,255,.2);color:#fff}
.onboard-step.done{background:rgba(46,132,74,.3);border-color:rgba(46,132,74,.5)}
.empty-state{text-align:center;padding:2.5rem 1.5rem;color:var(--text2)}
.empty-state i{font-size:2.5rem;margin-bottom:.75rem;display:block;opacity:.35}
.empty-state p{margin-bottom:1rem;font-size:.9rem}

/* ── Utility classes ── */
.section-title{font-size:var(--font-title);font-weight:700;margin-bottom:var(--sp-3);display:flex;align-items:center;gap:var(--sp-2)}
.section-title i{color:var(--ac)}
.filter-bar{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center;margin-bottom:var(--sp-4)}
.count-label{font-size:var(--font-small);color:var(--text2);margin-bottom:var(--sp-2)}
/* Font-size utilities (maps to design tokens) */
.fs-micro{font-size:var(--font-micro)!important}
.fs-caption{font-size:var(--font-caption)!important}
.fs-small{font-size:var(--font-small)!important}
.fs-body{font-size:var(--font-body)!important}
.fs-title{font-size:var(--font-title)!important}
.fs-display{font-size:var(--font-display)!important}
.fs-hero{font-size:var(--font-hero)!important}
/* Max-width utilities */
.mw-sm{max-width:var(--content-sm)!important}
.mw-md{max-width:var(--content-md)!important}
.mw-lg{max-width:var(--content-lg)!important}
.mw-xl{max-width:var(--content-xl)!important}

/* ── Notification pulse animation ── */
@keyframes notifPulse{0%{transform:scale(1)}50%{transform:scale(1.3)}100%{transform:scale(1)}}
.notif-pulse{animation:notifPulse .4s ease}
/* ── Mobile bottom nav (WhatsApp-style) ── */
.mnav-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;color:var(--text2);font-size:.7rem;gap:4px;flex:1;padding:6px 0 2px;background:none;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:52px}
.mnav-tab i{font-size:1.4rem;transition:color .15s}
.mnav-tab span{letter-spacing:.3px;font-weight:500}
.mnav-tab.mnav-active{color:var(--ac)}
.mnav-tab.mnav-active i{color:var(--ac)}
.mnav-badge{position:absolute;top:2px;right:50%;transform:translateX(16px);background:var(--red);color:#fff;font-size:.58rem;padding:1px 5px;border-radius:10px;font-weight:700;min-width:16px;text-align:center}
/* ── Notifications ───────────────────────────────── */
.notif-btn{position:relative;background:none;border:none;color:var(--sb-text);font-size:1.05rem;padding:.3rem .45rem;border-radius:8px;cursor:pointer;transition:color .15s,background .15s}
.notif-btn:hover{color:var(--sb-active);background:var(--sb-hover)}
.notif-badge{position:absolute;top:0;right:0;background:var(--red);color:#fff;font-size:.6rem;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1}
.notif-badge,.mnav-badge,.sb-badge{transition:transform var(--transition-fast),opacity var(--transition-fast)}
.notif-badge.hide,.mnav-badge.hide,.sb-badge.hide{transform:scale(0);opacity:0}
/* Sidebar inline badges (chat count, NEW label) */
.sb-badge{background:var(--red);color:#fff;font-size:.5rem;font-weight:700;min-width:14px;height:14px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;padding:0 3px;line-height:1;margin-left:4px;vertical-align:middle}
.sb-new{background:var(--red);color:#fff;font-size:.48rem;font-weight:700;padding:1px 5px;border-radius:6px;margin-left:4px;vertical-align:middle;letter-spacing:.3px}
.notif-dd{position:fixed;bottom:70px;left:0;width:300px;max-height:400px;overflow-y:auto;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:1070}
.notif-dd-head{padding:.7rem 1rem;font-size:.78rem;font-weight:700;color:var(--text);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
.notif-item{padding:.6rem 1rem;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s}
.notif-item:hover{background:var(--surface2)}
.notif-item.unread{background:rgba(var(--ac-rgb),.07)}
.notif-item .ni-title{font-size:.8rem;font-weight:600;color:var(--text)}
.notif-item .ni-msg{font-size:.74rem;color:var(--text2);margin-top:2px}
.notif-item .ni-time{font-size:.67rem;color:var(--text2)}

/* ── Float search button ─────────────────────────── */
#diagBtn{position:fixed;bottom:152px;right:24px;z-index:1040;width:44px;height:44px;border-radius:50%;background:var(--text2);border:none;color:#fff;font-size:.95rem;box-shadow:var(--shadow-md);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}
#diagBtn:hover{background:var(--text)}
#diagPanel{position:fixed;bottom:208px;right:24px;width:340px;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:1050;overflow:hidden;display:none}
#diagPanel .dp-head{padding:.85rem 1.2rem;background:var(--sb);color:#fff;font-weight:600;font-size:.88rem;display:flex;justify-content:space-between}
#diagPanel .dp-body{max-height:420px;overflow-y:auto;padding:.75rem 1rem}
.diag-item{padding:.45rem .7rem;border-radius:var(--radius-sm);margin-bottom:.35rem;font-size:.8rem;display:flex;gap:.6rem;align-items:flex-start}
.diag-rojo{background:#FFF0EE;color:var(--red)}
.diag-amarillo{background:#FFF8E6;color:var(--orange)}
.diag-verde{background:#EDFBF0;color:var(--green)}

/* ── Copy fields ─────────────────────────────────── */
.copy-field{padding:6px 0;border-bottom:1px solid var(--border)}
.copy-field:last-child{border-bottom:none}
.copy-label{font-size:.75rem;color:var(--text2);display:block;margin-bottom:2px}
.copy-value{cursor:pointer;font-weight:500;color:var(--text);padding:4px 8px;border-radius:4px;display:inline-flex;align-items:center;gap:4px;transition:background .15s}
.copy-value:hover{background:var(--surface2)}
.copy-value .bi-clipboard{color:var(--text2);font-size:.8rem}
.copy-value .bi-check2{color:var(--green);font-size:.8rem}

/* ── Quick Actions FAB ───────────────────────────── */
.fab{position:fixed;bottom:24px;right:24px;z-index:1040;width:56px;height:56px;border-radius:50%;background:var(--ac);color:#fff;border:none;box-shadow:0 4px 20px rgba(var(--ac-rgb),.45);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.5rem;transition:all .2s}
.fab:hover{transform:scale(1.08);background:var(--ac2);box-shadow:0 6px 24px rgba(var(--ac-rgb),.55)}
.quick-action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:8px 0}
.qa-modal-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:16px 8px;border:1.5px solid var(--border);border-radius:8px;background:var(--surface2);cursor:pointer;text-decoration:none;color:var(--text);transition:all .15s;text-align:center}
.qa-modal-btn:hover{background:rgba(var(--ac-rgb),.08);border-color:var(--ac);color:var(--ac);transform:translateY(-2px)}
.qa-modal-btn i{font-size:1.6rem}
.qa-modal-btn span{font-size:.78rem;font-weight:600;line-height:1.2}

/* ── Search overlay ──────────────────────────────── */
.sr-empty{text-align:center;padding:2rem;color:var(--text2);font-size:.85rem}
.sr-item{display:flex;align-items:center;gap:.75rem;padding:.6rem 1.1rem;text-decoration:none;transition:background .12s;border-radius:0}
.sr-item:hover{background:var(--surface2)}
.sr-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.9rem}
.sr-body{flex:1;min-width:0}
.sr-label{display:block;font-size:.85rem;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-sub{display:block;font-size:.75rem;color:var(--text2)}
.sr-badge{font-size:.7rem;color:var(--text2);background:var(--surface2);padding:2px 7px;border-radius:10px;flex-shrink:0;white-space:nowrap}
.sr-footer{padding:.5rem 1.1rem;border-top:1px solid var(--border);text-align:center}
.sr-footer a{font-size:.78rem;color:var(--ac);text-decoration:none}

/* ══════════════════════════════════════════════════
   DARK THEME
   ══════════════════════════════════════════════════ */
html[data-theme="dark"]{
  --sb:#141414;--sb-text:#8A8F9C;--sb-active:#4BAEFF;--sb-hover:rgba(255,255,255,.08);--sb-border:#2A2A2A;
  --ac:#1589EE;--ac2:#0E6BBD;--ac-rgb:21,137,238;
  --bg:#161616;--surface:#1E1E1E;--surface2:#262626;
  --border:#323232;--border2:#484848;
  --shadow:0 1px 4px rgba(0,0,0,.35),0 1px 2px rgba(0,0,0,.25);
  --shadow-md:0 4px 12px rgba(0,0,0,.45),0 2px 4px rgba(0,0,0,.3);
  --shadow-lg:0 8px 24px rgba(0,0,0,.55),0 4px 8px rgba(0,0,0,.35);
  --text:#E4E4E4;--text2:#8A8A8A;
  --topbar-bg:#1E1E1E;--topbar-border:#323232;--input-bg:#262626;
  --green:#3BA860;--red:#E05555;--orange:#E09000;--yellow:#E8B500;
  --card-shadow:var(--shadow);
  /* Bootstrap overrides */
  --bs-body-color:#E4E4E4;--bs-body-bg:#161616;
  --bs-border-color:#323232;--bs-emphasis-color:#E4E4E4;
  --bs-secondary-color:#8A8A8A;--bs-secondary-bg:#262626;
  --bs-tertiary-bg:#1E1E1E;--bs-link-color:#4BAEFF;
  --bs-table-color:#E4E4E4;--bs-table-bg:transparent;
}
html[data-theme="dark"] body{background:var(--surface);color:var(--text)}
html[data-theme="dark"] .topbar{background:rgba(30,30,30,.85);border-color:var(--topbar-border)}
/* Dark sidebar + dock panels + chat */
html[data-theme="dark"] #sb{background:var(--sb);border-color:var(--sb-border);box-shadow:2px 0 8px rgba(0,0,0,.3)}
html[data-theme="dark"] .sb-brand{border-color:var(--sb-border)}
html[data-theme="dark"] #sb-expand{background:var(--sb-hover);color:var(--sb-text)}
html[data-theme="dark"] #sb-expand:hover{background:var(--sb-hover);color:var(--sb-active)}
html[data-theme="dark"] .sb-nav .nav-link{color:var(--sb-text)}
html[data-theme="dark"] .sb-nav .nav-link:hover{background:var(--sb-hover);color:var(--sb-active)}
html[data-theme="dark"] .sb-nav .nav-link.active{background:var(--sb-hover);color:var(--sb-active)}
html[data-theme="dark"] .dock-div{background:var(--sb-border)}
html[data-theme="dark"] .sb-foot{border-color:var(--sb-border)}
html[data-theme="dark"] .notif-btn{color:var(--sb-text)}
html[data-theme="dark"] .notif-btn:hover{color:var(--sb-active);background:var(--sb-hover)}
html[data-theme="dark"] #sb.sb-expanded .sb-foot .u-name{color:var(--text)}
html[data-theme="dark"] .dock-panel{background:var(--surface);border-color:var(--border);box-shadow:var(--shadow-lg);color:var(--text)}
html[data-theme="dark"] .dock-panel-head{border-color:var(--border);color:var(--text)}
html[data-theme="dark"] .dock-panel-head:hover{background:var(--surface2)}
html[data-theme="dark"] .dock-panel-link{color:var(--text2)}
html[data-theme="dark"] .dock-panel-link:hover{background:var(--sb-hover);color:var(--sb-active)}
html[data-theme="dark"] .dock-panel-link.dp-active{background:var(--sb-hover);color:var(--sb-active)}
html[data-theme="dark"] .dock-tip{background:var(--surface2);color:var(--text);border:1px solid var(--border);box-shadow:var(--shadow-md)}
html[data-theme="dark"] #chatPanel{background:var(--surface);border-color:var(--border);color:var(--text)}
html[data-theme="dark"] #chatMsgs{background:var(--surface2)}
html[data-theme="dark"] #chatMsgInput{background:var(--input-bg)!important;border-color:var(--border)!important;color:var(--text)!important}
html[data-theme="dark"] .tc,html[data-theme="dark"] .fc,html[data-theme="dark"] .sc{background:var(--surface);border-color:var(--border)}
html[data-theme="dark"] .fc{color:var(--text)}
html[data-theme="dark"] .ch{background:var(--surface);border-color:var(--border);color:var(--text)}
/* Tables */
html[data-theme="dark"] .table{color:var(--text)}
html[data-theme="dark"] .table>:not(caption)>*>*{background-color:var(--surface);color:var(--text);border-color:var(--border)}
html[data-theme="dark"] .table th{background:var(--surface2)!important;color:var(--text2)!important;border-color:var(--border)!important}
html[data-theme="dark"] .table td{border-color:var(--border)!important;color:var(--text)!important}
html[data-theme="dark"] .table tbody tr:hover>*{background-color:var(--surface2)!important;color:var(--text)}
html[data-theme="dark"] .table tbody tr:nth-child(even){background:rgba(255,255,255,.02)}
html[data-theme="dark"] .table-striped>tbody>tr:nth-of-type(odd)>*{background-color:var(--surface2);color:var(--text)}
/* Forms */
html[data-theme="dark"] .form-control,html[data-theme="dark"] .form-select{background:var(--input-bg);border-color:var(--border);color:var(--text)}
html[data-theme="dark"] .form-control:focus,html[data-theme="dark"] .form-select:focus{border-color:var(--ac)}
html[data-theme="dark"] .form-section{background:var(--surface2);border-color:var(--border)}
html[data-theme="dark"] .form-label{color:var(--text)}
html[data-theme="dark"] .form-check-input{background-color:var(--input-bg);border-color:var(--border)}
html[data-theme="dark"] .form-check-input:checked{background-color:var(--ac);border-color:var(--ac)}
html[data-theme="dark"] input::placeholder,html[data-theme="dark"] textarea::placeholder{color:var(--text2)}
/* Dropdowns */
html[data-theme="dark"] .dropdown-menu{background:var(--surface);border-color:var(--border);color:var(--text)}
html[data-theme="dark"] .dropdown-item{color:var(--text)}
html[data-theme="dark"] .dropdown-item:hover{background:var(--surface2)}
html[data-theme="dark"] .dropdown-menu .dropdown-divider{border-color:var(--border)}
/* Modal */
html[data-theme="dark"] .modal-content{background:var(--surface);color:var(--text);border-color:var(--border)}
html[data-theme="dark"] .modal-header{border-color:var(--border)}
html[data-theme="dark"] .modal-footer{background:var(--surface);border-color:var(--border)}
/* Text utilities */
html[data-theme="dark"] .text-muted{color:var(--text2)!important}
html[data-theme="dark"] .text-dark{color:var(--text)!important}
/* Alerts */
html[data-theme="dark"] .alert-light{background:var(--surface2);border-color:var(--border);color:var(--text)}
html[data-theme="dark"] .alert-info{background:rgba(var(--ac-rgb),.12);border-color:rgba(var(--ac-rgb),.25);color:#90C8F5}
html[data-theme="dark"] .alert-success{background:rgba(59,168,96,.12);border-color:rgba(59,168,96,.25);color:#80D9A0}
html[data-theme="dark"] .alert-warning{background:rgba(224,144,0,.12);border-color:rgba(224,144,0,.25);color:#FFCA60}
html[data-theme="dark"] .alert-danger{background:rgba(224,85,85,.12);border-color:rgba(224,85,85,.25);color:#FFAAAA}
/* Misc */
html[data-theme="dark"] .prod-row,html[data-theme="dark"] .totales-box{background:var(--surface2);border-color:var(--border)}
html[data-theme="dark"] .qa-btn{background:var(--surface);border-color:var(--border);color:var(--text2)}
html[data-theme="dark"] .qa-btn:hover{background:var(--surface2);border-color:var(--ac);color:var(--ac)}
html[data-theme="dark"] .qa-modal-btn{background:var(--surface2);border-color:var(--border);color:var(--text)}
html[data-theme="dark"] hr{border-color:var(--border)}
/* Dark mode Bootstrap badges */
html[data-theme="dark"] .badge.bg-light{background:var(--surface2)!important;color:var(--text)!important;border-color:var(--border)!important}
html[data-theme="dark"] .badge.bg-light.text-dark{color:var(--text)!important}
html[data-theme="dark"] .badge.bg-secondary{background:var(--surface2)!important;color:var(--text2)!important}
html[data-theme="dark"] .badge.bg-primary-subtle{background:rgba(var(--ac-rgb),.15)!important;color:#90C8F5!important;border-color:rgba(var(--ac-rgb),.25)!important}
html[data-theme="dark"] .badge.bg-info-subtle{background:rgba(var(--ac-rgb),.12)!important;color:#90C8F5!important;border-color:rgba(var(--ac-rgb),.2)!important}
/* Dark mode custom badges */
html[data-theme="dark"] .b-activo,html[data-theme="dark"] .b-completado,html[data-theme="dark"] .b-completada,html[data-theme="dark"] .b-baja,html[data-theme="dark"] .b-vigente,html[data-theme="dark"] .b-aprobada,html[data-theme="dark"] .b-recibida,html[data-theme="dark"] .b-en_transito,html[data-theme="dark"] .b-pagado,html[data-theme="dark"] .b-usado,html[data-theme="dark"] .b-aprobado{background:rgba(59,168,96,.12);color:#80D9A0;border-color:rgba(59,168,96,.25)}
html[data-theme="dark"] .b-inactivo,html[data-theme="dark"] .b-perdido,html[data-theme="dark"] .b-alta,html[data-theme="dark"] .b-vencida,html[data-theme="dark"] .b-cancelado,html[data-theme="dark"] .b-cancelada,html[data-theme="dark"] .b-detenida,html[data-theme="dark"] .b-rechazado{background:rgba(224,85,85,.12);color:#FFAAAA;border-color:rgba(224,85,85,.25)}
html[data-theme="dark"] .b-prospecto,html[data-theme="dark"] .b-pendiente,html[data-theme="dark"] .b-media,html[data-theme="dark"] .b-anticipo_pagado,html[data-theme="dark"] .b-en_revision,html[data-theme="dark"] .b-enviada,html[data-theme="dark"] .b-recordatorio,html[data-theme="dark"] .b-pendiente_materiales,html[data-theme="dark"] .b-pausada{background:rgba(224,144,0,.12);color:#FFCA60;border-color:rgba(224,144,0,.25)}
html[data-theme="dark"] .b-negociacion,html[data-theme="dark"] .b-en_progreso,html[data-theme="dark"] .b-cliente_activo,html[data-theme="dark"] .b-confirmacion_orden,html[data-theme="dark"] .b-en_revision,html[data-theme="dark"] .b-en_produccion,html[data-theme="dark"] .b-reservado{background:rgba(var(--ac-rgb),.12);color:#90C8F5;border-color:rgba(var(--ac-rgb),.25)}
html[data-theme="dark"] .b-borrador{background:rgba(255,255,255,.06);color:var(--text2);border-color:var(--border)}
html[data-theme="dark"] .b-vip{background:rgba(91,33,182,.15);color:#C4B5FD;border-color:rgba(91,33,182,.3)}
html[data-theme="dark"] .b-cita{background:rgba(124,58,237,.12);color:#C4B5FD;border-color:rgba(124,58,237,.25)}
html[data-theme="dark"] .b-reunion{background:rgba(55,48,163,.12);color:#A5B4FC;border-color:rgba(55,48,163,.25)}
html[data-theme="dark"] .b-unico,html[data-theme="dark"] .b-mensual{background:rgba(21,137,238,.12);color:#90C8F5;border-color:rgba(21,137,238,.25)}
/* Dark mode status selects */
html[data-theme="dark"] .status-select.b-activo,html[data-theme="dark"] .status-select.b-completado,html[data-theme="dark"] .status-select.b-completada,html[data-theme="dark"] .status-select.b-pagado{background-color:rgba(59,168,96,.15);color:#80D9A0}
html[data-theme="dark"] .status-select.b-inactivo,html[data-theme="dark"] .status-select.b-perdido,html[data-theme="dark"] .status-select.b-cancelado{background-color:rgba(224,85,85,.15);color:#FFAAAA}
html[data-theme="dark"] .status-select.b-prospecto,html[data-theme="dark"] .status-select.b-pendiente{background-color:rgba(224,144,0,.15);color:#FFCA60}
html[data-theme="dark"] .status-select.b-negociacion,html[data-theme="dark"] .status-select.b-en_progreso{background-color:rgba(var(--ac-rgb),.15);color:#90C8F5}
html[data-theme="dark"] .status-select.b-borrador{background-color:rgba(255,255,255,.06);color:var(--text2)}
/* Dark mode calendar */
html[data-theme="dark"] .cal-day{border-color:var(--border)}
html[data-theme="dark"] .cal-day:hover{background:var(--surface2)}
html[data-theme="dark"] .cal-day.today{background:rgba(var(--ac-rgb),.1);border-color:rgba(var(--ac-rgb),.3)}
html[data-theme="dark"] .cal-day.other-month{background:var(--bg);opacity:.5}
html[data-theme="dark"] .ev-tarea{background:rgba(224,144,0,.12);color:#FFCA60;border-left-color:var(--orange)}
html[data-theme="dark"] .ev-evento{background:rgba(var(--ac-rgb),.12);color:#90C8F5;border-left-color:var(--ac)}
html[data-theme="dark"] .ev-nota{background:rgba(124,58,237,.12);color:#C4B5FD;border-left-color:#7C3AED}
html[data-theme="dark"] .ev-caducidad{background:rgba(224,85,85,.12);color:#FFAAAA;border-left-color:var(--red)}
html[data-theme="dark"] .ev-venta{background:rgba(59,168,96,.12);color:#80D9A0;border-left-color:var(--green)}
/* Dark mode diag */
html[data-theme="dark"] .diag-rojo{background:rgba(224,85,85,.12);color:#FFAAAA}
html[data-theme="dark"] .diag-amarillo{background:rgba(224,144,0,.12);color:#FFCA60}
html[data-theme="dark"] .diag-verde{background:rgba(59,168,96,.12);color:#80D9A0}
html[data-theme="dark"] .stock-bar-wrap{background:var(--border)}
html[data-theme="dark"] .onboard-banner{background:linear-gradient(135deg,#0a1628,#0d3a6e)}
html[data-theme="dark"] .breadcrumb-item a{color:var(--ac)}
html[data-theme="dark"] .breadcrumb-item.active{color:var(--text2)}
html[data-theme="dark"] .mnav-tab{color:var(--text2)}
html[data-theme="dark"] .mnav-tab.mnav-active{color:var(--ac)}
html[data-theme="dark"] #mobileNav{background:var(--surface);border-color:var(--border)}
html[data-theme="dark"] .toast-msg{box-shadow:0 8px 24px rgba(0,0,0,.4)}
html[data-theme="dark"] .skeleton{background:linear-gradient(90deg,var(--surface2) 25%,var(--surface) 50%,var(--surface2) 75%);background-size:200% 100%}

/* ── Utility classes ─────────────────────────────── */
.gap-xs{gap:4px}.gap-sm{gap:8px}.gap-md{gap:16px}.gap-lg{gap:24px}.gap-xl{gap:32px}
.text-accent{color:var(--ac)}.text-success{color:var(--green)}.text-error{color:var(--red)}.text-warning{color:var(--orange)}
.bg-accent-subtle{background:rgba(var(--ac-rgb),.08)}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── Scrollbar ──────────────────────────────────── */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--border2)}

/* ── Dashboard utilities ── */
.dash-link{font-size:.75rem;color:var(--ac);text-decoration:none}
.dash-link:hover{text-decoration:underline}

/* ══════════════════════════════════════════════════
   RESPONSIVE — Mobile
   ══════════════════════════════════════════════════ */
@media(max-width:768px){
  #sb{display:none}
  #sb.sb-open{display:flex;position:fixed;top:0;left:0;height:100dvh;width:64px;z-index:1050;transform:none;box-shadow:6px 0 40px rgba(0,0,0,.3);padding-bottom:calc(80px + env(safe-area-inset-bottom,0))}
  #sb .sb-foot{display:none!important}
  #sb-tog{display:flex}
  #main{margin-left:0!important;width:100%;padding-bottom:calc(120px + env(safe-area-inset-bottom,0))}
  .fab,#diagBtn,#aiFab{display:none!important}
  .topbar .dropdown-menu{position:fixed!important;top:50px!important;right:6px!important;left:6px!important;width:auto!important;max-width:none!important;transform:none!important;z-index:999999!important;max-height:calc(100dvh - 130px);overflow-y:auto;background:var(--surface)!important;box-shadow:0 20px 60px rgba(0,0,0,.5)!important;border:1px solid var(--border)!important}
  .topbar .dropdown-menu.show~*,.topbar .dropdown.show~*{z-index:1!important}
  #chatPanel{width:calc(100vw - 24px)!important;max-height:calc(100dvh - 160px)!important;bottom:calc(90px + env(safe-area-inset-bottom,0))!important;left:12px!important;top:auto!important;border-radius:16px!important;z-index:1060!important}
  #sb.sb-expanded+#main,#sb.sb-expanded~#main{margin-left:0!important}
  .content{padding:var(--sp-4) var(--sp-3)}
  .topbar{padding:var(--sp-2) var(--sp-3);gap:var(--sp-1);overflow:visible;z-index:99998}
  .topbar-right{gap:var(--sp-1)!important;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;max-width:calc(100vw - 100px);flex-shrink:0}
  .topbar-right .btn{white-space:nowrap;flex-shrink:0;font-size:var(--font-small)}
  .topbar-right::-webkit-scrollbar{display:none}
  .pg-title{font-size:var(--font-body);max-width:120px;flex-shrink:1}
  .fc{padding:var(--sp-4) var(--sp-3);border-radius:var(--radius-sm);max-width:100%;width:100%}
  .row.g-3>[class*='col-md']{margin-bottom:.2rem}
  .btn{min-height:44px;padding:var(--sp-2) var(--sp-3)}
  .nav-link{min-height:44px}
  .form-control,.form-select{min-height:44px;font-size:16px}
  .d-flex.gap-1 .btn-sm{min-width:38px;min-height:38px;display:inline-flex;align-items:center;justify-content:center}
  .dropdown-menu{max-width:calc(100vw - 32px)}
  .qa-bar{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}
  .qa-btn{justify-content:center}
  .hide-mobile{display:none}
  body{overflow-x:hidden}
  .quick-action-grid{grid-template-columns:repeat(2,1fr)!important}
  .totales-box{padding:var(--sp-3)}
  .sv{font-size:var(--font-display)}
  .table th{font-size:.6rem;padding:var(--sp-2)}
  .table td{padding:var(--sp-2);font-size:var(--font-small)}
  .ch{padding:var(--sp-2) var(--sp-3)}
  .sc{padding:var(--sp-3)}
  .tc{border-radius:var(--radius-sm)}
  #diagPanel{width:calc(100vw - 32px);right:16px}
  .notif-dd{width:calc(100vw - 32px);left:16px;bottom:calc(100px + env(safe-area-inset-bottom,0))!important}
  .dock-panel{left:12px!important;width:calc(100vw - 24px)!important;max-height:calc(100dvh - 160px)!important;bottom:calc(90px + env(safe-area-inset-bottom,0))!important;top:auto!important}
  .dock-panel-body{max-height:calc(100dvh - 240px)}
  #obCtxTip{width:calc(100vw - 24px)!important}
  [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
  .filter-bar{gap:var(--sp-1);font-size:var(--font-small)}
  .filter-bar .btn,.filter-bar .b{font-size:var(--font-caption);padding:2px 8px;min-height:32px}
  .row>[class*='col-lg']{width:100%}
  #diagBtn{bottom:148px;right:20px;width:40px;height:40px;font-size:.85rem}
  #aiFab{bottom:80px!important;right:20px!important;width:46px!important;height:46px!important;font-size:1.1rem!important}
  #aiPanel{width:calc(100vw - 24px)!important;right:12px!important;bottom:135px!important;height:480px!important}
}
/* ── Tablet / small laptop (769px – 1024px) ── */
@media(min-width:769px) and (max-width:1024px){
  .topbar{padding:.4rem .75rem;gap:.5rem}
  .topbar .pg-title{font-size:.85rem;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1}
  .topbar-right{gap:4px!important;flex-wrap:nowrap;justify-content:flex-end;flex-shrink:0}
  .topbar-right .btn{font-size:.7rem;padding:2px 8px;min-height:28px}
  /* Hide non-essential items on tablet */
  .topbar-right .text-muted.d-none.d-md-inline{display:none!important}
  .topbar-right [title="Ver tutorial"]{display:none!important}
  .topbar-right [onclick="toggleTheme()"]{display:none!important}
  #pwaInstallBtn{display:none!important}
  /* Compact user dropdown on tablet */
  .topbar-right .dropdown .btn{padding:3px 8px;font-size:.72rem}
  .topbar-right .dropdown .rounded-circle{width:24px!important;height:24px!important}
  #sb:not(.sb-expanded){width:52px}
  #sb:not(.sb-expanded) .nav-link{padding:.5rem}
  #sb:not(.sb-expanded) .nav-link span{display:none}
  #sb.sb-expanded+#main{margin-left:200px}
  .dock-panel{width:280px}
  .content{padding:var(--sp-4)}
}
@media(max-width:480px){
  .sv{font-size:var(--font-title)}
  .qa-bar{grid-template-columns:1fr}
  .pg-title{max-width:80px}
  .topbar-right .btn{padding:var(--sp-1) var(--sp-2);font-size:var(--font-caption);min-height:32px}
  .quick-action-grid{grid-template-columns:repeat(2,1fr)}
  .content{padding:var(--sp-3) var(--sp-2)}
  .sc{padding:var(--sp-2)}
}
@media(min-width:769px){#sb-overlay{display:none!important}}
/* ── Small mobile (< 576px) ── */
@media(max-width:576px){
  .fab{bottom:20px;right:20px;width:52px;height:52px;font-size:1.35rem}
  .table-cards thead{display:none}
  .table-cards tbody tr{display:block;border:1px solid var(--border);border-radius:8px;padding:.75rem;margin-bottom:.5rem;background:var(--surface)}
  .table-cards tbody td{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border:none;font-size:.85rem}
  .table-cards tbody td::before{content:attr(data-label);font-weight:600;font-size:.75rem;color:var(--text2);text-transform:uppercase;margin-right:8px;flex-shrink:0}
  .table-cards tbody td:first-child{font-weight:700;font-size:.9rem;border-bottom:1px solid var(--border);padding-bottom:6px;margin-bottom:4px}
  .table-cards tbody td:last-child{justify-content:flex-end;padding-top:6px;border-top:1px solid var(--border);margin-top:4px}
}
img,svg{max-width:100%;height:auto}
.logo-area svg{max-height:40px!important}

/* ── Onboarding carousel ── */
.ob-dot{width:8px;height:8px;border-radius:50%;background:#DFE1E6;border:none;padding:0;cursor:pointer;transition:background .2s}
.ob-dot-active{background:#0052CC;width:20px;border-radius:4px}
#onboardCarousel .carousel-item{display:block!important;position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;transition:opacity .25s ease;pointer-events:none}
#onboardCarousel .carousel-item.active{opacity:1;position:relative;pointer-events:auto}

/* ── Onboarding contextual tooltip ── */
@keyframes obCtxIn{from{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:none}}
#obCtxTip::before{content:'';position:absolute;left:-6px;top:20px;width:12px;height:12px;background:rgba(15,23,42,.95);transform:rotate(45deg);border-left:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1)}
@media(max-width:768px){#obCtxTip::before{display:none}}
@media print{
  #sb,#sb-overlay,.sb-foot,#diagBtn,#aiFab,#aiPanel,.notif-dd,#mobileNav,#pwaBar,.fab,#obCtx,.topbar-right .btn,.no-print{display:none!important}
  #main{margin-left:0!important;min-height:auto}
  .topbar{position:relative!important;box-shadow:none;border-bottom:1px solid #ddd}
  .content{padding:.5rem 0}
  body{background:#fff;color:#000;font-size:11pt}
  .table{font-size:9pt}
  .table th{background:#f5f5f5!important;color:#333!important}
  .badge,.b{border:1px solid #999!important;background:#fff!important;color:#333!important}
  a{color:#000;text-decoration:none}
  .sc,.tc,.fc{box-shadow:none;border:1px solid #ddd}
}

/* ── AI Panel ── */
/* AI Panel styles */
#aiPanel{opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease;transform:translateY(10px)}
#aiPanel.ai-open{opacity:1!important;pointer-events:auto!important;transform:translateY(0)!important}
.ai-msg{display:flex;flex-direction:column;gap:.2rem}
.ai-bubble-bot{background:var(--surface2);color:var(--text);border-radius:4px 14px 14px 14px;padding:.6rem .85rem;font-size:.84rem;line-height:1.5;border:1px solid var(--border);max-width:92%}
.ai-bubble-bot ul{margin:.3rem 0 0 1rem;font-size:.82rem}
.ai-bubble-user{background:var(--ac);color:#fff;border-radius:14px 4px 14px 14px;padding:.6rem .85rem;font-size:.84rem;line-height:1.5;max-width:88%;margin-left:auto}
.ai-meta{font-size:.68rem;color:var(--text2);margin-top:.15rem}
.ai-meta-user{text-align:right}
.ai-quick-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text2);border-radius:12px;padding:3px 10px;font-size:.74rem;cursor:pointer;white-space:nowrap;transition:all .15s}
.ai-quick-btn:hover{border-color:var(--ac);color:var(--ac);background:rgba(var(--ac-rgb),.06)}
.ai-typing{display:flex;align-items:center;gap:3px;padding:.5rem .7rem}
.ai-typing span{width:7px;height:7px;background:var(--text2);border-radius:50%;animation:aiDot 1.2s infinite}
.ai-typing span:nth-child(2){animation-delay:.2s}
.ai-typing span:nth-child(3){animation-delay:.4s}
@keyframes aiDot{0%,60%,100%{transform:translateY(0);opacity:.4}30%{transform:translateY(-5px);opacity:1}}
