  :root {
    --naranja: #FF6B35;
    --naranja-osc: #E55A2B;
    /* Dark mode defaults */
    --gris-claro: #0F0D0C;
    --blanco: #181513;
    --card-subtle: #221D1A;
    --texto: #FFFFFF;
    --texto-suave: #A3968A;
    --texto-muted: #6E6359;
    --borde: #352C26;
    --naranja-suave: rgba(255,107,53,0.12);
    --naranja-linea: rgba(255,107,53,0.3);
    --rojo: #EF4444;
    --verde: #10B981;
    --verde-suave: rgba(16,185,129,0.14);
    --azul: #3B82F6;
    --azul-suave: rgba(59,130,246,0.14);
    --sidebar-w: 260px;
    --shadow-card: 0 4px 14px rgba(0,0,0,0.3);
    --shadow-hover: 0 12px 30px rgba(0,0,0,0.5);
    --btn-shadow: 0 4px 18px rgba(255,107,53,0.45);
    --safe-t: env(safe-area-inset-top, 0px);
    --safe-b: env(safe-area-inset-bottom, 0px);
    --safe-l: env(safe-area-inset-left, 0px);
    --safe-r: env(safe-area-inset-right, 0px);
    /* Tokens unificados para modales táctiles, clásicos y de caja */
    --text-main: var(--texto);
    --text-muted: var(--texto-suave);
    --text-dim: var(--texto-muted);
    --border: var(--borde);
    --border-subtle: rgba(255,255,255,0.08);
    --bg-app: var(--gris-claro);
    --bg-surface: var(--blanco);
    --bg-card: var(--card-subtle);
    --bg-card-hover: #2C2521;
    --bg-input: var(--blanco);
    --bg-panel: var(--gris-claro);
    --receipt-bg: #FDFBFA;
    --receipt-text: #1A1715;
    --fc-naranja: var(--naranja);
    --fc-naranja-dark: var(--naranja-osc);
    --fc-naranja-glow: rgba(255,107,53,0.28);
    --fc-naranja-subtle: rgba(255,107,53,0.12);
    --fc-verde: var(--verde);
    --fc-verde-subtle: var(--verde-suave);
    --fc-azul: var(--azul);
    --fc-azul-subtle: var(--azul-suave);
    --fc-rojo: var(--rojo);
    --fc-amarillo: #F59E0B;
    --fc-amarillo-subtle: rgba(245,158,11,0.14);
  }
  body.theme-light {
    --gris-claro: #F5F3EF;
    --blanco: #FFFFFF;
    --card-subtle: #F9F8F6;
    --texto: #1C1714;
    --texto-suave: #6E6359;
    --texto-muted: #9E9287;
    --borde: #E0D7CC;
    --naranja-suave: #FFEDE3;
    --naranja-linea: #FFDCC7;
    --shadow-card: 0 4px 14px rgba(0,0,0,0.04);
    --shadow-hover: 0 12px 30px rgba(0,0,0,0.1);
    /* Tokens unificados en modo claro */
    --text-main: var(--texto);
    --text-muted: var(--texto-suave);
    --text-dim: var(--texto-muted);
    --border: var(--borde);
    --border-subtle: rgba(0,0,0,0.08);
    --bg-app: var(--gris-claro);
    --bg-surface: var(--blanco);
    --bg-card: var(--card-subtle);
    --bg-card-hover: #EFECE6;
    --bg-input: var(--blanco);
    --bg-panel: var(--gris-claro);
    --receipt-bg: #FFFFFF;
    --receipt-text: #111111;
    --fc-naranja: var(--naranja);
    --fc-naranja-dark: var(--naranja-osc);
    --fc-naranja-glow: rgba(255,107,53,0.2);
    --fc-naranja-subtle: var(--naranja-suave);
    --fc-verde: #059669;
    --fc-verde-subtle: rgba(16,185,129,0.12);
    --fc-azul: #2563EB;
    --fc-azul-subtle: rgba(37,99,235,0.12);
    --fc-rojo: var(--rojo);
    --fc-amarillo: #D97706;
    --fc-amarillo-subtle: rgba(217,119,6,0.14);
  }

  * { box-sizing:border-box; margin:0; padding:0; -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
  html { -webkit-text-size-adjust:100%; height:100%; overflow:hidden; }
  body {
    background:var(--gris-claro);
    color:var(--texto);
    font-family:'Inter',system-ui,-apple-system,sans-serif;
    font-size:15px;
    height:100vh;
    height:100dvh;
    overflow:hidden;
    display:flex;
    flex-direction:column;
    transition:background .2s ease, color .2s ease;
  }
  a { color:inherit; }

  .app-shell { display:flex; flex:1; min-height:0; }
  .sidebar {
    width:var(--sidebar-w);
    flex-shrink:0;
    background:var(--blanco);
    border-right:1px solid var(--borde);
    display:flex;
    flex-direction:column;
    height:100%;
    overflow-y:auto;
    overflow-x:hidden;
    overscroll-behavior-y:contain;
    scroll-behavior:smooth;
    padding:calc(18px + var(--safe-t)) 14px calc(36px + var(--safe-b)) calc(14px + var(--safe-l));
    z-index:40;
    transition:transform .25s ease, background .2s ease, border-color .2s ease;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:thin;
    scrollbar-color:rgba(255,107,53,0.3) transparent;
  }
  body:not(.theme-light) .sidebar {
    scrollbar-color:rgba(255,255,255,0.2) transparent;
  }
  /* Scroll ultra-fluido y estilizado para el sidebar */
  .sidebar::-webkit-scrollbar { width:6px; }
  .sidebar::-webkit-scrollbar-track { background:transparent; margin:8px 0; }
  .sidebar::-webkit-scrollbar-thumb { background:rgba(255,107,53,0.3); border-radius:99px; transition:background .2s; }
  .sidebar::-webkit-scrollbar-thumb:hover { background:var(--naranja); }
  body:not(.theme-light) .sidebar::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.2); }
  body:not(.theme-light) .sidebar::-webkit-scrollbar-thumb:hover { background:rgba(255,255,255,0.45); }
  main.content::-webkit-scrollbar { width:8px; }
  main.content::-webkit-scrollbar-track { background:transparent; }
  main.content::-webkit-scrollbar-thumb { background:var(--naranja-linea); border-radius:99px; }
  main.content::-webkit-scrollbar-thumb:hover { background:var(--naranja); }

  /* Perfil Circular Superior del Sidebar */
  .sidebar-profile-header {
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:4px 4px 18px;
    margin-bottom:12px;
    border-bottom:1px solid var(--borde);
  }
  .sidebar-avatar-ring {
    width:86px;
    height:86px;
    border-radius:50%;
    position:relative;
    margin:0 auto 10px;
    padding:4px;
    background:linear-gradient(135deg, var(--naranja), var(--naranja-osc));
    box-shadow:0 8px 22px -4px rgba(255,107,53,.4), 0 0 0 1px rgba(255,255,255,.2);
    display:flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
    transition:transform .2s ease, box-shadow .2s ease;
  }
  .sidebar-avatar-ring:hover {
    transform:scale(1.04);
    box-shadow:0 10px 26px -2px rgba(255,107,53,.55);
  }
  .sidebar-avatar-img {
    width:100%;
    height:100%;
    border-radius:50%;
    object-fit:cover;
    display:block;
    background:#FFFFFF;
    box-shadow:inset 0 1px 3px rgba(0,0,0,.15);
  }
  body:not(.theme-light) .sidebar-avatar-ring {
    background:linear-gradient(135deg, #FFFFFF, rgba(255,107,53,.9));
    box-shadow:0 0 0 2px rgba(255,255,255,.3), 0 8px 26px rgba(0,0,0,.65);
  }
  body:not(.theme-light) .sidebar-avatar-img {
    background:#FFFFFF;
  }
  .sidebar-profile-title {
    font-family:'Sora',sans-serif;
    font-size:14px;
    font-weight:800;
    color:var(--texto);
    line-height:1.25;
    margin-bottom:6px;
    letter-spacing:-0.01em;
  }
  .sidebar-profile-status {
    display:inline-flex;
    align-items:center;
    gap:6px;
    font-size:11.5px;
    font-weight:700;
    padding:3px 10px;
    border-radius:999px;
    transition:all .2s ease;
  }
  .sidebar-profile-status.activo {
    color:#10B981;
    background:rgba(16,185,129,0.12);
    border:1px solid rgba(16,185,129,0.28);
  }
  .sidebar-profile-status.cerrado {
    color:#EF4444;
    background:rgba(239,68,68,0.12);
    border:1px solid rgba(239,68,68,0.28);
  }
  .sidebar-status-dot {
    width:7px;
    height:7px;
    border-radius:50%;
    display:inline-block;
    flex-shrink:0;
  }
  .sidebar-status-dot.activo {
    background:#10B981;
    box-shadow:0 0 8px #10B981;
  }
  .sidebar-status-dot.cerrado {
    background:#EF4444;
    box-shadow:0 0 8px #EF4444;
  }

  .fc-update-btn { flex-shrink:0; width:28px; height:28px; padding:0; border-radius:8px; background:var(--card-subtle); border:1px solid var(--borde); display:flex; align-items:center; justify-content:center; font-size:13px; line-height:1; color:var(--texto-suave); cursor:pointer; opacity:.85; transition:opacity .15s,transform .3s; }
  .fc-update-btn:hover, .fc-update-btn:active { opacity:1; transform:rotate(90deg); color:var(--naranja); }
  .fc-version { font-size:13px; font-weight:700; color:var(--texto-suave); font-family:'IBM Plex Mono',monospace; margin-left:5px; }

  .nav-section-label { font-size:11px; color:var(--texto-muted); text-transform:uppercase; letter-spacing:.08em; font-weight:800; padding:14px 10px 6px; }
  .nav-section-label:first-of-type { padding-top:4px; }
  .nav-group { display:flex; flex-direction:column; gap:8px; }
  
  /* NEW NAV ITEM DESIGN */
  .nav-item {
    display:flex; align-items:center; gap:12px; padding:8px 12px;
    height: 52px; border-radius: 14px;
    background: var(--card-subtle); border: 1px solid var(--borde);
    color: var(--texto-suave); font-family: inherit; font-size: 14.5px; font-weight: 600;
    cursor: pointer; text-align: left; width: 100%; position: relative;
    transition: all .15s;
    box-shadow: 0 3px 6px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.08);
  }
  .nav-item .ico { 
    width: 34px; height: 34px; border-radius: 10px; 
    background: var(--blanco); flex-shrink: 0; display: inline-flex;
    align-items: center; justify-content: center; transition: all .15s;
  }
  .nav-item .ico svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
  .nav-item:hover { border-color: var(--naranja-linea); color: var(--texto); }
  .nav-item.active { 
    background: linear-gradient(135deg, #FF6B35, #E55A2B) !important;
    color: #FFFFFF !important; font-weight: 800;
    box-shadow: 0 4px 15px rgba(255,107,53,0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
    border-color: transparent !important;
  }
  .nav-item.active .ico { background: rgba(255,255,255,0.22); border: 1px solid rgba(255,255,255,0.35); }
  .nav-item .nav-count { 
    margin-left: auto; font-size: 11px; font-weight: 800; 
    background: var(--naranja); color: #fff; border-radius: 999px; padding: 2px 8px; 
    min-width: 20px; text-align: center; box-shadow: 0 2px 8px rgba(0,0,0,0.2); 
  }
  .nav-item.active .nav-count { background: #FFFFFF; color: #E55A2B; }

  .sidebar-footer { margin-top:auto; padding-top:16px; border-top:1px solid var(--borde); display:flex; flex-direction:column; gap:8px; }
  .user-chip { display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:10px; background:var(--card-subtle); border:1px solid var(--borde); }
  .user-chip .avatar { width:34px; height:34px; border-radius:50%; background:linear-gradient(135deg,var(--naranja),var(--naranja-osc)); display:flex; align-items:center; justify-content:center; font-weight:800; color:#fff; font-size:14px; flex-shrink:0; font-family:'Sora',sans-serif; }
  .user-chip .u-info { flex:1; min-width:0; }
  .user-chip .u-name { font-size:13.5px; font-weight:700; color:var(--texto); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .user-chip .u-role { font-size:11px; font-weight:600; color:var(--naranja-osc); text-transform:uppercase; letter-spacing:.05em; }

  .theme-toggle-btn {
    display:flex; align-items:center; justify-content:space-between; width:100%;
    padding:9px 12px; border-radius:9px; font-size:13px; font-weight:600;
    background:var(--card-subtle); color:var(--texto-suave); border:1px solid var(--borde);
    cursor:pointer; transition:all .15s ease; font-family:inherit;
  }
  .theme-toggle-btn:hover { background:var(--naranja-suave); color:var(--naranja-osc); border-color:var(--naranja-linea); }


  /* Ayuda integrada (ayuda.js): botón "?" de la barra superior y entrada del menú lateral, debajo de "Cerrar sesión" */
  .fc-help-btn { width:40px; height:40px; border-color:#FF6B35 !important; color:#FF6B35 !important; background:rgba(255,107,53,.14) !important; transition:background .2s ease, color .2s ease; }
  .fc-help-btn:hover, .fc-help-btn[aria-expanded="true"] { background:#FF6B35 !important; color:#0F0D0C !important; }
  .fc-help-btn:focus-visible, .fc-nav-ayuda:focus-visible { outline:3px solid #FF6B35; outline-offset:2px; }
  .sidebar-footer .fc-nav-ayuda { display:block; width:100%; margin-top:6px; padding:8px 4px; border:0 !important; border-radius:6px; background:transparent !important; box-shadow:none !important; color:var(--texto-suave) !important; font-size:12.5px; font-weight:600; text-align:center; cursor:pointer; }
  .sidebar-footer .fc-nav-ayuda:hover, .sidebar-footer .fc-nav-ayuda.active { color:#FF6B35 !important; text-decoration:underline; text-underline-offset:3px; }
  .sidebar-footer .fc-nav-pos { color:#2F7FE0 !important; }
  .sidebar-footer .fc-nav-pos:hover { color:#1F63BA !important; text-decoration:underline; text-underline-offset:3px; }
  .sidebar-footer .fc-nav-pos:focus-visible { outline:3px solid #2F7FE0; outline-offset:2px; }
  .fc-pos-modal { max-width:480px; width:100%; padding:24px; border-radius:16px; display:flex; flex-direction:column; gap:14px; max-height:calc(100vh - 32px); overflow-y:auto; }
  .fc-pos-modal h2 { margin:0; font-size:19px; font-weight:800; color:var(--texto); }
  .fc-pos-op { display:flex; flex-direction:column; gap:10px; padding:14px; border:1.5px solid var(--borde); border-radius:12px; }
  .fc-pos-cab { display:flex; align-items:center; gap:9px; font-size:14px; color:var(--texto); }
  .fc-pos-n { width:22px; height:22px; border-radius:50%; background:#2F7FE0; color:#fff; font-size:12px; font-weight:800; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }
  .fc-pos-op ol { margin:0; padding-left:20px; font-size:13px; line-height:1.6; color:var(--texto-suave); }
  .fc-pos-btn { display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:42px; padding:0 16px; border-radius:10px; border:0; background:#2F7FE0; color:#fff; font:inherit; font-size:13.5px; font-weight:800; text-decoration:none; cursor:pointer; box-shadow:0 4px 0 #1F63BA; transition:transform .1s, box-shadow .1s, filter .15s; }
  .fc-pos-btn:hover { filter:brightness(1.08); }
  .fc-pos-btn:active { transform:translateY(3px); box-shadow:0 1px 0 #1F63BA; }
  .fc-pos-btn:focus-visible { outline:3px solid #2F7FE0; outline-offset:2px; }
  .fc-pos-btn-sec { background:transparent; color:#2F7FE0; border:1.5px solid #2F7FE0; box-shadow:none; }
  .fc-pos-btn-sec:active { transform:scale(.98); box-shadow:none; }
  .fc-pos-cmd { width:100%; min-height:40px; padding:0 10px; border-radius:9px; border:1.5px solid var(--borde); background:transparent; color:var(--texto); font-family:'IBM Plex Mono',monospace; font-size:12px; }
  .fc-pos-cerrar { align-self:center; background:none; border:0; color:var(--texto-suave); font:inherit; font-size:13px; text-decoration:underline; text-underline-offset:3px; cursor:pointer; min-height:36px; }
  #tab-ayuda { padding-bottom:40px; }
  .logout-link { display:flex; align-items:center; gap:8px; padding:10px 12px; border-radius:9px; font-size:13px; font-weight:600; color:var(--texto-suave); text-decoration:none; border:1px solid var(--borde); background:var(--card-subtle); cursor:pointer; }
  .logout-link:hover { color:var(--rojo); border-color:#F5C9C1; background:#FEF2F2; }

  .mobile-topbar { display:none; }
  .sidebar-backdrop { display:none; }

  main.content { flex:1; min-width:0; min-height:0; overflow-y:auto; padding:calc(28px + var(--safe-t)) calc(34px + var(--safe-r)) calc(40px + var(--safe-b)) 34px; scrollbar-width:thin; scrollbar-color:var(--naranja-linea) transparent; }
  /* Mientras la capa tactil (Mesas/Pedidos/Domiciliarios) esta abierta, el
     contenido clasico de la pestaña activa sigue existiendo por debajo (solo
     tapado visualmente) y seguia siendo scrolleable — se veia su scrollbar/
     contenido "corriendo" detras de la barra superior. Se bloquea su scroll
     mientras la capa esta abierta. */
  main.content.ops-locked { overflow:hidden; }
  .content-inner { max-width:1200px; margin:0 auto; }
  .page-head { margin-bottom:26px; }
  .page-head h2 { font-family:'Sora',sans-serif; font-size:26px; color:var(--texto); font-weight:800; margin-bottom:4px; letter-spacing:-0.02em; }
  .page-head p { font-size:14.5px; color:var(--texto-suave); }

  .tab-panel { display:none; }
  .tab-panel.active { display:block; }

  .cd-tabs { display:flex; gap:6px; background:var(--card-subtle); border:1px solid var(--borde); border-radius:12px; padding:5px; margin-bottom:22px; flex-wrap:wrap; }
  .cd-tab-btn { flex:1; min-width:140px; border:none; background:none; padding:11px 14px; border-radius:8px; font-family:inherit; font-size:14px; font-weight:700; color:var(--texto-suave); cursor:pointer; transition:all .15s ease; display:flex; align-items:center; justify-content:center; gap:6px; }
  .cd-tab-btn:hover { color:var(--naranja-osc); }
  .cd-tab-btn.active { background:var(--blanco); color:var(--naranja-osc); box-shadow:0 2px 8px rgba(0,0,0,.15); }
  .cd-tab-panel { display:none; }
  .cd-tab-panel.active { display:block; }

  /* =========================================================================
     DASHBOARD OPERATIVO PROPUESTA 3B (BÓVEDA DE RECAUDOS UNIFICADA)
     ========================================================================= */
  .dash-3b-container { display: flex; flex-direction: column; gap: 14px; }
  
  .title-bar-3b {
    background: var(--blanco); border: 1.5px solid var(--borde); border-radius: 14px;
    padding: 10px 16px; display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 10px; box-shadow: var(--shadow-card);
  }
  .badge-3b-tag {
    background: linear-gradient(135deg, #0284C7, #0369A1); color: #fff;
    font-family: 'Sora', sans-serif; font-size: 10.5px; font-weight: 900;
    padding: 4px 9px; border-radius: 6px; letter-spacing: .05em;
  }
  .title-3b-text { font-family: 'Sora', sans-serif; font-size: 15px; font-weight: 800; color: var(--texto); }
  
  .pill-3b-turno {
    display: inline-flex; align-items: center; gap: 6px;
    background: rgba(16,185,129,0.08); border: 1px solid rgba(16,185,129,0.3);
    color: #10B981; font-size: 11.5px; font-weight: 700; padding: 4px 10px; border-radius: 20px;
  }
  .dot-3b-pulse { width: 7px; height: 7px; border-radius: 50%; background: #10B981; box-shadow: 0 0 8px #10B981; }

  .btn-3b-action {
    background: var(--card-subtle); border: 1px solid var(--borde); color: var(--texto);
    font-size: 11.5px; font-weight: 700; padding: 6px 12px; border-radius: 8px; cursor: pointer;
    transition: all .15s ease;
  }
  .btn-3b-action:hover {
    background: var(--ops-color, var(--naranja)); color: #fff; border-color: transparent;
  }

  /* Bóveda de Recaudos Unificada */
  .vault-container-3b {
    background: var(--blanco); border: 1.5px solid var(--borde); border-radius: 16px;
    padding: 16px 18px; box-shadow: var(--shadow-card);
  }
  .vault-header-3b {
    display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;
    border-bottom: 1px solid var(--borde); padding-bottom: 10px; flex-wrap: wrap; gap: 8px;
  }
  .vault-title-3b {
    display: flex; align-items: center; gap: 8px; font-family: 'Sora', sans-serif;
    font-size: 13px; font-weight: 800; color: var(--texto); text-transform: uppercase; letter-spacing: .04em;
  }
  .vault-chips-3b { display: flex; gap: 8px; align-items: center; }
  .vault-chip-3b {
    font-size: 11px; font-weight: 700; padding: 3px 8px; border-radius: 6px;
    background: var(--card-subtle); color: var(--texto-suave); border: 1px solid var(--borde);
  }

  .vault-grid-3b { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
  @media(max-width: 1024px) { .vault-grid-3b { grid-template-columns: repeat(2, 1fr); } }
  @media(max-width: 600px) { .vault-grid-3b { grid-template-columns: 1fr; } }

  .vault-cell-3b {
    background: var(--card-subtle); border: 1.5px solid var(--borde); border-radius: 12px;
    padding: 14px 16px; cursor: pointer; transition: all .16s ease; display: flex; flex-direction: column;
    justify-content: space-between; position: relative;
  }
  .vault-cell-3b:hover {
    border-color: var(--v-color, var(--naranja)); transform: translateY(-2px); box-shadow: var(--shadow-hover);
  }
  .vault-cell-top-3b { display: flex; justify-content: space-between; align-items: center; }
  .vault-cell-lbl-3b {
    font-size: 11px; text-transform: uppercase; font-weight: 800; letter-spacing: .05em;
    color: var(--texto-suave); display: flex; align-items: center; gap: 6px;
  }
  .vault-cell-badge-3b {
    font-size: 10.5px; font-weight: 800; padding: 2px 6px; border-radius: 5px;
    color: var(--v-color); background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
  }
  .vault-cell-val-3b {
    font-family: 'IBM Plex Mono', monospace; font-size: 26px; font-weight: 900;
    letter-spacing: -0.02em; color: var(--v-color, var(--texto)); margin: 8px 0 6px 0; line-height: 1.1;
  }
  .vault-prog-bg-3b {
    width: 100%; height: 5px; background: rgba(0,0,0,0.15); border-radius: 3px; overflow: hidden; margin-bottom: 6px;
  }
  body.theme-light .vault-prog-bg-3b { background: rgba(0,0,0,0.08); }
  .vault-prog-fill-3b { height: 100%; border-radius: 3px; background: var(--v-color); transition: width .5s ease; }
  .vault-cell-sub-3b { font-size: 11.5px; color: var(--texto-suave); display: flex; justify-content: space-between; }

  /* Cuadrantes Operativos */
  .ops-grid-3b { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
  @media(max-width: 960px) { .ops-grid-3b { grid-template-columns: 1fr; } }

  .ops-card-3b {
    background: var(--blanco); border: 1.5px solid var(--borde); border-radius: 14px;
    padding: 15px 18px; display: flex; flex-direction: column; gap: 12px; box-shadow: var(--shadow-card);
  }
  .ops-head-3b {
    display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--borde);
    padding-bottom: 10px;
  }
  .ops-head-title-3b { display: flex; align-items: center; gap: 10px; }
  .ops-icon-3b {
    width: 30px; height: 30px; border-radius: 8px; background: var(--card-subtle);
    display: flex; align-items: center; justify-content: center; color: var(--ops-color);
  }
  .ops-head-title-3b h3 { font-family: 'Sora', sans-serif; font-size: 14px; font-weight: 800; color: var(--texto); margin: 0; }
  .ops-head-title-3b span { font-size: 11px; color: var(--texto-suave); }

  /* Salón Mini-Grid */
  .mesas-flex-3b { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
  @media(max-width: 600px) { .mesas-flex-3b { grid-template-columns: repeat(2, 1fr); } }
  .m-card-3b {
    background: var(--card-subtle); border: 1px solid var(--borde); border-radius: 8px;
    padding: 8px 10px; cursor: pointer; transition: all .15s ease;
  }
  .m-card-3b:hover { transform: translateY(-2px); border-color: #0284C7; }
  .m-card-3b.busy { border-color: rgba(2,132,199,0.5); background: rgba(2,132,199,0.06); }

  /* =========================================================================
     DASHBOARD DE COCINA (kd-): pedidos de todos los canales por tiempo de preparación + reservas
     ========================================================================= */
  .kd-semaforo { display:grid; grid-template-columns:repeat(5, 1fr); gap:14px; }
  .kd-cell {
    background:var(--blanco); border:1.5px solid var(--borde); border-radius:12px; padding:14px 16px; cursor:pointer;
    transition:all .16s ease; display:flex; flex-direction:column; justify-content:space-between; position:relative;
    overflow:hidden; text-align:left; color:inherit; font:inherit; box-shadow:var(--shadow-card);
  }
  .kd-cell:hover { border-color:var(--kd-c, var(--naranja)); transform:translateY(-2px); box-shadow:var(--shadow-hover); }
  .kd-cell:focus-visible, .kd-item:focus-visible, .kd-mini:focus-visible, .kd-rsv:focus-visible { outline:3px solid var(--naranja); outline-offset:2px; }
  .kd-cell.is-filtro { border-color:var(--kd-c, var(--naranja)); box-shadow:0 0 0 2px var(--kd-c, var(--naranja)); }
  .kd-cell .kd-lbl { font-size:11px; text-transform:uppercase; font-weight:800; letter-spacing:.05em; color:var(--texto-suave); display:flex; align-items:center; gap:6px; }
  .kd-cell .kd-lbl svg { width:14px; height:14px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  .kd-cell .kd-val { font-family:'IBM Plex Mono', monospace; font-size:32px; font-weight:900; line-height:1.1; letter-spacing:-.02em; color:var(--kd-c, var(--texto)); margin:8px 0 6px; }
  .kd-cell .kd-note { font-size:11.5px; color:var(--texto-suave); }
  .kd-cell .kd-bar { position:absolute; left:0; right:0; bottom:0; height:4px; background:var(--kd-c, var(--borde)); }
  .kd-cell.rojo { --kd-c:var(--rojo); } .kd-cell.ambar { --kd-c:var(--fc-amarillo); } .kd-cell.verde { --kd-c:var(--verde); }
  .kd-cell.rojo.hay { border-color:var(--rojo); animation:kdFondoRojo 1s steps(2) infinite; }
  @keyframes kdFondoRojo { 50% { background:rgba(239,68,68,.16); box-shadow:0 0 0 3px rgba(239,68,68,.25); } }
  @keyframes kdParpadeo { 50% { opacity:.3; } }
  .kd-canales { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
  .kd-head-right { display:flex; gap:5px; flex-wrap:wrap; justify-content:flex-end; }
  .kd-chip { font-family:'IBM Plex Mono', monospace; font-size:11px; font-weight:700; padding:2px 8px; border-radius:6px; border:1px solid var(--kd-c); color:var(--kd-c); background:color-mix(in srgb, var(--kd-c) 12%, transparent); }
  .kd-chip.rojo { --kd-c:var(--rojo); background:var(--rojo); color:#fff; animation:kdParpadeo 1s steps(2) infinite; }
  .kd-chip.ambar { --kd-c:var(--fc-amarillo); } .kd-chip.verde { --kd-c:var(--verde); }
  .kd-items { display:flex; flex-direction:column; gap:7px; }
  .kd-item {
    display:grid; grid-template-columns:62px 1fr; gap:12px; align-items:center; padding:9px 12px; border-radius:10px;
    background:var(--card-subtle); border:1px solid var(--borde); cursor:pointer; text-align:left; color:inherit; font:inherit; width:100%;
    transition:border-color .15s, transform .15s;
  }
  .kd-item:hover { border-color:var(--naranja); transform:translateY(-1px); }
  .kd-item .kd-h { font-family:'IBM Plex Mono', monospace; font-size:18px; font-weight:700; line-height:1; color:var(--kd-cc); }
  .kd-item .kd-h small { display:block; font-size:10px; font-weight:500; color:var(--texto-muted); margin-top:4px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .kd-item .kd-n { font-size:13px; font-weight:700; display:flex; gap:8px; align-items:center; flex-wrap:wrap; min-width:0; }
  .kd-item .kd-n > span:first-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }
  .kd-item .kd-n small { display:block; width:100%; font-size:11.5px; font-weight:400; color:var(--texto-suave); margin-top:-2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .kd-demora { font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; background:var(--rojo); color:#fff; padding:2px 6px; border-radius:5px; }
  .kd-regla { position:relative; height:8px; margin-top:8px; border-radius:4px; background:linear-gradient(90deg, rgba(16,185,129,.18) 0 var(--kd-lp), rgba(239,68,68,.22) var(--kd-lp) 100%); }
  .kd-regla s { position:absolute; left:0; top:0; bottom:0; border-radius:4px; background:var(--kd-cc); transition:width 1s linear; }
  .kd-regla i { position:absolute; top:-4px; bottom:-4px; width:2px; background:var(--texto); left:var(--kd-lp); border-radius:1px; opacity:.75; }
  .kd-regla i::after { content:attr(data-l); position:absolute; top:-14px; left:-10px; font-family:'IBM Plex Mono', monospace; font-size:9.5px; font-weight:600; color:var(--texto-suave); white-space:nowrap; }
  .kd-item.rojo { --kd-cc:var(--rojo); border-color:var(--rojo); animation:kdItemRojo 1s steps(2) infinite; }
  @keyframes kdItemRojo { 50% { background:rgba(239,68,68,.18); } }
  .kd-item.ambar { --kd-cc:var(--fc-amarillo); } .kd-item.verde { --kd-cc:var(--verde); }
  .kd-vacio { padding:14px; text-align:center; color:var(--texto-suave); font-size:12px; }
  .kd-mas { align-self:center; }
  .kd-tiempo { display:inline-flex; align-items:center; gap:6px; font-size:11.5px; font-weight:700; color:var(--texto-suave); }
  .kd-tiempo input { width:58px; height:30px; border-radius:8px; border:1px solid var(--borde); background:var(--card-subtle); color:var(--texto); font:700 12px 'IBM Plex Mono', monospace; text-align:center; }
  .kd-tiempo input:focus-visible { outline:3px solid var(--naranja); outline-offset:1px; }
  .kd-res-grid { display:grid; grid-template-columns:240px 1fr; gap:16px; }
  .kd-res-stats { display:grid; grid-template-columns:1fr 1fr; gap:8px; align-content:start; }
  .kd-mini { background:var(--card-subtle); border:1px solid var(--borde); border-radius:10px; padding:10px 12px; cursor:pointer; transition:border-color .15s; text-align:left; color:inherit; font:inherit; }
  .kd-mini:hover { border-color:var(--naranja); }
  .kd-mini b { display:block; font-family:'IBM Plex Mono', monospace; font-size:22px; font-weight:800; }
  .kd-mini span { font-size:10.5px; text-transform:uppercase; font-weight:800; letter-spacing:.05em; color:var(--texto-suave); }
  .kd-mini.alerta b { color:var(--fc-amarillo); }
  .kd-res-list { display:flex; flex-direction:column; gap:7px; }
  .kd-rsv {
    display:grid; grid-template-columns:62px 1fr auto; gap:12px; align-items:center; padding:9px 12px; background:var(--card-subtle);
    border:1px solid var(--borde); border-radius:10px; cursor:pointer; text-align:left; color:inherit; font:inherit; width:100%; transition:border-color .15s, transform .15s;
  }
  .kd-rsv:hover { border-color:var(--naranja); transform:translateY(-1px); }
  .kd-rsv .kd-hr { font-family:'IBM Plex Mono', monospace; font-size:18px; font-weight:700; }
  .kd-rsv .kd-hr small { display:block; font-family:'Inter', sans-serif; font-size:10px; font-weight:600; color:var(--texto-muted); margin-top:3px; }
  .kd-rsv .kd-nm { font-size:13px; font-weight:700; min-width:0; }
  .kd-rsv .kd-nm small { display:block; font-size:11.5px; font-weight:400; color:var(--texto-suave); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .kd-est { font-size:10.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; padding:3px 8px; border-radius:6px; }
  .kd-est.conf { color:var(--verde); background:rgba(16,185,129,.12); border:1px solid rgba(16,185,129,.3); }
  .kd-est.pend { color:var(--fc-amarillo); background:var(--fc-amarillo-subtle); border:1px solid var(--fc-amarillo); }
  .kd-rsv.pronto { border-color:var(--fc-amarillo); background:var(--fc-amarillo-subtle); }
  .kd-rsv.pronto .kd-hr { color:var(--fc-amarillo); }
  .kd-finanzas { background:var(--blanco); border:1.5px solid var(--borde); border-radius:14px; box-shadow:var(--shadow-card); }
  .kd-finanzas > summary { cursor:pointer; list-style:none; padding:12px 18px; font-family:'Sora', sans-serif; font-size:13px; font-weight:800; display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:44px; }
  .kd-finanzas > summary::-webkit-details-marker { display:none; }
  .kd-finanzas > summary:focus-visible { outline:3px solid var(--naranja); outline-offset:-3px; border-radius:14px; }
  .kd-finanzas > summary small { font-family:'Inter', sans-serif; font-weight:600; color:var(--texto-suave); font-size:11.5px; }
  .kd-finanzas[open] > summary { border-bottom:1px solid var(--borde); }
  .kd-finanzas-cuerpo { padding:14px; display:flex; flex-direction:column; gap:14px; }
  @media(max-width:1100px) { .kd-semaforo { grid-template-columns:repeat(3, 1fr); } }
  @media(max-width:960px) { .kd-canales, .kd-res-grid { grid-template-columns:1fr; } }
  @media(max-width:600px) { .kd-semaforo { grid-template-columns:repeat(2, 1fr); } }
  @media(prefers-reduced-motion:reduce) { .kd-cell.rojo.hay, .kd-item.rojo, .kd-chip.rojo { animation:none; } .kd-regla s { transition:none; } }

  /* Cocina & Domicilios List */
  .cocina-list-3b { display: flex; flex-direction: column; gap: 7px; }
  .c-row-3b {
    background: var(--card-subtle); border: 1px solid var(--borde); border-radius: 9px;
    padding: 8px 12px; display: flex; justify-content: space-between; align-items: center;
    cursor: pointer; transition: border-color .15s;
  }
  .c-row-3b:hover { border-color: var(--naranja); }
  .c-row-3b.alerta { border-color: #EF4444; background: rgba(239,68,68,0.06); }

  /* Barra Medios de Pago */
  .payments-split-bar-3b {
    display: flex; height: 12px; border-radius: 6px; overflow: hidden; gap: 2px;
    background: rgba(0,0,0,0.2); margin: 6px 0;
  }
  .pay-seg-3b { height: 100%; transition: width .5s ease; }
  .pay-breakdown-row-3b {
    display: flex; justify-content: space-between; font-size: 11px; color: var(--texto-suave);
    margin-top: 6px; flex-wrap: wrap; gap: 4px;
  }

  /* Barra Inferior */
  .footer-bar-3b {
    background: var(--blanco); border: 1px solid var(--borde); border-radius: 12px;
    padding: 10px 16px; display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 10px; box-shadow: var(--shadow-card);
  }

  /* Clases heredadas para compatibilidad */
  .stat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:18px; margin-bottom:26px; }
  .stat-card {
    background:var(--blanco); border:1px solid var(--borde); border-radius:18px;
    padding:22px; box-shadow:var(--shadow-card); position:relative; overflow:hidden;
    transition:transform .2s ease, box-shadow .2s ease;
  }
  .stat-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-hover); }
  .stat-card .s-ico { width:26px; height:26px; margin-bottom:12px; color:var(--naranja); }
  .stat-card .s-ico svg { width:100%; height:100%; stroke:currentColor; fill:none; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
  .stat-card .s-num { font-family:'Sora',sans-serif; font-size:32px; font-weight:800; color:var(--texto); line-height:1.1; margin-bottom:5px; }
  .stat-card .s-label { font-size:13px; font-weight:600; color:var(--texto-suave); text-transform:uppercase; letter-spacing:.05em; }
  .stat-card[onclick] { cursor:pointer; }
  .stat-card .s-sub { font-size:11.5px; font-weight:600; color:var(--texto-suave); margin-top:4px; }

  /* Dashboard: grafico simple de barras (ventas ultimos 7 dias) sin libreria
     externa — este proyecto no tiene build step, y las barras se calculan con
     el % del maximo de la semana en JS (ver cargarDashboard). */
  .dash-chart-bars { display:flex; align-items:flex-end; gap:10px; height:170px; }
  .dash-chart-bar { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; height:100%; gap:8px; min-width:0; }
  .dash-chart-bar-val { font-size:10px; font-weight:700; color:var(--texto-suave); font-family:'IBM Plex Mono',monospace; white-space:nowrap; }
  .dash-chart-bar-track { width:100%; max-width:46px; flex:1; display:flex; align-items:flex-end; }
  .dash-chart-bar-fill { width:100%; border-radius:8px 8px 3px 3px; background:linear-gradient(180deg,var(--naranja),var(--naranja-osc)); min-height:4px; transition:height .5s cubic-bezier(.16,1,.3,1); }
  .dash-chart-bar-day { font-size:11px; font-weight:700; color:var(--texto-suave); text-transform:uppercase; letter-spacing:.03em; }
  .dash-chart-bar.is-today .dash-chart-bar-fill { background:linear-gradient(180deg,#10B981,#059669); }
  .dash-chart-bar.is-today .dash-chart-bar-day { color:#10B981; }
  .dash-chart-total { font-size:13px; color:var(--texto-suave); margin-top:16px; padding-top:14px; border-top:1px solid var(--borde); }
  .dash-chart-total b { color:var(--texto); font-family:'Sora',sans-serif; }

  .dash-lists-grid { display:grid; grid-template-columns:1fr 1fr; gap:22px; }
  @media(max-width:900px) { .dash-lists-grid { grid-template-columns:1fr; } }

  .mesas-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(270px,1fr)); gap:16px; }
  
  /* NEW MESA CARD DESIGN */
  .mesa-card {
    background:var(--blanco); border:1.5px solid var(--borde); border-radius:16px; padding:16px;
    cursor:pointer; transition:all .2s ease; display:flex; flex-direction:column; justify-content:space-between; gap:14px;
    box-shadow:var(--shadow-card); position:relative;
  }
  .mesa-card:hover { transform:translateY(-3px); border-color:var(--naranja); box-shadow:var(--shadow-hover); }
  .mesa-card-header { display:flex; align-items:center; justify-content:space-between; gap:10px; }
  .mesa-badge { font-family:'Sora',sans-serif; font-size:17px; font-weight:800; color:var(--texto); display:flex; align-items:center; gap:8px; }
  .mesa-card-body { display:flex; flex-direction:column; gap:4px; font-size:13px; color:var(--texto-suave); }
  .mesa-card-footer { display:flex; align-items:center; justify-content:space-between; border-top:1px solid var(--borde); padding-top:12px; margin-top:4px; }
  .mesa-total { font-family:'IBM Plex Mono',monospace; font-size:18px; font-weight:800; color:var(--naranja-osc); }

  .mini-row { display:flex; align-items:center; justify-content:space-between; padding:12px 0; border-bottom:1px solid var(--borde); font-size:14.5px; gap:12px; flex-wrap:wrap; }
  .mini-row:last-child { border-bottom:none; }
  .mini-row .mr-title { color:var(--texto); font-weight:700; }
  .mini-row .mr-meta { color:var(--texto-suave); font-size:13px; }
  .badge-tipo { font-size:11px; padding:3px 10px; border-radius:999px; background:var(--naranja-suave); color:var(--naranja-osc); white-space:nowrap; font-weight:800; font-family:'IBM Plex Mono',monospace; }
  .badge-tipo.domi { background:#EDEBFB; color:#5B4FC4; }
  .badge-tipo.fe { background:#E0F2FE; color:#0369A1; }
  .badge-tipo.pagado { background:#DCFCE7; color:#15803D; }
  .badge-tipo.pendiente-cobro { background:#FEF3C7; color:#B45309; }
  .empty-hint { color:var(--texto-suave); font-size:14px; padding:18px 0; text-align:center; }
  .mini-row.clickable { cursor:pointer; margin:0 -12px; padding:12px 12px; border-radius:10px; transition:background .15s ease; }
  .mini-row.clickable:hover { background:var(--card-subtle); }
  .mini-row .mr-amt { font-family:'IBM Plex Mono',monospace; font-weight:800; color:var(--texto); white-space:nowrap; font-size:15px; }
  
  .row-check { width:18px; height:18px; cursor:pointer; }
  table tr.row-clickable { cursor:pointer; transition:background .15s ease; }
  table tr.row-clickable:hover { background:rgba(255,107,53,0.05); }
  .bulk-bar { display:none; align-items:center; justify-content:space-between; gap:12px; background:var(--naranja-suave); border:1px solid var(--naranja-linea); border-radius:12px; padding:12px 16px; margin-bottom:14px; }
  .bulk-bar span { font-size:13.5px; font-weight:800; color:var(--naranja-osc); }
  .bulk-bar button { background:#fff; border:1px solid var(--rojo); color:var(--rojo); padding:8px 16px; border-radius:9px; font-size:13.5px; font-weight:700; cursor:pointer; }
  .bulk-bar button:hover { background:var(--rojo); color:#fff; }

  .toolbar { display:flex; gap:12px; margin-bottom:18px; flex-wrap:wrap; }
  .toolbar input, .toolbar select, .field input, .field select, .field textarea, .filtros input, .filtros select {
    padding:13px 16px; min-height:48px; background:var(--blanco); border:1.5px solid var(--borde); border-radius:11px;
    color:var(--texto); font-size:15px; font-family:inherit; transition:border-color .15s, box-shadow .15s, background .15s;
  }
  .toolbar input:focus, .toolbar select:focus, .field input:focus, .field select:focus, .field textarea:focus, .filtros input:focus {
    outline:none; border-color:var(--naranja); box-shadow:0 0 0 3px var(--naranja-suave);
  }
  .toolbar input { flex:1; min-width:200px; }
  /* Controles dentro de celdas de tabla (ej. comisión editable por método de
     pago) — sin esta clase caen al estilo nativo del navegador, que desentona
     por completo con el resto del panel. Mismo tratamiento visual que
     .toolbar/.field, en un tamaño más compacto para caber en una fila. */
  .table-form-control {
    padding:9px 12px; min-height:38px; background:var(--blanco); border:1.5px solid var(--borde); border-radius:9px;
    color:var(--texto); font-size:13.5px; font-family:inherit; transition:border-color .15s, box-shadow .15s;
    width:100%; max-width:160px;
  }
  .table-form-control:focus { outline:none; border-color:var(--naranja); box-shadow:0 0 0 3px var(--naranja-suave); }
  input.table-form-control[type="number"] { max-width:100px; }
  .table-toggle { width:20px; height:20px; accent-color:var(--naranja); cursor:pointer; }
  .btn {
    background:linear-gradient(135deg,var(--naranja),var(--naranja-osc)); color:#fff; border:none;
    padding:13px 24px; min-height:48px; border-radius:11px; font-weight:700; cursor:pointer; font-size:15px;
    box-shadow:var(--btn-shadow); transition:filter .15s, transform .08s; display:inline-flex; align-items:center; justify-content:center; gap:8px;
  }
  .btn:hover { filter:brightness(1.08); transform:translateY(-1px); }
  .btn:active { transform:translateY(1px) scale(.98); }
  .btn-outline {
    background:var(--blanco); border:1.5px solid var(--borde); color:var(--texto);
    padding:12px 22px; min-height:48px; border-radius:11px; cursor:pointer; font-size:15px; font-weight:600;
    transition:border-color .15s, background .15s; display:inline-flex; align-items:center; justify-content:center; gap:8px;
  }
  .btn-outline:hover { border-color:var(--naranja); background:var(--naranja-suave); color:var(--naranja-osc); }
  .btn-outline.active { border-color:var(--naranja); background:var(--naranja); color:#fff; font-weight:800; }

  /* NEW TABLE DESIGN */
  .table-wrap { overflow-x:auto; border-radius:16px; border:1px solid var(--borde); background:var(--blanco); box-shadow:var(--shadow-card); }
  table { width:100%; border-collapse:collapse; font-size:14.5px; min-width:600px; }
  th, td { text-align:left; padding:16px 18px; border-bottom:1px solid var(--borde); vertical-align:middle; }
  th { color:var(--naranja); font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; background:rgba(255,107,53,0.08); }
  td { background:transparent; color:var(--texto); }
  tbody tr:hover { background:rgba(255,107,53,0.05); }
  td.actions { white-space:nowrap; }
  td.actions button, td.actions select { background:none; border:1.5px solid var(--borde); color:var(--texto); padding:9px 14px; border-radius:9px; cursor:pointer; font-size:13px; font-weight:600; margin-right:4px; font-family:inherit; transition:border-color .15s, background .15s; }
  td.actions button:hover { border-color:var(--naranja); background:var(--naranja-suave); }
  td.actions button.del { border-color:#F5C9C1; color:var(--rojo); }
  /* ===== CLIENTES: filas de altura estándar y sin scroll lateral (la tabla se ajusta al ancho; los textos largos se cortan con «…») ===== */
  @media (min-width:761px) {
    #tab-clientes .page-head { margin-bottom:14px; }
    #tab-clientes .page-head p { display:none; }
    #tab-clientes .toolbar { margin-bottom:12px; gap:10px; }
    #tab-clientes .toolbar input, #tab-clientes .toolbar select, #tab-clientes .toolbar .btn-outline { min-height:42px; padding:8px 14px; font-size:14px; }
    #tab-clientes .table-wrap { overflow:visible; }
    #tab-clientes table { min-width:0; width:100%; table-layout:fixed; font-size:14px; }
    #tab-clientes th { padding:11px 12px; font-size:11px; white-space:nowrap; }
    #tab-clientes td { padding:13px 12px; line-height:1.3; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    #tab-clientes th:nth-child(1), #tab-clientes td:nth-child(1) { width:42px; }
    #tab-clientes th:nth-child(3), #tab-clientes td:nth-child(3) { width:104px; }
    #tab-clientes th:nth-child(4), #tab-clientes td:nth-child(4) { width:112px; }
    #tab-clientes th:nth-child(5), #tab-clientes td:nth-child(5) { width:72px; }
    #tab-clientes th:nth-child(6), #tab-clientes td:nth-child(6) { width:118px; }
    #tab-clientes th:nth-child(7), #tab-clientes td:nth-child(7) { width:150px; }
    #tab-clientes .tag { font-size:10px; padding:2px 7px; margin-left:6px; vertical-align:1px; }
    #tab-clientes .origen-chip { font-size:11px; padding:3px 9px 3px 7px; gap:5px; }
    #tab-clientes .origen-chip svg { width:12px; height:12px; }
  }
  /* ===== FICHA DEL CLIENTE (modal): cabecera con avatar y resumen, pestañas, cuerpo con altura fija y acciones siempre visibles ===== */
  #clienteDetalleOverlay .modal.cdm { max-width:820px; padding:0; border-radius:24px; display:flex; flex-direction:column; overflow:hidden; }
  .cdm-form { display:flex; flex-direction:column; min-height:0; flex:1 1 auto; margin:0; }
  .cdm-cab { padding:24px 28px 18px; background:linear-gradient(150deg, var(--naranja-suave), transparent 75%); border-bottom:1px solid var(--borde); }
  .cdm-id { display:flex; align-items:center; gap:16px; padding-right:44px; }
  .cdm-av { width:60px; height:60px; border-radius:18px; flex:none; display:grid; place-items:center; font:800 22px 'Sora',sans-serif; color:#fff; letter-spacing:-.02em; background:linear-gradient(135deg,var(--naranja),var(--naranja-osc)); box-shadow:0 8px 20px -8px rgba(255,107,53,.65); }
  .cdm-id h2 { font:800 24px 'Sora',sans-serif; letter-spacing:-.02em; margin:0 0 6px; line-height:1.15; padding:0; }
  .cdm-sub { display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:13.5px; color:var(--texto-suave); }
  .cdm-sub .tel { font:600 13.5px 'IBM Plex Mono',monospace; color:var(--texto); }
  #cdResumen { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin:18px 0 0; }
  .cd-dato { background:var(--blanco); border:1px solid var(--borde); border-radius:14px; padding:11px 14px; }
  .cd-dato span { display:block; font:700 10px 'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.09em; color:var(--texto-muted); margin-bottom:3px; }
  .cd-dato b { font:800 16px 'Sora',sans-serif; letter-spacing:-.02em; }
  .cdm-tabs { display:flex; gap:4px; padding:0 22px; border-bottom:1px solid var(--borde); background:var(--blanco); overflow-x:auto; scrollbar-width:none; }
  .cdm-tabs::-webkit-scrollbar { display:none; }
  .cdm-tabs .cd-tab-btn { flex:none; min-width:0; min-height:48px; padding:12px 16px; border-radius:0; border-bottom:3px solid transparent; font-size:14px; background:none; box-shadow:none; color:var(--texto-suave); }
  .cdm-tabs .cd-tab-btn:hover { color:var(--texto); }
  .cdm-tabs .cd-tab-btn.active { background:none; box-shadow:none; color:var(--naranja-osc); border-bottom-color:var(--naranja); }
  .cdm-tabs .cd-tab-btn:focus-visible { outline:2px solid var(--naranja); outline-offset:-2px; }
  .cdm-tabs .cd-tab-btn b { font:700 11px 'IBM Plex Mono',monospace; background:var(--naranja-suave); color:var(--naranja); border-radius:99px; padding:1px 8px; }
  .cdm-cuerpo { padding:22px 28px; overflow-y:auto; flex:1 1 auto; min-height:300px; max-height:calc(92vh - 400px); }
  .cdm-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
  .cdm-cuerpo .field { margin-bottom:16px; }
  .cdm-cuerpo .field label { font-size:12px; text-transform:uppercase; letter-spacing:.05em; }
  .cdm-cuerpo .field input[type="text"], .cdm-cuerpo .field input[type="tel"], .cdm-cuerpo .field input[type="email"] { min-height:46px; }
  .cdm-bloq { display:flex; align-items:center; gap:12px; padding:12px 14px; border:1.5px solid var(--borde); border-radius:12px; background:var(--card-subtle); cursor:pointer; min-height:46px; margin:0 !important; text-transform:none !important; letter-spacing:0 !important; font-size:14px !important; color:var(--texto) !important; font-weight:600 !important; }
  .cdm-bloq input { width:18px; height:18px; accent-color:var(--rojo); flex:none; }
  .cdm-sec { margin:6px 0 10px; font:800 11px 'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.1em; color:var(--texto-muted); display:flex; align-items:center; justify-content:space-between; }
  .cdm-dir { display:flex; align-items:center; gap:12px; padding:11px 14px; border:1px solid var(--borde); border-radius:12px; margin-bottom:8px; background:var(--card-subtle); font-size:14px; }
  .cdm-dir svg { width:18px; height:18px; flex:none; stroke:var(--naranja); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  .cdm-dir span { flex:1; min-width:0; }
  .cdm-pill { font:700 10.5px 'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.06em; color:var(--naranja-osc); background:var(--naranja-suave); border-radius:99px; padding:3px 10px; flex:none; }
  .cdm-add { display:flex; gap:10px; margin-top:12px; }
  .cdm-add input { flex:1; min-height:46px; }
  .cdm-add button { min-height:46px; white-space:nowrap; }
  .cdm-hist { display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--borde); border-radius:12px; margin-bottom:8px; background:var(--card-subtle); font-size:14px; }
  .cdm-hist.row-clickable { cursor:pointer; transition:border-color .15s, background .15s; }
  .cdm-hist.row-clickable:hover { border-color:var(--naranja); background:var(--naranja-suave); }
  .cdm-hist .cod { font:700 13px 'IBM Plex Mono',monospace; color:var(--naranja-osc); flex:none; min-width:96px; }
  .cdm-hist .cuando { flex:1; min-width:0; color:var(--texto-suave); font-size:13px; }
  .cdm-hist .monto { font:700 13.5px 'IBM Plex Mono',monospace; flex:none; }
  .cdm-vacio { text-align:center; color:var(--texto-muted); padding:18px 10px; font-size:14px; border:1.5px dashed var(--borde); border-radius:12px; margin-bottom:8px; }
  .cdm-cuerpo .cd-fact, .cdm-cuerpo .cd-clave { margin:0; }
  .cdm-pie { display:flex; align-items:center; gap:10px; padding:16px 28px; border-top:1px solid var(--borde); background:var(--card-subtle); }
  .cdm-pie .sp { flex:1; }
  .cdm-pie button { min-height:46px; padding:10px 22px; border-radius:12px; font:700 14.5px 'Inter',sans-serif; cursor:pointer; border:1.5px solid var(--borde); background:var(--blanco); color:var(--texto); transition:background .15s, border-color .15s, color .15s; }
  .cdm-pie button:hover { border-color:var(--naranja); color:var(--naranja-osc); }
  .cdm-pie .peligro { border-color:transparent; background:none; color:var(--rojo); }
  .cdm-pie .peligro:hover { background:rgba(239,68,68,.1); border-color:transparent; color:var(--rojo); }
  .cdm-pie .guardar { border:none; color:#fff; background:linear-gradient(135deg,var(--naranja),var(--naranja-osc)); box-shadow:0 4px 16px rgba(255,107,53,.4); }
  .cdm-pie .guardar:hover { filter:brightness(1.08); color:#fff; }
  @media (max-width:640px) {
    #cdResumen { grid-template-columns:1fr 1fr; }
    .cdm-grid { grid-template-columns:1fr; }
    .cdm-cab, .cdm-cuerpo, .cdm-pie { padding-left:18px; padding-right:18px; }
    .cdm-cuerpo { max-height:none; }
  }
  /* ===== RESERVAS · calendario del mes (opción A) + agenda del día + control de tiempo de la mesa ===== */
  #tab-reservas .rsv-mes { background:var(--blanco); border:1px solid var(--borde); border-radius:20px; padding:16px; min-width:0; }
  .rsv-mes-cab { display:flex; align-items:center; gap:10px; margin-bottom:12px; }
  .rsv-mes-cab h3 { font:800 19px 'Sora',sans-serif; letter-spacing:-.02em; margin:0; }
  .rsv-mes-cab .count { margin:0 auto 0 4px; font-size:12px; color:var(--texto-muted); }
  .rsv-nav { width:40px; height:40px; border-radius:12px; border:1px solid var(--borde); background:var(--card-subtle); color:var(--texto); display:grid; place-items:center; cursor:pointer; transition:border-color .15s; }
  .rsv-nav:hover { border-color:var(--naranja); }
  .rsv-nav svg { width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  .rsv-sem, .rsv-dias { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; }
  .rsv-sem { margin-bottom:6px; } .rsv-sem span { font:700 10.5px 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:var(--texto-muted); text-align:center; }
  .rsv-d { position:relative; min-height:84px; border-radius:14px; border:1.5px solid var(--borde); background:var(--card-subtle); color:var(--texto); padding:8px 9px 10px; text-align:left; display:flex; flex-direction:column; gap:2px; overflow:hidden; cursor:pointer; transition:transform .15s, border-color .15s, box-shadow .15s; font-family:inherit; }
  .rsv-d:hover { transform:translateY(-2px); border-color:var(--naranja-linea); box-shadow:var(--shadow-card); }
  .rsv-d:focus-visible { outline:3px solid var(--naranja); outline-offset:2px; }
  .rsv-d .num { font:800 15px 'Sora',sans-serif; }
  .rsv-d .ct { font:700 11.5px 'Inter',sans-serif; color:var(--texto-suave); line-height:1.25; }
  .rsv-d .cp { font-size:11px; color:var(--texto-muted); line-height:1.25; }
  .rsv-d .pen { font:700 9.5px 'Inter',sans-serif; color:#3B82F6; background:rgba(59,130,246,.14); border-radius:6px; padding:1px 6px; width:max-content; margin-top:2px; }
  .rsv-d .barra { position:absolute; left:0; right:0; bottom:0; height:5px; background:var(--borde); } .rsv-d .barra i { display:block; height:100%; background:linear-gradient(90deg,#FF9A6B,var(--naranja)); border-radius:0 4px 4px 0; }
  .rsv-d.pas { opacity:.45; } .rsv-d.hoy .num::after { content:" · hoy"; font:700 10px 'IBM Plex Mono',monospace; text-transform:uppercase; color:var(--naranja); }
  .rsv-d.sel { border-color:var(--naranja); background:var(--naranja-suave); box-shadow:0 0 0 3px var(--naranja-linea); }
  .rsv-d.lleno .ct { color:var(--rojo); }
  .rsv-leyenda { margin:12px 2px 0; font-size:12px; color:var(--texto-muted); }
  #tab-reservas .rsv-split.rsv-cal { grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr); }
  .rsv-dia-tit::first-letter { text-transform:uppercase; }
  .rsv-histo { display:grid; grid-template-columns:repeat(20,1fr); gap:3px; align-items:end; height:60px; margin:6px 0 2px; }
  .rsv-histo i { display:block; background:var(--naranja-linea); border-radius:4px 4px 0 0; min-height:3px; } .rsv-histo i.pico { background:var(--naranja); }
  .rsv-histo-l { display:flex; justify-content:space-between; font:600 10px 'IBM Plex Mono',monospace; color:var(--texto-muted); margin-bottom:6px; }
  .rsv-hg { margin:14px 0 6px; }
  .rsv-ag { display:grid; grid-template-columns:62px 1fr auto; gap:10px; align-items:center; width:100%; text-align:left; border:1px solid var(--borde); border-radius:14px; background:var(--card-subtle); color:var(--texto); padding:9px 11px; margin-bottom:6px; cursor:pointer; font-family:inherit; box-shadow:inset 4px 0 0 var(--c); transition:border-color .15s, transform .15s; }
  .rsv-ag:hover { border-color:var(--naranja); transform:translateX(2px); } .rsv-ag:focus-visible { outline:3px solid var(--naranja); outline-offset:2px; }
  .rsv-ag .h { font:800 14px 'Sora',sans-serif; line-height:1.15; } .rsv-ag .n b { display:block; font-size:13.5px; } .rsv-ag .n small { font-size:12px; color:var(--texto-suave); display:block; }
  .rsv-mtag { display:inline-flex; align-items:center; gap:5px; margin-top:3px; font:700 11px 'IBM Plex Mono',monospace; color:#7C8CFF; background:rgba(124,140,255,.16); border-radius:8px; padding:2px 8px; }
  .rsv-mtag.sin { color:var(--rojo); background:rgba(239,68,68,.14); }
  .rsv-crono-mini { display:inline-block; margin:3px 0 0 6px; font:800 11px 'IBM Plex Mono',monospace; border-radius:8px; padding:2px 8px; }
  .rsv-crono-mini.rojo { color:#EF4444; background:rgba(239,68,68,.14); } .rsv-crono-mini.azul { color:#3B82F6; background:rgba(59,130,246,.14); }
  .rsv-volver { border:0; background:none; color:var(--naranja); font:700 13px 'Inter',sans-serif; padding:0 0 8px; cursor:pointer; display:block; min-height:32px; }
  .rsv-tiempo { margin:0 0 12px; padding:12px 14px; border-radius:14px; border:1.5px solid var(--borde); background:var(--card-subtle); }
  .rsv-tiempo .k { font:800 10.5px 'IBM Plex Mono',monospace; letter-spacing:.08em; color:var(--texto-muted); }
  .rsv-tiempo .mmss { display:block; font:800 34px 'IBM Plex Mono',monospace; letter-spacing:.04em; line-height:1.1; margin-top:2px; }
  .rsv-tiempo p { margin:6px 0 0; font-size:13px; color:var(--texto-suave); } .rsv-tiempo p b { color:var(--texto); }
  .rsv-tiempo.rojo { border-color:rgba(239,68,68,.55); background:rgba(239,68,68,.1); } .rsv-tiempo.rojo .mmss, .rsv-tiempo.rojo .k { color:#EF4444; }
  .rsv-tiempo.azul { border-color:rgba(59,130,246,.55); background:rgba(59,130,246,.1); } .rsv-tiempo.azul .k { color:#3B82F6; }
  .rsv-tiempo.verde { border-color:rgba(16,185,129,.55); background:rgba(16,185,129,.1); } .rsv-tiempo.verde .k { color:#10B981; }
  .rsv-codigo { margin:0 0 12px; padding:12px 14px; border-radius:14px; border:2px dashed var(--naranja-linea); text-align:center; }
  .rsv-codigo span { display:block; font:800 10.5px 'IBM Plex Mono',monospace; letter-spacing:.08em; color:var(--texto-muted); }
  .rsv-codigo b { display:block; font:800 34px 'IBM Plex Mono',monospace; letter-spacing:.2em; padding-left:.2em; color:var(--naranja); margin:2px 0; }
  .rsv-codigo small { font-size:12px; color:var(--texto-suave); } .rsv-codigo.sin { border-color:var(--borde); }
  .rsv-acciones { display:flex; gap:8px; flex-wrap:wrap; margin:0 0 16px; }
  .rsv-acc { flex:1; min-width:110px; min-height:44px; border-radius:12px; border:1.5px solid var(--borde); background:var(--card-subtle); color:var(--texto); font:700 13px 'Inter',sans-serif; cursor:pointer; box-shadow:0 3px 0 var(--borde); transition:transform .12s, box-shadow .12s, filter .15s; }
  .rsv-acc:hover { filter:brightness(1.12); } .rsv-acc:active { transform:translateY(3px); box-shadow:0 0 0 var(--borde); }
  .rsv-acc.ok { background:#10B981; border-color:#0c8f66; color:#fff; box-shadow:0 3px 0 #0c8f66; } .rsv-acc.ok:active { box-shadow:0 0 0 #0c8f66; }
  .rsv-acc.pausa { border-color:#3B82F6; color:#3B82F6; box-shadow:0 3px 0 rgba(59,130,246,.45); } .rsv-acc.no { border-color:rgba(239,68,68,.55); color:#EF4444; box-shadow:0 3px 0 rgba(239,68,68,.4); }
  .rsv-flujo { display:flex; gap:6px; margin:0 0 6px; }
  .rsv-flujo span { flex:1; text-align:center; padding:9px 6px; border-radius:11px; border:1.5px solid var(--borde); color:var(--texto-muted); font:700 12.5px 'Inter',sans-serif; cursor:default; user-select:none; }
  .rsv-flujo span.on { background:var(--c); border-color:var(--c); color:#fff; box-shadow:0 6px 16px -8px var(--c); }
  .rsv-enmesa { display:flex; align-items:center; gap:8px; margin:0 0 12px; padding:8px 12px; border-radius:11px; background:rgba(16,185,129,.12); color:#10B981; font:700 12.5px 'Inter',sans-serif; }
  .rsv-enmesa i { width:9px; height:9px; border-radius:50%; background:#10B981; }
  .rsv-bloqueo { display:flex; gap:9px; margin:-6px 0 14px; padding:9px 12px; border-radius:11px; background:var(--card-subtle); border:1px solid var(--borde); color:var(--texto-suave); font-size:12.5px; }
  .rsv-bloqueo svg { flex:none; width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; margin-top:1px; }
  .rsv-acc.mesa { background:var(--naranja); border-color:var(--naranja-osc); color:#fff; box-shadow:0 3px 0 var(--naranja-osc); } .rsv-acc.mesa:active { box-shadow:0 0 0 var(--naranja-osc); }
  .rsv-acc[disabled] { opacity:.38; cursor:not-allowed; filter:grayscale(.6); box-shadow:none; transform:none; }
  .rsv-crono-mini.verde { color:#10B981; background:rgba(16,185,129,.14); }
  .rsv-hist-ev { list-style:none; padding:0; margin:0 0 0 6px; border-left:2px solid var(--borde); display:grid; gap:12px; }
  .rsv-hist-ev li { position:relative; padding-left:16px; } .rsv-hist-ev li::before { content:""; position:absolute; left:-6px; top:5px; width:10px; height:10px; border-radius:50%; background:var(--naranja); border:2px solid var(--blanco); }
  .rsv-hist-ev b { display:block; font-size:13px; } .rsv-hist-ev span { font:500 11.5px 'IBM Plex Mono',monospace; color:var(--texto-muted); }
  @media (max-width:1100px) { #tab-reservas .rsv-split.rsv-cal { grid-template-columns:1fr; } .rsv-d { min-height:68px; } }
  @media (max-width:640px) { .rsv-d { min-height:58px; padding:6px; } .rsv-d .cp, .rsv-d .pen { display:none; } }
  .origen-chip { display:inline-flex; align-items:center; gap:6px; font:700 11.5px 'IBM Plex Mono',monospace; letter-spacing:.04em; padding:4px 10px 4px 8px; border-radius:999px; border:1.5px solid var(--c); color:var(--c); white-space:nowrap; }
  .origen-chip svg { width:13px; height:13px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  .dup-van { color:var(--naranja); font-weight:800; font-size:11px; font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.06em; }
  .tag { font-size:11px; padding:3px 9px; border-radius:999px; background:var(--naranja-suave); color:var(--naranja-osc); font-weight:800; font-family:'IBM Plex Mono',monospace; }
  .count { color:var(--texto-suave); font-size:13.5px; margin-bottom:12px; font-weight:600; }

  .card { background:var(--blanco); border:1px solid var(--borde); border-radius:18px; padding:28px; max-width:640px; box-shadow:var(--shadow-card); }
  .field { margin-bottom:18px; }
  .field label { font-size:13.5px; font-weight:700; color:var(--texto-suave); display:block; margin-bottom:7px; }
  .field input:not([type="checkbox"]):not([type="radio"]), .field select, .field textarea { width:100%; }
  .field textarea { min-height:95px; resize:vertical; }
  .field input[type="checkbox"], .field input[type="radio"] { width:16px; height:16px; min-width:16px; flex-shrink:0; accent-color:var(--naranja); cursor:pointer; vertical-align:middle; }

  .split-layout { display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:26px; align-items:start; }
  /* minmax(0,1fr), no 1fr a secas: una tabla con min-width fijo (ver "table"
     mas abajo) puede empujar la columna del grid mas alla del ancho disponible
     si el item no tiene un limite explicito de encogimiento — el .table-wrap
     interno ya maneja su propio scroll horizontal, pero solo si el grid se lo
     permite encogerse primero. */
  .two-col-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; }
  @media (max-width:800px) { .two-col-grid { grid-template-columns:1fr; } }
  .s-trend { font-size:12px; font-weight:700; margin-top:6px; }
  .s-trend.up { color:#059669; }
  .s-trend.down { color:var(--rojo); }
  
  .channel-distribution-bar { height:12px; border-radius:6px; background:var(--card-subtle); display:flex; overflow:hidden; margin:10px 0 16px; border:1px solid var(--borde); }
  .channel-distribution-bar .cd-domi { background:#5B4FC4; height:100%; transition:width .3s; }
  .channel-distribution-bar .cd-mesa { background:var(--naranja); height:100%; transition:width .3s; }

  .bar-chart { display:flex; align-items:flex-end; gap:12px; height:180px; padding-top:12px; }
  .bar-chart .bar-col { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; height:100%; gap:6px; }
  .bar-chart .bar { width:100%; max-width:40px; background:linear-gradient(180deg,var(--naranja),var(--naranja-osc)); border-radius:8px 8px 3px 3px; min-height:4px; transition:height .3s ease; }
  .bar-chart .bar-label { font-size:11.5px; color:var(--texto-suave); text-align:center; font-weight:600; }
  .bar-chart .bar-value { font-size:11px; font-weight:700; color:var(--texto); font-family:'IBM Plex Mono',monospace; }
  .rank-row { display:flex; align-items:center; gap:12px; padding:11px 0; border-bottom:1px solid var(--borde); }
  .rank-row:last-child { border-bottom:none; }
  .rank-num { width:26px; height:26px; border-radius:50%; background:var(--naranja-suave); color:var(--naranja-osc); font-size:12px; font-weight:800; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
  .rank-row .rk-nombre { flex:1; font-size:14px; font-weight:700; color:var(--texto); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .rank-row .rk-meta { font-size:12.5px; color:var(--texto-suave); flex-shrink:0; font-family:'IBM Plex Mono',monospace; }
  .rank-row-bar { height:6px; border-radius:99px; background:var(--card-subtle); overflow:hidden; flex-basis:100%; margin-top:-4px; }
  .rank-row-bar > div { height:100%; border-radius:99px; transition:width .4s ease; }
  .rank-row-bar.least > div { background:linear-gradient(90deg,#F87171,var(--rojo)); }
  .rank-row-bar.best > div { background:linear-gradient(90deg,var(--naranja),var(--naranja-osc)); }

  /* Tarjetas compactas de arqueo (efectivo/datáfono/transferencia/factura/propinas) */
  .rep-mini-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin-top:14px; }
  @media (max-width:1100px) { .rep-mini-grid { grid-template-columns:repeat(3,1fr); } }
  @media (max-width:640px) { .rep-mini-grid { grid-template-columns:repeat(2,1fr); } }
  .rep-mini-card { background:var(--card-subtle); border:1px solid var(--borde); border-radius:12px; padding:12px 14px; }
  .rep-mini-card .rm-label { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:var(--texto-suave); display:block; margin-bottom:4px; }
  .rep-mini-card .rm-val { font-family:'IBM Plex Mono',monospace; font-size:17px; font-weight:800; color:var(--texto); display:block; }
  .rep-mini-card .rm-sub { font-size:11px; color:var(--texto-suave); margin-top:2px; display:block; }
  .prop-metodo-ico { display:inline-flex; width:14px; height:14px; margin-right:2px; vertical-align:-2px; color:var(--texto-suave); }
  .prop-metodo-ico svg { width:14px; height:14px; }

  /* Presets de rango de fecha tipo pill (Hoy/Semana/Mes/Mes Anterior) — Caja y
     Reportes comparten el mismo look, inspirado en MOCKUPS/modulo reportes/. */
  .date-preset-row { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px; }
  .date-preset-btn { background:var(--card-subtle); border:1.5px solid var(--borde); color:var(--texto-suave); font-size:12.5px; font-weight:700; padding:7px 14px; border-radius:999px; cursor:pointer; transition:all .15s; }
  .date-preset-btn:hover { border-color:var(--naranja-linea); color:var(--texto); }
  .date-preset-btn.active { background:var(--naranja); border-color:var(--naranja); color:#fff; }
  /* Sub-pestañas del módulo Caja (Turno/Arqueo/Propinas/Movimientos/Métodos de pago) */
  .caja-subtabs { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:18px; border-bottom:1.5px solid var(--borde); padding-bottom:0; }
  .caja-subtab-btn { background:transparent; border:none; border-bottom:3px solid transparent; color:var(--texto-suave); font-family:'Sora',sans-serif; font-size:13px; font-weight:700; padding:9px 14px 10px; cursor:pointer; transition:all .15s; }
  .caja-subtab-btn:hover { color:var(--texto); }
  .caja-subtab-btn.active { color:var(--naranja); border-bottom-color:var(--naranja); }
  .caja-turno-pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:700; padding:6px 12px; border-radius:99px; }
  .caja-turno-pill.abierto { color:var(--fc-verde,#10B981); background:rgba(16,185,129,.12); border:1px solid rgba(16,185,129,.3); }
  .caja-turno-pill.cerrado { color:var(--texto-suave); background:var(--card-subtle); border:1px solid var(--borde); }
  .caja-subtab-desc { font-size:13px; color:var(--texto-suave); margin:-6px 0 18px; max-width:720px; }
  .fila-clickeable { cursor:pointer; }
  .fila-clickeable:hover td { background:var(--card-subtle); }
  .num { text-align:right; }

  /* ---- franja fija de Caja: 6 fichas compactas, siempre arriba, nunca metidas
     entre filtros/filas — cada una es un atajo real a otro módulo. ---- */
  .franja-caja { display:grid; grid-template-columns:repeat(6,1fr); gap:1px; background:var(--borde); border:1px solid var(--borde); border-radius:16px; overflow:hidden; margin-bottom:20px; box-shadow:var(--shadow-card); }
  .franja-item { background:var(--blanco); padding:13px 15px; display:flex; flex-direction:column; gap:5px; cursor:pointer; position:relative; transition:background .12s; }
  .franja-item:hover { background:var(--card-subtle); }
  .franja-item:hover .franja-flecha { opacity:1; transform:translateX(0); }
  .franja-flecha { position:absolute; top:11px; right:11px; width:12px; height:12px; stroke:var(--texto-muted,var(--texto-suave)); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; opacity:0; transform:translateX(-3px); transition:all .15s; }
  .franja-top { display:flex; align-items:center; gap:7px; color:var(--texto-suave); }
  .franja-top svg { width:14px; height:14px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }
  .franja-top span { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; }
  .franja-val { font-size:19px; font-weight:800; font-family:'Sora',sans-serif; line-height:1.1; }
  .franja-sub { font-size:11px; color:var(--texto-muted,var(--texto-suave)); }
  @media (max-width:1000px) { .franja-caja { grid-template-columns:repeat(3,1fr); } }
  @media (max-width:560px) { .franja-caja { grid-template-columns:repeat(2,1fr); } }

  /* ---- cabecera de panel (buscador + exportar), y el buscador/botón en sí ---- */
  .panel-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:4px; flex-wrap:wrap; }
  .panel-head-txt { flex:1; min-width:160px; }
  .panel-tools { display:flex; gap:8px; flex-shrink:0; flex-wrap:wrap; }
  .buscador { position:relative; min-width:180px; }
  .buscador svg { position:absolute; left:10px; top:50%; transform:translateY(-50%); width:14px; height:14px; stroke:var(--texto-muted,var(--texto-suave)); fill:none; stroke-width:2; }
  .buscador input { padding:8px 10px 8px 30px !important; min-height:0 !important; font-size:12.5px !important; border-radius:9px !important; }
  .btn-excel {
    display:inline-flex; align-items:center; gap:6px; background:var(--verde-suave); color:var(--verde);
    border:1px solid var(--verde); font-family:'Sora',sans-serif; font-weight:700; font-size:12px;
    padding:8px 13px; border-radius:9px; cursor:pointer; white-space:nowrap; transition:all .15s;
  }
  .btn-excel:hover { background:var(--verde); color:#fff; }
  .btn-excel svg { width:13px; height:13px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  .filtros { display:flex; gap:8px; margin-bottom:16px; flex-wrap:wrap; align-items:center; }

  /* Scroll integrado al diseno (sin flechas ni barra nativa de Windows) para
     contenedores altos que necesitan desplazarse — ej. la ficha de una mesa
     con muchos productos. */
  .fc-scroll-thin { scrollbar-width: thin; scrollbar-color: var(--borde) transparent; }
  .fc-scroll-thin::-webkit-scrollbar { width: 8px; height: 8px; }
  .fc-scroll-thin::-webkit-scrollbar-track { background: transparent; }
  .fc-scroll-thin::-webkit-scrollbar-thumb { background: var(--borde); border-radius: 99px; }
  .fc-scroll-thin::-webkit-scrollbar-thumb:hover { background: var(--naranja-linea); }
  @media (max-width:980px) { .split-layout { grid-template-columns:1fr; } }
  .preview-col { position:sticky; top:24px; display:flex; flex-direction:column; align-items:center; gap:12px; }
  .preview-col .preview-label { font-size:12px; color:var(--texto-suave); text-transform:uppercase; letter-spacing:.06em; font-weight:700; }

  .phone-mock { width:260px; height:520px; background:#1C1712; border-radius:38px; padding:12px; box-shadow:0 20px 45px -12px rgba(0,0,0,.4), inset 0 0 0 2px var(--borde); position:relative; flex-shrink:0; }
  .phone-mock::before { content:''; position:absolute; top:22px; left:50%; transform:translateX(-50%); width:70px; height:16px; background:#1C1712; border-radius:10px; z-index:5; }
  .phone-screen { width:100%; height:100%; border-radius:28px; overflow:hidden; position:relative; background:var(--gris-claro); }
  .phone-screen .fake-topbar { padding:34px 14px 8px; display:flex; align-items:center; gap:8px; }
  .phone-screen .fake-topbar .fb-dot { width:22px; height:22px; border-radius:50%; background:var(--borde); flex-shrink:0; }
  .phone-screen .fake-topbar .fb-lines { flex:1; }
  .phone-screen .fake-topbar .fb-line { height:6px; border-radius:3px; background:var(--borde); margin-bottom:5px; }
  .phone-screen .fake-topbar .fb-line:nth-child(2) { width:60%; }
  .phone-screen .fake-body { padding:6px 14px; display:flex; flex-direction:column; gap:8px; }
  .phone-screen .fake-card { height:70px; border-radius:12px; background:var(--blanco); border:1px solid var(--borde); }

  .notif-mock { margin:16px 12px 0; background:var(--blanco); border:1px solid var(--borde); border-left:4px solid var(--naranja); border-radius:14px; padding:12px 14px; display:flex; gap:10px; box-shadow:var(--shadow-card); }
  .notif-mock .nm-icon { width:36px; height:36px; border-radius:10px; flex-shrink:0; overflow:hidden; background:linear-gradient(135deg,var(--naranja),var(--naranja-osc)); display:flex; align-items:center; justify-content:center; }
  .notif-mock .nm-icon svg { width:60%; height:60%; stroke:#fff; fill:none; stroke-width:1.8; }
  .notif-mock .nm-text { min-width:0; flex:1; }
  .notif-mock .nm-app { font-size:11px; color:var(--texto-suave); text-transform:uppercase; letter-spacing:.04em; display:flex; align-items:center; gap:6px; justify-content:space-between; margin-bottom:3px; }
  .notif-mock .nm-app-left { display:flex; align-items:center; gap:6px; }
  .notif-mock .nm-badge { font-size:9.5px; font-weight:800; letter-spacing:.05em; padding:2px 7px; border-radius:999px; background:var(--naranja-suave); color:var(--naranja-osc); }
  .notif-mock .nm-title { font-size:13.5px; font-weight:700; color:var(--texto); margin-bottom:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .notif-mock .nm-body { font-size:12px; color:var(--texto-suave); line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }

  .branding-preview { display:flex; align-items:center; gap:18px; margin-bottom:20px; }
  .branding-logo-box { width:80px; height:80px; border-radius:18px; background:var(--card-subtle); border:1px solid var(--borde); display:flex; align-items:center; justify-content:center; overflow:hidden; flex-shrink:0; }
  .branding-logo-box img { width:100%; height:100%; object-fit:cover; }
  .branding-logo-box svg { width:38px; height:38px; stroke:var(--naranja); fill:none; stroke-width:1.6; }
  .upload-btn-wrap { position:relative; overflow:hidden; display:inline-block; }
  .upload-btn-wrap input[type=file] { position:absolute; inset:0; opacity:0; cursor:pointer; }
  .thumb-box { width:48px; height:48px; border-radius:11px; overflow:hidden; background:var(--card-subtle); border:1px solid var(--borde); flex-shrink:0; }
  .thumb-box img { width:100%; height:100%; object-fit:cover; }

  /* NEW MODAL DESIGN */
  .modal-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.7); backdrop-filter:blur(6px); align-items:center; justify-content:center; z-index:80; padding:calc(16px + var(--safe-t)) 16px calc(16px + var(--safe-b)); }
  .modal-overlay.open { display:flex; }

  /* Empresa → Domicilios (2026-10-08) */
  .emp-modos { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
  .emp-modo { display:flex; flex-direction:column; gap:6px; padding:14px 16px; border:1.5px solid var(--border); border-radius:14px; cursor:pointer; position:relative; transition:border-color .15s, background .15s; }
  .emp-modo:hover { border-color:var(--naranja); }
  .emp-modo:focus-within { outline:2px solid var(--naranja); outline-offset:2px; }
  .emp-modo.on { border-color:var(--naranja); background:var(--naranja-suave); }
  .emp-modo input { position:absolute; opacity:0; pointer-events:none; }
  .emp-modo-t { font:800 15px 'Sora',sans-serif; }
  .emp-modo-d { font-size:12.5px; line-height:1.45; color:var(--text-muted); }
  .dm-dir-solo { padding:11px 14px; border:1.5px dashed var(--border); border-radius:10px; font-weight:700; }
  .dm-coord { font-family:'IBM Plex Mono',monospace; }
  .dm-chip { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:800; padding:4px 10px; border-radius:8px; }
  .dm-chip:empty { display:none; }
  .dm-chip.ok { background:rgba(30,156,104,.14); color:var(--verde, #1e9c68); border:1px solid rgba(30,156,104,.35); }
  .dm-chip.no { background:rgba(220,55,44,.14); color:var(--rojo, #dc372c); border:1px solid rgba(220,55,44,.35); }
  /* Armador de dirección en formato colombiano: vía + número + letra + BIS + orientación # cruce + letra - placa + orientación.
     Los selectores empiezan con «.field» porque las reglas globales de .field input/select (ancho 100 %) ganarían si no. */
  .field .dm-via { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
  .field .dm-via select, .field .dm-via input:not([type="checkbox"]):not([type="radio"]) { width:auto; min-height:44px; padding:0 10px; margin:0; font-size:14.5px; font-weight:600; }
  .field .dm-via select { cursor:pointer; flex:0 0 auto; }
  .field .dm-via select.dm-v-tipo { width:128px; font-weight:800; }
  .field .dm-via input.dm-v-num:not([type="checkbox"]):not([type="radio"]) { width:62px; padding:0 4px; text-align:center; font-family:'IBM Plex Mono',monospace; }
  .field .dm-via select.dm-v-let { width:76px; padding:0 4px; }
  .field .dm-via select.dm-v-ori { width:92px; padding:0 4px; }
  .dm-via-sep { display:inline-flex; align-items:center; justify-content:center; padding:0 2px; font:800 17px 'IBM Plex Mono',monospace; color:var(--naranja); user-select:none; }
  .dm-pred { position:relative; }
  .dm-pred-lista { position:absolute; z-index:40; left:0; right:0; top:100%; margin-top:4px; background:var(--blanco, #1b1815); border:1.5px solid var(--borde, var(--border)); border-radius:12px; box-shadow:0 14px 34px rgba(0,0,0,.35); overflow:hidden; }
  .dm-pred-lista[hidden] { display:none; }
  .dm-pred-item { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; min-height:44px; padding:8px 14px; background:transparent; border:0; border-bottom:1px solid var(--borde, var(--border)); color:var(--texto); font:600 14.5px 'Inter',sans-serif; text-align:left; cursor:pointer; }
  .dm-pred-item:last-child { border-bottom:0; }
  .dm-pred-item:hover, .dm-pred-item:focus-visible, .dm-pred-item.sel { background:var(--naranja-suave); outline:none; }
  .dm-pred-item small { flex:0 0 auto; font:600 11.5px 'Inter',sans-serif; color:var(--text-muted); }
  .dm-pred-item.ok small { color:var(--verde, #1e9c68); }
  .dm-pred-ayuda { padding:10px 14px; font-size:12.5px; color:var(--text-muted); }
  .dm-via-ej { margin-top:6px; font-size:12.5px; color:var(--text-muted); }
  .dm-via-ej b { font-family:'IBM Plex Mono',monospace; color:var(--texto); }
  /* Tipos de domiciliario (informativo: se escoge en Usuarios → Domiciliarios) */
  .dm-tipo { display:flex; gap:14px; align-items:flex-start; padding:16px; border:1.5px solid var(--border); border-radius:14px; background:var(--card-subtle); }
  .dm-tipo-ico { flex:0 0 44px; width:44px; height:44px; display:grid; place-items:center; border-radius:12px; background:rgba(30,156,104,.14); color:var(--verde, #1e9c68); }
  .dm-tipo-man .dm-tipo-ico { background:rgba(245,158,11,.16); color:#D97706; }
  .dm-tipo-t { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:4px; font:800 15px 'Sora',sans-serif; }
  .dm-chip.amb { background:rgba(245,158,11,.16); color:#D97706; border:1px solid rgba(245,158,11,.4); }
  @media (max-width:640px) { .emp-modos { grid-template-columns:1fr; } }
  .dm-grid-3 { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:0 16px; }
  @media (max-width:760px) { .dm-grid-3 { grid-template-columns:1fr; } }
  .dm-add { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
  .dm-add input { flex:1; min-width:200px; }
  .dm-row { cursor:pointer; }
  .dm-row:hover td { background:var(--naranja-suave); }
  .dm-row:focus-visible { outline:2px solid var(--naranja); outline-offset:-2px; }
  @media (max-width:700px) { .emp-modos { grid-template-columns:1fr; } }
  .modal { position:relative; width:100%; max-width:700px; background:var(--blanco); border:1.5px solid var(--borde); border-radius:22px; padding:28px; max-height:92vh; max-height:92dvh; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 30px 70px rgba(0,0,0,.35); }
  .modal h2 { font-family:'Sora',sans-serif; font-size:21px; color:var(--texto); margin-bottom:16px; padding-right:38px; font-weight:800; display:flex; align-items:center; gap:8px; }
  .modal-body { overflow-y:auto; flex:1 1 auto; min-height:0; }
  .modal-x { position:absolute; top:18px; right:18px; width:36px; height:36px; border-radius:50%; border:none; background:var(--card-subtle); color:var(--texto-suave); display:flex; align-items:center; justify-content:center; cursor:pointer; transition:background .15s,color .15s; flex-shrink:0; z-index:2; font-size:16px; }
  .modal-x:hover { background:var(--naranja-suave); color:var(--naranja-osc); }

  .order-stepper { display:flex; justify-content:space-between; align-items:center; margin:14px 0 20px; position:relative; }
  .order-stepper::before { content:''; position:absolute; top:15px; left:20px; right:20px; height:3px; background:var(--borde); z-index:1; }
  .step-node { position:relative; z-index:2; display:flex; flex-direction:column; align-items:center; gap:6px; }
  .step-circle { width:32px; height:32px; border-radius:50%; background:var(--blanco); border:2.5px solid var(--borde); color:var(--texto-muted); font-size:12px; font-weight:800; display:flex; align-items:center; justify-content:center; transition:all .2s; }
  .step-label { font-size:11px; font-weight:700; color:var(--texto-suave); text-align:center; max-width:80px; }
  .step-node.completed .step-circle { background:#10B981; border-color:#10B981; color:#fff; }
  .step-node.completed .step-label { color:#10B981; font-weight:800; }
  .step-node.active .step-circle { background:var(--naranja); border-color:var(--naranja); color:#fff; box-shadow:0 0 0 4px var(--naranja-suave); }
  .step-node.active .step-label { color:var(--naranja-osc); font-weight:800; }

  .domi-tracking-card { background:var(--card-subtle); border:1.5px solid var(--borde); border-radius:14px; padding:14px 16px; margin-bottom:16px; display:flex; flex-direction:column; gap:10px; }
  .domi-tracking-header { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
  .domi-driver-info { display:flex; align-items:center; gap:12px; }
  .domi-driver-avatar { width:38px; height:38px; border-radius:50%; background:#5B4FC4; color:#fff; display:flex; align-items:center; justify-content:center; font-size:18px; flex-shrink:0; }

  .fe-card { background:var(--card-subtle); border:1.5px solid var(--borde); border-radius:14px; padding:14px 16px; margin-bottom:16px; }
  .fe-card-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }

  .cuenta-items-list { border:1px solid var(--borde); border-radius:14px; background:var(--card-subtle); padding:10px 14px; margin-bottom:16px; }
  .cuenta-item-row { display:flex; align-items:center; justify-content:space-between; padding:10px 0; border-bottom:1px dashed var(--borde); font-size:14.5px; gap:10px; }
  .cuenta-item-row:last-child { border-bottom:none; }
  .cuenta-item-left { display:flex; align-items:center; gap:10px; min-width:0; }
  .cuenta-qty-badge { font-family:'IBM Plex Mono',monospace; font-weight:800; font-size:13px; background:var(--naranja-suave); color:var(--naranja-osc); padding:3px 8px; border-radius:6px; flex-shrink:0; }
  .cuenta-item-name { font-weight:600; color:var(--texto); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cuenta-item-note { font-size:12px; color:var(--texto-suave); font-style:italic; }
  .cuenta-item-price { font-family:'IBM Plex Mono',monospace; font-weight:700; color:var(--texto); white-space:nowrap; }

  .cuenta-calc-box { background:var(--blanco); border:1.5px solid var(--borde); border-radius:16px; padding:16px 18px; margin-bottom:18px; box-shadow:var(--shadow-card); }
  .calc-line { display:flex; justify-content:space-between; align-items:center; font-size:14.5px; color:var(--texto-suave); padding:6px 0; }
  .calc-line.total-line { border-top:2px solid var(--texto); padding-top:12px; margin-top:8px; font-size:22px; font-weight:800; color:var(--texto); font-family:'Sora',sans-serif; }
  .calc-line.total-line .total-num { font-family:'IBM Plex Mono',monospace; color:var(--naranja-osc); }

  .propina-chips { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin:10px 0 14px; }
  .propina-chip { border:1.5px solid var(--borde); background:var(--card-subtle); padding:10px 6px; border-radius:10px; text-align:center; cursor:pointer; font-size:13px; font-weight:700; color:var(--texto-suave); transition:all .15s; font-family:inherit; }
  .propina-chip:hover { border-color:var(--naranja); color:var(--naranja-osc); }
  .propina-chip.selected { border-color:var(--naranja); background:var(--naranja-suave); color:var(--naranja-osc); font-weight:800; box-shadow:0 2px 8px rgba(255,107,53,.25); }

  .propina-chips-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 8px 0 12px; }
  .propina-chip-btn {
    padding: 9px 4px; border-radius: 10px; border: 1.5px solid var(--borde, #e2e8f0);
    background: var(--card-subtle, #f8fafc); color: var(--text-main, #333) !important; font-weight: 700; font-size: 12px;
    cursor: pointer; transition: all 0.15s ease; text-align: center; user-select: none;
  }
  .propina-chip-btn:hover { border-color: var(--naranja); color: var(--naranja-osc); }
  .propina-chip-btn.active {
    background: var(--naranja) !important; border-color: var(--naranja) !important;
    color: #FFFFFF !important; font-weight: 800; box-shadow: 0 2px 10px rgba(255,107,53,0.35);
  }
  .propina-modo-toggle {
    display: flex;
    background: var(--card-subtle, #f8fafc);
    border: 1.5px solid var(--borde, #e2e8f0);
    border-radius: 10px;
    padding: 2px;
    gap: 2px;
    flex-shrink: 0;
  }
  .propina-modo-btn {
    border: none;
    background: transparent;
    padding: 6px 10px;
    border-radius: 8px;
    font-size: 11.5px;
    font-weight: 700;
    cursor: pointer;
    color: var(--text-main, #333);
    transition: all 0.15s ease;
  }
  .propina-modo-btn.active {
    background: var(--naranja) !important;
    color: #FFFFFF !important;
    font-weight: 800;
  }

  .pago-metodos-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:10px 0 14px; }
  .pago-metodo-card { border:1.5px solid var(--borde); background:var(--card-subtle); padding:12px 10px; border-radius:12px; text-align:center; cursor:pointer; font-size:13.5px; font-weight:700; color:var(--texto-suave); transition:all .15s; display:flex; flex-direction:column; align-items:center; gap:6px; }
  .pago-metodo-card:hover { border-color:var(--naranja); color:var(--naranja-osc); }
  .pago-metodo-card.selected { border-color:var(--naranja); background:var(--naranja-suave); color:var(--naranja-osc); box-shadow:0 2px 8px rgba(255,107,53,.25); }
  .pago-metodo-card .pm-icon { font-size:20px; }

  .cambio-calc-box { display:none; background:var(--card-subtle); border:1px dashed var(--naranja-linea); border-radius:12px; padding:12px 14px; margin-bottom:14px; }
  .cambio-calc-box.show { display:block; }
  .cambio-denominaciones { display:flex; gap:6px; margin-top:8px; flex-wrap:wrap; }
  .cambio-btn { border:1px solid var(--borde); background:var(--blanco); padding:6px 12px; border-radius:8px; font-size:12px; font-weight:700; color:var(--texto); cursor:pointer; font-family:'IBM Plex Mono',monospace; }
  .cambio-btn:hover { border-color:var(--naranja); color:var(--naranja-osc); }
  .cambio-resultado { display:flex; justify-content:space-between; font-size:14.5px; font-weight:800; color:var(--verde); margin-top:8px; padding-top:8px; border-top:1px solid var(--borde); font-family:'IBM Plex Mono',monospace; }

  .receipt-container {
    background:#FFFDF9; border:2px dashed var(--borde); border-radius:14px; padding:22px 20px; margin-top:12px;
    font-family:'IBM Plex Mono',monospace; font-size:13px; line-height:1.6; color:#1C1714; box-shadow:0 6px 18px rgba(0,0,0,.06);
    position:relative; max-width:420px; margin-left:auto; margin-right:auto;
  }
  body:not(.theme-light) .receipt-container { background:#151210; color:#FAF6F0; border-color:#3E352C; }
  .receipt-pre { white-space:pre-wrap; word-break:break-word; font-family:inherit; }

  .estado-chip { font-family:'IBM Plex Mono',monospace; font-weight:700; font-size:11.5px; text-transform:uppercase; letter-spacing:.06em; padding:5px 12px; border-radius:999px; border:1.5px solid; white-space:nowrap; display:inline-block; }
  .switch-row { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:11px 0; margin-bottom:10px; border-bottom:1px solid var(--borde); }
  .switch-row span { font-size:14.5px; color:var(--texto); font-weight:600; }
  .switch { position:relative; display:inline-block; width:44px; height:24px; flex-shrink:0; }
  .switch input { opacity:0; width:0; height:0; }
  .switch-track { position:absolute; inset:0; display:block; background:#D64545; border-radius:999px; cursor:pointer; transition:background .15s; box-shadow:inset 0 1px 3px rgba(0,0,0,.25); }
  .switch-track::before { content:''; position:absolute; width:18px; height:18px; left:3px; top:3px; background:#FFFFFF; border:1px solid rgba(0,0,0,.15); border-radius:50%; transition:transform .15s; box-shadow:0 1px 3px rgba(0,0,0,.4); }
  .switch input:checked + .switch-track { background:#22A85E; }
  .switch input:checked + .switch-track::before { transform:translateX(20px); }

  /* Chips de permisos (modal de Usuario) — antes eran <label> invisibles sin
     borde dentro de un grid, asi que el area clickeable ocupaba toda la
     celda sin ninguna referencia visual ("cuadros que consumen el 100%").
     Ahora cada opcion es una tarjeta chica con borde propio, como el resto
     de selectores del panel. */
  .rbac-chip-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:8px; }
  .rbac-chip {
    display:flex; align-items:center; gap:8px; padding:9px 12px;
    border:1.5px solid var(--borde); border-radius:10px; background:var(--card-subtle);
    font-size:12.5px; font-weight:600; color:var(--texto); line-height:1.25;
    cursor:pointer; transition:border-color .15s, background .15s, box-shadow .15s;
  }
  .rbac-chip:hover { border-color:var(--naranja-linea); }
  .rbac-chip:has(input:checked) { border-color:var(--naranja); background:var(--naranja-suave); color:var(--naranja-osc); box-shadow:0 1px 5px rgba(255,107,53,.18); }
  .rbac-chip input[type="checkbox"] { width:16px; height:16px; flex-shrink:0; accent-color:var(--naranja); cursor:pointer; }

  /* Chips de etiquetas de promoción (modal Producto/Categoría) — mismo patrón
     que .rbac-chip, pero cada opción trae su propio color vía --etq-color inline. */
  .etq-chip-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(140px, 1fr)); gap:8px; }
  .etq-chip {
    display:flex; align-items:center; gap:8px; padding:9px 12px;
    border:1.5px solid var(--borde); border-radius:10px; background:var(--card-subtle);
    font-size:12.5px; font-weight:600; color:var(--texto); line-height:1.25;
    cursor:pointer; transition:border-color .15s, background .15s, box-shadow .15s;
  }
  .etq-chip:hover { border-color:var(--etq-color, var(--naranja-linea)); }
  .etq-chip:has(input:checked) { border-color:var(--etq-color, var(--naranja)); background:color-mix(in srgb, var(--etq-color, var(--naranja)) 16%, transparent); color:var(--etq-color, var(--naranja-osc)); }
  .etq-chip input[type="checkbox"] { width:16px; height:16px; flex-shrink:0; accent-color:var(--etq-color, var(--naranja)); cursor:pointer; }

  /* Burbujas de solo-lectura: filas de tabla del panel y tarjetas del sitio público */
  .etq-badge { display:inline-block; font-size:10.5px; padding:2px 8px; border-radius:999px; font-weight:800; margin:1px 3px 1px 0; white-space:nowrap; }

  /* ================================================================
     MODULO USUARIOS - REDISEÑO UI/UX SOBRIO Y PROFESIONAL
     (Sin emojis ni iconos decorativos - Tipografia y marcos limpios)
     ================================================================ */
  .usr-module-wrapper { display: flex; flex-direction: column; gap: 20px; }
  
  /* Top toolbar con buscador y boton maestro */
  .usr-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    background: var(--blanco);
    border: 1px solid var(--borde);
    border-radius: 14px;
    padding: 12px 16px;
    box-shadow: var(--shadow-card);
  }
  .usr-search-box {
    flex: 1;
    min-width: 220px;
  }
  .usr-search-input {
    width: 100%;
    padding: 10px 14px;
    font-size: 14px;
    border-radius: 9px;
    border: 1.5px solid var(--borde);
    background: var(--card-subtle);
    color: var(--texto);
    font-family: inherit;
    transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
  }
  .usr-search-input:focus {
    outline: none;
    border-color: var(--naranja);
    background: var(--blanco);
    box-shadow: 0 0 0 3px var(--naranja-suave);
  }
  .usr-top-btn {
    padding: 10px 18px;
    border-radius: 9px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    background: var(--naranja);
    color: #FFFFFF;
    border: none;
    font-family: inherit;
    transition: all .15s ease;
    white-space: nowrap;
  }
  .usr-top-btn:hover {
    background: var(--naranja-osc);
  }

  /* Bloque de Seccion */
  .usr-sec-block {
    background: var(--blanco);
    border: 1px solid var(--borde);
    border-radius: 16px;
    padding: 18px 20px;
    box-shadow: var(--shadow-card);
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  .usr-sec-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--borde);
  }
  .usr-sec-title-wrap {
    display: flex;
    align-items: center;
    gap: 10px;
  }
  .usr-sec-title {
    font-family: 'Sora', sans-serif;
    font-size: 15px;
    font-weight: 800;
    color: var(--texto);
    letter-spacing: -0.01em;
    text-transform: uppercase;
    margin: 0;
  }
  .usr-sec-count {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    font-weight: 700;
    padding: 3px 8px;
    border-radius: 999px;
    background: var(--card-subtle);
    color: var(--texto-suave);
    border: 1px solid var(--borde);
  }
  .usr-sec-add-btn {
    font-family: inherit;
    font-size: 13px;
    font-weight: 700;
    color: var(--naranja-osc);
    background: var(--naranja-suave);
    border: 1px solid var(--naranja-linea);
    border-radius: 8px;
    padding: 7px 14px;
    cursor: pointer;
    transition: all .15s ease;
    white-space: nowrap;
  }
  .usr-sec-add-btn:hover {
    background: var(--naranja);
    color: #FFFFFF;
    border-color: var(--naranja);
  }

  /* Bulk bar integrado en seccion */
  .usr-sec-block .bulk-bar {
    background: var(--naranja-suave);
    border: 1px solid var(--naranja-linea);
    border-radius: 10px;
    padding: 8px 14px;
    margin: 0;
  }
  .usr-sec-block .bulk-bar button {
    background: var(--blanco);
    border: 1px solid var(--rojo);
    color: var(--rojo);
    padding: 5px 12px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: all .15s ease;
  }
  .usr-sec-block .bulk-bar button:hover {
    background: var(--rojo);
    color: #FFFFFF;
  }

  /* Columnas visibles en Desktop / Tablet */
  .usr-col-header {
    display: grid;
    grid-template-columns: 32px minmax(180px, 1.4fr) minmax(140px, 1.2fr) minmax(100px, 0.9fr) 110px 215px;
    align-items: center;
    gap: 12px;
    padding: 8px 14px;
    font-size: 11px;
    font-weight: 800;
    color: var(--texto-suave);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-radius: 8px;
    background: var(--card-subtle);
  }
  .usr-col-header .col-act { text-align: right; }

  /* Lista y Tarjeta / Fila de Usuario */
  .usr-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .usr-card {
    display: grid;
    grid-template-columns: 32px minmax(180px, 1.4fr) minmax(140px, 1.2fr) minmax(100px, 0.9fr) 110px 215px;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    background: var(--blanco);
    border: 1px solid var(--borde);
    border-radius: 12px;
    cursor: pointer;
    transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
    position: relative;
  }
  .usr-card:hover {
    border-color: var(--naranja-linea);
    background: var(--card-subtle);
    box-shadow: 0 4px 12px rgba(0,0,0,0.06);
  }
  .usr-card.is-inactive {
    opacity: 0.78;
  }

  /* Columna Checkbox */
  .usr-check-col {
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .usr-check-col input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    accent-color: var(--naranja);
  }

  /* Columna Usuario con Inicial Tipografica */
  .usr-main-col {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
  }
  .usr-avatar-initial {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Sora', sans-serif;
    font-weight: 800;
    font-size: 15px;
    flex-shrink: 0;
    background: var(--card-subtle);
    color: var(--naranja-osc);
    border: 1px solid var(--borde);
  }
  .usr-avatar-initial.rol-maestro {
    background: rgba(245, 158, 11, 0.12);
    color: #D97706;
    border-color: rgba(245, 158, 11, 0.25);
  }
  .usr-avatar-initial.rol-colaborador {
    background: rgba(59, 130, 246, 0.12);
    color: #2563EB;
    border-color: rgba(59, 130, 246, 0.25);
  }
  .usr-avatar-initial.rol-mesero {
    background: rgba(13, 148, 136, 0.12);
    color: #0D9488;
    border-color: rgba(13, 148, 136, 0.25);
  }
  .usr-avatar-initial.rol-cocina {
    background: rgba(255, 107, 53, 0.12);
    color: var(--naranja-osc);
    border-color: var(--naranja-linea);
  }
  .usr-avatar-initial.rol-domiciliario {
    background: rgba(139, 92, 246, 0.12);
    color: #7C3AED;
    border-color: rgba(139, 92, 246, 0.25);
  }
  .usr-info-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
  }
  .usr-name {
    font-family: 'Sora', sans-serif;
    font-weight: 700;
    font-size: 14.5px;
    color: var(--texto);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .usr-meta-sub {
    font-size: 11.5px;
    color: var(--texto-suave);
    font-family: 'IBM Plex Mono', monospace;
    margin-top: 1px;
  }

  /* Columna Rol y Permisos */
  .usr-role-col {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    min-width: 0;
  }
  .usr-badge {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    font-weight: 700;
    padding: 3px 8px;
    border-radius: 6px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    white-space: nowrap;
  }
  .usr-badge.badge-maestro {
    background: rgba(245, 158, 11, 0.14);
    color: #D97706;
    border: 1px solid rgba(245, 158, 11, 0.3);
  }
  .usr-badge.badge-colaborador {
    background: rgba(59, 130, 246, 0.12);
    color: #2563EB;
    border: 1px solid rgba(59, 130, 246, 0.25);
  }
  .usr-badge.badge-mesero {
    background: rgba(13, 148, 136, 0.12);
    color: #0D9488;
    border: 1px solid rgba(13, 148, 136, 0.25);
  }
  .usr-badge.badge-cocina {
    background: rgba(255, 107, 53, 0.12);
    color: var(--naranja-osc);
    border: 1px solid var(--naranja-linea);
  }
  .usr-badge.badge-domiciliario {
    background: rgba(139, 92, 246, 0.12);
    color: #7C3AED;
    border: 1px solid rgba(139, 92, 246, 0.25);
  }
  .usr-badge.badge-perm {
    background: var(--card-subtle);
    color: var(--texto-suave);
    border: 1px solid var(--borde);
    font-size: 10.5px;
  }

  /* Columna Fecha / Telefono */
  .usr-date-col {
    font-size: 12px;
    color: var(--texto-suave);
    font-family: 'IBM Plex Mono', monospace;
    white-space: nowrap;
  }
  .usr-phone-text {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--texto);
  }

  /* Columna Boton de Estado Activo / Inactivo */
  .usr-status-col {
    display: flex;
    align-items: center;
  }
  .usr-status-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    border-radius: 999px;
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    border: 1.5px solid transparent;
    transition: all .15s ease;
    white-space: nowrap;
    background: transparent;
  }
  .usr-status-pill.is-active {
    background: var(--verde-suave);
    color: #059669;
    border-color: rgba(16, 185, 129, 0.35);
  }
  body:not(.theme-light) .usr-status-pill.is-active {
    color: #34D399;
    border-color: rgba(52, 211, 153, 0.35);
  }
  .usr-status-pill.is-inactive {
    background: rgba(239, 68, 68, 0.1);
    color: var(--rojo);
    border-color: rgba(239, 68, 68, 0.25);
  }
  .usr-status-pill .usr-status-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
  }
  .usr-status-pill.is-active .usr-status-dot {
    background: #10B981;
  }
  .usr-status-pill.is-inactive .usr-status-dot {
    background: var(--rojo);
  }
  .usr-status-pill:hover {
    filter: brightness(0.95);
    transform: translateY(-0.5px);
  }

  /* Columna Acciones */
  .usr-actions-col {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 6px;
    row-gap: 4px;
  }
  .usr-action-btn {
    font-family: inherit;
    font-size: 12px;
    font-weight: 600;
    padding: 6px 10px;
    border-radius: 7px;
    border: 1px solid var(--borde);
    background: var(--blanco);
    color: var(--texto-suave);
    cursor: pointer;
    transition: all .15s ease;
    white-space: nowrap;
  }
  .usr-action-btn:hover {
    border-color: var(--naranja-linea);
    color: var(--naranja-osc);
    background: var(--naranja-suave);
  }
  .usr-action-btn.del:hover {
    border-color: rgba(239, 68, 68, 0.4);
    color: var(--rojo);
    background: rgba(239, 68, 68, 0.1);
  }

  /* "Ojito" de contraseña — exclusivo del Superadministrador Maestro (oculto=1) */
  .usr-pass-reveal {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 8px;
    border-radius: 7px;
    border: 1px solid var(--borde);
    background: var(--gris-claro, #f4f4f5);
  }
  .usr-pass-text {
    font-family: 'SFMono-Regular', Consolas, monospace;
    font-size: 12px;
    color: var(--texto-suave);
    letter-spacing: 0.5px;
    max-width: 68px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .usr-pass-reveal .user-pass-toggle {
    padding: 2px;
    border: none;
    background: transparent;
    display: flex;
    align-items: center;
    color: var(--texto-suave);
  }
  .usr-pass-reveal .user-pass-toggle:hover {
    color: var(--naranja-osc);
  }

  /* Empty state sobrio */
  .usr-empty-row {
    padding: 24px 16px;
    text-align: center;
    color: var(--texto-suave);
    font-size: 13.5px;
    border: 1px dashed var(--borde);
    border-radius: 10px;
    background: var(--card-subtle);
  }

  /* Responsividad Tablet (max-width: 900px) */
  @media (max-width: 900px) {
    .usr-col-header {
      grid-template-columns: 28px minmax(140px, 1.2fr) minmax(120px, 1fr) 105px 200px;
    }
    .usr-col-header .col-date { display: none; }
    .usr-card {
      grid-template-columns: 28px minmax(140px, 1.2fr) minmax(120px, 1fr) 105px 200px;
    }
    .usr-date-col { display: none; }
  }

  /* Responsividad Movil (max-width: 640px) */
  @media (max-width: 640px) {
    .usr-sec-block {
      padding: 14px 12px;
      border-radius: 14px;
    }
    .usr-sec-header {
      flex-direction: row;
      align-items: center;
      justify-content: space-between;
      gap: 8px;
    }
    .usr-sec-add-btn {
      padding: 6px 10px;
      font-size: 12px;
    }
    .usr-col-header {
      display: none;
    }
    .usr-card {
      display: grid;
      grid-template-columns: 28px 1fr auto;
      grid-template-areas:
        "check main actions"
        ". role status";
      gap: 10px 8px;
      padding: 12px;
      align-items: center;
    }
    .usr-check-col { grid-area: check; }
    .usr-main-col { grid-area: main; }
    .usr-actions-col { grid-area: actions; }
    .usr-role-col { 
      grid-area: role; 
      padding-top: 8px;
      border-top: 1px solid var(--borde);
    }
    .usr-status-col { 
      grid-area: status; 
      padding-top: 8px;
      border-top: 1px solid var(--borde);
      justify-content: flex-end;
    }
    .usr-date-col { display: none; }
    .usr-status-pill {
      padding: 6px 10px;
      font-size: 12px;
    }
    .usr-topbar {
      flex-direction: column;
      align-items: stretch;
      padding: 12px;
    }
    .usr-search-box {
      width: 100%;
      min-width: 0;
    }
    .usr-top-btn {
      width: 100%;
      text-align: center;
    }
  }

  /* ================================================================
     MODULO EMPRESA - REDISEÑO UI/UX EN 5 PESTAÑAS
     (Sin emojis ni 3D - Limpio, sobrio y estructurado)
     ================================================================ */
  .emp-wrapper { display:flex; flex-direction:column; gap:20px; }

  /* Barra de 5 Pestañas */
  .emp-tabs-nav {
    display: flex;
    gap: 6px;
    background: var(--card-subtle);
    border: 1px solid var(--borde);
    border-radius: 14px;
    padding: 6px;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .emp-tabs-nav::-webkit-scrollbar { display: none; }
  .emp-tab-btn {
    flex: 1;
    min-width: 140px;
    border: none;
    background: none;
    padding: 11px 16px;
    border-radius: 9px;
    font-family: inherit;
    font-size: 13.5px;
    font-weight: 700;
    color: var(--texto-suave);
    cursor: pointer;
    transition: all .15s ease;
    white-space: nowrap;
    text-align: center;
  }
  .emp-tab-btn:hover {
    color: var(--naranja-osc);
  }
  .emp-tab-btn.active {
    background: var(--blanco);
    color: var(--naranja-osc);
    box-shadow: 0 2px 8px rgba(0,0,0,.1);
    font-weight: 800;
  }

  /* Paneles de Pestaña */
  .emp-tab-panel { display: none; }
  .emp-tab-panel.active { display: flex; flex-direction: column; gap: 20px; }

  /* Tarjeta moderna para bloques de Empresa */
  .emp-card {
    background: var(--blanco);
    border: 1px solid var(--borde);
    border-radius: 16px;
    padding: 24px;
    box-shadow: var(--shadow-card);
    display: flex;
    flex-direction: column;
    gap: 16px;
  }
  .emp-card-header {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--borde);
  }
  .emp-card-title {
    font-family: 'Sora', sans-serif;
    font-size: 16px;
    font-weight: 800;
    color: var(--texto);
    margin: 0;
  }
  .emp-card-desc {
    font-size: 12.5px;
    color: var(--texto-suave);
    line-height: 1.5;
    margin: 0;
  }

  /* Form Grid */
  .emp-grid-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
  }
  @media (max-width: 720px) {
    .emp-grid-2 { grid-template-columns: 1fr; }
  }

  /* Selector de Modo de Operacion (Impreso / Tactil) */
  .emp-modo-selector {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-bottom: 8px;
  }
  @media (max-width: 600px) {
    .emp-modo-selector { grid-template-columns: 1fr; }
  }
  .emp-modo-card {
    background: var(--card-subtle);
    border: 2px solid var(--borde);
    border-radius: 12px;
    padding: 16px;
    cursor: pointer;
    transition: all .15s ease;
    text-align: left;
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .emp-modo-card:hover {
    border-color: var(--naranja-linea);
  }
  .emp-modo-card.active {
    border-color: var(--naranja);
    background: var(--naranja-suave);
  }
  .emp-modo-card-title {
    font-family: 'Sora', sans-serif;
    font-size: 15px;
    font-weight: 800;
    color: var(--texto);
  }
  .emp-modo-card.active .emp-modo-card-title {
    color: var(--naranja-osc);
  }
  .emp-modo-card-desc {
    font-size: 12px;
    color: var(--texto-suave);
    line-height: 1.45;
  }

  /* QR Menu Card Component */
  .emp-qr-container {
    display: flex;
    align-items: center;
    gap: 28px;
    flex-wrap: wrap;
    padding: 12px 0;
  }
  .emp-qr-box {
    width: 190px;
    height: 190px;
    background: #FFFFFF;
    border: 2px solid var(--naranja-linea);
    border-radius: 16px;
    padding: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    box-shadow: 0 4px 14px rgba(0,0,0,0.06);
  }
  .emp-qr-box svg {
    width: 100%;
    height: 100%;
    display: block;
  }
  .emp-qr-info {
    flex: 1;
    min-width: 240px;
    display: flex;
    flex-direction: column;
    gap: 14px;
  }
  .emp-qr-url-row {
    display: flex;
    gap: 8px;
  }
  .emp-qr-url-row input {
    flex: 1;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 13px;
    padding: 10px 14px;
    border-radius: 9px;
    border: 1.5px solid var(--borde);
    background: var(--card-subtle);
    color: var(--texto);
  }
  .emp-qr-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
  }

  /* Responsive para móvil */
  @media (max-width: 640px) {
    .emp-card { padding: 16px; border-radius: 14px; }
    .emp-tabs-nav { border-radius: 12px; padding: 4px; }
    .emp-tab-btn { min-width: 130px; font-size: 12.5px; padding: 9px 12px; }
    .emp-qr-container { justify-content: center; text-align: center; }
    .emp-qr-url-row { flex-direction: column; }
    .emp-qr-actions { flex-direction: column; }
    .emp-qr-actions button, .emp-qr-actions a { width: 100%; text-align: center; justify-content: center; }
  }

  /* Horario de atención — tabla (mismo componente que Productos/Categorías,
     .table-wrap/table/th/td) con selects de hora GRANDES en vez de un input
     numérico de "duración" confuso o un time-picker nativo diminuto. Números
     en IBM Plex Mono (tipografía distinta al resto del texto, ya usada en
     esta app para precios/tags) a tamaño bien visible. El toggle Abierto/
     Cerrado usa el switch de interruptor (.switch, ya usado en Productos/
     Comandas) SIEMPRE acompañado de su texto "Abierto"/"Cerrado" al lado —
     el switch de un solo color sin texto ya falló en otros monitores (ver
     nota de .estado-toggle más arriba en este mismo bloque de CSS). */
  #ceHorariosLista tr.cerrado-dia td { opacity:.5; }
  #ceHorariosLista td { white-space:nowrap; vertical-align:middle; }
  /* .switch normalmente vive dentro de .switch-row (display:flex), que lo
     "blockifica" y por eso su width/height funcionan ahí. Suelto en una
     celda de tabla se queda display:inline (default de <label>) y el
     width/height que le da .switch se ignora por completo -> colapsa a
     tamaño cero y queda invisible. Forzamos inline-block aquí. */
  .hd-abierto-celda { display:inline-flex; align-items:center; gap:8px; }
  .hd-abierto-celda .switch { display:inline-block; }
  .hd-dia-nombre { font-family:'Sora',sans-serif; font-weight:800; font-size:15.5px; color:var(--texto); }
  .hd-abierto-txt { font-size:13px; font-weight:700; color:var(--texto-suave); }
  .hd-time { display:inline-flex; align-items:center; gap:4px; }
  .hd-time select {
    background:var(--blanco); border:1.5px solid var(--borde); border-radius:9px; color:var(--texto);
    font-family:'IBM Plex Mono',monospace; font-weight:700; font-size:14.5px; letter-spacing:-.01em;
    padding:8px 3px; text-align:center; cursor:pointer; transition:border-color .15s, box-shadow .15s;
  }
  .hd-time select:focus { outline:none; border-color:var(--naranja); box-shadow:0 0 0 3px var(--naranja-suave); }
  .hd-time select.hd-hora { width:44px; }
  .hd-time select.hd-min { width:50px; }
  .hd-time select.hd-ampm { width:56px; font-size:12px; }
  .hd-time .hd-sep { color:var(--texto-muted); font-weight:800; font-size:14.5px; }
  .hd-resumen { font-size:13px; font-weight:700; color:var(--texto-suave); }
  .hd-resumen.hd-resumen-cruza { color:var(--naranja-osc); }
  .hd-resumen.hd-resumen-cerrado { color:var(--rojo); font-weight:800; }

  /* Titulo de cada seccion de Usuarios (Administrador/Meseros/Cocina/
     Domiciliarios) — antes era un <h3> con emoji suelto, sin jerarquia real. */
  .usuarios-seccion-titulo {
    display:flex; align-items:center; gap:9px; font-size:14px; font-weight:800;
    text-transform:uppercase; letter-spacing:.05em; color:var(--texto);
    margin:0 0 12px; padding-left:11px; border-left:3px solid var(--naranja);
  }

  tr.fila-cerrada td { background:#ECFDF5 !important; }
  body:not(.theme-light) tr.fila-cerrada td { background:rgba(16,185,129,0.15) !important; }
  .mini-row.cerrada { background:#ECFDF5; border-color:#A7F3D0; cursor:default; }
  body:not(.theme-light) .mini-row.cerrada { background:rgba(16,185,129,0.15); border-color:rgba(16,185,129,0.3); }
  
  .modal-actions { display:flex; gap:10px; margin-top:20px; flex-wrap:wrap; }
  .modal-actions button, .modal-actions a { flex:1; min-width:140px; padding:13px; border-radius:10px; font-weight:700; font-size:14.5px; cursor:pointer; border:none; font-family:inherit; min-height:48px; display:inline-flex; align-items:center; justify-content:center; text-decoration:none; }
  .modal-actions .save { background:linear-gradient(135deg,var(--naranja),var(--naranja-osc)); color:#fff; box-shadow:var(--btn-shadow); }
  .modal-actions .cancel { background:transparent; border:1.5px solid var(--borde); color:var(--texto-suave); }
  .modal-actions .wa-btn { background:#25D366; color:#fff; }
  .modal-actions .print-btn { background:var(--card-subtle); border:1.5px solid var(--borde); color:var(--texto); }
  .modal-actions .print-btn:hover { border-color:var(--naranja); color:var(--naranja-osc); }

  .toast { position:fixed; bottom:calc(24px + var(--safe-b)); left:50%; transform:translateX(-50%); background:#1C1714; color:#fff; border:1px solid var(--naranja); padding:12px 24px; border-radius:999px; font-size:14px; font-weight:700; z-index:120; opacity:0; transition:opacity 0.3s; max-width:90vw; text-align:center; box-shadow:0 10px 30px rgba(0,0,0,.5); }
  .toast.show { opacity:1; }

  @media print {
    body * { visibility:hidden; }
    /* #opsPrecuentaAsciiText es el mismo texto de ticket/precuenta pero en la
       capa TACTIL (.pos-ops-overlay) — vive fuera de .receipt-print-area, asi
       que sin esto "Imprimir" ahi no imprimia nada (toda la pagina quedaba
       oculta y este texto nunca se marcaba visible). */
    .receipt-print-area, .receipt-print-area *,
    #opsPrecuentaAsciiText, #opsPrecuentaAsciiText * { visibility:visible; }
    .receipt-print-area { position:fixed; left:0; top:0; width:100%; max-width:320px; margin:0; padding:4px; font-size:12px; color:#000; background:#fff; box-shadow:none; border:none; }
    #opsPrecuentaAsciiText { position:fixed; left:0; top:0; width:100%; max-width:320px; margin:0; padding:4px; font-size:12px; color:#000 !important; background:#fff !important; box-shadow:none; border:none; white-space:pre-wrap; }
    @page { margin: 0; size: auto; }
  }

  @media (max-width:900px) {
    .mobile-topbar { display:flex; flex-shrink:0; align-items:center; justify-content:space-between; padding:calc(12px + var(--safe-t)) 16px 12px; background:var(--blanco); border-bottom:1px solid var(--borde); z-index:45; }
    .mobile-topbar .brand { padding:0; }
    .hamburger { background:none; border:1px solid var(--borde); color:var(--texto); font-size:20px; padding:8px 12px; border-radius:10px; cursor:pointer; }
    .app-shell { flex-direction:column; }
    .sidebar { position:fixed; top:0; left:0; height:100vh; height:100dvh; transform:translateX(-100%); transition:transform .25s ease; box-shadow:20px 0 40px rgba(0,0,0,.3); overflow-y:auto; background:var(--blanco); z-index:50; }
    .sidebar.open { transform:translateX(0); }
    .sidebar-backdrop { display:none; position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:39; }
    .sidebar-backdrop.open { display:block; }
    main.content { padding:20px 16px calc(40px + var(--safe-b)); }
    .fc-persistent-topbar { top:calc(-20px - var(--safe-t)); margin:calc(-20px - var(--safe-t)) -16px 20px -16px; padding:calc(14px + var(--safe-t)) 16px 14px; }
    .stat-grid { grid-template-columns:repeat(2,1fr); }
    .nav-item { padding:13px 14px; font-size:15px; }
  }
  @media (max-width:640px) {
    .toolbar { flex-direction:column; align-items:stretch; }
    .toolbar input, .toolbar select, .toolbar button { width:100%; min-width:0; }
    .phone-mock { width:220px; height:440px; }
    .preview-col { position:static; }
    .modal { padding:20px; }
    .card { max-width:none; padding:20px; }
    .stat-grid { grid-template-columns:1fr; }
    .propina-chips { grid-template-columns:repeat(2,1fr); }
    .pago-metodos-grid { grid-template-columns:1fr; }

    .table-wrap { overflow-x:visible; border:none; background:none; box-shadow:none; }
    table { min-width:0; width:100%; }
    thead { display:none; }
    table, tbody, tr, td { display:block; width:100%; }
    tbody tr { background:var(--blanco); border:1px solid var(--borde); border-radius:14px; margin-bottom:12px; padding:8px 6px; box-shadow:var(--shadow-card); }
    tbody tr:hover { background:var(--blanco); }
    td { border-bottom:1px dashed var(--borde); padding:11px 14px; font-size:14px; display:flex; align-items:center; justify-content:space-between; gap:12px; text-align:right; }
    td:last-child { border-bottom:none; }
    td::before { content:attr(data-label); font-size:11px; font-weight:800; color:var(--texto-suave); text-transform:uppercase; letter-spacing:.04em; text-align:left; flex-shrink:0; }
    td:not([data-label]) { justify-content:flex-start; }
    td:not([data-label])::before { content:none; }
    td.actions { flex-wrap:wrap; justify-content:flex-start; white-space:normal; }
    td.actions button { margin:2px 4px 2px 0; padding:10px 14px; font-size:13px; min-height:40px; }
  }

  /* ================================================================
     MOCKUP DARK/LIGHT OVERRIDES - ESTADOS, BADGES, TABLAS, MODALES
     ================================================================ */

  /* STATUS CHIPS (IBM PLEX MONO) */
  .estado-chip, span.estado-chip {
    font-family: 'IBM Plex Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.04em !important;
    padding: 4px 10px !important;
    border-radius: 999px !important;
    border-width: 1px !important;
    border-style: solid !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 5px !important;
    white-space: nowrap !important;
  }

  body:not(.theme-light) .estado-chip {
    background: var(--card-subtle) !important;
  }
  body:not(.theme-light) .estado-chip[style*="#047857"],
  body:not(.theme-light) .estado-chip[style*="#10B981"] {
    background: rgba(16, 185, 129, 0.16) !important;
    color: #34D399 !important;
    border-color: rgba(16, 185, 129, 0.4) !important;
  }
  body:not(.theme-light) .estado-chip[style*="#1D4ED8"],
  body:not(.theme-light) .estado-chip[style*="#3B82F6"] {
    background: rgba(59, 130, 246, 0.16) !important;
    color: #60A5FA !important;
    border-color: rgba(59, 130, 246, 0.4) !important;
  }
  body:not(.theme-light) .estado-chip[style*="#92620A"],
  body:not(.theme-light) .estado-chip[style*="#FBBF24"],
  body:not(.theme-light) .estado-chip[style*="#F59E0B"] {
    background: rgba(245, 158, 11, 0.16) !important;
    color: #FBBF24 !important;
    border-color: rgba(245, 158, 11, 0.4) !important;
  }
  body:not(.theme-light) .estado-chip[style*="#C2410C"],
  body:not(.theme-light) .estado-chip[style*="#F97316"] {
    background: rgba(255, 107, 53, 0.16) !important;
    color: #FF8F6B !important;
    border-color: rgba(255, 107, 53, 0.4) !important;
  }
  body:not(.theme-light) .estado-chip[style*="#4338CA"],
  body:not(.theme-light) .estado-chip[style*="#6366F1"] {
    background: rgba(99, 102, 241, 0.16) !important;
    color: #A5B4FC !important;
    border-color: rgba(99, 102, 241, 0.4) !important;
  }
  body:not(.theme-light) .estado-chip[style*="#B91C1C"],
  body:not(.theme-light) .estado-chip[style*="#DC2626"] {
    background: rgba(239, 68, 68, 0.16) !important;
    color: #F87171 !important;
    border-color: rgba(239, 68, 68, 0.4) !important;
  }

  /* BADGES DE TIPO */
  .badge-tipo {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    font-weight: 700;
    padding: 3px 9px;
    border-radius: 999px;
    border: 1px solid var(--borde);
    background: var(--card-subtle);
    color: var(--texto-suave);
    white-space: nowrap;
  }
  body:not(.theme-light) .badge-tipo.pagado { background: rgba(16,185,129,0.15) !important; color: #34D399 !important; border-color: rgba(16,185,129,0.35) !important; }
  body:not(.theme-light) .badge-tipo.pendiente-cobro { background: rgba(245,158,11,0.15) !important; color: #FBBF24 !important; border-color: rgba(245,158,11,0.35) !important; }
  body:not(.theme-light) .badge-tipo.domi { background: rgba(139,92,246,0.15) !important; color: #A78BFA !important; border-color: rgba(139,92,246,0.35) !important; }
  body:not(.theme-light) .badge-tipo.fe { background: rgba(59,130,246,0.15) !important; color: #60A5FA !important; border-color: rgba(59,130,246,0.35) !important; }

  body.theme-light .badge-tipo.pagado { background:#DCFCE7 !important; color:#15803D !important; }
  body.theme-light .badge-tipo.pendiente-cobro { background:#FEF3C7 !important; color:#B45309 !important; }
  body.theme-light .badge-tipo.domi { background:#EDEBFB !important; color:#5B4FC4 !important; }
  body.theme-light .badge-tipo.fe { background:#E0F2FE !important; color:#0369A1 !important; }

  /* TABLE LUXURY BENTO STYLING */
  .table-wrap {
    background: var(--blanco);
    border: 1px solid var(--borde);
    border-radius: 18px;
    overflow-x: auto;
    box-shadow: var(--shadow-card);
  }
  table {
    border-collapse: collapse;
    width: 100%;
    min-width: 700px;
  }
  thead th {
    background: var(--card-subtle);
    color: var(--naranja);
    font-size: 11.5px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .06em;
    padding: 15px 18px;
    text-align: left;
    border-bottom: 1.5px solid var(--borde);
    white-space: nowrap;
  }
  tbody td {
    padding: 15px 18px;
    font-size: 14px;
    color: var(--texto);
    border-bottom: 1px solid var(--borde);
    background: transparent;
    vertical-align: middle;
  }
  tbody tr {
    transition: background 0.15s ease;
  }
  tbody tr:last-child td { border-bottom: none; }
  tbody tr:hover td { background: rgba(255,107,53,0.05); }
  tbody tr.fila-cerrada td { opacity: 0.55; }
  td .btn, td button { font-size: 12px; padding: 6px 12px; min-height: 36px; }
  td.actions { white-space: nowrap; }

  /* MODAL DARK MODE */
  .modal-overlay { position:fixed; inset:0; z-index:1000; display:none; align-items:center; justify-content:center; padding:16px; background:rgba(0,0,0,0.7); backdrop-filter:blur(6px); }
  .modal-overlay.open { display:flex; }
  .modal { background:var(--blanco); border:1.5px solid var(--borde); border-radius:22px; width:100%; max-width:680px; max-height:90vh; max-height:90dvh; overflow-y:auto; position:relative; box-shadow:0 20px 50px rgba(0,0,0,0.5); }
  .modal-body { padding:26px; }
  .modal-x { position:absolute; top:16px; right:16px; width:38px; height:38px; border-radius:50%; background:var(--card-subtle); border:1.5px solid var(--borde); color:var(--texto); font-size:18px; font-weight:800; cursor:pointer; display:flex; align-items:center; justify-content:center; z-index:10; }
  .modal-actions { display:flex; gap:10px; padding:18px 26px; border-top:1px solid var(--borde); background:var(--card-subtle); border-radius:0 0 22px 22px; flex-wrap:wrap; }
  .modal-actions .save { background:linear-gradient(135deg,var(--naranja),var(--naranja-osc)); color:#fff; border:none; padding:12px 24px; border-radius:12px; font-size:15px; font-weight:800; cursor:pointer; box-shadow:var(--btn-shadow); }
  .modal-actions .cancel { background:var(--blanco); border:1.5px solid var(--borde); color:var(--texto-suave); padding:12px 24px; border-radius:12px; font-size:15px; font-weight:700; cursor:pointer; }
  .modal-actions .delete { background:transparent; border:1.5px solid var(--rojo); color:var(--rojo); padding:12px 24px; border-radius:12px; font-size:15px; font-weight:700; cursor:pointer; }
  .modal-actions .wa-btn { background:#25D366; color:#fff; border:none; padding:12px 24px; border-radius:12px; font-size:15px; font-weight:800; cursor:pointer; }
  .modal-actions .print-btn { background:var(--blanco); border:1.5px solid var(--borde); color:var(--texto); padding:12px 24px; border-radius:12px; font-size:15px; font-weight:700; cursor:pointer; }

  /* RECEIPT THERMAL - ALWAYS LIGHT */
  .receipt-container { background:var(--blanco); border:1.5px solid var(--borde); border-radius:16px; padding:20px; }
  .receipt-pre { background:#FDFBFA; color:#1A1715; font-family:'IBM Plex Mono',monospace; font-size:12px; padding:18px; border-radius:12px; border:2px dashed var(--borde); white-space:pre-wrap; line-height:1.4; }

  /* CUENTA/COBRO MODAL - DARK MODE */
  .cuenta-items-list { background:var(--card-subtle); border-radius:14px; padding:12px; }
  .cuenta-item-row { display:flex; align-items:center; justify-content:space-between; padding:8px 0; border-bottom:1px solid var(--borde); }
  .cuenta-item-row:last-child { border-bottom:none; }
  .cuenta-calc-box { background:var(--card-subtle); border:1px solid var(--borde); border-radius:14px; padding:16px; }
  .calc-line { display:flex; justify-content:space-between; padding:6px 0; font-size:14px; color:var(--texto-suave); }
  .calc-line.total-line { font-weight:800; color:var(--texto); font-size:18px; border-top:2px solid var(--borde); padding-top:12px; margin-top:8px; }
  .propina-chip { padding:10px 16px; border:1.5px solid var(--borde); border-radius:12px; background:var(--card-subtle); color:var(--texto); font-weight:700; cursor:pointer; text-align:center; transition:all .15s; }
  .propina-chip.selected, .propina-chip:hover { background:var(--naranja-suave); border-color:var(--naranja); color:var(--naranja-osc); }
  .pago-metodo-card { padding:16px; border:1.5px solid var(--borde); border-radius:14px; background:var(--card-subtle); cursor:pointer; text-align:center; transition:all .15s; color:var(--texto); }
  .pago-metodo-card.selected, .pago-metodo-card:hover { border-color:var(--naranja); background:var(--naranja-suave); }
  .cambio-btn { padding:12px 18px; border:1.5px solid var(--borde); border-radius:12px; background:var(--card-subtle); color:var(--texto); font-weight:700; font-family:'IBM Plex Mono',monospace; cursor:pointer; }
  .cambio-btn:hover { border-color:var(--naranja); background:var(--naranja-suave); }
  .cambio-resultado { font-family:'IBM Plex Mono',monospace; font-size:22px; font-weight:800; color:var(--verde); }

  /* ORDER STEPPER DARK MODE */
  .order-stepper { display:flex; gap:4px; margin:16px 0; }
  .step-node { flex:1; text-align:center; }
  .step-circle { width:28px; height:28px; border-radius:50%; border:2px solid var(--borde); background:var(--card-subtle); display:inline-flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; color:var(--texto-muted); margin:0 auto 4px; }
  .step-node.active .step-circle { background:var(--naranja); border-color:var(--naranja); color:#fff; }
  .step-node.completed .step-circle { background:var(--verde); border-color:var(--verde); color:#fff; }
  .step-label { font-size:10px; color:var(--texto-muted); font-weight:700; }
  .step-node.active .step-label { color:var(--naranja); }
  .step-node.completed .step-label { color:var(--verde); }

  /* DOMI TRACKING DARK MODE */
  .domi-tracking-card { background:var(--blanco); border:1px solid var(--borde); border-radius:16px; padding:18px; margin-top:12px; }
  .domi-driver-avatar { width:40px; height:40px; border-radius:50%; background:linear-gradient(135deg,var(--naranja),var(--naranja-osc)); display:flex; align-items:center; justify-content:center; font-weight:800; color:#fff; font-family:'Sora',sans-serif; flex-shrink:0; }

  /* Nota: el bloque "MOBILE TOPBAR DARK MODE" que existia aqui duplicaba la
     media query de arriba (line ~449) con otro nombre de clase para abrir el
     menu (.show en vez de .open, que es la que realmente usa el JS) y sin el
     padding de safe-area-inset-top — por venir despues en el CSS, sus reglas
     (mismo selector, misma especificidad) ganaban la cascada y le quitaban el
     padding superior correcto al topbar/sidebar en movil, viendose "cortado".
     Se elimino en vez de agregar otra capa de parche encima. */

  /* ESTADO CHIP GENERIC */
  .estado-chip { display:inline-block; padding:3px 10px; border-radius:999px; font-size:11px; font-weight:800; text-transform:uppercase; }

  /* DARK MODE SPECIFIC - BUTTONS */
  .btn { display:inline-flex; align-items:center; gap:6px; padding:12px 22px; font-family:inherit; font-size:14px; font-weight:700; border-radius:12px; border:none; cursor:pointer; transition:all .15s; background:linear-gradient(135deg,var(--naranja),var(--naranja-osc)); color:#fff; box-shadow:var(--btn-shadow); }
  .btn:hover { transform:translateY(-1px); box-shadow:0 6px 24px rgba(255,107,53,0.5); }
  .btn:active { transform:translateY(1px); }
  .btn-outline { background:var(--blanco); border:1.5px solid var(--borde); color:var(--texto); box-shadow:none; }
  .btn-outline:hover { border-color:var(--naranja); color:var(--naranja); box-shadow:none; }

  /* FORM FIELDS DARK MODE */
  .field label { display:block; font-size:13px; font-weight:700; color:var(--texto-suave); margin-bottom:6px; text-transform:uppercase; letter-spacing:.04em; }
  .field { margin-bottom:16px; }
  .field input:not([type="checkbox"]):not([type="radio"]), .field select, .field textarea {
    width:100%; padding:13px 16px; min-height:48px; background:var(--card-subtle);
    border:1.5px solid var(--borde); border-radius:11px; color:var(--texto);
    font-size:15px; font-family:inherit;
  }
  .field input:focus, .field select:focus, .field textarea:focus {
    border-color:var(--naranja); outline:none; box-shadow:0 0 0 3px rgba(255,107,53,0.15);
  }
  .field input[type="checkbox"], .field input[type="radio"] {
    width:16px; height:16px; min-width:16px; min-height:0; padding:0; flex-shrink:0;
    accent-color:var(--naranja); cursor:pointer; vertical-align:middle;
  }

  /* Bloque "SWITCH/TOGGLE DARK MODE" que existía aquí duplicaba .switch-row/
     .switch-track de más arriba (línea ~467) SIN el "position:absolute" del
     original — un span position:relative sigue siendo display:inline, y en
     inline el width/height se ignora (position:absolute sí "blockifica" el
     elemento). Por venir después en la cascada, esta versión ganaba y dejaba
     el interruptor invisible en TODOS los switches del panel (Productos,
     Comandas, etc.), no solo en Horario de atención. Mismo patrón de bug ya
     documentado arriba para el topbar móvil — se elimina en vez de parchar. */

  /* CHANNEL DISTRIBUTION BAR */
  .channel-distribution-bar { display:flex; border-radius:8px; overflow:hidden; height:28px; }
  .cd-domi { background:var(--naranja); }
  .cd-mesa { background:var(--verde); }

  /* BAR CHART DARK MODE */
  .bar-chart { display:flex; align-items:flex-end; gap:8px; height:180px; padding:16px 0; }
  .bar-col { flex:1; display:flex; flex-direction:column; align-items:center; gap:4px; }
  .bar { background:linear-gradient(180deg,var(--naranja),var(--naranja-osc)); border-radius:6px 6px 0 0; min-height:4px; width:100%; }
  .bar-label { font-size:10px; color:var(--texto-muted); font-weight:700; }
  .bar-value { font-size:11px; font-weight:800; color:var(--texto); font-family:'IBM Plex Mono',monospace; }

  /* RANK ROW DARK MODE */
  .rank-row { display:flex; align-items:center; gap:12px; padding:10px 0; border-bottom:1px solid var(--borde); }
  .rank-num { width:28px; height:28px; border-radius:8px; background:var(--naranja-suave); color:var(--naranja); font-weight:800; font-size:13px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }

  /* LOGOUT DARK MODE FIX */
  .logout-link:hover { color:var(--rojo); border-color:rgba(239,68,68,0.3); background:rgba(239,68,68,0.08); }

  /* BULK BAR DARK MODE */
  .bulk-bar button { background:var(--card-subtle); }
  .bulk-bar button:hover { background:var(--rojo); color:#fff; }

  /* ================================================================
     TARJETAS TÁCTILES — Mesas, Kanban de domicilios, Domiciliarios
     (mismo lenguaje visual del mockup aprobado pos-operaciones-tactil.html,
     reusando las variables de color/tema ya definidas arriba en :root)
     ================================================================ */
  /* ================================================================
     PEDIDOS PARA LLEVAR — venta de mostrador (cobro anticipado)
     Composición: catálogo a la izquierda, comanda tipo ticket a la derecha.
     ================================================================ */
  .pos-ops-overlay .llv-wrap { display:flex; flex-direction:column; width:100%; height:100%; overflow:hidden; }
  .pos-ops-overlay .llv-tabs { background:var(--bg-surface); padding:8px 16px; border-bottom:1px solid var(--border); display:flex; gap:8px; flex-shrink:0; flex-wrap:wrap; }
  .pos-ops-overlay .llv-tabs .var-pill-btn { display:inline-flex; align-items:center; gap:7px; min-height:40px; }
  .pos-ops-overlay .llv-tabs .var-pill-btn.active { background:var(--fc-naranja); border-color:var(--fc-naranja); color:#fff; }
  .pos-ops-overlay .llv-tabs .var-pill-btn:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .llv-count { background:rgba(255,255,255,.22); border-radius:99px; padding:1px 8px; font-size:11px; font-family:'IBM Plex Mono',monospace; }
  .pos-ops-overlay .llv-tabs .var-pill-btn:not(.active) .llv-count { background:var(--bg-card); color:var(--text-main); }

  .pos-ops-overlay .llv-split { flex:1; min-height:0; display:grid; grid-template-columns:minmax(0,1fr) 380px; gap:16px; padding:16px; overflow:hidden; }
  .pos-ops-overlay .llv-catalogo { display:flex; flex-direction:column; min-height:0; gap:12px; }
  .pos-ops-overlay .llv-buscar { position:relative; flex-shrink:0; }
  .pos-ops-overlay .llv-buscar svg { position:absolute; left:13px; top:50%; transform:translateY(-50%); color:var(--text-dim); pointer-events:none; }
  .pos-ops-overlay .llv-buscar input { width:100%; height:44px; padding:0 14px 0 40px; background:var(--bg-surface); border:1.5px solid var(--border); border-radius:12px; color:var(--text-main); font:inherit; font-size:14px; }
  .pos-ops-overlay .llv-buscar input:focus { outline:none; border-color:var(--fc-naranja); box-shadow:0 0 0 3px rgba(255,107,53,.18); }
  .pos-ops-overlay .llv-chips { display:flex; gap:8px; overflow-x:auto; flex-shrink:0; padding-bottom:4px; scrollbar-width:thin; }
  .pos-ops-overlay .llv-chip { flex-shrink:0; min-height:40px; padding:0 16px; border-radius:99px; border:1.5px solid var(--border); background:var(--bg-surface); color:var(--text-muted); font:inherit; font-size:13px; font-weight:700; cursor:pointer; transition:background .15s, border-color .15s, color .15s, transform .12s; }
  .pos-ops-overlay .llv-chip:hover { border-color:var(--fc-naranja); color:var(--text-main); }
  .pos-ops-overlay .llv-chip:active { transform:scale(.96); }
  .pos-ops-overlay .llv-chip.on { background:var(--fc-naranja); border-color:var(--fc-naranja); color:#fff; }
  .pos-ops-overlay .llv-chip:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .llv-grid { flex:1; min-height:0; overflow-y:auto; display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:12px; align-content:start; padding:2px 4px 16px 2px; }
  .pos-ops-overlay .llv-prod { position:relative; display:flex; flex-direction:column; text-align:left; gap:8px; padding:10px; background:var(--bg-surface); border:1.5px solid var(--border); border-radius:16px; color:var(--text-main); font:inherit; cursor:pointer; transition:transform .18s cubic-bezier(.16,1,.3,1), border-color .15s, box-shadow .18s; }
  .pos-ops-overlay .llv-prod:hover { transform:translateY(-3px); border-color:var(--fc-naranja); box-shadow:0 10px 24px rgba(0,0,0,.25); }
  .pos-ops-overlay .llv-prod:active { transform:scale(.97); }
  .pos-ops-overlay .llv-prod:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .llv-prod-foto { aspect-ratio:4/3; border-radius:11px; background:var(--bg-card); display:grid; place-items:center; overflow:hidden; color:var(--text-dim); }
  .pos-ops-overlay .llv-prod-foto img { width:100%; height:100%; object-fit:cover; display:block; }
  .pos-ops-overlay .llv-prod-nombre { font-size:13.5px; font-weight:700; line-height:1.25; }
  .pos-ops-overlay .llv-prod-precio { font-family:'IBM Plex Mono',monospace; font-size:13px; font-weight:800; color:var(--fc-naranja); }
  .pos-ops-overlay .llv-prod-qty { position:absolute; top:14px; right:14px; min-width:28px; height:28px; padding:0 8px; border-radius:99px; background:var(--fc-naranja); color:#fff; font-family:'IBM Plex Mono',monospace; font-weight:800; font-size:13px; display:grid; place-items:center; box-shadow:0 3px 10px rgba(255,107,53,.5); animation:llvPop .28s cubic-bezier(.16,1,.3,1); }
  @keyframes llvPop { from { transform:scale(.4); } to { transform:scale(1); } }
  .pos-ops-overlay .llv-vacio { grid-column:1/-1; text-align:center; color:var(--text-dim); padding:30px 10px; font-size:13px; }

  /* Comanda: papel de ticket con bordes punteados */
  .pos-ops-overlay .llv-ticket { display:flex; flex-direction:column; min-height:0; background:var(--bg-surface); border:1.5px solid var(--border); border-radius:20px; box-shadow:0 8px 28px rgba(0,0,0,.28); overflow:hidden; }
  .pos-ops-overlay .llv-ticket-head { padding:14px 16px 12px; border-bottom:2px dashed var(--border); display:flex; flex-direction:column; gap:8px; flex-shrink:0; }
  .pos-ops-overlay .llv-ticket-kicker { font-family:'Sora',sans-serif; font-size:11px; font-weight:800; letter-spacing:.09em; text-transform:uppercase; color:var(--fc-naranja); }
  .pos-ops-overlay .llv-input { width:100%; background:var(--bg-card); border:1.5px solid var(--border); border-radius:10px; padding:9px 11px; color:var(--text-main); font:inherit; font-size:13px; }
  .pos-ops-overlay .llv-input:focus { outline:none; border-color:var(--fc-naranja); box-shadow:0 0 0 3px rgba(255,107,53,.16); }
  .pos-ops-overlay textarea.llv-input { resize:none; }
  .pos-ops-overlay .llv-ticket-lineas { flex:1; min-height:120px; overflow-y:auto; padding:6px 16px; }
  .pos-ops-overlay .llv-linea { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:5px 10px; padding:10px 0; border-bottom:1px dashed var(--border); animation:llvRise .28s cubic-bezier(.16,1,.3,1); }
  @keyframes llvRise { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
  .pos-ops-overlay .llv-linea-nombre { font-size:13.5px; font-weight:700; line-height:1.25; }
  .pos-ops-overlay .llv-linea-precio { font-family:'IBM Plex Mono',monospace; font-weight:800; font-size:13px; text-align:right; }
  .pos-ops-overlay .llv-stepper { display:inline-flex; align-items:center; border:1.5px solid var(--border); border-radius:10px; overflow:hidden; }
  .pos-ops-overlay .llv-stepper button { width:36px; height:36px; border:0; background:var(--bg-card); color:var(--text-main); font-size:17px; font-weight:800; cursor:pointer; transition:background .12s, color .12s; }
  .pos-ops-overlay .llv-stepper button:hover { background:var(--fc-naranja-suave, rgba(255,107,53,.14)); color:var(--fc-naranja); }
  .pos-ops-overlay .llv-stepper button:active { transform:scale(.9); }
  .pos-ops-overlay .llv-stepper button:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:-2px; }
  .pos-ops-overlay .llv-stepper span { min-width:32px; text-align:center; font-family:'IBM Plex Mono',monospace; font-weight:800; }
  .pos-ops-overlay .llv-linea-nota { grid-column:1/-1; }
  .pos-ops-overlay .llv-ticket-pie { padding:12px 16px 16px; border-top:2px dashed var(--border); display:flex; flex-direction:column; gap:10px; flex-shrink:0; }
  .pos-ops-overlay .llv-total { display:flex; justify-content:space-between; align-items:baseline; font-family:'Sora',sans-serif; font-weight:800; }
  .pos-ops-overlay .llv-total span { font-size:13px; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); }
  .pos-ops-overlay .llv-total b { font-family:'IBM Plex Mono',monospace; font-size:26px; color:var(--text-main); }

  /* Botón 3D con todos sus estados */
  .pos-ops-overlay .llv-btn-3d { display:flex; align-items:center; justify-content:center; gap:10px; min-height:52px; border:0; border-radius:14px; color:#fff; font:inherit; font-size:15px; font-weight:800; cursor:pointer; background:linear-gradient(180deg,#FF8A5B,var(--fc-naranja)); box-shadow:0 5px 0 #B8431A, 0 12px 22px rgba(255,107,53,.32); text-shadow:0 1px 0 rgba(0,0,0,.2); transition:transform .1s, box-shadow .1s, filter .15s; }
  .pos-ops-overlay .llv-btn-3d:hover:not(:disabled) { filter:brightness(1.07); }
  .pos-ops-overlay .llv-btn-3d:active:not(:disabled) { transform:translateY(4px); box-shadow:0 1px 0 #B8431A, 0 4px 10px rgba(255,107,53,.28); }
  .pos-ops-overlay .llv-btn-3d:focus-visible { outline:3px solid #fff; outline-offset:2px; }
  .pos-ops-overlay .llv-btn-3d:disabled { cursor:not-allowed; background:var(--bg-card); color:var(--text-dim); box-shadow:0 4px 0 var(--border); text-shadow:none; }
  .pos-ops-overlay .llv-btn-3d.cargando { cursor:progress; filter:saturate(.7); }
  .pos-ops-overlay .llv-btn-link { background:none; border:0; color:var(--text-muted); font:inherit; font-size:12.5px; font-weight:700; cursor:pointer; min-height:34px; text-decoration:underline; text-underline-offset:3px; }
  /* ---- Pedidos por WhatsApp: barra superior, datos del cliente y etiqueta de origen ---- */
  .pos-ops-overlay .wa-barra { display:flex; align-items:center; gap:12px; padding:10px 16px; background:var(--bg-surface); border-bottom:1px solid var(--border); flex-shrink:0; }
  .pos-ops-overlay .wa-barra-ico { width:38px; height:38px; border-radius:11px; display:grid; place-items:center; background:#25D366; color:#fff; flex-shrink:0; }
  .pos-ops-overlay .wa-barra-txt { display:flex; flex-direction:column; min-width:0; flex:1; }
  .pos-ops-overlay .wa-barra-txt strong { font-family:'Sora',sans-serif; font-size:14px; color:var(--text-main); }
  .pos-ops-overlay .wa-barra-txt span { font-size:12px; color:var(--text-muted); }
  .pos-ops-overlay .wa-btn-abrir { min-height:38px; padding:0 16px; border-radius:11px; border:1.5px solid #25D366; background:transparent; color:#1a9e4b; font:inherit; font-size:13px; font-weight:800; cursor:pointer; white-space:nowrap; transition:background .15s, color .15s, transform .1s; }
  .pos-ops-overlay .wa-btn-abrir:hover { background:#25D366; color:#fff; }
  .pos-ops-overlay .wa-btn-abrir:active { transform:scale(.97); }
  .pos-ops-overlay .wa-btn-abrir:focus-visible { outline:2px solid #25D366; outline-offset:2px; }
  .pos-ops-overlay .wa-head { overflow-y:auto; max-height:52%; }
  .pos-ops-overlay .wa-estado { font-size:11.5px; color:var(--text-muted); min-height:15px; }
  .pos-ops-overlay .wa-estado.ok { color:#1a9e4b; font-weight:700; }
  .pos-ops-overlay .wa-estado.alerta { color:var(--fc-rojo); font-weight:700; }
  .pos-ops-overlay .wa-dirs { display:flex; flex-wrap:wrap; gap:6px; }
  .pos-ops-overlay .wa-dirs:empty { display:none; }
  .pos-ops-overlay .wa-dir-chip { min-height:28px; max-width:100%; padding:0 10px; border-radius:99px; border:1px solid var(--border); background:var(--bg-card); color:var(--text-main); font:inherit; font-size:11.5px; font-weight:700; cursor:pointer; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; transition:border-color .15s, background .15s; }
  .pos-ops-overlay .wa-dir-chip:hover { border-color:#25D366; }
  .pos-ops-overlay .wa-dir-chip:focus-visible { outline:2px solid #25D366; outline-offset:2px; }
  .pos-ops-overlay .wa-desglose { display:flex; justify-content:space-between; align-items:baseline; font-size:12.5px; color:var(--text-muted); font-weight:700; }
  .pos-ops-overlay .wa-desglose b { font-family:'IBM Plex Mono',monospace; color:var(--text-main); }
  .pos-ops-overlay .llv-ticket { position:relative; }
  .pos-ops-overlay .wa-exito { position:absolute; inset:0; z-index:5; background:var(--bg-surface); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; padding:24px; text-align:center; animation:llvRise .28s cubic-bezier(.16,1,.3,1); }
  .pos-ops-overlay .wa-exito strong { font-family:'Sora',sans-serif; font-size:18px; color:var(--text-main); }
  .pos-ops-overlay .wa-exito span { font-size:13px; color:var(--text-muted); }
  .pos-ops-overlay .wa-exito-check { width:58px; height:58px; border-radius:50%; display:grid; place-items:center; background:rgba(37,211,102,.16); color:#1a9e4b; }
  .pos-ops-overlay .wa-exito .llv-btn-3d { width:100%; }
  .pos-ops-overlay .wa-btn-verde { background:linear-gradient(180deg,#3BE07F,#25D366); box-shadow:0 5px 0 #168A44, 0 12px 22px rgba(37,211,102,.32); }
  .pos-ops-overlay .wa-btn-verde:active:not(:disabled) { box-shadow:0 1px 0 #168A44, 0 4px 10px rgba(37,211,102,.28); }
  /* ---- Pedidos por WhatsApp: WhatsApp Web embebido + cliente detectado ---- */
  .pos-ops-overlay .wa-chat { flex:1; min-height:0; display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:14px; padding:12px 14px; overflow:hidden; }
  /* Módulo WhatsApp: SIEMPRE dos zonas — cuadro grande a la izquierda + columna de comanda a la derecha.
     Vista "chat": a la izquierda WhatsApp (la app GastroBar lo coloca sobre #waMarco). Vista "pedido": a la izquierda el catálogo. */
  .pos-ops-overlay #waPanelPedido { grid-template-columns:minmax(0,1fr) 340px; }
  .pos-ops-overlay #waPanelPedido.wa-vista-chat .llv-catalogo,
  .pos-ops-overlay #waPanelPedido.wa-vista-chat .llv-ticket-lineas,
  .pos-ops-overlay #waPanelPedido.wa-vista-chat .llv-ticket-pie { display:none; }
  .pos-ops-overlay #waPanelPedido.wa-vista-pedido .wa-marco,
  .pos-ops-overlay #waPanelPedido.wa-vista-pedido .wa-avisos,
  .pos-ops-overlay #waPanelPedido.wa-vista-pedido .wa-accion-chat { display:none; }
  /* Avisos rápidos al cliente (en preparación / en camino / entregado): se encienden según el estado real del pedido */
  .pos-ops-overlay .wa-avisos { padding:10px 16px; display:flex; flex-direction:column; gap:6px; }
  .pos-ops-overlay .wa-avisos-tit { display:flex; justify-content:space-between; align-items:baseline; font-family:'Sora',sans-serif; font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--text-muted); }
  .pos-ops-overlay .wa-avisos-tit b { font-family:'IBM Plex Mono',monospace; letter-spacing:0; color:var(--text-main); }
  .pos-ops-overlay .wa-avisos-btns { display:grid; grid-template-columns:repeat(2,1fr); gap:6px; }
  .pos-ops-overlay .wa-aviso-btn { display:flex; flex-direction:row; align-items:center; justify-content:center; gap:6px; min-height:32px; padding:3px 8px; border-radius:10px; border:1.5px solid var(--border); background:var(--bg-card); color:var(--text-dim); font:inherit; font-size:11.5px; font-weight:800; cursor:pointer; transition:border-color .15s, background .15s, color .15s, transform .1s; }
  .pos-ops-overlay .wa-aviso-btn:disabled { opacity:.45; cursor:not-allowed; }
  .pos-ops-overlay .wa-aviso-btn:not(:disabled) { border-color:rgba(37,211,102,.55); background:rgba(37,211,102,.1); color:var(--text-main); }
  .pos-ops-overlay .wa-aviso-btn:not(:disabled) svg { color:#1a9e4b; }
  .pos-ops-overlay .wa-aviso-btn:not(:disabled):hover { background:rgba(37,211,102,.2); }
  .pos-ops-overlay .wa-aviso-btn:not(:disabled):active { transform:scale(.96); }
  .pos-ops-overlay .wa-aviso-btn:focus-visible { outline:2px solid #25D366; outline-offset:2px; }
  .pos-ops-overlay .wa-aviso-cancel:not(:disabled) { border-color:rgba(239,68,68,.6); background:rgba(239,68,68,.1); }
  .pos-ops-overlay .wa-aviso-cancel:not(:disabled) svg { color:var(--fc-rojo); }
  .pos-ops-overlay .wa-aviso-cancel:not(:disabled):hover { background:rgba(239,68,68,.2); }
  .pos-ops-overlay .wa-aviso-btn.enviado { opacity:1; border-style:dashed; color:var(--text-muted); }
  .pos-ops-overlay .wa-aviso-btn.enviado:disabled { opacity:.7; }
  .pos-ops-overlay .wa-aviso-btn.actual { border-color:#25D366; box-shadow:0 0 0 2px rgba(37,211,102,.25); }
  .pos-ops-overlay .wa-pedcurso { border:1.5px solid var(--border); border-radius:12px; background:var(--bg-card); padding:9px 11px; display:flex; flex-direction:column; gap:6px; }
  .pos-ops-overlay .wa-ped-cab { display:flex; align-items:center; gap:8px; }
  .pos-ops-overlay .wa-ped-cab b { font-family:'IBM Plex Mono',monospace; font-size:13px; }
  .pos-ops-overlay .wa-ped-cab strong { margin-left:auto; font-family:'IBM Plex Mono',monospace; font-size:14px; }
  .pos-ops-overlay .wa-ped-estado { font-size:10.5px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; padding:3px 8px; border-radius:99px; background:rgba(255,107,53,.16); color:var(--fc-naranja); }
  .pos-ops-overlay .wa-ped-estado.camino { background:rgba(59,130,246,.16); color:var(--fc-azul); }
  .pos-ops-overlay .wa-ped-estado.entregado { background:rgba(16,185,129,.16); color:var(--fc-verde); }
  .pos-ops-overlay .wa-ped-estado.cancelado { background:rgba(239,68,68,.16); color:var(--fc-rojo); }
  .pos-ops-overlay .wa-ped-items { list-style:none; margin:0; padding:0; max-height:112px; overflow-y:auto; display:flex; flex-direction:column; gap:2px; font-size:12px; line-height:1.3; }
  .pos-ops-overlay .wa-ped-items li { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .pos-ops-overlay .wa-ped-items b { font-family:'IBM Plex Mono',monospace; color:var(--fc-naranja); }
  .pos-ops-overlay .wa-ped-items small { display:block; color:var(--text-muted); font-size:11px; }
  .pos-ops-overlay .wa-ped-det summary { cursor:pointer; list-style:none; display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:11.5px; font-weight:800; color:var(--text-muted); padding:2px 0; }
  .pos-ops-overlay .wa-ped-det summary::-webkit-details-marker { display:none; }
  .pos-ops-overlay .wa-ped-det summary::after { content:''; width:7px; height:7px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(45deg); transition:transform .15s; margin-right:3px; }
  .pos-ops-overlay .wa-ped-det[open] summary::after { transform:rotate(-135deg); }
  .pos-ops-overlay .wa-ped-det summary:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; border-radius:6px; }
  .pos-ops-overlay .wa-ped-editar { min-height:34px; border-radius:9px; border:1.5px solid var(--fc-naranja); background:rgba(255,107,53,.1); color:var(--fc-naranja); font:inherit; font-size:12px; font-weight:800; cursor:pointer; transition:background .15s, transform .1s; }
  .pos-ops-overlay .wa-ped-editar:hover { background:rgba(255,107,53,.2); }
  .pos-ops-overlay .wa-ped-editar:active { transform:scale(.98); }
  .pos-ops-overlay .wa-ped-editar:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .wa-aviso-envio.suave { background:rgba(245,158,11,.16) !important; color:#fcd34d !important; border-color:rgba(245,158,11,.5) !important; }
  .pos-ops-overlay .wa-aviso-envio { margin:0 0 8px; padding:9px 12px; border-radius:9px; background:rgba(239,68,68,.16); color:#ffb4b4; border:1px solid rgba(239,68,68,.45); font-size:13px; font-weight:800; line-height:1.35; }
  .pos-ops-overlay .wa-edit-banner { padding:6px 10px; border-radius:9px; background:rgba(245,158,11,.14); color:var(--fc-amarillo); font-size:12px; font-weight:800; }
  .pos-ops-overlay .wa-previo { padding:4px 0 6px; border-bottom:1px dashed var(--border); margin-bottom:4px; }
  .pos-ops-overlay .wa-previo-tit { font-size:10.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--text-muted); padding:2px 0; }
  .pos-ops-overlay .wa-previo-nuevo { color:var(--fc-naranja); padding-top:8px; }
  .pos-ops-overlay .wa-previo ul { list-style:none; margin:0; padding:0; font-size:12px; color:var(--text-muted); display:flex; flex-direction:column; gap:1px; opacity:.85; }
  .pos-ops-overlay .wa-previo li b { font-family:'IBM Plex Mono',monospace; color:var(--text-dim); }
  /* Acciones del pedido en Domicilios (UI/UX): jerarquía clara — principal sólido, secundaria con borde, destructiva atenuada.
     Objetivos táctiles de 44 px, 8 px entre botones, estados hover / activo / foco visibles. */
  .pos-ops-overlay .domi-acciones { display:flex; flex-direction:column; gap:8px; margin-top:8px; }
  .pos-ops-overlay .domi-acciones-par { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
  .pos-ops-overlay .domi-act { display:flex; align-items:center; justify-content:center; gap:7px; min-height:44px; padding:6px 10px; border-radius:12px; border:1.5px solid transparent; font:inherit; font-size:12.5px; font-weight:800; line-height:1.15; text-align:center; cursor:pointer; transition:transform .1s, background .15s, border-color .15s, color .15s, box-shadow .15s, filter .15s; }
  .pos-ops-overlay .domi-act svg { width:16px; height:16px; flex-shrink:0; }
  .pos-ops-overlay .domi-act:active { transform:translateY(1px) scale(.985); }
  .pos-ops-overlay .domi-act:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .domi-act-principal { background:var(--fc-naranja-dark, #E55A2B); color:#fff; box-shadow:0 2px 0 rgba(0,0,0,.25), 0 8px 16px var(--fc-naranja-glow, rgba(255,107,53,.28)); }
  .pos-ops-overlay .domi-act-principal:hover { filter:brightness(1.07); }
  .pos-ops-overlay .domi-act-secundario { background:var(--fc-naranja-subtle, rgba(255,107,53,.12)); border-color:var(--fc-naranja); color:var(--fc-naranja); }
  .pos-ops-overlay .domi-act-secundario:hover { background:rgba(255,107,53,.22); }
  .pos-ops-overlay .domi-act-peligro { min-height:40px; background:transparent; border-color:rgba(239,68,68,.35); color:var(--fc-rojo); font-size:12px; }
  .pos-ops-overlay .domi-act-peligro:hover { background:rgba(239,68,68,.12); border-color:var(--fc-rojo); }
  @media (prefers-reduced-motion: reduce) { .pos-ops-overlay .domi-act { transition:none; } }
  /* Historial del módulo de WhatsApp: ocupa todo el ancho (la comanda se oculta en esa vista) */
  .pos-ops-overlay .wa-historial { display:none; }
  .pos-ops-overlay #waPanelPedido.wa-vista-historial { grid-template-columns:minmax(0,1fr); }
  .pos-ops-overlay #waPanelPedido.wa-vista-historial .wa-historial { display:flex; flex-direction:column; gap:12px; min-height:0; min-width:0; }
  .pos-ops-overlay #waPanelPedido.wa-vista-historial .wa-marco,
  .pos-ops-overlay #waPanelPedido.wa-vista-historial .llv-catalogo,
  .pos-ops-overlay #waPanelPedido.wa-vista-historial .llv-ticket { display:none; }
  .pos-ops-overlay .wa-kick-fila { display:flex; align-items:center; justify-content:space-between; gap:8px; }
  .pos-ops-overlay .wa-btn-hist { display:inline-flex; align-items:center; gap:6px; min-height:34px; padding:0 12px; border-radius:10px; border:1.5px solid var(--border); background:var(--bg-card); color:var(--text-main); font:inherit; font-size:12px; font-weight:800; cursor:pointer; transition:border-color .15s, color .15s, transform .1s; }
  .pos-ops-overlay .wa-btn-hist:hover { border-color:#25D366; color:#1a9e4b; }
  .pos-ops-overlay .wa-btn-hist:active { transform:scale(.97); }
  .pos-ops-overlay .wa-btn-hist:focus-visible { outline:2px solid #25D366; outline-offset:2px; }
  .pos-ops-overlay .wa-hist-cab { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
  .pos-ops-overlay .wa-hist-tit h3 { margin:0; font-family:'Sora',sans-serif; font-size:16px; font-weight:800; color:var(--text-main); }
  .pos-ops-overlay .wa-hist-tit span { font-size:12.5px; color:var(--text-muted); font-weight:700; }
  .pos-ops-overlay .wa-hist-volver { display:inline-flex; align-items:center; gap:8px; min-height:42px; padding:0 16px; border-radius:12px; border:1.5px solid var(--border); background:var(--bg-card); color:var(--text-main); font:inherit; font-size:13px; font-weight:800; cursor:pointer; transition:border-color .15s, transform .1s; }
  .pos-ops-overlay .wa-hist-volver:hover { border-color:var(--fc-naranja); }
  .pos-ops-overlay .wa-hist-volver:active { transform:scale(.97); }
  .pos-ops-overlay .wa-hist-volver:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .wa-hist-filtros { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
  .pos-ops-overlay .wa-hist-chips { display:flex; gap:6px; }
  .pos-ops-overlay .wa-hist-buscar { flex:1 1 260px; max-width:520px; }
  .pos-ops-overlay .wa-hist-lista { flex:1; min-height:0; overflow-y:auto; display:flex; flex-direction:column; gap:8px; padding-right:4px; }
  .pos-ops-overlay .wa-hist-fila { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) auto; align-items:center; gap:14px; width:100%; text-align:left; padding:12px 16px; border-radius:14px; border:1.5px solid var(--border); background:var(--bg-surface); color:var(--text-main); font:inherit; cursor:pointer; transition:border-color .15s, transform .12s, background .15s; }
  .pos-ops-overlay .wa-hist-fila:hover { border-color:#25D366; background:var(--bg-card); }
  .pos-ops-overlay .wa-hist-fila:active { transform:scale(.995); }
  .pos-ops-overlay .wa-hist-fila:focus-visible { outline:2px solid #25D366; outline-offset:2px; }
  .pos-ops-overlay .wa-hist-l1 { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  .pos-ops-overlay .wa-hist-l1 b { font-family:'IBM Plex Mono',monospace; font-size:13px; }
  .pos-ops-overlay .wa-hist-cli { display:flex; flex-direction:column; gap:2px; min-width:0; }
  .pos-ops-overlay .wa-hist-cli strong { font-size:13.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .pos-ops-overlay .wa-hist-cli small, .pos-ops-overlay .wa-hist-mid small { font-size:12px; color:var(--text-muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .pos-ops-overlay .wa-hist-mid { display:flex; flex-direction:column; gap:2px; min-width:0; font-size:12.5px; font-weight:700; }
  .pos-ops-overlay .wa-hist-der { text-align:right; display:flex; flex-direction:column; gap:2px; }
  .pos-ops-overlay .wa-hist-der b { font-family:'IBM Plex Mono',monospace; font-size:15px; color:var(--fc-verde); }
  .pos-ops-overlay .wa-hist-der small { font-size:11.5px; color:var(--text-muted); }
  .pos-ops-overlay .wa-hist-vacio { text-align:center; padding:48px 16px; color:var(--text-muted); font-size:13.5px; font-weight:700; }
  @media (max-width:900px) { .pos-ops-overlay .wa-hist-fila { grid-template-columns:1fr auto; } .pos-ops-overlay .wa-hist-mid { display:none; } }
  .pos-ops-overlay .wa-seguir { align-self:center; font-size:13px; }
  .pos-ops-overlay .wa-ped-ver { min-height:34px; border-radius:9px; border:1.5px solid var(--border); background:transparent; color:var(--text-main); font:inherit; font-size:12px; font-weight:800; cursor:pointer; transition:border-color .15s, transform .1s; }
  .pos-ops-overlay .wa-ped-ver:hover { border-color:var(--fc-naranja); }
  .pos-ops-overlay .wa-ped-ver:active { transform:scale(.98); }
  .pos-ops-overlay .wa-ped-ver:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .wa-accion-chat .wa-btn-nuevoped { min-height:38px; font-size:13px; gap:7px; border-radius:11px; }
  .pos-ops-overlay .wa-avisos small.err { color:var(--fc-rojo); font-weight:800; }
  .pos-ops-overlay .wa-avisos small.warn { color:var(--fc-amarillo); font-weight:800; }
  .pos-ops-overlay .wa-chip-chat:empty { display:none; }
  .pos-ops-overlay .wa-chip-chat { font-family:'Inter',sans-serif !important; font-size:10.5px !important; font-weight:800; letter-spacing:.02em !important; padding:3px 9px; border-radius:99px; text-transform:none; }
  .pos-ops-overlay .wa-chip-chat.verificando { color:var(--fc-amarillo) !important; background:rgba(245,158,11,.14); animation:waPulso 1.2s ease-in-out infinite; }
  .pos-ops-overlay .wa-chip-chat.verificado { color:#1a9e4b !important; background:rgba(37,211,102,.14); }
  @keyframes waPulso { 50% { opacity:.55; } }
  @media (prefers-reduced-motion: reduce) { .pos-ops-overlay .wa-chip-chat.verificando { animation:none; } }
  .pos-ops-overlay .wa-avisos small { font-size:10.5px; line-height:1.25; color:var(--text-muted); }
  .pos-ops-overlay .wa-accion-chat { padding:8px 16px 10px; display:flex; flex-direction:column; gap:6px; margin-top:auto; border-top:2px dashed var(--border); }
  .pos-ops-overlay .wa-accion-chat small { font-size:12px; line-height:1.4; color:var(--text-muted); }
  .pos-ops-overlay .wa-accion-chat .llv-btn-3d:disabled { opacity:.5; cursor:not-allowed; }
  .pos-ops-overlay .wa-accion-chat .wa-carta-acc2 { display:flex; gap:6px; }
  .pos-ops-overlay .wa-accion-chat .wa-carta-acc2 .wa-carta-wa { grid-column:auto; }
  .pos-ops-overlay .wa-qr-btn { background:var(--bg-card); }
  .pos-ops-overlay .wa-qr-item { gap:8px; justify-content:flex-start; }
  .pos-ops-overlay .wa-qr-item img { border-radius:6px; background:#fff; object-fit:cover; flex-shrink:0; }
  .pos-ops-overlay .wa-qr-item span { margin-left:auto; color:var(--text-muted); font-size:11.5px; }
  .pos-ops-overlay .wa-qr-btn[aria-expanded=true] { border-color:#25D366; }
  .pos-ops-overlay .wa-accion-chat .wa-carta-btn { min-height:34px; font-size:11.5px; flex:1 1 auto; }
  /* Pie de la comanda en la vista "pedido": una sola franja compacta para dejar la altura a las líneas y al catálogo */
  .pos-ops-overlay #waPanelPedido .wa-pie { padding:8px 12px 10px; gap:7px; }
  .pos-ops-overlay #waPanelPedido .wa-notas { height:34px; min-height:34px; padding:0 10px; font-size:12.5px; resize:none; }
  .pos-ops-overlay .wa-totales { display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
  .pos-ops-overlay .wa-tot-dom { font-size:11.5px; font-weight:700; color:var(--text-muted); }
  .pos-ops-overlay .wa-tot-dom b { font-family:'IBM Plex Mono',monospace; color:var(--text-main); margin-left:4px; }
  .pos-ops-overlay .wa-tot-total { font-family:'Sora',sans-serif; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); }
  .pos-ops-overlay .wa-tot-total b { font-family:'IBM Plex Mono',monospace; font-size:20px; letter-spacing:0; color:var(--text-main); margin-left:6px; }
  .pos-ops-overlay .wa-pie-acc { display:flex; gap:6px; align-items:stretch; }
  .pos-ops-overlay .wa-ico-btn { width:42px; min-height:42px; flex-shrink:0; display:grid; place-items:center; border-radius:11px; border:1.5px solid var(--border); background:var(--bg-card); color:var(--text-main); cursor:pointer; transition:border-color .15s, color .15s, transform .1s; }
  .pos-ops-overlay .wa-ico-btn:hover:not(:disabled) { border-color:var(--fc-naranja); color:var(--fc-naranja); }
  .pos-ops-overlay .wa-ico-btn:active:not(:disabled) { transform:scale(.94); }
  /* Modal "Revisar antes de imprimir" (domicilios en ruta) */
  .pos-ops-overlay .pi-cuerpo { display:flex; flex-direction:column; gap:10px; }
  .pos-ops-overlay .pi-bloque { background:var(--bg-card); border:1.5px solid var(--border); border-radius:14px; padding:11px 13px; }
  .pos-ops-overlay .pi-tit { display:block; font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.07em; color:var(--text-muted); margin-bottom:6px; }
  .pos-ops-overlay .pi-fila { display:flex; justify-content:space-between; gap:12px; font-size:13px; padding:2px 0; }
  .pos-ops-overlay .pi-fila span { color:var(--text-muted); }
  .pos-ops-overlay .pi-fila b { text-align:right; font-weight:800; }
  .pos-ops-overlay .pi-dir { font-size:14.5px; font-weight:800; line-height:1.3; }
  .pos-ops-overlay .pi-ref { font-size:12.5px; color:var(--text-dim); margin-top:2px; }
  .pos-ops-overlay .pi-coord { font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--text-dim); margin-top:6px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
  .pos-ops-overlay .pi-coord a { color:var(--fc-naranja); font-weight:800; text-decoration:none; font-family:inherit; }
  .pos-ops-overlay .pi-coord a:hover { text-decoration:underline; }
  .pos-ops-overlay .pi-metodos { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
  .pos-ops-overlay .pi-metodo { min-height:40px; border-radius:10px; border:1.5px solid var(--border); background:var(--bg-surface); color:var(--text-dim); font:inherit; font-size:12px; font-weight:800; cursor:pointer; transition:border-color .15s, background .15s, color .15s; }
  .pos-ops-overlay .pi-metodo:hover { border-color:var(--fc-naranja); }
  .pos-ops-overlay .pi-metodo[aria-checked=true] { border-color:var(--fc-naranja); background:rgba(255,106,0,.13); color:var(--text-main); box-shadow:inset 0 0 0 1px var(--fc-naranja); }
  .pos-ops-overlay .pi-metodo:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .pi-nota { font-size:11.5px; color:var(--text-muted); margin-top:6px; line-height:1.35; }
  .pos-ops-overlay .pi-obs { font-size:13px; line-height:1.4; white-space:pre-wrap; word-break:break-word; }
  .pos-ops-overlay .pi-obs.vacio { color:var(--text-muted); }
  .pos-ops-overlay .pi-total { display:flex; justify-content:space-between; align-items:baseline; border-top:1.5px dashed var(--border); margin-top:6px; padding-top:7px; font-weight:800; }
  .pos-ops-overlay .pi-total b { font-family:'IBM Plex Mono',monospace; font-size:17px; }
  .pos-ops-overlay .pi-pie { display:flex; gap:10px; padding:12px 18px 16px; border-top:1px solid var(--border); }
  .pos-ops-overlay .pi-btn-sec { flex:1; height:48px; justify-content:center; }
  .pos-ops-overlay .pi-btn-imp { flex:2; min-height:48px; font-size:14px; }
  .pos-ops-overlay .pi-btn-wa { flex:2; min-height:48px; font-size:14px; justify-content:center; background:var(--bg-surface); color:#128C7E; border:1.5px solid #25D366; border-radius:12px; font-weight:800; cursor:pointer; display:inline-flex; align-items:center; gap:8px; }
  .pos-ops-overlay .pi-btn-wa:hover:not(:disabled) { background:rgba(37,211,102,.12); }
  .pos-ops-overlay .pi-btn-wa:disabled { opacity:.55; cursor:not-allowed; }
  .pos-ops-overlay .pi-pie { flex-wrap:wrap; }
  .pos-ops-overlay .wa-ico-volver { border-color:var(--fc-naranja); color:var(--fc-naranja); background:rgba(255,106,0,.12); }
  .pos-ops-overlay .wa-ico-volver:hover:not(:disabled) { background:var(--fc-naranja); color:#fff; }
  .pos-ops-overlay .wa-ico-btn:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .wa-ico-btn:disabled { opacity:.4; cursor:not-allowed; }
  .pos-ops-overlay .wa-ico-peligro:hover:not(:disabled) { border-color:var(--fc-rojo); color:var(--fc-rojo); }
  .pos-ops-overlay #waPanelPedido .wa-enviar { flex:1; min-height:42px; font-size:13px; border-radius:11px; box-shadow:0 3px 0 #B8431A, 0 8px 14px rgba(255,107,53,.25); }
  /* Líneas de la comanda: una sola fila delgada (cant × nombre ... precio ×) para que quepan más productos */
  .pos-ops-overlay #waPanelPedido .wa-linea { grid-template-columns:auto minmax(0,1fr) auto auto; align-items:center; gap:0 8px; padding:4px 0; }
  .pos-ops-overlay #waPanelPedido .wa-linea .llv-linea-editar { grid-column:auto; justify-content:center; min-height:30px; }
  .pos-ops-overlay #waPanelPedido .wa-linea .llv-linea-precio { grid-column:auto; grid-row:auto; font-size:12.5px; white-space:nowrap; }
  .pos-ops-overlay #waPanelPedido .wa-linea .llv-linea-nombre { font-size:13px; line-height:1.2; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .pos-ops-overlay #waPanelPedido .wa-linea .llv-linea-obs { font-size:11px; line-height:1.2; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .pos-ops-overlay .wa-lin-cant { min-width:26px; font-family:'IBM Plex Mono',monospace; font-size:12.5px; font-weight:800; color:var(--fc-naranja); }
  .pos-ops-overlay .wa-lin-quitar { width:26px; height:26px; display:grid; place-items:center; border:0; border-radius:8px; background:transparent; color:var(--text-dim); cursor:pointer; transition:background .15s, color .15s; }
  .pos-ops-overlay .wa-lin-quitar:hover { background:rgba(239,68,68,.14); color:var(--fc-rojo); }
  .pos-ops-overlay .wa-lin-quitar:focus-visible { outline:2px solid var(--fc-rojo); outline-offset:1px; }
  /* Catálogo más amplio en la vista "pedido": encabezado en una fila y tarjetas con más espacio de foto */
  .pos-ops-overlay #waPanelPedido.wa-vista-pedido { padding:8px 12px; gap:12px; }
  .pos-ops-overlay #waPanelPedido .llv-grid { grid-template-columns:repeat(auto-fill,minmax(168px,1fr)); gap:12px; }
  .pos-ops-overlay #waPanelPedido .llv-prod-foto { aspect-ratio:5/4; }
  .pos-ops-overlay #waPanelPedido .llv-ticket-head { max-height:none; }
  .pos-ops-overlay .wa-marco { position:relative; min-height:0; border:1.5px solid var(--border); border-radius:16px; overflow:hidden; background:var(--bg-surface); }
  .pos-ops-overlay .wa-host { position:absolute; inset:0; }
  .pos-ops-overlay .wa-host webview { width:100%; height:100%; display:flex; border:0; }
  .pos-ops-overlay .wa-marco iframe { width:100%; height:100%; border:0; display:block; background:#fff; }
  .pos-ops-overlay .wa-sin-ext { position:absolute; inset:0; z-index:2; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; padding:28px; text-align:center; background:var(--bg-surface); }
  .pos-ops-overlay .wa-sin-ext strong { font-family:'Sora',sans-serif; font-size:17px; color:var(--text-main); }
  .pos-ops-overlay .wa-sin-ext span { font-size:13px; line-height:1.5; color:var(--text-muted); max-width:460px; }
  .pos-ops-overlay .wa-pasos { text-align:left; margin:0; padding-left:20px; font-size:13px; line-height:1.6; color:var(--text-main); max-width:460px; }
  .pos-ops-overlay .wa-sin-ext code { font-family:'IBM Plex Mono',monospace; font-size:12px; background:var(--bg-card); padding:1px 6px; border-radius:6px; }
  .pos-ops-overlay .wa-dock { display:flex; flex-direction:column; gap:8px; min-height:0; overflow-y:auto; padding:14px; background:var(--bg-surface); border:1.5px solid var(--border); border-radius:16px; }
  .pos-ops-overlay .wa-lbl { font-size:11px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--text-muted); margin-top:4px; }
  .pos-ops-overlay .wa-dock .llv-btn-3d { margin-top:10px; }
  .pos-ops-overlay .wa-carta { margin-top:12px; padding:12px; border-radius:12px; border:1.5px solid var(--border); background:var(--bg-card); display:flex; flex-direction:column; gap:8px; }
  .pos-ops-overlay .wa-carta-txt { margin:0; font-size:12px; line-height:1.4; color:var(--text-muted); }
  .pos-ops-overlay .wa-carta-acc { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
  .pos-ops-overlay .wa-carta-btn { display:flex; align-items:center; justify-content:center; min-height:36px; padding:0 8px; border-radius:9px; border:1.5px solid var(--border); background:var(--bg-surface); color:var(--text-main); font:inherit; font-size:12px; font-weight:800; text-decoration:none; cursor:pointer; transition:border-color .15s, transform .1s; }
  .pos-ops-overlay .wa-carta-btn:hover { border-color:var(--fc-naranja); }
  .pos-ops-overlay .wa-carta-btn:active { transform:scale(.97); }
  .pos-ops-overlay .wa-carta-btn:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .wa-carta-wa { grid-column:1/-1; background:#25D366; border-color:#25D366; color:#fff; }
  .pos-ops-overlay .wa-carta-wa:hover { filter:brightness(1.06); border-color:#25D366; }
  .pos-ops-overlay .wa-cliente { display:flex; flex-direction:column; gap:6px; }
  .pos-ops-overlay .wa-sug { display:flex; flex-direction:column; gap:4px; }
  .pos-ops-overlay .wa-sug:empty { display:none; }
  .pos-ops-overlay .wa-sug-item { display:flex; justify-content:space-between; align-items:center; gap:10px; min-height:36px; padding:0 11px; border-radius:9px; border:1.5px solid var(--border); background:var(--bg-card); color:var(--text-main); font:inherit; font-size:12.5px; cursor:pointer; text-align:left; transition:border-color .15s; }
  .pos-ops-overlay .wa-sug-item:hover { border-color:#25D366; }
  .pos-ops-overlay .wa-sug-item:focus-visible { outline:2px solid #25D366; outline-offset:2px; }
  .pos-ops-overlay .wa-sug-item span { font-family:'IBM Plex Mono',monospace; font-size:11.5px; color:var(--text-muted); }
  .pos-ops-overlay #waPanelPedido .llv-ticket-head { max-height:58%; overflow-y:auto; }
  .pos-ops-overlay .wa-carta-acc2 { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
  .pos-ops-overlay .wa-carta-acc2 .wa-carta-wa { grid-column:auto; }
  .pos-ops-overlay .wa-campos { display:flex; flex-direction:column; gap:6px; }
  .pos-ops-overlay .wa-cliente.compacto .wa-campos { display:none; }
  .pos-ops-overlay .wa-cliente:not(.compacto) .wa-resumen { display:none; }
  .pos-ops-overlay .wa-resumen { display:flex; align-items:center; gap:8px; }
  .pos-ops-overlay .wa-resumen .wa-resumen-txt { flex:1; min-width:0; display:flex; flex-direction:column; gap:1px; }
  .pos-ops-overlay .wa-resumen .wa-resumen-txt b { font-size:13px; font-weight:800; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .pos-ops-overlay .wa-resumen .wa-resumen-txt small { font-size:11.5px; font-weight:600; color:var(--text-muted); line-height:1.3; word-break:break-word; }
  .pos-ops-overlay .wa-resumen .wa-resumen-edit { font-size:11px; font-weight:800; color:var(--text-muted); text-decoration:underline; text-underline-offset:3px; }
  .pos-ops-overlay .wa-resumen svg { flex-shrink:0; color:#1a9e4b; }
  .pos-ops-overlay .wa-btn-listo { min-height:38px; border-radius:10px; border:1.5px solid #25D366; background:rgba(37,211,102,.12); color:#168A44; font:inherit; font-size:13px; font-weight:800; cursor:pointer; transition:background .15s, transform .1s; }
  .pos-ops-overlay .wa-btn-listo:hover { background:rgba(37,211,102,.24); }
  .pos-ops-overlay .wa-btn-listo:active { transform:scale(.98); }
  .pos-ops-overlay .wa-btn-listo:focus-visible { outline:2px solid #25D366; outline-offset:2px; }
  .pos-ops-overlay .wa-resumen { width:100%; text-align:left; min-height:38px; padding:8px 11px; border-radius:10px; border:1.5px dashed var(--border); background:var(--bg-card); color:var(--text-main); font:inherit; font-size:12.5px; font-weight:700; line-height:1.3; cursor:pointer; transition:border-color .15s; }
  .pos-ops-overlay .wa-resumen:hover { border-color:#25D366; }
  .pos-ops-overlay .wa-resumen:focus-visible { outline:2px solid #25D366; outline-offset:2px; }
  .pos-ops-overlay .wa-resumen.ok { border-style:solid; border-color:rgba(37,211,102,.55); }
  /* Etiqueta de origen en las tarjetas de Pedidos a domicilio */
  .fc-origen { display:inline-flex; align-items:center; gap:4px; font-size:10.5px; font-weight:800; line-height:1; padding:3px 7px; border-radius:6px; white-space:nowrap; }
  .fc-origen svg { flex-shrink:0; }
  .fc-origen-wa { background:rgba(37,211,102,.16); color:#168A44; border:1px solid rgba(37,211,102,.45); }
  .fc-origen-web { background:var(--bg-card); color:var(--text-muted); border:1px solid var(--border); }
  .cj-origen-filtro { display:flex; gap:8px; flex-wrap:wrap; }
  .cj-origen-btn { min-height:36px; padding:0 14px; border-radius:99px; border:1.5px solid var(--borde); background:transparent; color:var(--texto-suave, #6E6359); font:inherit; font-size:12.5px; font-weight:800; cursor:pointer; transition:background .15s, border-color .15s, color .15s; }
  .cj-origen-btn:hover { border-color:#25D366; }
  .cj-origen-btn.on { background:rgba(37,211,102,.14); border-color:#25D366; color:#168A44; }
  .cj-origen-btn:focus-visible { outline:2px solid #25D366; outline-offset:2px; }
  .pos-ops-overlay .llv-btn-link:hover:not(:disabled) { color:var(--fc-rojo,#ef4444); }
  .pos-ops-overlay .llv-btn-link:disabled { opacity:.4; cursor:not-allowed; }

  /* Pedidos de hoy / historial: cada fila es clicable */
  .pos-ops-overlay .llv-lista-wrap { flex:1; min-height:0; overflow-y:auto; padding:16px; display:flex; flex-direction:column; gap:12px; }
  .pos-ops-overlay .llv-filtros { display:flex; gap:12px; flex-wrap:wrap; align-items:flex-end; }
  .pos-ops-overlay .llv-filtros label { display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--text-muted); }
  .pos-ops-overlay .llv-resumen { display:flex; gap:10px; flex-wrap:wrap; }
  .pos-ops-overlay .llv-kpi { background:var(--bg-surface); border:1.5px solid var(--border); border-radius:14px; padding:10px 16px; min-width:130px; }
  .pos-ops-overlay .llv-kpi small { display:block; font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); }
  .pos-ops-overlay .llv-kpi b { font-family:'IBM Plex Mono',monospace; font-size:20px; font-weight:800; color:var(--text-main); }
  .pos-ops-overlay .llv-lista { display:flex; flex-direction:column; gap:9px; }
  .pos-ops-overlay .llv-fila { display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; gap:6px 14px; align-items:center; width:100%; text-align:left; padding:12px 16px; background:var(--bg-surface); border:1.5px solid var(--border); border-radius:14px; color:var(--text-main); font:inherit; cursor:pointer; transition:transform .16s cubic-bezier(.16,1,.3,1), border-color .15s; animation:llvRise .25s cubic-bezier(.16,1,.3,1); }
  .pos-ops-overlay .llv-fila:hover { transform:translateX(4px); border-color:var(--fc-naranja); }
  .pos-ops-overlay .llv-fila:active { transform:scale(.995); }
  .pos-ops-overlay .llv-fila:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .llv-fila-cod { font-family:'IBM Plex Mono',monospace; font-weight:800; font-size:15px; color:var(--fc-naranja); }
  .pos-ops-overlay .llv-fila-med { min-width:0; }
  .pos-ops-overlay .llv-fila-med b { display:block; font-size:14px; }
  .pos-ops-overlay .llv-fila-med small { display:block; color:var(--text-muted); font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .pos-ops-overlay .llv-fila-total { font-family:'IBM Plex Mono',monospace; font-weight:800; }
  .pos-ops-overlay .llv-badge { display:inline-flex; align-items:center; gap:6px; padding:4px 11px; border-radius:99px; font-size:11.5px; font-weight:800; white-space:nowrap; }
  .pos-ops-overlay .llv-b-pendiente { background:rgba(245,158,11,.16); color:#F59E0B; }
  .pos-ops-overlay .llv-b-cocina { background:var(--fc-naranja-suave, rgba(255,107,53,.14)); color:var(--fc-naranja); }
  .pos-ops-overlay .llv-b-listo { background:var(--fc-verde-suave, rgba(16,185,129,.14)); color:var(--fc-verde, #10B981); }
  .pos-ops-overlay .llv-b-entregado { background:rgba(59,130,246,.14); color:#3B82F6; }
  .pos-ops-overlay .llv-b-cancelado { background:rgba(239,68,68,.14); color:#EF4444; }
  .pos-ops-overlay .llv-vacio-lista { text-align:center; color:var(--text-dim); padding:34px 10px; }

  /* Modal de detalle */
  .pos-ops-overlay .llv-modal { max-width:560px; width:100%; padding:22px; border-radius:20px; max-height:92vh; overflow-y:auto; text-align:left; }
  .pos-ops-overlay .llv-det-head { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; margin-bottom:14px; padding-right:34px; }
  .pos-ops-overlay .llv-det-kicker { font-family:'Sora',sans-serif; font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--fc-naranja); }
  .pos-ops-overlay .llv-det-titulo { font-family:'IBM Plex Mono',monospace; font-size:24px; font-weight:800; margin:2px 0; color:var(--text-main); }
  .pos-ops-overlay .llv-det-sub { font-size:12.5px; color:var(--text-muted); }
  .pos-ops-overlay .llv-det-bloque { background:var(--bg-card); border:1.5px solid var(--border); border-radius:14px; padding:12px 14px; margin-bottom:12px; }
  .pos-ops-overlay .llv-det-bloque h4 { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); margin:0 0 8px; }
  .pos-ops-overlay .llv-det-item { display:flex; justify-content:space-between; gap:10px; padding:5px 0; font-size:13.5px; }
  .pos-ops-overlay .llv-det-item small { display:block; color:var(--fc-naranja); font-weight:600; }
  .pos-ops-overlay .llv-det-item b { font-family:'IBM Plex Mono',monospace; white-space:nowrap; }
  .pos-ops-overlay .llv-det-kv { display:flex; justify-content:space-between; padding:3px 0; font-size:13px; }
  .pos-ops-overlay .llv-det-kv b { font-family:'IBM Plex Mono',monospace; }
  .pos-ops-overlay .llv-linea-tiempo { display:flex; flex-direction:column; gap:7px; }
  .pos-ops-overlay .llv-hito { display:flex; align-items:center; gap:10px; font-size:13px; color:var(--text-dim); }
  .pos-ops-overlay .llv-hito i { width:10px; height:10px; border-radius:50%; background:var(--border); flex-shrink:0; }
  .pos-ops-overlay .llv-hito.ok { color:var(--text-main); }
  .pos-ops-overlay .llv-hito.ok i { background:var(--fc-verde,#10B981); }
  .pos-ops-overlay .llv-hito span { margin-left:auto; font-family:'IBM Plex Mono',monospace; font-size:12px; }
  .pos-ops-overlay .llv-det-acciones { display:flex; gap:8px; flex-wrap:wrap; }
  .pos-ops-overlay .llv-det-acciones button { flex:1 1 150px; min-height:46px; border-radius:12px; border:1.5px solid var(--border); background:var(--bg-card); color:var(--text-main); font:inherit; font-size:13.5px; font-weight:800; cursor:pointer; transition:transform .1s, border-color .15s, background .15s; }
  .pos-ops-overlay .llv-det-acciones button:hover:not(:disabled) { border-color:var(--fc-naranja); }
  .pos-ops-overlay .llv-det-acciones button:active:not(:disabled) { transform:scale(.97); }
  .pos-ops-overlay .llv-det-acciones button:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .llv-det-acciones button:disabled { opacity:.5; cursor:progress; }
  .pos-ops-overlay .llv-det-acciones .primaria { background:var(--fc-naranja); border-color:var(--fc-naranja); color:#fff; box-shadow:0 4px 0 #B8431A; }
  .pos-ops-overlay .llv-det-acciones .peligro { color:var(--fc-rojo,#ef4444); }
  .pos-ops-overlay .llv-det-acciones .peligro:hover:not(:disabled) { border-color:var(--fc-rojo,#ef4444); background:rgba(239,68,68,.1); }

  @media (max-width:1100px) { .pos-ops-overlay .llv-split { grid-template-columns:minmax(0,1fr) 330px; } }
  @media (max-width:860px) {
    .pos-ops-overlay .llv-split { grid-template-columns:1fr; overflow-y:auto; }
    .pos-ops-overlay .llv-ticket { min-height:420px; }
    .pos-ops-overlay .llv-fila { grid-template-columns:auto minmax(0,1fr); }
    .pos-ops-overlay .llv-fila-total, .pos-ops-overlay .llv-fila .llv-badge { grid-column:2; justify-self:start; }
  }
  @media (prefers-reduced-motion:reduce) { .pos-ops-overlay .llv-wrap * { animation:none !important; transition:none !important; } }

  /* --- Nuevo pedido: catálogo amplio + comanda angosta en vivo (sin scroll horizontal en categorías) --- */
  .pos-ops-overlay .llv-nuevo { flex:1; min-height:0; display:grid; grid-template-columns:minmax(0,1fr) 316px; gap:14px; padding:12px 14px; overflow:hidden; }
  .pos-ops-overlay .llv-nuevo .llv-catalogo { display:flex; flex-direction:column; min-height:0; min-width:0; gap:8px; }
  .pos-ops-overlay .llv-cat-head { display:flex; flex-direction:column; gap:8px; flex-shrink:0; }
  .pos-ops-overlay .llv-nuevo .llv-buscar input { height:38px; font-size:13px; }
  .pos-ops-overlay .llv-nuevo .llv-chips { flex-wrap:wrap; overflow:visible; gap:6px; padding:0; }
  .pos-ops-overlay .llv-nuevo .llv-chip { min-height:28px; padding:0 11px; font-size:11.5px; border-width:1px; }
  .pos-ops-overlay .llv-nuevo .llv-grid { flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; display:grid; grid-template-columns:repeat(auto-fill,minmax(148px,1fr)); gap:10px; align-content:start; padding:2px 6px 10px 2px; }
  .pos-ops-overlay .llv-nuevo .llv-prod { padding:8px; gap:6px; border-radius:14px; }
  .pos-ops-overlay .llv-nuevo .llv-prod-nombre { font-size:12.5px; }
  .pos-ops-overlay .llv-nuevo .llv-prod-precio { font-size:12px; }
  .pos-ops-overlay .llv-nuevo .llv-prod-qty { top:12px; right:12px; min-width:24px; height:24px; font-size:12px; }
  .pos-ops-overlay .llv-nuevo .llv-ticket { min-height:0; width:100%; max-width:none; margin:0; overflow:hidden; }
  .pos-ops-overlay .llv-nuevo .llv-ticket-head { padding:11px 13px 9px; gap:6px; }
  .pos-ops-overlay .llv-nuevo .llv-ticket-lineas { flex:1; min-height:0; overflow-y:auto; padding:2px 10px 2px 13px; }
  .pos-ops-overlay .llv-nuevo .llv-ticket-pie { padding:10px 13px 13px; gap:8px; }
  .pos-ops-overlay .llv-nuevo .llv-linea { padding:8px 0; }
  .pos-ops-overlay .llv-nuevo .llv-linea-nombre { font-size:12.5px; }
  .pos-ops-overlay .llv-nuevo .llv-linea-precio { font-size:12px; }
  .pos-ops-overlay .llv-nuevo .llv-stepper button { width:30px; height:30px; }
  .pos-ops-overlay .llv-nuevo .llv-input { padding:7px 9px; font-size:12px; }
  .pos-ops-overlay .llv-nuevo .llv-total b { font-size:22px; }
  .pos-ops-overlay .llv-nuevo .llv-btn-3d { min-height:46px; font-size:14px; }
  /* Barra de scroll incrustada y fina, igual a la del menú lateral */
  .pos-ops-overlay .llv-scroll { scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.2) transparent; }
  .pos-ops-overlay .llv-scroll::-webkit-scrollbar { width:6px; }
  .pos-ops-overlay .llv-scroll::-webkit-scrollbar-track { background:transparent; margin:6px 0; }
  .pos-ops-overlay .llv-scroll::-webkit-scrollbar-thumb { background:rgba(255,255,255,.2); border-radius:99px; transition:background .2s; }
  .pos-ops-overlay .llv-scroll::-webkit-scrollbar-thumb:hover { background:rgba(255,255,255,.45); }
  body.theme-light .pos-ops-overlay .llv-scroll { scrollbar-color:rgba(255,107,53,.3) transparent; }
  body.theme-light .pos-ops-overlay .llv-scroll::-webkit-scrollbar-thumb { background:rgba(255,107,53,.3); }
  body.theme-light .pos-ops-overlay .llv-scroll::-webkit-scrollbar-thumb:hover { background:var(--naranja); }
  @media (max-width:980px) { .pos-ops-overlay .llv-nuevo { grid-template-columns:1fr; overflow-y:auto; } .pos-ops-overlay .llv-nuevo .llv-ticket { min-height:380px; } }
  /* Ventana del producto + línea de comanda editable */
  .pos-ops-overlay .llv-prod-modal { max-width:460px; padding:0; overflow:hidden; }
  .pos-ops-overlay .llv-pm-foto { aspect-ratio:16/10; background:var(--bg-card); display:grid; place-items:center; color:var(--text-dim); overflow:hidden; }
  .pos-ops-overlay .llv-pm-foto img { width:100%; height:100%; object-fit:cover; display:block; }
  .pos-ops-overlay .llv-pm-cuerpo { padding:16px 18px 18px; }
  .pos-ops-overlay .llv-pm-top { display:flex; justify-content:space-between; align-items:baseline; gap:12px; }
  .pos-ops-overlay .llv-pm-nombre { font-family:'Sora',sans-serif; font-size:19px; font-weight:800; margin:0; color:var(--text-main); }
  .pos-ops-overlay .llv-pm-precio { font-family:'IBM Plex Mono',monospace; font-size:17px; color:var(--fc-naranja); white-space:nowrap; }
  .pos-ops-overlay .llv-pm-desc { margin:6px 0 12px; font-size:12.5px; line-height:1.45; color:var(--text-muted); }
  .pos-ops-overlay .llv-pm-label { display:block; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); margin-bottom:6px; }
  .pos-ops-overlay .llv-prod-modal .llv-chip { min-height:30px; padding:0 12px; font-size:12px; }
  .pos-ops-overlay .llv-pm-pie { display:flex; gap:12px; align-items:center; margin-top:16px; }
  .pos-ops-overlay .llv-pm-pie .llv-btn-3d { flex:1; }
  .pos-ops-overlay .llv-pm-stepper button { width:42px; height:46px; }
  .pos-ops-overlay .llv-pm-stepper span { min-width:38px; font-size:16px; }
  .pos-ops-overlay .llv-linea-editar { grid-column:1; background:none; border:0; padding:0; text-align:left; color:inherit; font:inherit; cursor:pointer; display:flex; flex-direction:column; gap:2px; min-width:0; }
  .pos-ops-overlay .llv-linea-editar:hover .llv-linea-nombre { color:var(--fc-naranja); }
  .pos-ops-overlay .llv-linea-editar:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:3px; border-radius:6px; }
  .pos-ops-overlay .llv-linea-obs { color:var(--fc-naranja); font-size:11.5px; font-weight:600; line-height:1.3; }
  .pos-ops-overlay .llv-nuevo .llv-linea { grid-template-columns:minmax(0,1fr) auto; align-items:start; }
  .pos-ops-overlay .llv-nuevo .llv-linea .llv-stepper { grid-column:1; justify-self:start; }
  .pos-ops-overlay .llv-nuevo .llv-linea .llv-linea-precio { grid-column:2; grid-row:1; }
  /* Tarjeta de producto: se abre al tocar la foto; "Agregar" suma de una con la cantidad elegida */
  .pos-ops-overlay .llv-nuevo .llv-prod { cursor:default; text-align:left; }
  .pos-ops-overlay .llv-nuevo .llv-prod:active { transform:none; }
  .pos-ops-overlay .llv-prod-abrir { display:flex; flex-direction:column; gap:6px; background:none; border:0; padding:0; text-align:left; color:inherit; font:inherit; cursor:pointer; width:100%; }
  .pos-ops-overlay .llv-prod-abrir:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:3px; border-radius:10px; }
  .pos-ops-overlay .llv-prod-abrir:active .llv-prod-foto { transform:scale(.98); }
  .pos-ops-overlay .llv-prod-foto { transition:transform .12s; }
  .pos-ops-overlay .llv-prod-acc { display:flex; align-items:center; gap:6px; margin-top:auto; }
  .pos-ops-overlay .llv-stepper-mini button { width:26px; height:32px; font-size:15px; }
  .pos-ops-overlay .llv-stepper-mini span { min-width:24px; font-size:12.5px; }
  .pos-ops-overlay .llv-agregar { flex:1; min-height:32px; border:0; border-radius:9px; background:linear-gradient(180deg,#FF8A5B,var(--fc-naranja)); color:#fff; font:inherit; font-size:12px; font-weight:800; cursor:pointer; box-shadow:0 3px 0 #B8431A; transition:transform .1s, box-shadow .1s, filter .15s; }
  .pos-ops-overlay .llv-agregar:hover { filter:brightness(1.08); }
  .pos-ops-overlay .llv-agregar:active { transform:translateY(3px); box-shadow:0 0 0 #B8431A; }
  .pos-ops-overlay .llv-agregar:focus-visible { outline:2px solid #fff; outline-offset:2px; }
  .pos-ops-overlay .llv-agregar.ok { animation:llvOk .45s ease; }
  @keyframes llvOk { 0% { background:var(--fc-verde,#10B981); box-shadow:0 3px 0 #0b7a56; } 100% { } }
  /* Centro de reimpresión */
  .pos-ops-overlay .rep-modal { max-width:480px; width:100%; padding:22px; border-radius:20px; max-height:92vh; overflow-y:auto; text-align:left; }
  .pos-ops-overlay .rep-kicker { font-family:'Sora',sans-serif; font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--fc-naranja); }
  .pos-ops-overlay .rep-titulo { font-family:'IBM Plex Mono',monospace; font-size:22px; font-weight:800; margin:2px 0; color:var(--text-main); padding-right:34px; }
  .pos-ops-overlay .rep-sub { margin:0 0 14px; font-size:12.5px; color:var(--text-muted); }
  .pos-ops-overlay .rep-lista { display:flex; flex-direction:column; gap:9px; }
  .pos-ops-overlay .rep-fila { display:flex; align-items:center; gap:14px; width:100%; text-align:left; padding:13px 15px; background:var(--bg-card); border:1.5px solid var(--border); border-radius:14px; color:var(--text-main); font:inherit; cursor:pointer; transition:transform .14s, border-color .15s, background .15s; }
  .pos-ops-overlay .rep-fila:hover { border-color:var(--fc-naranja); transform:translateX(3px); }
  .pos-ops-overlay .rep-fila:active { transform:scale(.99); }
  .pos-ops-overlay .rep-fila:focus-visible { outline:2px solid var(--fc-naranja); outline-offset:2px; }
  .pos-ops-overlay .rep-fila svg { color:var(--fc-naranja); flex-shrink:0; }
  .pos-ops-overlay .rep-fila b { display:block; font-size:14px; }
  .pos-ops-overlay .rep-fila small { display:block; color:var(--text-muted); font-size:12px; margin-top:1px; }
  .pos-ops-overlay .rep-cargando, .pos-ops-overlay .rep-vacio { text-align:center; color:var(--text-dim); padding:22px 8px; font-size:13px; }
  .pos-ops-overlay .rep-pie { margin:14px 0 0; font-size:11.5px; color:var(--text-dim); line-height:1.45; }
  /* Botones del módulo: planos y opacos (sin brillo ni gradiente) */
  .pos-ops-overlay .llv-btn-3d { background:var(--fc-naranja-dark, #E55A2B); box-shadow:none; text-shadow:none; border:0; opacity:1; }
  .pos-ops-overlay .llv-btn-3d:hover:not(:disabled) { filter:none; background:var(--fc-naranja); }
  .pos-ops-overlay .llv-btn-3d:active:not(:disabled) { transform:scale(.985); box-shadow:none; background:#C94E22; }
  .pos-ops-overlay .llv-btn-3d:disabled { background:var(--bg-card); color:var(--text-dim); box-shadow:none; }
  .pos-ops-overlay .llv-agregar { background:var(--fc-naranja-dark, #E55A2B); box-shadow:none; }
  .pos-ops-overlay .llv-agregar:hover { filter:none; background:var(--fc-naranja); }
  .pos-ops-overlay .llv-agregar:active { transform:scale(.97); box-shadow:none; }
  /* Paso 2: generar la comanda */
  .pos-ops-overlay .llv-post { max-width:420px; text-align:center; padding:26px 22px 22px; }
  .pos-ops-overlay .llv-post-ok { width:58px; height:58px; margin:0 auto 12px; border-radius:50%; display:grid; place-items:center; background:var(--fc-verde-suave, rgba(16,185,129,.14)); color:var(--fc-verde, #10B981); }
  .pos-ops-overlay .llv-post-titulo { font-family:'Sora',sans-serif; font-size:20px; font-weight:800; margin:0; color:var(--text-main); }
  .pos-ops-overlay .llv-post-det { margin:6px 0 14px; font-size:13px; color:var(--text-muted); }
  .pos-ops-overlay .llv-post-estado { padding:11px 12px; border-radius:12px; background:rgba(245,158,11,.14); color:#F59E0B; font-size:13px; font-weight:700; margin-bottom:16px; }
  .pos-ops-overlay .llv-post-estado.listo { background:var(--fc-verde-suave, rgba(16,185,129,.14)); color:var(--fc-verde, #10B981); }
  .pos-ops-overlay .llv-post-acc { display:flex; flex-direction:column; gap:6px; align-items:stretch; }
  .pos-ops-overlay .llv-post-acc .llv-btn-3d { min-height:50px; }
  .pos-ops-overlay .llv-b-falta { background:rgba(245,158,11,.16); color:#F59E0B; }
  .pos-ops-overlay .llv-btn-link.llv-peligro { color:var(--fc-rojo,#ef4444); margin-top:4px; }
  .pos-ops-overlay .llv-btn-link.llv-peligro:hover { color:#ff6b6b; }
  .pos-ops-overlay #llvModalDetalle .llv-modal { display:flex; flex-direction:column; overflow:hidden; }
  .pos-ops-overlay #llvModalDetalle .llv-det-head { flex-shrink:0; }
  .pos-ops-overlay #llvModalDetalle .llv-det-body { flex:1; min-height:0; overflow-y:auto; padding-right:6px; scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.2) transparent; }
  .pos-ops-overlay #llvModalDetalle .llv-det-body::-webkit-scrollbar { width:6px; }
  .pos-ops-overlay #llvModalDetalle .llv-det-body::-webkit-scrollbar-thumb { background:rgba(255,255,255,.2); border-radius:99px; }
  .pos-ops-overlay #llvModalDetalle .llv-det-acciones { flex-shrink:0; margin-top:10px; padding-top:14px; border-top:1.5px solid var(--border); }
  .pos-ops-overlay .llv-det-paso { margin-top:8px; padding:8px 11px; border-radius:10px; font-size:12.5px; font-weight:700; background:var(--fc-naranja-suave, rgba(255,107,53,.14)); color:var(--fc-naranja); }
  .pos-ops-overlay .llv-det-paso.cocina { background:rgba(245,158,11,.14); color:#F59E0B; }
  .pos-ops-overlay .llv-det-paso.ok { background:var(--fc-verde-suave, rgba(16,185,129,.14)); color:var(--fc-verde, #10B981); }
  .pos-ops-overlay .llv-det-acciones .primaria { box-shadow:none; background:var(--fc-naranja-dark, #E55A2B); }
  .floorplan-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px; }
  .floorplan-table {
    background:var(--blanco); border:2px solid var(--borde); border-radius:18px; padding:16px;
    display:flex; flex-direction:column; justify-content:space-between; gap:12px; min-height:150px;
    cursor:pointer; transition:transform .15s,box-shadow .15s; box-shadow:var(--shadow-card);
  }
  .floorplan-table:hover { transform:translateY(-3px); box-shadow:var(--shadow-hover); }
  .floorplan-table.libre { border-color:rgba(16,185,129,.4); background:linear-gradient(145deg,var(--verde-suave) 0%,transparent 100%); }
  .floorplan-table.ocupada { border-color:rgba(255,107,53,.5); background:linear-gradient(145deg,var(--naranja-suave) 0%,transparent 100%); }
  .floorplan-table.cuenta { border-color:rgba(59,130,246,.5); background:linear-gradient(145deg,var(--azul-suave) 0%,transparent 100%); }
  .tbl-number { font-family:'Sora',sans-serif; font-size:19px; font-weight:800; color:var(--texto); }
  .tbl-meta { font-size:12.5px; color:var(--texto-suave); line-height:1.5; }
  .tbl-footer { display:flex; align-items:flex-end; justify-content:space-between; gap:8px; }
  .tbl-total-label { font-size:10.5px; text-transform:uppercase; color:var(--texto-muted); font-weight:700; }
  .tbl-total { font-family:'IBM Plex Mono',monospace; font-size:17px; font-weight:800; color:var(--texto); }

  .domi-kanban-grid { display:grid; grid-template-columns:repeat(4,minmax(230px,1fr)); gap:14px; overflow-x:auto; align-items:start; }
  .domi-kanban-col { background:var(--blanco); border:1.5px solid var(--borde); border-radius:18px; display:flex; flex-direction:column; max-height:100%; overflow:hidden; }
  .domi-kanban-head { padding:13px 15px; border-bottom:1.5px solid var(--borde); display:flex; justify-content:space-between; align-items:center; font-size:12.5px; font-weight:800; color:var(--texto); }
  .domi-kanban-head .kc-count { font-size:11px; font-weight:800; background:var(--card-subtle); color:var(--texto-suave); padding:2px 8px; border-radius:99px; }
  .domi-kanban-list { flex:1; overflow-y:auto; padding:10px; display:flex; flex-direction:column; gap:9px; min-height:60px; }
  .domi-touch-card {
    background:var(--card-subtle); border:1.5px solid var(--borde); border-radius:14px; padding:12px;
    display:flex; flex-direction:column; gap:6px; cursor:pointer; transition:transform .15s,border-color .15s;
  }
  .domi-touch-card:hover { transform:translateY(-2px); border-color:var(--naranja); }
  .domi-card-nuevo { border-left:4px solid #F59E0B; }
  .domi-card-cocina { border-left:4px solid var(--naranja); }
  .domi-card-ruta { border-left:4px solid var(--azul); }
  .domi-card-entregado { border:1.5px solid var(--verde); border-left:4px solid var(--verde); background:rgba(30,156,104,0.06); opacity:1; }
  .domi-card-cancelado { border:1.5px solid var(--rojo); border-left:4px solid var(--rojo); background:rgba(220,55,44,0.06); opacity:0.9; }
  .domi-card-top { display:flex; justify-content:space-between; align-items:baseline; gap:8px; }
  .domi-card-num { font-family:'IBM Plex Mono',monospace; font-size:12.5px; font-weight:800; color:var(--texto); }
  .domi-card-cliente { font-size:13.5px; font-weight:700; color:var(--texto); }
  .domi-card-meta { font-size:11.5px; color:var(--texto-suave); }
  .domi-card-bottom { display:flex; justify-content:space-between; align-items:center; margin-top:2px; }
  .domi-card-total { font-family:'IBM Plex Mono',monospace; font-size:13px; font-weight:800; color:var(--texto); }
  .empty-hint-kanban { padding:14px 6px; text-align:center; font-size:12px; color:var(--texto-muted); }

  .rider-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:14px; }
  .rider-touch-card {
    background:var(--blanco); border:2px solid var(--borde); border-radius:18px; padding:16px;
    display:flex; flex-direction:column; gap:10px; cursor:pointer; transition:transform .15s,box-shadow .15s;
    box-shadow:var(--shadow-card);
  }
  .rider-touch-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-hover); }
  .rider-touch-card.inactivo { opacity:.6; }
  .rider-card-top { display:flex; align-items:center; gap:12px; }
  .rider-avatar {
    width:42px; height:42px; border-radius:50%; flex-shrink:0;
    background:linear-gradient(135deg,var(--naranja),var(--naranja-osc)); color:#fff;
    display:flex; align-items:center; justify-content:center; font-weight:800; font-family:'Sora',sans-serif;
  }
  .rider-name { font-size:14.5px; font-weight:800; color:var(--texto); }
  .rider-phone { font-size:12px; color:var(--texto-suave); }
  .rider-card-stats { display:flex; justify-content:space-between; align-items:center; padding-top:8px; border-top:1px solid var(--borde); }
  .rider-stat-label { font-size:10.5px; text-transform:uppercase; color:var(--texto-muted); font-weight:700; }
  .rider-stat-value { font-family:'IBM Plex Mono',monospace; font-size:15px; font-weight:800; color:var(--texto); }

  @media(max-width:760px) {
    .domi-kanban-grid { grid-template-columns:100%; overflow-x:visible; }
    .domi-kanban-col { max-height:none; }
  }

  /* ================================================================================
     CAPA DE OPERACIONES (idéntica a MOCKUPS/modulos mesas pedidos domicilio/
     pos-operaciones-tactil.html) — pantalla completa propia para Mesas & Cuentas,
     Pedidos a Domicilio y Domiciliarios. Todo lo de aquí abajo vive bajo
     .pos-ops-overlay para no tocar ni un solo estilo del resto del panel.
     ================================================================================ */
  /* Barra superior persistente — visible en TODOS los modulos, no solo en la
     capa tactil. Contiene el interruptor de tema (unico, el de abajo del
     sidebar se elimino por confuso/roto) y el indicador de turno. */
  /* Antes esta barra era una "tarjeta" flotante con esquinas redondeadas y
     margen propio DENTRO del padding de main.content — al hacer scroll, el
     contenido se alcanzaba a ver por las esquinas redondeadas y por el hueco
     del margen, dando la sensacion de un boton flotante en vez de una barra
     fija de verdad. Ahora se estira con margenes negativos hasta el borde
     real de main.content (cancela su padding) y queda solida, sin esquinas
     redondeadas ni huecos — nada pasa por detras mientras se hace scroll. */
  .fc-persistent-topbar {
    position:sticky; top:calc(-28px - var(--safe-t)); z-index:30;
    margin:calc(-28px - var(--safe-t)) calc(-34px - var(--safe-r)) 20px -34px;
    padding:calc(16px + var(--safe-t)) calc(34px + var(--safe-r)) 16px 34px;
    flex-shrink:0; display:flex; align-items:center; justify-content:space-between;
    box-shadow:var(--shadow-card);
  }
  .fc-persistent-topbar[data-theme="dark"] { background:#181513; border-bottom:1.5px solid #352C26; color:#FFFFFF; }
  .fc-persistent-topbar[data-theme="light"] { background:#FFFFFF; border-bottom:1.5px solid #E0D7CC; color:#1C1714; }
  .fc-theme-toggle-btn {
    height:38px; padding:0 12px; border-radius:11px; font-size:12.5px; font-weight:700;
    display:flex; align-items:center; gap:6px; cursor:pointer; font-family:inherit;
  }
  .fc-persistent-topbar[data-theme="dark"] .fc-theme-toggle-btn { background:#221D1A; border:1.5px solid #352C26; color:#FFFFFF; }
  .fc-persistent-topbar[data-theme="light"] .fc-theme-toggle-btn { background:#F9F8F6; border:1.5px solid #E0D7CC; color:#1C1714; }

  /* Botón de Actualizar Aplicación / Limpiar Caché */
  .fc-reload-btn {
    height:38px; padding:0 12px; border-radius:11px; font-size:12.5px; font-weight:700;
    display:inline-flex; align-items:center; gap:6px; cursor:pointer; font-family:inherit;
    transition:all 0.15s ease;
  }
  .fc-persistent-topbar[data-theme="dark"] .fc-reload-btn { background:#221D1A; border:1.5px solid #352C26; color:#FFFFFF; }
  .fc-persistent-topbar[data-theme="light"] .fc-reload-btn { background:#F9F8F6; border:1.5px solid #E0D7CC; color:#1C1714; }
  .fc-reload-btn:hover { border-color:var(--naranja, #FF6B35) !important; color:var(--naranja, #FF6B35) !important; }
  .fc-reload-btn.rotating svg { animation:fcSpinAnim 0.7s linear infinite; }
  @keyframes fcSpinAnim { from { transform:rotate(0deg); } to { transform:rotate(360deg); } }

  .mobile-topbar .fc-reload-btn {
    width:36px; height:36px; padding:0; justify-content:center;
    border-radius:10px; border:1.5px solid var(--borde);
    background:var(--card); color:var(--texto);
  }

  .fc-turno-pill {
    display:flex; align-items:center; gap:6px; font-size:12px; font-weight:700; color:#10B981;
    background:rgba(16,185,129,.14); padding:6px 12px; border-radius:99px; border:1px solid rgba(16,185,129,.3);
  }
  .fc-turno-pill::before { content:''; width:7px; height:7px; border-radius:50%; background:#10B981; }
  .fc-turno-pill.cerrado { color:#F87171; background:rgba(239,68,68,.14); border-color:rgba(239,68,68,.35); }
  .fc-turno-pill.cerrado::before { background:#EF4444; }

  /* Campanita de notificaciones (historial de push ya enviados al staff) */
  .fc-bell-wrap { position:relative; }
  /* Con la lista abierta, el encabezado sube por encima del panel de operaciones (que va a z-index 9000); si no, la lista queda tapada */
  .fc-persistent-topbar.fc-topbar-sobre { z-index:9650; }
  .fc-bell-btn { width:38px; height:38px; border-radius:11px; display:flex; align-items:center; justify-content:center; cursor:pointer; position:relative; font-size:17px; }
  .fc-persistent-topbar[data-theme="dark"] .fc-bell-btn { background:#221D1A; border:1.5px solid #352C26; color:#FFFFFF; }
  .fc-persistent-topbar[data-theme="light"] .fc-bell-btn { background:#F9F8F6; border:1.5px solid #E0D7CC; color:#1C1714; }
  .fc-bell-badge { position:absolute; top:-4px; right:-4px; min-width:16px; height:16px; padding:0 3px; border-radius:99px; background:#EF4444; color:#fff; font-size:9.5px; font-weight:800; display:flex; align-items:center; justify-content:center; font-family:'IBM Plex Mono',monospace; }
  .fc-bell-dropdown { display:none; position:absolute; top:46px; right:0; width:320px; max-height:400px; overflow-y:auto; background:var(--blanco); border:1.5px solid var(--borde); border-radius:14px; box-shadow:var(--shadow-hover); z-index:100; color:var(--texto); }
  .fc-bell-dropdown.open { display:block; }
  .fc-bell-dropdown-head { padding:12px 14px; font-size:12.5px; font-weight:800; border-bottom:1px solid var(--borde); }
  .fc-bell-item { padding:11px 14px; border-bottom:1px solid var(--borde); }
  .fc-bell-item:last-child { border-bottom:none; }
  .fc-bell-clic { cursor:pointer; transition:background .15s; }
  .fc-bell-clic:hover { background:rgba(37,211,102,.1); }
  .fc-bell-clic:focus-visible { outline:2px solid #25D366; outline-offset:-2px; }
  .fc-bell-clic .fc-bell-item-title::after { content:' · ir al chat'; font-size:10.5px; font-weight:800; color:#1a9e4b; }
  .fc-bell-item-title { font-size:12.5px; font-weight:700; }
  .fc-bell-item-body { font-size:11.5px; color:var(--texto-suave); margin-top:2px; }
  .fc-bell-item-time { font-size:10.5px; color:var(--texto-suave); margin-top:4px; font-family:'IBM Plex Mono',monospace; }
  .fc-bell-empty { padding:24px 14px; text-align:center; font-size:12.5px; color:var(--texto-suave); }
  /* Alertas de pedidos de WhatsApp: tarjetas flotantes como un chat entrante; quedan hasta que se atienden */
  .wa-alertas { position:fixed; top:84px; right:16px; z-index:9600; display:flex; flex-direction:column; gap:10px; width:min(336px, calc(100vw - 32px)); max-height:calc(100vh - 104px); overflow-y:auto; overflow-x:hidden; padding:2px; scrollbar-width:thin; pointer-events:none; }
  .wa-alertas-cab { pointer-events:auto; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:7px 12px; border-radius:12px; background:#1F1A17; color:#fff; border:1.5px solid #352C26; font-size:12px; font-weight:800; }
  .wa-alertas-cab button { border:0; background:transparent; color:#25D366; font:inherit; font-size:12px; font-weight:800; cursor:pointer; padding:4px 6px; border-radius:8px; }
  .wa-alertas-cab button:hover { background:rgba(255,255,255,.08); }
  .wa-alertas-cab button:focus-visible { outline:2px solid #fff; outline-offset:2px; }
  .wa-alerta { cursor:pointer; flex-shrink:0; }
  .wa-alerta:hover { border-color:#25D366; }
  .wa-alerta:focus-visible { outline:2px solid #25D366; outline-offset:2px; }
  .wa-alerta { pointer-events:auto; display:flex; align-items:center; gap:12px; padding:12px 12px 12px 14px; border-radius:16px; background:#1F1A17; color:#fff; border:1.5px solid #352C26; box-shadow:0 14px 36px rgba(0,0,0,.5); animation:waAlertaEntra .35s cubic-bezier(.16,1,.3,1); font-family:'Inter',system-ui,sans-serif; }
  .wa-alerta-ico { width:40px; height:40px; border-radius:12px; display:grid; place-items:center; background:#25D366; color:#fff; flex-shrink:0; }
  .wa-alerta.preparacion .wa-alerta-ico { background:#F59E0B; }
  .wa-alerta.cancelado .wa-alerta-ico { background:#EF4444; }
  .wa-alerta.entregado .wa-alerta-ico { background:#10B981; }
  .wa-alerta-txt { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
  .wa-alerta-txt b { font-size:13.5px; font-weight:800; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .wa-alerta-txt span { font-size:12px; line-height:1.3; color:#CFC5BA; }
  .wa-alerta-acc { display:flex; align-items:center; gap:6px; flex-shrink:0; }
  .wa-alerta-abrir { min-height:36px; padding:0 12px; border-radius:10px; border:0; background:#25D366; color:#fff; font:inherit; font-size:12.5px; font-weight:800; cursor:pointer; transition:filter .15s, transform .1s; }
  .wa-alerta-abrir:hover { filter:brightness(1.08); }
  .wa-alerta-abrir:active { transform:scale(.96); }
  .wa-alerta-x { width:30px; height:30px; border-radius:9px; border:0; background:transparent; color:#A3968A; cursor:pointer; display:grid; place-items:center; }
  .wa-alerta-x:hover { background:rgba(255,255,255,.1); color:#fff; }
  .wa-alerta-abrir:focus-visible, .wa-alerta-x:focus-visible { outline:2px solid #fff; outline-offset:2px; }
  .wa-alerta-mas { pointer-events:auto; align-self:flex-end; font-size:11.5px; font-weight:800; color:#fff; background:#1F1A17; border:1px solid #352C26; border-radius:99px; padding:4px 10px; }

  /* ===== Avisos visibles de pedidos nuevos (pagina web / WhatsApp) y de productos adicionales (2026-10-10) ===== */
  .ped-alertas { top:84px; right:16px; }
  body:has(#waAlertas .wa-alerta) .ped-alertas { top:196px; }
  .ped-alertas .wa-alerta { border-color:var(--c, #FF6B35); box-shadow:0 14px 36px rgba(0,0,0,.5), 0 0 0 3px color-mix(in srgb, var(--c, #FF6B35) 30%, transparent); }
  .ped-alertas .wa-alerta-ico { background:var(--c, #FF6B35); }
  .ped-alertas .wa-alerta-abrir { background:var(--c, #FF6B35); }
  .ped-alertas .wa-alertas-cab button { color:#FF8A5C; }

  /* Empresa -> Reservas: selector del valor del abono */
  .rc-campo { max-width:460px; }
  .rc-et { display:block; font:800 12px 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:var(--texto-muted); margin-bottom:8px; }
  .rc-chips { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:8px; }
  .rc-chips button { min-height:52px; padding:8px 6px; border-radius:13px; border:1.5px solid var(--borde); background:var(--card-subtle); color:var(--texto); font:800 15px 'Sora',sans-serif; letter-spacing:-.01em; cursor:pointer; box-shadow:0 3px 0 var(--borde); transition:transform .12s, box-shadow .12s, border-color .15s, background .15s; }
  .rc-chips button:hover { border-color:var(--naranja); }
  .rc-chips button:active { transform:translateY(3px); box-shadow:0 0 0 var(--borde); }
  .rc-chips button:focus-visible { outline:3px solid var(--naranja-linea); outline-offset:2px; }
  .rc-chips button[aria-checked="true"] { background:var(--naranja); border-color:var(--naranja-osc); color:#fff; box-shadow:0 3px 0 var(--naranja-osc); }
  .rc-otro { display:flex; align-items:center; gap:0; margin-top:10px; border:1.5px solid var(--borde); border-radius:13px; background:var(--card-subtle); overflow:hidden; }
  .rc-otro:focus-within { border-color:var(--naranja); box-shadow:0 0 0 3px var(--naranja-suave); }
  .rc-peso { align-self:stretch; display:grid; place-items:center; padding:0 14px; background:var(--naranja-suave); color:var(--naranja-osc); font:800 18px 'Sora',sans-serif; }
  .rc-otro input { flex:1; min-width:0; min-height:50px; border:0 !important; background:transparent !important; box-shadow:none !important; font:700 18px 'IBM Plex Mono',monospace; padding:0 12px; color:var(--texto); }
  .rc-otro small { padding-right:14px; color:var(--texto-muted); font-size:12px; white-space:nowrap; }
  @media (max-width:420px) { .rc-chips button { font-size:13.5px; } .rc-otro small { display:none; } }
  /* ===== Reservas: Recibida = AMARILLO parpadeante hasta confirmar (2026-10-10) ===== */
  @keyframes rsvParpadeo { 0%,100% { background-color:rgba(245,158,11,.10); border-color:rgba(245,158,11,.55); } 50% { background-color:rgba(245,158,11,.34); border-color:#F59E0B; } }
  .rsv-parpadea { animation:rsvParpadeo 1.6s ease-in-out infinite; }
  .rsv-d.tiene-pend { animation:rsvParpadeo 1.6s ease-in-out infinite; }
  .rsv-d .pen { color:#92600A !important; background:rgba(245,158,11,.28) !important; animation:rsvParpadeo 1.6s ease-in-out infinite; }
  .rsv-tab[data-rsv-filtro="pendiente"] b { background:#F59E0B; color:#1A1100; animation:rsvParpadeo 1.6s ease-in-out infinite; }
  .nav-dot-pend { display:none; width:9px; height:9px; margin-left:6px; border-radius:50%; background:#F59E0B; box-shadow:0 0 0 0 rgba(245,158,11,.7); animation:rsvPunto 1.4s infinite; vertical-align:middle; }
  .nav-dot-pend.on { display:inline-block; }
  @keyframes rsvPunto { 0% { box-shadow:0 0 0 0 rgba(245,158,11,.7); } 70% { box-shadow:0 0 0 9px rgba(245,158,11,0); } 100% { box-shadow:0 0 0 0 rgba(245,158,11,0); } }
  @media (prefers-reduced-motion: reduce) { .rsv-parpadea, .rsv-d.tiene-pend, .rsv-d .pen, .rsv-tab[data-rsv-filtro="pendiente"] b, .nav-dot-pend { animation:none; } }
  /* ===== RESERVAS: «libro de la casa». Lista por día con la hora como protagonista + ficha con control de estado. Las burbujas copian .wa-alerta (WhatsApp) con el color del estado en --c. ===== */
  .rsv-alertas { top:auto; bottom:16px; flex-direction:column-reverse; }
  .rsv-alertas .wa-alerta { border-color:#352C26; }
  .rsv-alertas .wa-alerta:hover { border-color:var(--c); }
  .rsv-alertas .wa-alerta-ico { background:var(--c); }
  .rsv-alertas .wa-alerta-abrir { background:var(--c); }
  .rsv-alertas .wa-alertas-cab button { color:#FF8A5C; }
  .rsv-tabs { display:flex; gap:6px; background:var(--card-subtle); border:1px solid var(--borde); border-radius:14px; padding:5px; margin-bottom:18px; flex-wrap:wrap; }
  .rsv-tab { flex:1; min-width:112px; min-height:44px; border:none; background:none; padding:9px 12px; border-radius:10px; font-family:inherit; font-size:14px; font-weight:700; color:var(--texto-suave); cursor:pointer; display:flex; align-items:center; justify-content:center; gap:8px; transition:background .18s, color .18s, box-shadow .18s; }
  .rsv-tab i { width:9px; height:9px; border-radius:50%; background:var(--c, var(--texto-muted)); flex:none; }
  .rsv-tab b { font:700 11px 'IBM Plex Mono',monospace; background:var(--naranja-suave); color:var(--naranja); border-radius:99px; padding:1px 8px; }
  .rsv-tab:hover { color:var(--texto); background:rgba(255,107,53,.07); }
  .rsv-tab:focus-visible, .rsv-est:focus-visible, .rsv-tabla tbody tr:focus-visible { outline:2px solid var(--naranja); outline-offset:2px; }
  .rsv-tab[aria-pressed="true"] { background:var(--naranja); color:#fff; box-shadow:0 2px 10px rgba(255,107,53,.35); }
  .rsv-tab[aria-pressed="true"] b { background:#fff; color:var(--naranja-osc); }
  .rsv-split { display:grid; grid-template-columns:minmax(0,1fr) 360px; gap:24px; align-items:start; }
  .rsv-tabla { min-width:520px; }
  .rsv-tabla tbody tr.rsv-dia td { background:var(--card-subtle); padding:11px 18px; font:800 11.5px 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:var(--texto-suave); border-bottom:1px solid var(--borde); cursor:default; }
  .rsv-tabla tbody tr.rsv-dia td b { color:var(--naranja); font-weight:800; }
  .rsv-tabla tbody tr.rsv-fila td:first-child { box-shadow:inset 4px 0 0 var(--c); }
  .rsv-tabla tbody tr.rsv-fila { transition:background .15s; }
  .rsv-tabla tbody tr.sel { background:rgba(255,107,53,.12); }
  .rsv-hora { font:800 20px 'Sora',sans-serif; letter-spacing:-.03em; line-height:1; }
  .rsv-hora small { display:block; margin-top:5px; font:500 11px 'IBM Plex Mono',monospace; letter-spacing:.04em; color:var(--texto-muted); }
  .rsv-cli b { display:block; font-size:15px; }
  .rsv-cli small { font:500 12px 'IBM Plex Mono',monospace; color:var(--texto-muted); }
  .rsv-pers { display:inline-flex; align-items:center; gap:6px; font-weight:700; }
  .rsv-pers svg { width:16px; height:16px; stroke:var(--texto-muted); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  .rsv-mesa-tag { font:600 12.5px 'IBM Plex Mono',monospace; color:var(--texto-suave); }
  .rsv-mesa-tag.vacia { color:var(--texto-muted); }
  /* Reservas: filas más bajas (sin pasar de 46 px de alto, el mínimo cómodo para tocar) para que quepan más por pantalla */
  #tab-reservas .page-head { margin-bottom:14px; }
  #tab-reservas .toolbar { margin-bottom:12px; }
  #tab-reservas .rsv-tabs { margin-bottom:12px; }
  .rsv-tab { min-height:40px; padding:7px 12px; }
  #tab-reservas .rsv-tabla { min-width:0; }
  #tab-reservas .rsv-tabla th { padding:10px 14px; }
  #tab-reservas .rsv-tabla td { padding:9px 14px; }
  #tab-reservas .rsv-tabla tbody tr.rsv-dia td { padding:7px 14px; }
  #tab-reservas .rsv-hora { font-size:17px; }
  .rsv-cli b { font-size:14.5px; line-height:1.2; }
  .rsv-cli small { font-size:11.5px; line-height:1.2; }
  #tab-reservas .count { margin-bottom:8px; }
  .rsv-ficha { background:var(--blanco); border:1px solid var(--borde); border-radius:20px; padding:0; box-shadow:var(--shadow-card); position:sticky; top:76px; overflow:hidden; }
  .rsv-fcab { padding:20px 22px 18px; background:linear-gradient(160deg, var(--naranja-suave), transparent 70%); border-bottom:1px solid var(--borde); }
  .rsv-fcab .k { font:700 11.5px 'IBM Plex Mono',monospace; color:var(--naranja); letter-spacing:.08em; }
  .rsv-fcab h3 { font:800 22px 'Sora',sans-serif; letter-spacing:-.02em; margin:4px 0 0; line-height:1.15; }
  .rsv-fcuerpo { padding:18px 22px 22px; }
  .rsv-datos { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:18px; }
  .rsv-dato { background:var(--card-subtle); border:1px solid var(--borde); border-radius:12px; padding:10px 10px 9px; text-align:center; }
  .rsv-dato span { display:block; font:700 10px 'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.08em; color:var(--texto-muted); margin-bottom:4px; }
  .rsv-dato b { font:800 15px 'Sora',sans-serif; letter-spacing:-.02em; }
  .rsv-rotulo { font:800 11px 'IBM Plex Mono',monospace; color:var(--texto-muted); text-transform:uppercase; letter-spacing:.1em; margin:0 0 8px; }
  .rsv-estados { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:18px; }
  .rsv-est { display:flex; align-items:center; gap:9px; min-height:46px; padding:8px 12px; border-radius:12px; border:1.5px solid var(--borde); background:var(--card-subtle); color:var(--texto-suave); font:700 13.5px 'Inter',sans-serif; cursor:pointer; text-align:left; transition:border-color .15s, background .15s, color .15s, transform .08s; }
  .rsv-est i { width:12px; height:12px; border-radius:50%; border:2px solid var(--c); flex:none; transition:background .15s; }
  .rsv-est:hover { border-color:var(--c); color:var(--texto); }
  .rsv-est:active { transform:scale(.97); }
  .rsv-est[aria-checked="true"] { background:var(--c); border-color:var(--c); color:#fff; box-shadow:0 6px 16px -8px var(--c); }
  .rsv-est[aria-checked="true"] i { background:#fff; border-color:#fff; }
  .rsv-est[disabled] { opacity:.6; pointer-events:none; }
  .rsv-linea { display:grid; grid-template-columns:96px 1fr; gap:6px 12px; font-size:14px; margin:0 0 4px; }
  .rsv-linea dt { color:var(--texto-suave); } .rsv-linea dd { margin:0; font-weight:600; word-break:break-word; }
  .rsv-fi { width:100%; min-height:44px; padding:8px 10px; background:var(--card-subtle); border:1.5px solid var(--borde); border-radius:10px; color:var(--texto); font:inherit; font-size:14px; font-weight:600; }
  .rsv-fi:focus { outline:none; border-color:var(--naranja); box-shadow:0 0 0 3px var(--naranja-suave); }
  .rsv-aviso { display:flex; gap:10px; margin-top:12px; padding:10px 12px; border-radius:12px; background:rgba(245,158,11,.14); color:#D97706; font-size:13.5px; font-weight:600; }
  .rsv-aviso svg { flex:none; width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  .rsv-contactos { display:flex; gap:8px; margin-top:16px; flex-wrap:wrap; }
  .rsv-contactos .btn-outline { min-height:44px; padding:8px 14px; font-size:13.5px; text-decoration:none; display:inline-flex; align-items:center; justify-content:center; gap:7px; flex:1 1 120px; }
  .rsv-contactos svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; flex:none; }
  .rsv-hist { list-style:none; padding:0; margin:0 0 0 6px; border-left:2px solid var(--borde); display:grid; gap:10px; }
  .rsv-hist li { padding-left:14px; position:relative; font-size:13.5px; }
  .rsv-hist li::before { content:""; position:absolute; left:-6px; top:6px; width:10px; height:10px; border-radius:50%; background:var(--naranja); border:2px solid var(--blanco); }
  .rsv-hist b { display:block; font-weight:600; } .rsv-hist span { color:var(--texto-muted); font-size:12.5px; }
  .rsv-sep { margin-top:20px; }
  .rsv-vacio { display:grid; place-items:center; gap:10px; text-align:center; color:var(--texto-suave); padding:46px 18px; }
  .rsv-vacio svg { width:30px; height:30px; stroke:var(--naranja); fill:none; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
  .rsv-eliminar { margin-top:16px; background:none; border:0; color:var(--texto-muted); font:inherit; font-size:12.5px; text-decoration:underline; cursor:pointer; padding:10px 0; min-height:44px; }
  .rsv-eliminar:hover { color:var(--rojo); }
  @media (max-width:980px) {
    .rsv-split { grid-template-columns:1fr; }
    .rsv-ficha { position:fixed; left:0; right:0; bottom:0; top:auto; max-height:88vh; overflow:auto; z-index:9400; border-radius:22px 22px 0 0; transform:translateY(105%); transition:transform .35s cubic-bezier(.16,1,.3,1); }
    .rsv-ficha.on { transform:none; }
  }
  @media (prefers-reduced-motion: reduce) { .rsv-ficha, .rsv-est, .rsv-tab { transition:none; } }
  /* ===== RESERVAS · celular y tablet (2026-10-10): compacto, sin desbordes, hoja inferior con cierre ===== */
  .rsv-cerrar { display:none; position:absolute; top:10px; right:10px; width:44px; height:44px; border-radius:50%; border:1px solid var(--borde); background:var(--blanco); color:var(--texto); place-items:center; cursor:pointer; z-index:2; }
  .rsv-cerrar svg { width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
  .rsv-fcab { position:relative; }
  #tab-reservas .rsv-split > * { min-width:0; }
  @media (max-width:980px) {
    .rsv-cerrar { display:grid; }
    .rsv-ficha { max-height:82vh; padding-bottom:env(safe-area-inset-bottom); box-shadow:0 -16px 40px rgba(0,0,0,.28); }
    .rsv-ficha::before { content:""; display:block; width:42px; height:4px; border-radius:4px; background:var(--borde); margin:8px auto 0; }
    .rsv-fcab { padding:12px 64px 12px 18px; }
    .rsv-fcab h3 { font-size:19px; }
  }
  @media (max-width:640px) {
    #tab-reservas .page-head p { display:none; }
    #tab-reservas .page-head { margin-bottom:8px; }
    #tab-reservas .toolbar { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:8px; }
    #tab-reservas .toolbar > input { grid-column:1 / -1; width:100%; min-width:0; }
    #tab-reservas .toolbar > button { width:100%; min-width:0; min-height:44px; padding:0 10px; white-space:nowrap; }
    .rsv-tabs { flex-wrap:nowrap; overflow-x:auto; gap:4px; padding:4px; margin-bottom:8px; scrollbar-width:none; -webkit-overflow-scrolling:touch; scroll-snap-type:x proximity; }
    .rsv-tabs::-webkit-scrollbar { display:none; }
    .rsv-tab { flex:0 0 auto; min-width:0; min-height:40px; padding:6px 12px; font-size:13px; white-space:nowrap; scroll-snap-align:start; }
    #tab-reservas .rsv-mes { padding:12px; border-radius:16px; }
    .rsv-mes-cab { gap:8px; margin-bottom:8px; flex-wrap:wrap; }
    .rsv-mes-cab h3 { font-size:16px; }
    .rsv-mes-cab .count { font-size:11.5px; order:3; flex-basis:100%; margin:0; }
    .rsv-sem, .rsv-dias { gap:4px; }
    .rsv-d { min-height:48px; padding:4px 2px 7px; border-radius:10px; align-items:center; text-align:center; gap:0; }
    .rsv-d .num { font-size:14px; }
    .rsv-d .ct { font-size:9.5px; line-height:1.1; }
    .rsv-d .barra { height:4px; }
    .rsv-d.hoy .num::after { content:none; }
    .rsv-d.hoy { border-color:var(--naranja); }
    .rsv-leyenda { display:none; }
    .rsv-solo-pc { display:none; }
    .rsv-fcuerpo { padding:12px 16px 18px; }
    .rsv-datos { gap:6px; margin-bottom:12px; }
    .rsv-dato { padding:7px 4px; }
    .rsv-dato b { font-size:14px; }
    .rsv-ag { grid-template-columns:52px minmax(0,1fr) auto; gap:8px; padding:8px 10px; }
    .rsv-ag .e { max-width:96px; }
    .rsv-estados { gap:6px; margin-bottom:12px; }
    .rsv-est { min-height:44px; padding:6px 10px; font-size:13px; }
    .rsv-acciones { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
    .rsv-acc { min-width:0; padding:6px 8px; font-size:12.5px; line-height:1.15; }
    .rsv-flujo span { padding:8px 2px; font-size:12px; }
    .rsv-contactos .btn-outline { flex:1 1 calc(50% - 4px); min-width:0; }
    .rsv-linea { grid-template-columns:78px minmax(0,1fr); }
    .rsv-tiempo .mmss, .rsv-codigo b { font-size:28px; }
  }

  @keyframes waAlertaEntra { from { opacity:0; transform:translateX(24px) scale(.97); } to { opacity:1; transform:none; } }
  @media (prefers-reduced-motion: reduce) { .wa-alerta { animation:none; } }
  @media(max-width:680px) {
    .fc-persistent-topbar span:first-child { display:none; }
  }

  .pos-ops-overlay {
    --fc-naranja: #FF6B35; --fc-naranja-dark: #E55A2B; --fc-naranja-glow: rgba(255,107,53,.28); --fc-naranja-subtle: rgba(255,107,53,.12);
    --fc-verde: #10B981; --fc-verde-subtle: rgba(16,185,129,.14);
    --fc-azul: #3B82F6; --fc-azul-subtle: rgba(59,130,246,.14);
    --fc-rojo: #EF4444; --fc-amarillo: #F59E0B; --fc-amarillo-subtle: rgba(245,158,11,.14);
    --sidebar-w: 260px; --header-h: 66px; --radius-touch: 16px;
    /* top:72px dejado fijo a proposito (nunca medido por JS en produccion) para
       pegar el contenido justo debajo de la barra superior persistente, sin
       hueco — recalibrado tras el cambio de la barra a header "a sangre"
       (position:sticky, sin card/margen); altura real medida en vivo con
       getBoundingClientRect() = 71px (incluye su borde inferior de 1px). Si la
       barra vuelve a cambiar de alto, medir de nuevo y actualizar este numero
       a mano — ver [[project-ryp-menu-anuncio...]], misma regla: el offset del
       topbar SIEMPRE es un numero CSS fijo, nunca medido por JS. */
    /* right:0; bottom:0 A PROPOSITO — pagina completa, pegada al sidebar, igual
       que el resto de modulos (Productos, Categorias, etc.), sin marco/margen
       interno propio. Se probaron dos variantes de "marco" en esta misma sesion
       (14px, y antes un backdrop de pantalla completa) y ambas se reportaron
       como una regresion visual (tapaban la barra superior persistente y
       recortaban el espacio util de los 3 modulos tactiles) — NO reintentar
       un marco/margen aca sin pedido explicito y confirmado del cliente. */
    position:fixed; top:72px; left:var(--sidebar-w); right:0; bottom:0; z-index:9000; display:none; overflow:hidden;
    font-family:'Inter',system-ui,-apple-system,sans-serif; user-select:none;
  }
  .pos-ops-overlay.open { display:flex; }
  /* El detalle de pedido (.modal-overlay, z-index normal 1000) ahora también se
     abre DESDE DENTRO de esta capa (Historial de Pedidos a Domicilio) — sin este
     empujón quedaría tapado detrás del overlay táctil (z-index 9000). */
  #pedidoDetalleOverlay.open,
  #opsModalMoverMesa,
  #opsModalMoverMesa.open,
  #opsModalHistorialDetalle,
  #opsModalHistorialDetalle.open { z-index:9600 !important; }
  /* El sidebar completo de siempre (fuera de esta capa) debe verse SIEMPRE — esta
     capa solo ocupa el area de contenido a la derecha de ese sidebar. Por eso su
     propio sidebar/nav interno (duplicado) queda oculto: la navegacion real ya la
     da el sidebar de siempre. Su propia barra superior tambien queda oculta: la
     barra persistente de arriba (fuera de esta capa) ya cumple esa funcion en
     TODOS los modulos, no solo en estos 3. */
  .pos-ops-overlay .pos-sidebar, .pos-ops-overlay .btn-toggle-sidebar, .pos-ops-overlay .pos-top-bar { display:none; }
  .pos-ops-overlay[data-theme="dark"] {
    --bg-app:#0F0D0C; --bg-surface:#181513; --bg-card:#221D1A; --bg-card-hover:#2C2521; --bg-input:#151210;
    --border:#352C26; --border-subtle:rgba(255,255,255,.08); --text-main:#FFFFFF; --text-muted:#A3968A; --text-dim:#6E6359;
    --shadow-btn:0 3px 6px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.08); --shadow-card:0 4px 14px rgba(0,0,0,.3);
    --receipt-bg:#FDFBFA; --receipt-text:#1A1715;
  }
  .pos-ops-overlay[data-theme="light"] {
    --bg-app:#F5F3EF; --bg-surface:#FFFFFF; --bg-card:#F9F8F6; --bg-card-hover:#EFECE6; --bg-input:#FFFFFF;
    --border:#E0D7CC; --border-subtle:rgba(0,0,0,.06); --text-main:#1C1714; --text-muted:#6E6359; --text-dim:#9E9287;
    --shadow-btn:0 2px 5px rgba(0,0,0,.06), inset 0 1px 0 #FFFFFF; --shadow-card:0 4px 14px rgba(0,0,0,.04);
    --receipt-bg:#FFFFFF; --receipt-text:#111111;
  }
  .pos-ops-overlay { background:var(--bg-app); color:var(--text-main); }
  .pos-ops-overlay * { box-sizing:border-box; }

  .pos-ops-overlay .app-layout-shell { display:flex; height:100%; width:100%; overflow:hidden; }

  .pos-ops-overlay .pos-sidebar { width:var(--sidebar-w); background:var(--bg-surface); border-right:1.5px solid var(--border); display:none; flex-direction:column; height:100%; flex-shrink:0; transition:width .25s ease; z-index:150; }
  .pos-ops-overlay .pos-sidebar.hidden { width:0; overflow:hidden; border-right:none; }
  .pos-ops-overlay .sidebar-header { padding:16px; border-bottom:1px solid var(--border); display:flex; align-items:center; gap:10px; }
  .pos-ops-overlay .sidebar-logo-icon { width:38px; height:38px; border-radius:11px; background:linear-gradient(135deg,var(--fc-naranja),var(--fc-naranja-dark)); display:flex; align-items:center; justify-content:center; box-shadow:0 4px 12px var(--fc-naranja-glow); flex-shrink:0; overflow:hidden; }
  .pos-ops-overlay .sidebar-logo-icon svg { width:20px; height:20px; stroke:#fff; fill:none; stroke-width:2.2; }
  .pos-ops-overlay .sidebar-logo-icon img { width:100%; height:100%; object-fit:cover; }
  .pos-ops-overlay .sidebar-nav-group { flex:1; overflow-y:auto; padding:14px 12px; display:flex; flex-direction:column; gap:8px; scrollbar-width:thin; scrollbar-color:var(--border) transparent; }
  .pos-ops-overlay .sidebar-nav-label { font-size:10px; font-weight:800; color:var(--text-dim); text-transform:uppercase; letter-spacing:.08em; padding:8px 8px 2px; }
  .pos-ops-overlay .sidebar-item-btn {
    height:52px; padding:0 12px 0 10px; border-radius:14px; background:var(--bg-card); border:1px solid var(--border); border-top:1px solid var(--border-subtle);
    color:var(--text-muted); font-family:inherit; font-size:13px; font-weight:700; cursor:pointer; display:flex; align-items:center; gap:10px;
    box-shadow:var(--shadow-btn); transition:all .15s cubic-bezier(.4,0,.2,1); width:100%; text-align:left;
  }
  .pos-ops-overlay .sidebar-item-btn:hover { background:var(--bg-card-hover); color:var(--text-main); border-color:rgba(255,107,53,.35); }
  .pos-ops-overlay .sidebar-item-btn:active { transform:translateY(1.5px); }
  .pos-ops-overlay .sidebar-item-btn .sidebar-icon-box { width:34px; height:34px; border-radius:10px; background:var(--bg-surface); border:1px solid var(--border-subtle); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
  .pos-ops-overlay .sidebar-item-btn svg { width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:2.1; }
  .pos-ops-overlay .sidebar-item-btn.active { background:linear-gradient(135deg,#FF6B35 0%,#E55A2B 100%) !important; border-color:#FF8252 !important; color:#fff !important; font-weight:800 !important; box-shadow:0 6px 18px var(--fc-naranja-glow), inset 0 1px 0 rgba(255,255,255,.35) !important; }
  .pos-ops-overlay .sidebar-item-btn.active .sidebar-icon-box { background:rgba(255,255,255,.22) !important; border-color:rgba(255,255,255,.35) !important; color:#fff !important; }
  .pos-ops-overlay .sidebar-item-btn.active svg { stroke:#fff !important; }
  .pos-ops-overlay .sidebar-item-btn.active .s-badge { background:#fff !important; color:#E55A2B !important; }
  .pos-ops-overlay .sidebar-item-btn .s-badge { margin-left:auto; font-size:11px; font-weight:800; background:var(--fc-naranja); color:#fff; padding:2px 7px; border-radius:99px; }
  .pos-ops-overlay .sidebar-footer { padding:12px 14px; border-top:1px solid var(--border); display:flex; flex-direction:column; gap:8px; }

  .pos-ops-overlay .main-content-flow { flex:1; display:flex; flex-direction:column; height:100%; overflow:hidden; background:var(--bg-app); }
  .pos-ops-overlay .pos-top-bar { height:var(--header-h); background:var(--bg-surface); border-bottom:1.5px solid var(--border); display:none; align-items:center; justify-content:space-between; padding:0 16px; gap:12px; flex-shrink:0; }
  .pos-ops-overlay .top-left-controls { display:flex; align-items:center; gap:12px; }
  .pos-ops-overlay .btn-toggle-sidebar { width:40px; height:40px; border-radius:11px; background:var(--bg-card); border:1.5px solid var(--border); color:var(--text-main); display:none; align-items:center; justify-content:center; cursor:pointer; }
  .pos-ops-overlay .btn-theme-toggle { height:40px; padding:0 12px; border-radius:11px; background:var(--bg-card); border:1.5px solid var(--border); color:var(--text-main); font-size:12.5px; font-weight:700; display:flex; align-items:center; gap:6px; cursor:pointer; }
  .pos-ops-overlay .caja-status-pill { display:flex; align-items:center; gap:6px; font-size:12px; font-weight:700; color:var(--fc-verde); background:var(--fc-verde-subtle); padding:6px 12px; border-radius:99px; border:1px solid rgba(16,185,129,.3); }
  .pos-ops-overlay .caja-status-pill::before { content:''; width:7px; height:7px; border-radius:50%; background:var(--fc-verde); }
  .pos-ops-overlay .btn-quick-touch { height:40px; padding:0 14px; border-radius:11px; background:var(--bg-card); border:1.5px solid var(--border); color:var(--text-main); font-size:12.5px; font-weight:700; display:flex; align-items:center; gap:6px; cursor:pointer; }

  .pos-ops-overlay .main-stage-container { flex:1; position:relative; overflow:hidden; }
  .pos-ops-overlay .module-screen { position:absolute; inset:0; display:none; opacity:0; overflow:hidden; }
  .pos-ops-overlay .module-screen.active { display:flex; opacity:1; }

  .pos-ops-overlay .floorplan-table { background:var(--bg-surface); border:2px solid var(--border); border-radius:18px; padding:16px; display:flex; flex-direction:column; justify-content:space-between; min-height:135px; cursor:pointer; transition:all .15s; box-shadow:var(--shadow-card); }
  .pos-ops-overlay .tbl-number { font-family:'Sora',sans-serif; font-size:19px; font-weight:800; color:var(--text-main); }
  .pos-ops-overlay .split-mini-table {
    background:var(--bg-surface);
    border:2px solid var(--border);
    border-radius:14px;
    padding:11px 13px;
    height:98px;
    min-height:98px;
    max-height:98px;
    box-sizing:border-box;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    cursor:pointer;
    user-select:none;
    transition:transform .12s ease, border-color .15s ease, box-shadow .15s ease;
    overflow:hidden;
  }
  .pos-ops-overlay .split-mini-table:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(0,0,0,0.12);
  }
  .pos-ops-overlay .split-mini-table:active {
    transform: scale(0.98);
  }
  .pos-ops-overlay .split-mini-table.active { outline:3px solid var(--fc-naranja); outline-offset:1px; }
  /* Mesas FIJAS 1..N (nunca desaparecen, solo cambian de color) — 3 estados
     visibles a simple vista, fondo total (no solo borde) para lectura rapida
     desde lejos: Libre = puede sentarse gente ya; Ocupada = hay consumo en
     curso; Lista = cocina ya entrego, requiere atencion inmediata. */
  /* Paleta de 4 colores de mesa (confirmada con el cliente): verde=Libre,
     cafe/ambar oscuro=Ocupada SIN pedido enviado a cocina, naranja=Ocupada
     con pedido en preparacion O Servido (mismo color, distinto texto),
     rojo=Listo (clase .mesa-lista, sin cambios). Aplica SOLO a fichas de
     mesa — el amarillo de "En preparacion" del kanban de domicilios/cocina
     es un esquema aparte y no se toca. */
  .pos-ops-overlay .split-mini-table.mesa-libre { background:rgba(34,197,94,.16); border-color:rgba(34,197,94,.45); }
  .pos-ops-overlay .split-mini-table.mesa-preparando { background:rgba(234,179,8,.22); border-color:rgba(161,98,7,.55); }
  .pos-ops-overlay .split-mini-table.mesa-ocupada { background:rgba(249,115,22,.22); border-color:rgba(234,88,12,.55); }
  .pos-ops-overlay .split-mini-table.mesa-sin-pedido { background:rgba(146,64,14,.35); border-color:rgba(120,53,15,.7); }
  .pos-ops-overlay .split-mini-table.mesa-lista { animation:fcCardPulseRojo 1s ease-in-out infinite; }
  /* Mesa RESERVADA (cronómetro regresivo en marcha): los meseros no la pueden abrir ni asignar; administración la valida, la pausa o la libera. */
  .pos-ops-overlay .split-mini-table.mesa-reservada { background:repeating-linear-gradient(135deg,rgba(124,140,255,.22) 0 10px,rgba(124,140,255,.08) 10px 20px); border-color:rgba(124,140,255,.75); }
  .pos-ops-overlay .rv-prox { display:inline-flex; align-items:center; gap:4px; padding:1px 6px; border-radius:6px; font:700 10px 'IBM Plex Mono',monospace; background:rgba(124,140,255,.2); color:#7C8CFF; white-space:nowrap; }
  .pos-ops-overlay .rv-crono { font:800 12.5px 'IBM Plex Mono',monospace; color:#EF4444; }
  .pos-ops-overlay .rv-crono.pausa { color:#3B82F6; font-size:10.5px; }
  .ops-rv-overlay { position:fixed; inset:0; z-index:10050; display:none; align-items:center; justify-content:center; padding:16px; background:rgba(0,0,0,.6); backdrop-filter:blur(3px); }
  .ops-rv-overlay.on { display:flex; }
  .ops-rv-box { width:100%; max-width:420px; padding:22px; border-radius:22px; background:var(--blanco); border:1px solid var(--borde); box-shadow:var(--shadow-hover); color:var(--texto); display:grid; gap:10px; }
  .ops-rv-box h4 { font:800 19px 'Sora',sans-serif; margin:0; } .ops-rv-box p { margin:0; font-size:13.5px; color:var(--texto-suave); }
  .ops-rv-box .mmss { font:800 36px 'IBM Plex Mono',monospace; color:#EF4444; letter-spacing:.04em; }
  .ops-rv-acc { display:flex; gap:8px; flex-wrap:wrap; }
  .ops-rv-acc button { flex:1; min-width:110px; min-height:46px; border-radius:12px; border:1.5px solid var(--borde); background:var(--card-subtle); color:var(--texto); font:700 13px 'Inter',sans-serif; cursor:pointer; box-shadow:0 3px 0 var(--borde); }
  .ops-rv-acc button:active { transform:translateY(3px); box-shadow:none; }
  .ops-rv-acc .ok { background:#10B981; border-color:#0c8f66; color:#fff; box-shadow:0 3px 0 #0c8f66; } .ops-rv-acc button[disabled] { opacity:.4; cursor:not-allowed; }
  .ops-rv-acc .pausa { border-color:#3B82F6; color:#3B82F6; } .ops-rv-acc .no { border-color:rgba(239,68,68,.55); color:#EF4444; }
  .pos-ops-overlay[data-theme="light"] .split-mini-table.mesa-libre { background:rgba(34,197,94,.5); border-color:rgba(34,197,94,.85); }
  .pos-ops-overlay[data-theme="light"] .split-mini-table.mesa-preparando { background:rgba(234,179,8,.55); border-color:#A16207; }
  .pos-ops-overlay[data-theme="light"] .split-mini-table.mesa-ocupada { background:rgba(249,115,22,.6); border-color:#EA580C; }
  .pos-ops-overlay[data-theme="light"] .split-mini-table.mesa-sin-pedido { background:rgba(146,64,14,.65); border-color:#78350F; color:#fff; }

  .btn-mesa-act, .pos-ops-overlay .btn-mesa-act { height:44px; border-radius:10px; border:none; font-family:'Inter',sans-serif; font-size:12.5px; font-weight:800; cursor:pointer; display:flex; align-items:center; justify-content:center; gap:5px; }
  .btn-mesa-act:disabled, .pos-ops-overlay .btn-mesa-act:disabled { opacity: 0.45; cursor: not-allowed; pointer-events: none; }
  .btn-act-comanda, .pos-ops-overlay .btn-act-comanda { background:var(--bg-card); border:1.5px solid var(--border); color:var(--text-main); }
  .btn-act-cobrar, .pos-ops-overlay .btn-act-cobrar { background:linear-gradient(135deg,var(--fc-verde),#059669); color:#fff; }

  /* Chips de acción operativa en cabecera de mesa (Opción 1 aprobada) */
  .pos-ops-overlay .ops-header-chip {
    height: 30px;
    padding: 0 11px;
    border-radius: 8px;
    font-family: 'Inter', sans-serif;
    font-size: 11.5px;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    border: 1px solid var(--border);
    transition: all 0.15s;
    white-space: nowrap;
  }
  .pos-ops-overlay .ops-header-chip:active { transform: scale(0.97); }
  .pos-ops-overlay .ops-header-chip.chip-verde {
    background: rgba(0, 208, 132, 0.14);
    border-color: rgba(0, 208, 132, 0.45);
    color: #00D084;
  }
  .pos-ops-overlay .ops-header-chip.chip-amarillo {
    background: rgba(245, 166, 35, 0.16);
    border-color: rgba(245, 166, 35, 0.45);
    color: #F5A623;
  }
  .pos-ops-overlay .ops-header-chip.chip-neutral {
    background: var(--bg-card);
    border-color: var(--border);
    color: var(--text-main);
  }
  .pos-ops-overlay[data-theme="light"] .ops-header-chip.chip-verde {
    background: #dcfce7;
    border-color: #16a34a;
    color: #15803d;
  }
  .pos-ops-overlay[data-theme="light"] .ops-header-chip.chip-amarillo {
    background: #fef3c7;
    border-color: #d97706;
    color: #b45309;
  }

  .pos-ops-overlay .delivery-ops-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; padding:16px; width:100%; height:100%; overflow-x:auto; }
  /* Domicilios en el kanban: ubicación, prioridad y cobertura */
  .pos-ops-overlay .dm-chip-loc { font-size:11px; font-weight:700; padding:2px 8px; border-radius:6px; background:var(--bg-surface); border:1px solid var(--border-subtle); color:var(--fc-azul); }
  .pos-ops-overlay .dm-prio { font:800 10.5px 'IBM Plex Mono',monospace; padding:2px 7px; border-radius:6px; letter-spacing:.03em; }
  .pos-ops-overlay .dm-prio.p1 { background:rgba(239,68,68,.16); color:#EF4444; border:1px solid rgba(239,68,68,.4); }
  .pos-ops-overlay .dm-prio.p2 { background:rgba(245,158,11,.16); color:#D97706; border:1px solid rgba(245,158,11,.45); }
  .pos-ops-overlay .dm-prio.p3 { background:rgba(120,120,120,.14); color:#8a8076; border:1px solid rgba(120,120,120,.3); }
  .pos-ops-overlay .dm-orden { font:800 10.5px 'IBM Plex Mono',monospace; padding:2px 7px; border-radius:6px; background:var(--fc-naranja); color:#fff; }
  .pos-ops-overlay .dm-cob { padding:8px 10px; border-radius:10px; background:rgba(245,158,11,.14); border:1px solid rgba(245,158,11,.5); color:#B5770E; font-size:11.5px; line-height:1.35; }
  .pos-ops-overlay .dm-cob-grande { padding:14px 16px; border-radius:14px; background:rgba(245,158,11,.14); border:1.5px solid rgba(245,158,11,.55); color:#B5770E; font-size:13px; line-height:1.5; }
  .pos-ops-overlay .dm-cob-btns { display:grid; grid-template-columns:1fr 1fr; gap:8px; width:100%; }
  .pos-ops-overlay .domi-col-box { background:var(--bg-surface); border:1.5px solid var(--border); border-radius:18px; display:flex; flex-direction:column; height:100%; overflow:hidden; }
  .pos-ops-overlay .domi-col-head { padding:14px 16px; border-bottom:1.5px solid var(--border); display:flex; justify-content:space-between; align-items:center; }
  .pos-ops-overlay .domi-scroll-list { flex:1; overflow-y:auto; padding:12px; display:flex; flex-direction:column; gap:10px; scrollbar-width:thin; scrollbar-color:var(--fc-naranja-subtle) transparent; }
  /* Scroll personalizado embebido en las columnas del kanban, la grilla de
     repartidores y el cuerpo scrolleable de los modales — reemplaza la barra
     generica del navegador por una delgada y del color del tema. */
  .pos-ops-overlay .domi-scroll-list::-webkit-scrollbar,
  .pos-ops-overlay .repartidores-cards-grid::-webkit-scrollbar,
  .pos-ops-overlay .sidebar-nav-group::-webkit-scrollbar,
  .pos-ops-overlay .modal-scroll-body::-webkit-scrollbar,
  .pos-ops-overlay #opsPanelSubCaja::-webkit-scrollbar { width:7px; }
  .pos-ops-overlay .domi-scroll-list::-webkit-scrollbar-track,
  .pos-ops-overlay .repartidores-cards-grid::-webkit-scrollbar-track,
  .pos-ops-overlay .sidebar-nav-group::-webkit-scrollbar-track,
  .pos-ops-overlay .modal-scroll-body::-webkit-scrollbar-track,
  .pos-ops-overlay #opsPanelSubCaja::-webkit-scrollbar-track { background:transparent; }
  .pos-ops-overlay .domi-scroll-list::-webkit-scrollbar-thumb,
  .pos-ops-overlay .repartidores-cards-grid::-webkit-scrollbar-thumb,
  .pos-ops-overlay .sidebar-nav-group::-webkit-scrollbar-thumb,
  .pos-ops-overlay .modal-scroll-body::-webkit-scrollbar-thumb,
  .pos-ops-overlay #opsPanelSubCaja::-webkit-scrollbar-thumb { background:var(--border); border-radius:99px; }
  .pos-ops-overlay .domi-scroll-list::-webkit-scrollbar-thumb:hover,
  .pos-ops-overlay .repartidores-cards-grid::-webkit-scrollbar-thumb:hover,
  .pos-ops-overlay .sidebar-nav-group::-webkit-scrollbar-thumb:hover,
  .pos-ops-overlay .modal-scroll-body::-webkit-scrollbar-thumb:hover,
  .pos-ops-overlay #opsPanelSubCaja::-webkit-scrollbar-thumb:hover { background:var(--fc-naranja); }
  .pos-ops-overlay .pill-counter { font-size:10.5px; font-weight:800; background:rgba(0,0,0,.25); padding:2px 6px; border-radius:99px; color:var(--text-main); }

  .pos-ops-overlay .domi-touch-card { background:var(--bg-card); border:1.5px solid var(--border); border-radius:14px; padding:12px; display:flex; flex-direction:column; gap:8px; cursor:pointer; transition:all .15s; box-shadow:var(--shadow-card); }
  .pos-ops-overlay .domi-touch-card:hover { transform:translateY(-2px); border-color:var(--fc-naranja); }
  /* ===== Pedidos a domicilio: tarjetas compactas (2026-10-10). Visible: número, cliente, dirección y total; lo demás se despliega ===== */
  .pos-ops-overlay .domi-touch-card { padding:9px 11px; gap:3px; }
  .pos-ops-overlay .domi-touch-card .dc-cab { display:flex; align-items:center; gap:8px; min-width:0; }
  .pos-ops-overlay .domi-touch-card .dc-cod { font-size:13px; padding:2px 9px; cursor:pointer; flex:0 1 auto; min-height:28px; }
  .pos-ops-overlay .domi-touch-card .dc-total { margin-left:auto; font-family:'IBM Plex Mono',monospace; font-size:14px; color:var(--fc-verde); white-space:nowrap; }
  .pos-ops-overlay .domi-touch-card .dc-chev { flex:none; width:32px; height:32px; border-radius:9px; border:1px solid var(--border); background:var(--bg-surface); color:var(--text-muted); display:grid; place-items:center; cursor:pointer; padding:0; }
  .pos-ops-overlay .domi-touch-card .dc-chev svg { width:16px; height:16px; transition:transform .2s; }
  .pos-ops-overlay .domi-touch-card.abierta .dc-chev svg { transform:rotate(180deg); }
  .pos-ops-overlay .domi-touch-card .dc-cli { font-weight:800; font-size:14.5px; line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .pos-ops-overlay .domi-touch-card .dc-dir { display:flex; align-items:center; gap:5px; font-size:11.5px; color:var(--text-muted); min-width:0; }
  .pos-ops-overlay .domi-touch-card .dc-dir span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
  .pos-ops-overlay .domi-touch-card .dc-dir svg { flex:none; }
  .pos-ops-overlay .domi-touch-card .dc-ruta { display:flex; align-items:center; gap:8px; margin-top:5px; padding:7px 10px; border-radius:10px; background:rgba(16,185,129,.16); border:1.5px solid rgba(16,185,129,.55); color:#047857; font-size:13px; font-weight:700; line-height:1.2; }
  .pos-ops-overlay .domi-touch-card .dc-ruta svg { flex:none; width:20px; height:20px; }
  .pos-ops-overlay .domi-touch-card .dc-ruta b { font-weight:800; letter-spacing:.03em; }
  .pos-ops-overlay .domi-touch-card .dc-ruta.sin { background:rgba(245,158,11,.18); border-color:rgba(245,158,11,.7); color:#92600a; animation:fcDebeSuave 2.2s ease-in-out infinite; }
  .pos-ops-overlay .domi-touch-card .dc-mas { display:flex; flex-direction:column; gap:6px; margin-top:6px; padding-top:8px; border-top:1px dashed var(--border); }
  .pos-ops-overlay .domi-touch-card .dc-mas[hidden] { display:none; }
  .pos-ops-overlay .domi-touch-card .dc-detalle { min-height:36px; border-radius:9px; border:1px solid var(--border); background:var(--bg-surface); color:var(--text-main); font:700 12px 'Inter',sans-serif; cursor:pointer; }
  /* Ventana de detalle del pedido: más baja, con lo esencial a la vista */
  #opsModalDomiDetalle .touch-modal-window { max-height:86vh; }
  #opsModalDomiDetalle .modal-header-touch { padding:12px 54px 10px 16px; }
  #opsModalDomiDetalle .modal-header-touch h3 { font-size:17px; }
  #opsModalDomiDetalle .modal-scroll-body { padding:10px 14px; gap:8px; }
  #opsModalDomiDetalle .modal-scroll-body > div { padding:12px !important; border-radius:12px !important; gap:6px !important; }
  #opsModalDomiDetalle #opsDomiModalItemsList { margin-top:6px !important; gap:5px !important; }
  #opsModalDomiDetalle .modal-footer-touch { padding:10px 14px !important; gap:8px; flex-wrap:wrap; }
  #opsModalDomiDetalle .modal-footer-touch .btn-mesa-act, #opsModalDomiDetalle .modal-footer-touch .domi-act { height:42px !important; min-height:42px !important; font-size:12.5px; }

  .pos-ops-overlay .domi-card-nuevo { background:rgba(59,130,246,.16); border-color:rgba(59,130,246,.4); }
  .pos-ops-overlay .domi-card-cocina { background:rgba(245,158,11,.18); border-color:rgba(245,158,11,.45); }
  .pos-ops-overlay .domi-card-listo { background:rgba(16,185,129,.16); border-color:rgba(16,185,129,.4); }
  /* La misma opacidad se ve "fondo completo" en oscuro (contraste contra un
     fondo casi negro) pero queda apenas visible en claro (mismo % de color
     sobre un fondo casi blanco). En claro hace falta mucha mas saturacion
     para que se lea igual de "verde/amarillo total". */
  .pos-ops-overlay[data-theme="light"] .domi-card-nuevo { background:rgba(59,130,246,.5); border-color:rgba(59,130,246,.8); }
  .pos-ops-overlay[data-theme="light"] .domi-card-cocina { background:rgba(245,158,11,.55); border-color:rgba(245,158,11,.85); }
  .pos-ops-overlay[data-theme="light"] .domi-card-listo { background:rgba(16,185,129,.5); border-color:rgba(16,185,129,.8); }
  /* "Listo" recien salido de cocina, esperando asignar domiciliario (o mesero
     que lo recoja): parpadeo verde los primeros 5 minutos, parpadeo rojo pasado
     ese tiempo — riesgo de que se enfrie. */
  @keyframes fcPulseVerde { 0%,100% { box-shadow:0 0 0 0 rgba(16,185,129,.55); } 50% { box-shadow:0 0 0 7px rgba(16,185,129,0); } }
  @keyframes fcPulseRojo  { 0%,100% { box-shadow:0 0 0 0 rgba(239,68,68,.6); }  50% { box-shadow:0 0 0 8px rgba(239,68,68,0); } }
  .pos-ops-overlay .fc-listo-verde { animation:fcPulseVerde 1.6s ease-in-out infinite; }
  .pos-ops-overlay .fc-listo-rojo { animation:fcPulseRojo 1.1s ease-in-out infinite; background:rgba(239,68,68,.16) !important; border-color:rgba(239,68,68,.5) !important; }
  .pos-ops-overlay .fc-turno-badge { font-size:10.5px; font-weight:800; color:var(--text-muted); background:var(--bg-card); border:1px solid var(--border-subtle); padding:1px 6px; border-radius:6px; }
  .pos-ops-overlay .fc-cronometro { font-size:11px; font-weight:800; }
  .pos-ops-overlay .fc-cronometro.fc-crono-ok { color:var(--fc-verde); }
  .pos-ops-overlay .fc-cronometro.fc-crono-tarde { color:var(--fc-rojo); }
  /* Contador en vivo grande — mismo tamano que el nombre del cliente (15.5px),
     verde mientras no es urgente, rojo CON RESPLANDOR pasados los 5 minutos
     (data-fc-urgente="300" en el span, el ticker decide el color cada segundo). */
  .pos-ops-overlay .fc-crono-live { font-size:15.5px; font-weight:800; font-family:inherit; }
  .pos-ops-overlay .fc-crono-live.fc-crono-verde { color:var(--fc-verde); }
  .pos-ops-overlay .fc-crono-live.fc-crono-rojo { color:#FF5252; animation:fcTextoResplandor 1.1s ease-in-out infinite; }
  @keyframes fcTextoResplandor {
    0%,100% { text-shadow:0 0 6px rgba(255,82,82,.7), 0 0 2px rgba(255,82,82,.9); }
    50% { text-shadow:0 0 16px rgba(255,82,82,1), 0 0 6px rgba(255,82,82,1); }
  }
  /* La MISMA ficha de la mesa (en el mapa de mesas de siempre) se enciende en
     verde total cuando cocina ya dejo listo su pedido — sin agregar una seccion
     aparte que sature la pantalla. Se apaga sola cuando el mesero la marca como
     servida (boton "Marcar como servido" en el panel de la derecha). */
  @keyframes fcCardPulseVerde { 0%,100% { background:rgba(16,185,129,.28); border-color:rgba(16,185,129,.7); } 50% { background:rgba(16,185,129,.62); border-color:var(--fc-verde); } }
  @keyframes fcCardPulseRojo  { 0%,100% { background:rgba(239,68,68,.3); border-color:rgba(239,68,68,.7); }  50% { background:rgba(239,68,68,.65); border-color:var(--fc-rojo); } }
  .pos-ops-overlay .domi-card-ruta { border-color:rgba(59,130,246,.4); }
  .pos-ops-overlay .domi-card-entregado { border:1.5px solid var(--fc-verde) !important; border-left:4px solid var(--fc-verde) !important; background:rgba(30,156,104,0.08) !important; opacity:1 !important; }
  .pos-ops-overlay .domi-card-cancelado { border:1.5px solid var(--fc-rojo) !important; border-left:4px solid var(--fc-rojo) !important; background:rgba(220,55,44,0.08) !important; opacity:0.88 !important; }

  .pos-ops-overlay .repartidores-ops-layout { display:grid; grid-template-columns:1fr 380px; width:100%; height:100%; min-height:0; padding:16px; gap:16px; overflow:hidden; }
  .pos-ops-overlay .repartidores-cards-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:14px; overflow-y:auto; min-height:0; align-content:start; scrollbar-width:thin; scrollbar-color:var(--border) transparent; }
  /* opsRiderDetailBox: panel con "Pedidos asignados en ruta" y "Cuentas
     pendientes de rendir" — sin min-height:0 como items del grid de arriba,
     el scroll interno (overflow-y:auto ya puesto inline en el HTML) no
     activaba y todo el contenido se veia empujado/apilado sin limite. */
  .pos-ops-overlay #opsRiderDetailBox { min-height: 0; }
  .pos-ops-overlay .rider-touch-card { background:var(--bg-surface); border:2px solid var(--border); border-radius:18px; padding:16px; display:flex; flex-direction:column; justify-content:space-between; gap:14px; cursor:pointer; transition:all .15s; }
  /* Fondo total (no solo borde) para distinguir de un vistazo quien tiene
     pedido asignado (activo, en ruta) de quien esta disponible sin nada —
     mismo patron de fondo plano ya aprobado para las fichas de pedidos. */
  .pos-ops-overlay .rider-touch-card.rider-activo { background:rgba(16,185,129,.5); border-color:#10B981; }
  .pos-ops-overlay .rider-touch-card.rider-libre { background:#1C1815; border-color:#2E2822; color:#B8AFA5; }
  .pos-ops-overlay[data-theme="light"] .rider-touch-card.rider-activo { background:rgba(16,185,129,.72); border-color:#0E9E71; }
  .pos-ops-overlay[data-theme="light"] .rider-touch-card.rider-libre { background:var(--bg-card); border-color:var(--border); color:var(--text-main); }
  .pos-ops-overlay .rider-touch-card.selected { outline:3px solid var(--fc-azul); outline-offset:1px; }
  /* Domiciliario que entregó pedidos y aún no rinde el dinero: rojo suave (gana sobre verde/neutro). */
  @keyframes fcDebeSuave { 0%,100% { background-color:rgba(239,68,68,.12); } 50% { background-color:rgba(239,68,68,.24); } }
  .pos-ops-overlay .rider-touch-card.rider-debe,
  .pos-ops-overlay[data-theme="light"] .rider-touch-card.rider-debe { background:rgba(239,68,68,.16); border-color:rgba(239,68,68,.65); color:var(--text-main); animation:fcDebeSuave 2.6s ease-in-out infinite; }
  .pos-ops-overlay .rider-touch-card.rider-debe .rider-debe-tag { display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:800; color:#B91C1C; background:rgba(239,68,68,.14); border:1px solid rgba(239,68,68,.4); padding:2px 8px; border-radius:99px; margin-top:4px; }
  .pos-ops-overlay .rider-cuenta-debe { background:rgba(239,68,68,.12) !important; border-color:rgba(239,68,68,.55) !important; animation:fcDebeSuave 2.6s ease-in-out infinite; }
  .pos-ops-overlay .caja-rider-row.rider-debe-fila { background:rgba(239,68,68,.1) !important; border-color:rgba(239,68,68,.55) !important; }
  .pos-ops-overlay #opsCajaDetalleLista .cd-order-card { background:rgba(239,68,68,.08); border-color:rgba(239,68,68,.45); }
  .pos-ops-overlay .s-badge.s-badge-debe { background:#DC2626; color:#fff; }
  .nav-count.nav-count-deben { background:#DC2626; color:#fff; }
  .pos-ops-overlay .sidebar-item-btn.active .s-badge.s-badge-debe { background:#fff !important; color:#DC2626 !important; }
  @media (prefers-reduced-motion: reduce) { .pos-ops-overlay .rider-touch-card.rider-debe, .pos-ops-overlay .rider-cuenta-debe { animation:none; } }
  /* Las tres pestañas del módulo Domiciliarios y el botón de nuevo domiciliario comparten alto, ancho mínimo y estilo. */
  .pos-ops-overlay #module-domiciliarios .var-pill-btn { height:40px; min-width:150px; padding:0 18px; border-radius:11px; border-width:1.5px; font-size:12.5px; display:inline-flex; align-items:center; justify-content:center; gap:6px; }
  .pos-ops-overlay .rider-two-action-buttons { display:grid; grid-template-columns:1.1fr 1.2fr; gap:10px; }
  .pos-ops-overlay .btn-rider-action { height:46px; border-radius:11px; border:none; font-family:'Inter',sans-serif; font-size:12.5px; font-weight:800; cursor:pointer; display:flex; align-items:center; justify-content:center; gap:6px; }
  .pos-ops-overlay .btn-action-assign { background:var(--bg-card); border:1.5px solid var(--border); color:var(--text-main); }
  /* Antes verde solido — quedaba "verde sobre verde" sin logica dentro de la
     tarjeta .rider-activo (tambien verde, es el color de "en ruta"). Recibir
     dinero es una accion distinta al estado del repartidor, asi que usa el
     mismo dorado fuerte que ya representa "accion/dinero" en otras pantallas
     de este overlay (ver opsPedidoListoManualBtn) — se distingue de un vistazo
     tanto sobre tarjeta verde activa como sobre tarjeta neutra. */
  .pos-ops-overlay .btn-action-liquidate { background:var(--fc-amarillo); color:#1A1100; }
  /* El botón nunca se encoge (antes quedaba aplastado dentro del panel con scroll) y queda fijo al fondo. */
  /* El botón queda FIJO abajo; solo se desplaza la lista de cuentas (la ventana con el contenido), nunca pasa por debajo del botón. */
  .pos-ops-overlay #opsRiderDetailBox { overflow:hidden !important; display:flex; flex-direction:column; justify-content:flex-start; }
  .pos-ops-overlay #opsRiderDetailBox > div:first-child { flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; padding-right:6px; scrollbar-width:thin; }
  .pos-ops-overlay #opsRiderDetailBox > .ops-btn-liquidar-rider { flex:0 0 auto; min-height:46px; height:46px; position:static; margin-top:12px; }
  .pos-ops-overlay .ops-btn-liquidar-rider {
    width: 100%;
    height: 44px;
    border-radius: 12px;
    border: none;
    font-family: 'Sora', sans-serif;
    font-size: 13px;
    font-weight: 800;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 12px;
    transition: all .18s ease;
    letter-spacing: .01em;
  }
  .pos-ops-overlay .ops-btn-liquidar-rider:not(:disabled) {
    background: linear-gradient(135deg, #10B981, #059669);
    color: #FFFFFF;
    box-shadow: 0 10px 24px -8px rgba(16, 185, 129, .5);
  }
  .pos-ops-overlay .ops-btn-liquidar-rider:not(:disabled):hover {
    filter: brightness(1.08);
    transform: translateY(-1px);
    box-shadow: 0 14px 28px -8px rgba(16, 185, 129, .6);
  }
  .pos-ops-overlay .ops-btn-liquidar-rider:disabled {
    background: var(--bg-card);
    border: 1.5px solid var(--border);
    color: var(--text-dim);
    cursor: not-allowed;
    opacity: .65;
    box-shadow: none;
  }

  .pos-ops-overlay .var-pill-btn { background:var(--bg-card); border:1px solid var(--border); color:var(--text-muted); font-size:12px; font-weight:700; padding:6px 12px; border-radius:10px; cursor:pointer; white-space:nowrap; transition:all .2s ease; }
  .pos-ops-overlay .var-pill-btn.active { background:var(--fc-naranja-subtle); color:var(--fc-naranja); border-color:var(--fc-naranja); font-weight:800; }
  .pos-ops-overlay .var-pill-btn.has-solicitud { border-color:#f59e0b !important; color:#d97706 !important; background:rgba(245,158,11,0.1) !important; font-weight:800 !important; }

  @keyframes opsFacTitila {
    0%, 100% { opacity: 1; }
    50% { opacity: .3; }
  }
  /* Solicitud de factura electrónica pendiente: pestaña roja que titila hasta que se genere la factura */
  .pos-ops-overlay .var-pill-btn.ops-fac-pendiente,
  .pos-ops-overlay .var-pill-btn.ops-fac-pendiente.active {
    background: #dc2626 !important;
    color: #ffffff !important;
    border-color: #b91c1c !important;
    font-weight: 800 !important;
    animation: opsFacTitila 1s ease-in-out infinite;
  }
  .ops-fac-item > summary.ops-fac-resumen {
    display: flex; align-items: center; justify-content: space-between; gap: 10px; cursor: pointer;
    padding: 12px 16px; list-style: none; min-height: 48px; user-select: none;
  }
  .ops-fac-item > summary.ops-fac-resumen::-webkit-details-marker { display: none; }
  .ops-fac-flecha { color: var(--text-muted); transition: transform .18s ease; flex-shrink: 0; }
  .ops-fac-item[open] > summary .ops-fac-flecha { transform: rotate(180deg); }
  .ops-fac-contador {
    display: inline-flex; align-items: center; margin-left: 8px; padding: 1px 9px;
    border-radius: 999px; background: #ffffff; color: #b91c1c; font-size: 11.5px; font-weight: 800;
  }
  .ops-fac-nav-badge {
    display: none; min-width: 18px; height: 18px; padding: 0 6px; margin-left: 6px; border-radius: 999px;
    background: #dc2626; color: #ffffff; font-size: 11px; font-weight: 800;
    align-items: center; justify-content: center; animation: opsFacTitila 1s ease-in-out infinite;
  }
  @media (prefers-reduced-motion: reduce) {
    .pos-ops-overlay .var-pill-btn.ops-fac-pendiente, .ops-fac-nav-badge { animation: none; }
  }
  @keyframes fcPulseAlert {
    0% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7); transform: scale(1); }
    50% { box-shadow: 0 0 0 8px rgba(239, 68, 68, 0); transform: scale(1.04); }
    100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); transform: scale(1); }
  }
  .blinking-caja-alert {
    animation: fcPulseAlert 1.4s infinite;
    background: #ef4444 !important;
    color: #ffffff !important;
    font-weight: 800 !important;
    border-color: #dc2626 !important;
    align-items: center;
    gap: 4px;
    letter-spacing: .02em;
  }
  .sidebar-badge-alert-pulse {
    animation: fcPulseAlert 1.4s infinite;
    background: #ef4444 !important;
    color: #ffffff !important;
    font-weight: 800 !important;
  }

  @keyframes fcLatentPulseYellow {
    0% {
      box-shadow: 0 0 0 0 rgba(234, 179, 8, 0.4), inset 0 0 0 1px rgba(234, 179, 8, 0.35);
      border-color: rgba(234, 179, 8, 0.55);
    }
    50% {
      box-shadow: 0 0 0 6px rgba(234, 179, 8, 0.12), inset 0 0 0 1px rgba(234, 179, 8, 0.65);
      border-color: rgba(234, 179, 8, 0.9);
    }
    100% {
      box-shadow: 0 0 0 0 rgba(234, 179, 8, 0.4), inset 0 0 0 1px rgba(234, 179, 8, 0.35);
      border-color: rgba(234, 179, 8, 0.55);
    }
  }
  .cuenta-solicitada-latente {
    background: rgba(234, 179, 8, 0.06) !important;
    border: 1.5px solid rgba(234, 179, 8, 0.65) !important;
    animation: fcLatentPulseYellow 2.2s infinite ease-in-out !important;
  }

  /* MODAL DETALLE DE CAJA DE REPARTIDOR (ACORDEÓN Y CONTENCIÓN DE TABLA) */
  #opsModalCajaDetalle .touch-modal-window {
    max-width: 960px !important;
    width: 95vw !important;
    max-height: 90vh !important;
  }
  .cd-order-card {
    background: var(--bg-card);
    border: 1.5px solid var(--border);
    border-radius: 12px;
    overflow: hidden;
    transition: border-color .15s ease, box-shadow .15s ease;
  }
  .cd-order-card.tiene-solicitud {
    border-color: #f59e0b !important;
  }
  .cd-order-header {
    padding: 10px 14px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    cursor: pointer;
    user-select: none;
    background: var(--bg-card);
    transition: background .15s;
  }
  .cd-order-header:hover {
    background: rgba(255, 107, 53, 0.03);
  }
  .cd-order-main {
    min-width: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
  }
  .cd-order-topline {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
  }
  .cd-order-code {
    font-family: 'IBM Plex Mono', monospace;
    font-weight: 800;
    font-size: 13.5px;
    color: var(--fc-azul, #2563eb);
  }
  .cd-order-client-line {
    font-size: 12.5px;
    color: var(--text-main);
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .cd-order-right {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
  }
  .cd-order-total {
    font-family: 'IBM Plex Mono', monospace;
    font-weight: 800;
    font-size: 16px;
    text-align: right;
  }
  .cd-order-toggle-btn {
    width: 30px;
    height: 30px;
    border-radius: 8px;
    border: 1.5px solid var(--border);
    background: var(--bg-surface);
    color: var(--text-muted);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: transform .2s ease, background .15s, border-color .15s;
    padding: 0;
  }
  .cd-order-toggle-btn:hover {
    border-color: var(--naranja);
    color: var(--naranja);
  }
  .cd-order-toggle-btn.rotated svg {
    transform: rotate(180deg);
  }
  .cd-order-body {
    border-top: 1px solid var(--border-subtle);
    padding: 12px 14px;
    background: var(--bg-surface);
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  .cd-order-body.collapsed {
    display: none !important;
  }
  /* Estilos específicos para la tabla de productos dentro de este modal (anula table { min-width: 600px }) */
  #opsModalCajaDetalle table.cd-items-table {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    font-size: 12px !important;
    margin: 0 !important;
  }
  #opsModalCajaDetalle table.cd-items-table th,
  #opsModalCajaDetalle table.cd-items-table td {
    padding: 5px 6px !important;
    border-bottom: 1px solid var(--border-subtle) !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    vertical-align: middle !important;
  }
  #opsModalCajaDetalle table.cd-items-table th {
    background: transparent !important;
    color: var(--text-muted) !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: .04em !important;
  }
  #opsModalCajaDetalle table.cd-items-table td {
    color: var(--text-main) !important;
    font-size: 12px !important;
  }

  .pos-ops-overlay .touch-modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,.7); backdrop-filter:blur(6px); z-index:9500; display:none; align-items:center; justify-content:center; padding:16px; }
  .pos-ops-overlay .touch-modal-overlay.open { display:flex; }
  .pos-ops-overlay .touch-modal-window { background:var(--bg-surface); border:1.5px solid var(--border); border-radius:22px; width:100%; max-width:680px; max-height:90vh; max-height:90dvh; display:flex; flex-direction:column; position:relative; box-shadow:0 20px 50px rgba(0,0,0,.5); overflow:hidden; color:var(--text-main); }
  .pos-ops-overlay .btn-close-modal-fixed { position:absolute; top:16px; right:16px; width:38px; height:38px; border-radius:50%; background:var(--bg-card); border:1.5px solid var(--border); color:var(--text-main); font-size:18px; font-weight:800; cursor:pointer; display:flex; align-items:center; justify-content:center; z-index:100; }
  .pos-ops-overlay .modal-header-touch { padding:18px 22px 14px; border-bottom:1.5px solid var(--border); background:var(--bg-card); }
  .pos-ops-overlay .modal-header-touch h3 { font-family:'Sora',sans-serif; }
  .pos-ops-overlay .modal-header-touch p { font-size:12.5px; color:var(--text-muted); margin-top:4px; }
  .pos-ops-overlay .modal-scroll-body { flex:1; overflow-y:auto; padding:18px 22px; display:flex; flex-direction:column; gap:14px; scrollbar-width:thin; scrollbar-color:var(--border) transparent; }
  .pos-ops-overlay .modal-footer-touch { padding:14px 22px; background:var(--bg-card); border-top:1.5px solid var(--border); display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
  .pos-ops-overlay .thermal-receipt-box { background:var(--receipt-bg); color:var(--receipt-text); font-family:'IBM Plex Mono',monospace; font-size:12px; padding:18px; border-radius:12px; border:2px dashed var(--border); white-space:pre-wrap; line-height:1.4; }
  .pos-ops-overlay .empty-hint { color:var(--text-dim); font-size:12.5px; }
  .pos-ops-overlay select, .pos-ops-overlay input { font-family:inherit; }

  /* ==========================================================================
     SISTEMA DE CAJA POS TÁCTIL EN COBRO DE MESAS (VUELTAS, BILLETES Y TECLADO)
     ========================================================================== */
  /* ==========================================================================
     SISTEMA DE CAJA POS TÁCTIL EN COBRO DE MESAS (VUELTAS, BILLETES Y TECLADO)
     OPCIÓN 1: SCROLL FINO FLOTANTE DE 4PX, CENTRO 100% FIJO SIN SCROLL
     ========================================================================== */
  #opsModalCobrar, #opsModalCobrar * {
    scrollbar-width: thin;
    scrollbar-color: rgba(255, 107, 53, 0.45) transparent;
  }
  #opsModalCobrar *::-webkit-scrollbar {
    width: 4px;
    height: 4px;
  }
  #opsModalCobrar *::-webkit-scrollbar-track {
    background: transparent;
  }
  #opsModalCobrar *::-webkit-scrollbar-thumb {
    background: rgba(255, 107, 53, 0.45);
    border-radius: 99px;
  }
  #opsModalCobrar *::-webkit-scrollbar-thumb:hover {
    background: var(--fc-naranja, #FF6B35);
  }

  .pos-ops-overlay #opsModalCobrar {
    padding: clamp(4px, 1vh, 12px);
  }
  .pos-ops-overlay #opsModalCobrar .touch-modal-window,
  .pos-ops-overlay #opsModalVueltasRecibo .touch-modal-window,
  #opsModalVueltasRecibo .touch-modal-window {
    max-width: 1440px;
    width: 98vw;
    height: 95vh;
    height: 95dvh;
    max-height: calc(100vh - 12px);
    border-radius: 24px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: 0 25px 60px rgba(0, 0, 0, 0.85);
    background: #140F0D;
    border: 2px solid #3D2D23;
  }
  .pos-ops-overlay #opsModalCobrar .modal-header-touch {
    padding: clamp(8px, 1vh, 12px) clamp(14px, 1.5vw, 20px);
    flex-shrink: 0;
    background: #18120F;
    border-bottom: 1px solid #2C2019;
  }
  .pos-ops-overlay #opsModalCobrar .modal-header-touch h3 {
    font-size: clamp(15px, 2vh, 19px);
    font-weight: 900;
  }
  .pos-ops-overlay #opsModalCobrar .modal-header-touch p {
    font-size: clamp(10.5px, 1.2vh, 12.5px);
  }
  .ops-cobro-layout {
    flex: 1;
    display: grid;
    grid-template-columns: minmax(360px, 40%) 1fr;
    gap: 14px;
    padding: 12px 16px;
    min-height: 0;
    overflow: hidden;
    height: 100%;
    background: #100C0A;
  }
  .ops-cobro-col-consumo {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    overflow: hidden;
    gap: 10px;
    height: 100%;
    min-height: 0;
    background: transparent;
    padding: 0;
    border: none;
  }
  /* COLUMNA DERECHA (60%): GAVETA DE CAJA POS TÁCTIL (BILLETES 3X2 + MONEDAS + BOTONES COBRO) */
  .ops-cobro-col-caja {
    background: #100C0A;
    border: 2px solid #2D211A;
    border-radius: 20px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 8px;
    overflow: hidden;
    height: 100%;
    min-height: 0;
    position: relative;
  }
  @media(max-width: 1024px) {
    .ops-cobro-layout {
      grid-template-columns: minmax(320px, 38%) 1fr;
      gap: 10px;
      padding: 10px;
    }
  }
  @media(max-width: 768px) {
    .ops-cobro-layout {
      grid-template-columns: 1fr;
      overflow-y: auto;
    }
    .ops-cobro-col-consumo {
      height: auto;
      overflow: visible;
      border-bottom: 1.5px solid #2B1F19;
      padding-bottom: 12px;
    }
    .ops-cobro-col-caja {
      height: auto;
      overflow: visible;
    }
  }

  /* Billetes Gigantes Full Bleed (Ocupan el 100% del contorno sin bordes negros ni textos duplicados) */
  .bill-full-bleed {
    position: relative;
    overflow: hidden;
    border-radius: 16px;
    cursor: pointer;
    user-select: none;
    transition: all 0.12s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 14px rgba(0,0,0,0.5);
    background: #000000;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .bill-full-bleed img {
    width: 100%;
    height: 100%;
    object-fit: fill;
    display: block;
    transition: transform 0.15s ease;
  }
  .bill-full-bleed:hover {
    transform: translateY(-2px) scale(1.02);
    filter: brightness(1.1);
    box-shadow: 0 10px 25px rgba(0,0,0,0.7);
  }
  .bill-full-bleed:hover img {
    transform: scale(1.03);
  }
  .bill-full-bleed:active {
    transform: scale(0.96) translateY(2px);
  }
  .bill-pill-tag {
    position: absolute;
    bottom: 8px;
    left: 8px;
    background: rgba(0, 0, 0, 0.88);
    backdrop-filter: blur(8px);
    padding: 3px 10px;
    border-radius: 10px;
    font-family: 'IBM Plex Mono', monospace;
    font-weight: 900;
    font-size: 13px;
    letter-spacing: -0.02em;
    box-shadow: 0 2px 8px rgba(0,0,0,0.8);
    border: 1px solid rgba(255,255,255,0.25);
  }
  .bill-badge-counter {
    position: absolute;
    top: 8px;
    right: 8px;
    padding: 2px 8px;
    border-radius: 9999px;
    font-family: 'IBM Plex Mono', monospace;
    font-weight: 900;
    font-size: 11px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.6);
    z-index: 10;
  }
  .bill-badge-counter.hidden {
    display: none !important;
  }

  /* Monedas Grandes y Nítidas */
  .coin-card-lg {
    transition: all 0.12s cubic-bezier(0.4, 0, 0.2, 1);
    cursor: pointer;
    user-select: none;
  }
  .coin-card-lg:hover {
    transform: translateY(-3px) scale(1.05);
    filter: brightness(1.15);
    box-shadow: 0 10px 25px rgba(0,0,0,0.6);
  }
  .coin-card-lg:active {
    transform: scale(0.92) translateY(2px);
  }

  /* Selector de Métodos de Pago POS */
  #opsCobrarMetodoWrap .var-pill-btn {
    background: linear-gradient(180deg, #241E1B 0%, #1A1614 100%);
    border: 1.5px solid #3A302A;
    border-radius: 10px;
    color: #A3968A;
    padding: clamp(5px, 0.8vh, 7px) 4px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    font-size: clamp(10px, 1.3vh, 11.5px);
    font-weight: 800;
    box-shadow: 0 2px 4px rgba(0,0,0,0.25), inset 0 1px 0 rgba(255,255,255,0.05);
    transition: all 0.15s ease;
  }
  #opsCobrarMetodoWrap .var-pill-btn:hover {
    border-color: #5A4C42;
    color: #FFFFFF;
  }
  #opsCobrarMetodoWrap .var-pill-btn.active {
    background: linear-gradient(135deg, rgba(255,107,53,0.22) 0%, rgba(229,90,43,0.32) 100%) !important;
    border-color: var(--fc-naranja, #FF6B35) !important;
    color: #FFFFFF !important;
    box-shadow: 0 3px 10px rgba(255,107,53,0.3), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  }
  #opsCobrarMetodoWrap .var-pill-btn.active svg {
    color: var(--fc-naranja, #FF6B35);
  }

  /* Display de Caja Digital Estilo OLED con tipografía grande */
  .ops-caja-display-board {
    background: linear-gradient(180deg, #0A0807 0%, #030302 100%);
    border: 1.5px solid #382E28;
    border-radius: 12px;
    padding: clamp(7px, 1.1vh, 10px) clamp(10px, 1.2vw, 16px);
    display: grid;
    grid-template-columns: 1.1fr 1fr;
    gap: 10px;
    box-shadow: inset 0 2px 14px rgba(0,0,0,0.9), 0 2px 4px rgba(0,0,0,0.3);
    flex-shrink: 0;
    position: relative;
  }
  .ops-caja-display-board::after {
    content: '';
    position: absolute;
    top: 0; left: 10%; right: 10%; height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
  }
  .ops-disp-item { display: flex; flex-direction: column; justify-content: center; }
  .ops-disp-tag {
    font-size: clamp(8.5px, 1.05vh, 10px);
    font-weight: 800;
    color: #8C7E73;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 2px;
  }
  .ops-disp-val {
    font-family: 'IBM Plex Mono', monospace;
    font-size: clamp(20px, 2.7vh, 26px);
    font-weight: 900;
    color: #FFFFFF;
    line-height: 1.1;
    letter-spacing: -0.02em;
    text-shadow: 0 0 10px rgba(255,255,255,0.2);
  }
  .ops-disp-val.vueltas-ok {
    color: #00E676;
    text-shadow: 0 0 14px rgba(0, 230, 118, 0.5);
  }
  .ops-disp-val.vueltas-falta {
    color: #EF4444;
    font-size: clamp(14px, 2vh, 18px);
    text-shadow: 0 0 10px rgba(239, 68, 68, 0.35);
  }

  /* Billetes rápidos Fast-Lane (2 columnas x 3 filas) */
  .ops-billetes-bar {
    display: flex;
    flex-direction: column;
    gap: clamp(5px, 0.8vh, 7px);
    flex-shrink: 0;
  }
  .ops-quick-actions-bar {
    display: grid;
    grid-template-columns: 1.3fr 1fr 1fr;
    gap: clamp(5px, 0.8vw, 8px);
    flex-shrink: 0;
  }
  .ops-btn-billete.exacto {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 7px;
    width: 100%;
    height: clamp(34px, 4.4vh, 40px);
    border-radius: 10px;
    border: 1.5px solid #10B981;
    background: linear-gradient(135deg, rgba(16,185,129,0.22) 0%, rgba(5,150,105,0.35) 100%);
    color: #34D399;
    font-family: 'Sora', sans-serif;
    font-size: clamp(11.5px, 1.45vh, 13px);
    font-weight: 800;
    letter-spacing: 0.02em;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(16,185,129,0.25), inset 0 1px 0 rgba(255,255,255,0.15);
    transition: all 0.12s ease;
  }
  .ops-btn-billete.exacto:hover {
    background: linear-gradient(135deg, rgba(16,185,129,0.32) 0%, rgba(5,150,105,0.48) 100%);
    border-color: #34D399;
    box-shadow: 0 4px 14px rgba(16,185,129,0.38);
    transform: translateY(-1px);
    color: #FFFFFF;
  }
  .ops-btn-billete.exacto:active {
    transform: translateY(1px) scale(0.98);
  }
  .ops-btn-billete.reiniciar {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 100%;
    height: clamp(34px, 4.4vh, 40px);
    border-radius: 10px;
    border: 1.5px solid #483A32;
    background: #201A17;
    color: var(--text-muted);
    font-family: 'Sora', sans-serif;
    font-size: clamp(11px, 1.35vh, 12.5px);
    font-weight: 800;
    letter-spacing: 0.02em;
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(0,0,0,0.35);
    transition: all 0.12s ease;
  }
  .ops-btn-billete.reiniciar:hover {
    border-color: #EF4444;
    color: #FCA5A5;
    background: rgba(239,68,68,0.15);
    transform: translateY(-1px);
  }
  .ops-btn-billete.reiniciar:active {
    transform: translateY(1px) scale(0.98);
  }
  .ops-btn-billete.drawer-tab {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 100%;
    height: clamp(34px, 4.4vh, 40px);
    border-radius: 10px;
    border: 1.5px solid #FF6B35;
    background: linear-gradient(135deg, rgba(255,107,53,0.18) 0%, rgba(229,90,43,0.3) 100%);
    color: #FF6B35;
    font-family: 'Sora', sans-serif;
    font-size: clamp(11px, 1.35vh, 12.5px);
    font-weight: 800;
    letter-spacing: 0.02em;
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(255,107,53,0.25);
    transition: all 0.12s ease;
  }
  .ops-btn-billete.drawer-tab:hover {
    background: linear-gradient(135deg, rgba(255,107,53,0.3) 0%, rgba(229,90,43,0.45) 100%);
    color: #FFFFFF;
    transform: translateY(-1px);
  }
  .ops-btn-billete.drawer-tab:active {
    transform: translateY(1px) scale(0.98);
  }

  /* Billetes Gigantes Full Bleed (Ocupan el 100% del contorno, un solo valor y conteo táctil) */
  .ops-billetes-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(6px, 1vh, 8px);
    flex: 1;
    min-height: clamp(140px, 20vh, 220px);
  }
  @media(max-width: 640px) {
    .ops-billetes-grid { grid-template-columns: repeat(2, 1fr); }
  }
  .ops-btn-billete-fast {
    position: relative;
    overflow: hidden;
    border-radius: 14px;
    border: 2px solid var(--bill-border, #3E332B);
    cursor: pointer;
    user-select: none;
    transition: all 0.12s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 14px rgba(0,0,0,0.5);
    background: #000000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    min-height: 0;
    height: 100%;
  }
  .ops-btn-billete-fast:hover {
    transform: translateY(-2px) scale(1.02);
    border-color: var(--bill-accent, #00D084);
    box-shadow: 0 8px 22px rgba(0,0,0,0.7);
    filter: brightness(1.1);
  }
  .ops-btn-billete-fast:active {
    transform: scale(0.96) translateY(2px);
  }
  .ops-billete-fast-thumb {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border-radius: 0;
    border: none;
    box-shadow: none;
    background: transparent;
  }
  .ops-billete-fast-thumb img {
    width: 100%;
    height: 100%;
    object-fit: fill;
    display: block;
    transition: transform 0.15s ease;
  }
  .ops-btn-billete-fast:hover .ops-billete-fast-thumb img {
    transform: scale(1.03);
  }
  .ops-billete-fast-info {
    position: absolute;
    bottom: 6px;
    left: 6px;
    background: rgba(0, 0, 0, 0.88);
    backdrop-filter: blur(8px);
    padding: 3px 9px;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.8);
    border: 1px solid rgba(255,255,255,0.25);
    z-index: 5;
  }
  .ops-billete-fast-label {
    display: none;
  }
  .ops-btn-billete-fast .ops-billete-val {
    font-family: 'IBM Plex Mono', monospace;
    font-size: clamp(12px, 1.6vh, 14.5px);
    font-weight: 900;
    color: var(--bill-accent, #FFFFFF);
    letter-spacing: -0.02em;
    line-height: 1;
  }
  .ops-billete-badge {
    position: absolute;
    top: 6px;
    right: 6px;
    padding: 2px 8px;
    border-radius: 9999px;
    font-family: 'IBM Plex Mono', monospace;
    font-weight: 900;
    font-size: 11px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.6);
    z-index: 10;
    display: none;
  }
  .ops-billete-badge.visible {
    display: block;
  }

  /* Variantes oficiales según la denominación del Banco de la República de Colombia */
  .ops-btn-billete-fast.b-100k {
    --bill-border: rgba(16, 185, 129, 0.6);
    --bill-accent: #34D399;
  }
  .ops-btn-billete-fast.b-50k {
    --bill-border: rgba(139, 92, 246, 0.6);
    --bill-accent: #C4B5FD;
  }
  .ops-btn-billete-fast.b-20k {
    --bill-border: rgba(249, 115, 22, 0.6);
    --bill-accent: #FB923C;
  }
  .ops-btn-billete-fast.b-10k {
    --bill-border: rgba(239, 68, 68, 0.6);
    --bill-accent: #FCA5A5;
  }
  .ops-btn-billete-fast.b-5k {
    --bill-border: rgba(245, 158, 11, 0.6);
    --bill-accent: #FCD34D;
  }
  .ops-btn-billete-fast.b-2k {
    --bill-border: rgba(20, 184, 166, 0.6);
    --bill-accent: #5EEAD4;
  }

  /* Barra de Monedas Rápidas */
  .ops-monedas-bar {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: clamp(4px, 0.6vw, 6px);
    flex-shrink: 0;
    margin-top: 2px;
  }
  .ops-btn-moneda-fast {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    background: linear-gradient(180deg, #221B17 0%, #17120F 100%);
    border: 1.5px solid #3A2F27;
    border-radius: 12px;
    padding: 6px 3px;
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(0,0,0,0.4);
    transition: all 0.12s ease;
    position: relative;
    user-select: none;
  }
  .ops-btn-moneda-fast:hover {
    border-color: #FBBF24;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(251,191,36,0.3);
  }
  .ops-btn-moneda-fast:active {
    transform: scale(0.95);
  }
  .ops-moneda-thumb {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    overflow: hidden;
    background: #000;
    box-shadow: 0 2px 5px rgba(0,0,0,0.6);
    border: 1px solid rgba(255,255,255,0.15);
  }
  .ops-moneda-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  .ops-moneda-val {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    font-weight: 900;
    color: #FBBF24;
    letter-spacing: -0.02em;
    line-height: 1;
  }
  .ops-btn-moneda-fast .ops-billete-badge {
    position: absolute;
    top: -4px;
    right: -4px;
    font-size: 9.5px;
    padding: 1px 5px;
    background: #00D084;
    color: #000;
  }

  /* Cajón Lateral Flotante de Teclado Numérico Táctil (Drawer) */
  .ops-drawer-teclado {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 320px;
    max-width: 90%;
    background: #140F0D;
    border-left: 2px solid #FF6B35;
    box-shadow: -10px 0 30px rgba(0,0,0,0.85);
    z-index: 100;
    transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.2s ease;
    display: flex;
    flex-direction: column;
    border-top-right-radius: 12px;
    border-bottom-right-radius: 12px;
  }
  .ops-drawer-teclado.hidden {
    transform: translateX(110%);
    opacity: 0;
    pointer-events: none;
    display: none;
  }
  .ops-drawer-teclado-inner {
    padding: 12px;
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 10px;
  }
  .ops-drawer-teclado-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 13px;
    font-weight: 800;
    color: #FFFFFF;
    font-family: 'Sora', sans-serif;
    padding-bottom: 8px;
    border-bottom: 1px solid #2C211B;
  }
  .ops-btn-close-drawer {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #241A15;
    border: 1px solid #3E2B21;
    color: #FFFFFF;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 13px;
    transition: all 0.1s ease;
  }
  .ops-btn-close-drawer:hover {
    background: #FF6B35;
    color: #000;
  }
  .ops-btn-cerrar-drawer-ok {
    height: 40px;
    background: #00D084;
    border: none;
    color: #000;
    font-weight: 900;
    font-size: 13px;
    border-radius: 10px;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(0,208,132,0.3);
    transition: all 0.1s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: auto;
  }
  .ops-btn-cerrar-drawer-ok:active {
    transform: scale(0.98);
  }

  /* Teclado Numérico Táctil con altura ergonómica que llena TODO el espacio vertical */
  .ops-keypad-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr) clamp(74px, 7.8vw, 84px);
    grid-template-rows: repeat(4, 1fr);
    gap: clamp(5px, 0.8vh, 7px);
    flex: 1;
    min-height: clamp(190px, 24vh, 230px);
  }
  .ops-key-btn {
    height: 100%;
    min-height: 0;
    background: linear-gradient(180deg, #2A231F 0%, #1C1715 100%);
    border: 1.5px solid #43372F;
    border-radius: 12px;
    color: #FFFFFF;
    font-family: 'IBM Plex Mono', monospace;
    font-size: clamp(19px, 2.6vh, 24px);
    font-weight: 800;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: 0 3.5px 0 #100C0A, 0 5px 10px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.08);
    transition: all 0.08s ease;
    user-select: none;
  }
  .ops-key-btn:hover {
    background: linear-gradient(180deg, #352C27 0%, #251E1A 100%);
    border-color: #38BDF8;
    color: #BAE6FD;
  }
  .ops-key-btn:active {
    transform: translateY(2.5px);
    box-shadow: 0 1px 0 #100C0A, 0 2px 4px rgba(0,0,0,0.4);
    background: #0284C7;
    color: #FFFFFF;
  }

  .ops-key-btn.btn-c-tall {
    grid-column: 4;
    grid-row: 1 / span 2;
    background: linear-gradient(180deg, rgba(239,68,68,0.2) 0%, rgba(185,28,28,0.3) 100%);
    border: 1.5px solid #EF4444;
    color: #FCA5A5;
    font-size: clamp(12px, 1.6vh, 13.5px);
    font-family: 'Sora', sans-serif;
    font-weight: 800;
    flex-direction: column;
    gap: 2px;
    box-shadow: 0 3px 0 #380C0C, 0 4px 8px rgba(239,68,68,0.2), inset 0 1px 0 rgba(255,255,255,0.15);
  }
  .ops-key-btn.btn-c-tall:hover {
    background: linear-gradient(180deg, rgba(239,68,68,0.3) 0%, rgba(185,28,28,0.42) 100%);
    color: #FFF;
    border-color: #F87171;
  }
  .ops-key-btn.btn-c-tall:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 #380C0C;
    background: #EF4444;
    color: #FFF;
  }

  .ops-key-btn.btn-back-tall {
    grid-column: 4;
    grid-row: 3 / span 2;
    background: linear-gradient(180deg, rgba(245,158,11,0.18) 0%, rgba(180,83,9,0.28) 100%);
    border: 1.5px solid #F59E0B;
    color: #FDE68A;
    font-size: clamp(13px, 1.8vh, 15px);
    font-family: 'Sora', sans-serif;
    font-weight: 800;
    flex-direction: column;
    gap: 2px;
    box-shadow: 0 3px 0 #381E04, 0 4px 8px rgba(245,158,11,0.2), inset 0 1px 0 rgba(255,255,255,0.15);
  }
  .ops-key-btn.btn-back-tall:hover {
    background: linear-gradient(180deg, rgba(245,158,11,0.28) 0%, rgba(180,83,9,0.4) 100%);
    color: #FFF;
    border-color: #FBBF24;
  }
  .ops-key-btn.btn-back-tall:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 #381E04;
    background: #F59E0B;
    color: #000;
  }

  /* Cluster de los 3 Botones de Cobro: Inmutable, Pegado debajo del teclado sin huecos */
  .ops-action-checkout-cluster {
    display: flex;
    flex-direction: column;
    gap: clamp(4px, 0.7vh, 7px);
    margin-top: 0 !important;
    flex-shrink: 0;
  }
  .ops-alternativas-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(4px, 0.7vh, 7px);
  }
  .ops-btn-checkout-sin-recibo {
    background: linear-gradient(145deg, #251F1C 0%, #191513 100%);
    border: 1.5px solid #4D3F36;
    color: #E2D7CF;
    border-radius: 11px;
    padding: clamp(6px, 1vh, 9px) clamp(6px, 1vw, 10px);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    box-shadow: 0 2px 6px rgba(0,0,0,0.35), inset 0 1px 0 rgba(255,255,255,0.06);
    transition: all 0.14s ease;
  }
  .ops-btn-checkout-sin-recibo:hover:not(:disabled) {
    background: linear-gradient(145deg, #2E2622 0%, #201A17 100%);
    border-color: #F5A623;
    color: #FFFFFF;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(245,166,35,0.25);
  }
  .ops-btn-checkout-sin-recibo:active:not(:disabled) {
    transform: translateY(1px);
  }
  .ops-btn-checkout-sin-recibo .title {
    font-family: 'Sora', sans-serif;
    font-size: clamp(11px, 1.35vh, 12.5px);
    font-weight: 800;
    display: flex;
    align-items: center;
    gap: 5px;
    color: #FFF;
  }
  .ops-btn-checkout-sin-recibo .title svg {
    color: #F5A623;
  }
  .ops-btn-checkout-sin-recibo .sub {
    font-size: clamp(8.5px, 1vh, 9.5px);
    color: #9E8E83;
  }

  .ops-btn-checkout-wa-recibo {
    background: linear-gradient(145deg, #0F452F 0%, #082D1F 100%);
    border: 1.5px solid #25D366;
    color: #FFF;
    border-radius: 11px;
    padding: clamp(6px, 1vh, 9px) clamp(6px, 1vw, 10px);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    box-shadow: 0 2px 8px rgba(37,211,102,0.25), inset 0 1px 0 rgba(255,255,255,0.15);
    transition: all 0.14s ease;
  }
  .ops-btn-checkout-wa-recibo:hover:not(:disabled) {
    background: linear-gradient(145deg, #155C3F 0%, #0C3E2A 100%);
    box-shadow: 0 4px 16px rgba(37,211,102,0.45);
    transform: translateY(-1px);
  }
  .ops-btn-checkout-wa-recibo:active:not(:disabled) {
    transform: translateY(1px);
  }
  .ops-btn-checkout-wa-recibo .title {
    font-family: 'Sora', sans-serif;
    font-size: clamp(11px, 1.35vh, 12.5px);
    font-weight: 800;
    display: flex;
    align-items: center;
    gap: 5px;
    color: #FFF;
  }
  .ops-btn-checkout-wa-recibo .title svg {
    color: #25D366;
  }
  .ops-btn-checkout-wa-recibo .sub {
    font-size: clamp(8.5px, 1vh, 9.5px);
    color: rgba(255,255,255,0.85);
  }

  .ops-btn-checkout-con-recibo-master {
    background: linear-gradient(135deg, #10B981 0%, #059669 100%);
    border: 2px solid #34D399;
    color: #FFF;
    border-radius: 13px;
    padding: clamp(8px, 1.3vh, 12px) clamp(10px, 1.4vw, 16px);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    box-shadow: 0 4px 18px rgba(16,185,129,0.45), inset 0 1px 0 rgba(255,255,255,0.3);
    transition: all 0.15s ease;
    width: 100%;
  }
  .ops-btn-checkout-con-recibo-master:hover:not(:disabled) {
    background: linear-gradient(135deg, #14C78D 0%, #07AB77 100%);
    box-shadow: 0 6px 24px rgba(16,185,129,0.6);
    transform: translateY(-1px);
  }
  .ops-btn-checkout-con-recibo-master:active:not(:disabled) {
    transform: translateY(1px);
    box-shadow: 0 2px 8px rgba(16,185,129,0.4);
  }
  .ops-btn-checkout-con-recibo-master .title {
    font-family: 'Sora', sans-serif;
    font-size: clamp(12.5px, 1.7vh, 14.5px);
    font-weight: 900;
    letter-spacing: 0.02em;
    display: flex;
    align-items: center;
    gap: 8px;
    color: #FFF;
    text-shadow: 0 1px 2px rgba(0,0,0,0.3);
  }
  .ops-btn-checkout-con-recibo-master .sub {
    font-size: clamp(9px, 1.1vh, 10.5px);
    color: rgba(255,255,255,0.92);
  }
  /* Estado deshabilitado (falta ingresar el efectivo recibido o saldo $0):
     Consistente con la interfaz de hardware POS de la columna central (.ops-cobro-col-caja),
     evitando fondos blancos deslumbrantes y texto blanco sobre blanco en .title. */
  .ops-btn-checkout-sin-recibo:disabled,
  .ops-btn-checkout-wa-recibo:disabled,
  .ops-btn-checkout-con-recibo-master:disabled {
    background: #241D1A !important;
    border: 1.5px solid #3A302A !important;
    color: #8C7E74 !important;
    opacity: 0.65;
    cursor: not-allowed;
    pointer-events: none;
    transform: none !important;
    box-shadow: none !important;
  }
  .ops-btn-checkout-sin-recibo:disabled .title,
  .ops-btn-checkout-wa-recibo:disabled .title,
  .ops-btn-checkout-con-recibo-master:disabled .title {
    color: #8C7E74 !important;
    text-shadow: none !important;
  }
  .ops-btn-checkout-sin-recibo:disabled .sub,
  .ops-btn-checkout-wa-recibo:disabled .sub,
  .ops-btn-checkout-con-recibo-master:disabled .sub {
    color: #6E6359 !important;
  }
  .ops-btn-checkout-sin-recibo:disabled svg,
  .ops-btn-checkout-wa-recibo:disabled svg,
  .ops-btn-checkout-con-recibo-master:disabled svg {
    color: #6E6359 !important;
    opacity: 0.7 !important;
  }

  /* Animación Simulación Cajón Monedero RJ11 */
  .ops-cajon-status-box {
    background: #0A0807;
    border: 1.5px solid var(--border);
    border-radius: 12px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .ops-cajon-header-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--text-muted);
  }
  .ops-led-pulse {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #444;
  }
  .ops-led-pulse.active {
    background: #00D084;
    box-shadow: 0 0 10px #00D084;
  }
  .ops-cajon-drawer-anim {
    height: 44px;
    background: #25201D;
    border: 2px solid #38312C;
    border-radius: 6px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: flex-end;
  }
  .ops-cajon-tray {
    width: 92%;
    height: 34px;
    background: #3B332E;
    border: 1px solid #554A42;
    border-bottom: none;
    margin: 0 auto;
    border-radius: 4px 4px 0 0;
    transform: translateY(22px);
    transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.25);
    display: flex;
    justify-content: space-around;
    align-items: center;
    padding: 2px;
  }
  .ops-cajon-tray.open { transform: translateY(2px); }
  .ops-tray-slot {
    flex: 1;
    height: 22px;
    background: #0A4A28;
    color: #00FF80;
    border: 1px dashed #00D084;
    border-radius: 3px;
    margin: 0 2px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 8.5px;
    font-weight: 700;
  }

  @media(max-width:900px) {
    .pos-ops-overlay .delivery-ops-grid { grid-template-columns:1fr; overflow-y:auto; overflow-x:hidden; height:auto; }
    .pos-ops-overlay .repartidores-ops-layout { grid-template-columns:1fr; overflow-y:auto; height:auto; }
    .pos-ops-overlay #moduleMesasGrid { grid-template-columns:1.4fr 1fr !important; }
  }
  @media(max-width:680px) {
    .pos-ops-overlay { left:0; right:0; bottom:0; border-radius:0; }
    .pos-ops-overlay .pos-sidebar { position:fixed; left:0; top:0; bottom:0; z-index:200; }
    .pos-ops-overlay #moduleMesasGrid { grid-template-columns:100% !important; }
    .pos-ops-overlay #splitRightPanel { display:none; }
    .pos-ops-overlay.mesa-detalle-mobile #splitLeftGrid { display:none; }
    .pos-ops-overlay.mesa-detalle-mobile #splitRightPanel { display:flex; }
  }

  /* ==========================================================================
     MÓDULO CAJA v2 — Estación de Caja y Cuadre de Turno (rediseño 2026-09-17,
     ver MOCKUPS/mockup-2b-station-tabs-drawer.html). Clases con prefijo cj- son
     nuevas y exclusivas de este módulo — no reemplazan patrones usados en otros
     tabs del panel.
     ========================================================================== */
  #tab-caja .cj-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:18px; }
  #tab-caja .cj-head-left { display:flex; align-items:center; gap:12px; }
  #tab-caja .cj-head-logo { width:42px; height:42px; border-radius:12px; background:var(--naranja); display:flex; align-items:center; justify-content:center; color:#fff; font-weight:900; font-size:17px; box-shadow:0 4px 12px rgba(255,107,53,0.35); flex-shrink:0; }
  #tab-caja .cj-head-title-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
  #tab-caja .cj-head h2 { font-family:'Sora',sans-serif; font-size:19px; font-weight:800; color:var(--texto); margin:0; }
  #tab-caja .cj-head-meta { display:flex; align-items:center; gap:10px; font-size:12px; color:var(--texto-suave); margin-top:4px; flex-wrap:wrap; }
  #tab-caja .cj-head-meta strong { color:var(--texto); }
  #tab-caja .cj-head-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }

  .cj-badge { font-size:11px; font-weight:700; padding:4px 10px; border-radius:999px; display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
  .cj-dot { width:7px; height:7px; border-radius:50%; display:inline-block; }
  .cj-btn { padding:9px 16px; border-radius:10px; font-size:12.5px; font-weight:700; display:inline-flex; align-items:center; gap:7px; cursor:pointer; border:1px solid var(--borde); background:var(--card-subtle); color:var(--texto); transition:all .15s; }
  .cj-btn:hover { border-color:var(--naranja); }
  .cj-btn-primary { background:var(--naranja); color:#fff; border-color:var(--naranja); box-shadow:0 4px 14px rgba(255,107,53,0.32); }
  .cj-btn-primary:hover { background:var(--naranja-osc); border-color:var(--naranja-osc); }
  .cj-btn-icon { padding:9px; }

  /* Bento de 4 tarjetas KPI (Tab Pagos) */
  .cj-bento5 { display:grid; grid-template-columns:repeat(5,1fr); gap:12px; margin-bottom:14px; }
  @media (max-width:1280px) { .cj-bento5 { grid-template-columns:repeat(3,1fr); } }
  @media (max-width:760px) { .cj-bento5 { grid-template-columns:repeat(2,1fr); } }
  @media (max-width:520px) { .cj-bento5 { grid-template-columns:1fr; } }
  .cj-kpi5 { padding:14px; }
  .cj-kpi5 .cj-kpi-val { font-size:21px; }
  .cj-kpi-det { display:flex; justify-content:space-between; gap:6px; font-size:11px; padding:1.5px 0; color:var(--texto-suave); }
  .cj-kpi-det b { font-family:'IBM Plex Mono',monospace; font-weight:600; color:var(--texto); }
  .cj-bento4 { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:16px; }
  @media (max-width:1050px) { .cj-bento4 { grid-template-columns:repeat(2,1fr); } }
  @media (max-width:560px) { .cj-bento4 { grid-template-columns:1fr; } }
  .pos-card { background:var(--blanco); border:1px solid var(--borde); border-radius:16px; box-shadow:0 4px 14px rgba(0,0,0,0.08); }
  .pos-subcard { background:var(--card-subtle); border:1px solid var(--borde); border-radius:12px; }
  .clickable-card { cursor:pointer; transition:transform .15s ease, border-color .15s ease, box-shadow .15s ease; }
  .clickable-card:hover { transform:translateY(-2px); border-color:var(--naranja); box-shadow:0 8px 18px rgba(0,0,0,0.14); }
  .cj-kpi { padding:16px; }
  .cj-kpi-top { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:8px; gap:8px; }
  .cj-kpi-label { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--texto-muted); }
  .cj-kpi-ico { width:34px; height:34px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
  .cj-kpi-val { font-family:'IBM Plex Mono',monospace; font-size:26px; font-weight:800; color:var(--texto); display:block; margin-top:2px; }
  .cj-kpi-foot { font-size:11.5px; margin-top:10px; padding-top:8px; border-top:1px solid var(--borde); display:flex; justify-content:space-between; align-items:center; gap:6px; font-family:'IBM Plex Mono',monospace; color:var(--texto-suave); }
  .cj-kpi-mini { font-size:11px; margin-top:6px; display:flex; justify-content:space-between; align-items:center; gap:6px; font-weight:600; }

  /* Filtros + búsqueda */
  .cj-filterbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; padding:14px; margin-bottom:14px; }
  .cj-filterbar-chips { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
  .filter-chip { padding:7px 13px; border-radius:9px; font-size:12px; font-weight:700; cursor:pointer; display:inline-flex; align-items:center; gap:6px; transition:all .15s; border:1px solid var(--borde); background:var(--card-subtle); color:var(--texto-suave); }
  .filter-chip:hover { border-color:var(--naranja); color:var(--texto); }
  .filter-chip.active { background:var(--naranja); color:#fff; border-color:var(--naranja); }
  .cj-search { width:100%; max-width:260px; font-size:12.5px; padding:9px 12px; border-radius:10px; border:1px solid var(--borde); background:var(--card-subtle); color:var(--texto); }

  /* Tabla genérica de la estación */
  .cj-table-card { padding:18px; }
  .cj-table-head { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; border-bottom:1px solid var(--borde); padding-bottom:12px; margin-bottom:12px; }
  .cj-table-head h3 { font-family:'Sora',sans-serif; font-size:14px; font-weight:800; color:var(--texto); margin:0; }
  .cj-table-head p { font-size:12px; color:var(--texto-suave); margin:2px 0 0; }
  .cj-table-wrap { overflow-x:auto; }
  table.cj-table { width:100%; border-collapse:collapse; font-size:12.5px; }
  table.cj-table thead tr { background:var(--card-subtle); color:var(--texto-suave); border-bottom:1px solid var(--borde); }
  table.cj-table th { padding:10px 12px; text-align:left; font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.02em; }
  table.cj-table td { padding:11px 12px; border-bottom:1px solid var(--borde); }
  table.cj-table tbody tr { cursor:pointer; transition:background .12s; }
  table.cj-table tbody tr:hover { background:var(--card-subtle); }
  table.cj-table tfoot td { padding:11px 12px; font-family:'IBM Plex Mono',monospace; font-weight:800; border-top:2px solid var(--borde); background:var(--card-subtle); }
  .cj-num { font-family:'IBM Plex Mono',monospace; }
  .cj-text-right { text-align:right; }
  .cj-text-center { text-align:center; }
  .cj-empty-row td { text-align:center; padding:24px; color:var(--texto-suave); }

  /* Navegación de 5 pestañas */
  .cj-nav { display:flex; align-items:stretch; gap:6px; margin-bottom:16px; }
  .cj-nav-btn { flex:1 1 0; min-width:0; padding:8px 8px; border-radius:10px; font-size:12px; font-weight:700; line-height:1.2; display:inline-flex; align-items:center; justify-content:center; gap:6px; cursor:pointer; text-align:left; background:var(--card-subtle); border:1px solid var(--borde); color:var(--texto-suave); }
  .cj-nav-btn small { display:block; font-size:inherit; font-weight:inherit; }
  @media (max-width:900px) { .cj-nav { flex-wrap:wrap; } .cj-nav-btn { flex:1 1 30%; } }
  .cj-nav-btn:hover { color:var(--texto); }
  .cj-nav-btn.active { background:var(--naranja); border-color:var(--naranja); color:#fff; font-weight:800; }
  .cj-nav-btn svg { flex-shrink:0; }

  .cj-view { display:none; }
  .cj-view.active { display:block; }

  /* Tab Propinas */
  .cj-propinas-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:14px; border-bottom:1px solid var(--borde); padding-bottom:16px; margin-bottom:16px; }
  .cj-mode-switch { display:flex; align-items:center; gap:4px; padding:4px; border-radius:11px; background:var(--card-subtle); border:1px solid var(--borde); }
  .cj-mode-btn { font-size:12px; font-weight:700; padding:8px 14px; border-radius:8px; cursor:pointer; border:none; background:transparent; color:var(--texto-suave); }
  .cj-mode-btn.active { background:var(--naranja); color:#fff; }
  .cj-mini-grid4 { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:16px; }
  @media (max-width:760px) { .cj-mini-grid4 { grid-template-columns:repeat(2,1fr); } }
  .cj-mini-card { padding:12px; border-radius:12px; }
  .cj-mini-label { font-size:10px; font-weight:700; text-transform:uppercase; color:var(--texto-muted); display:block; }
  .cj-mini-val { font-family:'IBM Plex Mono',monospace; font-size:18px; font-weight:800; display:block; margin-top:2px; }
  .cj-cat-tabs { display:flex; border-bottom:1px solid var(--borde); font-size:12.5px; font-weight:700; margin-bottom:14px; }
  .cj-cat-tab { padding:10px 16px; border-bottom:2px solid transparent; color:var(--texto-suave); cursor:pointer; background:none; border-top:none; border-left:none; border-right:none; font-family:inherit; }
  .cj-cat-tab.active { border-bottom-color:var(--naranja); color:var(--naranja); }
  .cj-staff-row { padding:14px; border-radius:12px; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; font-size:12.5px; cursor:pointer; transition:all .15s; border:1px solid var(--borde); margin-bottom:10px; }
  .cj-staff-row:hover { border-color:var(--naranja); background:var(--card-subtle); }
  .cj-staff-avatar { width:38px; height:38px; border-radius:10px; background:var(--blanco); border:1px solid var(--borde); display:flex; align-items:center; justify-content:center; font-weight:800; color:var(--naranja); flex-shrink:0; }

  /* Tab Domicilios */
  .cj-rider-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
  @media (max-width:820px) { .cj-rider-grid { grid-template-columns:1fr; } }
  .cj-rider-card { padding:12px; border-radius:12px; }
  .cj-domi-row { padding:13px; border-radius:12px; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; margin-bottom:8px; }

  /* Tab Reportes */
  .cj-period-switch { display:flex; align-items:center; gap:4px; padding:4px; border-radius:11px; background:var(--card-subtle); border:1px solid var(--borde); width:fit-content; margin-bottom:16px; }
  .rep-period-btn { padding:8px 14px; border-radius:8px; font-size:12px; font-weight:700; cursor:pointer; border:none; background:transparent; color:var(--texto-suave); font-family:inherit; }
  .rep-period-btn.active { background:var(--naranja); color:#fff; }

  /* Drawer lateral de Arqueo & Cierre */
  .cj-drawer-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.6); z-index:5000; opacity:0; pointer-events:none; transition:opacity .2s; }
  .cj-drawer-overlay.open { opacity:1; pointer-events:auto; }
  .cj-drawer { position:fixed; top:0; right:0; height:100%; width:100%; max-width:440px; background:var(--blanco); border-left:1px solid var(--borde); z-index:5001; box-shadow:-8px 0 30px rgba(0,0,0,0.25); transform:translateX(100%); transition:transform .25s ease; display:flex; flex-direction:column; }
  .cj-drawer.open { transform:translateX(0); }
  .cj-drawer-head { padding:16px; border-bottom:1px solid var(--borde); background:var(--card-subtle); display:flex; align-items:center; justify-content:space-between; gap:10px; flex-shrink:0; }
  .cj-drawer-body { padding:16px; overflow-y:auto; flex:1; display:flex; flex-direction:column; gap:14px; font-size:12.5px; }
  .cj-drawer-foot { padding:16px; border-top:1px solid var(--borde); background:var(--card-subtle); flex-shrink:0; display:flex; flex-direction:column; gap:8px; }
  .cj-cuadre-row { display:flex; justify-content:space-between; padding:3px 0; }
  .cj-cuadre-row strong.cj-num { font-size:13px; }
  .cj-cuadre-total { display:flex; justify-content:space-between; align-items:center; padding-top:10px; margin-top:6px; border-top:2px solid var(--borde); font-weight:800; }

  /* Cierre de caja por medio de pago: resumen, secciones desplegables y confirmación manual (2026-10-09) */
  .cjp-title { font-size:11px; font-weight:800; text-transform:uppercase; color:var(--texto-muted); display:block; padding-bottom:8px; border-bottom:1px solid var(--borde); margin-bottom:10px; }
  .cjp-ok { color:var(--verde); font-weight:700; }
  .cjp-pend { color:var(--naranja); font-weight:700; }
  .cjp-sub { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--texto-muted); margin:8px 0 2px; }
  .cjp-control { margin-top:10px; padding:9px 12px; border-radius:10px; font-size:11.5px; line-height:1.4; }
  .cjp-control.ok { background:var(--verde-suave); color:var(--verde); border:1px solid rgba(16,185,129,.35); }
  .cjp-control.mal { background:rgba(239,68,68,.1); color:var(--rojo); border:1px solid var(--rojo); }
  .cjp-met { border:1px solid var(--borde); border-radius:12px; background:var(--blanco); overflow:hidden; }
  .cjp-met > summary { list-style:none; display:flex; align-items:center; gap:8px; padding:10px 12px; cursor:pointer; font-weight:800; font-size:12.5px; }
  .cjp-met > summary::-webkit-details-marker { display:none; }
  .cjp-met > summary::after { content:''; margin-left:6px; flex:none; width:8px; height:8px; border-right:2px solid var(--texto-suave); border-bottom:2px solid var(--texto-suave); transform:rotate(45deg); transition:transform .15s; }
  .cjp-met[open] > summary::after { transform:rotate(-135deg); }
  .cjp-met > summary .cjp-grow { margin-left:auto; display:flex; gap:6px; align-items:center; }
  .cjp-lista { border-top:1px solid var(--borde); display:flex; flex-direction:column; }
  .cjp-fila { display:flex; align-items:center; gap:8px; padding:9px 12px; border-bottom:1px solid var(--borde); cursor:pointer; transition:background .12s; }
  .cjp-fila:last-child { border-bottom:0; }
  .cjp-fila:hover, .cjp-fila:focus-visible { background:rgba(255,107,53,.06); outline:none; }
  .cjp-fila .cjp-info { flex:1; min-width:0; }
  .cjp-fila .cjp-info b { display:block; font-size:12.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cjp-fila .cjp-info span { font-size:11px; color:var(--texto-suave); }
  .cjp-fila .cjp-monto { font-weight:800; font-size:12.5px; white-space:nowrap; }
  .cjp-todos { margin:8px 12px; }
  .cjp-met > summary { padding:8px 10px; }
  .cjp-fila { padding:6px 10px; }
  .cjp-fila .cjp-info { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cjp-fila .cjp-info b { display:inline; font-size:12px; overflow:visible; }
  .cjp-trio { display:grid; grid-template-columns:repeat(5,1fr); gap:4px; padding:6px 10px; border-top:1px solid var(--borde); background:var(--card-subtle); }
  .cjp-trio span { display:block; font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:var(--texto-muted); }
  .cjp-trio b { font-size:10.5px; }
  .cjp-in { padding:4px 12px 6px; border-top:1px solid var(--borde); }
  .cjp-vacio { padding:8px 12px; font-size:11.5px; color:var(--texto-suave); border-top:1px solid var(--borde); }
  .cjp-plano { display:flex; justify-content:space-between; align-items:center; padding:8px 10px; font-weight:800; font-size:12.5px; }
  .cjp-btn { padding:6px 10px; border-radius:8px; font-size:11.5px; font-weight:800; border:1px solid var(--verde); background:var(--verde-suave); color:var(--verde); cursor:pointer; box-shadow:0 2px 0 rgba(16,185,129,.35); transition:transform .08s, box-shadow .08s, filter .15s; white-space:nowrap; }
  .cjp-btn:hover { filter:brightness(1.08); }
  .cjp-btn:active { transform:translateY(2px); box-shadow:none; }
  .cjp-btn[disabled] { opacity:.5; cursor:wait; }
  .cjp-btn.quitar { border-color:var(--borde); background:var(--card-subtle); color:var(--texto-suave); box-shadow:0 2px 0 var(--borde); }
  .cjp-ficha { margin-top:14px; padding-top:12px; border-top:2px solid var(--borde); }
  .cjp-ficha h3 { font:800 13px 'Sora',sans-serif; margin:0 0 8px; }
  .cjp-ficha .cj-cuadre-row span { color:var(--texto-suave); }
  .cjp-ficha .cj-cuadre-row strong { text-align:right; }
  .cjp-comps { display:flex; gap:8px; flex-wrap:wrap; margin:6px 0; }
  .cjp-comps a { display:block; width:84px; border:1px solid var(--borde); border-radius:8px; overflow:hidden; background:#fff; }
  .cjp-comps img { width:100%; height:84px; object-fit:cover; display:block; }
  .cjp-linea { list-style:none; margin:6px 0 0 5px; padding:0 0 0 14px; border-left:2px solid var(--borde); display:flex; flex-direction:column; gap:9px; }
  .cjp-linea li { position:relative; font-size:12px; }
  .cjp-linea li::before { content:''; position:absolute; left:-20px; top:4px; width:10px; height:10px; border-radius:50%; background:var(--naranja); border:2px solid var(--blanco); }
  .cjp-linea li small { display:block; color:var(--texto-suave); font-size:11px; }

  /* Modales genéricos del módulo */
  .cj-modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.75); z-index:5100; display:none; align-items:center; justify-content:center; padding:14px; overflow-y:auto; }
  .cj-modal-overlay.open { display:flex; }
  .cj-modal { background:var(--blanco); border:1px solid var(--naranja-linea); border-radius:18px; width:100%; max-width:560px; max-height:92vh; display:flex; flex-direction:column; box-shadow:0 20px 60px rgba(0,0,0,0.4); overflow:hidden; }
  .cj-modal.cj-modal-lg { max-width:920px; }
  .cj-modal-head { padding:16px 20px; border-bottom:1px solid var(--borde); background:var(--card-subtle); display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-shrink:0; }
  .cj-modal-head h2 { font-family:'Sora',sans-serif; font-size:16px; font-weight:800; color:var(--texto); margin:0; }
  .cj-modal-head p { font-size:12px; color:var(--texto-suave); margin:4px 0 0; }
  .cj-modal-close { border:none; background:none; color:var(--texto-suave); cursor:pointer; padding:6px; border-radius:8px; font-size:15px; line-height:1; flex-shrink:0; }
  .cj-modal-close:hover { background:rgba(255,255,255,0.08); }
  .cj-modal-body { padding:18px 20px; overflow-y:auto; flex:1; font-size:13px; }
  .cj-modal-foot { padding:14px 20px; border-top:1px solid var(--borde); background:var(--card-subtle); display:flex; gap:10px; flex-shrink:0; flex-wrap:wrap; }
  .cj-field { margin-bottom:12px; }
  .cj-field label { display:block; font-size:11.5px; font-weight:700; color:var(--texto-suave); margin-bottom:5px; }
  .cj-field input, .cj-field select, .cj-field textarea { width:100%; padding:9px 11px; border-radius:9px; border:1px solid var(--borde); background:var(--card-subtle); color:var(--texto); font-size:13px; font-family:inherit; }
  .cj-ticket-line { display:flex; justify-content:space-between; font-size:12px; padding:3px 0; }
  .ticket-dashed-line { border-bottom:2px dashed var(--borde); margin:8px 0; }

  /* Arqueo visual de billetes/monedas */
  .cj-arqueo-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; padding:0 0 14px; }
  @media (max-width:640px) { .cj-arqueo-kpis { grid-template-columns:repeat(2,1fr); } }
  .cj-arqueo-kpi { padding:10px 12px; border-radius:12px; display:flex; align-items:center; justify-content:space-between; gap:8px; }
  .cj-denom-section-head { display:flex; align-items:center; justify-content:space-between; margin:14px 0 10px; }
  .cj-denom-section-head h4 { font-family:'Sora',sans-serif; font-size:13px; font-weight:800; color:var(--texto); margin:0; display:flex; align-items:center; gap:8px; }
  .cj-denom-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
  @media (max-width:700px) { .cj-denom-grid { grid-template-columns:repeat(2,1fr); } }
  @media (max-width:460px) { .cj-denom-grid { grid-template-columns:1fr; } }
  .bill-card-compact { padding:12px; border-radius:12px; display:flex; flex-direction:column; justify-content:space-between; transition:all .15s; }
  .bill-card-compact:hover { border-color:var(--naranja); box-shadow:0 6px 18px rgba(0,0,0,0.14); }
  .cj-denom-img-box { width:100%; height:78px; border-radius:8px; overflow:hidden; border:1px solid var(--borde); margin:8px 0; background:rgba(0,0,0,0.25); display:flex; align-items:center; justify-content:center; padding:4px; }
  .cj-denom-img-box img { max-width:100%; max-height:100%; object-fit:contain; border-radius:4px; }
  .stepper-btn { width:32px; height:32px; border-radius:9px; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:16px; cursor:pointer; border:1px solid var(--borde); background:var(--card-subtle); color:var(--texto); user-select:none; }
  .stepper-btn.plus { background:var(--naranja-suave); border-color:var(--naranja-linea); color:var(--naranja); }
  .cj-denom-qty-input { width:52px; height:32px; text-align:center; font-family:'IBM Plex Mono',monospace; font-weight:800; font-size:14px; border:1px solid var(--borde); border-radius:9px; background:var(--card-subtle); color:var(--texto); }
  .cj-denom-sub { font-family:'IBM Plex Mono',monospace; font-weight:800; font-size:18px; color:var(--verde); }
  /* ==========================================================================
     HISTORIALES OPERATIVOS (Mesas, Domicilios, Domiciliarios) — UI/UX PROFESIONAL
     ========================================================================== */
  .hist-toolbar-container {
    display: flex;
    flex-direction: column;
    gap: 12px;
    background: var(--bg-surface);
    border: 1.5px solid var(--border);
    border-radius: 18px;
    padding: 16px;
    box-shadow: var(--shadow-card);
  }
  .hist-top-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
  }
  .hist-pill-group {
    display: inline-flex;
    background: var(--bg-app);
    padding: 4px;
    border-radius: 14px;
    border: 1.5px solid var(--border);
    gap: 4px;
    align-items: center;
  }
  .hist-pill-btn {
    height: 34px;
    padding: 0 16px;
    border-radius: 10px;
    border: none;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    background: transparent;
    color: var(--text-muted);
    transition: all .18s ease;
    user-select: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
  }
  .hist-pill-btn:hover {
    color: var(--text-main);
    background: rgba(255,255,255,0.04);
  }
  .hist-pill-btn.active {
    background: var(--fc-naranja, #FF6B35);
    color: #FFFFFF;
    font-weight: 800;
    box-shadow: 0 2px 8px rgba(255,107,53,0.35);
  }
  .hist-filters-bar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    padding-top: 12px;
    border-top: 1px solid var(--border);
  }
  .hist-input-group {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--bg-card);
    border: 1.5px solid var(--border);
    border-radius: 10px;
    padding: 0 10px;
    height: 38px;
    color: var(--text-muted);
    font-size: 12.5px;
  }
  .hist-input-group input[type="date"] {
    border: none;
    background: transparent;
    color: var(--text-main);
    font-size: 12.5px;
    font-weight: 600;
    outline: none;
    font-family: inherit;
    cursor: pointer;
  }
  .hist-select {
    height: 38px;
    border-radius: 10px;
    background: var(--bg-card);
    border: 1.5px solid var(--border);
    color: var(--text-main);
    padding: 0 12px;
    font-size: 12.5px;
    font-weight: 600;
    outline: none;
    cursor: pointer;
    transition: border-color .15s;
  }
  .hist-select:focus {
    border-color: var(--fc-naranja, #FF6B35);
  }
  .hist-btn-action {
    height: 38px;
    padding: 0 16px;
    border-radius: 10px;
    border: 1.5px solid var(--border);
    background: var(--bg-card);
    color: var(--text-main);
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: all .15s ease;
  }
  .hist-btn-action:hover {
    background: var(--bg-card-hover);
    border-color: var(--fc-naranja, #FF6B35);
    transform: translateY(-1px);
  }
  .hist-btn-action.primary {
    background: linear-gradient(135deg, var(--fc-naranja, #FF6B35), var(--fc-naranja-osc, #E55A2B));
    color: #FFFFFF;
    border: none;
    box-shadow: 0 3px 10px rgba(255,107,53,0.3);
  }
  .hist-kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 12px;
  }
  .hist-kpi-card {
    background: var(--bg-surface);
    border: 1.5px solid var(--border);
    border-radius: 16px;
    padding: 14px 16px;
    box-shadow: var(--shadow-card);
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .hist-kpi-val {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 22px;
    font-weight: 800;
    color: var(--text-main);
  }
  .hist-kpi-card.verde .hist-kpi-val {
    color: var(--fc-verde, #10B981);
  }
  .hist-kpi-card.naranja .hist-kpi-val {
    color: var(--fc-naranja, #FF6B35);
  }
  .hist-kpi-lbl {
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 0.04em;
    color: var(--text-muted);
  }
  .hist-items-container {
    display: flex;
    flex-direction: column;
    gap: 10px;
  }
  .hist-card-row {
    background: var(--bg-surface);
    border: 1.5px solid var(--border);
    border-radius: 16px;
    padding: 14px 18px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 14px;
    transition: all .15s ease;
    box-shadow: 0 2px 6px rgba(0,0,0,0.03);
  }
  .hist-card-row:hover {
    border-color: rgba(255,107,53,0.45);
    background: var(--bg-card);
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(0,0,0,0.06);
  }
  .hist-left-badge {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 6px 10px;
    border-radius: 12px;
    background: var(--bg-card);
    border: 1.5px solid var(--border);
    min-width: 86px;
    flex-shrink: 0;
  }
  .hist-code-text {
    font-family: 'IBM Plex Mono', monospace;
    font-weight: 800;
    font-size: 13.5px;
    color: var(--fc-naranja, #FF6B35);
  }
  .hist-time-text {
    font-size: 10.5px;
    color: var(--text-muted);
    margin-top: 2px;
  }
  .hist-info-main {
    flex: 1;
    min-width: 0;
  }
  .hist-info-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--text-main);
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
  }
  .hist-info-sub {
    font-size: 12px;
    color: var(--text-muted);
    margin-top: 4px;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
  }
  .hist-right-actions {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-shrink: 0;
  }
  .hist-total-amount {
    font-family: 'IBM Plex Mono', monospace;
    font-weight: 800;
    font-size: 17px;
    color: var(--fc-verde, #10B981);
    text-align: right;
    min-width: 90px;
  }
  .hist-btn-icon-touch {
    height: 36px;
    padding: 0 12px;
    border-radius: 10px;
    border: 1.5px solid var(--border);
    background: var(--bg-card);
    color: var(--text-main);
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: all .15s;
  }
  .hist-btn-icon-touch:hover {
    background: var(--fc-naranja, #FF6B35);
    color: #FFFFFF;
    border-color: var(--fc-naranja, #FF6B35);
  }
  .hist-badge-pill {
    font-size: 10.5px;
    font-weight: 800;
    padding: 2px 8px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    letter-spacing: 0.02em;
  }
  .hist-empty-state {
    text-align: center;
    padding: 48px 24px;
    background: var(--bg-surface);
    border: 1.5px dashed var(--border);
    border-radius: 20px;
    margin: 10px 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
  }
  .hist-empty-icon {
    width: 54px;
    height: 54px;
    border-radius: 50%;
    background: var(--bg-card);
    border: 1.5px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
    margin-bottom: 4px;
  }
  .hist-empty-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--text-main);
  }
  .hist-empty-desc {
    font-size: 12.5px;
    color: var(--text-muted);
    max-width: 380px;
    line-height: 1.5;
  }

  /* ==========================================================================
     MODULO EMPRESA — Rediseño UI/UX Arquitectónico y Sobrio (Sin emojis ni IA)
     ========================================================================== */
  .emp-wrapper {
    max-width: 1040px;
    margin: 0 auto;
  }
  .emp-header {
    margin-bottom: 22px;
  }
  .emp-header h2 {
    font-family: 'Sora', sans-serif;
    font-size: 26px;
    font-weight: 800;
    color: var(--texto);
    letter-spacing: -0.02em;
    margin-bottom: 6px;
  }
  .emp-header p {
    font-size: 14px;
    color: var(--texto-suave);
    line-height: 1.5;
  }

  /* Barra de pestañas principales */
  .emp-tabs-nav {
    display: flex;
    align-items: center;
    gap: 6px;
    background: var(--card-subtle);
    border: 1.5px solid var(--borde);
    border-radius: 14px;
    padding: 6px;
    margin-bottom: 24px;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .emp-tabs-nav::-webkit-scrollbar { display: none; }
  .emp-tab-btn {
    border: none;
    background: transparent;
    color: var(--texto-suave);
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 13.5px;
    font-weight: 600;
    padding: 10px 18px;
    border-radius: 9px;
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.16s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: relative;
  }
  .emp-tab-btn:hover {
    color: var(--texto);
    background: rgba(255, 255, 255, 0.04);
  }
  .emp-tab-btn.active {
    background: var(--blanco);
    color: var(--naranja);
    font-weight: 800;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.22);
    border: 1px solid var(--borde);
  }
  .emp-tab-btn.active::after {
    content: '';
    position: absolute;
    bottom: -1px;
    left: 18%;
    right: 18%;
    height: 2.5px;
    background: var(--naranja);
    border-radius: 2px;
  }

  /* Paneles de pestañas */
  .emp-panel {
    display: none;
  }
  .emp-panel.active {
    display: block;
    animation: empFadeIn 0.18s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes empFadeIn {
    from { opacity: 0; transform: translateY(4px); }
    to { opacity: 1; transform: translateY(0); }
  }

  /* Tarjetas del módulo Empresa */
  .emp-card {
    background: var(--blanco);
    border: 1.5px solid var(--borde);
    border-radius: 16px;
    padding: 24px 26px;
    margin-bottom: 22px;
    box-shadow: var(--shadow-card);
  }
  .emp-card-head {
    margin-bottom: 18px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--borde);
  }
  .emp-card-title {
    font-family: 'Sora', sans-serif;
    font-size: 16px;
    font-weight: 800;
    color: var(--texto);
    letter-spacing: -0.01em;
  }
  .emp-card-desc {
    font-size: 13px;
    color: var(--texto-suave);
    margin-top: 4px;
    line-height: 1.5;
  }

  /* Grillas de formulario */
  .emp-grid-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px 20px;
  }
  .emp-col-full {
    grid-column: 1 / -1;
  }
  @media (max-width: 680px) {
    .emp-grid-2 {
      grid-template-columns: 1fr;
      gap: 14px;
    }
  }

  /* Identidad de marca */
  .emp-logo-section {
    display: flex;
    align-items: center;
    gap: 22px;
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--borde);
  }
  .emp-logo-box-wrap {
    width: 88px;
    height: 88px;
    border-radius: 16px;
    background: var(--card-subtle);
    border: 1.5px dashed var(--borde);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex-shrink: 0;
  }
  .emp-logo-box-wrap img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 4px;
  }
  .emp-logo-placeholder {
    font-size: 12px;
    font-weight: 700;
    color: var(--texto-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
  }
  .emp-logo-controls {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }

  /* Vista previa comprobante / ticket */
  .emp-receipt-wrap {
    background: #0E0C0B;
    border: 1.5px dashed var(--borde);
    border-radius: 12px;
    padding: 16px 20px;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 12px;
    color: var(--texto);
    line-height: 1.55;
    margin-top: 14px;
    max-width: 440px;
  }
  .emp-receipt-header {
    text-align: center;
    margin-bottom: 8px;
  }
  .emp-receipt-brand {
    font-weight: 700;
    font-size: 13.5px;
    color: var(--texto);
    letter-spacing: 0.04em;
  }
  .emp-receipt-sub {
    font-size: 11px;
    color: var(--texto-suave);
    margin-top: 2px;
  }
  .emp-receipt-line {
    color: var(--borde);
    overflow: hidden;
    user-select: none;
    margin: 6px 0;
  }
  .emp-receipt-row {
    display: flex;
    justify-content: space-between;
    font-size: 11.5px;
    color: var(--texto-suave);
  }
  .emp-receipt-row.total {
    font-weight: 700;
    color: var(--texto);
    font-size: 12px;
  }
  .emp-receipt-footer-box {
    text-align: center;
    padding: 8px 6px;
    font-weight: 600;
    color: var(--naranja);
    background: rgba(255, 107, 53, 0.07);
    border-radius: 6px;
    margin-top: 6px;
    word-break: break-word;
  }

  /* Selector de modo operativo (sin emojis) */
  .emp-mode-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-bottom: 18px;
  }
  @media (max-width: 600px) {
    .emp-mode-grid { grid-template-columns: 1fr; }
  }
  .emp-mode-opt {
    border: 1.5px solid var(--borde);
    border-radius: 12px;
    padding: 16px 18px;
    background: var(--card-subtle);
    cursor: pointer;
    transition: all 0.16s ease;
    text-align: left;
    width: 100%;
  }
  .emp-mode-opt:hover {
    border-color: var(--naranja-linea);
  }
  .emp-mode-opt.active {
    border-color: var(--naranja);
    background: rgba(255, 107, 53, 0.08);
    box-shadow: 0 0 0 1px var(--naranja);
  }
  .emp-mode-title {
    font-family: 'Sora', sans-serif;
    font-size: 15px;
    font-weight: 800;
    color: var(--texto);
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
  .emp-mode-title-badge {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: 6px;
    background: var(--naranja-suave);
    color: var(--naranja);
    display: none;
  }
  .emp-mode-opt.active .emp-mode-title-badge {
    display: inline-block;
  }
  .emp-mode-desc {
    font-size: 12.5px;
    color: var(--texto-suave);
    margin-top: 8px;
    line-height: 1.45;
  }

  /* Estado del servicio de impresion (sin emojis) */
  .emp-service-badge {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 16px;
    width: 100%;
  }
  .emp-status-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    flex-shrink: 0;
  }

  /* Acciones de prueba de impresion */
  .emp-test-group {
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid var(--borde);
  }
  .emp-test-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--texto);
    margin-bottom: 10px;
  }
  .emp-test-buttons {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 10px;
  }

  /* Métodos QR */
  .emp-qr-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 14px 18px;
    background: var(--card-subtle);
    border: 1px solid var(--borde);
    border-radius: 12px;
    transition: border-color 0.15s ease, background 0.15s ease;
  }
  .emp-qr-row:hover {
    border-color: var(--naranja-linea);
  }
  .emp-qr-main {
    display: flex;
    align-items: center;
    gap: 14px;
    min-width: 0;
  }
  .emp-qr-thumb {
    width: 48px;
    height: 48px;
    border-radius: 10px;
    background: #fff;
    border: 1px solid var(--borde);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex-shrink: 0;
  }
  .emp-qr-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  .emp-qr-info {
    min-width: 0;
  }
  .emp-qr-name {
    font-weight: 700;
    font-size: 14.5px;
    color: var(--texto);
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
  }
  .emp-qr-data {
    font-size: 12.5px;
    color: var(--texto-suave);
    font-family: 'IBM Plex Mono', monospace;
    margin-top: 2px;
  }
  .emp-qr-status-tag {
    font-size: 10.5px;
    font-weight: 800;
    text-transform: uppercase;
    padding: 2px 7px;
    border-radius: 4px;
    letter-spacing: 0.03em;
  }
  .emp-qr-status-tag.activo {
    background: rgba(16, 185, 129, 0.12);
    color: #10B981;
    border: 1px solid rgba(16, 185, 129, 0.25);
  }
  .emp-qr-status-tag.pausado {
    background: rgba(245, 158, 11, 0.12);
    color: #F59E0B;
    border: 1px solid rgba(245, 158, 11, 0.25);
  }
  .emp-qr-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
  }

  /* Subpestañas Menú Digital */
  .emp-subtabs {
    display: inline-flex;
    gap: 4px;
    background: var(--card-subtle);
    border: 1px solid var(--borde);
    border-radius: 10px;
    padding: 4px;
    margin-bottom: 22px;
  }
  .emp-subtab-btn {
    border: none;
    background: transparent;
    color: var(--texto-suave);
    font-family: inherit;
    font-size: 13px;
    font-weight: 700;
    padding: 8px 16px;
    border-radius: 7px;
    cursor: pointer;
    transition: all 0.15s ease;
  }
  .emp-subtab-btn:hover {
    color: var(--texto);
  }
  .emp-subtab-btn.active {
    background: var(--blanco);
    color: var(--naranja);
    box-shadow: 0 1px 4px rgba(0,0,0,0.15);
  }
  .emp-subpanel {
    display: none;
  }
  .emp-subpanel.active {
    display: block;
    animation: empFadeIn 0.16s ease;
  }

  /* Previsualización móvil del menú */
  .emp-menu-split {
    display: grid;
    grid-template-columns: 360px 1fr;
    gap: 32px;
    align-items: start;
  }
  @media (max-width: 860px) {
    .emp-menu-split {
      grid-template-columns: 1fr;
      justify-items: center;
    }
  }
  .emp-mobile-mockup {
    width: 340px;
    max-width: 100%;
    height: 590px;
    background: #1C1714;
    border: 10px solid #2B231D;
    border-radius: 38px;
    overflow: hidden;
    position: relative;
    box-shadow: 0 18px 45px rgba(0, 0, 0, 0.6);
  }
  .emp-mobile-notch {
    width: 120px;
    height: 16px;
    background: #2B231D;
    border-radius: 0 0 12px 12px;
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    z-index: 10;
  }
  .emp-mobile-iframe {
    width: 100%;
    height: 100%;
    border: none;
    background: #FBF4E9;
  }
  .emp-menu-side-card {
    background: var(--blanco);
    border: 1.5px solid var(--borde);
    border-radius: 16px;
    padding: 24px;
    box-shadow: var(--shadow-card);
    width: 100%;
  }
  .emp-info-banner {
    padding: 14px 16px;
    background: rgba(255, 107, 53, 0.08);
    border-left: 3.5px solid var(--naranja);
    border-radius: 0 10px 10px 0;
    font-size: 13px;
    line-height: 1.5;
    color: var(--texto);
    margin: 18px 0;
  }

  /* Sección Código QR */
  .emp-qr-code-view {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 32px;
    align-items: start;
  }
  @media (max-width: 780px) {
    .emp-qr-code-view {
      grid-template-columns: 1fr;
      justify-items: center;
    }
  }
  .emp-qr-big-box {
    background: #FFFFFF;
    border: 1px solid var(--borde);
    border-radius: 18px;
    padding: 24px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    box-shadow: var(--shadow-card);
    width: 100%;
    max-width: 280px;
  }
  .emp-qr-svg-holder {
    width: 220px;
    height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .emp-qr-svg-holder svg {
    width: 100%;
    height: 100%;
    display: block;
  }
  .emp-qr-big-caption {
    font-size: 11px;
    font-weight: 700;
    color: #6E5F4E;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-top: 14px;
  }
  .emp-input-copy-group {
    display: flex;
    gap: 8px;
    margin-top: 6px;
  }
  .emp-input-copy-group input {
    flex: 1;
    min-width: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 13px;
    background: var(--card-subtle);
  }

  /* Grilla selectora de plantillas de menú */
  .emp-template-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-top: 18px;
  }
  @media (max-width: 768px) {
    .emp-template-grid {
      grid-template-columns: 1fr;
    }
  }
  .emp-template-card {
    background: var(--card-subtle);
    border: 2px solid var(--borde);
    border-radius: 16px;
    padding: 20px;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.15s ease;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
  }
  .emp-template-card:hover {
    border-color: rgba(255, 107, 53, 0.45);
    transform: translateY(-2px);
  }
  .emp-template-card.active {
    border-color: var(--naranja);
    background: rgba(255, 107, 53, 0.05);
    box-shadow: 0 0 0 1px var(--naranja), 0 8px 20px -6px rgba(255, 107, 53, 0.2);
  }
  .emp-tpl-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
  }
  .emp-tpl-type {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--texto-suave);
    letter-spacing: 0.08em;
  }
  .emp-tpl-badge {
    font-size: 11px;
    font-weight: 800;
    padding: 3px 9px;
    border-radius: 999px;
    background: var(--naranja);
    color: #fff;
    display: none;
  }
  .emp-template-card.active .emp-tpl-badge {
    display: inline-block;
  }
  .emp-tpl-preview-thumb {
    height: 120px;
    border-radius: 10px;
    margin-bottom: 14px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    border: 1px solid var(--borde);
  }
  .emp-thumb-classic {
    background: #FBF4E9;
    color: #2B2117;
  }
  .emp-thumb-3d {
    background: #181614;
    color: #fff;
  }
  .thumb-paper-header {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
  }
  .thumb-circle-logo {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #DDCBAC;
  }
  .thumb-line-title {
    width: 60px;
    height: 6px;
    background: #B5522A;
    border-radius: 3px;
  }
  .thumb-line-sub {
    width: 35px;
    height: 3px;
    background: #DDCBAC;
    border-radius: 2px;
  }
  .thumb-paper-items {
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .thumb-row {
    display: flex;
    align-items: center;
    gap: 4px;
  }
  .thumb-row span:first-child {
    width: 40px;
    height: 4px;
    background: #6E5F4E;
    border-radius: 2px;
  }
  .thumb-row .dots {
    flex: 1;
    border-bottom: 1px dotted #DDCBAC;
  }
  .thumb-row span:last-child {
    width: 22px;
    height: 4px;
    background: #B5522A;
    border-radius: 2px;
  }
  .thumb-app-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  .thumb-app-brand {
    width: 50px;
    height: 6px;
    background: #fff;
    border-radius: 3px;
  }
  .thumb-theme-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--naranja);
  }
  .thumb-search-bar {
    height: 14px;
    background: #26221E;
    border-radius: 6px;
    border: 1px solid #38322B;
  }
  .thumb-pills-row {
    display: flex;
    gap: 4px;
  }
  .thumb-pills-row span {
    width: 28px;
    height: 8px;
    background: #2C2621;
    border-radius: 4px;
  }
  .thumb-pills-row span:first-child {
    background: var(--naranja);
  }
  .thumb-app-card {
    display: flex;
    gap: 6px;
    align-items: center;
    background: #221D19;
    padding: 4px;
    border-radius: 6px;
  }
  .thumb-app-img {
    width: 24px;
    height: 24px;
    border-radius: 4px;
    background: #3B322A;
  }
  .thumb-app-text {
    display: flex;
    flex-direction: column;
    gap: 3px;
    flex: 1;
  }
  .thumb-app-text span:first-child {
    width: 60%;
    height: 4px;
    background: #fff;
    border-radius: 2px;
  }
  .thumb-app-text span:last-child {
    width: 30%;
    height: 3px;
    background: var(--naranja);
    border-radius: 2px;
  }
  .emp-tpl-title {
    font-family: 'Sora', sans-serif;
    font-size: 15px;
    font-weight: 700;
    color: var(--texto);
    margin-bottom: 6px;
  }
  .emp-tpl-desc {
    font-size: 12px;
    line-height: 1.45;
    color: var(--texto-suave);
    margin-bottom: 16px;
  }
  .emp-template-card.active .emp-tpl-action-btn {
    background: var(--naranja);
    color: #fff;
    border-color: var(--naranja);
  }

  /* Mockup visual del Hablador de Mesa a escala */
  .emp-hablador-stand-box {
    width: 320px;
    max-width: 100%;
    display: flex;
    justify-content: center;
  }
  .emp-stand-mini-card {
    width: 280px;
    aspect-ratio: 9 / 16;
    background: #FFFFFF;
    border-radius: 20px;
    border: 1px solid var(--borde);
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.35);
    padding: 18px 14px 14px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    text-align: center;
    position: relative;
    overflow: hidden;
    color: #111827;
  }
  .mini-stand-accent {
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 5px;
    background: linear-gradient(90deg, var(--naranja), #F2B84B);
  }
  .mini-stand-brand {
    font-family: 'Sora', sans-serif;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.04em;
    color: #111827;
    display: block;
    margin-bottom: 2px;
  }
  .mini-stand-eyebrow {
    font-size: 9px;
    font-weight: 800;
    color: var(--naranja);
    letter-spacing: 0.14em;
    text-transform: uppercase;
  }
  .mini-stand-title {
    font-family: 'Sora', sans-serif;
    font-size: 18px;
    font-weight: 800;
    color: #111827;
    line-height: 1.1;
  }
  .mini-stand-sub {
    font-size: 10px;
    color: #6B7280;
    line-height: 1.3;
    margin-top: 2px;
  }
  .mini-stand-tpl-badge {
    display: inline-block;
    font-size: 8.5px;
    font-weight: 700;
    padding: 2px 7px;
    border-radius: 999px;
    background: rgba(255, 107, 53, 0.12);
    color: var(--naranja);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-top: 4px;
  }
  .mini-stand-qr-box {
    width: 140px;
    height: 140px;
    margin: 4px auto;
    background: #fff;
    border: 1.5px solid #F3F4F6;
    border-radius: 12px;
    padding: 6px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.06);
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .mini-stand-qr-svg {
    width: 100%;
    height: 100%;
  }
  .mini-stand-qr-svg svg {
    width: 100%;
    height: 100%;
    display: block;
  }
  .mini-stand-steps {
    display: flex;
    flex-direction: column;
    gap: 4px;
    text-align: left;
    padding: 0 6px;
    font-size: 9.5px;
    font-weight: 600;
    color: #4B5563;
  }
  .mini-stand-steps div {
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .mini-stand-steps span {
    width: 15px;
    height: 15px;
    border-radius: 50%;
    background: rgba(255, 107, 53, 0.14);
    color: var(--naranja);
    font-size: 9px;
    font-weight: 800;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
  }
  .mini-stand-foot {
    border-top: 1px dashed #E5E7EB;
    padding-top: 5px;
    font-size: 8.5px;
    color: #6B7280;
  }
  .mini-stand-url {
    color: var(--naranja);
    font-weight: 700;
    margin-top: 2px;
    font-size: 8px;
    word-break: break-all;
  }



  /* Reglas genericas usadas fuera de Marketing tambien (Superadmin, tabs en general) */
  .field-note { font-size: 11px; color: var(--texto-suave); margin-top: 3px; display: block; }
  .tab-panel {
    scroll-margin-top: calc(70px + var(--safe-t));
  }

  /* Recibo Térmico Físico 80mm con borde dentado de guillotina */
  .receipt-giant {
    background: #FFFEFA;
    color: #111111;
    font-family: 'IBM Plex Mono', monospace;
    box-shadow: 0 15px 35px rgba(0,0,0,0.8);
    position: relative;
  }
  .receipt-giant::after {
    content: '';
    position: absolute;
    bottom: -6px;
    left: 0;
    right: 0;
    height: 6px;
    background: radial-gradient(circle, transparent, transparent 50%, #FFFEFA 50%, #FFFEFA 100%);
    background-size: 12px 12px;
  }
