﻿/* ===== TIPOGRAFÍA JETBRAINS MONO GLOBAL ===== */
html, body, button, input, select, textarea, table, td, th,
.card, .nav-item, .page-title, .page-sub, .stat-num, .stat-label, .label,
.filter-btn, .submit-btn, .btn-primary, .field input, .field select,
.login-tab, .form-check-item, .ztut-card, .ztut-card *, .ztut-h, .ztut-p {
  font-family: 'Barlow','Segoe UI',system-ui,sans-serif !important;
}

/* ===== TPV ===== */
.tpv-mode-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.tpv-mode{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:14px 16px;border-radius:14px;border:1.5px solid var(--border2);background:var(--surface);cursor:pointer;text-align:left;transition:all .18s;box-shadow:var(--shadow-sm)}
.tpv-mode:hover{border-color:#8b5cf6;transform:translateY(-1px);box-shadow:0 8px 22px rgba(91,42,134,.12)}
.tpv-mode.active{border-color:#5b2a86;background:linear-gradient(135deg,#5b2a86,#8b5cf6);color:#fff;box-shadow:0 8px 22px rgba(91,42,134,.32)}
.tpv-mode-ico{font-size:22px;line-height:1}
.tpv-mode-lbl{font-size:13.5px;font-weight:800}
.tpv-mode-sub{font-size:10.5px;opacity:.7;letter-spacing:.02em}
.tpv-mode.active .tpv-mode-sub{opacity:.9}
.tpv-layout{display:grid;grid-template-columns:1fr 360px;gap:14px}
.tpv-catalog{padding:1rem 1.1rem}
.tpv-cat-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:1rem;padding-bottom:.8rem;border-bottom:1px solid var(--border)}
.tpv-cat-tab{padding:7px 14px;border-radius:50px;border:1px solid var(--border2);background:var(--surface2);color:var(--muted);font-size:12px;font-weight:700;cursor:pointer;transition:all .15s;letter-spacing:.02em}
.tpv-cat-tab.active{background:#5b2a86;color:#fff;border-color:#5b2a86;box-shadow:0 4px 12px rgba(91,42,134,.28)}
.tpv-products{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.tpv-product{padding:14px 10px;border-radius:12px;border:1.5px solid var(--border2);background:var(--surface);cursor:pointer;text-align:center;transition:all .15s;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:6px;align-items:center}
.tpv-product:hover{border-color:#8b5cf6;transform:translateY(-2px);box-shadow:0 10px 22px rgba(91,42,134,.16)}
.tpv-product:active{transform:translateY(0)}
.tpv-product-ico{font-size:26px;line-height:1}
.tpv-product-name{font-size:11.5px;font-weight:700;color:var(--text);letter-spacing:.01em;line-height:1.2}
.tpv-product-price{font-size:12.5px;font-weight:800;color:#5b2a86;letter-spacing:.02em}
.tpv-cart{padding:1rem 1.1rem;display:flex;flex-direction:column;position:sticky;top:1rem;height:fit-content;max-height:calc(100vh - 2rem);overflow:auto}
.tpv-cart-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}
.tpv-cart-clear{background:none;border:none;color:var(--muted);cursor:pointer;font-size:16px;width:28px;height:28px;border-radius:8px;transition:all .15s}
.tpv-cart-clear:hover{background:rgba(239,68,68,.1);color:#ef4444}
#tpv-cart-items{flex:1;min-height:80px;margin-bottom:.8rem;max-height:300px;overflow:auto}
.tpv-cart-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;background:var(--surface2);margin-bottom:5px;border:1px solid var(--border)}
.tpv-cart-item-name{flex:1;font-size:12px;font-weight:600;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tpv-cart-item-qty{display:flex;gap:3px;align-items:center}
.tpv-cart-qty-btn{width:22px;height:22px;border-radius:6px;border:1px solid var(--border2);background:var(--surface);cursor:pointer;font-weight:800;color:#5b2a86;display:flex;align-items:center;justify-content:center;line-height:1}
.tpv-cart-qty-btn:hover{background:#5b2a86;color:#fff;border-color:#5b2a86}
.tpv-cart-qty-num{font-size:12px;font-weight:800;min-width:22px;text-align:center}
.tpv-cart-item-price{font-size:12px;font-weight:800;color:#5b2a86;min-width:55px;text-align:right}
.tpv-cart-empty{text-align:center;color:var(--muted);font-size:11.5px;padding:1.5rem .5rem}
.tpv-cart-totals{border-top:1px solid var(--border);padding-top:.8rem;margin-bottom:.8rem}
.tpv-cart-row{display:flex;justify-content:space-between;padding:3px 0;font-size:12px;color:var(--muted)}
.tpv-cart-row.tpv-cart-total{font-size:16px;font-weight:900;color:var(--text);padding-top:8px;margin-top:5px;border-top:1px dashed var(--border)}
.tpv-cart-total span:last-child{color:#5b2a86}
.tpv-pay-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tpv-pay{padding:12px 8px;border-radius:12px;border:none;cursor:pointer;font-size:12px;font-weight:800;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all .18s;color:#fff;box-shadow:var(--shadow-sm)}
.tpv-pay:hover{transform:translateY(-1px)}
.tpv-pay:disabled{opacity:.4;cursor:not-allowed;transform:none}
.tpv-pay span:first-child{font-size:20px;line-height:1}
.tpv-pay-cash{background:linear-gradient(135deg,#10b981,#059669)}
.tpv-pay-card{background:linear-gradient(135deg,#2563eb,#1e40af)}
.tpv-pay-bizum{background:linear-gradient(135deg,#06b6d4,#0891b2)}
.tpv-pay-charge{background:linear-gradient(135deg,#5b2a86,#8b5cf6)}
.tpv-ticket{background:#fff;border-radius:18px;padding:1.8rem;max-width:380px;width:100%;box-shadow:0 24px 60px rgba(15,23,42,.3);max-height:90vh;overflow:auto}
.tpv-ticket-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:.8rem;border-bottom:2px dashed #e2e8f0;margin-bottom:.8rem}
.tpv-ticket-head strong{font-size:15px;color:#0f1e3d}
.tpv-ticket-head span{font-size:11px;color:#64748b;font-weight:700}
.tpv-ticket-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;font-size:10.5px;margin-bottom:1rem}
.tpv-ticket-meta div{display:flex;flex-direction:column;gap:2px}
.tpv-ticket-meta span{color:#94a3b8;letter-spacing:.05em;font-weight:600}
.tpv-ticket-meta b{color:#0f1e3d;font-size:11.5px}
.tpv-ticket-items{font-size:11.5px;margin-bottom:.8rem;padding:.5rem 0;border-top:1px dashed #e2e8f0;border-bottom:1px dashed #e2e8f0}
.tpv-ticket-line{display:flex;justify-content:space-between;padding:3px 0}
.tpv-ticket-line span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#334155}
.tpv-ticket-totals{font-size:12px;margin-bottom:1rem}
.tpv-ticket-totals div{display:flex;justify-content:space-between;padding:3px 0;color:#64748b}
.tpv-ticket-total{padding-top:8px!important;margin-top:5px;border-top:1px solid #e2e8f0;color:#0f1e3d!important;font-size:15px!important;font-weight:900}
.tpv-ticket-total b{color:#5b2a86}
.tpv-ticket-actions{display:flex;gap:6px;flex-wrap:wrap}
.tpv-ticket-btn-ghost,.tpv-ticket-btn-primary{flex:1;padding:9px;border-radius:10px;border:1px solid #e2e8f0;background:#f8fafc;color:#334155;font-size:11.5px;font-weight:700;cursor:pointer;transition:all .15s}
.tpv-ticket-btn-ghost:hover{background:#eef2ff;border-color:#a78bfa;color:#5b2a86}
.tpv-ticket-btn-primary{background:linear-gradient(135deg,#5b2a86,#8b5cf6);color:#fff;border:none}
@media(max-width:900px){
  .tpv-mode-grid{grid-template-columns:1fr 1fr}
  .tpv-layout{grid-template-columns:1fr}
  .tpv-cart{position:static;max-height:none}
}

/* TPV TOPBAR */
.tpv-top-actions{display:flex;gap:6px;flex-wrap:wrap}
.tpv-mini-btn{padding:8px 14px;border-radius:50px;border:1px solid var(--border2);background:var(--surface);color:var(--text);font-size:11.5px;font-weight:700;cursor:pointer;letter-spacing:.01em;transition:all .15s;display:inline-flex;align-items:center;gap:5px;font-family:inherit}
.tpv-mini-btn:hover{border-color:#8b5cf6;color:#5b2a86;background:rgba(139,92,246,.05)}
.tpv-mini-btn.primary{background:linear-gradient(135deg,#5b2a86,#8b5cf6);color:#fff;border:none;box-shadow:0 4px 14px rgba(91,42,134,.25)}
.tpv-mini-btn.primary:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(91,42,134,.4);color:#fff}
.tpv-topbar{display:grid;grid-template-columns:1.2fr 1.2fr 1fr 1fr;gap:14px;padding:1rem 1.2rem;align-items:end}
.tpv-topbar-block{display:flex;flex-direction:column;gap:5px;min-width:0}
.tpv-topbar-block select{padding:9px 12px;border-radius:10px;border:1px solid var(--border2);background:var(--surface);font-size:12.5px;font-weight:600;color:var(--text);font-family:inherit;cursor:pointer}
.tpv-topbar-val{display:flex;align-items:baseline;gap:6px}
.tpv-topbar-val b{font-size:17px;font-weight:900;color:#5b2a86}
.tpv-topbar-val span{font-size:11px;font-weight:700;color:var(--muted)}
.tpv-caja-state{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:10px;background:rgba(239,68,68,.08);color:#ef4444;font-size:12.5px;font-weight:800;letter-spacing:.02em;height:36px}
.tpv-caja-state .tpv-caja-dot{width:9px;height:9px;border-radius:50%;background:#ef4444;box-shadow:0 0 8px #ef4444}
.tpv-caja-state.open{background:rgba(16,185,129,.1);color:#059669}
.tpv-caja-state.open .tpv-caja-dot{background:#10b981;box-shadow:0 0 10px #10b981;animation:tpvCajaPulse 2s infinite}
@keyframes tpvCajaPulse{0%,100%{opacity:1}50%{opacity:.4}}
@media(max-width:780px){
  .tpv-topbar{grid-template-columns:1fr 1fr}
}

/* TPV MODAL (compartido productos/turnos/caja) */
.tpv-modal{position:fixed;inset:0;z-index:9998;background:rgba(15,23,42,.55);backdrop-filter:blur(6px);align-items:center;justify-content:center;padding:1rem}
.tpv-modal[style*="display:none"]{display:none!important}
.tpv-modal[style*="display: none"]{display:none!important}
.tpv-modal-box{background:var(--surface);border-radius:18px;width:100%;box-shadow:0 24px 60px rgba(15,23,42,.3);max-height:90vh;display:flex;flex-direction:column;font-family:inherit}
.tpv-modal-head{display:flex;justify-content:space-between;align-items:center;padding:1.1rem 1.4rem;border-bottom:1px solid var(--border)}
.tpv-modal-head strong{font-size:15px;color:var(--text);font-weight:800;letter-spacing:.01em}
.tpv-modal-close{background:none;border:none;color:var(--muted);cursor:pointer;font-size:18px;width:32px;height:32px;border-radius:8px;transition:all .15s}
.tpv-modal-close:hover{background:rgba(239,68,68,.1);color:#ef4444}
.tpv-modal-body{padding:1.2rem 1.4rem;overflow:auto;flex:1}
.tpv-modal-tabs{display:flex;gap:5px;margin-bottom:1.2rem;border-bottom:1px solid var(--border);padding-bottom:0}
.tpv-modal-tab{padding:9px 14px;border:none;background:transparent;color:var(--muted);font-size:12.5px;font-weight:700;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit;transition:all .15s;letter-spacing:.01em}
.tpv-modal-tab.active{color:#5b2a86;border-bottom-color:#5b2a86}
.tpv-modal-tab:hover{color:var(--text)}
.row3{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:10px}
@media(max-width:520px){.row3{grid-template-columns:1fr}}

/* CATEGORIAS LIST */
.tpv-cat-item,.tpv-prod-item,.tpv-shift-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);margin-bottom:5px}
.tpv-cat-item-name,.tpv-shift-item-name{flex:1;font-size:12.5px;font-weight:700;color:var(--text)}
.tpv-cat-item-info,.tpv-shift-item-info{font-size:11px;color:var(--muted)}
.tpv-prod-item{display:grid;grid-template-columns:30px 1fr 80px 60px;gap:10px}
.tpv-prod-item-ico{font-size:20px;text-align:center}
.tpv-prod-item-name{font-size:12.5px;font-weight:700;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tpv-prod-item-price{font-size:12px;font-weight:800;color:#5b2a86;text-align:right}
.tpv-icon-btn{background:none;border:none;cursor:pointer;font-size:14px;width:28px;height:28px;border-radius:7px;color:var(--muted);transition:all .15s}
.tpv-icon-btn:hover{background:rgba(91,42,134,.08);color:#5b2a86}
.tpv-icon-btn.danger:hover{background:rgba(239,68,68,.1);color:#ef4444}

/* PRODUCT CARD edit overlay */
.tpv-product{position:relative}
.tpv-product:hover .tpv-prod-actions{opacity:1}
.tpv-prod-actions{position:absolute;top:4px;right:4px;display:flex;gap:2px;opacity:0;transition:opacity .15s}
.tpv-prod-actions button{width:22px;height:22px;border-radius:6px;border:none;background:rgba(255,255,255,.9);box-shadow:0 2px 6px rgba(0,0,0,.15);cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;padding:0}
.tpv-prod-actions button:hover{background:#5b2a86;color:#fff}
.tpv-prod-actions button.danger:hover{background:#ef4444}

/* TPV CAJA close summary */
.caja-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:1rem}
.caja-card{padding:14px 14px;border-radius:12px;background:linear-gradient(135deg,rgba(91,42,134,.06),rgba(139,92,246,.04));border:1px solid var(--border)}
.caja-card-lbl{font-size:10.5px;color:var(--muted);font-weight:700;letter-spacing:.06em;margin-bottom:4px;text-transform:uppercase}
.caja-card-val{font-size:18px;font-weight:900;color:#5b2a86;letter-spacing:-.01em}
.caja-card-sub{font-size:10.5px;color:var(--muted);margin-top:2px}
.caja-methods{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:1rem}
.caja-method{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;border-radius:9px;background:var(--surface2);border:1px solid var(--border);font-size:12px}
.caja-method-name{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-weight:700}
.caja-method-amount{font-size:12.5px;font-weight:800;color:#5b2a86}
.caja-top-prods{margin-bottom:1rem}
.caja-top-prod{display:flex;justify-content:space-between;padding:6px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:9px;margin-bottom:4px;font-size:12px}
.caja-top-prod span:first-child{color:var(--text);font-weight:600}
.caja-top-prod span:last-child{color:#5b2a86;font-weight:800}
.caja-diff{padding:14px;border-radius:12px;margin-top:.6rem;font-size:13px;font-weight:800;text-align:center}
.caja-diff.ok{background:rgba(16,185,129,.12);color:#059669;border:1px solid rgba(16,185,129,.25)}
.caja-diff.over{background:rgba(245,158,11,.12);color:#d97706;border:1px solid rgba(245,158,11,.25)}
.caja-diff.short{background:rgba(239,68,68,.12);color:#dc2626;border:1px solid rgba(239,68,68,.25)}

/* Enlace secundario "ver cierres" */
.caja-link-btn{display:block;width:100%;margin-top:.6rem;padding:.55rem;background:none;border:none;color:#7c3aed;font-size:12.5px;font-weight:700;cursor:pointer;font-family:inherit;text-align:center}
.caja-link-btn:hover{text-decoration:underline}

/* Histórico de cierres (arqueos Z) */
.caja-cierres-list{display:flex;flex-direction:column;gap:6px;max-height:48vh;overflow-y:auto}
.caja-cierre-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid #eef0f4;border-radius:11px;background:#fff}
.caja-cierre-meta{flex:1;min-width:0}
.caja-cierre-when{font-size:13px;font-weight:700;color:#0f172a}
.caja-cierre-sede{font-size:11px;color:#94a3b8;margin-top:1px}
.caja-cierre-amount{font-size:13.5px;font-weight:800;color:#0f172a;font-variant-numeric:tabular-nums}
.caja-cierre-diff{font-size:12px;font-weight:800;min-width:62px;text-align:right;font-variant-numeric:tabular-nums;color:#94a3b8}
.caja-cierre-diff.ok{color:#059669}
.caja-cierre-diff.over{color:#d97706}
.caja-cierre-diff.short{color:#dc2626}

/* ===== WIFI ===== */
.wifi-tabs{display:flex;gap:6px;margin-bottom:1.2rem;border-bottom:1px solid var(--border);padding-bottom:0}
.wifi-tab{display:inline-flex;align-items:center;gap:7px;padding:10px 16px;border:none;background:transparent;color:var(--muted);font-size:13px;font-weight:700;cursor:pointer;border-bottom:2px solid transparent;transition:all .15s;letter-spacing:.01em}
.wifi-tab:hover{color:var(--text)}
.wifi-tab.active{color:#5b2a86;border-bottom-color:#5b2a86}
.wifi-portal-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.wifi-color{width:34px;height:34px;border-radius:50%;border:3px solid transparent;cursor:pointer;transition:all .15s;box-shadow:var(--shadow-sm)}
.wifi-color:hover{transform:scale(1.08)}
.wifi-color.active{border-color:var(--text);box-shadow:0 0 0 2px var(--surface),0 0 0 4px #5b2a86}
.wifi-preview-card{display:flex;flex-direction:column}
.wifi-preview{flex:1;border-radius:14px;background:linear-gradient(160deg,#1e1b4b,#0f172a);padding:1.5rem 1rem;min-height:380px;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}
.wifi-preview::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 30% 20%,rgba(91,42,134,.4),transparent 60%);pointer-events:none}
.wifi-preview-inner{position:relative;z-index:1;background:rgba(255,255,255,.05);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.15);border-radius:18px;padding:1.6rem 1.3rem;width:100%;max-width:280px;text-align:center;color:#fff}
.wifi-preview-logo{font-size:32px;margin-bottom:.6rem}
.wifi-preview-inner h3{font-size:17px;font-weight:800;margin:0 0 .4rem;color:#fff}
.wifi-preview-inner p{font-size:11.5px;color:rgba(255,255,255,.7);margin:0 0 1rem;line-height:1.5}
.wifi-preview-inner input{width:100%;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:9px 12px;color:#fff;font-size:12px;margin-bottom:8px;font-family:inherit}
.wifi-preview-inner input::placeholder{color:rgba(255,255,255,.45)}
.wifi-preview-inner button{width:100%;margin-top:.7rem;padding:11px;border-radius:10px;border:none;background:#5b2a86;color:#fff;font-size:13px;font-weight:800;cursor:pointer;letter-spacing:.02em}
.wifi-bars{display:flex;align-items:flex-end;gap:5px;height:140px;padding:0 4px}
.wifi-bars-axis{display:flex;justify-content:space-between;padding:6px 4px 0;font-size:10px;color:var(--muted);letter-spacing:.05em}
.wifi-bar{flex:1;background:linear-gradient(180deg,#8b5cf6,#5b2a86);border-radius:5px 5px 0 0;min-height:6px;transition:all .35s ease}
.wifi-bar:hover{filter:brightness(1.15)}
.wifi-device-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;background:var(--surface2);margin-bottom:5px;border:1px solid var(--border)}
.wifi-device-ico{width:32px;height:32px;border-radius:8px;background:rgba(91,42,134,.12);display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.wifi-device-body{flex:1;min-width:0}
.wifi-device-name{font-size:12.5px;font-weight:700;color:var(--text)}
.wifi-device-sub{font-size:10.5px;color:var(--muted);letter-spacing:.02em}
.wifi-device-time{font-size:11px;font-weight:700;color:#5b2a86}
.wifi-ssid-row{display:grid;grid-template-columns:1fr 130px 100px 70px 80px;gap:10px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;margin-bottom:6px;align-items:center;background:var(--surface)}
.wifi-ssid-name{font-size:13px;font-weight:700;color:var(--text);display:flex;gap:8px;align-items:center}
.wifi-ssid-dot{width:8px;height:8px;border-radius:50%;background:#10b981;box-shadow:0 0 8px #10b981}
.wifi-ssid-dot.off{background:#94a3b8;box-shadow:none}
.wifi-ssid-pass{font-size:11.5px;color:var(--muted);font-family:inherit;letter-spacing:.05em}
.wifi-ssid-band{font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:50px;background:rgba(91,42,134,.1);color:#5b2a86;text-align:center;letter-spacing:.02em}
.wifi-ssid-clients{font-size:11px;font-weight:700;color:var(--text);text-align:center}
.wifi-ssid-toggle{display:inline-flex;align-items:center;justify-content:center;width:42px;height:24px;border-radius:50px;background:#94a3b8;cursor:pointer;transition:all .2s;border:none;position:relative;padding:0}
.wifi-ssid-toggle.on{background:#5b2a86}
.wifi-ssid-toggle::after{content:'';width:18px;height:18px;border-radius:50%;background:#fff;position:absolute;left:3px;transition:all .2s;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.wifi-ssid-toggle.on::after{left:21px}
@media(max-width:760px){
  .wifi-portal-grid{grid-template-columns:1fr}
  .wifi-ssid-row{grid-template-columns:1fr;gap:5px}
}

/* ===== INVENTARIO · transferencias + alertas integradas ===== */
.inv-transfer-card{background:linear-gradient(135deg,rgba(91,42,134,.06) 0%,rgba(139,92,246,.04) 100%);border-left:3px solid #5b2a86}
.inv-mov-list{display:flex;flex-direction:column;gap:6px}
.inv-mov-row{display:grid;grid-template-columns:24px 1fr 90px 110px 70px;gap:10px;align-items:center;padding:9px 11px;border:1px solid var(--border);border-radius:10px;background:var(--surface);font-size:12px}
.inv-mov-ico{font-size:14px;text-align:center}
.inv-mov-body{min-width:0}
.inv-mov-body b{display:block;font-size:12px;color:var(--text);font-weight:700;letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inv-mov-body span{display:block;font-size:10.5px;color:var(--muted);margin-top:2px}
.inv-mov-sede{font-size:10.5px;font-weight:700;color:#5b2a86;text-align:center}
.inv-mov-time{font-size:10.5px;color:var(--muted);text-align:right}
.inv-mov-qty{font-size:13px;font-weight:900;text-align:right;letter-spacing:.02em}
.inv-mov-qty.in{color:#059669}
.inv-mov-qty.out{color:#dc2626}
.inv-mov-empty{padding:1.4rem;text-align:center;color:var(--muted);font-size:12px}
@media(max-width:760px){.inv-mov-row{grid-template-columns:24px 1fr 70px;gap:6px}.inv-mov-sede,.inv-mov-time{display:none}}

.inv-alert-summary{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:50px;background:rgba(239,68,68,.1);color:#dc2626;font-size:12px;font-weight:800}
.inv-alert-dot{width:8px;height:8px;border-radius:50%;background:#ef4444;box-shadow:0 0 8px #ef4444;animation:wifiLivePulse 1.5s infinite}
.inv-alerts-list{display:flex;flex-direction:column;gap:8px}
.inv-alert-row{display:grid;grid-template-columns:32px 1fr auto auto;gap:12px;align-items:center;padding:11px 14px;border:1px solid #fecaca;border-left:3px solid #ef4444;border-radius:11px;background:linear-gradient(135deg,rgba(254,226,226,.4),rgba(255,255,255,1));transition:all .15s}
.inv-alert-row:hover{transform:translateX(2px);box-shadow:0 4px 14px rgba(239,68,68,.12)}
.inv-alert-ico{width:32px;height:32px;border-radius:9px;background:rgba(239,68,68,.12);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.inv-alert-body b{display:block;font-size:13px;font-weight:800;color:var(--text);letter-spacing:.01em}
.inv-alert-body span{display:block;font-size:11px;color:var(--muted);margin-top:2px}
.inv-alert-stock{font-size:12px;font-weight:900;color:#dc2626;text-align:right}
.inv-alert-stock small{display:block;font-size:9.5px;color:var(--muted);font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.inv-alert-btn{padding:7px 14px;border:none;border-radius:8px;background:linear-gradient(135deg,#5b2a86,#8b5cf6);color:#fff;font-size:11px;font-weight:800;cursor:pointer;font-family:inherit;letter-spacing:.01em;transition:all .15s}
.inv-alert-btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(91,42,134,.32)}
.inv-alert-empty{padding:2rem;text-align:center;color:#059669;background:rgba(16,185,129,.06);border:1px dashed rgba(16,185,129,.3);border-radius:14px}
.inv-alert-empty b{display:block;font-size:14px;font-weight:800;margin-bottom:4px;color:#059669}
.inv-alert-empty span{font-size:12px;color:var(--muted)}
@media(max-width:760px){.inv-alert-row{grid-template-columns:32px 1fr auto;gap:8px}.inv-alert-btn{grid-column:1/-1;width:100%;margin-top:6px}}

/* =================== LANGUAGE SELECTOR (managed by i18n.js) =================== */
#z-lang-selector{ display:none; } /* hidden by default; i18n.js controls visibility */

/* =================== iPHONE MOCKUP (Wifi + WhatsApp) =================== */
.iphone-wrap{display:flex;justify-content:center;align-items:flex-start;padding:1rem 0}
.iphone{position:relative;width:300px;height:620px;background:#0f0f12;border-radius:46px;padding:8px;box-shadow:0 28px 72px -10px rgba(15,23,42,.42),0 6px 18px -4px rgba(15,23,42,.28);flex-shrink:0;background:linear-gradient(135deg,#1c1c20 0%,#0a0a0c 60%,#1c1c20 100%)}
.iphone-notch{position:absolute;top:14px;left:50%;transform:translateX(-50%);width:96px;height:28px;background:#000;border-radius:50px;z-index:5;display:flex;align-items:center;justify-content:flex-end;padding-right:11px}
.iphone-notch::after{content:'';width:8px;height:8px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#3b4a68,#070a14)}
.iphone-screen{position:relative;width:100%;height:100%;background:#fff;border-radius:38px;overflow:hidden;display:flex;flex-direction:column}
.iphone-home{position:absolute;bottom:7px;left:50%;transform:translateX(-50%);width:108px;height:4px;background:rgba(255,255,255,.55);border-radius:50px;z-index:6}
.iphone-statusbar{display:flex;justify-content:space-between;align-items:center;padding:14px 28px 4px;font-size:13px;font-weight:800;color:#0f1e3d;letter-spacing:-.01em;flex-shrink:0;font-family:'Barlow','Segoe UI',system-ui,sans-serif}
.iphone-status-icons{font-size:11px;letter-spacing:.1em}

/* =================== WIFI PORTAL PREVIEW (dentro de iPhone) =================== */
.wifi-portal-page{flex:1;display:flex;flex-direction:column;background:linear-gradient(160deg,#1e1b4b 0%,#0f172a 100%);position:relative;overflow:hidden;color:#fff}
.wifi-portal-page::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 25% 15%,rgba(91,42,134,.5),transparent 55%);pointer-events:none}
.wifi-portal-content{position:relative;z-index:1;flex:1;padding:1.5rem 1.3rem;display:flex;flex-direction:column;align-items:center;text-align:center;overflow:auto;transition:opacity .4s}
.wifi-portal-logo{font-size:38px;margin-bottom:.6rem;filter:drop-shadow(0 6px 16px rgba(91,42,134,.5))}
.wifi-portal-content h3{font-size:18px;font-weight:900;margin:0 0 .4rem;color:#fff;letter-spacing:-.01em}
.wifi-portal-content p{font-size:11.5px;color:rgba(255,255,255,.7);margin:0 0 1rem;line-height:1.5;max-width:240px}
.wifi-portal-banner{width:100%;border-radius:12px;padding:.7rem .9rem;font-size:11px;font-weight:700;margin-bottom:1rem;display:flex;align-items:center;gap:8px;background:linear-gradient(135deg,#5b2a86,#8b5cf6);color:#fff;box-shadow:0 8px 20px rgba(91,42,134,.4)}
.wifi-portal-banner.empty{display:none}
.wifi-portal-banner-ico{font-size:18px}
.wifi-portal-banner-body{flex:1;text-align:left;min-width:0}
.wifi-portal-banner-body b{display:block;font-size:11.5px;font-weight:900;letter-spacing:.01em}
.wifi-portal-banner-body span{font-size:10px;opacity:.85;font-weight:600}
#wifi-preview-fields{width:100%;display:flex;flex-direction:column;gap:7px;margin-bottom:.5rem}
#wifi-preview-fields input,#wifi-preview-fields label{width:100%}
#wifi-preview-fields input{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:10px 12px;color:#fff;font-size:12px;font-family:inherit;transition:all .2s}
#wifi-preview-fields input.typing{border-color:#a78bfa;box-shadow:0 0 0 3px rgba(167,139,250,.18)}
#wifi-preview-fields input::placeholder{color:rgba(255,255,255,.4)}
#wifi-preview-fields .wifi-pf-check{display:flex;align-items:center;gap:7px;font-size:10.5px;color:rgba(255,255,255,.75);padding:6px 0;justify-content:flex-start}
#wifi-preview-fields .wifi-pf-check input{width:14px;height:14px;flex:0;padding:0}
#wifi-preview-btn{width:100%;margin-top:.6rem;padding:12px;border-radius:11px;border:none;background:#5b2a86;color:#fff;font-size:13px;font-weight:800;cursor:pointer;letter-spacing:.02em;transition:all .2s;font-family:inherit}
#wifi-preview-btn:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(91,42,134,.4)}
#wifi-preview-btn.loading{opacity:.6;cursor:wait}
.wifi-portal-footer{margin-top:1rem;font-size:9.5px;color:rgba(255,255,255,.4);letter-spacing:.06em}

.wifi-portal-success{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.5rem;background:linear-gradient(160deg,#0a1a0f 0%,#0f2818 50%,#0a1a0f 100%);color:#fff;opacity:0;visibility:hidden;transition:opacity .5s,visibility .5s;text-align:center;z-index:2}
.wifi-portal-success.show{opacity:1;visibility:visible}
.wifi-portal-success::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 50% 30%,rgba(16,185,129,.35),transparent 60%);pointer-events:none}
.wifi-success-ico{width:74px;height:74px;border-radius:50%;background:linear-gradient(135deg,#10b981,#059669);display:flex;align-items:center;justify-content:center;font-size:38px;color:#fff;font-weight:900;margin-bottom:1rem;box-shadow:0 12px 32px rgba(16,185,129,.4);animation:wifiSuccessPop .5s ease}
@keyframes wifiSuccessPop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.15)}100%{transform:scale(1);opacity:1}}
.wifi-portal-success h3{margin:0 0 .5rem;font-size:20px;font-weight:900;position:relative;z-index:1}
.wifi-portal-success p{font-size:12px;color:rgba(255,255,255,.75);margin:0 0 1.3rem;line-height:1.5;position:relative;z-index:1}
.wifi-portal-success p b{color:#34d399}
.wifi-success-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%;position:relative;z-index:1}
.wifi-success-stats div{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:8px 4px;display:flex;flex-direction:column;align-items:center;gap:2px}
.wifi-success-stats b{font-size:14px;font-weight:900;color:#34d399}
.wifi-success-stats span{font-size:9px;color:rgba(255,255,255,.6);letter-spacing:.04em;text-transform:uppercase}

/* =================== WIFI ESTADÍSTICAS EXTRAS =================== */
.wifi-stats-2col{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:1rem}
@media(max-width:900px){.wifi-stats-2col{grid-template-columns:1fr}}
.wifi-live-dot{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:800;color:#ef4444;letter-spacing:.1em}
.wifi-live-dot span{width:8px;height:8px;border-radius:50%;background:#ef4444;animation:wifiLivePulse 1.5s infinite}
@keyframes wifiLivePulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.8)}}
.wifi-conn-table{font-size:11.5px}
.wifi-conn-head{display:grid;grid-template-columns:55px 1fr 1fr 70px;gap:8px;padding:8px 10px;background:var(--surface2);border-radius:8px;font-size:10px;font-weight:800;color:var(--muted);letter-spacing:.05em;text-transform:uppercase;margin-bottom:5px}
.wifi-conn-row{display:grid;grid-template-columns:55px 1fr 1fr 70px;gap:8px;padding:9px 10px;border-bottom:1px solid var(--border);align-items:center}
.wifi-conn-row:last-child{border-bottom:none}
.wifi-conn-row span:first-child{font-weight:800;color:#5b2a86;font-size:11px}
.wifi-conn-row span:nth-child(2){font-weight:600;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wifi-conn-row span:nth-child(3){color:var(--muted);font-size:11px}
.wifi-conn-row span:last-child{font-weight:700;color:var(--text);font-size:11px;text-align:right}

/* =================== WIFI COBERTURA / MAPA DE CALOR =================== */
.wifi-cob-grid{display:grid;grid-template-columns:1fr 280px;gap:14px}
@media(max-width:960px){.wifi-cob-grid{grid-template-columns:1fr}}
.wifi-cob-map{position:relative;background:linear-gradient(135deg,#f1f5f9,#e2e8f0);border-radius:14px;padding:1rem;min-height:380px;border:1px solid var(--border);overflow:hidden}
.wifi-cob-legend{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:1rem;font-size:10.5px;color:var(--muted);font-weight:600;position:relative;z-index:2}
.wifi-cob-legend span{display:inline-flex;align-items:center;gap:5px}
.wifi-cob-legend i{width:10px;height:10px;border-radius:3px}
.wifi-cob-cells{position:relative;display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:30px;gap:2px;padding:.6rem}
.wifi-cob-cell{border-radius:4px;transition:all .3s;opacity:.85}
.wifi-cob-cell:hover{opacity:1;transform:scale(1.1)}
.wifi-cob-aps{position:absolute;inset:1rem;pointer-events:none}
.wifi-cob-ap{position:absolute;width:24px;height:24px;border-radius:50%;background:radial-gradient(circle,#5b2a86,#3a1660);display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:900;box-shadow:0 0 0 4px rgba(91,42,134,.15),0 4px 14px rgba(91,42,134,.4);animation:wifiApPulse 2.5s infinite;pointer-events:auto;cursor:pointer}
@keyframes wifiApPulse{0%,100%{box-shadow:0 0 0 4px rgba(91,42,134,.15),0 4px 14px rgba(91,42,134,.4)}50%{box-shadow:0 0 0 12px rgba(91,42,134,.05),0 4px 14px rgba(91,42,134,.4)}}
.wifi-cob-side{display:flex;flex-direction:column;gap:12px}
.wifi-cob-stat{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border);font-size:12px;color:var(--text)}
.wifi-cob-stat:last-child{border-bottom:none}
.wifi-cob-stat b{font-size:14px;font-weight:900;color:#5b2a86}
.wifi-ap-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border);font-size:11.5px}
.wifi-ap-row:last-child{border-bottom:none}
.wifi-ap-dot{width:8px;height:8px;border-radius:50%;background:#10b981;box-shadow:0 0 6px #10b981;flex-shrink:0}
.wifi-ap-dot.warn{background:#f59e0b;box-shadow:0 0 6px #f59e0b}
.wifi-ap-dot.off{background:#94a3b8;box-shadow:none}
.wifi-ap-name{flex:1;font-weight:700;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wifi-ap-clients{font-size:10.5px;color:var(--muted);font-weight:700}

/* =================== WHATSAPP BOT iPhone =================== */
.wa-bot-layout{display:grid;grid-template-columns:1fr 340px;gap:14px}
@media(max-width:1000px){.wa-bot-layout{grid-template-columns:1fr}}
.wa-bot-main{display:flex;flex-direction:column;align-items:center;gap:12px}
.wa-bot-tabs{display:flex;gap:6px;align-self:center;background:var(--surface);border:1px solid var(--border);border-radius:50px;padding:4px}
.wa-bot-tab{padding:9px 18px;border:none;background:transparent;color:var(--muted);font-size:12.5px;font-weight:700;cursor:pointer;border-radius:50px;transition:all .15s;display:inline-flex;align-items:center;gap:6px;font-family:inherit}
.wa-bot-tab span{font-size:14px}
.wa-bot-tab.active{background:linear-gradient(135deg,#5b2a86,#8b5cf6);color:#fff;box-shadow:0 4px 14px rgba(91,42,134,.32)}
.wa-bot-help{font-size:11px;color:var(--muted);background:rgba(91,42,134,.06);border:1px solid rgba(91,42,134,.15);border-radius:12px;padding:10px 14px;max-width:340px;text-align:center;line-height:1.5}
.iphone-wa-wrap{padding:.4rem 0}
.iphone-wa-screen{background:#e5ddd5;flex:1}
.iphone-wa-screen::before{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60'><circle cx='10' cy='10' r='1.5' fill='%23d4cabb' opacity='.5'/><circle cx='40' cy='30' r='1' fill='%23d4cabb' opacity='.4'/><circle cx='25' cy='50' r='1.2' fill='%23d4cabb' opacity='.4'/></svg>");opacity:.6;pointer-events:none}

.wa-chat-header{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#075e54;color:#fff;flex-shrink:0;z-index:2;padding-top:34px}
.wa-back{background:none;border:none;color:#fff;font-size:22px;cursor:pointer;padding:0;width:18px;font-family:inherit;line-height:1}
.wa-chat-avatar{width:34px;height:34px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}
.wa-chat-name{flex:1;display:flex;flex-direction:column;min-width:0}
.wa-chat-name strong{font-size:13.5px;font-weight:700;color:#fff;letter-spacing:.01em}
.wa-chat-name span{font-size:10.5px;color:rgba(255,255,255,.85)}
.wa-chat-icons{display:flex;gap:12px;font-size:13px}

.wa-chat-body{flex:1;overflow:auto;padding:12px 10px;display:flex;flex-direction:column;gap:5px;position:relative;z-index:1}
.wa-msg{max-width:78%;padding:7px 10px 5px;border-radius:8px;font-size:12.5px;line-height:1.4;color:#0f172a;position:relative;word-wrap:break-word;animation:waMsgIn .3s ease}
@keyframes waMsgIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.wa-msg.in{background:#fff;align-self:flex-start;border-radius:0 8px 8px 8px;box-shadow:0 1px 1px rgba(0,0,0,.08)}
.wa-msg.in::before{content:'';position:absolute;left:-8px;top:0;width:8px;height:10px;background:#fff;clip-path:polygon(100% 0,0 0,100% 100%)}
.wa-msg.out{background:#dcf8c6;align-self:flex-end;border-radius:8px 0 8px 8px;box-shadow:0 1px 1px rgba(0,0,0,.08)}
.wa-msg.out::before{content:'';position:absolute;right:-8px;top:0;width:8px;height:10px;background:#dcf8c6;clip-path:polygon(0 0,100% 0,0 100%)}
.wa-msg-time{font-size:9.5px;color:rgba(0,0,0,.45);float:right;margin-left:8px;margin-top:4px;font-weight:500}
.wa-msg-time .wa-check{color:#34b7f1;margin-left:2px}
.wa-msg-card{background:#fff;border-radius:8px;padding:10px 12px;margin:4px 0;border-left:3px solid #5b2a86}
.wa-msg-card b{display:block;font-size:12px;color:#0f172a;margin-bottom:4px;font-weight:800}
.wa-msg-card span{font-size:11.5px;color:#475569;display:block;line-height:1.4}
.wa-msg-action{display:inline-block;margin-top:6px;padding:6px 12px;background:#25d366;color:#fff;border-radius:8px;font-size:11px;font-weight:700;border:none;cursor:pointer;font-family:inherit}
.wa-typing{display:inline-flex;align-items:center;gap:4px;padding:9px 14px;background:#fff;border-radius:0 8px 8px 8px;align-self:flex-start;box-shadow:0 1px 1px rgba(0,0,0,.08);position:relative}
.wa-typing::before{content:'';position:absolute;left:-8px;top:0;width:8px;height:10px;background:#fff;clip-path:polygon(100% 0,0 0,100% 100%)}
.wa-typing i{width:6px;height:6px;border-radius:50%;background:#94a3b8;animation:waTyping 1.4s infinite}
.wa-typing i:nth-child(2){animation-delay:.2s}
.wa-typing i:nth-child(3){animation-delay:.4s}
@keyframes waTyping{0%,60%,100%{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}

.wa-quick{display:flex;gap:5px;flex-wrap:wrap;padding:0 10px 8px;flex-shrink:0;position:relative;z-index:2}
.wa-quick-btn{padding:6px 12px;background:rgba(255,255,255,.95);border:1px solid #d1d7db;border-radius:50px;color:#075e54;font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .15s}
.wa-quick-btn:hover{background:#075e54;color:#fff;border-color:#075e54}

.wa-chat-input-bar{display:flex;align-items:center;gap:6px;padding:8px 10px 16px;background:#f0f0f0;flex-shrink:0;z-index:2}
.wa-input-icon{background:#fff;border:none;width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;color:#54656f}
#wa-chat-input{flex:1;background:#fff;border:none;border-radius:50px;padding:9px 14px;font-size:12.5px;color:#0f172a;outline:none;font-family:inherit}
.wa-input-send{background:#25d366;border:none;width:38px;height:38px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}
.wa-input-send:hover{background:#128c7e;transform:scale(1.05)}

/* WhatsApp side */
.wa-bot-side{display:flex;flex-direction:column;gap:14px}
.wa-toggle{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--border);border-radius:10px;cursor:pointer;font-size:12px;color:var(--text);transition:all .15s;background:var(--surface)}
.wa-toggle:hover{border-color:#5b2a86;background:rgba(91,42,134,.04)}
.wa-toggle input{appearance:none;-webkit-appearance:none;width:34px;height:20px;border-radius:50px;background:#cbd5e1;position:relative;cursor:pointer;transition:all .2s;flex-shrink:0;margin:0}
.wa-toggle input::after{content:'';position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:all .2s;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.wa-toggle input:checked{background:#25d366}
.wa-toggle input:checked::after{left:16px}
.wa-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.wa-stat{padding:10px 6px;text-align:center;background:linear-gradient(135deg,rgba(37,211,102,.08),rgba(7,94,84,.04));border:1px solid var(--border);border-radius:10px}
.wa-stat b{display:block;font-size:18px;font-weight:900;color:#075e54}
.wa-stat span{font-size:10px;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.whatsapp-free-badge-final{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:50px;background:rgba(37,211,102,.12);color:#075e54;font-size:11.5px;font-weight:800;letter-spacing:.02em}
.whatsapp-free-badge-final::before{content:'';width:8px;height:8px;border-radius:50%;background:#25d366;box-shadow:0 0 8px #25d366;animation:wifiLivePulse 1.5s infinite}

