:root{--nav:#0b1736;--blue:#246bfd;--cyan:#23b7d9;--green:#17a673;--orange:#f59e0b;--red:#e5484d;--bg:#f4f7fb;--text:#17213b;--muted:#667085;--card:#fff}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}a{text-decoration:none}.layout{display:flex;min-height:100vh}.sidebar{width:265px;background:linear-gradient(180deg,#09142f,#122554);color:#fff;position:fixed;inset:0 auto 0 0;padding:22px 14px;overflow:auto}.brand{display:flex;align-items:center;gap:12px;padding:0 10px 22px}.brand-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,var(--blue),var(--cyan));display:grid;place-items:center;font-weight:900;font-size:22px}.brand b{font-size:18px}.brand small{display:block;color:#a9b8db}.menu a{display:flex;gap:11px;align-items:center;color:#cdd8f2;padding:11px 13px;border-radius:10px;margin:3px 0;font-size:14px}.menu a:hover,.menu a.active{background:#ffffff16;color:#fff}.main{margin-left:265px;width:calc(100% - 265px)}.topbar{height:70px;background:#fff;border-bottom:1px solid #e6ebf3;display:flex;align-items:center;justify-content:space-between;padding:0 26px;position:sticky;top:0;z-index:5}.content{padding:26px}.grid{display:grid;gap:18px}.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--card);border-radius:15px;box-shadow:0 4px 18px #10244a0b;border:1px solid #e8edf5;padding:20px}.kpi .label{color:var(--muted);font-size:13px}.kpi .value{font-size:28px;font-weight:800;margin-top:8px}.kpi .hint{font-size:12px;color:var(--green);margin-top:6px}.page-title{margin:0;font-size:25px}.sub{color:var(--muted);font-size:14px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:16px 0}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:9px;padding:10px 14px;font-weight:650;cursor:pointer;background:#e9eef7;color:#24324e}.btn-primary{background:var(--blue);color:#fff}.btn-danger{background:var(--red);color:#fff}.btn-success{background:var(--green);color:#fff}.input,select,textarea{width:100%;border:1px solid #d9e0eb;border-radius:9px;padding:10px 11px;background:#fff;font:inherit}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.form-group label{display:block;font-size:13px;font-weight:650;margin-bottom:6px}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;color:#536079;background:#f7f9fc;padding:12px;border-bottom:1px solid #e6ebf3;white-space:nowrap}.table td{padding:12px;border-bottom:1px solid #edf0f5;vertical-align:middle}.badge{display:inline-block;padding:5px 9px;border-radius:20px;font-size:11px;font-weight:700;background:#e9eef7}.badge.green{background:#dcf7ec;color:#087a50}.badge.orange{background:#fff0d4;color:#9d5b00}.badge.red{background:#ffe1e3;color:#a71924}.alert{padding:12px 15px;border-radius:10px;margin-bottom:15px}.alert.success{background:#ddf7eb;color:#086647}.alert.error{background:#ffe2e4;color:#98232b}.login{min-height:100vh;display:grid;grid-template-columns:1.2fr 1fr}.login-hero{background:linear-gradient(145deg,#07142f,#174baf);color:#fff;padding:70px;display:flex;flex-direction:column;justify-content:center}.login-hero h1{font-size:46px;margin:0 0 15px}.login-box{display:grid;place-items:center;padding:30px}.login-card{width:min(430px,100%)}.mobile-toggle{display:none}.chart{height:270px}.map-box{height:480px;border-radius:12px;background:#e5ebf4;overflow:hidden}.quick-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.quick-actions a{padding:16px;border:1px solid #e3e9f2;border-radius:12px;color:var(--text);font-weight:700;background:#fff}.muted{color:var(--muted)}@media(max-width:1050px){.kpis{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:.25s;z-index:30}.sidebar.open{transform:translateX(0)}.main{margin:0;width:100%}.mobile-toggle{display:inline-flex}.content{padding:17px}.topbar{padding:0 15px}.kpis,.form-grid,.quick-actions{grid-template-columns:1fr}.login{grid-template-columns:1fr}.login-hero{display:none}.page-title{font-size:21px}}

/* Dashboard: tendencia comercial contenida y responsive */
.dashboard-commercial-grid{grid-template-columns:minmax(0,2fr) minmax(280px,1fr);align-items:stretch}
.commercial-trend-card{width:100%;min-width:0;overflow:hidden}
.commercial-trend-card h3{margin-top:0}
.commercial-trend-chart{position:relative;width:100%;height:340px;min-height:340px;max-height:340px;overflow:hidden}
.commercial-trend-chart canvas{display:block!important;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important}
@media(max-width:991.98px){.dashboard-commercial-grid{grid-template-columns:1fr}.commercial-trend-chart{height:300px;min-height:300px;max-height:300px}}
@media(max-width:575.98px){.commercial-trend-chart{height:250px;min-height:250px;max-height:250px}.commercial-trend-card{padding:15px}}

/* v1.2: formularios editables y selector GPS de clientes */
.row-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row-actions form{margin:0}
.client-map-section{margin-top:22px;border-top:1px solid #e6ebf3;padding-top:20px}.client-map-toolbar{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:12px}.client-map-toolbar h3{margin:0 0 4px}.client-location-map{height:420px;width:100%;border:1px solid #d9e0eb;border-radius:12px;overflow:hidden;background:#e5ebf4}#gps-status{margin-top:9px}
@media(max-width:760px){.client-map-toolbar{flex-direction:column}.client-location-map{height:330px}.row-actions{min-width:160px}}

/* v1.3 - selector GPS visible para clientes */
.client-map-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin-bottom:12px}
.client-map-wrap{position:relative;width:100%;min-height:430px}
.client-location-map{height:430px!important;min-height:430px;position:relative;z-index:1}
.client-map-crosshair{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:400;pointer-events:none;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.9);border:2px solid #1d4ed8;color:#1d4ed8;font-size:24px;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.client-map-help{margin-top:10px;padding:10px 12px;background:#eef5ff;border:1px solid #cfe0ff;border-radius:10px;color:#24415f}
@media(max-width:760px){.client-map-search{grid-template-columns:1fr}.client-map-wrap{min-height:360px}.client-location-map{height:360px!important;min-height:360px}}

/* v1.4 selector GPS visible */
.client-map-actions{display:flex;gap:8px;flex-wrap:wrap}.client-location-map{height:520px!important;min-height:520px;background:#dfe7ef}.client-map-wrap{min-height:520px}.leaflet-control-layers{font-size:14px}@media(max-width:760px){.client-map-actions{width:100%}.client-map-actions .btn{flex:1 1 180px}.client-location-map{height:430px!important;min-height:430px}.client-map-wrap{min-height:430px}}

/* v1.5: integración segura con Google Maps */
.client-google-tools{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;margin:10px 0 12px;align-items:center}
@media(max-width:760px){.client-google-tools{grid-template-columns:1fr}.client-google-tools .btn{width:100%}}

/* SalesRoute v1.7 - selector de clientes del rutero */
.client-route-preview{
    margin-top:14px;
    padding:14px;
    border:1px solid var(--border,#dbe3ef);
    border-radius:12px;
    background:#f8fafc;
}
.client-route-preview .route-preview-actions{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    margin-top:12px;
}
.badge-success{background:#dcfce7;color:#166534}
.badge-warning{background:#fef3c7;color:#92400e}
@media(max-width:700px){
    .grid[style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
}

/* SalesRoute v1.8 - ventas y cuentas por cobrar */
.sales-totals{display:flex;justify-content:flex-end;gap:24px;flex-wrap:wrap;margin:18px 0;padding:14px;border-top:1px solid #dbe4f0;font-size:16px}.sales-totals strong{font-size:18px}.table select,.table input{min-width:120px}@media(max-width:700px){.sales-totals{justify-content:flex-start;gap:14px}.sales-totals>div{width:100%}}

/* SalesRoute v1.9 - metas por vendedor */
.goal-progress-bar{height:14px;background:#edf2f7;border-radius:999px;overflow:hidden;margin:12px 0 18px;border:1px solid #e2e8f0}
.goal-progress-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--green));border-radius:999px;min-width:0;transition:width .35s ease}
.badge.red{background:#ffe1e3;color:#a71924}
.badge.orange{background:#fff0d4;color:#9d5b00}
.badge.green{background:#dcf7ec;color:#087a50}
@media(max-width:760px){.goal-progress-bar{height:12px}.toolbar input[type="month"]{max-width:100%!important}}

/* SalesRoute v1.9.1 - pedidos dinámicos tipo autopago */
.order-pos-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.order-entry-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px}.order-number-chip{background:#eef4ff;color:#174baf;font-weight:800;border-radius:999px;padding:9px 14px;white-space:nowrap;border:1px solid #d6e4ff}.order-fast-add{display:grid;grid-template-columns:minmax(260px,1fr) 150px 150px auto;gap:12px;align-items:end;margin:18px 0;padding:16px;border:1px solid #dce6f2;border-radius:14px;background:#f8fbff}.order-add-button .btn{height:42px}.order-cart-wrap{border:1px solid #e3e9f2;border-radius:12px}.order-empty-cart{padding:14px;text-align:center;color:var(--muted);border:1px dashed #cbd5e1;border-radius:12px;margin-top:12px;background:#fbfdff}.order-totals{background:#f8fafc;border-radius:12px;border-top:0;justify-content:flex-end}.order-line-total{font-weight:800;white-space:nowrap}.table .order-qty{min-width:90px}.table .order-price,.table .order-disc{min-width:110px}@media(max-width:900px){.order-fast-add{grid-template-columns:1fr 1fr}.order-add-button{grid-column:1/-1}.order-add-button .btn{width:100%}}@media(max-width:640px){.order-entry-head{flex-direction:column}.order-number-chip{width:100%;text-align:center}.order-fast-add{grid-template-columns:1fr}.order-cart-wrap table{min-width:860px}.order-totals>div{width:100%}}

/* SalesRoute v1.9.2 - planificación diaria y visitas GPS */
.planning-filter-form{display:grid;grid-template-columns:170px minmax(220px,1fr) minmax(220px,1fr) 170px auto;gap:12px;align-items:end}.planning-filter-button .btn{width:100%;height:42px}.planning-kpis{margin-top:18px}.visit-mark-card textarea{min-height:78px}.planning-actions-bar{display:flex;justify-content:space-between;align-items:center;gap:14px}.planning-table td{vertical-align:top}.planning-table .row-actions{min-width:250px}.planning-table .btn{padding:8px 10px;font-size:12px}.planning-filter-card{overflow:hidden}@media(max-width:1100px){.planning-filter-form{grid-template-columns:1fr 1fr}.planning-filter-button{grid-column:1/-1}}@media(max-width:700px){.planning-filter-form{grid-template-columns:1fr}.planning-actions-bar{flex-direction:column;align-items:flex-start}.planning-actions-bar .row-actions,.planning-actions-bar .btn{width:100%}.planning-table{min-width:980px}.visit-mark-card .toolbar .btn{width:100%}}

/* SalesRoute v1.9.3 - Mercadeo / POP tipo pedido */
.pop-request-card{overflow:hidden}.pop-entry-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px}.pop-fast-add{display:grid;grid-template-columns:minmax(260px,1fr) 130px minmax(180px,1fr) auto;gap:12px;align-items:end;margin:18px 0;padding:16px;border:1px solid #dce6f2;border-radius:14px;background:#f8fbff}.pop-add-button .btn{height:42px}.pop-cart-wrap{border:1px solid #e3e9f2;border-radius:12px}.pop-requests-table small{display:inline-block;margin-top:2px}.table .pop-qty-line{min-width:100px}.pop-requests-table .row-actions{min-width:230px}@media(max-width:960px){.pop-fast-add{grid-template-columns:1fr 1fr}.pop-add-button{grid-column:1/-1}.pop-add-button .btn{width:100%}}@media(max-width:640px){.pop-entry-head{flex-direction:column}.pop-fast-add{grid-template-columns:1fr}.pop-cart-wrap table{min-width:900px}.pop-requests-table{min-width:1100px}}

/* SalesRoute v1.9.4 - Pizarra digital estilo Excel */
.board-filter-card{overflow:hidden}.board-filter-form{display:grid;grid-template-columns:170px 180px minmax(240px,1fr) auto auto;gap:12px;align-items:end}.board-filter-button .btn{height:42px;width:100%}.board-tabs{display:flex;gap:4px;overflow:auto;margin:14px 0 18px}.board-tabs span{display:inline-flex;align-items:center;padding:10px 16px;background:#e7edf7;border:1px solid #d5dfef;border-radius:10px 10px 0 0;font-weight:800;font-size:13px;color:#44516b;white-space:nowrap}.board-tabs span.active{background:#fff;color:#12315f;border-bottom-color:#fff}.board-kpis .kpi .value{font-size:26px}.board-info-panel{border-left:5px solid var(--blue)}.board-excel-title{font-size:17px;font-weight:900;margin-bottom:14px;color:#12315f}.board-info-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.board-info-grid>div{background:#f8fafc;border:1px solid #e3eaf4;border-radius:10px;padding:12px}.board-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}.board-card-head h3{margin:0 0 4px}.board-chip{background:#0b1736;color:#fff;border-radius:999px;padding:9px 14px;font-weight:900;font-size:12px;white-space:nowrap}.board-matrix-card{overflow:hidden}.board-sheet-wrap{overflow:auto;border:1px solid #d7e1ee;border-radius:12px;max-height:620px;background:#fff}.board-sheet-table{border-collapse:separate;border-spacing:0;min-width:1250px;width:max-content;font-size:12px}.board-sheet-table th,.board-sheet-table td{border-right:1px solid #dce5f1;border-bottom:1px solid #e8eef7;padding:8px 9px;white-space:nowrap}.board-sheet-table thead th{position:sticky;top:0;z-index:5;background:#23365e;color:#fff;text-align:center;font-weight:900}.board-sheet-table tfoot td{position:sticky;bottom:0;z-index:4;background:#fff7da;font-weight:900;border-top:2px solid #dfb344}.board-sheet-table .sticky{position:sticky;z-index:6;background:#f8fbff}.board-sheet-table thead .sticky{z-index:8;background:#23365e;color:#fff}.board-sheet-table .col-seg{left:0;min-width:120px}.board-sheet-table .col-lit{left:120px;min-width:78px}.board-sheet-table .col-code{left:198px;min-width:120px}.board-sheet-table .col-product{left:318px;min-width:260px;max-width:360px;white-space:normal}.board-sheet-table tbody tr:hover td{background:#f0f7ff}.board-sheet-table tbody tr:hover .sticky{background:#eaf3ff}.board-sheet-table .num{text-align:right;font-variant-numeric:tabular-nums}.board-sheet-table .has-value{background:#eafaf1;font-weight:800;color:#116743}.board-sheet-table .total-cell{background:#f7f9fc;font-weight:900}.board-cxc-table th{text-align:right}.board-cxc-table th:first-child,.board-cxc-table th:nth-child(2){text-align:left}.board-cxc-table td:not(:first-child):not(:nth-child(2)){text-align:right;font-variant-numeric:tabular-nums}@media(max-width:1100px){.board-filter-form{grid-template-columns:1fr 1fr}.board-filter-button{grid-column:auto}.board-info-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.board-filter-form{grid-template-columns:1fr}.board-info-grid{grid-template-columns:1fr}.board-card-head{flex-direction:column}.board-chip{width:100%;text-align:center}.board-sheet-wrap{max-height:540px}.board-sheet-table{font-size:11px}.board-sheet-table th,.board-sheet-table td{padding:7px}.board-kpis{grid-template-columns:1fr!important}}

/* SalesRoute v1.9.5 - Optimizador de ruta por GPS */
.optimizer-filter-card{overflow:hidden}.optimizer-filter-form{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr)) auto auto;gap:12px;align-items:end}.optimizer-filter-button .btn{height:42px;width:100%}.optimizer-kpis{margin-top:18px}.optimizer-actions-bar{display:flex;justify-content:space-between;align-items:center;gap:14px}.optimizer-table td{vertical-align:top}.optimizer-table .row-actions{min-width:245px}.optimizer-table .btn{padding:8px 10px;font-size:12px}.optimizer-table-card{overflow:auto}@media(max-width:1180px){.optimizer-filter-form{grid-template-columns:1fr 1fr}.optimizer-filter-button{grid-column:auto}}@media(max-width:700px){.optimizer-filter-form{grid-template-columns:1fr}.optimizer-actions-bar{flex-direction:column;align-items:flex-start}.optimizer-actions-bar .row-actions,.optimizer-actions-bar .btn{width:100%}.optimizer-table{min-width:1050px}.optimizer-kpis{grid-template-columns:1fr!important}}


/* SalesRoute v1.9.6 - Supervisión de usuarios y equipos */
.supervision-filter-card,.supervision-assign-card{overflow:hidden}
.supervision-filter-form{display:grid;grid-template-columns:180px minmax(240px,1fr) auto;gap:12px;align-items:end}
.supervision-filter-button .btn{height:42px;width:100%}
.supervision-table-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:12px}
.supervision-table{min-width:1280px}
.supervision-table td{vertical-align:top}
.supervision-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.supervision-mini-progress{height:9px;background:#edf2f7;border-radius:999px;overflow:hidden;min-width:90px;border:1px solid #e2e8f0;margin-bottom:4px}
.supervision-mini-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--green));border-radius:999px}
@media(max-width:900px){.supervision-filter-form{grid-template-columns:1fr 1fr}.supervision-filter-button{grid-column:1/-1}.supervision-kpis{grid-template-columns:1fr 1fr!important}}
@media(max-width:650px){.supervision-filter-form{grid-template-columns:1fr}.supervision-kpis{grid-template-columns:1fr!important}.supervision-table-head{flex-direction:column}.supervision-assign-card .form-grid{grid-template-columns:1fr!important}}

/* SalesRoute v2.0 - Diagnóstico y asistente de configuración */
.badge.success{background:#dcfce7;color:#166534}
.badge.danger{background:#fee2e2;color:#991b1b}
