*{box-sizing:border-box}
:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#172033;background:#f4f6f8}
body{margin:0;padding-bottom:72px}
a{color:inherit;text-decoration:none}
.topbar{position:sticky;top:0;z-index:10;background:#172033;color:#fff;padding:12px max(16px,calc((100% - 1100px)/2));display:flex;align-items:center;justify-content:space-between;gap:16px;box-shadow:0 2px 8px #0002}
.brand{font-weight:800;white-space:nowrap}
.topbar nav{display:flex;gap:8px}.topbar nav a{padding:8px 10px;border-radius:8px}.topbar nav a:hover{background:#ffffff18}
.container{width:min(1100px,100%);margin:auto;padding:18px 14px}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
h1{font-size:clamp(1.5rem,5vw,2rem);margin:0 0 4px}h2{font-size:1.1rem;margin:0 0 14px}h3{font-size:1rem;margin:8px 0}
.muted,small{color:#657084}.result-count{font-size:.85rem;color:#657084;margin:10px 2px}
.card{background:#fff;border:1px solid #e1e6eb;border-radius:14px;padding:15px;margin-bottom:14px;box-shadow:0 1px 2px #00000008}
.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #ccd3dc;background:#fff;color:#172033;border-radius:10px;padding:10px 14px;font-weight:700;cursor:pointer;font-size:.92rem}
.btn.primary{background:#172033;color:#fff;border-color:#172033}.btn.small{padding:7px 10px;font-size:.8rem}
.actions,.form-actions{display:flex;gap:8px;flex-wrap:wrap}.form-actions{justify-content:flex-end;margin-top:10px}
.flash{padding:12px 14px;border-radius:10px;margin-bottom:14px;background:#e8eef8}.flash.success{background:#e6f5ea}.flash.error{background:#fdeaea}
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px}
.stat{background:#fff;border:1px solid #e1e6eb;border-radius:14px;padding:16px}.stat strong{display:block;font-size:1.8rem}.stat span{color:#657084;font-size:.85rem}
.search{display:grid;gap:10px}.search input,.search select{min-width:0}
input,select,textarea{width:100%;font:inherit;border:1px solid #cbd3dc;border-radius:9px;padding:10px 11px;background:#fff;color:#172033}
textarea{resize:vertical;min-height:100px}label{display:block;font-weight:650;font-size:.9rem}label input,label select,label textarea{margin-top:6px;font-weight:400}
.grid-2{display:grid;grid-template-columns:1fr;gap:12px}.grid-3{display:grid;grid-template-columns:1fr;gap:12px}
.grid-2.compact{margin:0}
.client-list,.visit-list{display:grid;gap:10px}.client-card{margin:0}
.client-main{display:flex;flex-direction:column;gap:2px}.client-main strong{font-size:1rem}.client-main span{color:#657084;font-size:.9rem}
.client-meta{display:flex;flex-wrap:wrap;gap:6px 12px;color:#657084;font-size:.82rem;margin-top:10px}
.badge{display:inline-flex;padding:4px 8px;border-radius:999px;background:#edf0f4;font-size:.72rem;font-weight:800;color:#445064}
.badge.pendiente{background:#fff0d4}.badge.pendiente-de-seguimiento{background:#e8e7ff}.badge.cerrada{background:#e5f4e8}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.section-head a{font-weight:700;font-size:.88rem}
.list{display:grid}.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid #edf0f3}.list-row:first-child{border-top:0}.list-row div{min-width:0}.list-row strong,.list-row small{display:block}.list-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.date{white-space:nowrap;font-weight:700;font-size:.82rem}
dl{display:grid;grid-template-columns:1fr;gap:8px;margin:0}dt{font-size:.76rem;color:#657084}dd{margin:0;word-break:break-word}
.billing{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.billing div{background:#f6f8fa;padding:10px;border-radius:10px}.billing span,.billing strong{display:block}.billing span{font-size:.75rem;color:#657084}.billing strong{margin-top:3px}
.multiline{white-space:pre-wrap;word-break:break-word}.empty{text-align:center;color:#657084}
.visit-card{padding:0;overflow:hidden}.visit-link{display:block;padding:15px}.visit-top{display:flex;justify-content:space-between;gap:8px;align-items:center}.visit-card form{padding:0 15px 15px}
.form{display:grid;gap:15px}.form h2{padding-top:5px;border-top:1px solid #edf0f3}
.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:20;background:#fff;border-top:1px solid #dfe4e9;display:flex;justify-content:space-around;padding:9px 8px max(9px,env(safe-area-inset-bottom));box-shadow:0 -2px 10px #0000000d}.bottom-nav a{font-size:.78rem;font-weight:800;padding:5px 14px}
@media(min-width:650px){
 .container{padding:24px 20px}.stats{grid-template-columns:repeat(4,1fr)}.search{grid-template-columns:minmax(260px,2fr) 1fr auto auto;align-items:end}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2.compact{grid-column:span 2;grid-template-columns:1fr 1fr}.search .compact{grid-column:span 2}.search .compact label{font-weight:500}.form{padding:20px}.bottom-nav{display:none}body{padding-bottom:0}
}
@media(max-width:520px){.topbar nav{display:none}.page-head .btn{padding:9px 11px}.billing strong{font-size:.8rem}}

.quick-create summary{cursor:pointer;margin-bottom:10px}
.map{height:65vh;min-height:420px;border-radius:14px;overflow:hidden;border:1px solid #dfe4e9;margin-bottom:14px}

.map-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.quick-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:2px}

.billing-total{font-weight:700}


/* V6 - mejoras de uso táctil y borrado de visitas */
.danger{border-color:#d7a0a0;background:#fff5f5;color:#9b1c1c}
.visit-actions{display:flex;gap:8px;flex-wrap:wrap;padding:0 15px 15px}
.visit-row{align-items:center}
.visit-row > a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;flex:1}
.visit-row form{flex:0 0 auto}
button,.btn,select,input{min-height:44px}
textarea{font-size:16px}
@media(max-width:520px){
  .container{padding:14px 12px}
  .card{border-radius:12px;padding:13px}
  .page-head{align-items:flex-start}
  .page-head .actions{width:100%}
  .page-head .actions .btn,.page-head .actions form{flex:1}
  .page-head .actions .btn{width:100%}
  .bottom-nav a{min-width:64px;text-align:center}
  .visit-actions .btn{flex:1}
  .visit-row{padding:10px 0}
}

/* V6.1 móvil, filtros y contactos */
.back-row{margin-bottom:10px}.back-link{display:inline-flex;min-height:44px;align-items:center;font-weight:800}.row-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.contact-card{border-top:1px solid #edf0f3;padding:12px 0}.contact-card:first-of-type{border-top:0}.contact-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.checkbox{display:flex;align-items:center;gap:9px}.checkbox input{width:auto}.default-contact{background:#dbeafe;color:#1d4ed8}.last-visit{padding:10px;border-radius:10px;display:flex;gap:10px;align-items:center}.last-visit.visit-orange{background:#fff0d4;color:#9a4a00}.last-visit.visit-red{background:#fde2e2;color:#a11212}.last-visit.visit-ok{background:#e5f4e8;color:#166534}.last-visit.no-visit{background:#f4f6f8}.client-card .last-visit{margin-top:9px;padding:7px 9px;font-size:.82rem;display:block}.client-card .last-visit.visit-orange{background:#fff0d4;color:#9a4a00}.client-card .last-visit.visit-red{background:#fde2e2;color:#a11212}.client-card .last-visit.visit-ok{background:#e5f4e8;color:#166534}.search{grid-template-columns:1fr}.search select,.search input{min-height:44px}@media(min-width:650px){.search{grid-template-columns:2fr repeat(4,1fr) auto auto}}


/* V7 notas y tareas */
.note-card,.task-card{border-top:1px solid #edf0f3;padding:12px 0}.note-card:first-of-type,.task-card:first-of-type{border-top:0}.task-link{display:block}.task-meta{display:flex;gap:8px;margin-top:9px}.task-card .visit-actions{padding:10px 0 0}.badge.abierto{background:#fff0d4}.badge.procesando{background:#e8e7ff}.badge.cerrada{background:#e5f4e8}.task-maquinaria{background:#eef2ff}.task-intervencion-tecnica{background:#fef3c7}.task-reclamacion{background:#fee2e2}.task-pedido{background:#dcfce7}.note-card .contact-actions{margin:0}.note-card .row-top{align-items:center}

/* V8 */
.task-card{padding:15px;margin-bottom:14px;border:1px solid #e1e6eb;border-radius:14px;background:#fff}
.task-card .task-link{padding:0}
.task-card .visit-actions{padding:12px 0 0;margin-top:10px;border-top:1px solid #edf0f3}
.page-head .actions form{display:flex;margin:0}
.page-head .actions form .btn{border:1px solid #172033}
.desktop-only{display:block}
@media(max-width:649px){.desktop-only{display:none!important}}

/* V10 - visitas masivas y orden manual */
.bulk-toolbar{display:flex;justify-content:space-between;align-items:end;gap:14px;flex-wrap:wrap}.bulk-select{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.bulk-select .checkbox{margin:0}.bulk-create-actions{display:flex;align-items:end;gap:8px}.bulk-create-actions label{min-width:180px}.selectable-client{display:grid;grid-template-columns:44px 1fr;gap:4px;padding:0;overflow:hidden}.select-client{display:flex;align-items:flex-start;justify-content:center;padding-top:16px}.select-client input{width:24px;height:24px;min-height:24px}.client-card-link{display:block;padding:15px 15px 15px 5px}.visit-days{display:grid;gap:18px}.visit-day>.section-head{margin-bottom:8px}.sortable-day{min-height:10px}.sortable-visit{position:relative;display:grid;grid-template-columns:34px 1fr;gap:0;padding:0;overflow:hidden;cursor:grab}.sortable-visit.dragging{opacity:.55}.drag-handle{display:flex;align-items:center;justify-content:center;color:#657084;font-size:1.3rem;touch-action:none;user-select:none}.sortable-visit .visit-link{padding:15px 15px 8px 5px}.sortable-visit .visit-actions{grid-column:2;padding:8px 15px 15px 5px;margin:0}.reorder-actions{align-items:center}.reorder-actions .move-up,.reorder-actions .move-down{min-width:44px}.sortable-visit:active{cursor:grabbing}@media(max-width:649px){.bulk-toolbar{align-items:stretch}.bulk-create-actions{width:100%;display:grid;grid-template-columns:1fr auto}.bulk-create-actions label{min-width:0}.bulk-create-actions .btn{height:44px}.selectable-client{grid-template-columns:42px 1fr}.sortable-visit{grid-template-columns:38px 1fr}.drag-handle{font-size:1.15rem}.reorder-actions .move-up,.reorder-actions .move-down{display:inline-flex}}


/* V11 */
.site-footer{text-align:center;color:#657084;font-size:.78rem;padding:18px 12px 90px}.map-selection-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.map-selection-toolbar p{margin:4px 0 0}.map-selection-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.map-bulk-panel[hidden]{display:none}.map-selected-list{display:grid;gap:7px;margin-bottom:14px}.map-selected-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid #edf0f3}.map-selected-row:first-child{border-top:0}.map-selected-row small{display:block;color:#657084}.map-selection-toolbar .btn,.map-bulk-panel .btn{min-height:44px}.bulk-create-actions{display:grid;grid-template-columns:minmax(150px,1fr) minmax(180px,1.4fr) auto;gap:8px;align-items:end;width:min(100%,700px)}.bulk-create-actions label{min-width:0}.site-footer{padding-bottom:18px}
@media(max-width:649px){.bulk-toolbar{display:block}.bulk-select{margin-bottom:12px}.bulk-create-actions{width:100%;grid-template-columns:1fr}.bulk-create-actions label,.bulk-create-actions .btn{width:100%}.map-selection-toolbar{align-items:stretch}.map-selection-actions{justify-content:space-between}.map-selected-row{align-items:flex-start}.site-footer{padding-bottom:85px}}
/* V12 multi-direcciones y VIP */
.badge.vip,.vip-badge{background:#fff3bf;color:#7a5600}.address-card{border-top:1px solid #edf0f3;padding:10px 0}.address-card:first-child{border-top:0}
.province-compare{display:grid;gap:8px}.province-row{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px;align-items:center;padding:9px 0;border-top:1px solid #edf0f3}.province-row span{text-align:right;color:#657084;font-size:.86rem}@media(max-width:520px){.province-row{grid-template-columns:1fr 1fr}.province-row strong{grid-column:1/-1}.province-row span{text-align:left}}

.province-chart-row{margin:14px 0}.province-chart-row>strong{display:block;margin-bottom:4px}.barline{display:flex;align-items:center;gap:8px;min-height:22px;margin:3px 0}.barline .bar{display:inline-block;height:18px;min-width:2px;border-radius:3px}.barline .previous{background:#9ca3af}.barline .current{background:#2563eb}.barline small{white-space:nowrap}.province-chart:before{content:"Año anterior / Año actual";font-size:.85em;color:#666}

.province-chart{width:100%;overflow-x:auto}.province-chart-row{padding:10px 0;border-bottom:1px solid #e5e7eb}.province-chart-row>strong{display:block;margin-bottom:6px}.barline{display:flex;align-items:center;gap:8px;width:100%;min-height:22px}.barline .bar{height:20px;min-width:3px;display:block}.barline .previous{background:#94a3b8}.barline .current{background:#2563eb}.barline small{min-width:90px;font-variant-numeric:tabular-nums}


/* V18.2 - escritorio, dashboard y listado de visitas */
.visit-order{
  flex:0 0 34px;width:34px;height:34px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  font-weight:900;font-variant-numeric:tabular-nums;
  background:#eef4ff;color:#1d4ed8;
}
.visit-card{position:relative}
.visit-card.touch-dragging{opacity:.75;box-shadow:0 12px 30px #0003;z-index:30}
.drag-handle{touch-action:none;user-select:none;-webkit-user-select:none}
.chart-legend{display:flex;gap:18px;justify-content:flex-end;margin:0 0 12px;font-size:.8rem;color:#657084}
.chart-legend span{display:flex;align-items:center;gap:6px}
.chart-legend .legend{width:18px;height:8px;border-radius:999px;display:inline-block}
.legend.previous{background:#94a3b8}.legend.current{background:#2563eb}
.projection-summary{display:flex;gap:18px;flex-wrap:wrap}
.projection-summary span{display:grid;font-size:.76rem;color:#657084}
.projection-summary strong{font-size:1.05rem;color:#172033}
.province-bars{min-width:0}
.projection-chart,.visit-province-chart{display:grid;gap:7px}
.projection-row,.visit-province-row{display:grid;align-items:center;gap:12px}
.projection-row{grid-template-columns:145px minmax(0,1fr)}
.visit-province-row{grid-template-columns:170px minmax(0,1fr) 55px}
.projection-row>strong,.visit-province-row>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.visit-bar-track{height:20px;background:#edf1f5;border-radius:999px;overflow:hidden}
.visit-bar{display:block;height:100%;min-width:3px;background:#2563eb;border-radius:999px}
.visit-count{text-align:right;font-weight:900;font-variant-numeric:tabular-nums}
.visit-export-form{display:grid;gap:10px}

@media(min-width:1000px){
  .container{width:min(1560px,calc(100% - 48px));max-width:none;padding:28px 0 44px}
  .topbar{padding-left:max(24px,calc((100% - 1560px)/2));padding-right:max(24px,calc((100% - 1560px)/2))}
  .stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
  .stat{min-height:100px;display:flex;flex-direction:column;justify-content:center}
  .dashboard-grid{display:grid;grid-template-columns:minmax(330px,.72fr) minmax(650px,1.55fr);gap:18px;align-items:start}
  .dashboard-projection,.dashboard-visits{grid-column:1/-1}
  .province-chart,.projection-chart{max-height:650px;overflow:auto;padding-right:8px}
  .province-chart-row,.projection-row{display:grid;grid-template-columns:160px minmax(0,1fr);gap:16px;align-items:center;padding:9px 0}
  .province-chart-row>strong{margin:0}
  .barline{min-height:26px}
  .barline .bar{height:22px}
  .barline small{min-width:120px;text-align:right;font-variant-numeric:tabular-nums}
  .visit-export-form{grid-template-columns:180px 180px minmax(320px,1fr) auto;align-items:end}

  /* En escritorio las visitas son una lista, no una cuadrícula de tarjetas. */
  .sortable-day{display:flex!important;flex-direction:column;gap:8px}
  .sortable-visit{
    padding:12px 14px!important;margin:0!important;
    display:grid;grid-template-columns:42px 34px minmax(320px,1fr) auto;
    gap:10px;align-items:center;overflow:visible;
  }
  .sortable-visit .visit-order{grid-column:1}
  .sortable-visit .drag-handle{grid-column:2;cursor:grab;font-size:1.2rem;text-align:center}
  .sortable-visit .visit-link{grid-column:3;padding:0!important;min-width:0}
  .sortable-visit .visit-actions{grid-column:4;padding:0!important;justify-content:flex-end;max-width:680px}
  .sortable-visit .visit-top{justify-content:flex-start;gap:10px}
  .sortable-visit .visit-top strong{font-size:1rem}
}

@media(max-width:999px){
  .visit-card{padding-top:12px!important}
  .visit-card .visit-order{position:absolute;left:12px;top:12px}
  .visit-card .visit-link{padding-left:58px}
  .visit-card .drag-handle{
    position:absolute;right:12px;top:12px;width:44px;height:44px;
    display:flex;align-items:center;justify-content:center;border-radius:10px;
    background:#f0f2f5;font-size:1.35rem;
  }
  .projection-row{grid-template-columns:110px minmax(0,1fr)}
  .visit-province-row{grid-template-columns:110px minmax(0,1fr) 42px}
  .projection-summary{margin-top:8px}
}

/* V20 autenticación local */
.auth-page{min-height:100vh;padding:0;background:linear-gradient(145deg,#172033,#263650)}
.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:22px}
.auth-card{width:min(430px,100%);padding:28px}.auth-card h1{text-align:center}.auth-mark{width:58px;height:58px;margin:0 auto 12px;border-radius:16px;background:#172033;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:1.3rem}
.auth-form{margin-top:18px}.auth-form .btn{width:100%}.auth-note{text-align:center;font-size:.8rem}
.session-user{display:flex;align-items:center;gap:9px;color:#dbe3ef;font-size:.8rem;white-space:nowrap}.session-user form{margin:0}.session-user .btn{min-height:34px;background:#ffffff12;color:#fff;border-color:#ffffff33}
.password-card{max-width:620px}
.user-admin-form{display:grid;grid-template-columns:120px 1fr 1.4fr 160px 180px auto;gap:10px;align-items:end}
.user-list{display:grid;gap:12px}.user-row{border:1px solid #e1e6eb;border-radius:12px;padding:13px}.user-edit-form{display:grid;grid-template-columns:110px 1fr 1.4fr 150px auto auto;gap:10px;align-items:end}
.user-security{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}.reset-password-form{display:flex;gap:8px;align-items:center}.reset-password-form input{min-width:220px}.badge.locked{background:#fee2e2;color:#991b1b}.user-meta{font-size:.76rem;color:#657084;margin-top:8px}
@media(max-width:900px){.user-admin-form,.user-edit-form{grid-template-columns:1fr}.reset-password-form{display:grid;grid-template-columns:1fr}.reset-password-form input{min-width:0}.session-user .desktop-only{display:none!important}}

/* V20 - corrección Safari móvil para visitas */
.visit-order{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:900;background:#eef4ff;color:#1d4ed8;font-variant-numeric:tabular-nums}
.drag-handle{touch-action:none;user-select:none;-webkit-user-select:none}
.visit-card.touch-dragging{opacity:.72;box-shadow:0 10px 30px rgba(0,0,0,.22);z-index:100}
@media(max-width:999px){
 .sortable-visit{display:grid!important;grid-template-columns:42px 48px minmax(0,1fr);grid-template-rows:auto auto auto;gap:8px;align-items:center;padding:12px!important;overflow:visible!important}
 .sortable-visit .visit-order{position:static!important;grid-column:1;grid-row:1;width:38px;height:38px;margin:0}
 .sortable-visit .drag-handle{position:static!important;grid-column:2;grid-row:1;width:44px;height:44px;margin:0!important;display:flex;align-items:center;justify-content:center;background:#eef1f5;border-radius:10px;font-size:1.35rem}
 .sortable-visit .visit-link{grid-column:1/-1;grid-row:2;padding:8px 0!important;min-width:0}
 .sortable-visit .visit-top{padding-right:0;align-items:flex-start}
 .sortable-visit .visit-top strong{min-width:0;overflow-wrap:anywhere}
 .sortable-visit .visit-actions{grid-column:1/-1;grid-row:3;padding:10px 0 0!important;margin:0;border-top:1px solid #edf0f3;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .sortable-visit .visit-actions>.btn,.sortable-visit .visit-actions>form{width:100%;min-width:0}
 .sortable-visit .visit-actions form{padding:0!important;margin:0!important}
 .sortable-visit .visit-actions form .btn{width:100%}
}

/* V21 - administración de cliente e importación */
.admin-client-grid{display:grid;grid-template-columns:1fr;gap:16px}
.admin-seller-form,.admin-delete-client{display:grid;gap:10px;align-items:end}
.admin-delete-client{padding-top:14px;border-top:1px solid #edf0f3}
@media(min-width:900px){
 .admin-client-grid{grid-template-columns:1fr 1fr}
 .admin-seller-form{grid-template-columns:minmax(260px,1fr) auto}
 .admin-delete-client{grid-template-columns:minmax(300px,1fr) auto;padding-top:0;padding-left:18px;border-top:0;border-left:1px solid #edf0f3}
}


/* V22 - stock, logo y filtros activos */
.brand{display:flex;align-items:center;gap:9px}
.app-logo{width:34px;height:34px;object-fit:contain;border-radius:7px;background:#fff}
.logo-preview{display:flex;align-items:center;gap:12px;margin:10px 0 16px}
.logo-preview img{width:64px;height:64px;object-fit:contain;border:1px solid #e1e6eb;border-radius:10px;background:#fff}
.stock-search{display:grid;grid-template-columns:2fr repeat(4,minmax(150px,1fr));gap:10px}
.stock-search input[type=number]{min-width:0}
.stock-meta{display:flex;gap:24px;flex-wrap:wrap;font-size:.82rem}
.stock-table-wrap{overflow:auto;padding:0}
.stock-table{width:100%;border-collapse:collapse;min-width:1180px}
.stock-table th,.stock-table td{padding:11px 12px;border-bottom:1px solid #edf0f3;vertical-align:top}
.stock-table th{position:sticky;top:0;background:#f8fafc;text-align:left;z-index:1}
.stock-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin:18px 0}
@media(max-width:999px){
 .stock-search{grid-template-columns:1fr 1fr}
 .stock-search>input:first-child{grid-column:1/-1}
 .app-logo{width:30px;height:30px}
}
@media(max-width:620px){
 .stock-search{grid-template-columns:1fr}
 .stock-search>input:first-child{grid-column:auto}
}

@media(max-width:999px){
  .bottom-nav{overflow-x:auto;justify-content:flex-start;-webkit-overflow-scrolling:touch}
  .bottom-nav a{flex:0 0 auto;min-width:64px}
}

/* V23 - análisis comercial por cliente */
.analysis-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px;position:sticky;top:58px;z-index:5;background:var(--bg,#f5f7f9);padding:8px 0}
.analysis-period{scroll-margin-top:120px}
.analysis-kpis{display:grid;grid-template-columns:repeat(6,minmax(145px,1fr));gap:10px;margin-bottom:12px}
.analysis-kpis .kpi{display:flex;flex-direction:column;gap:5px}
.analysis-kpis .kpi span,.analysis-kpis .kpi small{color:#66717d}
.analysis-kpis .kpi strong{font-size:1.35rem}
.analysis-kpis .kpi em{font-style:normal;font-weight:700}
.up{color:#16794a!important}.down{color:#b42318!important}
.analysis-summary p{margin:5px 0}.opportunities li{margin:8px 0}
.analysis-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}
.analysis-table{width:100%;border-collapse:collapse;font-size:.86rem}
.analysis-table th,.analysis-table td{padding:8px;border-bottom:1px solid #edf0f3;text-align:left;vertical-align:top}
.analysis-table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.analysis-table small{display:block;color:#77818b;margin-top:2px}
.monthly-bars{display:grid;gap:5px;max-height:420px;overflow:auto}
.month-row{display:grid;grid-template-columns:62px 1fr 92px;align-items:center;gap:8px;font-size:.82rem}
.month-row strong{text-align:right}.bar-track{height:9px;background:#e8edf1;border-radius:6px;overflow:hidden}
.bar-track i{display:block;height:100%;background:currentColor;border-radius:6px;min-width:1px}
.analysis-separator{border:0;border-top:2px solid #dfe5ea;margin:30px 0}
.analysis-note{margin:20px 0 40px}
@media(max-width:1200px){.analysis-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:800px){.analysis-kpis{grid-template-columns:repeat(2,1fr)}.analysis-grid{grid-template-columns:1fr}.analysis-tabs{position:static}.month-row{grid-template-columns:55px 1fr 78px}}

/* V24 - frecuencia de compra */
.purchase-cycle{display:flex;gap:12px;flex-wrap:wrap;margin-top:7px;font-size:.82rem;color:#66717d}
.purchase-cycle.purchase-delayed{padding:7px 9px;border-radius:8px;background:#fff3f1;color:#8f2d23}
.purchase-cycle strong{font-weight:700}
@media(max-width:620px){.purchase-cycle{gap:5px 10px}.purchase-cycle strong{flex-basis:100%}}

/* V24 - frecuencia de compra */
.purchase-cycle{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:7px;padding-top:7px;border-top:1px solid #edf0f3;font-size:.8rem;color:#5f6975}
.purchase-cycle strong{font-size:.78rem}
.purchase-cycle.purchase-delayed{color:#9a3412}
.purchase-cycle.purchase-delayed strong{color:#b42318}
@media(max-width:700px){
  .purchase-cycle{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px}
  .purchase-cycle strong{grid-column:1/-1}
}

/* V25 - Dirección y semáforo de mapa */
.direction-filters{display:grid;grid-template-columns:repeat(3,minmax(170px,1fr)) auto auto;gap:10px}
.direction-period-note{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.direction-kpis{display:grid;grid-template-columns:repeat(6,minmax(145px,1fr));gap:10px;margin:12px 0}
.direction-kpis .kpi{display:flex;flex-direction:column;gap:5px}
.direction-kpis .kpi span,.direction-kpis .kpi small{color:#66717d}
.direction-kpis .kpi strong{font-size:1.3rem}
.direction-kpis .kpi em{font-style:normal;font-weight:700}
.direction-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}
.portfolio-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.portfolio-status{display:flex;flex-direction:column;gap:5px;padding:12px;border:1px solid #e5e9ed;border-radius:10px;text-decoration:none;color:inherit}
.portfolio-status strong{font-size:1.35rem}
.portfolio-status.normal{border-left:5px solid #16794a}
.portfolio-status.attention{border-left:5px solid #d97706}
.portfolio-status.risk{border-left:5px solid #b42318}
.portfolio-status.unknown{border-left:5px solid #8a94a0}
.concentration-list,.movement-stats{display:grid;gap:10px}
.concentration-list div,.movement-stats div{display:flex;justify-content:space-between;gap:16px;padding:9px 0;border-bottom:1px solid #edf0f3}
.direction-table-wrap{overflow:auto}
.direction-table{width:100%;border-collapse:collapse;min-width:850px}
.direction-table th,.direction-table td{padding:9px 10px;border-bottom:1px solid #edf0f3;text-align:left;vertical-align:top}
.direction-table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.direction-table small,.direction-list small{display:block;color:#77818b}
.direction-list{display:grid}
.direction-list>a{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid #edf0f3;text-decoration:none;color:inherit}
.direction-note{margin:18px 0 34px}
.map-health-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:.86rem}
.map-health-legend span{display:inline-flex;align-items:center;gap:5px}
.health-dot{width:11px;height:11px;border-radius:50%;display:inline-block}
.health-dot.normal{background:#16794a}.health-dot.attention{background:#d97706}.health-dot.risk{background:#b42318}.health-dot.unknown{background:#8a94a0}
.client-health-divicon{background:transparent!important;border:0!important}
.client-health-pin{display:block;width:20px;height:20px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.45)}
.client-health-pin.normal{background:#16794a}.client-health-pin.attention{background:#d97706}.client-health-pin.risk{background:#b42318}.client-health-pin.unknown{background:#8a94a0}
@media(max-width:1100px){.direction-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:800px){.direction-filters{grid-template-columns:1fr}.direction-kpis{grid-template-columns:repeat(2,1fr)}.direction-grid{grid-template-columns:1fr}.portfolio-status-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.direction-kpis{grid-template-columns:1fr 1fr}.portfolio-status-grid{grid-template-columns:1fr}}

/* V25 - identidad visual inspirada en la web corporativa Kima.
   Solo capa visual: no altera estructura, tamaños táctiles ni comportamiento. */
:root{
  --kima-ink:#202225;
  --kima-ink-soft:#34373b;
  --kima-orange:#00a9e0;
  --kima-orange-dark:#008bc0;
  --kima-orange-soft:#e7f7fd;
  --kima-bg:#f6f6f4;
  --kima-line:#e5e2dd;
  --kima-muted:#6c7075;
}
html{background:var(--kima-bg)}
body{background:var(--kima-bg);color:var(--kima-ink)}
.topbar{background:var(--kima-ink);box-shadow:0 2px 10px #00000024}
.topbar nav a:hover{background:#ffffff14}
.container{max-width:1180px}
.card,.stat{border-color:var(--kima-line);box-shadow:0 2px 8px #1d1f2110}
.btn{border-color:#d8d4ce;color:var(--kima-ink);background:#fff}
.btn:hover{border-color:var(--kima-orange);box-shadow:0 1px 4px #00a9e026}
.btn.primary{background:var(--kima-orange);border-color:var(--kima-orange);color:#fff}
.btn.primary:hover{background:var(--kima-orange-dark);border-color:var(--kima-orange-dark)}
input:focus,select:focus,textarea:focus{outline:2px solid #00a9e03d;border-color:var(--kima-orange)}
.badge{background:#f0efec;color:#45484c}
.default-contact{background:var(--kima-orange-soft);color:#007cae}
a.back-link,.section-head>a{color:#007cae}
.bottom-nav a:active{color:var(--kima-orange-dark)}
.billing div{background:#f8f7f5}
.flash{border:1px solid #e8e3dc}
.map{border-color:var(--kima-line)}
.bar-track{background:#ece9e4}
.bar-track i{color:var(--kima-orange);background:var(--kima-orange)}
.purchase-cycle.purchase-delayed{background:#fff8ef;border-radius:8px;padding:7px 8px;border-top:0}

/* Dirección */
.direction-filters{grid-template-columns:1fr}
.direction-period-note{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.direction-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}
.direction-kpis .kpi{display:flex;flex-direction:column;gap:5px}
.direction-kpis .kpi span,.direction-kpis .kpi small{color:var(--kima-muted)}
.direction-kpis .kpi strong{font-size:1.35rem}
.direction-kpis .kpi em{font-style:normal;font-weight:800}
.direction-grid{display:grid;grid-template-columns:1fr;gap:12px;margin-bottom:14px}
.portfolio-status-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}
.portfolio-status{display:flex;flex-direction:column;gap:4px;padding:12px;border:1px solid var(--kima-line);border-radius:11px;background:#fff}
.portfolio-status:hover{border-color:var(--kima-orange)}
.portfolio-status strong{font-size:1.35rem}.portfolio-status small{font-size:.72rem}
.portfolio-status.normal{border-left:5px solid #2e8b57}
.portfolio-status.attention{border-left:5px solid #e49a18}
.portfolio-status.risk{border-left:5px solid #c53b32}
.portfolio-status.unknown{border-left:5px solid #9aa0a6}
.concentration-list,.movement-stats{display:grid;gap:8px}
.concentration-list div,.movement-stats div{display:flex;justify-content:space-between;gap:12px;padding:10px;border-bottom:1px solid #eeeae5}
.direction-table-wrap{overflow:auto}
.direction-table{width:100%;border-collapse:collapse;font-size:.85rem}
.direction-table th,.direction-table td{padding:9px 8px;border-bottom:1px solid #eeeae5;text-align:left;vertical-align:top}
.direction-table th{color:#62666b;font-size:.75rem;text-transform:uppercase;letter-spacing:.025em}
.direction-table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.direction-table small{display:block}
.direction-list{display:grid}
.direction-list>a{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #eeeae5}
.direction-list>a:last-child{border-bottom:0}.direction-list span:first-child{min-width:0}
.direction-list strong,.direction-list small{display:block}.direction-list small{margin-top:2px}
.direction-note{margin:20px 0 36px}

/* Semáforo de salud en mapa */
.map-health-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 14px}
.map-health-legend span{display:inline-flex;align-items:center;gap:6px;font-size:.84rem}
.health-dot{width:11px;height:11px;border-radius:50%;display:inline-block}
.health-dot.normal{background:#2e8b57}.health-dot.attention{background:#e49a18}.health-dot.risk{background:#c53b32}.health-dot.unknown{background:#8b9299}
.client-health-divicon{background:transparent!important;border:0!important}
.client-health-pin{display:block;width:22px;height:22px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:3px solid #fff;box-shadow:0 1px 5px #0006}
.client-health-pin.normal{background:#2e8b57}
.client-health-pin.attention{background:#e49a18}
.client-health-pin.risk{background:#c53b32}
.client-health-pin.unknown{background:#8b9299}
.client-health-pin:after{content:"";display:block;width:6px;height:6px;background:#fff;border-radius:50%;position:absolute;left:5px;top:5px}

@media(min-width:650px){
  .direction-filters{grid-template-columns:1fr 1.3fr 1.3fr auto auto}
  .direction-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .direction-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:1050px){
  .direction-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
}
@media(max-width:520px){
  .direction-kpis{grid-template-columns:1fr 1fr}
  .portfolio-status-grid{grid-template-columns:1fr}
  .map-health-legend{gap:8px 12px}
}


/* V25.3 - paginación de listados */
.app-pagination{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin:18px 0 24px}
.app-pagination>span{font-size:.88rem;color:#657084;white-space:nowrap}
@media(max-width:520px){
  .app-pagination{display:grid;grid-template-columns:1fr auto 1fr;gap:7px}
  .app-pagination .btn:first-child{justify-self:stretch}
  .app-pagination .btn:last-child{justify-self:stretch}
  .app-pagination>span{text-align:center;font-size:.78rem}
}


/* V26 - histórico, frecuencia comercial y protección Google */
.data-coverage{margin-left:auto;padding:5px 9px;border-radius:8px;background:#e7f7fd;color:#075f83;font-size:.82rem}
.annual-bars{display:grid;gap:9px}
.annual-row{display:grid;grid-template-columns:72px 1fr 105px 62px;gap:9px;align-items:center;font-size:.84rem}
.annual-row strong,.annual-row em{text-align:right;white-space:nowrap}.annual-row em{font-style:normal;font-weight:800}
.google-quota-card{border-left:5px solid #00a9e0}
.google-quota-meter{height:10px;background:#e8edf1;border-radius:999px;overflow:hidden;margin:9px 0 12px}
.google-quota-meter i{display:block;height:100%;background:#00a9e0;border-radius:999px}
button:disabled,.btn:disabled{opacity:.52;cursor:not-allowed;box-shadow:none}
.google-quota-note{margin:6px 0 12px;font-size:.78rem}
@media(max-width:650px){
  .data-coverage{margin-left:0;width:100%}
  .annual-row{grid-template-columns:58px 1fr 88px}
  .annual-row em{grid-column:3}
}


/* V26.1 - filtros múltiples buscables */
.multi-select{position:relative;min-width:0}
.multi-select-toggle{
  width:100%;min-height:42px;padding:9px 10px;border:1px solid #cfd6dd;border-radius:8px;
  background:#fff;color:#202225;display:flex;align-items:center;gap:7px;text-align:left;
  font:inherit;cursor:pointer
}
.multi-select-toggle:hover,.multi-select.has-selection .multi-select-toggle{border-color:#00a9e0}
.multi-select-caption{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.multi-select-count{font-size:.74rem;color:#007cae;white-space:nowrap;font-weight:700}
.multi-select-panel{
  position:absolute;z-index:80;left:0;top:calc(100% + 5px);width:max(100%,260px);max-width:min(360px,90vw);
  background:#fff;border:1px solid #d9e0e6;border-radius:10px;box-shadow:0 10px 28px #0002;padding:9px
}
.multi-select-search{width:100%;margin:0 0 7px!important}
.multi-select-actions{display:flex;gap:7px;margin-bottom:7px}
.multi-select-actions button{
  border:0;background:#edf7fb;color:#007cae;border-radius:6px;padding:5px 9px;font-size:.76rem;cursor:pointer
}
.multi-select-options{max-height:260px;overflow:auto;border-top:1px solid #edf0f2;padding-top:5px}
.multi-select-option{display:flex!important;align-items:center;gap:8px;padding:7px 5px!important;margin:0!important;border-radius:6px;cursor:pointer;font-size:.84rem}
.multi-select-option:hover{background:#f2f8fb}
.multi-select-option input{width:auto!important;min-height:0!important;margin:0!important;accent-color:#00a9e0}
.multi-select-option[hidden]{display:none!important}
@media(max-width:650px){
  .multi-select-panel{position:fixed;left:12px;right:12px;top:18vh;width:auto;max-width:none;max-height:68vh}
  .multi-select-options{max-height:50vh}
}


/* V26.2 - análisis de gerencia por vendedor y presencia de productos */
.seller-analysis-card{border-left:5px solid #00a9e0}
.attention-text{color:#a86500!important}
.product-presence-grid{align-items:start}
.direction-table td small{display:block;margin-top:2px;color:#75808a}
@media(min-width:650px){
  .direction-filters:has(.multi-select){grid-template-columns:minmax(120px,.8fr) minmax(150px,1fr) minmax(150px,1fr) minmax(180px,1.2fr) auto auto}
}


/* V26.2.1 - corrección de tarjetas Clientes para consulta/mantenimiento */
.client-card.readonly-client{
  display:block;
  padding:0;
  overflow:hidden;
}
.client-card.readonly-client .client-card-link{
  display:block;
  width:100%;
  padding:15px;
}
.client-card.readonly-client .client-main{
  min-width:0;
}
.client-card.readonly-client .client-main strong,
.client-card.readonly-client .client-main span{
  overflow-wrap:anywhere;
}
.client-card.readonly-client .client-meta{
  display:flex;
  flex-wrap:wrap;
  gap:6px 12px;
  align-items:center;
}
.client-card.readonly-client .purchase-cycle{
  width:100%;
}


/* V27 - acciones compactas de visitas en móvil */
.mobile-action-icon{display:none}
@media(max-width:700px){
  .visit-card{padding:10px}
  .visit-card .visit-link{padding-right:0}
  .compact-visit-actions{
    display:flex!important;
    flex-wrap:nowrap!important;
    gap:5px!important;
    align-items:center;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    padding-top:7px;
  }
  .compact-visit-actions form{display:inline-flex!important;margin:0!important}
  .compact-visit-actions .visit-icon-btn{
    width:34px;
    min-width:34px;
    height:34px;
    min-height:34px;
    padding:0!important;
    display:inline-flex!important;
    align-items:center;
    justify-content:center;
    border-radius:8px;
    font-size:16px;
    line-height:1;
  }
  .compact-visit-actions .desktop-action-label{display:none!important}
  .compact-visit-actions .mobile-action-icon{display:inline-flex!important;align-items:center;justify-content:center}
  .compact-visit-actions .action-letter{font-weight:900;font-size:16px;font-family:Arial,sans-serif}
  .compact-visit-actions .google-letter{color:#1683ff}
  .compact-visit-actions .waze-letter{color:#00a9e0}
  .visit-card .multiline{margin:5px 0}
  .visit-card .visit-top{gap:6px}
}


/* V27 - análisis de stock provisional */
.stock-analysis-warning{border-left:5px solid #e49a18;background:#fffaf1}
.stock-analysis-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}
.stock-analysis-kpis .kpi{display:flex;flex-direction:column;gap:4px}
.stock-analysis-kpis .kpi span,.stock-analysis-kpis .kpi small{color:#68727c}
.stock-analysis-kpis .kpi strong{font-size:1.35rem}
.stock-priority{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:.72rem;font-weight:800;white-space:nowrap}
.stock-priority.priority-critica{background:#fde8e7;color:#a5221c}
.stock-priority.priority-alta{background:#fff0dd;color:#9a5300}
.stock-priority.priority-media{background:#fff8df;color:#805f00}
.stock-priority.priority-vigilar{background:#e7f7fd;color:#007cae}
.stock-priority.priority-correcto{background:#e9f6ee;color:#267548}
.stock-analysis-table small{display:block;margin-top:3px}
.stock-insight-grid .direction-list>div{
  display:flex;justify-content:space-between;gap:12px;align-items:center;
  padding:10px 0;border-bottom:1px solid #eeeae5
}
.stock-insight-grid .direction-list>div:last-child{border-bottom:0}
.stock-insight-grid .direction-list span{min-width:0}
.stock-insight-grid .direction-list span strong,.stock-insight-grid .direction-list span small{display:block}
.stock-insight-grid .direction-list span small{margin-top:3px}
.client-top-products{margin-bottom:14px}
@media(min-width:760px){
  .stock-analysis-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(min-width:1100px){
  .stock-analysis-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
}


/* V28 - verificación segura de Google Places */
.google-linked-status{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#eef8fc;border:1px solid #c8e9f6;border-radius:10px;padding:10px 12px;margin:8px 0 12px}
.google-linked-status div>strong,.google-linked-status div>span,.google-linked-status div>small{display:block}
.google-linked-status div>span{margin-top:2px}.google-linked-status div>small{margin-top:3px;color:#65727d}
.google-place-badge{display:inline-block;margin:5px 0;padding:4px 7px;border-radius:999px;background:#e9f6ee;color:#267548;font-size:.75rem;font-weight:700}
.google-verify-info{border-left:5px solid #00a9e0}
.google-verify-info p{margin-bottom:4px}
.google-candidates{display:grid;gap:12px}
.google-candidate{border-left:5px solid #9aa0a6}
.google-candidate.confidence-alta{border-left-color:#2e8b57}
.google-candidate.confidence-media{border-left-color:#e49a18}
.google-candidate.confidence-baja{border-left-color:#c53b32}
.google-candidate-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.google-candidate-head h2{margin:5px 0 3px;font-size:1.08rem}
.google-candidate-head p{margin:0}
.google-confidence{display:inline-block;padding:4px 7px;border-radius:999px;font-size:.72rem;font-weight:800}
.google-confidence.alta{background:#e9f6ee;color:#267548}
.google-confidence.media{background:#fff3df;color:#946000}
.google-confidence.baja{background:#fde8e7;color:#a5221c}
.google-match-score{font-size:1.35rem;font-weight:900;text-align:center;white-space:nowrap}
.google-match-score small{display:block;font-size:.65rem;color:#74808a;text-transform:uppercase}
.google-candidate-signals{display:flex;flex-wrap:wrap;gap:6px 12px;margin:10px 0;font-size:.8rem}
.google-candidate-signals .match-ok{color:#267548;font-weight:700}
.google-candidate-signals .match-no{color:#7a8188}
.google-candidate form{margin-top:10px}
@media(max-width:650px){
  .google-linked-status{align-items:flex-start;flex-direction:column}
  .google-candidate-head{gap:7px}
  .google-match-score{font-size:1.1rem}
}

.google-match-scores{display:flex;gap:10px;align-items:flex-start}


/* V28.3 - Visitas móvil: 4 acciones por fila */
@media(max-width:700px){
  .compact-visit-actions{
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:6px!important;
    width:100%!important;
    overflow:visible!important;
    padding-top:6px!important;
  }

  .compact-visit-actions > a,
  .compact-visit-actions > button,
  .compact-visit-actions > form{
    width:100%!important;
    min-width:0!important;
    margin:0!important;
  }

  .compact-visit-actions > form{
    display:block!important;
  }

  .compact-visit-actions > form > .visit-icon-btn,
  .compact-visit-actions > .visit-icon-btn{
    width:100%!important;
    min-width:0!important;
    height:34px!important;
    min-height:34px!important;
    margin:0!important;
    padding:0!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
  }

  .compact-visit-actions .desktop-action-label{
    display:none!important;
  }

  .compact-visit-actions .mobile-action-icon{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
  }

  .visit-card{
    padding:9px!important;
  }

  .visit-card .visit-actions{
    margin-top:5px!important;
  }

  .visit-card .visit-link{
    min-height:0!important;
  }
}


/* V29.2 - selector de periodo del análisis del cliente */
.analysis-period-controls{margin-bottom:14px}
.analysis-period-controls .analysis-tabs{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin:0 0 10px;
}
.analysis-scope-inline{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.analysis-scope-inline .filter-checkbox{width:auto}
.analysis-cache-status{margin:8px 0 0;font-size:.78rem}
.analysis-period .client-top-products,
.analysis-period .client-machinery-table{margin:12px 0}
@media(max-width:649px){
  .analysis-period-controls .analysis-tabs{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:5px;
  }
  .analysis-period-controls .analysis-tabs .btn{
    padding:8px 5px;
    font-size:.75rem;
    white-space:normal;
  }
  .analysis-scope-inline{
    display:grid;
    grid-template-columns:1fr auto;
  }
  .analysis-scope-inline .filter-checkbox{
    min-width:0;
    width:100%;
    white-space:normal;
  }
}




/* V30.2 — barras de filtros restauradas y uniformes */
.toolbar-form{
  display:flex!important;
  flex-wrap:wrap!important;
  align-items:flex-end!important;
  gap:10px!important;
  width:100%;
}

.toolbar-form > input{
  flex:2 1 280px;
  width:auto!important;
  min-width:220px!important;
  height:44px!important;
  box-sizing:border-box;
}

.toolbar-form > select{
  flex:1 1 155px;
  width:auto!important;
  min-width:145px!important;
  height:44px!important;
  box-sizing:border-box;
}

.toolbar-form > .multi-select{
  flex:1 1 170px;
  min-width:155px!important;
}

.toolbar-form > .multi-select > .multi-select-toggle{
  height:44px!important;
  min-height:44px!important;
  box-sizing:border-box;
}

.toolbar-form > label:not(.filter-checkbox){
  flex:1 1 155px;
  min-width:145px;
  margin:0!important;
}

.toolbar-form > label:not(.filter-checkbox) > input,
.toolbar-form > label:not(.filter-checkbox) > select{
  height:44px!important;
  min-height:44px!important;
  margin-top:6px!important;
  box-sizing:border-box;
}

.toolbar-form > .btn{
  flex:0 0 auto!important;
  width:auto!important;
  min-width:104px;
  height:44px!important;
  min-height:44px!important;
  padding:9px 16px!important;
  white-space:nowrap;
  box-sizing:border-box;
}

.toolbar-form > .filter-checkbox{
  flex:0 0 auto;
  min-height:44px!important;
  height:44px!important;
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  margin:0!important;
  padding:0 4px!important;
  border:0!important;
  background:transparent!important;
  border-radius:0!important;
  color:#172033!important;
  font-size:.9rem!important;
  font-weight:700!important;
  white-space:nowrap;
}

.toolbar-form > .filter-checkbox input[type="checkbox"]{
  width:20px!important;
  height:20px!important;
  min-height:20px!important;
  margin:0!important;
  padding:0!important;
  flex:0 0 20px;
}

/* Clientes tiene muchos controles: el buscador conserva más espacio y los demás
   distribuyen de forma uniforme sin crear cajas gigantes. */
.list-search-filters.toolbar-form > select{
  max-width:230px;
}
.list-search-filters.toolbar-form > .multi-select{
  max-width:230px;
}

/* Dirección conserva una sola línea cuando el ancho lo permite. */
.direction-filters.toolbar-form > select{
  flex:1 1 180px;
}
.direction-filters.toolbar-form > .multi-select{
  flex:1 1 210px;
}

/* Mapa: barra compacta y proporcionada. */
.map-filter-form > input{
  flex:1.4 1 260px;
}
.map-filter-form > select{
  flex:1 1 190px;
}
.map-filter-form > .btn{
  min-width:130px;
}

/* Exportación de visitas: mismos tamaños visuales que la barra principal. */
.visit-export-form{
  display:flex!important;
  flex-wrap:wrap!important;
  align-items:flex-end!important;
  gap:10px!important;
}
.visit-export-form > label{
  flex:1 1 180px;
  margin:0!important;
}
.visit-export-form > label:nth-child(3){
  flex:3 1 360px;
}
.visit-export-form input,
.visit-export-form select,
.visit-export-form .btn{
  min-height:44px!important;
  height:44px!important;
  box-sizing:border-box;
}
.visit-export-form > .btn{
  flex:0 0 auto;
  width:auto!important;
  min-width:160px;
}

/* Los details existen solo para móvil; en escritorio no alteran el layout. */
@media(min-width:650px){
  .mobile-filter-details,
  .mobile-page-actions{
    display:contents!important;
  }
  .mobile-filter-details > summary,
  .mobile-page-actions > summary{
    display:none!important;
  }
  .mobile-filter-details > .toolbar-form{
    display:flex!important;
  }
  .mobile-page-actions > .mobile-page-actions-content{
    display:flex!important;
    align-items:center!important;
    gap:8px!important;
    flex-wrap:wrap!important;
  }
}

/* Móvil: filtros y acciones plegados pero recuperables. */
@media(max-width:649px){
  .mobile-filter-details,
  .mobile-page-actions{
    display:block!important;
    width:100%!important;
    margin-bottom:10px;
  }

  .mobile-filter-details > summary,
  .mobile-page-actions > summary{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    width:100%!important;
    min-height:44px!important;
    cursor:pointer!important;
    list-style:none!important;
  }
  .mobile-filter-details > summary::-webkit-details-marker,
  .mobile-page-actions > summary::-webkit-details-marker{
    display:none!important;
  }

  .mobile-filter-details:not([open]) > .toolbar-form,
  .mobile-page-actions:not([open]) > .mobile-page-actions-content{
    display:none!important;
  }

  .mobile-filter-details[open] > .toolbar-form{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    margin-top:8px!important;
  }

  .mobile-filter-details[open] > .toolbar-form > *,
  .mobile-filter-details[open] > .toolbar-form > input,
  .mobile-filter-details[open] > .toolbar-form > select,
  .mobile-filter-details[open] > .toolbar-form > .multi-select,
  .mobile-filter-details[open] > .toolbar-form > label{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
  }

  .mobile-filter-details[open] > .toolbar-form > .filter-checkbox{
    justify-content:flex-start!important;
    padding:0!important;
  }

  .mobile-page-actions[open] > .mobile-page-actions-content{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:6px!important;
    margin-top:7px!important;
  }
  .mobile-page-actions-content .btn{
    width:100%!important;
  }

  .visit-export-card{
    display:none!important;
  }
}


/* V30.4 — normalización de controles SOLO en escritorio.
   El móvil (<650px) queda sin cambios respecto a V30.2. */
@media(min-width:650px){

  /* Misma caja visual para inputs/selects/botones sin tocar textarea. */
  input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
  select,
  button,
  .btn,
  .multi-select-toggle{
    box-sizing:border-box!important;
    min-height:44px!important;
    height:44px!important;
    line-height:1.2!important;
  }

  input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
  select{
    padding-top:9px!important;
    padding-bottom:9px!important;
  }

  button,
  .btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding-top:9px!important;
    padding-bottom:9px!important;
  }

  /* Los controles dentro de labels no suman alturas distintas. */
  label input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
  label select{
    margin-top:6px!important;
  }

  /* Formularios normales: anchuras completas y consistentes. */
  .form.card input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
  .form.card select,
  .form.card textarea{
    width:100%!important;
    max-width:100%!important;
  }

  /* Date y select usan exactamente la misma altura en Safari/Chrome. */
  input[type="date"],
  input[type="datetime-local"],
  select{
    appearance:auto;
    -webkit-appearance:auto;
  }

  /* Acciones de formularios: botones compactos, no estirados. */
  .form-actions .btn,
  .actions .btn,
  .quick-actions .btn,
  .visit-actions .btn,
  .contact-actions .btn{
    width:auto!important;
    min-width:0;
  }

  /* Selectores multiselección exactamente alineados. */
  .multi-select,
  .multi-select-toggle{
    min-height:44px!important;
  }

  /* Usuarios: preserva su grid existente y evita desbordamientos. */
  .user-admin-form input,
  .user-admin-form select,
  .user-edit-form input,
  .user-edit-form select{
    width:100%!important;
    min-width:0!important;
  }

  /* Barras de filtros de V30.2: todos los controles en la misma línea visual. */
  .toolbar-form{
    align-items:flex-end!important;
  }
  .toolbar-form > input,
  .toolbar-form > select,
  .toolbar-form > .multi-select,
  .toolbar-form > .btn,
  .toolbar-form > .filter-checkbox{
    align-self:flex-end;
  }

  /* El checkbox no debe heredar altura/estilo de los inputs normales. */
  .filter-checkbox input[type="checkbox"]{
    width:20px!important;
    height:20px!important;
    min-height:20px!important;
    padding:0!important;
  }
}


/* V31.2 - extensiones de mapa; no modifica estilos existentes. */
.client-health-pin.future-visit{background:#111827!important}
.map-popup-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.map-popup-actions .btn{margin:0}

.health-dot.future-visit-dot{background:#111827!important}


/* V31.4 - estilos exclusivos de funciones nuevas */
.ignored-badge{opacity:.8}
.client-location-group,.visit-location-group{
  display:flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:50%;
  background:#172033;color:#fff;border:2px solid #fff;
  font-weight:800;box-shadow:0 1px 5px rgba(0,0,0,.28)
}
.map-group-popup{min-width:270px}
.map-group-client{padding:9px 0;border-top:1px solid #e5e7eb}
.map-group-client:first-of-type{margin-top:6px}
.route-mail-select{display:flex;align-items:center;justify-content:center;margin:0 4px 0 0}
.route-mail-select input{width:18px;height:18px}
.shared-files-list{display:grid;gap:10px}
.shared-file-card{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit}
.shared-file-card>span:nth-child(2){display:flex;flex-direction:column;min-width:0;flex:1}
.shared-file-card small{color:#65758b;margin-top:3px}
.shared-file-icon{font-size:1.45rem}
.shared-file-open{white-space:nowrap}
.shared-file-admin-list{display:grid;gap:8px;margin-top:12px}
.shared-file-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid #e5e7eb}
.shared-file-row form{margin:0}
@media(max-width:649px){
  .visit-map-order-action,#saveOrder,#resetOrder{display:none!important}
  .route-mail-card,.route-mail-select{display:none!important}
  .map-group-popup{min-width:230px}
  .map-group-client .map-popup-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
  .map-group-client .map-popup-actions .btn{min-width:0;padding:7px 5px}
}




/* V31.5.2 - modo planificación estable del mapa (solo escritorio) */
@media(min-width:650px){
  .map-planning-toggle{
    display:flex;
    justify-content:flex-end;
    margin:8px 0;
  }

  body.map-planning-mode{
    overflow:hidden;
  }

  body.map-planning-mode .topbar,
  body.map-planning-mode .bottom-nav,
  body.map-planning-mode .site-footer{
    display:none!important;
  }

  body.map-planning-mode main.container{
    position:fixed!important;
    inset:0!important;
    z-index:9990!important;
    width:100vw!important;
    max-width:none!important;
    height:100vh!important;
    margin:0!important;
    padding:10px!important;
    box-sizing:border-box!important;
    background:#f4f7f9!important;
    display:grid!important;
    grid-template-rows:auto auto minmax(320px,1fr) auto!important;
    gap:8px!important;
    overflow:hidden!important;
  }

  body.map-planning-mode main.container > .page-head,
  body.map-planning-mode main.container > .map-health-legend{
    display:none!important;
  }

  body.map-planning-mode main.container > .map-filter-form,
  body.map-planning-mode main.container > .map-selection-toolbar{
    margin:0!important;
    position:relative!important;
    z-index:9993!important;
  }

  body.map-planning-mode #map{
    display:block!important;
    position:relative!important;
    width:100%!important;
    height:100%!important;
    min-height:320px!important;
    max-height:none!important;
    margin:0!important;
    z-index:9991!important;
    border-radius:12px!important;
    overflow:hidden!important;
  }

  body.map-planning-mode #map-bulk-panel{
    display:grid!important;
    grid-template-columns:minmax(220px,1fr) minmax(500px,2fr)!important;
    align-items:center!important;
    gap:12px!important;
    margin:0!important;
    max-height:155px!important;
    overflow:auto!important;
    position:relative!important;
    z-index:9993!important;
  }

  body.map-planning-mode #map-bulk-panel[hidden]{
    display:grid!important;
  }

  body.map-planning-mode #map-selected-list{
    max-height:95px!important;
    overflow:auto!important;
  }

  body.map-planning-mode #map-bulk-form{
    display:flex!important;
    align-items:end!important;
    gap:8px!important;
    margin:0!important;
  }

  body.map-planning-mode #map-bulk-form .grid-2{
    display:flex!important;
    gap:8px!important;
    flex:1!important;
  }

  body.map-planning-mode .map-planning-toggle{
    position:fixed!important;
    top:12px!important;
    right:12px!important;
    z-index:10020!important;
    margin:0!important;
  }

  body.map-planning-mode #toggle-planning-mode{
    display:inline-flex!important;
  }
}


/* V31.5.4 - correcciones visuales exclusivas del mapa */
.client-location-group,
.visit-location-group{
  background:#8e2bb9!important;
  color:#fff!important;
}

/* Panel inferior del Modo planificación: formulario a la izquierda,
   clientes seleccionados a la derecha. Solo escritorio. */
@media(min-width:650px){
  body.map-planning-mode #map-bulk-panel{
    grid-template-columns:minmax(390px,0.8fr) minmax(540px,2fr)!important;
    grid-template-rows:auto minmax(72px,1fr)!important;
    align-items:start!important;
    column-gap:18px!important;
    row-gap:6px!important;
    max-height:190px!important;
    padding:14px 18px!important;
    overflow:hidden!important;
  }

  body.map-planning-mode #map-bulk-panel > .section-head{
    grid-column:1!important;
    grid-row:1!important;
    margin:0!important;
    align-self:start!important;
  }

  body.map-planning-mode #map-bulk-panel > #map-bulk-form{
    grid-column:1!important;
    grid-row:2!important;
    display:flex!important;
    align-items:end!important;
    gap:10px!important;
    min-width:0!important;
    width:100%!important;
  }

  body.map-planning-mode #map-bulk-panel > #map-bulk-form .grid-2{
    display:grid!important;
    grid-template-columns:minmax(150px,1fr) minmax(150px,1fr)!important;
    gap:10px!important;
    min-width:0!important;
    flex:1!important;
  }

  body.map-planning-mode #map-bulk-panel > #map-bulk-form label{
    min-width:0!important;
    margin:0!important;
  }

  body.map-planning-mode #map-bulk-panel > #map-bulk-form input{
    width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  body.map-planning-mode #map-bulk-panel > #map-bulk-form > .btn{
    flex:0 0 auto!important;
    max-width:220px!important;
    white-space:normal!important;
  }

  body.map-planning-mode #map-bulk-panel > #map-selected-list{
    grid-column:2!important;
    grid-row:1 / span 2!important;
    max-height:155px!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    min-width:0!important;
    padding-right:4px!important;
  }

  body.map-planning-mode #map-bulk-panel .map-selected-row{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:12px!important;
    min-width:0!important;
    padding:8px 0!important;
  }

  body.map-planning-mode #map-bulk-panel .map-selected-row > span{
    min-width:0!important;
    flex:1!important;
  }

  body.map-planning-mode #map-bulk-panel .map-selected-row strong,
  body.map-planning-mode #map-bulk-panel .map-selected-row small{
    display:block!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }

  body.map-planning-mode #map-bulk-panel .map-selected-row .btn{
    flex:0 0 auto!important;
  }
}


/* V31.6 - popup compacto del mapa */
.map-client-compact{
  min-width:220px;
  max-width:285px;
  line-height:1.25;
}
.map-client-compact-name{
  display:block;
  margin-bottom:5px;
  line-height:1.2;
}
.map-client-compact-metrics{
  display:flex;
  gap:10px;
  justify-content:space-between;
  font-size:.84rem;
  white-space:nowrap;
}
.map-client-compact-last{
  margin-top:3px;
  font-size:.82rem;
  color:#65758b;
}
.map-popup-icon-row{
  display:grid;
  grid-template-columns:repeat(3,34px);
  gap:5px;
  margin-top:6px;
}
.map-popup-icon-btn{
  width:34px!important;
  height:30px!important;
  min-width:34px!important;
  min-height:30px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:0!important;
  border:1px solid #d9e1e8!important;
  border-radius:8px!important;
  background:#fff!important;
  color:#172033!important;
  text-decoration:none!important;
  font-size:15px!important;
  line-height:1!important;
  cursor:pointer!important;
  box-sizing:border-box!important;
}
.map-popup-icon-btn:hover{
  background:#f3f6f8!important;
}


/* V31.6.1 - ajustes puntuales del mapa ampliado */
@media(min-width:650px){
  body.map-planning-mode main.container > .map-filter-form{
    padding-right:210px!important;
  }

  body.map-planning-mode .map-planning-toggle{
    top:16px!important;
    right:18px!important;
  }

  body.map-planning-mode #map-bulk-panel{
    grid-template-columns:minmax(520px,1fr) minmax(480px,1.65fr)!important;
  }

  body.map-planning-mode #map-bulk-panel > #map-bulk-form{
    display:grid!important;
    grid-template-columns:minmax(300px,1fr) 210px!important;
    align-items:end!important;
    gap:10px!important;
  }

  body.map-planning-mode #map-bulk-panel > #map-bulk-form .grid-2{
    display:grid!important;
    grid-template-columns:minmax(145px,1fr) minmax(145px,1fr)!important;
    width:100%!important;
  }

  body.map-planning-mode #map-bulk-panel > #map-bulk-form > .btn{
    width:210px!important;
    max-width:210px!important;
    min-height:44px!important;
    align-self:end!important;
  }
}


/* V31.7 - módulo de Rutas (solo escritorio) */
.saved-routes-list{display:grid;gap:12px}
.saved-route-card{display:flex;align-items:center;justify-content:space-between;gap:18px}
.saved-route-card h2{margin:0 0 4px}
.saved-route-actions,.route-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.saved-route-actions form{margin:0}
.route-editor-toolbar{
  display:grid;
  grid-template-columns:minmax(260px,1.2fr) minmax(240px,1fr) auto auto auto;
  gap:10px;align-items:end;margin-bottom:10px
}
.route-editor-toolbar label{margin:0}
#route-map{height:62vh;min-height:480px;border-radius:14px;overflow:hidden}
.route-editor-selected{margin-top:10px}
#route-selected-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px;max-height:220px;overflow:auto}
.route-map-pin,.route-map-group{
  width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  border:2px solid #fff;box-shadow:0 1px 5px rgba(0,0,0,.28);font-weight:800
}
.route-map-pin{background:#2563eb;color:transparent}
.route-map-pin.selected{background:#16a34a;color:#fff}
.route-map-group{width:32px;height:32px;background:#8e2bb9;color:#fff}
.route-client-popup{min-width:220px;line-height:1.3}
.saved-route-toolbar{display:flex;justify-content:space-between;align-items:end;gap:16px}
.saved-route-sortbar{display:flex;align-items:center;gap:10px;margin:10px 0}
.saved-route-client-list{display:grid;gap:10px}
.saved-route-client{display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px;align-items:start}
.saved-route-check{padding-top:4px}
.saved-route-check input{width:18px;height:18px}
.saved-route-client-main{text-decoration:none;color:inherit;min-width:0}
@media(max-width:649px){
  .route-editor-page,.saved-routes-list,.saved-route-toolbar,.saved-route-sortbar,.saved-route-client-list{display:none!important}
}

/* V31.7.2 - selección poligonal exclusiva del editor de Rutas */
.route-polygon-actions{display:flex;gap:8px;align-items:end;flex-wrap:wrap}
.route-editor-toolbar{grid-template-columns:minmax(240px,1.1fr) minmax(220px,1fr) auto auto minmax(430px,auto) auto}
.route-editor-page .leaflet-draw-tooltip{white-space:nowrap}


/* V31.7.3 - ajustes exclusivamente escritorio: editor de rutas + acceso desde Clientes */
@media(min-width:650px){
  .route-editor-toolbar{
    display:grid!important;
    grid-template-columns:minmax(240px,1.1fr) minmax(220px,1fr) auto auto!important;
    align-items:end!important;
  }
  .route-editor-toolbar .route-polygon-actions{
    grid-column:1 / -2;
    display:flex!important;
    flex-wrap:wrap;
    gap:8px;
    min-width:0;
  }
  .route-editor-toolbar > button[type="submit"]{
    grid-column:-2 / -1;
    grid-row:2;
    align-self:end;
    position:static!important;
    width:auto!important;
    min-width:150px;
  }

  .client-card{position:relative}
  .client-route-tools{
    position:absolute;
    top:8px;
    right:8px;
    z-index:4;
    display:flex!important;
    align-items:flex-start;
    gap:6px;
    max-width:52%;
  }
  .client-route-badges{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
  .client-route-badge{
    display:inline-flex;align-items:center;max-width:190px;padding:3px 7px;border-radius:999px;
    font-size:11px;line-height:1.2;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    background:var(--surface,#fff);border:1px solid var(--border,#d7dce3);color:inherit
  }
  .client-add-route{position:relative;flex:0 0 auto}
  .client-add-route summary{list-style:none;cursor:pointer;white-space:nowrap}
  .client-add-route summary::-webkit-details-marker{display:none}
  .client-route-menu{
    position:absolute;right:0;top:calc(100% + 5px);z-index:30;min-width:220px;max-width:320px;
    max-height:280px;overflow:auto;padding:6px;background:var(--surface,#fff);
    border:1px solid var(--border,#d7dce3);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.16)
  }
  .client-route-menu form{margin:0}
  .client-route-menu button,.client-route-menu>a{
    display:block;width:100%;border:0;background:transparent;text-align:left;padding:8px;border-radius:7px;
    color:inherit;text-decoration:none;cursor:pointer;font:inherit
  }
  .client-route-menu button:hover,.client-route-menu>a:hover{background:rgba(127,127,127,.10)}
  .client-route-menu .already-route{font-weight:700}
  .selectable-client .client-card-link{padding-right:145px}
}


/* V31.7.4 - ajuste visual exclusivo del bloque Rutas en tarjetas de Clientes (escritorio) */
@media(min-width:650px){
  .client-route-tools{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    grid-template-rows:auto auto!important;
    align-items:start!important;
    justify-items:end!important;
    gap:5px 8px!important;
    width:min(300px,46%)!important;
    max-width:46%!important;
  }

  .client-add-route{
    grid-column:2!important;
    grid-row:1!important;
    justify-self:end!important;
    position:relative!important;
  }

  .client-route-badges{
    grid-column:1 / span 2!important;
    grid-row:2!important;
    width:100%!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    justify-items:end!important;
    gap:4px!important;
    min-width:0!important;
  }

  .client-route-badge{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
    text-align:right!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }

  .selectable-client .client-card-link{
    padding-right:320px!important;
  }
}


/* V31.8.0 - normalización visual conservadora y responsive */
:root{
  --ui-control-h:42px;
  --ui-control-radius:9px;
  --ui-gap-xs:6px;
  --ui-gap-sm:10px;
  --ui-gap-md:14px;
}
button.btn,a.btn,input[type="submit"].btn{
  min-height:var(--ui-control-h);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  box-sizing:border-box;
}
.btn.small{min-height:34px}
input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
select,textarea{
  box-sizing:border-box;
  border-radius:var(--ui-control-radius);
}
label>input:not([type="checkbox"]):not([type="radio"]),
label>select,label>textarea{margin-top:5px}
.form-actions,.page-head,.section-head,.bulk-create-actions{gap:var(--ui-gap-sm)}
.card{box-sizing:border-box}
.badge{display:inline-flex;align-items:center;max-width:100%;box-sizing:border-box}
.auth-logo-wrap{
  width:112px;height:82px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center
}
.auth-logo{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
.visit-route-optimizer{padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--border,#d7dce3)}
.visit-route-origin{display:grid;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) auto auto;gap:10px;align-items:end}
.visit-route-origin label{margin:0}
.route-optimization-result{margin-top:10px;padding:10px 12px;border-radius:10px;background:rgba(127,127,127,.08)}
.route-optimization-result ol{margin:8px 0 4px;padding-left:24px}
.route-optimization-result li{margin:3px 0}
@media(max-width:649px){
  :root{--ui-control-h:44px;--ui-gap-sm:8px;--ui-gap-md:12px}
  .page-head,.section-head{align-items:flex-start}
  .form-actions{flex-wrap:wrap}
  .form-actions>.btn,.form-actions>form>.btn{max-width:100%}
  .auth-card{width:min(100%,430px);box-sizing:border-box}
  .auth-logo-wrap{width:104px;height:74px}
}
@media(min-width:650px){
  .filters label,.form label{min-width:0}
}


/* V31.8.1 - asignación masiva de clientes a rutas, solo escritorio */
@media(min-width:650px){
  .bulk-route-add{display:flex!important;gap:8px;align-items:end}
  .bulk-route-add select{min-width:180px;max-width:260px}
  .client-has-route{
    position:absolute;top:8px;right:8px;z-index:3;
    display:inline-flex!important;align-items:center;
    padding:3px 8px;border:1px solid var(--border,#d7dce3);border-radius:999px;
    background:var(--surface,#fff);font-size:11px;font-weight:700;white-space:nowrap
  }
  .selectable-client .client-card-link{padding-right:92px!important}
}


/* V31.8.3 - ajustes visuales Clientes + espacios de trabajo de mapas (escritorio) */
@media(min-width:650px){
  /* Clientes: selector y botón de ruta estables, sin saltos al seleccionar. */
  .bulk-route-add{
    display:grid!important;
    grid-template-columns:220px 150px!important;
    align-items:end!important;
    gap:8px!important;
    flex:0 0 auto!important;
  }
  .bulk-route-add select{
    width:220px!important;min-width:220px!important;max-width:220px!important;height:var(--ui-control-h)!important;
  }
  .bulk-route-add .btn{
    width:150px!important;min-width:150px!important;max-width:150px!important;height:var(--ui-control-h)!important;
    white-space:nowrap!important;
  }
  .client-has-route{position:static!important}
  .selectable-client .client-card-link{padding-right:0!important}

  .map-page-actions{display:flex;gap:8px;align-items:center}

  /* Visitas y editor de Rutas: modo de trabajo 1/3 controles + 2/3 mapa. */
  body.map-workspace-full{overflow:hidden}
  body.map-workspace-full header,
  body.map-workspace-full nav,
  body.map-workspace-full footer{display:none!important}
  body.map-workspace-full main{max-width:none!important;width:100%!important;margin:0!important;padding:0!important}
  body.map-workspace-full .page-head{display:none!important}

  body.map-workspace-full .map-workspace-card{
    position:fixed!important;inset:0!important;z-index:5000!important;
    margin:0!important;padding:0!important;border:0!important;border-radius:0!important;
    background:var(--surface,#fff)!important;
    display:grid!important;grid-template-columns:minmax(280px,33.333vw) minmax(0,1fr)!important;
    grid-template-rows:1fr!important;overflow:hidden!important;
  }
  body.map-workspace-full .map-workspace-card .visit-route-optimizer,
  body.map-workspace-full #route-editor-form .route-editor-toolbar{
    grid-column:1!important;grid-row:1!important;
    overflow:auto!important;padding:18px!important;margin:0!important;border:0!important;border-radius:0!important;
    align-content:start!important;
  }
  body.map-workspace-full .map-workspace-card #map,
  body.map-workspace-full #route-map{
    grid-column:2!important;grid-row:1!important;
    width:100%!important;height:100vh!important;min-height:100vh!important;margin:0!important;border-radius:0!important;
  }
  body.map-workspace-full .map-workspace-card #orderInfo,
  body.map-workspace-full .map-workspace-card > .form-actions,
  body.map-workspace-full #route-editor-form .route-editor-selected{display:none!important}
  body.map-workspace-full .visit-route-origin{grid-template-columns:1fr!important}
  body.map-workspace-full .visit-route-origin .btn{width:100%!important}

  /* Botón flotante seguro para salir, sin tapar controles Leaflet. */
  body.map-workspace-full .map-page-actions{
    display:flex!important;position:fixed!important;left:16px!important;bottom:16px!important;z-index:5100!important
  }
  body.map-workspace-full .map-page-actions .map-workspace-toggle{display:inline-flex!important}
  body.map-workspace-full .map-page-actions a{display:none!important}

  /* Mapa general: su modo ampliado existente pasa al mismo patrón Google-Maps. */
  body.map-planning-mode{overflow:hidden!important}
  body.map-planning-mode header,body.map-planning-mode nav,body.map-planning-mode footer,
  body.map-planning-mode .page-head{display:none!important}
  body.map-planning-mode main{
    position:fixed!important;inset:0!important;z-index:5000!important;max-width:none!important;width:100%!important;
    margin:0!important;padding:0!important;background:var(--surface,#fff)!important;
    display:grid!important;grid-template-columns:minmax(300px,33.333vw) minmax(0,1fr)!important;
    grid-template-rows:auto auto 1fr!important;overflow:hidden!important
  }
  body.map-planning-mode .map-filter-form{
    grid-column:1!important;grid-row:1!important;margin:0!important;border-radius:0!important;border:0!important;
    padding:16px!important;display:grid!important;grid-template-columns:1fr!important;gap:8px!important
  }
  body.map-planning-mode .map-health-legend{
    grid-column:1!important;grid-row:2!important;margin:0!important;border-radius:0!important;border-width:1px 0!important;
    padding:12px 16px!important
  }
  body.map-planning-mode .map-selection-toolbar{
    grid-column:1!important;grid-row:3!important;margin:0!important;border:0!important;border-radius:0!important;
    padding:16px!important;align-self:start!important
  }
  body.map-planning-mode #map{
    grid-column:2!important;grid-row:1 / -1!important;width:100%!important;height:100vh!important;min-height:100vh!important;
    margin:0!important;border-radius:0!important
  }
  body.map-planning-mode .map-bulk-panel{
    grid-column:1!important;grid-row:3!important;align-self:end!important;max-height:48vh!important;overflow:auto!important;
    margin:0!important;border-radius:0!important;border:0!important;padding:16px!important
  }
  body.map-planning-mode .map-planning-toggle{
    position:fixed!important;left:16px!important;bottom:16px!important;z-index:5200!important;margin:0!important
  }
  body.map-planning-mode .map-planning-toggle .btn{box-shadow:0 4px 16px rgba(0,0,0,.2)}
}


/* V31.8.4 - correcciones visuales puntuales de escritorio */
@media(min-width:650px){

  /* CLIENTES: mantener una distribución fija aunque cambie el nº seleccionado. */
  .bulk-toolbar{
    display:grid!important;
    grid-template-columns:minmax(300px,360px) minmax(0,1fr)!important;
    gap:18px!important;
    align-items:center!important;
    padding:16px 18px!important;
  }

  .bulk-toolbar .bulk-select{
    display:grid!important;
    grid-template-columns:auto auto 170px!important;
    align-items:center!important;
    gap:10px!important;
    min-width:0!important;
  }

  .bulk-toolbar .bulk-select #selected-count{
    min-width:105px!important;
    white-space:nowrap!important;
  }

  .bulk-toolbar #bulk-email-btn{
    width:170px!important;
    min-width:170px!important;
    max-width:170px!important;
    justify-self:start!important;
  }

  .bulk-toolbar .bulk-create-actions{
    display:grid!important;
    grid-template-columns:180px minmax(220px,1fr) 165px 220px 150px!important;
    gap:10px!important;
    align-items:end!important;
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
  }

  .bulk-toolbar .bulk-create-actions > label{
    margin:0!important;
    min-width:0!important;
  }

  .bulk-toolbar .bulk-create-actions > label input{
    width:100%!important;
  }

  .bulk-toolbar #bulk-create-btn{
    width:165px!important;
    min-width:165px!important;
    max-width:165px!important;
    white-space:nowrap!important;
  }

  .bulk-toolbar .bulk-route-add{
    display:contents!important;
  }

  .bulk-toolbar .bulk-route-add select{
    width:220px!important;
    min-width:220px!important;
    max-width:220px!important;
    height:var(--ui-control-h)!important;
  }

  .bulk-toolbar .bulk-route-add .btn{
    width:150px!important;
    min-width:150px!important;
    max-width:150px!important;
    height:var(--ui-control-h)!important;
    white-space:nowrap!important;
  }

  /* Más margen interior a la derecha de las fichas/tarjetas del listado. */
  .client-card{
    padding-right:20px!important;
  }

  .client-card-link{
    padding-right:18px!important;
  }

  /* Mantener los badges (tamaño, VIP, Con ruta...) juntos en la misma línea visual. */
  .client-card .row-top{
    justify-content:flex-start!important;
    gap:8px!important;
    padding-right:4px!important;
  }

  .client-card .row-top .client-main{
    margin-right:auto!important;
    min-width:0!important;
  }

  .client-card .row-top > .badge{
    flex:0 0 auto!important;
    position:static!important;
  }

  /* RUTAS: solo aquí optimizamos el mapa ampliado con panel 1/3 + mapa 2/3. */
  body.map-workspace-full .route-editor-page{
    position:fixed!important;
    inset:0!important;
    z-index:5000!important;
    margin:0!important;
    padding:0!important;
    background:var(--surface,#fff)!important;
  }

  body.map-workspace-full #route-editor-form.map-workspace-card{
    position:fixed!important;
    inset:0!important;
    z-index:5001!important;
    display:grid!important;
    grid-template-columns:minmax(340px,33.333vw) minmax(0,1fr)!important;
    grid-template-rows:1fr!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    overflow:hidden!important;
  }

  body.map-workspace-full #route-editor-form .route-editor-toolbar{
    grid-column:1!important;
    grid-row:1!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    gap:12px!important;
    height:100vh!important;
    max-height:100vh!important;
    overflow:auto!important;
    box-sizing:border-box!important;
    padding:72px 18px 18px!important;
    margin:0!important;
    border:0!important;
    border-radius:0!important;
  }

  body.map-workspace-full #route-editor-form .route-editor-toolbar > label,
  body.map-workspace-full #route-editor-form .route-editor-toolbar > button,
  body.map-workspace-full #route-editor-form .route-editor-toolbar > .badge,
  body.map-workspace-full #route-editor-form .route-polygon-actions{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  body.map-workspace-full #route-editor-form .route-editor-toolbar input{
    width:100%!important;
  }

  body.map-workspace-full #route-editor-form .route-polygon-actions{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
  }

  body.map-workspace-full #route-editor-form .route-polygon-actions .btn{
    width:100%!important;
  }

  body.map-workspace-full #route-editor-form > #route-map{
    grid-column:2!important;
    grid-row:1!important;
    width:100%!important;
    height:100vh!important;
    min-height:100vh!important;
    margin:0!important;
    border-radius:0!important;
  }

  /* En modo ampliado el listado inferior no roba altura: queda disponible al salir. */
  body.map-workspace-full #route-editor-form .route-editor-selected{
    display:none!important;
  }

  /* Botón Salir de mapa ampliado siempre visible y fuera de los controles Leaflet. */
  body.map-workspace-full .route-editor-page > .page-head{
    display:block!important;
    position:fixed!important;
    top:14px!important;
    left:18px!important;
    width:auto!important;
    margin:0!important;
    padding:0!important;
    z-index:7200!important;
    background:transparent!important;
  }

  body.map-workspace-full .route-editor-page > .page-head > div:first-child{
    display:none!important;
  }

  body.map-workspace-full .route-editor-page .map-page-actions{
    display:flex!important;
    position:static!important;
    gap:8px!important;
  }

  body.map-workspace-full .route-editor-page .map-page-actions .map-workspace-toggle{
    display:inline-flex!important;
    min-width:205px!important;
    box-shadow:0 4px 18px rgba(0,0,0,.20)!important;
  }

  body.map-workspace-full .route-editor-page .map-page-actions > a{
    display:none!important;
  }
}


/* V31.8.5 - modo ampliado unificado en TODOS los mapas de escritorio */
@media(min-width:650px){

  /* ============================================================
     MAPA GENERAL DE CLIENTES
     Panel izquierdo: filtros + leyenda + selección + seleccionados
     ============================================================ */
  body.map-planning-mode{
    overflow:hidden!important;
  }

  body.map-planning-mode header,
  body.map-planning-mode nav,
  body.map-planning-mode footer,
  body.map-planning-mode .page-head{
    display:none!important;
  }

  body.map-planning-mode main{
    position:fixed!important;
    inset:0!important;
    z-index:5000!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:0!important;
    background:var(--surface,#fff)!important;
    display:grid!important;
    grid-template-columns:minmax(340px,33.333vw) minmax(0,1fr)!important;
    grid-template-rows:auto auto auto minmax(0,1fr)!important;
    overflow:hidden!important;
  }

  body.map-planning-mode .map-filter-form{
    grid-column:1!important;
    grid-row:1!important;
    margin:0!important;
    padding:68px 18px 14px!important;
    border:0!important;
    border-radius:0!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
  }

  body.map-planning-mode .map-filter-form > *{
    width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  body.map-planning-mode .map-health-legend{
    grid-column:1!important;
    grid-row:2!important;
    margin:0!important;
    padding:10px 18px!important;
    border-radius:0!important;
    border-width:1px 0!important;
    display:flex!important;
    flex-wrap:wrap!important;
    gap:6px 10px!important;
  }

  body.map-planning-mode .map-selection-toolbar{
    grid-column:1!important;
    grid-row:3!important;
    margin:0!important;
    padding:12px 18px!important;
    border:0!important;
    border-radius:0!important;
    display:flex!important;
    align-items:flex-start!important;
    justify-content:space-between!important;
    gap:12px!important;
  }

  body.map-planning-mode .map-selection-toolbar > div:first-child{
    min-width:0!important;
  }

  body.map-planning-mode .map-selection-actions{
    flex:0 0 auto!important;
    display:grid!important;
    gap:6px!important;
  }

  body.map-planning-mode #map-bulk-panel{
    grid-column:1!important;
    grid-row:4!important;
    align-self:stretch!important;
    margin:0!important;
    padding:14px 18px 18px!important;
    border:0!important;
    border-radius:0!important;
    border-top:1px solid var(--border,#d7dce3)!important;
    background:var(--surface,#fff)!important;
    overflow:auto!important;
    min-height:0!important;
    max-height:none!important;
    display:flex!important;
    flex-direction:column!important;
  }

  body.map-planning-mode #map-bulk-panel[hidden]{
    display:none!important;
  }

  body.map-planning-mode #map-bulk-panel > .section-head{
    flex:0 0 auto!important;
    margin-bottom:8px!important;
  }

  body.map-planning-mode #map-selected-list{
    flex:1 1 auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:auto!important;
    margin-bottom:12px!important;
  }

  body.map-planning-mode #map-bulk-form{
    flex:0 0 auto!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
  }

  body.map-planning-mode #map-bulk-form .grid-2{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:10px!important;
  }

  body.map-planning-mode #map-bulk-form > .btn{
    width:100%!important;
    max-width:none!important;
  }

  body.map-planning-mode #map{
    grid-column:2!important;
    grid-row:1 / -1!important;
    width:100%!important;
    height:100vh!important;
    min-height:100vh!important;
    margin:0!important;
    border-radius:0!important;
  }

  body.map-planning-mode .map-planning-toggle{
    position:fixed!important;
    top:14px!important;
    left:18px!important;
    right:auto!important;
    bottom:auto!important;
    z-index:7200!important;
    margin:0!important;
    display:block!important;
  }

  body.map-planning-mode .map-planning-toggle .btn{
    display:inline-flex!important;
    min-width:205px!important;
    box-shadow:0 4px 18px rgba(0,0,0,.20)!important;
  }


  /* ============================================================
     MAPA DE VISITAS
     Panel izquierdo: optimizador + orden actual + acciones
     ============================================================ */
  body.map-workspace-full{
    overflow:hidden!important;
  }

  body.map-workspace-full header,
  body.map-workspace-full nav,
  body.map-workspace-full footer{
    display:none!important;
  }

  body.map-workspace-full main{
    max-width:none!important;
    width:100%!important;
    margin:0!important;
    padding:0!important;
  }

  body.map-workspace-full .page-head{
    display:none!important;
  }

  body.map-workspace-full .map-workspace-card{
    position:fixed!important;
    inset:0!important;
    z-index:5000!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    background:var(--surface,#fff)!important;
    overflow:hidden!important;
  }

  /* Solo el mapa de visitas usa esta rejilla directa. */
  body.map-workspace-full .map-workspace-card:not(#route-editor-form){
    display:grid!important;
    grid-template-columns:minmax(340px,33.333vw) minmax(0,1fr)!important;
    grid-template-rows:minmax(0,1fr) auto auto!important;
  }

  body.map-workspace-full .map-workspace-card:not(#route-editor-form) .visit-route-optimizer{
    grid-column:1!important;
    grid-row:1!important;
    margin:0!important;
    padding:68px 18px 16px!important;
    border:0!important;
    border-radius:0!important;
    overflow:auto!important;
    min-height:0!important;
    box-sizing:border-box!important;
  }

  body.map-workspace-full .visit-route-origin{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
  }

  body.map-workspace-full .visit-route-origin .btn,
  body.map-workspace-full .visit-route-origin input{
    width:100%!important;
    box-sizing:border-box!important;
  }

  body.map-workspace-full .map-workspace-card:not(#route-editor-form) #orderInfo{
    display:block!important;
    grid-column:1!important;
    grid-row:2!important;
    margin:0!important;
    padding:12px 18px!important;
    border-top:1px solid var(--border,#d7dce3)!important;
    background:var(--surface,#fff)!important;
    max-height:120px!important;
    overflow:auto!important;
  }

  body.map-workspace-full .map-workspace-card:not(#route-editor-form) > .form-actions{
    display:grid!important;
    grid-column:1!important;
    grid-row:3!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    margin:0!important;
    padding:12px 18px 18px!important;
    border-top:1px solid var(--border,#d7dce3)!important;
    background:var(--surface,#fff)!important;
  }

  body.map-workspace-full .map-workspace-card:not(#route-editor-form) > .form-actions .btn{
    width:100%!important;
  }

  body.map-workspace-full .map-workspace-card:not(#route-editor-form) #map{
    grid-column:2!important;
    grid-row:1 / -1!important;
    width:100%!important;
    height:100vh!important;
    min-height:100vh!important;
    margin:0!important;
    border-radius:0!important;
  }


  /* ============================================================
     EDITOR DE RUTAS
     Panel izquierdo: controles + clientes seleccionados
     ============================================================ */
  body.map-workspace-full .route-editor-page{
    position:fixed!important;
    inset:0!important;
    z-index:5000!important;
    margin:0!important;
    padding:0!important;
    background:var(--surface,#fff)!important;
  }

  body.map-workspace-full #route-editor-form.map-workspace-card{
    position:fixed!important;
    inset:0!important;
    z-index:5001!important;
    display:grid!important;
    grid-template-columns:minmax(340px,33.333vw) minmax(0,1fr)!important;
    grid-template-rows:auto minmax(0,1fr)!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    overflow:hidden!important;
  }

  body.map-workspace-full #route-editor-form .route-editor-toolbar{
    grid-column:1!important;
    grid-row:1!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
    align-items:stretch!important;
    margin:0!important;
    padding:68px 18px 14px!important;
    border:0!important;
    border-radius:0!important;
    max-height:58vh!important;
    overflow:auto!important;
    box-sizing:border-box!important;
  }

  body.map-workspace-full #route-editor-form .route-editor-toolbar > *{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  body.map-workspace-full #route-editor-form .route-editor-toolbar input{
    width:100%!important;
  }

  body.map-workspace-full #route-editor-form .route-polygon-actions{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
  }

  body.map-workspace-full #route-editor-form .route-polygon-actions .btn{
    width:100%!important;
  }

  body.map-workspace-full #route-editor-form .route-editor-selected{
    display:block!important;
    grid-column:1!important;
    grid-row:2!important;
    margin:0!important;
    padding:12px 18px 18px!important;
    border:0!important;
    border-radius:0!important;
    border-top:1px solid var(--border,#d7dce3)!important;
    overflow:auto!important;
    min-height:0!important;
    background:var(--surface,#fff)!important;
  }

  body.map-workspace-full #route-editor-form #route-selected-list{
    max-height:none!important;
    overflow:visible!important;
  }

  body.map-workspace-full #route-editor-form > #route-map{
    grid-column:2!important;
    grid-row:1 / -1!important;
    width:100%!important;
    height:100vh!important;
    min-height:100vh!important;
    margin:0!important;
    border-radius:0!important;
  }


  /* ============================================================
     BOTÓN DE SALIDA COMÚN A VISITAS Y RUTAS
     ============================================================ */
  body.map-workspace-full .map-page-actions{
    display:flex!important;
    position:fixed!important;
    top:14px!important;
    left:18px!important;
    right:auto!important;
    bottom:auto!important;
    z-index:7300!important;
    gap:8px!important;
  }

  body.map-workspace-full .map-page-actions .map-workspace-toggle{
    display:inline-flex!important;
    min-width:205px!important;
    box-shadow:0 4px 18px rgba(0,0,0,.20)!important;
  }

  body.map-workspace-full .map-page-actions > a{
    display:none!important;
  }

  /* En Rutas su page-head debe seguir existiendo solo para alojar el botón salir. */
  body.map-workspace-full .route-editor-page > .page-head{
    display:block!important;
    position:static!important;
    margin:0!important;
    padding:0!important;
  }

  body.map-workspace-full .route-editor-page > .page-head > div:first-child{
    display:none!important;
  }
}


/* ===============================================================
   V31.8.6 - rediseño definitivo de acciones y mapas
   =============================================================== */

/* Descripción automática de rutas */
.route-description{
  margin:3px 0 6px;
  color:#334155;
  font-size:.88rem;
  font-weight:700;
}
.route-auto-description{
  border:1px solid #e2e8f0;
  background:#f8fafc;
  border-radius:10px;
  padding:9px 10px;
}
.route-auto-description span{
  display:block;
  color:#64748b;
  font-size:.72rem;
  font-weight:700;
  margin-bottom:3px;
}
.route-auto-description strong{
  display:block;
  font-size:.84rem;
  line-height:1.3;
}

/* Los cinco botones compactos caben en la ficha emergente. */
.map-popup-icon-row{
  grid-template-columns:repeat(5,34px)!important;
}
.map-nav-letter{
  font-weight:900!important;
  font-size:13px!important;
}

@media(min-width:650px){

  /* ---------------------------------------------------------------
     CLIENTES: barra de acciones estable, dividida por tareas.
     --------------------------------------------------------------- */
  .bulk-toolbar-redesign{
    display:grid!important;
    grid-template-columns:minmax(240px,.82fr) minmax(420px,1.55fr) minmax(260px,.95fr)!important;
    gap:12px!important;
    align-items:stretch!important;
    padding:12px!important;
  }
  .bulk-toolbar-redesign .bulk-action-group{
    min-width:0!important;
    margin:0!important;
    padding:12px!important;
    border:1px solid #e2e8f0!important;
    border-radius:12px!important;
    background:#f8fafc!important;
    display:flex!important;
    flex-direction:column!important;
    gap:9px!important;
  }
  .bulk-action-title{
    font-size:.76rem!important;
    text-transform:uppercase!important;
    letter-spacing:.04em!important;
    color:#64748b!important;
    font-weight:850!important;
  }
  .bulk-selection-summary{
    display:grid!important;
    grid-template-columns:1fr auto!important;
    align-items:center!important;
    gap:8px!important;
    min-height:44px!important;
  }
  .bulk-selection-summary .checkbox{
    margin:0!important;
    white-space:nowrap!important;
  }
  .bulk-selection-summary #selected-count{
    min-width:104px!important;
    text-align:right!important;
    white-space:nowrap!important;
    color:#475569!important;
  }
  .bulk-selection-group #bulk-email-btn{
    width:100%!important;
    max-width:none!important;
    margin-top:auto!important;
  }
  .bulk-visit-controls{
    display:grid!important;
    grid-template-columns:150px minmax(150px,1fr)!important;
    gap:8px!important;
    align-items:end!important;
  }
  .bulk-visit-controls > label{
    min-width:0!important;
    margin:0!important;
  }
  .bulk-visit-controls #bulk-create-btn{
    grid-column:1 / -1!important;
    width:100%!important;
    max-width:none!important;
  }
  .bulk-route-group .bulk-route-add{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    margin-top:auto!important;
  }
  .bulk-route-group .bulk-route-add select,
  .bulk-route-group .bulk-route-add .btn{
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
  }

  /* ---------------------------------------------------------------
     MAPAS ESCRITORIO: esta es la vista por defecto.
     Barra superior/navegación permanece visible.
     28% controles + 72% mapa aproximadamente.
     --------------------------------------------------------------- */
  .desktop-map-workspace,
  .visits-map-workspace,
  #route-editor-form.map-workspace-card{
    width:calc(100vw - 32px)!important;
    max-width:none!important;
    margin-left:50%!important;
    transform:translateX(-50%)!important;
    height:calc(100dvh - 190px)!important;
    min-height:560px!important;
  }

  /* Ya no hay modo "pantalla completa" en escritorio. */
  .map-planning-toggle,
  .map-workspace-toggle{
    display:none!important;
  }

  /* ---- Mapa Clientes ---- */
  .client-map-workspace{
    display:grid!important;
    grid-template-columns:minmax(330px,28vw) minmax(0,1fr)!important;
    overflow:hidden!important;
    border:1px solid #dfe4e9!important;
    border-radius:14px!important;
    background:#fff!important;
    box-shadow:0 1px 2px #00000008!important;
  }
  .client-map-sidebar{
    min-width:0!important;
    min-height:0!important;
    overflow:auto!important;
    padding:12px!important;
    border-right:1px solid #dfe4e9!important;
    background:#f8fafc!important;
    display:flex!important;
    flex-direction:column!important;
    gap:10px!important;
  }
  .client-map-sidebar > .card{
    margin:0!important;
    box-shadow:none!important;
    border-radius:11px!important;
  }
  .client-map-sidebar .map-filter-form{
    order:1!important;
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    padding:12px!important;
  }
  .client-map-sidebar .map-filter-form > input{
    grid-column:1 / -1!important;
  }
  .client-map-sidebar .map-filter-form > .btn{
    width:100%!important;
  }
  .client-map-sidebar .map-selection-toolbar{
    order:2!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    padding:12px!important;
  }
  .client-map-sidebar .map-selection-actions{
    display:grid!important;
    grid-template-columns:1fr!important;
    align-items:stretch!important;
    gap:7px!important;
  }
  .client-map-sidebar .map-selection-actions .btn{
    width:100%!important;
  }
  .client-map-sidebar .map-health-legend{
    order:3!important;
    padding:10px 12px!important;
    display:flex!important;
    flex-wrap:wrap!important;
    align-items:center!important;
    gap:6px 9px!important;
  }
  .client-map-sidebar .map-health-legend strong{
    width:100%!important;
  }
  .client-map-sidebar #map-bulk-panel{
    order:4!important;
    flex:1 1 auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:auto!important;
    padding:12px!important;
  }
  .client-map-sidebar #map-bulk-panel[hidden]{
    display:none!important;
  }
  .client-map-sidebar #map-selected-list{
    max-height:220px!important;
    overflow:auto!important;
  }
  .client-map-sidebar #map-bulk-form .grid-2{
    grid-template-columns:1fr!important;
    gap:8px!important;
  }
  .client-map-sidebar #map-bulk-form > .btn{
    width:100%!important;
  }
  .client-map-stage{
    min-width:0!important;
    min-height:0!important;
    height:100%!important;
  }
  .client-map-stage #map{
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
    margin:0!important;
    border:0!important;
    border-radius:0!important;
  }
  .client-map-stage > .empty{
    height:100%!important;
    margin:0!important;
    border:0!important;
    border-radius:0!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
  }

  /* ---- Mapa Visitas ---- */
  .visits-map-workspace,
  .map-workspace-card{
    position:static!important;
    inset:auto!important;
  }
  .visits-map-workspace{
    display:grid!important;
    grid-template-columns:minmax(330px,28vw) minmax(0,1fr)!important;
    grid-template-rows:minmax(0,1fr) auto auto!important;
    margin-bottom:14px!important;
    padding:0!important;
    overflow:hidden!important;
    border-radius:14px!important;
  }
  .visits-map-workspace .visit-route-optimizer{
    display:block!important;
    grid-column:1!important;
    grid-row:1!important;
    min-height:0!important;
    overflow:auto!important;
    margin:0!important;
    padding:14px!important;
    border:0!important;
    border-right:1px solid #dfe4e9!important;
    background:#f8fafc!important;
  }
  .visits-map-workspace .visit-route-origin{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
  }
  .visits-map-workspace .visit-route-origin > label{
    min-width:0!important;
  }
  .visits-map-workspace .visit-route-origin > .btn{
    width:100%!important;
  }
  .visits-map-workspace #routeOptimizationResult{
    max-height:280px!important;
    overflow:auto!important;
  }
  .visits-map-workspace #orderInfo{
    display:block!important;
    grid-column:1!important;
    grid-row:2!important;
    margin:0!important;
    padding:10px 14px!important;
    max-height:100px!important;
    overflow:auto!important;
    border-top:1px solid #dfe4e9!important;
    border-right:1px solid #dfe4e9!important;
    background:#fff!important;
  }
  .visits-map-workspace > .form-actions{
    display:grid!important;
    grid-column:1!important;
    grid-row:3!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    margin:0!important;
    padding:10px 14px 14px!important;
    border-top:1px solid #dfe4e9!important;
    border-right:1px solid #dfe4e9!important;
    background:#fff!important;
  }
  .visits-map-workspace > .form-actions .btn{
    width:100%!important;
  }
  .visits-map-workspace #map{
    grid-column:2!important;
    grid-row:1 / -1!important;
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
    margin:0!important;
    border:0!important;
    border-radius:0!important;
  }

  /* ---- Editor de Rutas ---- */
  .route-editor-page .page-head .map-page-actions{
    display:flex!important;
    position:static!important;
  }
  #route-editor-form.map-workspace-card{
    display:grid!important;
    grid-template-columns:minmax(330px,28vw) minmax(0,1fr)!important;
    grid-template-rows:auto minmax(0,1fr)!important;
    padding:0!important;
    margin-bottom:14px!important;
    overflow:hidden!important;
    border:1px solid #dfe4e9!important;
    border-radius:14px!important;
    background:#fff!important;
    box-shadow:0 1px 2px #00000008!important;
  }
  #route-editor-form .route-editor-toolbar{
    grid-column:1!important;
    grid-row:1!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:9px!important;
    align-items:stretch!important;
    min-width:0!important;
    max-height:58%!important;
    overflow:auto!important;
    margin:0!important;
    padding:14px!important;
    border:0!important;
    border-radius:0!important;
    border-right:1px solid #dfe4e9!important;
    background:#f8fafc!important;
  }
  #route-editor-form .route-editor-toolbar > *{
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    box-sizing:border-box!important;
  }
  #route-editor-form .route-polygon-actions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
  }
  #route-editor-form .route-polygon-actions .btn{
    width:100%!important;
  }
  #route-editor-form .route-polygon-actions .btn:last-child{
    grid-column:1 / -1!important;
  }
  #route-editor-form .route-editor-selected{
    display:block!important;
    grid-column:1!important;
    grid-row:2!important;
    min-height:0!important;
    overflow:auto!important;
    margin:0!important;
    padding:12px 14px!important;
    border:0!important;
    border-radius:0!important;
    border-top:1px solid #dfe4e9!important;
    border-right:1px solid #dfe4e9!important;
    background:#fff!important;
  }
  #route-editor-form #route-selected-list{
    max-height:none!important;
    overflow:visible!important;
  }
  #route-editor-form #route-map{
    grid-column:2!important;
    grid-row:1 / -1!important;
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
    margin:0!important;
    border:0!important;
    border-radius:0!important;
  }
}

/* ---------------------------------------------------------------
   MÓVIL: mantener vistas existentes, corregir overflow y popup.
   --------------------------------------------------------------- */
@media(max-width:649px){
  .bulk-toolbar-redesign{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    overflow:hidden!important;
    gap:10px!important;
  }
  .bulk-toolbar-redesign .bulk-action-group{
    min-width:0!important;
    max-width:100%!important;
    padding:10px!important;
    border:1px solid #e2e8f0!important;
    border-radius:10px!important;
    background:#f8fafc!important;
  }
  .bulk-action-title{
    color:#64748b!important;
    font-size:.76rem!important;
    font-weight:850!important;
    margin-bottom:8px!important;
  }
  .bulk-selection-summary{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:7px!important;
    margin-bottom:8px!important;
  }
  .bulk-selection-group #bulk-email-btn{
    width:100%!important;
  }
  .bulk-visit-controls{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:8px!important;
    width:100%!important;
    min-width:0!important;
  }
  .bulk-visit-controls > label,
  .bulk-visit-controls input,
  .bulk-visit-controls input[type="date"],
  .bulk-visit-controls .btn{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  .client-map-workspace{
    display:block!important;
    width:100%!important;
    height:auto!important;
  }
  .client-map-sidebar{
    display:flex!important;
    flex-direction:column!important;
    gap:10px!important;
  }
  .client-map-sidebar > .card{
    margin-bottom:0!important;
  }
  .client-map-sidebar .map-filter-form{
    order:1!important;
  }
  .client-map-sidebar .map-selection-toolbar{
    order:2!important;
  }
  .client-map-sidebar .map-health-legend{
    order:3!important;
  }
  .client-map-sidebar #map-bulk-panel{
    order:4!important;
  }
  .client-map-stage{
    margin-top:10px!important;
  }
  .client-map-stage #map{
    height:65vh!important;
    min-height:420px!important;
    margin-bottom:14px!important;
  }

  .map-popup-icon-row{
    grid-template-columns:repeat(5,34px)!important;
  }
}


/* V31.8.6 ajuste final: conservar en móvil el mapa antes del panel de seleccionados. */
@media(min-width:650px){
  .desktop-map-workspace,
  .visits-map-workspace,
  #route-editor-form.map-workspace-card{
    height:calc(100vh - 190px)!important;
    height:calc(100dvh - 190px)!important;
  }
}
@media(max-width:649px){
  .client-map-workspace{
    display:flex!important;
    flex-direction:column!important;
  }
  .client-map-sidebar{
    display:contents!important;
  }
  .client-map-sidebar .map-filter-form{order:1!important}
  .client-map-sidebar .map-selection-toolbar{order:2!important}
  .client-map-sidebar .map-health-legend{order:3!important}
  .client-map-stage{order:4!important}
  .client-map-sidebar #map-bulk-panel{order:5!important}
}

/* V40 desktop redesign */
@media(min-width:650px){
  .v40-panel-title{font-weight:850;text-transform:uppercase;letter-spacing:.04em;color:#64748b;font-size:.8rem}
  .v40-sidebar-form{display:flex!important;flex-direction:column!important;gap:9px!important}.v40-sidebar-form>*{width:100%!important;min-width:0!important;max-width:none!important}
  .v40-client-sidebar{float:left!important;width:min(340px,27vw)!important;position:sticky!important;top:76px!important;max-height:calc(100vh - 96px)!important;overflow:auto!important;margin-right:14px!important}
  .v40-client-sidebar + .mobile-filter-details{display:none!important}.v40-client-sidebar ~ #bulk-visits-form{margin-left:calc(min(340px,27vw) + 14px)!important}
  .v40-geo-filter{display:grid;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #e2e8f0}
  .bulk-selection-summary{grid-template-columns:1fr!important}.bulk-selection-summary #selected-count{text-align:left!important;display:block!important;margin-top:3px!important}
  .google-g-badge{background:#eef6ff!important;color:#1769aa!important;border:1px solid #b9dcff!important;font-weight:950!important}
  .route-editor-page>.page-head{margin-bottom:6px!important;min-height:42px!important}.route-editor-page>.page-head h1,.v40-compact-head h1{font-size:1.35rem!important;line-height:1.1!important;margin:0!important}.route-editor-page>.page-head p{font-size:.78rem!important;margin:2px 0 0!important}
  #route-editor-form.v40-route-editor{display:grid!important;grid-template-columns:minmax(330px,28vw) minmax(0,1fr)!important;grid-template-rows:1fr!important;height:calc(100vh - 162px)!important;min-height:560px!important;width:100%!important;transform:none!important;overflow:hidden!important;border:1px solid #dfe4e9!important;border-radius:14px!important}
  .v40-route-editor .route-editor-sidebar{height:100%!important;min-height:0!important;overflow-y:auto!important;padding:12px!important;box-sizing:border-box!important;border-right:1px solid #dfe4e9!important;background:#f8fafc!important}
  .v40-route-editor .route-editor-toolbar,.v40-route-editor .route-editor-selected{display:flex!important;flex-direction:column!important;gap:9px!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;max-height:none!important;overflow:visible!important}
  .v40-route-editor .route-editor-selected{margin-top:14px!important;padding-top:12px!important;border-top:1px solid #dfe4e9!important}.v40-route-editor .route-save-zone{position:sticky;bottom:-12px;margin:12px -12px -12px;padding:12px;background:#f8fafc;border-top:1px solid #dfe4e9}.v40-route-editor .route-save-zone .btn{width:100%!important}
  .v40-route-editor #route-map{grid-column:2!important;grid-row:1!important;width:100%!important;height:100%!important;min-height:100%!important;margin:0!important;border:0!important;border-radius:0!important}
  #route-selected-list{display:grid!important;grid-template-columns:1fr!important;gap:0!important;max-height:none!important;overflow:visible!important}
  .route-filter-block{display:flex;flex-direction:column;gap:7px;padding:10px;border:1px solid #e2e8f0;border-radius:10px;background:#fff}.route-polygon-actions{display:grid!important;grid-template-columns:1fr!important;gap:7px!important}.route-polygon-actions .btn{width:100%!important}.route-selection-summary{display:grid;grid-template-columns:1fr;gap:7px}
  .v40-map-workspace{display:grid;grid-template-columns:minmax(330px,28vw) minmax(0,1fr);height:calc(100vh - 162px);min-height:560px;overflow:hidden;border:1px solid #dfe4e9;border-radius:14px;background:#fff}.v40-map-sidebar{min-height:0;overflow-y:auto;padding:12px;background:#f8fafc;border-right:1px solid #dfe4e9;display:flex;flex-direction:column;gap:10px}.v40-map-fixed{height:100%!important;min-height:100%!important;width:100%!important}
  .route-map-legend-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:10px;border:1px solid #e2e8f0;border-radius:10px;background:#fff}.route-map-legend-row label{display:grid;grid-template-columns:auto 14px minmax(0,1fr);gap:8px;align-items:start}.route-map-legend-row i{width:12px;height:12px;border-radius:50%;margin-top:3px}.route-map-legend-row span>*{display:block}.route-map-legend-row small,.route-map-legend-row em{color:#64748b;font-size:.76rem;font-style:normal}
  .google-batch-candidates{display:grid;gap:9px}.google-batch-candidate{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:10px;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer}.google-batch-candidate span>*{display:block}.google-batch-candidate small{color:#64748b}.google-batch-candidate em{font-size:.76rem;font-style:normal;color:#475569}
  .v40-list-sidebar-wrap,.v40-stock-sidebar-wrap{float:left;width:min(340px,27vw);margin-right:14px;position:sticky;top:76px;max-height:calc(100vh - 96px);overflow:auto}.v40-list-sidebar-wrap + .mobile-filter-details{display:none!important}
  .v40-list-sidebar-wrap ~ .visit-export-card,.v40-list-sidebar-wrap ~ .route-mail-card,.v40-list-sidebar-wrap ~ .result-count,.v40-list-sidebar-wrap ~ .visit-days,.v40-list-sidebar-wrap ~ .task-list,.v40-list-sidebar-wrap ~ .app-pagination{margin-left:calc(min(340px,27vw) + 14px)!important}
  .v40-stock-sidebar-wrap + .stock-search{display:none!important}.v40-stock-sidebar-wrap ~ .stock-meta,.v40-stock-sidebar-wrap ~ .stock-table-wrap,.v40-stock-sidebar-wrap ~ .pagination{margin-left:calc(min(340px,27vw) + 14px)!important}
}


/* ================================================================
   V40.1 — corrección estructural del shell de escritorio
   Elimina floats/márgenes heredados y establece un grid real.
   ================================================================ */
@media(min-width:650px){

  /* Títulos compactos: dejan altura útil al contenido. */
  .v401-compact-head,
  .v401-map-head{
    min-height:42px!important;
    margin:0 0 8px!important;
    padding:0!important;
    align-items:center!important;
  }
  .v401-compact-head h1,
  .v401-map-head h1{
    font-size:1.3rem!important;
    line-height:1.1!important;
    margin:0!important;
  }
  .v401-compact-head p,
  .v401-map-head p{
    font-size:.78rem!important;
    line-height:1.25!important;
    margin:2px 0 0!important;
  }

  /* -------- Clientes: TODO control a la izquierda -------- */
  .v40-client-sidebar{display:none!important}

  .v401-clients-shell{
    display:grid!important;
    grid-template-columns:minmax(300px,25vw) minmax(0,1fr)!important;
    gap:14px!important;
    width:100%!important;
    align-items:start!important;
  }
  .v401-sidebar{
    grid-column:1!important;
    min-width:0!important;
  }
  .v401-sidebar-scroll{
    position:sticky!important;
    top:72px!important;
    height:calc(100vh - 86px)!important;
    overflow-y:auto!important;
    overflow-x:visible!important;
    padding:0 4px 14px 0!important;
    box-sizing:border-box!important;
  }
  .v401-sidebar-section{
    border:1px solid #dfe4e9!important;
    border-radius:12px!important;
    background:#fff!important;
    margin:0 0 10px!important;
    overflow:visible!important;
  }
  .v401-sidebar-section>summary{
    cursor:pointer!important;
    list-style:none!important;
    padding:11px 12px!important;
    font-weight:850!important;
    font-size:.82rem!important;
    color:#334155!important;
    border-radius:12px!important;
  }
  .v401-sidebar-section>summary::-webkit-details-marker{display:none!important}
  .v401-sidebar-section>summary::after{content:"▾";float:right;color:#64748b}
  .v401-sidebar-section:not([open])>summary::after{content:"▸"}
  .v401-sidebar-section-body{
    padding:0 12px 12px!important;
  }
  .v401-sidebar-section-body>.v40-panel-title{display:none!important}

  .v401-client-actions .bulk-toolbar-redesign{
    display:flex!important;
    flex-direction:column!important;
    gap:10px!important;
    width:100%!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    box-shadow:none!important;
    background:transparent!important;
  }
  .v401-client-actions .bulk-action-group{
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    margin:0!important;
    padding:10px!important;
    border:1px solid #e2e8f0!important;
    border-radius:10px!important;
    box-sizing:border-box!important;
  }
  .v401-client-actions .bulk-selection-summary,
  .v401-client-actions .bulk-visit-controls,
  .v401-client-actions .bulk-route-add{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:7px!important;
    width:100%!important;
  }
  .v401-client-actions input,
  .v401-client-actions select,
  .v401-client-actions .btn{
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    box-sizing:border-box!important;
  }
  .v401-client-actions #selected-count{
    display:block!important;
    text-align:left!important;
    margin:0 0 2px!important;
  }
  .v401-main-list{
    grid-column:2!important;
    min-width:0!important;
    width:100%!important;
  }
  .v401-main-list #bulk-visits-form{
    width:100%!important;
    margin:0!important;
  }
  .v401-main-list .client-list{
    width:100%!important;
    margin:0!important;
  }
  /* anula el desplazamiento lateral heredado de V40 */
  .v401-clients-shell #bulk-visits-form,
  .v401-clients-shell .client-list{
    margin-left:0!important;
  }
  /* paginación de Clientes alinea con el listado */
  .v401-clients-shell + .app-pagination{
    margin-left:calc(25vw + 14px)!important;
  }

  /* -------- MAPAS: ancho real, sin desplazamiento fantasma -------- */
  .desktop-map-workspace,
  .map-workspace-card,
  #route-editor-form.map-workspace-card,
  #route-editor-form.v40-route-editor,
  .client-map-workspace{
    margin-left:0!important;
    margin-right:0!important;
    transform:none!important;
    width:100%!important;
    max-width:none!important;
    box-sizing:border-box!important;
  }

  /* Clientes mapa: lateral único 25%, mapa 75%. */
  .client-map-workspace{
    display:grid!important;
    grid-template-columns:minmax(300px,25vw) minmax(0,1fr)!important;
    height:calc(100vh - 154px)!important;
    min-height:560px!important;
    overflow:hidden!important;
  }
  .client-map-sidebar{
    grid-column:1!important;
    height:100%!important;
    min-height:0!important;
    overflow-y:auto!important;
    overflow-x:visible!important;
    padding:10px!important;
    box-sizing:border-box!important;
  }
  .client-map-stage{
    grid-column:2!important;
    height:100%!important;
    min-width:0!important;
    min-height:0!important;
  }
  .client-map-stage #map{
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
  }

  /* Visitas mapa: optimizador, orden y acciones en el lateral. */
  .map-workspace-card:has(.visit-route-optimizer){
    display:grid!important;
    grid-template-columns:minmax(300px,25vw) minmax(0,1fr)!important;
    grid-template-rows:minmax(0,1fr) auto auto!important;
    height:calc(100vh - 154px)!important;
    min-height:560px!important;
    overflow:hidden!important;
    padding:0!important;
  }
  .map-workspace-card:has(.visit-route-optimizer) .visit-route-optimizer{
    display:block!important;
    grid-column:1!important;
    grid-row:1!important;
    min-height:0!important;
    overflow-y:auto!important;
    padding:12px!important;
    margin:0!important;
    border:0!important;
    border-right:1px solid #dfe4e9!important;
    background:#f8fafc!important;
  }
  .map-workspace-card:has(.visit-route-optimizer) #orderInfo{
    display:block!important;
    grid-column:1!important;
    grid-row:2!important;
    margin:0!important;
    padding:10px 12px!important;
    max-height:100px!important;
    overflow:auto!important;
    border-top:1px solid #dfe4e9!important;
    border-right:1px solid #dfe4e9!important;
  }
  .map-workspace-card:has(.visit-route-optimizer)>.form-actions{
    display:grid!important;
    grid-column:1!important;
    grid-row:3!important;
    grid-template-columns:1fr!important;
    gap:7px!important;
    margin:0!important;
    padding:10px 12px 12px!important;
    border-top:1px solid #dfe4e9!important;
    border-right:1px solid #dfe4e9!important;
  }
  .map-workspace-card:has(.visit-route-optimizer)>.form-actions .btn{
    width:100%!important;
  }
  .map-workspace-card:has(.visit-route-optimizer)>#map{
    grid-column:2!important;
    grid-row:1 / -1!important;
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
    margin:0!important;
    border-radius:0!important;
  }

  /* Nueva/Editar Ruta: corrige el 50% heredado y ocupa toda la pantalla útil. */
  .route-editor-page{
    display:block!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:0!important;
  }
  #route-editor-form.v40-route-editor{
    display:grid!important;
    grid-template-columns:minmax(310px,26vw) minmax(0,1fr)!important;
    grid-template-rows:1fr!important;
    height:calc(100vh - 154px)!important;
    min-height:560px!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
    border:1px solid #dfe4e9!important;
    border-radius:12px!important;
  }
  #route-editor-form.v40-route-editor>.route-editor-sidebar{
    grid-column:1!important;
    grid-row:1!important;
    width:100%!important;
    height:100%!important;
    min-width:0!important;
    min-height:0!important;
    overflow-y:auto!important;
    overflow-x:visible!important;
    padding:10px!important;
    margin:0!important;
    box-sizing:border-box!important;
    border-right:1px solid #dfe4e9!important;
    background:#f8fafc!important;
  }
  #route-editor-form.v40-route-editor>#route-map{
    grid-column:2!important;
    grid-row:1!important;
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
  }
  #route-editor-form.v40-route-editor .route-editor-toolbar,
  #route-editor-form.v40-route-editor .route-editor-selected{
    width:100%!important;
    max-width:none!important;
    max-height:none!important;
    margin:0!important;
    overflow:visible!important;
  }
  #route-editor-form.v40-route-editor .route-editor-selected{
    margin-top:12px!important;
  }
  #route-editor-form.v40-route-editor #route-selected-list{
    display:flex!important;
    flex-direction:column!important;
    gap:0!important;
    width:100%!important;
  }

  /* Mapa de rutas y restricción geográfica: mismo patrón. */
  .v40-map-workspace{
    display:grid!important;
    grid-template-columns:minmax(300px,25vw) minmax(0,1fr)!important;
    height:calc(100vh - 154px)!important;
    min-height:560px!important;
    width:100%!important;
    margin:0!important;
    overflow:hidden!important;
  }
  .v40-map-sidebar{
    grid-column:1!important;
    height:100%!important;
    min-height:0!important;
    overflow-y:auto!important;
  }
  .v40-map-fixed{
    grid-column:2!important;
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
  }

  /* -------- Listados generales V40: eliminar floats problemáticos -------- */
  .v40-list-sidebar-wrap,
  .v40-stock-sidebar-wrap{
    float:none!important;
    position:sticky!important;
    top:72px!important;
    width:min(330px,25vw)!important;
    max-height:calc(100vh - 86px)!important;
    overflow-y:auto!important;
    margin:0!important;
  }
  /* Visitas/Tareas: sidebar real + contenido desplazado solo una vez. */
  .v40-list-sidebar-wrap{
    float:left!important;
    margin-right:14px!important;
  }
  .v40-list-sidebar-wrap ~ .visit-export-card,
  .v40-list-sidebar-wrap ~ .route-mail-card,
  .v40-list-sidebar-wrap ~ .result-count,
  .v40-list-sidebar-wrap ~ .visit-days,
  .v40-list-sidebar-wrap ~ .task-list,
  .v40-list-sidebar-wrap ~ .app-pagination{
    margin-left:calc(min(330px,25vw) + 14px)!important;
  }
  .v40-stock-sidebar-wrap{
    float:left!important;
    margin-right:14px!important;
  }
  .v40-stock-sidebar-wrap ~ .stock-meta,
  .v40-stock-sidebar-wrap ~ .stock-table-wrap,
  .v40-stock-sidebar-wrap ~ .pagination{
    margin-left:calc(min(330px,25vw) + 14px)!important;
  }
}

/* Móvil: se conserva el comportamiento anterior. */
@media(max-width:649px){
  .v401-clients-shell{display:block!important}
  .v401-sidebar{display:contents!important}
  .v401-sidebar-scroll{display:none!important}
  .v401-main-list{display:block!important;width:100%!important}
}


/* ================================================================
   V40.2 — uso máximo de pantalla + sidebar real
   ================================================================ */
@media(min-width:650px){

  /* La app deja de quedar centrada dentro de 1180px.
     Conservamos solo un margen cómodo alrededor. */
  .container{
    width:calc(100% - 32px)!important;
    max-width:none!important;
    margin:0 auto!important;
    padding:14px 0 34px!important;
  }
  .topbar{
    padding-left:16px!important;
    padding-right:16px!important;
  }

  /* Títulos mínimos: navegación arriba, contenido inmediatamente debajo. */
  .v402-page-head,
  .v402-map-head{
    min-height:34px!important;
    height:auto!important;
    margin:0 0 6px!important;
    padding:0 2px!important;
  }
  .v402-page-head h1,
  .v402-map-head h1{
    font-size:1.18rem!important;
    line-height:1.05!important;
    margin:0!important;
  }
  .v402-page-head p,
  .v402-map-head p{
    font-size:.72rem!important;
    margin:1px 0 0!important;
    line-height:1.15!important;
  }

  /* -------- CLIENTES -------- */
  .v402-mobile-client-filters{display:none!important}

  .v401-clients-shell{
    grid-template-columns:26% minmax(0,74%)!important;
    gap:12px!important;
    width:100%!important;
  }
  .v401-sidebar-scroll{
    top:62px!important;
    height:calc(100vh - 72px)!important;
  }
  .v401-main-list{
    min-width:0!important;
    width:100%!important;
  }
  .v401-main-list .client-list{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
  }
  .v401-main-list .client-card{
    width:100%!important;
    max-width:none!important;
    box-sizing:border-box!important;
  }
  .v401-clients-shell + .app-pagination{
    margin-left:calc(26% + 12px)!important;
  }

  /* -------- VISITAS -------- */
  .v402-mobile-visits-filters{display:none!important}
  .v402-visits-sidebar{
    float:left!important;
    width:26%!important;
    margin:0 12px 0 0!important;
    box-sizing:border-box!important;
  }
  .v402-visits-sidebar .v402-sidebar-scroll{
    position:sticky!important;
    top:62px!important;
    height:calc(100vh - 72px)!important;
    overflow-y:auto!important;
    padding-right:4px!important;
  }
  .v402-side-section{
    border:1px solid #dfe4e9!important;
    border-radius:12px!important;
    background:#fff!important;
    margin:0 0 10px!important;
    overflow:visible!important;
  }
  .v402-side-section>summary{
    cursor:pointer!important;
    list-style:none!important;
    padding:10px 11px!important;
    font-size:.81rem!important;
    font-weight:850!important;
  }
  .v402-side-section>summary::-webkit-details-marker{display:none!important}
  .v402-side-section>summary::after{content:"▾";float:right;color:#64748b}
  .v402-side-section:not([open])>summary::after{content:"▸"}
  .v402-side-body{padding:0 10px 10px!important}
  .v402-side-body>.v40-list-sidebar-wrap{
    float:none!important;
    position:static!important;
    width:100%!important;
    max-height:none!important;
    margin:0!important;
    overflow:visible!important;
  }
  .v402-side-body .visit-export-card,
  .v402-side-body .route-mail-card{
    display:block!important;
    width:100%!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    box-shadow:none!important;
    background:transparent!important;
  }
  .v402-side-body .visit-export-form{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:7px!important;
  }
  .v402-side-body .visit-export-form>*,
  .v402-side-body .route-mail-card .btn{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
  }
  .v402-side-body .route-mail-card .section-head{
    display:block!important;
  }
  .v402-side-body .route-mail-card .section-head .btn{
    margin-top:8px!important;
  }
  .v402-visits-main{
    margin-left:calc(26% + 12px)!important;
    min-width:0!important;
    width:auto!important;
  }
  /* anula márgenes heredados de V40/V40.1 */
  .v402-visits-main .result-count,
  .v402-visits-main .visit-days,
  .v402-visits-main .app-pagination,
  .v402-visits-main>p{
    margin-left:0!important;
  }

  /* -------- TODOS LOS MAPAS --------
     26% controles / 74% mapa, siempre sobre TODO el ancho disponible. */
  .client-map-workspace,
  #route-editor-form.v40-route-editor,
  .v40-map-workspace,
  .map-workspace-card:has(.visit-route-optimizer){
    width:100%!important;
    max-width:none!important;
    margin-left:0!important;
    margin-right:0!important;
    transform:none!important;
    grid-template-columns:26% minmax(0,74%)!important;
    box-sizing:border-box!important;
  }

  .client-map-workspace,
  #route-editor-form.v40-route-editor,
  .v40-map-workspace,
  .map-workspace-card:has(.visit-route-optimizer){
    height:calc(100vh - 128px)!important;
    min-height:600px!important;
  }

  .client-map-sidebar,
  #route-editor-form.v40-route-editor>.route-editor-sidebar,
  .v40-map-sidebar,
  .map-workspace-card:has(.visit-route-optimizer) .visit-route-optimizer{
    min-width:0!important;
    width:100%!important;
    max-width:none!important;
    height:100%!important;
    overflow-y:auto!important;
    overflow-x:visible!important;
    box-sizing:border-box!important;
  }

  .client-map-stage,
  #route-editor-form.v40-route-editor>#route-map,
  .v40-map-fixed,
  .map-workspace-card:has(.visit-route-optimizer)>#map{
    min-width:0!important;
    width:100%!important;
    max-width:none!important;
    height:100%!important;
    min-height:100%!important;
  }

  /* Editor de ruta: ningún contenedor intermedio limita el ancho. */
  .route-editor-page{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }
  #route-editor-form.v40-route-editor{
    display:grid!important;
    grid-template-rows:1fr!important;
    padding:0!important;
  }
  #route-editor-form.v40-route-editor>.route-editor-sidebar{
    grid-column:1!important;
    grid-row:1!important;
    padding:10px!important;
  }
  #route-editor-form.v40-route-editor>#route-map{
    grid-column:2!important;
    grid-row:1!important;
  }

  /* Mapa Clientes y mapa de rutas: mapa domina visualmente. */
  .client-map-stage #map,
  #routes-map,
  #geo-map{
    height:100%!important;
    min-height:100%!important;
  }

  /* Evita que cualquier max-width antiguo vuelva a centrar vistas V40. */
  .route-editor-page,
  .client-map-workspace,
  .v40-map-workspace,
  .v401-clients-shell,
  .v402-visits-main{
    max-width:none!important;
  }
}

@media(min-width:650px) and (max-width:1050px){
  .v401-clients-shell,
  .client-map-workspace,
  #route-editor-form.v40-route-editor,
  .v40-map-workspace,
  .map-workspace-card:has(.visit-route-optimizer){
    grid-template-columns:32% minmax(0,68%)!important;
  }
  .v402-visits-sidebar{width:32%!important}
  .v402-visits-main{margin-left:calc(32% + 12px)!important}
}


/* ===========================================================
   V40.3 - densidad de información + scroll independiente
   =========================================================== */
@media(min-width:650px){

  /* La vista completa queda limitada al viewport: sidebar y resultados
     tienen scroll independiente. */
  .v401-clients-shell{
    height:calc(100vh - 116px)!important;
    min-height:560px!important;
    overflow:hidden!important;
    align-items:stretch!important;
  }
  .v401-sidebar{
    height:100%!important;
    min-height:0!important;
    overflow:hidden!important;
  }
  .v401-sidebar-scroll{
    position:static!important;
    top:auto!important;
    height:100%!important;
    max-height:none!important;
    overflow-y:auto!important;
    overscroll-behavior:contain!important;
  }
  .v401-main-list{
    height:100%!important;
    min-height:0!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    overscroll-behavior:contain!important;
    padding-right:4px!important;
  }
  .v401-clients-shell + .app-pagination{
    margin-left:26%!important;
  }

  /* Tarjetas de clientes más densas y métricas en columnas. */
  .v401-main-list .client-list{gap:7px!important}
  .v401-main-list .client-card{
    padding-top:8px!important;
    padding-bottom:8px!important;
    min-height:0!important;
  }
  .v401-main-list .client-card-link{padding-top:0!important;padding-bottom:0!important}
  .v401-main-list .row-top{min-height:22px!important}
  .v401-main-list .client-main strong{font-size:.94rem!important}
  .v401-main-list .client-main span,
  .v401-main-list .client-meta{font-size:.76rem!important}
  .client-sales-metrics{
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:5px!important;
    margin:6px 0!important;
  }
  .client-sales-metrics>span{
    display:flex!important;
    align-items:baseline!important;
    justify-content:space-between!important;
    gap:5px!important;
    padding:5px 7px!important;
    border-radius:7px!important;
    background:#f7f9fb!important;
    min-width:0!important;
  }
  .client-sales-metrics small{font-size:.68rem!important;color:#64748b!important;white-space:nowrap!important}
  .client-sales-metrics strong{font-size:.76rem!important;white-space:nowrap!important}
  .v401-main-list .last-visit{padding:5px 8px!important;margin:4px 0!important;font-size:.74rem!important}
  .v401-main-list .purchase-cycle{padding:5px 8px!important;font-size:.72rem!important;gap:9px!important}

  /* Vista detalle cliente: 2 columnas reales en escritorio. */
  .client-detail-grid{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:10px!important;
    align-items:start!important;
  }
  .client-detail-grid>.client-detail-section{
    margin:0!important;
    min-width:0!important;
    height:auto!important;
  }
  .client-detail-grid .section-head{margin-bottom:7px!important}
  .client-detail-grid h2{font-size:1rem!important;margin:0!important}
  .client-detail-grid .contact-card,
  .client-detail-grid .note-card,
  .client-detail-grid .task-card,
  .client-detail-grid .list-row{padding:8px!important}
  .client-detail-grid .billing{grid-template-columns:repeat(3,minmax(0,1fr))!important}

  /* Pegado de coordenadas */
  .paste-coordinates-box{
    margin-bottom:10px!important;
    padding:10px!important;
    border:1px solid #dfe4e9!important;
    border-radius:10px!important;
    background:#f8fafc!important;
  }
  .paste-coordinate-row{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    gap:8px!important;
    margin-top:5px!important;
  }

  /* Filtros mapa clientes */
  .map-advanced-filters{
    display:flex!important;
    flex-direction:column!important;
    gap:7px!important;
    width:100%!important;
  }
  .map-advanced-filters .multi-select{width:100%!important}

  /* Vistas de mapa: lateral y mapa jamás se desplazan juntos. */
  .client-map-workspace,
  #route-editor-form.v40-route-editor,
  .v40-map-workspace,
  .map-workspace-card:has(.visit-route-optimizer){
    overflow:hidden!important;
  }
  .client-map-sidebar,
  #route-editor-form.v40-route-editor>.route-editor-sidebar,
  .v40-map-sidebar,
  .map-workspace-card:has(.visit-route-optimizer) .visit-route-optimizer{
    overflow-y:auto!important;
    overscroll-behavior:contain!important;
  }
  .client-map-stage,
  #route-editor-form.v40-route-editor>#route-map,
  .v40-map-fixed,
  .map-workspace-card:has(.visit-route-optimizer)>#map{
    position:relative!important;
    overflow:hidden!important;
  }

  /* Visitas: sidebar y resultados independientes. */
  .v402-visits-sidebar{
    float:none!important;
    position:absolute!important;
    left:16px!important;
    width:calc(26% - 4px)!important;
    height:calc(100vh - 116px)!important;
    overflow:hidden!important;
  }
  .v402-visits-sidebar .v402-sidebar-scroll{
    position:static!important;
    height:100%!important;
    max-height:none!important;
    overflow-y:auto!important;
    overscroll-behavior:contain!important;
  }
  .v402-visits-main{
    margin-left:26%!important;
    padding-left:12px!important;
    height:calc(100vh - 116px)!important;
    overflow-y:auto!important;
    overscroll-behavior:contain!important;
    box-sizing:border-box!important;
  }

  /* Tareas/Stock: mantener lateral visible al navegar por resultados. */
  .v40-list-sidebar-wrap,
  .v40-stock-sidebar-wrap{
    position:sticky!important;
    top:62px!important;
    max-height:calc(100vh - 72px)!important;
    overflow-y:auto!important;
    overscroll-behavior:contain!important;
  }
}

@media(min-width:1200px){
  .client-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* Solo la nueva acción de GPS es específica de móvil; no rediseña la ficha. */
@media(max-width:649px){
  .current-location-btn{width:100%!important;margin-top:6px!important}
}


/* V40.3 final: sidebars de listados permanecen independientes del resultado. */
@media(min-width:650px){
  /* Tareas: lateral fijo dentro del viewport; lista con desplazamiento propio. */
  .v40-list-sidebar-wrap:has(form[action*="tareas"]),
  .v40-list-sidebar-wrap:has(input[name="task_type_multi"]){
    position:sticky!important;
    top:62px!important;
    height:calc(100vh - 72px)!important;
    max-height:none!important;
    overflow-y:auto!important;
  }
  /* Stock: filtros visibles mientras se recorre la tabla. */
  .v40-stock-sidebar-wrap{
    top:62px!important;
    height:calc(100vh - 72px)!important;
    max-height:none!important;
    overflow-y:auto!important;
  }
}


/* ===========================================================
   V40.4 - Optimizar recorrido: layout compacto y sin desbordes
   =========================================================== */
@media(min-width:650px){

  /* Contenedor del optimizador siempre respeta el ancho real del lateral. */
  .visit-route-optimizer{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
    overflow-x:hidden!important;
  }

  .visit-route-optimizer *{
    box-sizing:border-box!important;
    min-width:0!important;
  }

  .visit-route-optimizer h2,
  .visit-route-optimizer h3{
    margin:0 0 8px!important;
    font-size:1rem!important;
    line-height:1.15!important;
  }

  .visit-route-optimizer p{
    margin:4px 0 9px!important;
    font-size:.78rem!important;
    line-height:1.3!important;
  }

  /* Origen: una sola columna, cada control ocupa el ancho útil. */
  .visit-route-origin{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:8px!important;
    width:100%!important;
    margin:0!important;
  }

  .visit-route-origin>label,
  .visit-route-origin>div,
  .visit-route-origin>button,
  .visit-route-origin>.btn{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
  }

  .visit-route-origin label{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:4px!important;
    font-size:.75rem!important;
  }

  .visit-route-origin input{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    height:40px!important;
    padding:8px 10px!important;
    font-size:.84rem!important;
  }

  /* Todos los botones del bloque se ajustan al lateral. */
  .visit-route-optimizer .btn,
  .visit-route-optimizer button{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
    line-height:1.15!important;
    min-height:40px!important;
    padding:8px 10px!important;
    justify-content:center!important;
    text-align:center!important;
  }

  /* Si existen grupos de botones heredados, se convierten en una sola columna. */
  .visit-route-optimizer .form-actions,
  .visit-route-optimizer .actions,
  .visit-route-optimizer .button-row,
  .visit-route-optimizer .toolbar,
  .visit-route-optimizer .route-actions{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:7px!important;
    width:100%!important;
  }

  /* Resultado de optimización: nunca ensancha el panel. */
  #routeOptimizationResult{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    margin-top:10px!important;
  }

  #routeOptimizationResult table{
    width:100%!important;
    max-width:100%!important;
    table-layout:fixed!important;
    font-size:.74rem!important;
  }

  #routeOptimizationResult th,
  #routeOptimizationResult td{
    padding:5px 6px!important;
    overflow-wrap:anywhere!important;
    word-break:break-word!important;
  }

  #routeOptimizationResult .btn,
  #routeOptimizationResult button{
    width:100%!important;
    max-width:100%!important;
  }

  /* Información de orden y acciones debajo del optimizador: compactas. */
  .map-workspace-card:has(.visit-route-optimizer) #orderInfo{
    font-size:.76rem!important;
    line-height:1.3!important;
    max-width:100%!important;
    overflow-x:hidden!important;
  }

  .map-workspace-card:has(.visit-route-optimizer)>.form-actions{
    grid-template-columns:minmax(0,1fr)!important;
    gap:7px!important;
  }

  .map-workspace-card:has(.visit-route-optimizer)>.form-actions .btn,
  .map-workspace-card:has(.visit-route-optimizer)>.form-actions button{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    white-space:normal!important;
  }
}


/* ===========================================================
   V40.5 - ficha cliente fluida + filtros sidebar ancho completo
   =========================================================== */
@media(min-width:650px){

  /* Ficha: las secciones fluyen de forma independiente.
     Ya no existe una fila rígida cuya altura deje huecos en la otra columna. */
  .client-detail-grid{
    display:block!important;
    column-count:2!important;
    column-gap:12px!important;
    width:100%!important;
  }
  .client-detail-grid>section{
    display:inline-block!important;
    width:100%!important;
    max-width:100%!important;
    margin:0 0 12px!important;
    vertical-align:top!important;
    break-inside:avoid!important;
    page-break-inside:avoid!important;
    box-sizing:border-box!important;
  }
  .client-detail-grid>.admin-client-card,
  .client-detail-grid>.google-address-section,
  .client-detail-grid>.client-detail-section{
    width:100%!important;
  }

  /* Clientes: cada filtro utiliza todo el ancho útil de la columna izquierda. */
  .v401-sidebar .v40-sidebar-form{
    display:flex!important;
    flex-direction:column!important;
    grid-template-columns:none!important;
    gap:8px!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
  }
  .v401-sidebar .v40-sidebar-form>*,
  .v401-sidebar .v40-sidebar-form>label,
  .v401-sidebar .v40-sidebar-form input,
  .v401-sidebar .v40-sidebar-form select,
  .v401-sidebar .v40-sidebar-form button,
  .v401-sidebar .v40-sidebar-form .btn,
  .v401-sidebar .v40-sidebar-form .multi-select,
  .v401-sidebar .v40-sidebar-form .searchable-multiselect{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }
  .v401-sidebar .v40-sidebar-form .grid-2{
    grid-template-columns:1fr!important;
  }
  .v401-sidebar .multi-select-panel,
  .v401-sidebar .multi-select-dropdown{
    width:100%!important;
    min-width:100%!important;
    max-width:100%!important;
  }

  /* Google: señales legibles sin ensanchar tarjetas. */
  .google-candidate-signals{
    display:flex!important;
    flex-wrap:wrap!important;
    gap:6px!important;
  }
  .google-name-only-form{margin-top:8px!important}
}

@media(min-width:650px) and (max-width:900px){
  .client-detail-grid{column-count:1!important}
}


/* ===========================================================
   V40.6 - Mapa clientes: filtros 100% ancho real del sidebar
   =========================================================== */
@media(min-width:650px){

  .v406-map-filter-form{
    display:flex!important;
    flex-direction:column!important;
    grid-template-columns:none!important;
    align-items:stretch!important;
    gap:9px!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  .v406-map-filter-form>.v406-map-search{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  .v406-map-filters-desktop{
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    gap:8px!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  /* El macro multiselect tiene varios wrappers según versión.
     Todos deben ocupar el ancho completo del lateral. */
  .v406-map-filters-desktop>*,
  .v406-map-filters-desktop .multi-select,
  .v406-map-filters-desktop .multiselect,
  .v406-map-filters-desktop .searchable-multiselect,
  .v406-map-filters-desktop .multi-select-wrap,
  .v406-map-filters-desktop .multi-select-control,
  .v406-map-filters-desktop details,
  .v406-map-filters-desktop summary,
  .v406-map-filters-desktop button,
  .v406-map-filters-desktop select{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
    flex:0 0 auto!important;
  }

  .v406-map-filters-desktop .multi-select-panel,
  .v406-map-filters-desktop .multi-select-dropdown,
  .v406-map-filters-desktop [class*="multi"][class*="panel"],
  .v406-map-filters-desktop [class*="multi"][class*="dropdown"]{
    left:0!important;
    right:0!important;
    width:100%!important;
    min-width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }

  .v406-map-filter-actions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    width:100%!important;
  }

  .v406-map-filter-actions>.btn,
  .v406-map-filter-actions>button{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  /* El selector Active antiguo queda reservado exclusivamente para móvil. */
  .v406-map-filters-mobile{
    display:none!important;
  }

  /* Anula reglas antiguas que podían limitar hijos de toolbar-form. */
  .client-map-sidebar .map-filter-form>*{
    max-width:100%!important;
  }
}

@media(max-width:649px){
  .v406-map-filters-desktop{display:none!important}
  .v406-map-filters-mobile{display:block!important}
  .v406-map-filter-actions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
  }
}


/* ===========================================================
   V40.7 - ficha cliente estable + Google progresivo
   =========================================================== */
@media(min-width:900px){
  .client-detail-grid{
    display:block!important;
    column-count:2!important;
    column-gap:16px!important;
    width:100%!important;
  }

  .client-detail-grid>section{
    display:inline-block!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0 0 16px!important;
    padding:14px!important;
    vertical-align:top!important;
    break-inside:avoid!important;
    page-break-inside:avoid!important;
    box-sizing:border-box!important;
    overflow:hidden!important;
  }

  /* Evita el efecto visual de tarjetas pegadas en navegadores con columns. */
  .client-detail-grid>section + section{
    margin-top:0!important;
  }

  /* Administración nunca puede superar su tarjeta. */
  .client-detail-grid .admin-client-grid{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:12px!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
  }
  .client-detail-grid .admin-client-grid form,
  .client-detail-grid .admin-client-grid label,
  .client-detail-grid .admin-client-grid input,
  .client-detail-grid .admin-client-grid select,
  .client-detail-grid .admin-client-grid button,
  .client-detail-grid .admin-client-grid .btn{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }
  .client-detail-grid .admin-client-grid button{
    white-space:normal!important;
    overflow-wrap:anywhere!important;
  }

  .client-detail-grid .contact-actions{
    max-width:100%!important;
    flex-wrap:wrap!important;
  }
  .client-detail-grid .contact-actions>*{
    max-width:100%!important;
    min-width:0!important;
  }
}

@media(min-width:650px) and (max-width:899px){
  .client-detail-grid{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:14px!important;
    column-count:auto!important;
  }
  .client-detail-grid>section{margin:0!important;width:100%!important;max-width:100%!important}
}

/* Controles Google no desbordan y las acciones progresivas son compactas. */
.google-search-tools{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:8px!important;
  margin-top:10px!important;
}
.google-search-tools form,
.google-custom-search{
  width:100%!important;
  max-width:100%!important;
}
.google-custom-search{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  gap:8px!important;
}
.google-custom-search input{min-width:0!important;width:100%!important}
.google-progress-actions{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:8px!important;
  margin-top:12px!important;
}
.google-progress-actions form,
.google-progress-actions .btn,
.google-progress-actions button{width:100%!important;max-width:100%!important}
.google-no-candidates{margin:10px 0!important;padding:12px!important;border:1px solid #e2e8f0!important;border-radius:10px!important}

@media(max-width:649px){
  .google-custom-search,
  .google-progress-actions{grid-template-columns:1fr!important}
}


/* ===========================================================
   V40.8 - layout dirigido, visitas compactas, sugerencias ruta
   =========================================================== */
@media(min-width:650px){
  /* Ficha de cliente: estructura dirigida sin huecos de filas. */
  .client-detail-grid{
    display:block!important;
    column-count:auto!important;
    width:100%!important;
  }
  .client-detail-directed-top{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    gap:20px!important;
    align-items:start!important;
    width:100%!important;
  }
  .client-detail-column{
    display:flex!important;
    flex-direction:column!important;
    gap:20px!important; /* +4px respecto a V40.7 */
    min-width:0!important;
  }
  .client-detail-rest{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:20px!important;
    margin-top:20px!important;
    align-items:start!important;
  }
  .client-detail-directed-top section,
  .client-detail-rest section{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
    box-sizing:border-box!important;
    break-inside:auto!important;
  }
  .client-section-auto-note{
    border-left:4px solid #7c3aed!important;
  }

  /* Visitas: misma información en mucha menos altura. */
  .v402-visits-main .visit-list{
    gap:6px!important;
  }
  .v402-visits-main .visit-card{
    display:grid!important;
    grid-template-columns:34px 26px minmax(0,1fr) auto!important;
    grid-template-rows:auto!important;
    align-items:center!important;
    gap:7px!important;
    padding:7px 9px!important;
    min-height:0!important;
  }
  .v402-visits-main .visit-card .route-mail-select{
    position:static!important;
    grid-column:1!important;
    margin:0!important;
  }
  .v402-visits-main .visit-order{
    position:static!important;
    grid-column:2!important;
    width:24px!important;
    height:24px!important;
    min-width:24px!important;
    line-height:24px!important;
    margin:0!important;
  }
  .v402-visits-main .drag-handle{
    display:none!important;
  }
  .v402-visits-main .visit-link{
    grid-column:3!important;
    min-width:0!important;
    padding:0!important;
  }
  .v402-visits-main .visit-top{
    display:flex!important;
    gap:7px!important;
    align-items:center!important;
    margin:0!important;
  }
  .v402-visits-main .visit-top strong{font-size:.88rem!important}
  .v402-visits-main .visit-link small{
    display:inline!important;
    margin:1px 8px 0 0!important;
    font-size:.7rem!important;
  }
  .v402-visits-main .visit-link .multiline{
    display:block!important;
    max-width:65ch!important;
    margin:2px 0 0!important;
    font-size:.72rem!important;
    line-height:1.15!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .v402-visits-main .visit-actions{
    grid-column:4!important;
    display:flex!important;
    flex-wrap:nowrap!important;
    gap:4px!important;
    margin:0!important;
    align-items:center!important;
  }
  .v402-visits-main .visit-actions .btn{
    min-height:30px!important;
    padding:4px 7px!important;
    font-size:.7rem!important;
    white-space:nowrap!important;
  }

  /* Inteligencia de ruta */
  .route-analysis-summary{
    display:flex!important;
    gap:10px!important;
    align-items:center!important;
    flex-wrap:wrap!important;
    border-left:4px solid #7c3aed!important;
  }
  .saved-route-client.route-client-suggested{
    border:2px solid #7c3aed!important;
    background:linear-gradient(90deg,rgba(124,58,237,.08),#fff 26%)!important;
  }
  .route-score-badge{
    background:#ede9fe!important;
    color:#5b21b6!important;
  }
  .route-suggestion-reason{
    margin:5px 0!important;
    padding:5px 7px!important;
    border-radius:7px!important;
    background:#f5f3ff!important;
    color:#4c1d95!important;
    font-size:.72rem!important;
    line-height:1.25!important;
  }
}
@media(max-width:899px){
  .client-detail-directed-top,
  .client-detail-rest{
    display:flex!important;
    flex-direction:column!important;
    gap:14px!important;
    margin-top:14px!important;
  }
}


/* ===========================================================
   V40.9 - ficha columnas independientes + redes + correo pool
   =========================================================== */
@media(min-width:650px){
  .client-detail-grid{
    display:block!important;
    column-count:auto!important;
    width:100%!important;
  }
  .client-detail-independent-shell{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:20px!important;
    align-items:start!important;
    width:100%!important;
  }
  .client-detail-independent-column{
    display:flex!important;
    flex-direction:column!important;
    gap:24px!important;
    min-width:0!important;
  }
  .client-detail-independent-column>section{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
    box-sizing:border-box!important;
  }
  .client-social-links{
    display:flex!important;
    gap:7px!important;
    flex-wrap:wrap!important;
    margin-top:12px!important;
    padding-top:10px!important;
    border-top:1px solid #e2e8f0!important;
  }
  .client-social-link{
    display:inline-flex!important;
    align-items:center!important;
    gap:5px!important;
    min-height:34px!important;
    padding:5px 9px!important;
    border:1px solid #dfe4e9!important;
    border-radius:9px!important;
    background:#fff!important;
    text-decoration:none!important;
    font-weight:750!important;
  }
  .client-links-editor{
    margin-top:10px!important;
    border:1px solid #e2e8f0!important;
    border-radius:9px!important;
    padding:8px!important;
  }
  .client-links-editor summary{cursor:pointer!important;font-weight:750!important}
  .client-links-editor form{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    margin-top:8px!important;
  }
  .client-links-editor .btn{grid-column:1/-1!important}
  .visit-mail-template-editor{
    border:1px solid #dfe4e9!important;
    border-radius:10px!important;
    margin-bottom:9px!important;
    overflow:hidden!important;
  }
  .visit-mail-template-editor>summary{
    display:flex!important;
    align-items:center!important;
    gap:12px!important;
    padding:10px!important;
    cursor:pointer!important;
  }
  .visit-mail-template-fields{
    display:grid!important;
    gap:8px!important;
    padding:0 10px 10px!important;
  }
}
@media(max-width:899px){
  .client-detail-independent-shell{
    display:flex!important;
    flex-direction:column!important;
    gap:14px!important;
  }
  .client-detail-independent-column{gap:14px!important}
}
@media(max-width:649px){
  .mobile-current-location-control{
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
  }
  .mobile-current-location-btn{
    width:auto!important;
    max-width:150px!important;
    min-height:38px!important;
    padding:6px 9px!important;
    border:1px solid #cbd5e1!important;
    border-radius:6px!important;
    background:#fff!important;
    font-size:.78rem!important;
    font-weight:800!important;
    box-shadow:0 1px 4px rgba(0,0,0,.18)!important;
  }
  .client-social-links{display:flex!important;gap:7px!important;flex-wrap:wrap!important;margin-top:10px!important}
  .client-social-link span{display:none!important}
}

/* V41.0 */
@media(min-width:650px){
 .v410-list-actions-card,.v410-route-action-card{position:sticky!important;top:0!important;z-index:12!important;display:flex!important;justify-content:space-between!important;align-items:center!important;gap:12px!important;margin:0 0 10px!important;padding:10px 12px!important;border:1px solid #dfe4e9!important;border-radius:11px!important;background:rgba(255,255,255,.97)!important;box-shadow:0 2px 8px rgba(15,23,42,.08)!important;box-sizing:border-box!important}
 .v410-list-actions-left,.v410-list-actions-buttons{display:flex!important;align-items:center!important;gap:9px!important;flex-wrap:wrap!important}
 .v401-main-list,.v402-visits-main,.saved-route-client-list,.v40-list-main,.v40-stock-main,.client-map-sidebar,.route-editor-sidebar{padding-bottom:96px!important;scroll-padding-bottom:96px!important;box-sizing:border-box!important}
 .v401-main-list .client-list,.v402-visits-main .visit-days,.saved-route-client-list{margin-bottom:32px!important}
 .v410-recent24-filter,.v410-recent24-filter select,.route-recent24-editor-filter,.route-recent24-editor-filter select{width:100%!important;max-width:100%!important;box-sizing:border-box!important}
}
@media(max-width:649px){.client-list,.visit-days,.saved-route-client-list,main.container{padding-bottom:104px!important;box-sizing:border-box!important}}


/* ===========================================================
   V41.1 - correcciones V41.0
   =========================================================== */
@media(min-width:650px){
  .v411-client-selection-card{
    position:sticky!important;
    top:0!important;
    z-index:25!important;
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:12px!important;
    margin:0 0 10px!important;
    padding:10px 12px!important;
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
    background:rgba(255,255,255,.98)!important;
    box-shadow:0 2px 8px rgba(15,23,42,.10)!important;
  }
  .v411-selection-left,.v411-selection-actions{
    display:flex!important;
    align-items:center!important;
    gap:10px!important;
    flex-wrap:wrap!important;
  }
  .v411-recent24-filter,
  .v411-recent24-filter select,
  .v40-sidebar-form label:has(select[name="recent24"]),
  .v40-sidebar-form select[name="recent24"]{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  .v401-main-list,
  .v402-visits-main,
  .task-list,
  .saved-route-client-list{
    padding-bottom:110px!important;
    scroll-padding-bottom:110px!important;
  }
}


/* ===========================================================
   V41.2 - mapa filtros consistentes + selección clientes limpia
   =========================================================== */
@media(min-width:650px){
  .v406-map-filter-form{
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    gap:10px!important;
    width:100%!important;
  }

  .v412-map-filters-desktop{
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    gap:10px!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
  }

  .v412-map-filters-desktop>*,
  .v412-map-filters-desktop>label,
  .v412-map-filters-desktop details,
  .v412-map-filters-desktop summary,
  .v412-map-filters-desktop .multi-select,
  .v412-map-filters-desktop .multiselect,
  .v412-map-filters-desktop .searchable-multiselect,
  .v412-map-filters-desktop .multi-select-wrap,
  .v412-map-filters-desktop .multi-select-control,
  .v412-map-filters-desktop select,
  .v412-map-filters-desktop button{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    flex:0 0 100%!important;
    box-sizing:border-box!important;
  }

  .v412-map-filters-desktop summary{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
  }

  .v412-map-filter-actions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:10px!important;
    width:100%!important;
    margin-top:2px!important;
  }
  .v412-map-filter-actions .btn,
  .v412-map-filter-actions button{
    width:100%!important;
    max-width:100%!important;
  }

  /* Prevent old toolbar grid rules from putting Estado + buttons on one row. */
  .client-map-sidebar .toolbar-form,
  .client-map-sidebar .map-filter-form{
    grid-template-columns:1fr!important;
  }

  .v412-sidebar-selection-info{
    padding:8px 0!important;
  }
  .v412-sidebar-selection-info .muted{
    margin:2px 0 8px!important;
    font-size:.76rem!important;
  }
}

@media(max-width:649px){
  .v412-map-filter-actions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
  }
}


/* ===========================================================
   V41.3 - filtros Google progresivos
   =========================================================== */
.google-progress-filter-form{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto!important;
  gap:9px!important;
  align-items:end!important;
}
.google-progress-filter-form>*{min-width:0!important}
@media(max-width:899px){
  .google-progress-filter-form{grid-template-columns:1fr!important}
  .google-progress-filter-form .btn,
  .google-progress-filter-form button{width:100%!important}
}


/* ===========================================================
   V41.5 - selección visitas + filtros Google en mapas
   =========================================================== */
@media(min-width:650px){
  .v415-visit-selection-card{
    position:sticky!important;
    top:0!important;
    z-index:25!important;
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:12px!important;
    padding:10px 12px!important;
    margin:0 0 10px!important;
    width:100%!important;
    box-sizing:border-box!important;
    background:rgba(255,255,255,.98)!important;
    box-shadow:0 2px 8px rgba(15,23,42,.10)!important;
  }
  .v415-selection-summary,.v415-selection-actions{
    display:flex!important;
    align-items:center!important;
    gap:9px!important;
    flex-wrap:wrap!important;
  }
  .v415-map-google-filter{
    padding:8px 0!important;
    max-width:320px!important;
  }
  .v415-map-google-filter label,
  .v415-map-google-filter select,
  .v415-routes-google-filter label,
  .v415-routes-google-filter select{
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }
}


/* V41.5.1 - checkbox Seleccionar todos Visitas */
#v415-visits-select-all{
  width:18px!important;
  height:18px!important;
  min-width:18px!important;
  max-width:18px!important;
  flex:0 0 18px!important;
  margin:0 6px 0 0!important;
  padding:0!important;
}
.v415-selection-summary .checkbox{
  display:inline-flex!important;
  align-items:center!important;
  width:auto!important;
  max-width:none!important;
}


/* ===========================================================
   V41.6 - ubicación manual, tramos móvil y selección de tareas
   =========================================================== */
#manual-location-map{height:62vh;min-height:430px;border-radius:10px;overflow:hidden}
.manual-location-search-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:5px}
.manual-location-coordinates{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.task-bulk-card{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.task-bulk-summary,.task-bulk-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.task-card{position:relative}.task-select-check{position:absolute;top:10px;right:10px;z-index:3}.task-select-check input,#task-select-all{width:18px!important;height:18px!important;min-width:18px!important;margin:0!important}
.mobile-road-legs-card{margin-top:12px}.road-leg-day h3{margin:8px 0}.road-leg-row{display:grid;grid-template-columns:48px 1fr;gap:8px;padding:9px 0;border-bottom:1px solid rgba(127,127,127,.18)}
.road-leg-row small{display:block;margin-top:3px}.road-leg-index{font-weight:700}.road-leg-total{display:flex;justify-content:space-between;gap:10px;padding:10px 0 4px}
@media(min-width:650px){.task-bulk-card{position:sticky;top:0;z-index:24;background:rgba(255,255,255,.98)}.mobile-road-legs-card{display:none!important}}
@media(max-width:649px){#manual-location-map{height:58vh;min-height:360px}.manual-location-search-row,.manual-location-coordinates{grid-template-columns:1fr}.task-bulk-card{position:sticky;top:0;z-index:24}.task-card{padding-right:38px}}


/* ==========================================================
   V41.7 - Clientes potenciales + Tarjetas de presentación
   ========================================================== */
.mobile-only{display:none!important}
.prospect-grid,.business-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}
.prospect-card h2{margin:0 0 3px}.prospect-meta{display:grid;gap:5px;margin:10px 0}.prospect-meta span{overflow-wrap:anywhere}
.prospect-merge{margin-top:16px}.client-link-results{display:grid;gap:7px;margin-top:8px}.client-link-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid #e3e7eb;border-radius:10px;padding:9px}.client-link-row span{display:grid}.client-link-row small{color:#667085}
.business-card-item{text-decoration:none;color:inherit;display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:center;min-width:0}.business-card-item img{width:150px;height:92px;object-fit:cover;border-radius:9px;border:1px solid #e2e8f0}.business-card-item>div:last-child{display:grid;gap:3px;min-width:0}.business-card-item span,.business-card-item small,.business-card-item em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.business-card-placeholder{min-height:92px;display:grid;place-items:center;font-size:2.3rem;background:#f4f6f8;border:1px dashed #cbd5e1;border-radius:10px}
.business-card-editor{display:grid;grid-template-columns:minmax(260px,36%) 1fr;gap:18px}.business-card-photo img{width:100%;max-height:420px;object-fit:contain;background:#f5f6f7;border-radius:12px}.camera-label{position:relative;overflow:hidden}.camera-label input{position:absolute;inset:0;opacity:0;cursor:pointer}.card-camera-controls{margin-top:9px;align-items:center;gap:8px}.card-link-client{margin-top:16px}
@media(max-width:649px){
 .mobile-only{display:inline-flex!important}.prospect-grid,.business-card-grid{grid-template-columns:1fr}.prospect-search,.card-search{grid-template-columns:1fr!important}.business-card-item{grid-template-columns:112px 1fr}.business-card-item img{width:112px;height:76px}.business-card-editor{grid-template-columns:1fr}.business-card-fields{grid-template-columns:1fr!important}.card-camera-controls{display:flex!important;flex-wrap:wrap}.client-link-row{align-items:flex-start}.client-link-row form{flex:0 0 auto}.prospect-form .grid-2{grid-template-columns:1fr!important}
}


/* V41.7 - tarjeta por ambas caras + recorte */
.card-side-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.card-side-panel{min-width:0}
.card-side-panel>img{width:100%;height:auto;max-height:260px;object-fit:contain;background:#f5f6f7;border-radius:10px;border:1px solid #e2e8f0}
.business-card-thumb-wrap{position:relative}
.business-card-thumb-wrap img{display:block}
.card-two-sides{position:absolute;right:6px;bottom:6px;background:rgba(15,23,42,.82);color:#fff;padding:2px 7px;border-radius:999px;font-size:.72rem}
.card-crop-modal{position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.78);padding:12px;overflow:auto}
.card-crop-dialog{max-width:820px;margin:0 auto;background:#fff;border-radius:14px;padding:12px}
.card-crop-stage{height:min(68vh,620px);background:#111;overflow:hidden;border-radius:10px}
.card-crop-stage img{display:block;max-width:100%}
body.card-crop-open{overflow:hidden}
@media(max-width:649px){
  .card-side-grid{grid-template-columns:1fr}
  .card-side-panel>img{max-height:300px}
  .card-crop-dialog{min-height:90vh}
  .card-crop-stage{height:68vh}
}


/* ===========================================================
   V41.8 - Potenciales/Tarjetas estilo Clientes + puntos útiles
   =========================================================== */
.v418-split-layout{display:grid;grid-template-columns:minmax(230px,30%) minmax(0,1fr);gap:16px;align-items:start}
.v418-filter-sidebar{position:sticky;top:8px;max-height:calc(100vh - 95px);overflow:auto}
.v418-results-pane{min-width:0}
.v418-selection-card{position:sticky;top:0;z-index:22;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;margin-bottom:10px;background:rgba(255,255,255,.98)}
.v418-selection-summary,.v418-selection-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.v418-result-grid{display:grid;gap:10px}
.prospect-card,.business-card-row{position:relative}
.v418-row-check{position:absolute;top:10px;right:10px;z-index:3}
.v418-row-check input,#prospects-select-all,#cards-select-all{width:18px!important;height:18px!important;min-width:18px!important}
.prospect-kind.restaurant{background:#fff1db;color:#8a4b00}.prospect-kind.repsol{background:#fff4b8;color:#8a5b00}.prospect-kind.potential{background:#eee8ff;color:#5b32a3}
.prospect-location-map{height:440px;min-height:320px;border-radius:12px;overflow:hidden;margin-top:10px}
.prospect-location-card{margin:12px 0;padding:12px;border:1px solid #e2e8f0;border-radius:12px}
.prospect-google-choice{width:100%;border:0;text-align:left;background:transparent;cursor:pointer}
.v418-map-points-filter{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:8px 0}
.useful-dot{display:inline-block;width:13px;height:13px;border-radius:50%;vertical-align:-1px;border:1px solid rgba(0,0,0,.2)}
.useful-dot.potential{background:#7c3aed}.useful-dot.restaurant{background:#f97316}.useful-dot.repsol{background:#facc15}
.useful-map-pin{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;border:3px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.useful-map-pin.potential{background:#7c3aed}.useful-map-pin.restaurant{background:#f97316}.useful-map-pin.repsol{background:#facc15}
@media(max-width:649px){
  .v418-split-layout{display:block}
  .v418-filter-sidebar{position:static;max-height:none;overflow:visible}
  .v418-selection-card{position:sticky;top:0;z-index:24;margin-top:8px}
  .prospect-location-map{height:52vh;min-height:320px}
}


/* ===========================================================
   V41.8.1 - correcciones mapa, filtros y selección en tarjetas
   =========================================================== */

/* Mapa Visitas: filtros siempre arriba del mapa y antes del optimizador. */
.v418-visit-map-filter-column{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  gap:10px!important;
  width:min(100%,340px)!important;
  margin:0 0 12px!important;
}
.v418-visit-map-filter-column .v415-map-google-filter,
.v418-visit-map-filter-column .v415-map-google-filter label,
.v418-visit-map-filter-column .v415-map-google-filter select{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
  margin:0!important;
}
.v418-visit-map-filter-column .v418-map-points-filter{
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  gap:6px!important;
  padding:0!important;
}
.v418-visit-map-filter-column .checkbox{
  width:auto!important;
}

/* Potenciales: el multiselect ocupa todo el ancho de la columna de filtros. */
.v418-filter-card .searchable-multiselect,
.v418-filter-card .multi-select-wrap,
.v418-filter-card .multi-select,
.v418-filter-card details,
.v418-filter-card summary{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}

/* Igual que Clientes: columna de selección a la izquierda, checkbox táctil 24px. */
.prospect-card{
  display:grid!important;
  grid-template-columns:44px minmax(0,1fr)!important;
  column-gap:6px!important;
  align-items:start!important;
  width:100%!important;
  max-width:100%!important;
  padding:0!important;
  overflow:hidden!important;
}
.prospect-card>.v418-row-check{
  position:static!important;
  grid-column:1!important;
  grid-row:1 / span 4!important;
  display:flex!important;
  align-items:flex-start!important;
  justify-content:center!important;
  padding-top:16px!important;
  margin:0!important;
}
.prospect-card>.section-head,
.prospect-card>.prospect-meta,
.prospect-card>.form-actions{
  grid-column:2!important;
  margin-left:0!important;
  margin-right:0!important;
}
.prospect-card>.section-head{padding:14px 14px 0 4px!important}
.prospect-card>.prospect-meta{padding:0 14px 0 4px!important}
.prospect-card>.form-actions{padding:0 14px 14px 4px!important}
.prospect-card .prospect-check{
  width:24px!important;
  height:24px!important;
  min-width:24px!important;
  min-height:24px!important;
  margin:0!important;
}

/* Tarjetas de presentación: selección izquierda y tarjeta usa todo el ancho. */
.business-card-row{
  display:grid!important;
  grid-template-columns:44px 150px minmax(0,1fr) auto!important;
  gap:12px!important;
  align-items:center!important;
  width:100%!important;
  max-width:100%!important;
  padding:12px 14px 12px 0!important;
  box-sizing:border-box!important;
}
.business-card-row>.v418-row-check{
  position:static!important;
  grid-column:1!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  margin:0!important;
}
.business-card-row .card-check{
  width:24px!important;
  height:24px!important;
  min-width:24px!important;
  min-height:24px!important;
  margin:0!important;
}
.business-card-row>.business-card-thumb{grid-column:2!important;min-width:0!important}
.business-card-row>.business-card-summary{grid-column:3!important;min-width:0!important}
.business-card-row>.btn{grid-column:4!important}
.business-card-thumb img{
  width:150px!important;
  max-width:100%!important;
  height:92px!important;
  object-fit:cover!important;
}

/* Tareas: checkbox a la izquierda exactamente como el patrón de Clientes. */
.task-card{
  position:relative!important;
  display:grid!important;
  grid-template-columns:44px minmax(0,1fr)!important;
  column-gap:5px!important;
  align-items:start!important;
  padding:0!important;
  overflow:hidden!important;
}
.task-card>.task-select-check{
  position:static!important;
  grid-column:1!important;
  grid-row:1 / span 2!important;
  display:flex!important;
  align-items:flex-start!important;
  justify-content:center!important;
  padding-top:16px!important;
  margin:0!important;
}
.task-card>.task-link{
  grid-column:2!important;
  padding:14px 14px 8px 4px!important;
  min-width:0!important;
}
.task-card>.visit-actions{
  grid-column:2!important;
  padding:8px 14px 14px 4px!important;
  margin:0!important;
}
.task-card .task-check{
  width:24px!important;
  height:24px!important;
  min-width:24px!important;
  min-height:24px!important;
  margin:0!important;
}

/* Checkboxes maestros del mismo tamaño visual. */
#prospects-select-all,
#cards-select-all,
#task-select-all{
  width:24px!important;
  height:24px!important;
  min-width:24px!important;
  min-height:24px!important;
  margin:0!important;
}

@media(max-width:649px){
  .v418-visit-map-filter-column{width:100%!important}
  .business-card-row{
    grid-template-columns:38px 100px minmax(0,1fr)!important;
    gap:8px!important;
    padding:10px 10px 10px 0!important;
  }
  .business-card-row>.business-card-thumb{grid-column:2!important}
  .business-card-row>.business-card-summary{grid-column:3!important}
  .business-card-row>.btn{
    grid-column:2 / 4!important;
    justify-self:start!important;
  }
  .business-card-thumb img{width:100px!important;height:70px!important}
  .prospect-card{grid-template-columns:38px minmax(0,1fr)!important}
  .task-card{grid-template-columns:38px minmax(0,1fr)!important}
}


/* ===========================================================
   V41.8.2 - mapas contextuales + layout definitivo
   =========================================================== */

/* Potenciales/listados: una tarjeta por fila, todo el ancho disponible. */
.prospect-grid.v418-result-grid{
  grid-template-columns:minmax(0,1fr)!important;
  width:100%!important;
}
.v418-results-pane,
.v418-result-grid,
.prospect-card{
  min-width:0!important;
  max-width:none!important;
  width:100%!important;
}

/* Navegación compacta G/W. */
.map-nav-letter{
  min-width:38px!important;
  width:38px!important;
  height:38px!important;
  min-height:38px!important;
  padding:0!important;
  border-radius:9px!important;
  font-weight:900!important;
  line-height:1!important;
}

/* Puntos útiles: diferenciados pero sin tapar las chinchetas de clientes/visitas. */
.useful-map-pin{
  width:30px!important;
  height:30px!important;
  font-size:16px!important;
  border-width:2px!important;
  box-shadow:0 2px 6px rgba(0,0,0,.28)!important;
}
.useful-map-pin.potential{background:#7c3aed!important}
.useful-map-pin.restaurant{background:#f97316!important}
.useful-map-pin.repsol{background:#facc15!important}

/* Los filtros contextuales siempre preceden al mapa. */
.v4182-map-context-filters,
.v4182-routes-map-filters,
.v4182-inline-map-filter{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  gap:9px!important;
  width:100%!important;
  margin:0 0 10px!important;
}
.v4182-map-context-filters>*,
.v4182-routes-map-filters>*,
.v4182-inline-map-filter>*{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
.v418-map-points-filter{
  display:block!important;
  width:100%!important;
  padding:0!important;
}

/* Visitas: usar la altura disponible del viewport en escritorio. */
.visit-map-full{
  height:calc(100dvh - 215px)!important;
  min-height:560px!important;
  width:100%!important;
  border-radius:12px!important;
  overflow:hidden!important;
}

/* Configuración: 2 columnas de trabajo en desktop, paneles complejos a ancho total. */
@media(min-width:900px){
  .v4182-settings-grid{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:14px!important;
    align-items:start!important;
  }
  .v4182-settings-grid>.card{
    margin:0!important;
    min-width:0!important;
    height:auto!important;
  }
  .v4182-settings-grid>.v4182-settings-wide{
    grid-column:1 / -1!important;
  }
  .v4182-settings-grid .form{
    gap:10px!important;
  }
  .v4182-settings-grid .card h2{
    margin-bottom:8px!important;
  }
}
@media(max-width:899px){
  .v4182-settings-grid{display:block!important}
}
@media(max-width:649px){
  .visit-map-full{
    height:calc(100dvh - 245px)!important;
    min-height:430px!important;
  }
}


/* ===========================================================
   V41.8.3 - filtros globales, mapas y layouts corregidos
   =========================================================== */

/* Multiselect global: checks alineados y táctiles, texto centrado verticalmente. */
.multi-select,
.multi-select-panel,
.multi-select-options{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
.multi-select-option{
  display:grid!important;
  grid-template-columns:24px minmax(0,1fr)!important;
  align-items:center!important;
  column-gap:9px!important;
  width:100%!important;
  min-height:38px!important;
  padding:6px 8px!important;
  margin:0!important;
  box-sizing:border-box!important;
  font-weight:500!important;
}
.multi-select-option input[type="checkbox"]{
  position:static!important;
  display:block!important;
  width:20px!important;
  height:20px!important;
  min-width:20px!important;
  min-height:20px!important;
  margin:0!important;
  padding:0!important;
  justify-self:center!important;
  align-self:center!important;
}
.multi-select-option span{
  display:block!important;
  min-width:0!important;
  line-height:1.25!important;
  margin:0!important;
}
.multi-select-actions{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:6px!important;
}
.multi-select-actions button{
  width:100%!important;
  min-width:0!important;
}

/* Mapa Visitas: filtros forman parte real de la columna izquierda. */
.visit-route-optimizer>.v418-visit-map-filter-column{
  display:flex!important;
  flex-direction:column!important;
  gap:8px!important;
  width:100%!important;
  max-width:none!important;
  margin:0 0 14px!important;
  padding:0 0 12px!important;
  border-bottom:1px solid #dfe4e9!important;
}
.visit-route-optimizer>.v418-visit-map-filter-column .multi-select,
.visit-route-optimizer>.v418-visit-map-filter-column select,
.visit-route-optimizer>.v418-visit-map-filter-column label{
  width:100%!important;
  max-width:100%!important;
}

/* Tarjetas: filtro lateral vertical, como Clientes/Visitas. */
.v418-filter-sidebar .v418-filter-card.search{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  gap:10px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
}
.v418-filter-sidebar .v418-filter-card.search>label,
.v418-filter-sidebar .v418-filter-card.search>input,
.v418-filter-sidebar .v418-filter-card.search>.form-actions{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
}
.v418-filter-sidebar .v418-filter-card.search>.form-actions{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:7px!important;
  margin:0!important;
}
.v418-filter-sidebar .v418-filter-card.search>.form-actions .btn,
.v418-filter-sidebar .v418-filter-card.search>.form-actions button{
  width:100%!important;
}

/* El filtro de meses expresa claramente sus opciones sin deformar el panel. */
input[name="exclude_no_purchase"][value="12"] + span::after,
input[name="exclude_no_purchase"][value="24"] + span::after,
input[name="exclude_no_purchase"][value="36"] + span::after,
input[name="exclude_no_purchase"][value="48"] + span::after,
input[name="filter_no_purchase"][value="12"] + span::after,
input[name="filter_no_purchase"][value="24"] + span::after,
input[name="filter_no_purchase"][value="36"] + span::after,
input[name="filter_no_purchase"][value="48"] + span::after{
  content:" meses";
}

/* En móvil se conserva el ancho total del filtro. */
@media(max-width:649px){
  .multi-select-panel{
    max-width:calc(100vw - 28px)!important;
  }
}


/* V41.8.3.1 - ubicación manual robusta */
.address-map-actions{
  margin-top:10px!important;
}
.error-text{color:#b91c1c!important}
.manual-osm-results{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  gap:6px!important;
  margin-top:8px!important;
}
.manual-osm-result{
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  gap:3px!important;
  width:100%!important;
  padding:9px 10px!important;
  text-align:left!important;
  border:1px solid #d7dce3!important;
  border-radius:9px!important;
  background:#fff!important;
  cursor:pointer!important;
}
.manual-osm-result:hover,
.manual-osm-result.selected{
  border-color:#0ea5e9!important;
  background:#f0f9ff!important;
}
.manual-osm-result small{
  color:#64748b!important;
  overflow-wrap:anywhere!important;
}


/* ===========================================================
   V41.8.3.2 - formularios móviles + tabla de tramos
   =========================================================== */
.road-legs-table-wrap{width:100%!important;max-width:100%!important;overflow-x:hidden!important}
.road-legs-table{width:100%!important;max-width:100%!important;border-collapse:collapse!important;table-layout:fixed!important;font-size:.88rem!important}
.road-legs-table .col-leg{width:14%!important}.road-legs-table .col-clients{width:48%!important}.road-legs-table .col-km{width:18%!important}.road-legs-table .col-min{width:20%!important}
.road-legs-table th,.road-legs-table td{padding:8px 5px!important;border-bottom:1px solid rgba(127,127,127,.18)!important;text-align:left!important;vertical-align:top!important;min-width:0!important;overflow-wrap:anywhere!important}
.road-legs-table th{font-size:.78rem!important;color:#64748b!important}
.road-leg-clients strong,.road-leg-clients span{display:block!important;white-space:normal!important;overflow-wrap:anywhere!important}
.road-leg-km,.road-leg-min{white-space:nowrap!important;text-align:right!important}
.road-leg-unavailable{color:#b45309!important;font-size:.78rem!important}
.road-legs-table tfoot th,.road-legs-table tfoot td{font-weight:800!important;border-bottom:0!important}
@media(max-width:649px){
  .visit-form-card,.task-form-card{width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;overflow:hidden!important}
  .visit-form-card>*,.task-form-card>*,.visit-form-card label,.task-form-card label,.visit-form-card .grid-2,.task-form-card .grid-2{min-width:0!important;max-width:100%!important;box-sizing:border-box!important}
  .visit-form-card input:not([type="checkbox"]):not([type="radio"]),.visit-form-card select,.visit-form-card textarea,.task-form-card input:not([type="checkbox"]):not([type="radio"]),.task-form-card select,.task-form-card textarea{display:block!important;width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important}
  .visit-form-card input[type="date"],.task-form-card input[type="datetime-local"]{inline-size:100%!important;max-inline-size:100%!important;min-inline-size:0!important}
  .road-legs-table{font-size:.78rem!important}
  .road-legs-table .col-leg{width:13%!important}.road-legs-table .col-clients{width:45%!important}.road-legs-table .col-km{width:20%!important}.road-legs-table .col-min{width:22%!important}
  .road-legs-table th,.road-legs-table td{padding:7px 3px!important}
}


/* V41.8.3.3 - mostrar unidad en todos los filtros de rango de compra */
input[name="route_no_purchase"][value="12"] + span::after,
input[name="route_no_purchase"][value="24"] + span::after,
input[name="route_no_purchase"][value="36"] + span::after,
input[name="route_no_purchase"][value="48"] + span::after{
  content:" meses";
}


/* ===========================================================
   V41.8.3.3 - Mapa de Visitas por fecha
   =========================================================== */
.visit-date-legend-wrap{
  padding:0 0 12px!important;
  margin:0 0 12px!important;
  border-bottom:1px solid #dfe4e9!important;
}
.visit-date-legend{
  display:flex!important;
  flex-wrap:wrap!important;
  gap:6px!important;
  margin-top:7px!important;
}
.visit-date-chip{
  display:inline-flex!important;
  align-items:center!important;
  gap:5px!important;
  padding:4px 7px!important;
  border:1px solid #dfe4e9!important;
  border-radius:999px!important;
  background:#fff!important;
  font-size:.78rem!important;
  font-weight:700!important;
  white-space:nowrap!important;
}
.visit-date-chip i{
  display:block!important;
  width:10px!important;
  height:10px!important;
  border-radius:50%!important;
  flex:0 0 10px!important;
}
.visit-day-pin{
  position:relative!important;
  width:30px!important;
  height:30px!important;
  border-radius:50%!important;
  display:grid!important;
  place-items:center!important;
  background:var(--visit-day-color)!important;
  border:2px solid #fff!important;
  box-shadow:0 2px 7px rgba(0,0,0,.32)!important;
  color:#fff!important;
  font-weight:900!important;
  line-height:1!important;
}
.visit-day-pin>span{
  font-size:.84rem!important;
}
.visit-day-pin>small{
  position:absolute!important;
  right:-6px!important;
  bottom:-8px!important;
  display:grid!important;
  place-items:center!important;
  min-width:18px!important;
  height:18px!important;
  padding:0 3px!important;
  border-radius:9px!important;
  background:#fff!important;
  color:var(--visit-day-color)!important;
  border:2px solid var(--visit-day-color)!important;
  font-size:.66rem!important;
  font-weight:900!important;
  line-height:1!important;
  box-sizing:border-box!important;
}
.visit-location-group.visit-day-group{
  position:relative!important;
  width:34px!important;
  height:34px!important;
  border-radius:50%!important;
  display:grid!important;
  place-items:center!important;
  color:#fff!important;
  border:2px solid #fff!important;
  box-shadow:0 2px 8px rgba(0,0,0,.35)!important;
  font-weight:900!important;
}
.visit-location-group.visit-day-group>small{
  position:absolute!important;
  left:50%!important;
  bottom:-10px!important;
  transform:translateX(-50%)!important;
  min-width:max-content!important;
  padding:1px 4px!important;
  border-radius:7px!important;
  background:#fff!important;
  color:#111827!important;
  border:1px solid #cbd5e1!important;
  font-size:.58rem!important;
  line-height:1.1!important;
}
.visit-date-legend-mobile{
  width:100%!important;
  padding:8px 4px 10px!important;
  box-sizing:border-box!important;
}
@media(max-width:649px){
  .visit-date-chip{font-size:.72rem!important;padding:4px 6px!important}
}


/* ===========================================================
   V41.9 - Sistema visual coherente + temas por usuario
   Capa no destructiva: normaliza componentes sin eliminar CSS histórico.
   =========================================================== */
:root{
  --ui-font:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --ui-accent:var(--user-accent,#08a8d8);
  --ui-bg:#f5f7f9;
  --ui-surface:#ffffff;
  --ui-surface-2:#f8fafc;
  --ui-surface-3:#eef3f7;
  --ui-text:#172033;
  --ui-muted:#657084;
  --ui-border:#dfe5eb;
  --ui-border-strong:#cbd5df;
  --ui-header:#202326;
  --ui-header-text:#f8fafc;
  --ui-danger:#b42318;
  --ui-danger-bg:#fff4f2;
  --ui-success:#137333;
  --ui-shadow:0 1px 2px rgba(15,23,42,.035),0 8px 24px rgba(15,23,42,.045);
  --ui-shadow-raised:0 8px 24px rgba(15,23,42,.10);
  --ui-radius:12px;
  --ui-radius-sm:9px;
  --ui-card-pad:16px;
  --ui-control-h:42px;
  --ui-gap:12px;
  --ui-content-max:1560px;
}
body[data-theme="blue"]{
  --ui-bg:#f3f7fb;--ui-surface:#ffffff;--ui-surface-2:#f6f9fc;--ui-surface-3:#eaf1f8;
  --ui-text:#13233a;--ui-muted:#607089;--ui-border:#d8e2ec;--ui-border-strong:#bfcedc;
  --ui-header:#10233f;--ui-header-text:#f8fbff;
}
body[data-theme="sand"]{
  --ui-bg:#f7f5f1;--ui-surface:#fffdfa;--ui-surface-2:#faf7f2;--ui-surface-3:#eee9e1;
  --ui-text:#292723;--ui-muted:#726b61;--ui-border:#e4ded4;--ui-border-strong:#d2c8b9;
  --ui-header:#312d28;--ui-header-text:#fffdf8;
}
body[data-theme="graphite"]{
  color-scheme:dark;
  --ui-bg:#0f141b;--ui-surface:#171d26;--ui-surface-2:#1c2430;--ui-surface-3:#242e3b;
  --ui-text:#edf2f7;--ui-muted:#a8b3c2;--ui-border:#2c3745;--ui-border-strong:#3b4858;
  --ui-header:#0b0f14;--ui-header-text:#f8fafc;--ui-danger-bg:#35191a;
  --ui-shadow:0 1px 2px rgba(0,0,0,.18),0 10px 28px rgba(0,0,0,.18);
  --ui-shadow-raised:0 10px 28px rgba(0,0,0,.28);
}
@media(prefers-color-scheme:dark){
  body[data-theme="system"]{
    color-scheme:dark;
    --ui-bg:#0f141b;--ui-surface:#171d26;--ui-surface-2:#1c2430;--ui-surface-3:#242e3b;
    --ui-text:#edf2f7;--ui-muted:#a8b3c2;--ui-border:#2c3745;--ui-border-strong:#3b4858;
    --ui-header:#0b0f14;--ui-header-text:#f8fafc;--ui-danger-bg:#35191a;
  }
}
body[data-density="compact"]{--ui-card-pad:12px;--ui-control-h:36px;--ui-gap:8px;--ui-radius:10px;--ui-radius-sm:7px}
body[data-width="standard"]{--ui-content-max:1280px}
body[data-width="wide"]{--ui-content-max:1560px}
body[data-width="full"]{--ui-content-max:9999px}

html{background:var(--ui-bg)!important}
body{font-family:var(--ui-font)!important;background:var(--ui-bg)!important;color:var(--ui-text)!important;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.container{width:min(var(--ui-content-max),calc(100% - 32px))!important;max-width:none!important;margin-inline:auto!important}
body[data-width="full"] .container{width:calc(100% - 24px)!important}

/* Cabecera / navegación */
.topbar{background:var(--ui-header)!important;color:var(--ui-header-text)!important;box-shadow:0 1px 0 rgba(255,255,255,.06),0 5px 18px rgba(0,0,0,.13)!important;padding-top:9px!important;padding-bottom:9px!important}
.brand{display:inline-flex!important;align-items:center!important;gap:9px!important;letter-spacing:-.015em!important}
.app-logo{border-radius:7px!important}
.topbar nav{gap:3px!important;align-items:center!important}
.topbar nav a{position:relative!important;padding:7px 9px!important;border-radius:var(--ui-radius-sm)!important;color:color-mix(in srgb,var(--ui-header-text) 86%,transparent)!important;font-weight:560!important;transition:background .15s ease,color .15s ease!important}
.topbar nav a:hover{background:rgba(255,255,255,.09)!important;color:var(--ui-header-text)!important}
.topbar nav a.active{background:rgba(255,255,255,.12)!important;color:#fff!important}
.topbar nav a.active:after{content:"";position:absolute;left:9px;right:9px;bottom:2px;height:2px;border-radius:999px;background:var(--ui-accent)}
.session-user{gap:7px!important}
.bottom-nav{background:color-mix(in srgb,var(--ui-surface) 94%,transparent)!important;border-top:1px solid var(--ui-border)!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.bottom-nav a{color:var(--ui-muted)!important;border-radius:8px!important}
.bottom-nav a.active{color:var(--ui-accent)!important;background:color-mix(in srgb,var(--ui-accent) 10%,transparent)!important;font-weight:800!important}

/* Jerarquía tipográfica */
h1,h2,h3,strong{color:var(--ui-text)}
h1{letter-spacing:-.025em!important;font-weight:780!important}
h2{letter-spacing:-.012em!important;font-weight:740!important}
.muted,.result-count,small{color:var(--ui-muted)}
.page-head{margin-bottom:14px!important}
.page-head>div>p{margin-top:2px!important}
.section-head{gap:10px!important}

/* Tarjetas y superficies */
.card{background:var(--ui-surface)!important;border:1px solid var(--ui-border)!important;border-radius:var(--ui-radius)!important;box-shadow:var(--ui-shadow)!important;padding:var(--ui-card-pad)!important}
.card.card,.search.card{border-color:var(--ui-border)!important}
hr{border:0!important;border-top:1px solid var(--ui-border)!important}
.empty{color:var(--ui-muted)!important;background:var(--ui-surface-2)!important}

/* Controles */
input,select,textarea{background:var(--ui-surface)!important;color:var(--ui-text)!important;border:1px solid var(--ui-border-strong)!important;border-radius:var(--ui-radius-sm)!important;min-height:var(--ui-control-h)!important;box-shadow:none!important;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease!important}
input:focus,select:focus,textarea:focus{outline:none!important;border-color:var(--ui-accent)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--ui-accent) 17%,transparent)!important}
input::placeholder,textarea::placeholder{color:color-mix(in srgb,var(--ui-muted) 75%,transparent)!important}
label{color:var(--ui-text)}
fieldset{border-color:var(--ui-border)!important}

/* Botones: tres niveles visuales claros */
.btn,button.btn{min-height:var(--ui-control-h)!important;border-radius:var(--ui-radius-sm)!important;border:1px solid var(--ui-border-strong)!important;background:var(--ui-surface)!important;color:var(--ui-text)!important;font-weight:700!important;box-shadow:none!important;transition:transform .08s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease!important}
.btn:hover,button.btn:hover{background:var(--ui-surface-2)!important;border-color:color-mix(in srgb,var(--ui-border-strong) 72%,var(--ui-accent))!important}
.btn:active,button.btn:active{transform:translateY(1px)!important}
.btn.primary,button.btn.primary{background:var(--ui-accent)!important;border-color:var(--ui-accent)!important;color:#fff!important;box-shadow:0 2px 7px color-mix(in srgb,var(--ui-accent) 24%,transparent)!important}
.btn.primary:hover,button.btn.primary:hover{background:color-mix(in srgb,var(--ui-accent) 88%,#000)!important;border-color:color-mix(in srgb,var(--ui-accent) 88%,#000)!important}
.btn.danger,button.btn.danger,.danger{background:var(--ui-danger-bg)!important;border-color:color-mix(in srgb,var(--ui-danger) 35%,var(--ui-border))!important;color:var(--ui-danger)!important}
.btn.small,button.btn.small{min-height:34px!important;padding:5px 9px!important;font-size:.82rem!important}
button:disabled,.btn:disabled{opacity:.48!important;cursor:not-allowed!important;transform:none!important}

/* Selecciones / filtros */
.multi-select{border-color:var(--ui-border-strong)!important;background:var(--ui-surface)!important;border-radius:var(--ui-radius-sm)!important}
.multi-select>summary{min-height:var(--ui-control-h)!important;color:var(--ui-text)!important}
.multi-select-panel{background:var(--ui-surface)!important;border-color:var(--ui-border)!important;border-radius:var(--ui-radius)!important;box-shadow:var(--ui-shadow-raised)!important}
.multi-select-search{background:var(--ui-surface-2)!important}
.multi-select-option:hover{background:color-mix(in srgb,var(--ui-accent) 8%,var(--ui-surface))!important}
.multi-select-count{color:var(--ui-accent)!important}
.mobile-filter-details>summary{background:var(--ui-surface)!important;color:var(--ui-text)!important;border-color:var(--ui-border)!important}

/* Tablas */
table{border-collapse:separate;border-spacing:0;color:var(--ui-text)}
thead th{background:var(--ui-surface-2)!important;color:var(--ui-muted)!important;border-color:var(--ui-border)!important;font-weight:750!important}
tbody td,tfoot td,tfoot th{border-color:var(--ui-border)!important}
tbody tr:hover td{background:color-mix(in srgb,var(--ui-accent) 4%,var(--ui-surface))!important}

/* Estados y mensajes sin pisar los colores semánticos específicos */
.badge{border-radius:999px!important;font-weight:750!important;letter-spacing:.005em!important}
.flash{border-radius:var(--ui-radius-sm)!important;border:1px solid var(--ui-border)!important;box-shadow:var(--ui-shadow)!important}

/* Panels frecuentes */
.bulk-toolbar,.task-bulk-card,.v415-visit-selection-card,.v418-selection-card,.saved-route-toolbar,.saved-route-sortbar{background:var(--ui-surface)!important;border-color:var(--ui-border)!important}
.client-card,.visit-card,.task-card,.prospect-card,.business-card-row,.saved-route-client{border-color:var(--ui-border)!important;background:var(--ui-surface)!important}
.client-card:hover,.visit-card:hover,.task-card:hover,.prospect-card:hover,.business-card-row:hover,.saved-route-client:hover{border-color:color-mix(in srgb,var(--ui-accent) 34%,var(--ui-border))!important;box-shadow:var(--ui-shadow-raised)!important}

/* Detalles desplegables */
details{color:var(--ui-text)}
details>summary{border-radius:var(--ui-radius-sm)}
.visit-mail-template-editor{border-color:var(--ui-border)!important;background:var(--ui-surface-2)!important}

/* Mapas: mantener Leaflet funcional pero armonizar contenedores */
.leaflet-container{background:#dfe7ed!important;border-radius:var(--ui-radius)!important}
.map-workspace-card,.manual-location-map-card,.prospect-location-card{border-color:var(--ui-border)!important}

/* Scrollbars discretas en navegadores compatibles */
*{scrollbar-width:thin;scrollbar-color:var(--ui-border-strong) transparent}

/* Configuración visual */
.visual-settings-form{display:grid!important;grid-template-columns:minmax(0,1.05fr) minmax(300px,.95fr)!important;gap:18px!important;align-items:start!important}
.visual-settings-fields{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px 12px!important}
.visual-color-control{display:grid!important;grid-template-columns:56px 1fr!important;align-items:center!important;gap:8px!important}
.visual-color-control input[type="color"]{width:56px!important;height:42px!important;padding:4px!important;cursor:pointer!important}
.visual-color-control code{display:flex!important;align-items:center!important;min-height:42px!important;padding:0 10px!important;border:1px solid var(--ui-border)!important;border-radius:var(--ui-radius-sm)!important;background:var(--ui-surface-2)!important;color:var(--ui-muted)!important}
.visual-preview{overflow:hidden!important;border:1px solid var(--ui-border)!important;border-radius:var(--ui-radius)!important;background:var(--ui-bg)!important;box-shadow:var(--ui-shadow)!important}
.visual-preview-top{min-height:44px!important;padding:8px 12px!important;display:flex!important;align-items:center!important;gap:8px!important;background:var(--ui-header)!important;color:var(--ui-header-text)!important}
.visual-preview-top span{width:10px!important;height:10px!important;border-radius:50%!important;background:var(--ui-accent)!important}
.visual-preview-top strong{color:inherit!important}
.visual-preview-body{padding:16px!important}
.visual-preview-card{display:grid!important;gap:7px!important;padding:14px!important;border:1px solid var(--ui-border)!important;border-radius:var(--ui-radius)!important;background:var(--ui-surface)!important;color:var(--ui-text)!important}
.visual-preview-card small{display:block!important}
.visual-preview-card>div{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important}
.visual-settings-form>.form-actions{grid-column:1/-1!important;margin-top:0!important}

/* Tema oscuro: neutralizar algunos fondos históricos muy claros sin tocar gráficos/mapas */
body[data-theme="graphite"] .last-visit.no-visit,
body[data-theme="graphite"] .route-analysis-summary,
body[data-theme="graphite"] .route-suggestion-reason,
body[data-theme="graphite"] .route-auto-note-box,
body[data-theme="graphite"] .business-card-placeholder,
body[data-theme="graphite"] .manual-osm-result{background:var(--ui-surface-2)!important;color:var(--ui-text)!important;border-color:var(--ui-border)!important}
body[data-theme="graphite"] .leaflet-popup-content-wrapper,
body[data-theme="graphite"] .leaflet-popup-tip{background:#1c2430!important;color:#edf2f7!important}
@media(prefers-color-scheme:dark){
 body[data-theme="system"] .leaflet-popup-content-wrapper,body[data-theme="system"] .leaflet-popup-tip{background:#1c2430!important;color:#edf2f7!important}
}

/* Accesibilidad */
:focus-visible{outline:3px solid color-mix(in srgb,var(--ui-accent) 55%,transparent)!important;outline-offset:2px!important}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

@media(max-width:899px){
 .visual-settings-form{grid-template-columns:1fr!important}
 .visual-settings-form>.form-actions{grid-column:auto!important}
}
@media(max-width:649px){
 :root{--ui-card-pad:13px;--ui-radius:11px}
 .container{width:100%!important;padding-left:11px!important;padding-right:11px!important}
 .visual-settings-fields{grid-template-columns:1fr!important}
 .topbar{padding-top:8px!important;padding-bottom:8px!important}
}


/* ===========================================================
   V41.9.1 - Visitas usa el mismo shell visual que Clientes
   =========================================================== */
@media(min-width:650px){
  .v419-visits-shell{
    display:grid!important;
    grid-template-columns:26% minmax(0,74%)!important;
    gap:12px!important;
    width:100%!important;
    height:calc(100vh - 116px)!important;
    min-height:560px!important;
    overflow:hidden!important;
    align-items:stretch!important;
    box-sizing:border-box!important;
  }
  .v419-visits-shell>.v402-visits-sidebar{
    position:static!important;
    float:none!important;
    left:auto!important;
    grid-column:1!important;
    width:100%!important;
    max-width:none!important;
    height:100%!important;
    min-height:0!important;
    margin:0!important;
    overflow:hidden!important;
    box-sizing:border-box!important;
  }
  .v419-visits-shell>.v402-visits-sidebar .v402-sidebar-scroll{
    position:static!important;
    top:auto!important;
    width:100%!important;
    height:100%!important;
    max-height:none!important;
    padding:0 4px 14px 0!important;
    overflow-y:auto!important;
    overflow-x:visible!important;
    overscroll-behavior:contain!important;
    box-sizing:border-box!important;
  }
  .v419-visits-shell>.v402-visits-main{
    position:static!important;
    grid-column:2!important;
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    height:100%!important;
    min-height:0!important;
    margin:0!important;
    padding:0 4px 110px 0!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    overscroll-behavior:contain!important;
    box-sizing:border-box!important;
  }
  .v419-visits-shell>.v402-mobile-visits-filters{display:none!important}
}
@media(min-width:650px) and (max-width:1050px){
  .v419-visits-shell{
    grid-template-columns:32% minmax(0,68%)!important;
  }
}
@media(max-width:649px){
  .v419-visits-shell{
    display:block!important;
    width:100%!important;
    min-width:0!important;
  }
  .v419-visits-shell>.v402-visits-main{
    width:100%!important;
    margin:0!important;
    padding:0!important;
  }
}

/* Apariencia: siempre reconocible al entrar en configuración. */
.visual-settings-card{
  border-top:3px solid var(--ui-accent)!important;
}
.v4182-settings-grid>.visual-settings-card{
  grid-column:1 / -1!important;
}


/* ===========================================================
   V50 - Perfil tecnológico / maquinaria
   Usa las variables del sistema visual V41.9, compatible con todos los themes.
   =========================================================== */
.technology-tags{
  display:flex!important;
  align-items:center!important;
  flex-wrap:wrap!important;
  gap:5px!important;
  margin:5px 0!important;
  min-width:0!important;
}
.tech-tag{
  display:inline-flex!important;
  align-items:center!important;
  min-height:21px!important;
  max-width:100%!important;
  padding:2px 7px!important;
  border:1px solid color-mix(in srgb,var(--ui-accent) 30%,var(--ui-border))!important;
  border-radius:999px!important;
  background:color-mix(in srgb,var(--ui-accent) 8%,var(--ui-surface))!important;
  color:color-mix(in srgb,var(--ui-accent) 66%,var(--ui-text))!important;
  font-size:.67rem!important;
  line-height:1.15!important;
  font-weight:850!important;
  letter-spacing:.02em!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
}
.tech-tag.class-tag{
  background:var(--ui-text)!important;
  color:var(--ui-surface)!important;
  border-color:var(--ui-text)!important;
}
.technology-tags-large .tech-tag{
  min-height:25px!important;
  padding:3px 9px!important;
  font-size:.75rem!important;
}
.client-card .technology-tags,
.visit-card .technology-tags{
  margin:3px 0 5px!important;
}
.client-card .tech-tag,
.visit-card .tech-tag{
  min-height:19px!important;
  padding:2px 6px!important;
  font-size:.63rem!important;
}

.technology-score-list{display:grid!important;gap:8px!important;margin-top:12px!important}
.technology-score-row{
  display:grid!important;
  grid-template-columns:minmax(130px,1fr) minmax(100px,1.5fr) auto!important;
  gap:9px!important;
  align-items:center!important;
  min-width:0!important;
}
.technology-score-row>div:first-child{display:grid!important;gap:2px!important;min-width:0!important}
.technology-score-row small{font-size:.71rem!important;overflow-wrap:anywhere!important}
.technology-score-meter{
  height:7px!important;
  background:var(--ui-surface-3)!important;
  border-radius:999px!important;
  overflow:hidden!important;
}
.technology-score-meter i{
  display:block!important;
  height:100%!important;
  background:var(--ui-accent)!important;
  border-radius:999px!important;
}
.technology-opportunities{
  margin-top:13px!important;
  padding:10px!important;
  border:1px solid color-mix(in srgb,#d97706 32%,var(--ui-border))!important;
  border-radius:var(--ui-radius-sm)!important;
  background:color-mix(in srgb,#f59e0b 7%,var(--ui-surface))!important;
}
.technology-opportunities p{margin:6px 0 0!important;font-size:.88rem!important}
.technology-manual-editor,.machine-add-editor{margin-top:12px!important}
.technology-manual-grid{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:14px!important;
  margin:10px 0!important;
}
.technology-manual-grid>div{display:grid!important;gap:5px!important;align-content:start!important}

.client-machinery-list{display:grid!important;gap:0!important}
.client-machine-row{
  display:grid!important;
  grid-template-columns:minmax(170px,1.4fr) minmax(120px,1fr) auto!important;
  gap:10px!important;
  align-items:center!important;
  min-width:0!important;
  padding:9px 0!important;
  border-bottom:1px solid var(--ui-border)!important;
}
.client-machine-row:last-child{border-bottom:0!important}
.client-machine-row.inactive{opacity:.58!important}
.client-machine-main{display:grid!important;gap:2px!important;min-width:0!important}
.client-machine-main strong,.client-machine-main small{overflow-wrap:anywhere!important}
.machine-actions{display:flex!important;gap:5px!important;align-items:center!important;flex-wrap:wrap!important}

.technology-rule-list{display:grid!important;gap:8px!important;margin-top:12px!important}
.technology-rule{
  border:1px solid var(--ui-border)!important;
  border-radius:var(--ui-radius-sm)!important;
  background:var(--ui-surface-2)!important;
}
.technology-rule>summary{
  display:flex!important;
  justify-content:space-between!important;
  align-items:center!important;
  gap:10px!important;
  padding:10px 12px!important;
  cursor:pointer!important;
}
.technology-rule-fields{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:10px!important;
  padding:0 12px 12px!important;
}
.technology-opportunity-rule,.technology-catalog-hits{grid-column:1/-1!important}
.technology-catalog-hits{
  display:grid!important;
  gap:3px!important;
  padding:8px!important;
  background:var(--ui-surface)!important;
  border-radius:8px!important;
  border:1px solid var(--ui-border)!important;
}
.visit-technology-tags{margin:3px 0 2px!important}

@media(max-width:649px){
  .technology-score-row{grid-template-columns:1fr auto!important}
  .technology-score-meter{grid-column:1/-1!important;grid-row:2!important}
  .technology-manual-grid,.technology-rule-fields{grid-template-columns:1fr!important}
  .client-machine-row{grid-template-columns:1fr!important}
  .machine-actions{justify-content:flex-start!important}
  .client-section-technology,.client-section-machinery{min-width:0!important;overflow:hidden!important}
}

.map-tech-tags{display:flex!important;flex-wrap:wrap!important;gap:3px!important;margin:4px 0!important}
.map-tech-tags span{display:inline-flex!important;padding:2px 5px!important;border-radius:999px!important;background:var(--ui-surface-3)!important;color:var(--ui-text)!important;font-size:.62rem!important;font-weight:800!important}


/* ============================================================
   V53.0 · Dashboard escritorio + navegación agrupada + correo usuario
   Añadido al final: no elimina reglas anteriores.
   ============================================================ */
.v53-nav-group{position:relative;margin:0}
.v53-nav-group>summary{list-style:none;cursor:pointer;position:relative;padding:7px 9px;border-radius:var(--ui-radius-sm);color:color-mix(in srgb,var(--ui-header-text) 86%,transparent);font-weight:560;white-space:nowrap;user-select:none}
.v53-nav-group>summary::-webkit-details-marker{display:none}
.v53-nav-group>summary:after{content:"⌄";font-size:.72rem;margin-left:5px;opacity:.72}
.v53-nav-group>summary:hover,.v53-nav-group[open]>summary,.v53-nav-group.active>summary{background:rgba(255,255,255,.09);color:var(--ui-header-text)}
.v53-nav-group.active>summary:before{content:"";position:absolute;left:9px;right:9px;bottom:2px;height:2px;border-radius:999px;background:var(--ui-accent)}
.v53-nav-popover{position:absolute;z-index:80;top:calc(100% + 7px);left:0;min-width:210px;padding:7px;background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow-raised);display:grid;gap:2px}
.v53-nav-group:not([open]) .v53-nav-popover{display:none}
.topbar nav .v53-nav-popover a{color:var(--ui-text)!important;padding:9px 10px!important;font-weight:650!important}
.topbar nav .v53-nav-popover a:hover,.topbar nav .v53-nav-popover a.active{background:var(--ui-surface-2)!important;color:var(--ui-text)!important}
.topbar nav .v53-nav-popover a.active:after{display:none!important}

.v53-dashboard-head{align-items:center}
.v53-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}
.v53-kpi{display:flex!important;flex-direction:column;justify-content:center;min-height:104px;text-decoration:none}
.v53-kpi-label{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.035em;color:var(--ui-muted)}
.v53-kpi strong{font-size:1.55rem!important;line-height:1.15;margin:5px 0;color:var(--ui-text)}
.v53-kpi small{font-size:.78rem;line-height:1.25;color:var(--ui-muted)}
.v53-dashboard-layout,.v53-dashboard-main,.v53-dashboard-side{display:grid;gap:14px}
.v53-chart-pair{display:grid;gap:14px}
.v53-chart-scroll{max-height:430px;overflow:auto;padding-right:4px}
.v53-agenda-list,.v53-side-list{display:grid}
.v53-agenda-row{display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 2px;border-bottom:1px solid var(--ui-border);text-decoration:none;color:var(--ui-text)}
.v53-agenda-row:last-child,.v53-side-row:last-child{border-bottom:0}
.v53-agenda-date{display:grid;text-align:center;border-radius:9px;background:var(--ui-surface-2);padding:6px}
.v53-agenda-date strong{font-size:1.2rem;line-height:1}.v53-agenda-date small{font-size:.67rem}
.v53-agenda-main{display:grid;min-width:0}.v53-agenda-main strong,.v53-agenda-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v53-side-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--ui-border);text-decoration:none;color:var(--ui-text)}
.v53-side-row>span:first-child{display:grid;min-width:0}.v53-side-row strong,.v53-side-row small{overflow:hidden;text-overflow:ellipsis}
.v53-side-row time,.v53-mail-ratio{font-size:.8rem;font-weight:800;white-space:nowrap;color:var(--ui-muted)}
.v53-mail-summary{display:flex;align-items:baseline;gap:8px;padding:8px 0 10px;border-bottom:1px solid var(--ui-border)}
.v53-mail-summary>strong{font-size:1.8rem}.v53-mail-summary>span{font-size:.8rem;color:var(--ui-muted)}
.v53-quick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.v53-quick-grid a{display:flex;align-items:center;gap:7px;padding:10px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:var(--ui-surface-2);text-decoration:none;color:var(--ui-text);font-weight:750}
.v53-quick-grid a:hover{border-color:var(--ui-accent)}

.v53-menu-grid{display:grid;gap:14px}.v53-menu-section h2{margin-top:0}
.v53-menu-links{display:grid;gap:8px}.v53-menu-links>a{display:grid;grid-template-columns:34px minmax(0,1fr);column-gap:9px;padding:11px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);text-decoration:none;color:var(--ui-text);background:var(--ui-surface-2)}
.v53-menu-links>a>span{grid-row:1/3;font-size:1.2rem}.v53-menu-links>a>strong{align-self:end}.v53-menu-links>a>small{align-self:start}.v53-menu-links>a:hover{border-color:var(--ui-accent)}

.v53-mail-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}.v53-mail-kpis .stat strong{font-size:1.55rem}.v53-mail-filter{display:grid;grid-template-columns:1fr;gap:8px}
.v53-campaign-grid{display:grid;gap:8px}.v53-campaign-card{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:var(--ui-surface-2);text-decoration:none;color:var(--ui-text)}
.v53-campaign-card>span:first-child{display:grid;min-width:0}.v53-campaign-card>span:first-child strong,.v53-campaign-card>span:first-child small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v53-campaign-count{display:grid;text-align:right}.v53-campaign-count strong{font-size:1.1rem}

@media(min-width:650px){
  .v53-desktop-nav{overflow:visible!important}
  .v53-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
  .v53-mail-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
  .v53-mail-filter{grid-template-columns:minmax(220px,1.4fr) minmax(180px,.8fr) minmax(260px,1.2fr) auto auto;align-items:end}
  .v53-menu-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:1050px){
  .v53-kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
  .v53-kpi{min-height:116px}
  .v53-dashboard-layout{grid-template-columns:minmax(0,2.15fr) minmax(300px,.85fr);gap:18px;align-items:start}
  .v53-dashboard-side{position:sticky;top:76px}
  .v53-chart-pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
  .v53-menu-grid{grid-template-columns:repeat(2,minmax(340px,1fr));gap:18px}
}
@media(max-width:649px){
  .v53-desktop-nav{display:none!important}
  .v53-dashboard-actions .btn:nth-child(2){display:none}
  .v53-agenda-row{grid-template-columns:48px minmax(0,1fr)}
  .v53-agenda-row>.badge{grid-column:2;justify-self:start}
  .v53-chart-scroll{max-height:none}
}

/* ============================================================
   V53.1 · Fix de capas en navegación desplegable
   Mantiene los estilos V53 y eleva únicamente la cabecera/menús
   sobre tarjetas, tablas y barras sticky del contenido.
   ============================================================ */
@media(min-width:650px){
  .topbar{z-index:1000!important;overflow:visible!important}
  .v53-desktop-nav{position:relative!important;z-index:1010!important;overflow:visible!important}
  .v53-nav-group{z-index:1010!important}
  .v53-nav-group[open]{z-index:1020!important}
  .v53-nav-popover{z-index:1030!important}
}

/* ============================================================
   V54.0 · Campañas comerciales
   Añadido al final: no elimina ni sustituye reglas anteriores.
   ============================================================ */
.v54-compose-layout{display:grid;gap:16px;align-items:start}
.v54-campaign-form{display:grid;gap:14px}
.v54-campaign-form>label,.v54-document-box>label{display:grid;gap:6px;font-weight:700}
.v54-campaign-form textarea{min-height:230px;resize:vertical}
.v54-form-grid{display:grid;grid-template-columns:1fr;gap:12px}
.v54-document-box{display:grid;gap:10px;padding:14px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:var(--ui-surface-2)}
.v54-document-box p{margin:3px 0 0}
.v54-signature-check{display:flex!important;align-items:center;gap:8px!important}
.v54-send-actions{margin-top:2px;flex-wrap:wrap}
.v54-compose-side{display:grid;gap:14px}
.v54-recipient-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}
.v54-recipient-summary>span{display:grid;padding:10px;border-radius:var(--ui-radius-sm);background:var(--ui-surface-2);text-align:center}
.v54-recipient-summary strong{font-size:1.25rem}.v54-recipient-summary small{color:var(--ui-muted)}
.v54-recipient-list{display:grid;max-height:430px;overflow:auto}
.v54-recipient-list>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 1px;border-bottom:1px solid var(--ui-border)}
.v54-recipient-list>div:last-child{border-bottom:0}.v54-recipient-list>div>span:first-child{display:grid;min-width:0}.v54-recipient-list strong,.v54-recipient-list small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v54-campaign-filter{display:grid;grid-template-columns:1fr;gap:8px}
.v54-campaign-list{display:grid;gap:10px;margin-top:14px}
.v54-campaign-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;text-decoration:none;color:var(--ui-text)}
.v54-campaign-row:hover{border-color:var(--ui-accent)}
.v54-campaign-main{display:grid;gap:3px;min-width:0}.v54-campaign-main strong{font-size:1.05rem}.v54-campaign-main small{color:var(--ui-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v54-campaign-date{font-size:.75rem;font-weight:800;color:var(--ui-muted)}
.v54-campaign-metrics{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.v54-campaign-metrics>span{display:grid;padding:8px;border-radius:var(--ui-radius-sm);background:var(--ui-surface-2)}.v54-campaign-metrics strong{font-size:1.05rem}.v54-campaign-metrics small{font-size:.72rem;color:var(--ui-muted)}
.v54-metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}.v54-metric-grid .stat strong{font-size:1.5rem}.v54-metric-grid .stat small{color:var(--ui-muted)}
.v54-campaign-summary{margin-bottom:14px}.v54-campaign-dl{display:grid;grid-template-columns:1fr;gap:0;margin:0 0 12px}.v54-campaign-dl>div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px;padding:8px 0;border-bottom:1px solid var(--ui-border)}.v54-campaign-dl dt{font-weight:800;color:var(--ui-muted)}.v54-campaign-dl dd{margin:0;overflow-wrap:anywhere}
.v54-message-preview{white-space:pre-wrap;margin-top:10px;padding:14px;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:var(--ui-surface-2);line-height:1.5}

@media(min-width:650px){
  .v54-form-grid{grid-template-columns:minmax(0,1.4fr) minmax(180px,.6fr)}
  .v54-campaign-filter{grid-template-columns:minmax(260px,1fr) minmax(180px,.45fr) auto auto;align-items:end}
  .v54-campaign-row{grid-template-columns:minmax(260px,1.5fr) minmax(330px,1fr) auto}
  .v54-campaign-metrics{grid-column:auto;grid-template-columns:repeat(auto-fit,minmax(72px,1fr))}
  .v54-metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .v54-campaign-dl{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px}
}
@media(min-width:1050px){
  .v54-compose-layout{grid-template-columns:minmax(0,1.7fr) minmax(320px,.8fr);gap:18px}
  .v54-compose-side{position:sticky;top:76px}
  .v54-metric-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
}
@media(max-width:649px){
  .v54-campaign-row{grid-template-columns:minmax(0,1fr) auto}
  .v54-campaign-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .v54-recipient-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:649px){
  .mobile-page-actions-content .v54-mobile-select{display:flex!important;align-items:center;gap:7px;width:100%;padding-top:6px}
  .mobile-page-actions-content #mobile-selected-count{display:block;width:100%}
  .mobile-page-actions-content #mobile-email-btn,.mobile-page-actions-content #mobile-campaign-btn{width:100%}
}

/* ===========================================================
   V55 - tareas en ficha + tarjetas escaneadas
   Se añade al final para no alterar reglas históricas.
   =========================================================== */

/* La tarjeta de tarea de la ficha no usa checkbox ni el grid del listado general. */
.client-section-tasks .task-card{
  display:block!important;
  grid-template-columns:none!important;
  overflow:visible!important;
  padding:12px 13px!important;
  margin:10px 0!important;
  border:1px solid var(--ui-border)!important;
  border-radius:var(--ui-radius-sm)!important;
  min-width:0!important;
}
.client-section-tasks .task-card>strong,
.client-section-tasks .task-card>.muted,
.client-section-tasks .task-card>.multiline,
.client-section-tasks .task-card>.btn{
  display:block;
  max-width:100%;
  min-width:0;
  grid-column:auto!important;
}
.client-section-tasks .task-card .multiline{
  white-space:pre-wrap!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important;
  line-height:1.45!important;
  margin:8px 0 10px!important;
}
.client-section-tasks .task-card>.btn{display:inline-flex!important;width:auto!important}

/* Archivo de tarjetas: prioriza imagen completa y datos legibles. */
.v55-card-browser{grid-template-columns:minmax(0,1fr)!important;gap:12px!important}
.v55-business-card-row{
  grid-template-columns:44px minmax(190px,260px) minmax(0,1fr) auto!important;
  align-items:stretch!important;
  min-height:150px!important;
  padding:12px 14px 12px 0!important;
}
.v55-business-card-thumb{display:flex!important;align-items:center!important;justify-content:center!important;min-width:0!important}
.v55-business-card-thumb .business-card-thumb-wrap{width:100%!important;height:100%!important;min-height:126px!important;display:flex!important;align-items:center!important;justify-content:center!important;background:color-mix(in srgb,var(--ui-surface) 82%,var(--ui-bg))!important;border:1px solid var(--ui-border)!important;border-radius:12px!important;padding:7px!important;box-sizing:border-box!important}
.v55-business-card-thumb img,
.business-card-row .business-card-thumb img{
  width:100%!important;
  height:126px!important;
  object-fit:contain!important;
  object-position:center!important;
  background:#fff!important;
  border-radius:8px!important;
}
.v55-card-summary{display:flex!important;flex-direction:column!important;justify-content:center!important;gap:6px!important;padding:4px 2px!important;overflow:visible!important;white-space:normal!important}
.v55-card-summary-head{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;min-width:0}
.v55-card-summary-head>div{min-width:0}
.v55-card-summary-head strong{display:block;font-size:1.08rem;line-height:1.25;overflow-wrap:anywhere}
.v55-card-company{display:block;margin-top:3px;font-weight:650;color:var(--ui-text);overflow-wrap:anywhere}
.v55-card-role{font-size:.92rem;color:var(--ui-muted);font-style:italic}
.v55-card-contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 14px;font-size:.9rem;min-width:0}
.v55-card-contact-grid span,.v55-card-contact-grid a{min-width:0;overflow-wrap:anywhere;word-break:break-word;white-space:normal!important}
.v55-card-address{font-size:.88rem;color:var(--ui-muted);overflow-wrap:anywhere;line-height:1.35}
.v55-card-notes{font-size:.86rem;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-two-sides{z-index:2}

/* Editor/escáner: la previsualización nunca recorta visualmente. */
.business-card-photo .card-side-panel{min-width:0}
.business-card-photo .card-side-panel>img{
  display:block;
  width:100%!important;
  max-width:100%!important;
  height:auto!important;
  max-height:420px!important;
  object-fit:contain!important;
  object-position:center!important;
  background:#fff!important;
  border:1px solid var(--ui-border)!important;
  border-radius:12px!important;
  box-shadow:0 8px 22px rgba(15,23,42,.08)!important;
}
.card-camera-controls{display:flex!important;align-items:center!important;gap:8px!important;flex-wrap:wrap!important}
.card-scan-status{flex:1 1 180px;font-size:.82rem;line-height:1.3}
.card-ocr-controls{margin-top:12px!important;padding-top:12px!important;border-top:1px solid var(--ui-border)!important}

@media(max-width:900px){
  .v55-business-card-row{grid-template-columns:40px 150px minmax(0,1fr)!important;min-height:130px!important}
  .v55-business-card-row>.btn{grid-column:2 / 4!important;justify-self:start!important}
  .v55-business-card-thumb img,.business-card-row .business-card-thumb img{height:100px!important}
  .v55-business-card-thumb .business-card-thumb-wrap{min-height:112px!important}
  .v55-card-contact-grid{grid-template-columns:1fr!important}
}
@media(max-width:649px){
  .v55-business-card-row{grid-template-columns:34px 112px minmax(0,1fr)!important;gap:8px!important;padding-right:9px!important}
  .v55-business-card-thumb img,.business-card-row .business-card-thumb img{height:76px!important}
  .v55-business-card-thumb .business-card-thumb-wrap{min-height:90px!important;padding:5px!important}
  .v55-card-summary{gap:4px!important}
  .v55-card-summary-head strong{font-size:1rem}
  .v55-card-company,.v55-card-role,.v55-card-contact-grid,.v55-card-address{font-size:.82rem}
  .v55-card-notes{display:none}
  .client-section-tasks .task-card{padding:11px!important}
}

/* ===========================================================
   V55 - gestión de retención de seguimiento/campañas
   =========================================================== */
.v55-tracking-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}.v55-tracking-toolbar .muted{margin-right:auto}.v55-check-col{width:34px}.v55-track-batch-row{display:grid;grid-template-columns:34px minmax(0,1fr);gap:7px;align-items:stretch}.v55-track-check,.v55-campaign-check{display:flex;align-items:center;justify-content:center}.v55-track-check input,.v55-campaign-check input,.v55-recipient-check,#v55-recipients-select-all,#v55-batches-select-all,#v55-campaigns-select-all{width:18px;height:18px}.v55-track-batch-row .v53-campaign-card{margin:0}.v55-campaign-selection{margin-bottom:12px}.v55-retention-note{margin:0}.v55-campaign-select-row{display:grid!important;grid-template-columns:38px minmax(0,1fr)!important;gap:8px!important;padding-left:8px!important}.v55-campaign-row-link{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(420px,1fr) auto;gap:14px;align-items:center;text-decoration:none;color:inherit;min-width:0}.v55-delete-document{margin-top:14px;padding-top:12px;border-top:1px solid var(--ui-border);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
@media(max-width:900px){.v55-campaign-row-link{grid-template-columns:minmax(0,1fr);gap:10px}.v55-campaign-row-link>.badge{justify-self:start}.v55-tracking-toolbar .muted{width:100%;margin-right:0}}
@media(max-width:649px){.v55-tracking-toolbar{align-items:stretch}.v55-tracking-toolbar .btn{width:100%}.v55-campaign-select-row{grid-template-columns:30px minmax(0,1fr)!important}.v55-track-batch-row{grid-template-columns:30px minmax(0,1fr)}}

/* ===========================================================
   V56 - correo CRM, tarjetas de rutas y ajustes de visitas
   Se añade al final para conservar íntegro el CSS anterior.
   =========================================================== */

/* Google por lotes: selector de candidato claramente pulsable. */
.google-batch-candidate>input[type="radio"]{
  width:26px!important;
  height:26px!important;
  min-width:26px!important;
  min-height:26px!important;
  margin:2px 4px 0 0!important;
  cursor:pointer!important;
  align-self:start!important;
}
.google-batch-candidate{align-items:start!important}

/* Rutas guardadas: perfil tecnológico + acción de quitar sin abrir el mapa. */
@media(min-width:650px){
  .saved-route-client{
    grid-template-columns:34px minmax(0,1fr) auto!important;
    gap:10px!important;
  }
  .v56-route-client-actions{
    display:flex!important;
    align-items:flex-start!important;
    justify-content:flex-end!important;
    padding-top:2px!important;
  }
  .v56-route-client-actions .btn{white-space:nowrap!important}
}
.v56-route-technology-tags{margin:7px 0 5px!important}
.v56-route-technology-tags .tech-tag{font-size:.74rem!important}

/* Visitas: estado del correo de visita e iconos de orden solo en móvil. */
.v56-visit-mail-state-sent{border-color:#b8d8ff!important;background:#eef6ff!important}
.v56-visit-mail-state-opened{border-color:#b7dfc6!important;background:#edf9f1!important}
.v56-visit-mail-state-none:disabled{opacity:.48!important}
@media(min-width:650px){
  .v56-mobile-reorder{display:none!important}
}
@media(max-width:649px){
  .v56-mobile-reorder{display:flex!important}
}

/* Administración: permisos de correo CRM por usuario. */
.v56-mail-permissions-info{margin-bottom:14px!important}
.v56-mail-permission{align-self:center!important;min-width:0!important}
@media(min-width:1100px){
  .user-edit-form{
    grid-template-columns:90px minmax(130px,1fr) minmax(190px,1.4fr) 130px auto auto auto auto!important;
  }
}

/* Ficha cliente: historial Outlook y compositor individual. */
.v56-client-mail-addresses{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 12px}
.v56-mail-history-list{display:grid;gap:9px}
.v56-mail-history-item{
  border:1px solid var(--ui-border,#dfe4e9);
  border-radius:10px;
  padding:10px;
  background:var(--ui-surface,#fff);
  min-width:0;
}
.v56-mail-history-item.sent{border-left:4px solid #3b82f6}
.v56-mail-history-item.received{border-left:4px solid #16a34a}
.v56-mail-history-top{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:5px}
.v56-mail-history-subject{display:block;overflow-wrap:anywhere}
.v56-mail-preview{margin:7px 0;font-size:.9rem;line-height:1.42;white-space:pre-wrap;overflow-wrap:anywhere}
.v56-mail-opened{background:#e9f7ee!important;color:#226b3e!important}
.v56-mail-unopened{background:#f2f4f7!important;color:#5d6670!important}
.v56-mail-history-warning{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}
.v56-mail-dialog{border:0;padding:0;background:transparent;max-width:none;max-height:none}
.v56-mail-dialog::backdrop{background:rgba(15,23,42,.45)}
.v56-mail-dialog-card{width:min(760px,92vw);max-height:88vh;overflow:auto;margin:0}
@media(max-width:649px){
  .v56-mail-dialog-card{width:94vw;max-height:90vh;padding:12px!important}
  .client-section-mail .section-head{align-items:flex-start!important}
}

/* ========================================================================== */
/* V56.1.2 · ciclos de visita, jornadas, gastos y multimedia                 */
/* Reglas añadidas al final: el CSS previo V56.1.1 permanece intacto.        */
/* ========================================================================== */

.v5612-frequency-form{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.v5612-frequency-form input{width:92px;max-width:100%}
.v5612-frequency-overdue{font-weight:800}
.v5612-frequency-due{font-weight:700}
.v5612-frequency-early{opacity:.85}

.v5612-visit-notes-scroll{max-height:360px;overflow:auto;padding-right:4px;overscroll-behavior:contain}
.v5612-visit-note{border:1px solid var(--border,#d9dee8);border-radius:10px;padding:9px 11px;margin-bottom:8px;background:var(--surface,#fff)}
.v5612-visit-note summary{cursor:pointer;list-style-position:outside}
.v5612-visit-note[open] summary{margin-bottom:8px}
.v5612-visit-note p{margin:6px 0 8px}

.v5612-media-upload-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px}
.v5612-media-upload{border:1px dashed var(--border,#d9dee8);border-radius:10px;padding:10px;min-width:0}
.v5612-media-upload label{display:grid;gap:6px;min-width:0}
.v5612-media-upload input[type=file]{max-width:100%;min-width:0}
.v5612-media-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-bottom:18px}
.v5612-media-gallery article{min-width:0;border:1px solid var(--border,#d9dee8);border-radius:10px;padding:8px;display:grid;gap:7px;align-content:start}
.v5612-media-gallery img{width:100%;height:145px;object-fit:cover;border-radius:8px;display:block;background:#111}
.v5612-media-gallery small{overflow-wrap:anywhere}
.v5612-media-documents .list-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.v5612-media-documents .list-row>a{min-width:0;overflow-wrap:anywhere}

.v5612-journey-list{display:grid;gap:10px}
.v5612-journey-card{display:flex;align-items:center;justify-content:space-between;gap:12px;text-decoration:none}
.v5612-journey-card>div:first-child{display:grid;gap:3px}
.v5612-journey-card>div:last-child{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.v5612-journey-visits{display:grid;gap:8px}
.v5612-journey-visit{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start;border-bottom:1px solid var(--border,#d9dee8);padding:10px 0}
.v5612-journey-visit:last-child{border-bottom:0}
.v5612-journey-visit>div:nth-child(2){display:grid;gap:4px}
.v5612-journey-order{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-weight:800;border:1px solid var(--border,#d9dee8)}
.v5612-generate-journey{align-items:end}
.v5612-generated-links{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}

.v5612-expense-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0}
.v5612-expense-summary .card{display:grid;gap:4px;padding:12px}
.v5612-expense-summary strong{font-size:1.2rem}
.v5612-expense-list{display:grid;gap:8px}
.v5612-expense-row{display:grid;grid-template-columns:minmax(140px,.9fr) minmax(220px,2fr) auto auto;gap:14px;align-items:center;border-bottom:1px solid var(--border,#d9dee8);padding:11px 0}
.v5612-expense-row:last-child{border-bottom:0}
.v5612-expense-date{display:grid;gap:3px}
.v5612-expense-amount{font-size:1.1rem;white-space:nowrap;text-align:right}
.v5612-expense-photo-panel{display:grid;gap:10px;margin-top:8px}
.v5612-expense-preview{display:block;max-width:min(100%,520px);max-height:520px;object-fit:contain;border-radius:10px;border:1px solid var(--border,#d9dee8);background:#111}
.v5612-expense-description-required textarea{outline:1px solid currentColor}
.v5612-pick-origin{cursor:crosshair!important}

@media(max-width:649px){
  /* V56.1.2: Safari/Chrome móvil pueden imponer un ancho intrínseco grande
     a los controles de fecha. Los limitamos al contenedor en toda la app. */
  input[type="date"],input[type="datetime-local"],input[type="month"],input[type="time"]{
    display:block!important;width:100%!important;max-width:100%!important;min-width:0!important;
    box-sizing:border-box!important;-webkit-appearance:none;appearance:none;
  }
  .form label,.filters label,.grid-2>* ,.compact-grid>* ,.toolbar-form>*{
    min-width:0!important;max-width:100%!important;
  }
  .grid-2,.compact-grid,.form-grid{min-width:0!important}

  .v5612-media-upload-grid{grid-template-columns:1fr}
  .v5612-media-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
  .v5612-media-gallery img{height:125px}
  .v5612-visit-notes-scroll{max-height:330px}
  .v5612-journey-card{align-items:flex-start;flex-direction:column}
  .v5612-journey-card>div:last-child{justify-content:flex-start}
  .v5612-journey-visit{grid-template-columns:auto minmax(0,1fr)}
  .v5612-journey-visit>.actions{grid-column:2;justify-content:flex-start}
  .v5612-expense-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .v5612-expense-row{grid-template-columns:1fr auto;gap:8px 12px;align-items:start}
  .v5612-expense-row>div:nth-child(2){grid-column:1/-1}
  .v5612-expense-row>.actions{grid-column:1/-1;justify-content:flex-start}
  .v5612-expense-amount{grid-column:2;grid-row:1;text-align:right}
}


/* ========================================================================== */
/* V56.1.3 · correcciones móvil, orden ficha y estados rápidos de visitas      */
/* El CSS anterior permanece intacto; estas reglas se añaden exclusivamente.  */
/* ========================================================================== */

/* Desplegable de notas de visita: marcador propio siempre visible dentro. */
.v5612-visit-note>summary{
  display:flex!important;align-items:flex-start!important;gap:10px!important;
  width:100%!important;min-width:0!important;box-sizing:border-box!important;
  list-style:none!important;overflow:visible!important;
}
.v5612-visit-note>summary::-webkit-details-marker{display:none!important}
.v5613-visit-note-heading{min-width:0!important;overflow-wrap:anywhere!important;flex:1 1 auto!important}
.v5613-visit-note-toggle{
  flex:0 0 30px!important;width:30px!important;height:30px!important;
  border:1px solid var(--ui-border-strong,#cbd3dc)!important;border-radius:8px!important;
  display:grid!important;place-items:center!important;font-size:1.15rem!important;
  line-height:1!important;margin-top:-3px!important;background:var(--ui-surface-2,#f7f9fb)!important;
}
.v5613-visit-note-toggle::before{content:"⌄"}
.v5612-visit-note:not([open]) .v5613-visit-note-toggle::before{content:"›"}

/* Selector de archivos robusto en iOS/Android: el input real cubre el botón. */
.v5613-media-upload{display:grid!important;gap:9px!important;align-content:start!important}
.v5613-file-picker{
  position:relative!important;overflow:hidden!important;display:flex!important;
  align-items:center!important;justify-content:center!important;width:100%!important;
  min-width:0!important;box-sizing:border-box!important;cursor:pointer!important;
}
.v5613-file-picker .v5613-file-input{
  position:absolute!important;inset:0!important;width:100%!important;height:100%!important;
  min-height:100%!important;max-width:none!important;opacity:0!important;cursor:pointer!important;
  z-index:3!important;padding:0!important;margin:0!important;border:0!important;
}
.v5613-file-selection{display:block!important;min-height:1.25em!important;overflow-wrap:anywhere!important}
.v5613-upload-submit:disabled{opacity:.55!important;cursor:not-allowed!important}

/* Estado rápido de visita. */
.v5613-visit-status-form{margin:0!important;min-width:0!important}
.v5613-visit-status-select{
  width:auto!important;max-width:170px!important;min-width:120px!important;
  min-height:36px!important;height:36px!important;padding:5px 28px 5px 9px!important;
  font-size:.78rem!important;font-weight:750!important;
}
.badge.abierta{background:#fff0d4!important}
.badge.realizada{background:#e5f4e8!important}
.badge.no-estaba{background:#fee2e2!important}
.badge.volver-a-pasar{background:#e8e7ff!important}

@media(max-width:649px){
  /* En móvil las dos columnas de escritorio se convierten en una secuencia única. */
  .client-detail-independent-shell{display:flex!important;flex-direction:column!important;gap:14px!important}
  .client-detail-independent-column{display:contents!important}
  .client-detail-independent-shell>section,
  .client-detail-independent-column>section{width:100%!important;max-width:100%!important;min-width:0!important}

  /* Orden comercial solicitado en ficha de cliente móvil. */
  .client-section-data{order:10!important}
  .client-section-addresses{order:20!important}
  .client-section-contacts{order:30!important}
  .client-section-mail{order:40!important}
  .client-section-hours{order:50!important}
  .client-section-technology{order:60!important}
  .client-section-machinery{order:70!important}
  .client-section-notes{order:80!important}
  .client-section-visit-notes{order:81!important}
  .client-section-auto-note{order:82!important}
  .client-section-tasks{order:90!important}
  .client-section-visits{order:100!important}
  .client-section-multimedia{order:110!important}
  .admin-client-card{order:190!important}

  .v5612-visit-note{overflow:visible!important;padding:9px 9px 9px 11px!important}
  .v5613-visit-note-toggle{flex-basis:34px!important;width:34px!important;height:34px!important;margin-right:0!important}
  .v5613-file-picker{min-height:48px!important;font-size:.95rem!important}
  .v5613-visit-status-form{flex:1 1 100%!important;width:100%!important}
  .v5613-visit-status-select{width:100%!important;max-width:100%!important;min-width:0!important;height:42px!important;min-height:42px!important;font-size:.9rem!important}
}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}


/* ========================================================================== */
/* V56.1.4 · carga móvil usando el patrón nativo probado de Tarjetas          */
/* ========================================================================== */

/* El input REAL ocupa todo el botón, igual que en el capturador de tarjetas
   que ya funcionaba correctamente en móvil. No se usa display:none ni un
   botón que dependa de input.click(). */
.v5614-native-file-label{
  position:relative!important;
  overflow:hidden!important;
  cursor:pointer!important;
  touch-action:manipulation!important;
  -webkit-tap-highlight-color:transparent;
  min-width:0!important;
  box-sizing:border-box!important;
}
.v5614-native-file-label>.v5614-native-file-input{
  position:absolute!important;
  inset:0!important;
  display:block!important;
  width:100%!important;
  height:100%!important;
  min-width:100%!important;
  min-height:100%!important;
  max-width:none!important;
  max-height:none!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  opacity:.001!important;
  z-index:10!important;
  cursor:pointer!important;
  font-size:100px!important;
}
.v5614-media-upload{display:grid!important;gap:9px!important;align-content:start!important}
.v5614-native-upload-actions{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;min-width:0}
.v5614-native-upload-actions>.btn{flex:1 1 180px;min-width:0}
.v5614-file-selection{display:block;min-height:1.25em;overflow-wrap:anywhere}
.v5614-expense-photo-label{width:min(100%,420px)!important;min-height:44px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important}
.v5614-expense-filter-actions{display:flex!important;gap:8px!important;align-items:center!important;margin-top:8px!important}

@media(max-width:649px){
  .v5614-native-file-label{width:100%!important;min-height:48px!important;display:flex!important;align-items:center!important;justify-content:center!important}
  .v5614-native-upload-actions{display:grid!important;grid-template-columns:1fr!important;gap:8px!important;width:100%!important}
  .v5614-native-upload-actions>.btn{width:100%!important;min-height:48px!important}
  .v5614-expense-filter-actions{
    grid-column:1/-1!important;
    width:100%!important;
    margin-top:12px!important;
    padding-top:4px!important;
    gap:10px!important;
  }
  .v5614-expense-filter-actions>.btn{flex:1 1 0!important;min-width:0!important}
}

.v5614-expense-upload-actions{width:min(100%,720px)!important}
.v5614-expense-upload-actions>.v5614-expense-photo-label{flex:1 1 220px!important}

/* V56.2 · preview editable del informe de gastos */
.v562-expense-report-dialog{width:min(780px,92vw);max-height:88vh;overflow:auto;margin:0}
.v562-expense-attachments{display:grid;gap:7px;padding:12px;border:1px solid var(--ui-border,#d9dee8);border-radius:var(--ui-radius-sm,10px);background:var(--ui-surface-2,#f7f8fa)}
.v562-expense-attachments span{display:block;line-height:1.4}
#expense-report-body{white-space:pre-wrap}
@media (max-width:720px){.v562-expense-report-dialog{width:94vw;max-height:90vh}}

/* V56.3 · análisis de posibles visitas desde Clientes */
.v563-client-analysis-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}
.v563-client-analysis-bar>div{display:flex;flex-direction:column;gap:4px}
.v563-analysis-summary{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.client-card.v563-client-suggested{box-shadow:inset 4px 0 0 var(--primary,#2563eb)}
.client-card.v563-client-excluded{opacity:.78}
.v563-client-suggestion-reason{margin-top:8px;padding:8px 10px;border-radius:8px;background:rgba(127,127,127,.09);font-size:.9rem;line-height:1.35}
@media(max-width:800px){.v563-client-suggestion-reason{font-size:.85rem}}

/* V56.5 - simulador de financiación */
.financing-card{max-width:760px}
.financing-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}
.financing-form>label{min-width:0}
.financing-amount-field{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;margin-top:6px}
.financing-amount-field input{margin:0;border-radius:9px 0 0 9px;font-size:1.05rem;font-weight:700}
.financing-amount-field span{display:flex;align-items:center;justify-content:center;min-width:48px;padding:0 12px;border:1px solid #cbd3dc;border-left:0;border-radius:0 9px 9px 0;background:#f6f8fa;font-weight:800}
.financing-error{margin:12px 0 0;color:#9b1c1c;font-weight:700}
.financing-subtitle{margin:2px 0 0}
.financing-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.financing-table{width:100%;border-collapse:collapse;min-width:690px;font-variant-numeric:tabular-nums}
.financing-table th,.financing-table td{padding:12px 10px;border-top:1px solid #edf0f3;text-align:right;white-space:nowrap}
.financing-table thead th{border-top:0;color:#657084;font-size:.78rem;text-transform:uppercase;letter-spacing:.02em}
.financing-table th:first-child,.financing-table td:first-child{text-align:left}
.financing-table tbody th{font-weight:800}
.financing-table .financing-payment{font-weight:900;color:var(--kima-orange,#00a9e0)}
.financing-disclaimer strong{display:block;margin-bottom:5px}
.financing-disclaimer p{margin:0;color:#657084;font-size:.88rem}
@media(max-width:649px){
  .financing-form{grid-template-columns:1fr}
  .financing-form .btn{width:100%}
  .financing-table th,.financing-table td{padding:11px 9px}
}

/* V56.6 - capacidades comerciales de maquinaria */
.tech-tag.capability-tag{font-weight:600!important;opacity:.9!important}

/* V56.7 · inteligencia de producto / descripción ampliada */
.v567-product-row{cursor:default}
@media (hover:hover) and (pointer:fine){.v567-product-row:hover{background:rgba(0,169,224,.055)}}
.v567-product-dialog{border:0;padding:0;background:transparent;max-width:none;max-height:none}
.v567-product-dialog::backdrop{background:rgba(15,23,42,.48)}
.v567-product-card{width:min(860px,92vw);max-height:88vh;overflow:auto;margin:0;padding:20px}
.v567-product-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.v567-product-head h2{margin:3px 0 0}
.v567-product-tags{display:flex;gap:7px;flex-wrap:wrap;margin:14px 0}
.v567-product-summary{font-size:1.05rem;line-height:1.55;margin:12px 0 18px}
.v567-product-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.v567-product-grid>div{padding:13px;border:1px solid var(--ui-border,#d9dee8);border-radius:10px;background:var(--ui-surface-2,#f7f8fa)}
.v567-product-grid h3{font-size:.9rem;margin:0 0 8px}.v567-product-grid ul{margin:0;padding-left:19px}.v567-product-grid li{margin:4px 0}
.v567-product-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin:16px 0 8px;font-size:.9rem}
.v567-product-warning{padding-top:10px;border-top:1px solid var(--ui-border,#d9dee8)}
.v567-product-help{margin:8px 2px 14px;font-size:.85rem}
@media(max-width:649px){.v567-product-card{width:94vw;max-height:90vh;padding:14px}.v567-product-grid{grid-template-columns:1fr}.v567-product-head{align-items:center}.v567-product-help{display:none}}

/* V56.8 · filtros inteligentes de producto */
.v568-smart-filter-title{margin-top:.45rem;padding-top:.65rem;border-top:1px solid var(--border,#d9dee5);font-weight:700;font-size:.9rem}
/* V58 Encuestas */
.survey-client-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;margin:14px 0}.survey-client{display:flex;gap:10px;align-items:center;padding:10px;border:1px solid var(--border,#d8e1ea);border-radius:10px}.survey-client span{display:flex;flex-direction:column}.survey-question-editor{padding:12px;margin:10px 0;border:1px solid var(--border,#d8e1ea);border-radius:12px}.survey-public-wrap{max-width:760px;margin:30px auto}.survey-public{padding:24px}.survey-field{border:0;border-top:1px solid #e5e7eb;padding:20px 0}.survey-field legend{font-weight:700;padding-top:16px}.survey-scale{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.survey-scale label{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px;min-width:38px;border:1px solid #d8e1ea;border-radius:8px}.survey-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:14px 0}.survey-kpis .card{display:flex;flex-direction:column;gap:6px}.survey-kpis strong{font-size:1.7rem}@media(max-width:649px){.survey-kpis{grid-template-columns:repeat(2,1fr)}.survey-client-grid{grid-template-columns:1fr}.survey-public-wrap{margin:10px auto}.survey-scale{gap:4px}.survey-scale label{min-width:32px;padding:6px}}

/* V58.1 — encuestas, listas con scroll y formularios estrechos */
.v581-scroll-list{max-height:min(56vh,540px);overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-right:4px}
.v581-scroll-list table thead th{position:sticky;top:0;z-index:2;background:var(--ui-surface,#fff)}
.v54-campaign-list.v581-scroll-list,.v53-campaign-grid.v581-scroll-list{padding:2px 5px 2px 2px}

.survey-mobile-blocked{display:none}
.survey-client-list{border:1px solid var(--ui-border,#d8e1ea);border-radius:12px;overflow:auto;max-height:min(52vh,520px);margin-top:12px}
.survey-client-row{display:grid;grid-template-columns:28px minmax(180px,1.1fr) minmax(220px,1fr);align-items:center;gap:10px;padding:9px 12px;border-top:1px solid var(--ui-border,#e5e7eb);font-weight:400;cursor:pointer;min-width:0}
.survey-client-row:first-child{border-top:0}
.survey-client-row:hover{background:color-mix(in srgb,var(--ui-accent,#2563eb) 5%,transparent)}
.survey-client-row>input,.survey-list-toolbar input{width:18px!important;height:18px!important;min-height:18px!important;margin:0!important;flex:0 0 18px}
.survey-client-name,.survey-client-email{min-width:0;overflow:hidden;text-overflow:ellipsis}
.survey-client-name strong,.survey-client-name small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.survey-client-email{white-space:nowrap;color:var(--ui-muted,#657084);font-size:.88rem}
.survey-list-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px}
.survey-list-toolbar .btn{margin-left:auto}
.survey-empty-row{padding:12px;margin:0}
.survey-admin-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.85fr);gap:18px;align-items:start}
.survey-mail-config-form{padding:0}
.survey-test-panel{padding:14px;border:1px solid var(--ui-border,#d8e1ea);border-radius:12px;background:color-mix(in srgb,var(--ui-surface,#fff) 95%,var(--ui-accent,#2563eb))}
.survey-test-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}
.survey-test-results-head{margin-top:18px}
.survey-test-results{display:grid;gap:8px}
.survey-test-result-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:10px 0;border-top:1px solid var(--ui-border,#e5e7eb)}
.survey-test-result-row>div:first-child{min-width:0}.survey-test-result-row strong,.survey-test-result-row small{display:block}.survey-test-values{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.survey-test-values span{font-size:.82rem}.survey-test-feedback{max-width:360px;color:var(--ui-muted,#657084)}
.filter-bar.survey-result-filters{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr)) auto;gap:10px;align-items:end}

.v581-client-email-inline{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(190px,1.3fr) auto;gap:7px;align-items:center;max-width:680px}
.v581-client-email-inline input{min-width:0}

/* Los controles de fecha no deben imponer un ancho intrínseco mayor que su contenedor. */
input[type="date"]{display:block;width:100%;max-width:100%;min-width:0!important}
.search>*,.filter-bar>*,.v53-mail-filter>*,.v54-campaign-filter>*{min-width:0}

@media(max-width:900px){
  .survey-admin-grid{grid-template-columns:1fr}
  .filter-bar.survey-result-filters{grid-template-columns:repeat(2,minmax(0,1fr))}
  .filter-bar.survey-result-filters .btn{width:100%}
  .v581-client-email-inline{grid-template-columns:1fr}
}

@media(max-width:649px){
  .survey-management-shell{display:none!important}
  .survey-mobile-blocked{display:block!important}
  .v581-scroll-list{max-height:52vh}
  input[type="date"]{font-size:16px;inline-size:100%;max-inline-size:100%}
}

/* ========================================================================== */
/* V58.2 · permisos de encuestas + fechas Safari/iPad                        */
/* ========================================================================== */

/* Gestión de usuarios: el permiso de encuestas tiene su propio guardado
   visible y no depende del botón de datos generales. */
.v582-user-main-form{min-width:0!important}
.v582-user-main-save{display:flex;align-items:end;min-width:0}
.v582-user-main-save .btn{width:100%;white-space:normal}
.v582-survey-permission-block{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  margin-top:11px;padding:11px 12px;border:1px solid var(--ui-border,#dfe4e9);
  border-radius:10px;background:color-mix(in srgb,var(--ui-surface,#fff) 96%,var(--ui-accent,#2563eb));
  min-width:0;
}
.v582-permission-copy{display:grid;gap:2px;min-width:0}
.v582-permission-copy small{font-weight:400;overflow-wrap:anywhere}
.v582-survey-permission-form{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin:0;min-width:0}
.v582-survey-permission-form .checkbox{margin:0;white-space:nowrap}
.v582-survey-permission-form input[type="checkbox"]{width:20px!important;height:20px!important;min-height:20px!important;flex:0 0 20px}
.v582-permission-admin{display:flex;justify-content:flex-end}

@media(min-width:1100px){
  .v582-user-main-form.user-edit-form{
    grid-template-columns:90px minmax(130px,1fr) minmax(190px,1.35fr) 130px auto auto auto minmax(150px,.7fr)!important;
  }
}
@media(max-width:900px){
  .v582-survey-permission-block{align-items:stretch;flex-direction:column}
  .v582-survey-permission-form{justify-content:flex-start}
  .v582-survey-permission-form .btn{width:100%}
}

/* Safari/iPad puede imponer un ancho intrínseco a los controles nativos de
   fecha incluso con width:100%. Estas reglas, colocadas al final del CSS,
   pisan los max-width:none heredados de algunos paneles de Clientes/Visitas. */
input[type="date"],
input[type="datetime-local"],
input[type="month"],
input[type="time"]{
  display:block!important;
  width:100%!important;
  inline-size:100%!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  min-width:0!important;
  min-inline-size:0!important;
  box-sizing:border-box!important;
}

@media(max-width:1100px){
  .v401-client-actions label,
  .v401-client-actions .bulk-visit-controls,
  .v402-visits-sidebar label,
  .v402-side-body label,
  .v40-sidebar-form label,
  .visit-export-form label,
  .grid-2>label,
  .compact>label,
  .toolbar-form>label{
    min-width:0!important;
    max-width:100%!important;
    box-sizing:border-box!important;
    overflow:hidden;
  }

  .v401-client-actions input[type="date"],
  .v402-visits-sidebar input[type="date"],
  .v402-side-body input[type="date"],
  .v40-sidebar-form input[type="date"],
  .visit-export-form input[type="date"],
  .toolbar-form input[type="date"]{
    width:100%!important;
    inline-size:100%!important;
    max-width:100%!important;
    max-inline-size:100%!important;
    min-width:0!important;
    min-inline-size:0!important;
  }
}

/* Ajuste específico del motor WebKit táctil (iPad/iPhone). Mantiene el picker
   nativo, pero permite que la zona que muestra el valor se encoja dentro del
   control en vez de ampliar el contenedor. */
@supports (-webkit-touch-callout:none){
  input[type="date"]::-webkit-date-and-time-value,
  input[type="datetime-local"]::-webkit-date-and-time-value,
  input[type="month"]::-webkit-date-and-time-value,
  input[type="time"]::-webkit-date-and-time-value{
    min-width:0!important;
    width:auto!important;
    text-align:left;
  }
  input[type="date"]::-webkit-datetime-edit,
  input[type="datetime-local"]::-webkit-datetime-edit,
  input[type="month"]::-webkit-datetime-edit,
  input[type="time"]::-webkit-datetime-edit{
    min-width:0!important;
    overflow:hidden;
  }
}

/* V58.5 — constructor y formularios públicos de encuestas */
.survey-builder-page{max-width:980px;margin:0 auto}
.survey-builder-head{margin:8px 0 14px}
.survey-builder-form{display:grid;gap:14px}
.survey-builder-form>.card{margin:0}
.survey-builder-basics{padding:18px}
.survey-builder-questions{padding:18px}
.survey-builder-questions .section-head{align-items:flex-start;margin-bottom:14px}
.survey-question-list{display:grid;gap:12px}
.survey-question-editor{margin:0;padding:16px;border:1px solid var(--ui-border,#d8e1ea);border-radius:14px;background:color-mix(in srgb,var(--ui-surface,#fff) 97%,var(--user-accent,#2563eb));box-shadow:0 1px 2px #00000008}
.survey-builder-question-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.survey-builder-question-number{font-size:.82rem;font-weight:850;color:var(--ui-muted,#657084);text-transform:uppercase;letter-spacing:.035em}
.survey-builder-type-badge{margin-left:auto}
.survey-builder-icon-btn{width:34px;height:34px;min-height:34px;border:1px solid var(--ui-border,#d8e1ea);border-radius:9px;background:#fff;color:#6b7280;font-size:1.2rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}
.survey-builder-icon-btn:hover{border-color:#ef4444;color:#b91c1c;background:#fff7f7}
.survey-builder-question-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(210px,.65fr);gap:12px;align-items:end}
.survey-builder-options{margin-top:14px;padding:13px;border-radius:12px;background:#f7f9fb;border:1px solid #e6ebf0}
.survey-builder-options[hidden]{display:none!important}
.survey-builder-options-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:9px}
.survey-builder-options-head strong,.survey-builder-options-head small{display:block}
.survey-builder-option-list{display:grid;gap:7px;margin-bottom:9px}
.survey-builder-option-row{display:grid;grid-template-columns:18px minmax(0,1fr) 36px;gap:8px;align-items:center}
.survey-builder-option-dot{width:13px;height:13px;border:2px solid #aab4c1;border-radius:50%;justify-self:center}
.survey-builder-option-row input{min-height:40px;padding-top:8px;padding-bottom:8px}
.survey-builder-add-option{background:#fff}
.survey-builder-mail{padding:18px}
.survey-builder-test-box{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px;border:1px dashed #b7c5d5;border-radius:12px;background:#f8fbfd}
.survey-builder-test-box p{margin:5px 0 0;max-width:660px}
.survey-builder-test-box .btn{flex:0 0 auto}
.survey-builder-savebar{position:sticky;bottom:12px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border:1px solid #dce3ea;border-radius:13px;background:rgba(255,255,255,.96);box-shadow:0 8px 28px #17203318;backdrop-filter:blur(8px)}
.survey-builder-savebar .btn{min-width:170px}

.survey-public-body{min-height:100vh;padding:0;background:linear-gradient(180deg,#f4f7fa 0,#eef3f7 100%);color:#172033}
.survey-public-brandbar{background:#172033;color:#fff;padding:13px max(18px,calc((100% - 820px)/2));box-shadow:0 2px 10px #0002}
.survey-public-brand{display:flex;align-items:center;gap:10px;min-height:36px}
.survey-public-brand img{max-height:34px;max-width:150px;object-fit:contain;background:#fff;border-radius:7px;padding:3px}
.survey-public-brand strong{font-size:1rem;letter-spacing:.01em}
.survey-public-main{width:100%;padding:24px 14px 38px}
.survey-public-footer{text-align:center;padding:0 14px 28px;color:#738095;font-size:.82rem}
.survey-public-wrap{width:min(760px,100%);margin:0 auto}
.survey-public-card{background:#fff;border:1px solid #dfe6ec;border-radius:20px;box-shadow:0 14px 42px #17203312;overflow:hidden}
.survey-public-intro{padding:26px 28px 22px;background:linear-gradient(135deg,#172033 0,#23324d 100%);color:#fff}
.survey-public-intro h1{font-size:clamp(1.65rem,5vw,2.25rem);margin:8px 0 7px;line-height:1.12}
.survey-public-intro p{margin:0;color:#dbe4f0;font-size:1rem;line-height:1.5}
.survey-public-kicker{display:inline-flex;padding:5px 9px;border:1px solid #ffffff40;border-radius:999px;background:#ffffff12;font-size:.76rem;font-weight:800;letter-spacing:.035em;text-transform:uppercase}
.survey-public-form{padding:0 28px 26px;counter-reset:survey-question}
.survey-field{min-width:0;margin:0;border:0;border-bottom:1px solid #e8edf2;padding:26px 0}
.survey-field:last-of-type{border-bottom:0}
.survey-field legend{display:flex;align-items:flex-start;gap:11px;width:100%;padding:0;margin:0 0 15px;font-weight:800;font-size:1.03rem;line-height:1.38}
.survey-field legend>span:last-child{flex:1;min-width:0}
.survey-field legend em{display:inline-flex;margin-left:7px;padding:2px 6px;border-radius:999px;background:#f1f4f7;color:#718096;font-size:.65rem;font-style:normal;font-weight:800;vertical-align:2px;text-transform:uppercase;letter-spacing:.03em}
.survey-question-index{display:inline-flex;align-items:center;justify-content:center;flex:0 0 28px;width:28px;height:28px;border-radius:50%;background:#edf2f7;color:#334155;font-size:.78rem;font-weight:900}
.survey-scale{display:grid;margin:0;gap:7px}
.survey-scale-10{grid-template-columns:repeat(11,minmax(0,1fr))}
.survey-scale-option{display:block;min-width:0;font-weight:800;cursor:pointer}
.survey-scale-option input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.survey-scale-option>span{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1/1;min-height:44px;border:1px solid #d6dee7;border-radius:10px;background:#fff;color:#334155;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease,background .12s ease,color .12s ease}
.survey-scale-option:hover>span{transform:translateY(-1px);border-color:#9eacbb;box-shadow:0 3px 10px #17203312}
.survey-scale-option.tone-low input:checked+span{background:#fff0f0;border-color:#ef9a9a;color:#9f1d1d;box-shadow:0 0 0 3px #ef44441a}
.survey-scale-option.tone-mid input:checked+span{background:#fff7df;border-color:#eabf61;color:#8a5a00;box-shadow:0 0 0 3px #f59e0b1c}
.survey-scale-option.tone-high input:checked+span{background:#eaf8ef;border-color:#74c68f;color:#176434;box-shadow:0 0 0 3px #22c55e1a}
.survey-scale-option input:focus-visible+span,.survey-rating-option input:focus-visible+.survey-rating-surface,.survey-choice-card input:focus-visible+.survey-choice-surface{outline:3px solid #6da9ff;outline-offset:2px}
.survey-scale-caption{display:flex;justify-content:space-between;gap:14px;margin-top:8px;color:#6f7b8d;font-size:.76rem;font-weight:650}
.survey-rating-5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.survey-rating-option{display:block;cursor:pointer;min-width:0}
.survey-rating-option input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.survey-rating-surface{display:flex;min-height:72px;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:1px solid #d6dee7;border-radius:12px;background:#fff;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease,background .12s ease}
.survey-rating-surface strong{font-size:1.22rem}
.survey-rating-surface small{font-size:.7rem;text-align:center;color:#6f7b8d;line-height:1.15}
.survey-rating-option:hover .survey-rating-surface{transform:translateY(-1px);border-color:#9eacbb;box-shadow:0 3px 10px #17203310}
.survey-rating-option input:checked+.survey-rating-surface{background:#edf6ff;border-color:#6ca6dc;box-shadow:0 0 0 3px #3b82f61a;color:#153f69}
.survey-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.survey-choice-card{display:block;min-width:0;cursor:pointer;font-weight:650}
.survey-choice-card input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.survey-choice-surface{display:flex;align-items:center;gap:11px;min-height:58px;padding:11px 13px;border:1px solid #d6dee7;border-radius:12px;background:#fff;transition:border-color .12s ease,box-shadow .12s ease,background .12s ease,transform .12s ease}
.survey-choice-card:hover .survey-choice-surface{border-color:#9eacbb;box-shadow:0 3px 10px #1720330d;transform:translateY(-1px)}
.survey-choice-marker{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:0 0 21px;width:21px;height:21px;border:2px solid #a7b2bf;border-radius:50%;background:#fff}
.survey-choice-grid.is-multi .survey-choice-marker{border-radius:6px}
.survey-choice-card input:checked+.survey-choice-surface{border-color:#5b96cf;background:#f1f7fd;box-shadow:0 0 0 3px #3b82f614}
.survey-choice-card input:checked+.survey-choice-surface .survey-choice-marker{border-color:#2563a5;background:#2563a5}
.survey-choice-card input[type="radio"]:checked+.survey-choice-surface .survey-choice-marker:after{content:"";width:7px;height:7px;border-radius:50%;background:#fff}
.survey-choice-card input[type="checkbox"]:checked+.survey-choice-surface .survey-choice-marker:after{content:"✓";color:#fff;font-size:.78rem;font-weight:900;line-height:1}
.survey-choice-label{min-width:0;line-height:1.32}
.survey-field-help{margin:8px 2px 0;color:#718096;font-size:.78rem}
.survey-public-textarea{width:100%;min-height:132px;border:1px solid #d3dce5;border-radius:13px;padding:13px 14px;font-size:16px;line-height:1.45;background:#fbfcfd;box-shadow:inset 0 1px 2px #17203308}
.survey-public-textarea:focus{outline:0;border-color:#6ca6dc;box-shadow:0 0 0 3px #3b82f617;background:#fff}
.survey-public-submit{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;min-height:52px;margin-top:7px;border:0;border-radius:12px;background:#172033;color:#fff;font:inherit;font-weight:850;cursor:pointer;box-shadow:0 6px 16px #1720331f;transition:transform .12s ease,box-shadow .12s ease}
.survey-public-submit:hover{transform:translateY(-1px);box-shadow:0 8px 20px #1720332a}
.survey-public-submit span{font-size:1.2rem}
.survey-public-privacy{text-align:center;margin:12px 10px 0;color:#7a8698;font-size:.73rem;line-height:1.4}
.survey-public-state{margin:22px 28px;padding:13px 15px;border-radius:11px;font-weight:700}
.survey-public-state.success{background:#eaf7ef;color:#176434;border:1px solid #b7dfc5}
.survey-public-state.error{background:#fff0f0;color:#9c2020;border:1px solid #efc0c0}
.survey-field .survey-public-state{margin:0}
.survey-thanks-wrap{padding-top:42px}
.survey-thanks-card{text-align:center;padding:42px 28px}
.survey-thanks-card h1{margin:12px 0 7px}
.survey-thanks-card p{margin:0 auto;max-width:480px;color:#667386;line-height:1.55}
.survey-thanks-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto;border-radius:50%;background:#eaf8ef;color:#18723b;font-size:1.8rem;font-weight:900;border:1px solid #bce2c8}

@media(max-width:760px){
  .survey-builder-question-grid{grid-template-columns:1fr}
  .survey-builder-test-box,.survey-builder-savebar{align-items:stretch;flex-direction:column}
  .survey-builder-test-box .btn,.survey-builder-savebar .btn{width:100%}
  .survey-public-main{padding:14px 10px 28px}
  .survey-public-card{border-radius:16px}
  .survey-public-intro{padding:22px 18px 19px}
  .survey-public-form{padding:0 18px 20px}
  .survey-field{padding:22px 0}
  .survey-scale-10{grid-template-columns:repeat(6,minmax(0,1fr))}
  .survey-scale-option>span{aspect-ratio:auto;min-height:46px}
  .survey-rating-5{grid-template-columns:repeat(5,minmax(52px,1fr));overflow-x:auto;padding:2px 1px 6px}
  .survey-choice-grid{grid-template-columns:1fr}
  .survey-public-state{margin:18px}
}
@media(max-width:420px){
  .survey-scale-10{grid-template-columns:repeat(4,minmax(0,1fr))}
  .survey-rating-5{grid-template-columns:repeat(5,62px)}
  .survey-rating-surface{min-height:70px}
  .survey-rating-surface small{font-size:.66rem}
  .survey-public-brandbar{padding:11px 14px}
}

/* ===========================================================
   V58.6 — tarjetas de resultados adaptativas en poco ancho
   Evita que nombres, notas, badges y acciones terminen comprimidos
   letra a letra en iPad/Split View y ventanas estrechas de escritorio.
   =========================================================== */

/* Los textos principales pueden partir por palabras, pero nunca se fuerzan
   a una columna de caracteres por un flex/grid demasiado estrecho. */
.client-card .client-main,
.client-card .client-card-link,
.task-card .task-link,
.task-card .row-top > div:first-child,
.visit-card .visit-link,
.visit-card .visit-top strong{
  min-width:0!important;
}
.client-card .client-main strong,
.client-card .client-main span,
.task-card .row-top strong,
.task-card .row-top .muted,
.visit-card .visit-top strong,
.client-card .v563-client-suggestion-reason,
.task-card .multiline,
.visit-card .multiline{
  word-break:normal!important;
  overflow-wrap:break-word!important;
  hyphens:auto;
}

/* En móvil real también dejamos que cabecera + badge salten de línea antes
   de estrechar el texto principal. */
@media(max-width:649px){
  .client-card .row-top,
  .task-card .row-top,
  .visit-card .visit-top{
    flex-wrap:wrap!important;
    justify-content:flex-start!important;
    align-items:flex-start!important;
  }
  .client-card .row-top .client-main,
  .task-card .row-top > div:first-child{
    flex:1 1 220px!important;
  }
  .client-card .row-top > .badge,
  .task-card .row-top > .badge,
  .visit-card .visit-top > .badge{
    flex:0 1 auto!important;
    max-width:100%!important;
    white-space:normal!important;
  }
}

/* Zona crítica: tablet, iPad Split View y escritorio estrecho. El sidebar
   sigue disponible, pero la tarjeta deja de intentar resolver todo en una
   sola línea horizontal. */
@media(min-width:650px) and (max-width:1100px){
  /* ---------- CLIENTES ---------- */
  .v401-main-list .client-card{
    min-width:0!important;
    overflow:hidden!important;
  }
  .v401-main-list .client-card .row-top{
    display:flex!important;
    flex-wrap:wrap!important;
    justify-content:flex-start!important;
    align-items:flex-start!important;
    gap:5px 7px!important;
  }
  .v401-main-list .client-card .row-top .client-main{
    flex:1 1 100%!important;
    width:100%!important;
    margin-right:0!important;
  }
  .v401-main-list .client-card .row-top > .badge{
    flex:0 1 auto!important;
    max-width:100%!important;
    white-space:normal!important;
    line-height:1.2!important;
  }
  .v401-main-list .client-meta{
    min-width:0!important;
    gap:5px 10px!important;
  }
  .v401-main-list .client-meta > span{
    min-width:0!important;
    max-width:100%!important;
    overflow-wrap:break-word!important;
  }
  .v401-main-list .client-sales-metrics{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .v401-main-list .client-sales-metrics > span{
    min-width:0!important;
  }
  .v401-main-list .purchase-cycle{
    min-width:0!important;
    display:flex!important;
    flex-wrap:wrap!important;
  }
  .v401-main-list .purchase-cycle > span,
  .v401-main-list .purchase-cycle > strong{
    min-width:0!important;
    max-width:100%!important;
    overflow-wrap:break-word!important;
  }

  /* ---------- TAREAS ---------- */
  .task-list,
  .task-card,
  .task-card > .task-link{
    min-width:0!important;
  }
  .task-card > .task-link .row-top{
    display:flex!important;
    flex-wrap:wrap!important;
    justify-content:flex-start!important;
    align-items:flex-start!important;
    gap:6px 8px!important;
  }
  .task-card > .task-link .row-top > div:first-child{
    flex:1 1 240px!important;
    min-width:0!important;
  }
  .task-card > .task-link .row-top > .badge{
    flex:0 1 auto!important;
    max-width:100%!important;
    white-space:normal!important;
    line-height:1.2!important;
  }
  .task-card .task-meta{
    display:flex!important;
    flex-wrap:wrap!important;
    min-width:0!important;
  }
  .task-card > .visit-actions{
    display:flex!important;
    flex-wrap:wrap!important;
    gap:6px!important;
    min-width:0!important;
  }
  .task-card > .visit-actions > .btn,
  .task-card > .visit-actions > form{
    flex:1 1 145px!important;
    min-width:0!important;
    max-width:100%!important;
  }
  .task-card > .visit-actions > form{
    padding:0!important;
    margin:0!important;
  }
  .task-card > .visit-actions > form > .btn{
    width:100%!important;
    min-width:0!important;
    white-space:normal!important;
  }
  .task-card > .visit-actions > .btn{
    white-space:normal!important;
    line-height:1.2!important;
  }

  /* ---------- VISITAS ---------- */
  .v402-visits-main .visit-card{
    display:grid!important;
    grid-template-columns:34px 28px minmax(0,1fr)!important;
    grid-template-rows:auto auto!important;
    align-items:start!important;
    gap:6px 7px!important;
    min-width:0!important;
    overflow:hidden!important;
  }
  .v402-visits-main .visit-card .route-mail-select{
    grid-column:1!important;
    grid-row:1!important;
    align-self:start!important;
  }
  .v402-visits-main .visit-card .visit-order{
    grid-column:2!important;
    grid-row:1!important;
    align-self:start!important;
  }
  .v402-visits-main .visit-card .visit-link{
    grid-column:3!important;
    grid-row:1!important;
    min-width:0!important;
    padding:0!important;
  }
  .v402-visits-main .visit-card .visit-top{
    display:flex!important;
    flex-wrap:wrap!important;
    justify-content:flex-start!important;
    align-items:flex-start!important;
    gap:5px 7px!important;
    min-width:0!important;
  }
  .v402-visits-main .visit-card .visit-top strong{
    flex:1 1 220px!important;
    min-width:0!important;
  }
  .v402-visits-main .visit-card .visit-top > .badge{
    flex:0 1 auto!important;
    max-width:100%!important;
    white-space:normal!important;
    line-height:1.2!important;
  }
  .v402-visits-main .visit-card .visit-link .multiline{
    max-width:100%!important;
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    line-height:1.25!important;
  }
  .v402-visits-main .visit-card .visit-actions{
    grid-column:1 / -1!important;
    grid-row:2!important;
    display:flex!important;
    flex-wrap:wrap!important;
    align-items:center!important;
    gap:5px!important;
    width:100%!important;
    min-width:0!important;
    padding:7px 0 0!important;
    margin:0!important;
    border-top:1px solid var(--ui-border,#edf0f3)!important;
  }
  .v402-visits-main .compact-visit-actions .desktop-action-label{
    display:none!important;
  }
  .v402-visits-main .compact-visit-actions .mobile-action-icon{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
  }
  .v402-visits-main .compact-visit-actions > .visit-icon-btn,
  .v402-visits-main .compact-visit-actions > a.visit-icon-btn,
  .v402-visits-main .compact-visit-actions > button.visit-icon-btn,
  .v402-visits-main .compact-visit-actions > form:not(.v5613-visit-status-form){
    flex:0 0 38px!important;
    width:38px!important;
    min-width:38px!important;
    max-width:38px!important;
    margin:0!important;
  }
  .v402-visits-main .compact-visit-actions > form:not(.v5613-visit-status-form){
    padding:0!important;
  }
  .v402-visits-main .compact-visit-actions > form:not(.v5613-visit-status-form) > .visit-icon-btn,
  .v402-visits-main .compact-visit-actions > .visit-icon-btn{
    width:38px!important;
    min-width:38px!important;
    max-width:38px!important;
    height:36px!important;
    min-height:36px!important;
    padding:0!important;
  }
  .v402-visits-main .compact-visit-actions > .v5613-visit-status-form{
    flex:1 1 150px!important;
    min-width:130px!important;
    max-width:240px!important;
    padding:0!important;
    margin:0!important;
  }
  .v402-visits-main .v5613-visit-status-select{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    min-height:36px!important;
    height:36px!important;
    padding-top:4px!important;
    padding-bottom:4px!important;
  }
}

/* En el tramo más estrecho de tablet ponemos el tipo de tarea en una línea
   independiente; así el nombre del cliente siempre conserva un ancho útil. */
@media(min-width:650px) and (max-width:820px){
  .task-card > .task-link .row-top > div:first-child{
    flex-basis:100%!important;
    width:100%!important;
  }
}

/* ===========================================================
   V58.7 - encuesta pública legible + escalas lineales
   =========================================================== */
.survey-public-body{
  --survey-ink:#172033;
  --survey-muted:#667386;
  --survey-line:#d8e1ea;
  --survey-panel:#ffffff;
  --survey-dark:#172033;
  --survey-dark-2:#23324d;
  background:linear-gradient(180deg,#f4f7fa 0,#eef3f7 100%)!important;
  color:var(--survey-ink)!important;
  color-scheme:light;
}
.survey-public-body .survey-public-brandbar{background:var(--survey-dark)!important;color:#fff!important}
.survey-public-body .survey-public-brand{color:#fff!important}
.survey-public-brand-copy{display:flex;min-width:0;flex-direction:column;justify-content:center;gap:1px}
.survey-public-body .survey-public-brand-copy strong{color:#fff!important;font-size:1rem;line-height:1.2}
.survey-public-body .survey-public-brand-copy span{color:#cbd7e5!important;font-size:.76rem;line-height:1.2}
.survey-public-body .survey-public-card{background:#fff!important;color:var(--survey-ink)!important}
.survey-public-body .survey-public-intro{background:linear-gradient(135deg,var(--survey-dark) 0,var(--survey-dark-2) 100%)!important;color:#fff!important}
.survey-public-body .survey-public-intro h1{color:#fff!important;margin:10px 0 9px!important}
.survey-public-body .survey-public-intro p{color:#dbe4f0!important;margin-top:0!important}
.survey-public-body .survey-public-kicker{color:#f5f8fb!important}
.survey-public-body .survey-field legend,
.survey-public-body .survey-field legend strong,
.survey-public-body .survey-choice-label,
.survey-public-body .survey-linear-label{color:var(--survey-ink)!important}
.survey-public-form{padding:4px 30px 30px!important}
.survey-field{padding:30px 0!important}
.survey-field legend{margin-bottom:22px!important}
.survey-question-index{margin-top:-3px}
.survey-field-help{margin-top:12px!important}
.survey-public-textarea{margin-top:2px!important;padding:15px 16px!important;background:#fbfcfd!important;color:var(--survey-ink)!important}
.survey-choice-grid{margin-top:2px!important;gap:12px!important}
.survey-choice-surface{padding:13px 15px!important;min-height:62px!important;background:#fff!important;color:var(--survey-ink)!important}
.survey-public-submit-wrap{padding-top:12px}
.survey-public-submit{margin-top:0!important;padding:12px 18px!important;background:var(--survey-dark)!important;color:#fff!important}
.survey-public-privacy{margin-top:16px!important;color:#748195!important}

/* Escala horizontal: la línea queda detrás y cada respuesta es un punto táctil. */
.survey-linear-scale{position:relative;display:grid;width:100%;align-items:start;margin:4px 0 0;padding:6px 0 2px;isolation:isolate}
.survey-linear-scale::before{content:"";position:absolute;z-index:0;height:4px;top:25px;border-radius:999px;background:#dce4ec;box-shadow:inset 0 1px 1px #17203312}
.survey-linear-scale-10{grid-template-columns:repeat(11,minmax(0,1fr))}
.survey-linear-scale-10::before{left:4.55%;right:4.55%}
.survey-linear-scale-5{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:5px}
.survey-linear-scale-5::before{left:10%;right:10%}
.survey-linear-option{position:relative;z-index:1;display:grid;justify-items:center;align-content:start;gap:9px;min-width:0;cursor:pointer;color:var(--survey-ink)!important;font-weight:800}
.survey-linear-option input{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important;min-height:1px!important}
.survey-linear-point{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:2px solid #c7d2dd;border-radius:50%;background:#fff;color:#334155;font-size:.88rem;font-weight:850;line-height:1;box-shadow:0 1px 3px #17203312;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease,background .12s ease,color .12s ease}
.survey-linear-option:hover .survey-linear-point{transform:translateY(-1px) scale(1.04);border-color:#8ea1b4;box-shadow:0 4px 12px #17203318}
.survey-linear-option input:focus-visible+.survey-linear-point{outline:3px solid #6da9ff;outline-offset:3px}
.survey-linear-option.tone-low input:checked+.survey-linear-point{background:#c94747;border-color:#c94747;color:#fff;box-shadow:0 0 0 4px #c9474720}
.survey-linear-option.tone-mid input:checked+.survey-linear-point{background:#d99321;border-color:#d99321;color:#fff;box-shadow:0 0 0 4px #d9932120}
.survey-linear-option.tone-high input:checked+.survey-linear-point{background:#2e9b5c;border-color:#2e9b5c;color:#fff;box-shadow:0 0 0 4px #2e9b5c20}
.survey-linear-option-5 input:checked+.survey-linear-point{background:#2563a5;border-color:#2563a5;color:#fff;box-shadow:0 0 0 4px #2563a51d}
.survey-linear-label{max-width:96px;text-align:center;font-size:.7rem;font-weight:700;line-height:1.15;color:#6f7b8d!important}
.survey-scale-caption{margin-top:13px!important;padding-inline:2px;color:#69778a!important}

.survey-satisfaction-legend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}
.survey-satisfaction-legend-item{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;padding:9px 10px;border:1px solid #e1e7ed;border-radius:12px;background:#f8fafc;color:var(--survey-ink)!important}
.survey-satisfaction-legend-item>span:last-child{display:flex;min-width:0;flex-direction:column;line-height:1.14}
.survey-satisfaction-legend-item strong{color:var(--survey-ink)!important;font-size:.82rem}
.survey-satisfaction-legend-item small{color:#6f7b8d!important;font-size:.69rem}
.survey-satisfaction-face{font-size:1.25rem;line-height:1}
.survey-satisfaction-legend-item.is-negative{background:#fff5f5;border-color:#efd1d1}
.survey-satisfaction-legend-item.is-neutral{background:#fffaf0;border-color:#eddcb8}
.survey-satisfaction-legend-item.is-positive{background:#f1faf4;border-color:#cde6d5}

/* Selección de destinatarios de encuestas de campaña. */
.survey-campaign-form{display:grid;gap:18px}
.survey-campaign-mail-fields{gap:14px}
.survey-recipient-head{margin:4px 0 0!important;align-items:end}
.survey-recipient-head h2{margin-bottom:3px!important}
.survey-recipient-toolbar{display:grid;grid-template-columns:auto minmax(240px,420px);justify-content:space-between;align-items:center;gap:12px;margin-top:-4px}
.survey-recipient-toolbar .checkbox{margin:0}
.survey-campaign-client-list{display:grid;gap:0;max-height:430px;overflow:auto;border:1px solid var(--ui-border);border-radius:11px;background:var(--ui-surface)}
.survey-campaign-client-row{display:grid;grid-template-columns:30px minmax(220px,1.2fr) minmax(220px,1fr);align-items:center;gap:10px;padding:11px 13px;border-bottom:1px solid var(--ui-border);cursor:pointer}
.survey-campaign-client-row:last-child{border-bottom:0}
.survey-campaign-client-row:hover{background:var(--ui-surface-2)}
.survey-campaign-client-row[hidden]{display:none!important}
.survey-campaign-client-row>input{width:18px!important;height:18px!important;min-height:18px!important;margin:0!important}
.survey-campaign-client-main{display:flex;min-width:0;flex-direction:column;gap:2px}
.survey-campaign-client-main strong,.survey-campaign-client-email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.survey-campaign-client-main small{font-size:.74rem}
.survey-campaign-client-email{color:var(--ui-muted);font-size:.84rem}
.survey-campaign-client-row:has(input:disabled){opacity:.56;cursor:not-allowed}
.survey-campaign-actions{margin-top:0!important}

@media(max-width:760px){
  .survey-public-form{padding:3px 20px 24px!important}
  .survey-field{padding:26px 0!important}
  .survey-field legend{margin-bottom:19px!important}
  .survey-linear-point{width:34px;height:34px;font-size:.78rem}
  .survey-linear-scale::before{top:22px}
  .survey-linear-label{font-size:.62rem;max-width:64px}
  .survey-satisfaction-legend{gap:7px;margin-top:15px}
  .survey-satisfaction-legend-item{gap:5px;padding:8px 5px}
  .survey-satisfaction-face{font-size:1.05rem}
}
@media(max-width:430px){
  .survey-public-main{padding:10px 7px 24px!important}
  .survey-public-intro{padding:22px 18px 20px!important}
  .survey-public-form{padding:2px 15px 21px!important}
  .survey-linear-point{width:28px;height:28px;border-width:1.5px;font-size:.69rem}
  .survey-linear-scale::before{top:19px;height:3px}
  .survey-linear-label{font-size:.58rem;line-height:1.08}
  .survey-satisfaction-legend-item{flex-direction:column;text-align:center}
  .survey-satisfaction-legend-item>span:last-child{align-items:center}
}
.survey-linear-scale-10.is-recommendation::before{background:linear-gradient(90deg,#d76767 0 58%,#d9a43d 63% 78%,#54a875 84% 100%)}
@media(max-width:430px){
  .survey-linear-point{width:clamp(20px,7vw,26px);height:clamp(20px,7vw,26px)}
}


/* ===========================================================
   V58.8 — respiración visual de encuestas + cabecera corporativa
   =========================================================== */
/* La cabecera pública usa una sola identidad, sin repetir el mensaje de opinión. */
.survey-public-brand-copy{gap:0!important}
.survey-public-body .survey-public-brand-copy strong{font-size:1.04rem!important;color:#fff!important}

/* El bloque azul queda separado de verdad de la primera pregunta. */
.survey-public-form{padding:0 30px 32px!important}
.survey-field{
  margin:0!important;
  padding:36px 0 34px!important;
  border:0!important;
}
.survey-field:first-of-type{padding-top:38px!important}
.survey-field + .survey-field{
  border-top:1px solid #e3e9ef!important;
  padding-top:38px!important;
}
.survey-field legend{
  margin:0 0 24px!important;
  padding:0!important;
  color:var(--survey-ink)!important;
}
.survey-field legend>span:last-child{padding-top:2px}
.survey-public-intro{padding:27px 28px 24px!important}
.survey-public-intro h1{margin:0 0 10px!important;color:#fff!important}
.survey-public-intro p{margin:0!important;color:#dbe4f0!important}
.survey-choice-grid,.survey-linear-scale,.survey-public-textarea{margin-top:3px!important}
.survey-field-help{margin:14px 2px 0!important}
.survey-public-submit-wrap{padding-top:20px!important}
.survey-public-privacy{margin-top:18px!important}

/* Acciones de una definición de encuesta guardada. */
.survey-definition-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:7px}
.survey-definition-actions form{margin:0;padding:0}
.survey-definition-actions .btn{white-space:nowrap}

@media(max-width:760px){
  .survey-public-form{padding:0 20px 25px!important}
  .survey-field{padding:31px 0 30px!important}
  .survey-field:first-of-type{padding-top:33px!important}
  .survey-field + .survey-field{padding-top:34px!important}
  .survey-field legend{margin-bottom:21px!important}
  .survey-public-intro{padding:23px 19px 21px!important}
}
@media(max-width:430px){
  .survey-public-form{padding:0 15px 22px!important}
  .survey-field{padding:28px 0 27px!important}
  .survey-field:first-of-type{padding-top:30px!important}
  .survey-field + .survey-field{padding-top:31px!important}
  .survey-field legend{margin-bottom:19px!important}
  .survey-public-submit-wrap{padding-top:16px!important}
}

/* ===========================================================
   V58.9 — cabecera de pregunta en flujo normal + borrado de pruebas
   =========================================================== */
/*
   Un <legend> tiene reglas de maquetación especiales del navegador y puede
   invadir visualmente el borde superior del fieldset. Las preguntas públicas
   usan desde V58.9 un encabezado normal dentro de <section>, por lo que el
   padding superior se respeta de forma determinista en escritorio, iPad y móvil.
*/
.survey-question-heading{
  display:flex;
  align-items:flex-start;
  gap:12px;
  width:100%;
  margin:0 0 24px!important;
  padding:0!important;
  color:var(--survey-ink,#172033)!important;
  font-size:1.03rem!important;
  font-weight:800!important;
  line-height:1.38!important;
}
.survey-question-heading>span:last-child{
  flex:1;
  min-width:0;
  padding-top:2px;
  color:var(--survey-ink,#172033)!important;
}
.survey-question-heading em{
  display:inline-flex;
  margin-left:7px;
  padding:2px 6px;
  border-radius:999px;
  background:#f1f4f7;
  color:#718096!important;
  font-size:.65rem;
  font-style:normal;
  font-weight:800;
  vertical-align:2px;
  text-transform:uppercase;
  letter-spacing:.03em;
}
/* Garantiza una franja blanca visible antes de la primera pregunta. */
.survey-field:first-of-type{
  padding-top:42px!important;
}
.survey-field + .survey-field{
  padding-top:40px!important;
}

/* Pruebas temporales: estado/resultado y acción de borrado conviven sin
   comprimir el email ni empujar el botón fuera de la tarjeta. */
.survey-test-result-main{min-width:0;flex:1 1 340px}
.survey-test-result-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  flex:1 1 360px;
  gap:10px;
  flex-wrap:wrap;
}
.survey-test-result-actions form{margin:0;padding:0;flex:0 0 auto}
.survey-test-result-actions .badge{white-space:nowrap}
.survey-test-result-actions .survey-test-values{flex:1 1 260px}

@media(max-width:760px){
  .survey-question-heading{margin-bottom:21px!important;font-size:1rem!important}
  .survey-field:first-of-type{padding-top:36px!important}
  .survey-field + .survey-field{padding-top:36px!important}
  .survey-test-result-row{align-items:flex-start;flex-direction:column}
  .survey-test-result-main,.survey-test-result-actions{width:100%;flex-basis:auto}
  .survey-test-result-actions{justify-content:space-between}
}
@media(max-width:430px){
  .survey-question-heading{gap:9px;margin-bottom:19px!important;font-size:.96rem!important}
  .survey-field:first-of-type{padding-top:32px!important}
  .survey-field + .survey-field{padding-top:33px!important}
}
.survey-question-heading .survey-question-index{margin-top:0!important}

/* V59.0 · Encuestas desde Clientes y estadísticas por cartera */
.survey-client-email,.survey-campaign-client-email{display:flex;flex-direction:column;gap:2px;min-width:0}
.survey-client-email small,.survey-campaign-client-email small{font-size:.72rem;color:var(--ui-muted,#657084);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.survey-from-clients-form .survey-campaign-client-row{grid-template-columns:minmax(220px,1.2fr) minmax(220px,1fr);cursor:default}
.survey-from-clients-form .survey-campaign-client-row:hover{background:var(--ui-surface)}
.survey-from-clients-form .survey-campaign-client-row.is-disabled{opacity:.58}
.survey-campaign-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.survey-question-stats{display:grid;gap:0}
.survey-question-stat-row{display:grid;grid-template-columns:minmax(260px,1.25fr) minmax(260px,1fr);gap:22px;padding:18px 0;border-top:1px solid var(--ui-border,#d8e1ea);align-items:start}
.survey-question-stat-row:first-of-type{border-top:0}
.survey-question-stat-title{display:flex;flex-direction:column;gap:5px;min-width:0}
.survey-question-stat-title small{color:var(--ui-muted,#657084)}
.survey-question-stat-value{display:flex;align-items:baseline;gap:5px;justify-content:flex-start}
.survey-question-stat-value strong{font-size:1.75rem}
.survey-option-stats{display:grid;gap:7px}
.survey-option-stats>div{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:8px;background:var(--ui-surface-2,#f5f7fa)}
.survey-text-stats{display:grid;gap:7px}
.survey-text-stats p{margin:0;padding:9px 11px;border-radius:8px;background:var(--ui-surface-2,#f5f7fa)}
@media(max-width:950px){
  .survey-question-stat-row{grid-template-columns:1fr}
  .survey-campaign-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* V60.0 — mapa técnico de maquinaria */
.machinery-map-workspace .client-map-sidebar{min-width:300px}
.machine-map-popup{min-width:300px;max-width:410px}
.machine-popup-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.machine-popup-head>div{min-width:0;display:flex;flex-direction:column;gap:2px}
.machine-popup-head strong{font-size:1rem;line-height:1.25;overflow-wrap:anywhere}
.machine-popup-head small{color:var(--muted,#667085)}
.machine-popup-head .btn{flex:0 0 auto;white-space:nowrap}
.machine-map-popup .technology-tags{margin:7px 0;display:flex;gap:6px;flex-wrap:wrap}
.machine-type-tags{margin-bottom:12px!important}
.machine-popup-service{display:flex;flex-direction:column;gap:3px;padding:10px 0;margin:8px 0;border-top:1px solid rgba(127,127,127,.2);border-bottom:1px solid rgba(127,127,127,.2)}
.machine-popup-service span{font-size:.78rem;color:var(--muted,#667085)}
.machine-popup-purchases{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.machine-popup-purchases>strong{margin-bottom:2px}
.machine-popup-purchases>div{display:grid;grid-template-columns:78px minmax(70px,110px) 1fr;gap:7px;align-items:start;font-size:.82rem}
.machine-popup-purchases span{font-variant-numeric:tabular-nums;color:var(--muted,#667085)}
.machine-popup-purchases b{overflow-wrap:anywhere}
.machine-popup-purchases small{line-height:1.25;overflow-wrap:anywhere}
.machine-popup-manual,.machine-popup-empty{margin:10px 0 0}
.machine-popup-actions{display:flex;justify-content:flex-end;margin-top:12px}
.map-selection-submit-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.machine-map-pin{box-shadow:0 0 0 2px rgba(255,255,255,.9)}
@media(max-width:649px){
  .machine-map-popup{min-width:230px;max-width:290px}
  .machine-popup-head{flex-direction:column}
  .machine-popup-head .btn{align-self:flex-start}
  .machine-popup-purchases>div{grid-template-columns:68px 1fr}
  .machine-popup-purchases small{grid-column:1/-1;padding-left:0}
}

/* ===========================================================
   V60.1 - mapa de maquinaria a altura completa + resultados de
   satisfacción legibles + IRK visible en ficha de cliente
   =========================================================== */
@media(min-width:650px){
  .machinery-map-workspace .client-map-stage{
    height:100%!important;
    min-height:0!important;
  }
  .machinery-map-workspace .client-map-stage #machinery-map{
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
    margin:0!important;
    border:0!important;
    border-radius:0!important;
  }
}

.survey-results-head .actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.survey-response-list{display:grid;gap:12px;margin-top:14px}
.survey-response-card{padding:0!important;overflow:hidden;outline:none;cursor:default}
.survey-response-card:focus-visible{box-shadow:0 0 0 3px rgba(36,99,235,.18)}
.survey-response-summary{display:grid;grid-template-columns:minmax(260px,1.35fr) minmax(250px,.9fr) minmax(145px,.55fr);gap:18px;align-items:center;padding:16px 18px 10px}
.survey-response-client{display:flex;flex-direction:column;gap:4px;min-width:0}
.survey-response-client-title{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.survey-response-client-title a{font-size:1.02rem;font-weight:750;min-width:0;overflow-wrap:anywhere}
.survey-response-client small,.survey-response-date small{color:var(--ui-muted,#657084)}
.survey-response-scores{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.survey-score-pill{display:flex;align-items:baseline;gap:4px;padding:7px 10px;border-radius:999px;background:var(--ui-surface-2,#f5f7fa);border:1px solid var(--ui-border,#d8e1ea);white-space:nowrap}
.survey-score-pill b{font-size:1.12rem}.survey-score-pill small{font-size:.73rem}
.survey-score-pill.positivo{background:#ecfdf3;border-color:#a7f3d0}.survey-score-pill.negativo{background:#fff1f2;border-color:#fecdd3}.survey-score-pill.neutro{background:#fffbeb;border-color:#fde68a}
.survey-score-pill.friendliness{background:#eff6ff;border-color:#bfdbfe}.survey-score-pill.historical{opacity:.78}
.survey-response-date{display:flex;flex-direction:column;gap:3px;text-align:right;align-items:flex-end}
.survey-response-notes{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:0 18px 14px}
.survey-response-notes>div{min-width:0;padding:10px 12px;border-radius:10px;background:var(--ui-surface-2,#f5f7fa)}
.survey-note-label{display:block;color:var(--ui-muted,#657084);font-weight:650;margin-bottom:4px}
.survey-note-preview{margin:0;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.survey-response-expand-hint{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 18px;border-top:1px solid var(--ui-border,#d8e1ea);background:var(--ui-surface,#fff)}
.survey-response-expand-hint>span{font-size:.76rem;color:var(--ui-muted,#657084)}
.survey-response-detail{padding:18px;border-top:1px solid var(--ui-border,#d8e1ea);background:var(--ui-surface-2,#f8fafc)}
.survey-response-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:18px}
.survey-response-detail-grid>div{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border:1px solid var(--ui-border,#d8e1ea);border-radius:10px;background:var(--ui-surface,#fff);min-width:0}
.survey-response-detail-grid small{color:var(--ui-muted,#657084)}
.survey-response-detail-grid strong{overflow-wrap:anywhere}
.survey-response-answer-list,.survey-response-crm-notes{display:grid;gap:8px;margin-top:14px}
.survey-response-answer-list h3,.survey-response-crm-notes h3{margin:0 0 3px;font-size:.95rem}
.survey-response-answer,.survey-response-crm-notes>div{padding:10px 12px;border-radius:10px;background:var(--ui-surface,#fff);border:1px solid var(--ui-border,#d8e1ea)}
.survey-response-answer small,.survey-response-crm-notes small{display:block;color:var(--ui-muted,#657084);font-weight:650;margin-bottom:4px}
.survey-response-answer p,.survey-response-crm-notes p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.4}

.client-data-head{align-items:flex-start;margin-bottom:10px}
.client-irk-card{margin-left:auto;display:grid;grid-template-columns:auto auto;column-gap:8px;row-gap:0;align-items:center;min-width:150px;padding:9px 11px;border-radius:12px;border:1px solid var(--ui-border,#d8e1ea);background:var(--ui-surface-2,#f5f7fa)}
.client-irk-card small{grid-column:1;font-size:.72rem;color:var(--ui-muted,#657084);font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.client-irk-card strong{grid-column:2;grid-row:1 / span 2;justify-self:end;font-size:1.45rem;line-height:1}
.client-irk-card span{grid-column:1;font-size:.7rem;color:var(--ui-muted,#657084);margin-top:2px}
.client-irk-card.positive{background:#ecfdf3;border-color:#a7f3d0}.client-irk-card.negative{background:#fff1f2;border-color:#fecdd3}.client-irk-card.neutral{background:#fffbeb;border-color:#fde68a}

@media(max-width:1050px){
  .survey-response-summary{grid-template-columns:1fr 1fr}.survey-response-date{grid-column:1/-1;flex-direction:row;justify-content:space-between;align-items:center;text-align:left}
  .survey-response-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .survey-response-summary,.survey-response-notes,.survey-response-detail-grid{grid-template-columns:1fr}
  .survey-response-date{grid-column:auto;align-items:flex-start;flex-direction:column}
  .survey-response-expand-hint>span{display:none}
  .client-data-head{flex-direction:column}.client-irk-card{margin-left:0;width:100%;max-width:320px}
}

/* V61 - correo reutilizable, creatividades y Valhalla móvil */
.v61-compose-box,.v61-quick-mail-assets{border:1px solid var(--border,#dfe3e8);border-radius:12px;padding:14px;margin:14px 0;background:var(--surface-soft,#f8fafc)}
.v61-quick-mail-assets .section-head{margin-bottom:8px}.v61-quick-mail-assets label{margin-top:8px}
.v61-library-picker{margin:9px 0}.v61-library-picker>summary{list-style:none;display:inline-flex;cursor:pointer}.v61-library-picker>summary::-webkit-details-marker{display:none}
.v61-library-file-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:7px;margin-top:9px;max-height:220px;overflow:auto;padding:3px}
.v61-library-file{display:flex!important;align-items:flex-start;gap:8px;border:1px solid var(--border,#dfe3e8);border-radius:9px;padding:8px;background:var(--surface,#fff);cursor:pointer;margin:0!important}
.v61-library-file input{width:auto;flex:0 0 auto;margin-top:3px}.v61-library-file span{min-width:0;display:flex;flex-direction:column}.v61-library-file strong{overflow-wrap:anywhere}.v61-library-file small{color:var(--muted,#667085)}
.v61-creative-compose-options,.v61-quick-creative-options{display:grid;gap:7px;margin-top:8px}.v61-creative-compose-options .checkbox,.v61-quick-creative-options .checkbox{margin:0}
.v61-template-note{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.v61-template-note p{margin:0}.v61-template-chips{display:flex;gap:6px;flex-wrap:wrap}
.v61-creative-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.v61-creative-card{display:grid;grid-template-columns:110px 1fr;gap:13px;align-items:start}.v61-creative-card>.actions{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}.v61-creative-card>.actions form{margin:0}.v61-creative-thumb{height:110px;border-radius:10px;background:#f2f4f7;display:grid;place-items:center;overflow:hidden}.v61-creative-thumb img{width:100%;height:100%;object-fit:contain}.v61-creative-thumb span{font-size:34px}.v61-creative-body{min-width:0}.v61-creative-body p{margin:7px 0}.v61-creative-price{display:block;font-size:1.35rem;margin-bottom:8px}.v61-creative-body small{display:block}
.v61-creative-editor{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(360px,1.2fr) minmax(280px,.85fr);gap:14px;align-items:start}.v61-creative-editor>.card{margin:0}.v61-creative-fields,.v61-image-editor-card,.v61-creative-live-preview{position:sticky;top:78px}.v61-creative-fields{position:static}.v61-canvas-wrap{position:relative;border:1px solid var(--border,#dfe3e8);border-radius:10px;overflow:hidden;background:repeating-conic-gradient(#f1f3f5 0 25%,#fff 0 50%) 50%/20px 20px;margin:10px 0}.v61-canvas-wrap canvas{display:block;width:100%;height:auto;aspect-ratio:3/2}.v61-canvas-wrap p{position:absolute;inset:0;display:grid;place-items:center;margin:0;padding:20px;text-align:center;background:rgba(255,255,255,.82)}.v61-image-tools{display:grid;gap:9px}.v61-image-tools label{display:grid;gap:4px}.v61-tool-row{display:flex;gap:6px;flex-wrap:wrap}.v61-crop-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.v61-offer-preview{border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;background:#fff;color:#1f2937}.v61-offer-preview header{background:#172033;color:#fff;padding:15px 18px;display:flex;justify-content:space-between;align-items:center}.v61-offer-preview header small{letter-spacing:.12em}.v61-preview-image{background:#fff}.v61-preview-image canvas{display:block;width:100%;height:auto}.v61-preview-copy{padding:18px}.v61-preview-copy h3{margin:0 0 8px;font-size:1.45rem}.v61-preview-copy p{color:#4b5563;white-space:pre-line}.v61-preview-copy del{display:block;color:#6b7280;font-size:1.05rem;margin-bottom:4px}.v61-preview-copy>strong{display:block;color:#b42318;font-size:1.8rem}.v61-preview-copy small{display:block;color:#6b7280;margin-top:10px;white-space:pre-line}
.v61-mobile-valhalla{display:block}.v61-map-select-btn{font-weight:900}.visit-route-optimizer.v61-mobile-valhalla .visit-route-origin{align-items:end}

@media (max-width:1100px){.v61-creative-editor{grid-template-columns:1fr 1fr}.v61-creative-live-preview{grid-column:1/-1;position:static}.v61-image-editor-card{position:static}}
@media (max-width:649px){
  .v61-library-file-list{grid-template-columns:1fr;max-height:190px}.v61-creative-grid{grid-template-columns:1fr}.v61-creative-card{grid-template-columns:80px 1fr}.v61-creative-thumb{height:80px}.v61-creative-editor{grid-template-columns:1fr}.v61-creative-editor>.card{position:static}.v61-crop-grid{grid-template-columns:1fr 1fr}
  .visit-route-optimizer.v61-mobile-valhalla{padding:10px;margin-bottom:10px;border-bottom:1px solid var(--border,#dfe3e8)}
  .visit-route-optimizer.v61-mobile-valhalla .v418-visit-map-filter-column{display:grid;grid-template-columns:1fr;gap:8px}
  .visit-route-optimizer.v61-mobile-valhalla .visit-route-origin{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:end}
  .visit-route-optimizer.v61-mobile-valhalla .visit-route-origin label{min-width:0}.visit-route-optimizer.v61-mobile-valhalla .visit-route-origin button{width:100%;min-height:42px}
  .visit-route-optimizer.v61-mobile-valhalla #optimizeRoadRoute{grid-column:1/-1}
  .visit-route-optimizer.v61-mobile-valhalla .section-head h2{font-size:1.05rem}.route-optimization-result{max-height:42vh;overflow:auto}
}

/* ===========================================================
   V62.0 - creatividades configurables + mapa Visitas móvil
   =========================================================== */
.v62-style-controls{margin:12px 0;border:1px solid var(--border,#dfe3e8);border-radius:10px;padding:8px;background:var(--surface-soft,#f8fafc)}
.v62-style-controls>summary{cursor:pointer;font-weight:800;padding:4px}
.v62-style-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}
.v62-style-grid label{display:grid;gap:4px;min-width:0}
.v62-style-grid input[type="color"]{width:100%;height:38px;padding:2px}
.v62-editor-launch-row{align-items:center;margin:5px 0 12px}.v62-editor-launch-row .muted{font-size:.78rem;flex:1;min-width:180px}
.v61-offer-preview{font-family:Arial,Helvetica,sans-serif}
.v61-offer-preview header{background:var(--offer-header-bg,#fff)!important;color:var(--offer-header-text,#172033)!important;border-bottom:4px solid var(--offer-accent,#b42318);padding:15px 18px;display:flex;justify-content:space-between;align-items:center;gap:14px}
.v62-preview-brand{min-width:0;display:flex;align-items:center}.v62-preview-brand img{display:block;max-width:180px;max-height:56px;object-fit:contain}.v62-preview-offer-label{margin-left:auto;color:var(--offer-label-color,#b42318);font-size:var(--offer-label-size,24px);line-height:1;letter-spacing:.08em;white-space:nowrap}
.v61-preview-copy h3{color:var(--offer-title-color,#172033);font-size:var(--offer-title-size,26px)!important;line-height:1.15}
.v61-preview-copy p{color:var(--offer-desc-color,#4b5563)!important;font-size:var(--offer-desc-size,15px);line-height:1.5}
.v61-preview-copy del{color:var(--offer-regular-color,#6b7280)!important;font-size:var(--offer-regular-size,18px)!important}
.v61-preview-copy>strong{color:var(--offer-price-color,#b42318)!important;font-size:var(--offer-price-size,34px)!important;line-height:1.05}
.v61-preview-copy small{color:var(--offer-meta-color,#6b7280)!important;font-size:var(--offer-meta-size,12px)!important}

@media(max-width:649px){
  .v62-style-grid{grid-template-columns:1fr 1fr}
  .v62-editor-launch-row{display:grid!important;grid-template-columns:1fr}.v62-editor-launch-row .btn{width:100%}
  .visits-map-workspace{padding:0!important;overflow:hidden!important}
  .visits-map-workspace .v62-visit-route-tools{display:block!important;margin:0!important;padding:0!important;border:0!important;border-bottom:1px solid var(--border,#dfe3e8)!important;background:var(--surface,#fff)!important}
  .v62-visit-route-tools>summary{display:flex!important;align-items:center;justify-content:space-between;gap:8px;padding:11px 12px;font-weight:800;cursor:pointer;list-style:none;background:var(--surface-soft,#f8fafc)}
  .v62-visit-route-tools>summary::-webkit-details-marker{display:none}.v62-visit-route-tools>summary::after{content:'▾';font-size:.9rem}.v62-visit-route-tools:not([open])>summary::after{content:'▸'}
  .v62-route-tools-body{padding:10px 12px;max-height:44dvh;overflow:auto}
  .visits-map-workspace>.visit-map-full{height:58dvh!important;min-height:430px!important;border-radius:0!important;margin:0!important}
  .visits-map-workspace>#orderInfo{padding:8px 10px;margin:0!important;max-height:76px;overflow:auto}
  .visits-map-workspace>.form-actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:7px;padding:0 10px 10px;margin:0!important}
  .visits-map-workspace>.form-actions .btn{width:100%!important;min-width:0!important;white-space:normal!important}
}
@media(min-width:650px){
  .v62-visit-route-tools>summary{display:none!important}.v62-route-tools-body{display:block!important}
}
.visit-route-optimizer .v62-route-tools-body>.v418-visit-map-filter-column{display:flex!important;flex-direction:column!important;gap:8px!important;width:100%!important;max-width:none!important;margin:0 0 14px!important;padding:0 0 12px!important;border-bottom:1px solid #dfe4e9!important}
.visit-route-optimizer .v62-route-tools-body>.v418-visit-map-filter-column .multi-select,.visit-route-optimizer .v62-route-tools-body>.v418-visit-map-filter-column select,.visit-route-optimizer .v62-route-tools-body>.v418-visit-map-filter-column label{width:100%!important;max-width:100%!important}

/* ===========================================================
   V62.1 - guardado móvil de ruta + plantillas de oferta
   =========================================================== */
.v621-tech-only[hidden]{display:none!important}
.v621-preview-columns{display:block}
.v621-preview-offer-column{min-width:0}
.v621-preview-tech-column{display:none;min-width:0}
.v621-template-tech .v621-preview-columns{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:16px;align-items:start}
.v621-template-tech .v621-preview-tech-column{display:block;border-left:1px solid #e5e7eb;padding-left:16px}
.v621-preview-price{display:block;color:var(--offer-price-color,#b42318)!important;font-size:var(--offer-price-size,34px)!important;line-height:1.05}
.v621-tech-title{display:block;color:var(--offer-title-color,#172033);font-size:.78rem;text-transform:uppercase;letter-spacing:.045em;margin-bottom:8px}
.v621-preview-tech-column ul{margin:0;padding-left:18px;color:var(--offer-desc-color,#4b5563);font-size:var(--offer-desc-size,15px);line-height:1.4}
.v621-preview-tech-column li{margin:0 0 6px}
.v621-preview-expiry{display:block!important;text-align:center;border-top:1px solid #eef0f3;padding:11px 16px 13px;margin:0!important;color:var(--offer-meta-color,#6b7280)!important;font-size:var(--offer-meta-size,12px)!important;white-space:pre-line}

@media(max-width:649px){
  .v621-mobile-route-actions{display:grid!important;grid-template-columns:1fr;gap:7px;position:sticky;bottom:-10px;z-index:4;margin:12px -12px -10px;padding:10px 12px 12px;background:var(--surface,#fff);border-top:1px solid var(--border,#dfe3e8);box-shadow:0 -8px 14px rgba(15,23,42,.06)}
  .v621-mobile-route-actions .btn{width:100%!important;min-height:44px!important}
  .v621-template-tech .v621-preview-columns{grid-template-columns:1fr}
  .v621-template-tech .v621-preview-tech-column{border-left:0;border-top:1px solid #e5e7eb;padding:13px 0 0;margin-top:4px}
}

/* V63.1 · Fran */
.fran-page{max-width:1540px;margin:0 auto}.fran-head{align-items:center}.fran-status{font-weight:700}.fran-status.online{background:rgba(34,197,94,.15);color:#15803d}.fran-status.offline{background:rgba(239,68,68,.14);color:#b91c1c}.fran-status.checking{opacity:.75}.fran-context-card{display:flex;gap:14px;align-items:center;margin-bottom:14px}.fran-context-card>div{display:flex;gap:8px;flex-wrap:wrap}.fran-layout{display:grid;grid-template-columns:minmax(300px,350px) minmax(0,1fr);gap:18px;min-height:68vh}.fran-side{padding:16px;align-self:start;position:sticky;top:86px;max-height:calc(100vh - 104px);overflow-y:auto;scrollbar-gutter:stable}.fran-side h2{font-size:1rem;margin-top:0}.fran-prompt{width:100%;border:1px solid var(--border);background:transparent;color:inherit;text-align:left;padding:11px 12px;border-radius:12px;margin:0 0 9px;cursor:pointer}.fran-prompt:hover{background:rgba(127,127,127,.09)}.fran-side-note{font-size:.86rem;line-height:1.45;margin-bottom:0}.fran-chat-card{padding:0;overflow:hidden;display:flex;flex-direction:column;min-height:68vh}.fran-messages{flex:1;overflow:auto;padding:20px;display:flex;flex-direction:column;gap:14px;min-height:420px;max-height:68vh}.fran-message{display:flex;gap:10px;align-items:flex-start;max-width:86%}.fran-message.user{align-self:flex-end;flex-direction:row-reverse}.fran-avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-weight:800;flex:0 0 32px;background:rgba(99,102,241,.14)}.fran-message.user .fran-avatar{background:rgba(127,127,127,.15)}.fran-bubble{white-space:pre-wrap;line-height:1.5;padding:11px 14px;border-radius:16px;background:rgba(127,127,127,.10)}.fran-message.user .fran-bubble{background:rgba(99,102,241,.16)}.fran-message.waiting{opacity:.65}.fran-sources{border-top:1px solid var(--border);padding:10px 16px;display:flex;gap:8px;align-items:center;overflow:auto}.fran-source{font-size:.82rem;white-space:nowrap;border:1px solid var(--border);border-radius:999px;padding:5px 9px;text-decoration:none;color:inherit}.fran-composer{border-top:1px solid var(--border);padding:12px;display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}.fran-composer textarea{resize:none;min-height:46px;max-height:180px;width:100%}
@media(max-width:760px){.fran-layout{display:block}.fran-side{position:static;margin-bottom:14px}.fran-chat-card{min-height:72vh}.fran-messages{max-height:67vh;padding:14px}.fran-message{max-width:96%}.fran-composer{grid-template-columns:1fr}.fran-composer .btn{width:100%}.fran-context-card{align-items:flex-start;flex-direction:column}}

/* V63.1 Fran voz */
.fran-composer{grid-template-columns:auto minmax(0,1fr) auto auto}
.fran-mic,.fran-speaker{min-width:46px;height:46px;padding:0;align-self:end;font-size:1.05rem}
.fran-mic.recording{animation:fran-pulse 1s infinite;outline:2px solid rgba(239,68,68,.45)}
.fran-voice-note{padding:7px 14px;border-top:1px solid var(--border);font-size:.84rem;min-height:30px}
@keyframes fran-pulse{50%{transform:scale(.94);opacity:.72}}
@media(max-width:760px){.fran-composer{grid-template-columns:auto minmax(0,1fr) auto}.fran-composer #fran-send{grid-column:1/-1;width:100%}.fran-mic,.fran-speaker{min-width:44px}}

/* Fran V2.3: tablas Markdown y respuestas estructuradas */
.fran-bubble .fran-table-wrap{overflow-x:auto;max-width:100%;margin:.55rem 0 .7rem;border:1px solid var(--border,#d8dde5);border-radius:10px;background:var(--card,#fff)}
.fran-bubble .fran-answer-table{border-collapse:collapse;width:100%;min-width:520px;font-size:.92em}
.fran-bubble .fran-answer-table th,.fran-bubble .fran-answer-table td{padding:.48rem .6rem;border-bottom:1px solid var(--border,#e3e6eb);text-align:left;vertical-align:top;white-space:normal}
.fran-bubble .fran-answer-table th{font-weight:700;background:rgba(127,127,127,.08);position:sticky;top:0}
.fran-bubble .fran-answer-table tr:last-child td{border-bottom:0}
.fran-bubble code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:rgba(127,127,127,.12);padding:.08rem .25rem;border-radius:4px}
.fran-bubble ul{margin:.4rem 0 .55rem 1.1rem;padding:0}
.fran-bubble .fran-md-gap{height:.5rem}

/* Fran V2.3: filtro natural en Clientes y Mapa */
.fran-natural-filter{min-width:min(520px,100%);flex:2 1 420px;border:1px solid var(--border,#ccd3dc);border-radius:9px;padding:.55rem .7rem;font:inherit;background:var(--card,#fff);color:inherit}
textarea.fran-natural-filter{width:100%;resize:vertical;box-sizing:border-box}
.fran-filter-active{display:flex;gap:.65rem;align-items:center;flex-wrap:wrap;margin:.5rem 0 .8rem;border-left:4px solid currentColor}
.fran-filter-active span{flex:1 1 360px}

/* V63.3.1 · Filtro Fran visible también en la vista de Clientes */
.fran-client-filter-card{margin:0 0 1rem;padding:1rem 1.1rem;border:1px solid var(--border,#ccd3dc)}
.fran-client-filter-form{display:grid;gap:.75rem}
.fran-client-filter-copy{display:flex;flex-direction:column;gap:.18rem}
.fran-client-filter-copy strong{font-size:1.03rem}
.fran-client-filter-controls{display:flex;gap:.55rem;align-items:center;flex-wrap:wrap}
.fran-client-filter-controls .fran-natural-filter{flex:1 1 520px;min-width:min(320px,100%)}
.fran-client-filter-result{display:flex;gap:.75rem;align-items:center;justify-content:space-between;flex-wrap:wrap;padding-top:.25rem}
.fran-client-filter-result span{flex:1 1 420px}
@media(max-width:720px){
  .fran-client-filter-controls{align-items:stretch}
  .fran-client-filter-controls .fran-natural-filter,.fran-client-filter-controls .btn{width:100%}
}
/* V63.4 · Catálogo de ayuda de Fran */
.fran-help-search{width:100%;margin:10px 0 8px;padding:9px 10px;border:1px solid var(--border,#d8dde3);border-radius:10px;background:var(--surface,#fff);color:inherit}.fran-help-catalog{display:flex;flex-direction:column;gap:7px;margin:8px 0 12px}.fran-help-section{border:1px solid var(--border,#e2e6ea);border-radius:10px;background:var(--surface-soft,#fafbfc);overflow:hidden}.fran-help-section>summary{cursor:pointer;font-weight:750;padding:10px 11px;list-style:none;display:flex;align-items:center;gap:6px}.fran-help-section>summary::after{content:'›';margin-left:auto;opacity:.55;transition:transform .15s ease}.fran-help-section[open]>summary::after{transform:rotate(90deg)}.fran-help-section>summary::-webkit-details-marker{display:none}.fran-help-actions{display:grid;gap:6px;padding:0 8px 9px}.fran-help-action,.fran-examples .fran-prompt{width:100%;text-align:left;white-space:normal;line-height:1.35;margin:0;padding:9px 10px;border-radius:9px}.fran-side .fran-help-catalog{max-height:none;overflow:visible;padding-right:0}.fran-conversations{margin-top:12px}.fran-conversations-body{padding:0 9px 10px}.fran-conversations-head{display:flex;justify-content:flex-end;margin-bottom:7px}.fran-conversations-body #fran-conv-search{width:100%;margin:0 0 9px;padding:8px 9px;border:1px solid var(--border,#d8dde3);border-radius:9px;background:var(--surface,#fff);color:inherit}@media(max-width:900px){.fran-side .fran-help-catalog{max-height:none;overflow:visible}}

/* V3.0 · Ayuda + Knowledge Engine */
.help-search-card{padding:16px}.help-search-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.help-search-form input{font:inherit;padding:13px 14px;border:1px solid var(--border,#d8dde3);border-radius:12px;background:var(--surface,#fff);color:inherit}.help-results-grid{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(0,1.2fr);gap:16px;margin-bottom:16px}.help-result{border:1px solid var(--border,#e2e6ea);border-radius:12px;margin:8px 0;background:var(--surface-soft,#fafbfc)}.help-result>summary{cursor:pointer;padding:11px 12px}.help-result>p,.help-result>ol,.help-result>.help-tip,.help-result>.help-action-list{margin:0 14px 12px}.help-tip{border-left:3px solid #8b93a1;padding-left:10px}.help-topic{border-bottom:1px solid var(--border,#e5e7eb);padding:2px 0 14px;margin-bottom:14px}.help-topic:last-child{border-bottom:0}.help-topic h3{margin:8px 0}.help-facts{display:grid;gap:6px}.help-facts>div{display:grid;grid-template-columns:minmax(120px,180px) 1fr;gap:8px;padding:6px 0;border-top:1px dashed var(--border,#e5e7eb)}.help-facts dt{font-weight:700}.help-facts dd{margin:0}.help-doc-list{display:grid;gap:10px}.help-doc{border:1px solid var(--border,#e5e7eb);border-radius:10px;padding:10px 12px}.help-doc p{margin:.45rem 0 0;white-space:pre-wrap}.help-manual-sections{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:8px}.help-action-list{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:12px}.help-action-list a{border:1px solid var(--border,#ddd);border-radius:999px;padding:6px 9px;text-decoration:none;color:inherit}.source-form .grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.source-form label{display:flex;flex-direction:column;gap:5px;font-weight:600}.source-form input,.source-form select,.source-form textarea{font:inherit;padding:9px 10px;border:1px solid var(--border,#d8dde3);border-radius:9px;background:var(--surface,#fff);color:inherit}.source-form .span2{grid-column:1/-1}.source-checks{display:flex;gap:14px;flex-wrap:wrap;margin:12px 0}.source-checks label{display:flex;align-items:center;gap:5px}.source-list{display:grid;gap:10px}.source-row{border:1px solid var(--border,#ddd);border-radius:12px;padding:0 12px}.source-row>summary{cursor:pointer;padding:12px 0}.source-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 0 14px}.btn.danger{background:#fee2e2;color:#991b1b}.source-form.compact{border-top:1px solid var(--border,#eee);padding-top:12px}
@media(max-width:800px){.help-results-grid{grid-template-columns:1fr}.help-search-form{grid-template-columns:1fr}.source-form .grid{grid-template-columns:1fr}.source-form .span2{grid-column:auto}.help-facts>div{grid-template-columns:1fr}.help-manual-sections{grid-template-columns:1fr}}
/* V3: se retira la experiencia interactiva de Fran. El backend legacy queda
   disponible por compatibilidad, pero no se muestra como función diaria. */
.fran-client-filter-card,.fran-filter-active,.clients-page .fran-natural-filter{display:none!important}
.fran-natural-filter{display:none!important}
