/* Tokens de marca (white-label). Defaults = paleta NEUTRA de fabrica del
   producto; brand.php?css=1 los sobreescribe por tenant CALCULANDO los
   matices (soft/line/deep/hover/rgb) desde brand_color_* en params.
   Los nombres --gold/--purple son historicos: significan primario/acento. */
:root{
  --gold:#2E7BFF;             /* primario */
  --gold-rgb:46,123,255;      /* primario en RGB (para rgba(...)) */
  --gold-soft:#edf4ff;        /* fondo suave del primario */
  --gold-soft-line:#c0d7ff;   /* borde sobre el fondo suave */
  --gold-line:#77a9ff;        /* borde marcado del primario */
  --gold-deep:#123166;        /* texto sobre el fondo suave */
  --gold-hover:#2565db;       /* hover del boton primario */
  --purple:#6C4FD8;           /* acento */
  --purple-rgb:108,79,216;
  --purple-soft:#f0ecfb;
  --purple-deep:#3f2e80;
  --purple-hover:#5c41c4;
  --ink:#101828;
  --ink-soft:#1a2438;         /* tinta aclarada (gradientes oscuros) */
  --on-gold:#ffffff;          /* texto sobre el primario (auto por luminancia) */
  --on-purple:#ffffff;        /* texto sobre el acento */
  --line:#e9e5ee;
  --muted:#6e6676;
  --bg:#f4f2f8;
  --surface:#ffffff;
  --surface-2:#f6f4fa;
  --shadow-sm:0 1px 2px rgba(21,15,20,.04),0 1px 3px rgba(21,15,20,.05);
  --shadow-md:0 4px 14px rgba(21,15,20,.07),0 2px 6px rgba(21,15,20,.04);
  --shadow-lg:0 18px 44px rgba(21,15,20,.13),0 6px 14px rgba(21,15,20,.06);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  color:var(--ink);-webkit-font-smoothing:antialiased;letter-spacing:-.005em;
  background:var(--bg);
  background-image:linear-gradient(180deg,#f7f5fb 0%,#f1eff6 100%);
  background-attachment:fixed;
}
button{font-family:inherit;cursor:pointer;}
input{font-family:inherit;}

/* ---- Layout app ---- */
.app{display:flex;min-height:100vh;}
.sidebar{
  width:240px;background:linear-gradient(180deg,#1e1620,#140e13);color:#e9e4ed;flex-shrink:0;
  display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;align-self:flex-start;overflow-y:auto;   /* fijo; scroll propio si la pantalla es baja (Ajustes/pie siempre alcanzables) */
}
.brand{display:flex;align-items:center;gap:10px;padding:18px 16px;border-bottom:1px solid rgba(255,255,255,.08);}
.brand-logo{
  height:42px;width:auto;border-radius:10px;flex-shrink:0;display:block;
  box-shadow:0 4px 12px rgba(0,0,0,.35);
}
.brand-name{font-weight:800;font-size:.98rem;line-height:1.1;}
.brand-sub{font-size:.68rem;color:#a99fb2;margin-top:2px;}
.nav{flex:1;display:flex;flex-direction:column;padding:10px 10px;overflow-y:auto;min-height:0;}
.nav-item{
  display:flex;align-items:center;gap:11px;padding:10px 12px;margin:1px 0;border-radius:10px;
  color:#c9c1d0;font-size:.9rem;font-weight:500;border:0;background:none;width:100%;text-align:left;
  position:relative;transition:background .15s,color .15s;
}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff;}
.nav-item.active{background:linear-gradient(90deg,rgba(var(--gold-rgb),.22),rgba(var(--gold-rgb),.06));color:#fff;box-shadow:inset 0 0 0 1px rgba(var(--gold-rgb),.2);}
.nav-item.active::before{content:'';position:absolute;left:-10px;top:9px;bottom:9px;width:3px;background:var(--gold);border-radius:0 3px 3px 0;}
.nav-ico{width:20px;text-align:center;}
.nav-group{margin-bottom:4px;}
.nav-group-label{font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.4);font-weight:700;padding:12px 12px 4px;}
.sidebar-foot{padding:12px 16px;border-top:1px solid rgba(255,255,255,.08);font-size:.78rem;}
.sidebar-foot .uname{font-weight:600;color:#fff;}
.sidebar-foot .urole{color:#a99fb2;font-size:.7rem;}
/* Empuja Ajustes al fondo del sidebar (desktop) + separador */
.nav-spacer{flex:1 1 auto;min-height:8px;}
.nav-div{height:1px;background:rgba(255,255,255,.10);margin:6px 10px;}
/* Sub-tabs de sección (barra horizontal bajo el topbar) */
.subnav{display:flex;gap:6px;overflow-x:auto;padding:12px 22px 0;scrollbar-width:thin;}
.subnav::-webkit-scrollbar{height:6px;}
.subnav-tab{padding:8px 14px;border-radius:9px;border:1px solid var(--line);background:#fff;color:var(--muted);
  font-weight:600;font-size:.85rem;white-space:nowrap;box-shadow:var(--shadow-sm);
  transition:background .14s,color .14s,border-color .14s;}
.subnav-tab:hover{color:var(--ink);border-color:var(--purple);}
.subnav-tab.active{background:var(--purple);color:#fff;border-color:var(--purple);box-shadow:0 2px 8px rgba(var(--purple-rgb),.28);}
/* Sub-tabs de estado dentro de Cargas (ya viven dentro del contenido, sin sangría extra) */
.load-status-tabs{padding:0 0 12px;}
/* Breadcrumb del topbar */
.crumb-sep{opacity:.4;margin:0 8px;font-weight:500;}
.crumb-sub{color:var(--muted);font-weight:600;}

.main{flex:1;display:flex;flex-direction:column;min-width:0;}
.topbar{
  position:sticky;top:0;z-index:30;
  background:rgba(255,255,255,.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);box-shadow:0 1px 16px rgba(21,15,20,.04);
  padding:13px 22px;display:flex;align-items:center;justify-content:space-between;gap:14px;
}
.topbar-title{font-size:1.1rem;font-weight:700;letter-spacing:-.01em;}
.topbar-logout{display:none;}   /* en desktop el logout vive en el sidebar; en movil aparece aqui */
.content{padding:22px;flex:1;}

/* ---- Botones ---- */
.btn{padding:9px 16px;border-radius:10px;font-weight:600;font-size:.88rem;border:1px solid transparent;
  transition:transform .14s ease,box-shadow .14s ease,background .14s ease;}
.btn:active{transform:translateY(0);}
.btn-primary{background:var(--gold);color:var(--on-gold);box-shadow:0 2px 8px rgba(var(--gold-rgb),.32);}
.btn-primary:hover{background:var(--gold-hover);transform:translateY(-1px);box-shadow:0 5px 16px rgba(var(--gold-rgb),.42);}
.btn-ghost{background:var(--surface);border-color:var(--line);color:var(--ink);box-shadow:var(--shadow-sm);}
.btn-ghost:hover{background:#faf9fc;transform:translateY(-1px);box-shadow:var(--shadow-md);}
.btn-block{display:block;width:100%;}

/* ---- Toggle de idioma ---- */
.lang-toggle{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.lang-toggle button{padding:6px 11px;background:#fff;border:0;font-size:.78rem;font-weight:600;color:var(--muted);}
.lang-toggle button.active{background:var(--purple);color:#fff;}
.lang-toggle .lang-globe{display:flex;align-items:center;padding:0 4px 0 8px;font-size:.9rem;}
.field-hint{font-size:.76rem;color:var(--muted);margin-top:4px;line-height:1.3;}
.field-err{border-color:#c0392b!important;box-shadow:0 0 0 3px #fbe6e3!important;}
.load-next{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px 0 4px;padding:8px 12px;background:var(--gold-soft);border:1px solid var(--gold-soft-line);border-radius:10px;}
.load-next .ns-tag{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--gold-deep);font-weight:700;}
.hos-savebar{position:sticky;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:12px 4px;margin-top:14px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;z-index:5;box-shadow:0 -6px 16px rgba(21,15,20,.07);}
.hos-day.collapsed .hos-fields,.hos-day.collapsed .hos-checks{display:none;}
.hos-day .hos-expand{font-size:.74rem;color:var(--purple);cursor:pointer;font-weight:600;}

/* ---- Cards / estados ---- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow-sm);}
.banner{background:linear-gradient(135deg,var(--gold-soft),#fff);border:1px solid var(--gold-soft-line);border-left:3px solid var(--gold);border-radius:12px;padding:13px 16px;margin-bottom:18px;font-size:.86rem;color:var(--gold-deep);box-shadow:var(--shadow-sm);}
.empty{text-align:center;padding:54px 20px;color:var(--muted);}
.empty .ico{font-size:46px;opacity:.5;margin-bottom:10px;}
.empty h3{margin:0 0 6px;color:var(--ink);}

/* ---- Auth (setup/login) ---- */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 30% 20%,var(--ink-soft),var(--ink));padding:20px;}
.auth-card{background:#fff;border-radius:18px;padding:30px;width:100%;max-width:380px;box-shadow:0 20px 60px rgba(0,0,0,.35);}
.auth-logo{display:block;width:210px;max-width:82%;height:auto;border-radius:14px;margin:0 auto 16px;box-shadow:var(--shadow-md);}
.auth-card h1{font-size:1.25rem;text-align:center;margin:0 0 4px;}
.auth-card .sub{text-align:center;color:var(--muted);font-size:.84rem;margin:0 0 20px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:.74rem;font-weight:600;color:#574f5e;margin-bottom:5px;text-transform:uppercase;letter-spacing:.04em;}
.field input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:9px;font-size:.92rem;outline:none;transition:.15s;}
.field input:focus{border-color:var(--purple);box-shadow:0 0 0 3px var(--purple-soft);}
.auth-err{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;font-size:.82rem;padding:9px 12px;border-radius:9px;margin-bottom:14px;}
.auth-foot{text-align:center;margin-top:16px;}

/* ---- Botones extra ---- */
.btn-purple{background:var(--purple);color:#fff;box-shadow:0 2px 8px rgba(var(--purple-rgb),.32);}
.btn-purple:hover{background:var(--purple-hover);transform:translateY(-1px);box-shadow:0 5px 16px rgba(var(--purple-rgb),.42);}
.btn-danger{background:var(--surface);color:#c0392b;border-color:#f3c0ba;box-shadow:var(--shadow-sm);}
.btn-danger:hover{background:#fdf0ee;transform:translateY(-1px);box-shadow:var(--shadow-md);}
.btn-sm{padding:6px 11px;font-size:.8rem;}
/* Banner de licencia (topbar) */
.lic-banner{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:10px 22px;font-size:.86rem;font-weight:600;}
.lic-banner.lic-info{background:var(--gold-soft);color:var(--gold-deep);border-bottom:1px solid var(--gold-soft-line);}
.lic-banner.lic-warn{background:#fff4dc;color:#8a5a00;border-bottom:1px solid #f0dca6;}
.lic-banner.lic-bad{background:#fdecea;color:#a3341f;border-bottom:1px solid #f3c6bd;}
.lic-banner .btn-sm{background:var(--ink);color:#fff;}

/* ---- Grid de formulario ---- */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.form-grid .full{grid-column:1 / -1;}
.field select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:9px;font-size:.92rem;background:#fff;outline:none;}
.field select:focus{border-color:var(--purple);box-shadow:0 0 0 3px var(--purple-soft);}
.field .row-inline{display:flex;align-items:center;gap:8px;}
.field .suffix{color:var(--muted);font-size:.82rem;white-space:nowrap;}
.check-row{display:flex;align-items:center;gap:9px;}
.check-row input{width:18px;height:18px;}

/* ---- Cabecera de vista ---- */
.view-head{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px;flex-wrap:wrap;}
.view-head h2{margin:0;font-size:1.05rem;}

/* ---- Cards de camion ---- */
.truck-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;}
.truck-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;position:relative;}
.truck-card .unit{font-size:1.1rem;font-weight:800;}
.truck-card .sub{color:var(--muted);font-size:.84rem;margin-top:2px;}
.truck-meta{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0;}
.tag{font-size:.72rem;font-weight:600;padding:3px 9px;border-radius:9999px;background:#f1edf3;color:#574f5e;}
.tag.gold{background:var(--gold-soft);color:var(--gold-deep);}
.tag.purple{background:var(--purple-soft);color:var(--purple-deep);}
.tag.gray{background:#eef0f2;color:#64748b;}
.truck-card .meter{font-size:.86rem;color:var(--ink);margin-top:4px;}
.truck-card .meter b{font-weight:700;}
.truck-actions{display:flex;gap:8px;margin-top:12px;}

/* ---- Tabla simple ---- */
.tbl{width:100%;border-collapse:collapse;}
.tbl th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--line);}
.tbl td{padding:11px 12px;border-bottom:1px solid #f3f0f6;font-size:.9rem;}
.tbl tbody tr{transition:background .12s;}
.tbl tbody tr:hover{background:#faf9fc;}
.tbl tbody tr:last-child td{border-bottom:0;}

/* ---- KPIs ---- */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:8px;}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:15px 16px;box-shadow:var(--shadow-sm);transition:transform .16s ease,box-shadow .16s ease;}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.kpi .k-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;}
.kpi .k-val{font-size:1.55rem;font-weight:800;margin-top:5px;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}
.kpi .k-val.pos{color:#1f9254;} .kpi .k-val.neg{color:#c0392b;}

/* ---- Tablero: titular + "necesita tu atencion" ---- */
.dash-hero{display:flex;justify-content:space-between;gap:18px 28px;flex-wrap:wrap;align-items:center;
  background:linear-gradient(135deg,var(--ink),#2c2031);color:#fff;border:none;}
.dash-hero .hero-eyebrow{font-size:.72rem;letter-spacing:.04em;color:#cbbce0;text-transform:uppercase;font-weight:600;margin-bottom:8px;}
.dash-hero .hero-net{font-size:2.6rem;font-weight:800;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}
.dash-hero .hero-net.pos{color:#7ee2a8;} .dash-hero .hero-net.neg{color:#ff9b8a;}
.dash-hero .hero-status{font-size:.92rem;margin-top:9px;color:#efe9f5;font-weight:600;}
.dash-hero .hero-delta{display:inline-block;margin-top:10px;font-size:.8rem;font-weight:700;padding:4px 11px;border-radius:999px;}
.dash-hero .hero-delta.up{background:rgba(126,226,168,.18);color:#7ee2a8;}
.dash-hero .hero-delta.down{background:rgba(255,155,138,.18);color:#ff9b8a;}
.dash-hero .hero-delta.flat{background:rgba(255,255,255,.12);color:#d8cee6;}
.dash-hero .hero-aside{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;}
.dash-hero .ha-item{display:flex;flex-direction:column;gap:3px;}
.dash-hero .ha-item span{font-size:.68rem;color:#bdb0cf;text-transform:uppercase;letter-spacing:.04em;font-weight:600;}
.dash-hero .ha-item b{font-size:1.18rem;font-weight:700;font-variant-numeric:tabular-nums;}
.dash-hero .btn-ghost{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.22);color:#fff;box-shadow:none;}
.dash-hero .btn-ghost:hover{background:rgba(255,255,255,.2);}
.dash-h{margin:20px 0 8px;font-size:1rem;}
.dash-hero .hero-subline{font-size:.8rem;color:#cbbce0;margin-top:9px;}
.op-actions{display:flex;flex-direction:column;gap:8px;}
.op-action{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--purple);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow-sm);}
.op-action .op-route{font-weight:700;font-size:.95rem;}
.attn-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;}
.attn-card{display:flex;align-items:center;gap:13px;text-align:left;width:100%;cursor:pointer;font:inherit;
  background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--gold);
  border-radius:14px;padding:14px 16px;box-shadow:var(--shadow-sm);transition:transform .12s ease,box-shadow .12s ease;}
.attn-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.attn-card.urgent{border-left-color:#c0392b;background:#fdf3f1;}
.attn-card .attn-ico{font-size:1.6rem;line-height:1;}
.attn-card .attn-b{flex:1;}
.attn-card .attn-val{font-size:1.4rem;font-weight:800;line-height:1.05;font-variant-numeric:tabular-nums;color:var(--ink);}
.attn-card .attn-t{font-size:.86rem;font-weight:600;color:var(--ink);margin-top:1px;}
.attn-card .attn-s{font-size:.76rem;color:var(--muted);margin-top:2px;}
.attn-card .attn-arrow{font-size:1.5rem;color:var(--muted);font-weight:300;}
.attn-clear{text-align:center;color:#1f7a47;font-weight:600;background:#e9f7ef;border-color:#bfe6cf;}

/* ---- Filtros / toolbar ---- */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px;}
.toolbar select{padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:.88rem;}
.load-search{flex:1;min-width:180px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;font-size:.88rem;outline:none;}
.load-search:focus{border-color:var(--purple);box-shadow:0 0 0 3px var(--purple-soft);}

/* ---- Load cards ---- */
.load-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;}
.load-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;}
.load-route{font-size:1rem;font-weight:700;text-transform:uppercase;}
#m_origin,#m_destination{text-transform:uppercase;}
.load-route .arrow{color:var(--gold);margin:0 6px;}
.load-sub{color:var(--muted);font-size:.82rem;margin-top:3px;}
.load-tags{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0;}
.st{font-size:.7rem;font-weight:700;padding:3px 9px;border-radius:9999px;}
.st-disponible{background:#eef0f2;color:#475569;}
.st-asignada{background:#e7eefb;color:#2c5cc5;}
.st-en_transito{background:#fff3d6;color:#9a6b12;}
.st-entregada{background:#e3f5ea;color:#1f7a47;}
.st-facturada{background:var(--purple-soft);color:var(--purple-deep);}
.st-pagada{background:#dff3df;color:#226b2b;}
/* Pildoras de la liquidacion del conductor (el JS emite estas clases en
   masculino; sin ellas la pildora salia sin color). */
.st-pagado{background:#dff3df;color:#226b2b;}
.st-pendiente{background:#fff3d6;color:#9a6b12;}
.st-cancelada{background:#fbe6e3;color:#a23b2d;}
/* Importador CSV: contenedor de tabla con scroll + estado por fila */
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;}
.tablewrap table{width:100%;border-collapse:collapse;font-size:.85rem;}
.tablewrap th{text-align:left;padding:8px 12px;background:var(--bg);color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line);}
.tablewrap td{padding:7px 12px;border-bottom:1px solid var(--line);}
tr.imp-err td{background:#fdecea;} tr.imp-dup td{background:#fff8e6;}
.st-overdue{background:#fbe6e3;color:#a23b2d;}
.st-soon{background:#fff3d6;color:#9a6b12;}
.st-ok{background:#e3f5ea;color:#1f7a47;}
.alert-card{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:10px;padding:12px 14px;margin-bottom:8px;}
.alert-card.overdue{border-left-color:#c0392b;}
.alert-card.soon{border-left-color:var(--gold);}
.alert-card .ainfo{font-size:.86rem;}
.alert-card .ameta{font-size:.76rem;color:var(--muted);margin-top:2px;}

/* ---- Mantenimiento por camion (rediseño) ---- */
.mtruck{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px;}
.mtruck-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;border-bottom:1px solid #f1edf3;padding-bottom:12px;margin-bottom:12px;}
.mtruck-head .unit{font-size:1.15rem;font-weight:800;}
.mtruck-head .plate{font-size:.76rem;color:var(--muted);}
.meter-edit{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.meter-edit label{font-size:.72rem;font-weight:600;color:#574f5e;text-transform:uppercase;}
.meter-edit input{width:110px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:.9rem;}
.meter-note{font-size:.72rem;color:#94a3b8;margin-top:6px;}
.svc{padding:11px 0;border-bottom:1px solid #f6f4f7;}
.svc:last-child{border-bottom:0;}
.svc-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px;}
.svc-name{font-weight:600;font-size:.92rem;}
.svc-sub{font-size:.74rem;color:var(--muted);}
.svc-bar{height:8px;border-radius:6px;background:#eee7f1;overflow:hidden;margin:6px 0;}
.svc-bar span{display:block;height:100%;border-radius:6px;}
.svc-bar span.ok{background:#3aa76a;}
.svc-bar span.soon{background:var(--gold);}
.svc-bar span.overdue{background:#c0392b;}
.svc-actions{display:flex;gap:8px;margin-top:4px;}
.fin-row{display:flex;justify-content:space-between;align-items:center;padding-top:10px;border-top:1px solid #f1edf3;margin-top:10px;}
.fin-net{font-size:1.25rem;font-weight:800;}
.fin-net.pos{color:#1f9254;} .fin-net.neg{color:#c0392b;}
.margin-badge{font-size:.72rem;font-weight:700;padding:3px 9px;border-radius:9999px;}
.margin-badge.pos{background:#e3f5ea;color:#1f7a47;} .margin-badge.neg{background:#fbe6e3;color:#a23b2d;}
.breakdown{margin-top:10px;font-size:.8rem;color:#574f5e;display:none;}
.breakdown.open{display:block;}
.breakdown div{display:flex;justify-content:space-between;padding:2px 0;}
.breakdown .neg{color:#c0392b;}
.link-toggle{font-size:.78rem;color:var(--purple);cursor:pointer;font-weight:600;margin-top:8px;display:inline-block;}
.addon-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.addon-row label{flex:1;margin:0;font-size:.86rem;text-transform:none;letter-spacing:0;font-weight:500;color:var(--ink);}
.addon-row input{width:110px;}
.stop-row{display:flex;gap:6px;margin-bottom:6px;align-items:center;}
.stop-row .st-type{flex:0 0 90px;}
.stop-row input{flex:1;min-width:60px;padding:7px 8px;border:1px solid var(--line);border-radius:7px;font-size:.82rem;}
.stop-row select{padding:7px 8px;border:1px solid var(--line);border-radius:7px;font-size:.82rem;}
.stop-row .btn-danger{flex:0 0 auto;padding:4px 9px;}
.load-stops{margin-top:8px;font-size:.82rem;color:#574f5e;border-left:3px solid var(--gold);padding-left:10px;}
.load-stops div{padding:1px 0;}
@media (max-width:720px){ .stop-row{flex-wrap:wrap;} .stop-row input{flex:1 1 40%;} }

/* ---- Documentos de carga ---- */
.docs{margin-top:12px;padding-top:10px;border-top:1px solid #f1edf3;}
.docs-head{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:8px;}
.doc-chip{display:inline-flex;align-items:center;gap:5px;background:var(--purple-soft);color:var(--purple-deep);border-radius:8px;padding:5px 9px;font-size:.78rem;font-weight:600;cursor:pointer;margin:0 4px 6px 0;}
.doc-chip:hover{background:#e6d9f5;}
.doc-x{cursor:pointer;color:#c0392b;font-weight:700;margin:0 8px 0 -2px;font-size:.8rem;}

/* ---- Libro semanal ---- */
.week-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.week-range{font-weight:700;font-size:1rem;}
.week-grid{display:grid;gap:10px;}
.week-day{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:grid;grid-template-columns:120px 1fr 110px 1fr;gap:10px;align-items:center;}
.week-day.today{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold-soft);}
.week-day .dname{font-weight:700;}
.week-day .ddate{font-size:.74rem;color:var(--muted);}
.week-day select,.week-day input{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:.86rem;width:100%;}
@media (max-width:720px){
  .week-day{grid-template-columns:1fr 1fr;}
  .week-day .dlabel{grid-column:1 / -1;}
}

/* ---- Tarjeta de tiempo HOS ---- */
.hos-header{background:linear-gradient(135deg,var(--purple-soft),#fff);border:1px solid #e3d4f2;border-radius:14px;padding:16px 18px;margin-bottom:14px;}
.hos-header h2{margin:0 0 4px;font-size:1.1rem;color:var(--purple-deep);}
.hos-legal{font-size:.72rem;color:#6b6470;line-height:1.4;}
.hos-limits{font-size:.74rem;color:var(--gold-deep);background:var(--gold-soft);border-radius:8px;padding:6px 10px;margin-top:8px;display:inline-block;}
.hos-meta{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;font-size:.84rem;}
.hos-meta b{color:var(--ink);}
.hos-day{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;}
.hos-day.today{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold-soft);}
.hos-day-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;}
.hos-day-head .dn{font-weight:800;color:var(--purple-deep);font-size:1rem;}
.hos-day-head .dd{font-size:.76rem;color:var(--muted);}
.hos-fields{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.hos-fields .fld{display:flex;flex-direction:column;gap:3px;}
.hos-fields label{font-size:.66rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:#574f5e;}
.hos-fields input,.hos-fields select{padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:.84rem;width:100%;}
.hos-checks{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;padding-top:10px;border-top:1px solid #f1edf3;}
.hos-checks label{display:flex;align-items:center;gap:6px;font-size:.8rem;font-weight:500;color:var(--ink);}
.hos-checks input{width:17px;height:17px;}
.hos-cert{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;margin-top:14px;}
.hos-cert .ct{font-size:.84rem;color:#574f5e;font-style:italic;margin-bottom:12px;}
.hos-cert-done{background:#e3f5ea;color:#1f7a47;border:1px solid #bfe6cf;border-radius:8px;padding:8px 12px;font-size:.82rem;font-weight:600;margin-bottom:12px;}
@media (max-width:720px){
  .hos-fields{grid-template-columns:repeat(2,1fr);}
  .hos-fields .fld input,.hos-fields .fld select{font-size:16px;padding:10px 11px;}  /* mata auto-zoom iOS + dedo */
  .hos-checks{gap:16px 18px;}
  .hos-checks input[type=checkbox]{width:22px;height:22px;}
  .hos-checks label{font-size:.86rem;}
  .hos-checks input[type=text]{font-size:16px!important;}
  .doc-x{font-size:1.1rem;padding:4px 6px;}
}

/* ---- Modal ---- */
/* El modal va SIEMPRE encima de todo (drawer 70/71, burbuja IA 80): si no, queda tapado. */
.modal-backdrop{position:fixed;inset:0;background:rgba(21,15,20,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;animation:tmsFade .16s ease;}
.modal{background:var(--surface);border-radius:18px;width:100%;max-width:560px;max-height:90vh;max-height:calc(100dvh - 24px);overflow-y:auto;box-shadow:var(--shadow-lg);animation:tmsPop .18s cubic-bezier(.2,.8,.2,1);padding-bottom:env(safe-area-inset-bottom,0px);}
.modal-head{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;}
.modal-head h3{margin:0;font-size:1.05rem;}
.modal-x{border:0;background:none;font-size:1.4rem;color:var(--muted);line-height:1;cursor:pointer;}
.modal-body{padding:20px;}
.modal-foot{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;}

/* ---- Toast ---- */
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:11px 20px;border-radius:10px;font-size:.88rem;font-weight:600;z-index:110;box-shadow:0 10px 30px rgba(0,0,0,.3);opacity:0;transition:opacity .2s,transform .2s;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(-4px);}
.toast.err{background:#c0392b;}

@media (max-width:720px){
  .form-grid{grid-template-columns:1fr;}
  /* 16px mata el auto-zoom de iOS al enfocar; área táctil mayor */
  .field input,.field select,.field textarea,.addon-row input{font-size:16px;padding:12px;}
  /* Cotizador en movil: el resultado fluye DEBAJO del formulario (no fijo, no tapa los campos) */
  .quote-grid{display:flex;flex-direction:column;}
  .quote-grid #quoteResult{margin-top:6px;box-shadow:var(--shadow-md);border:2px solid var(--gold);}
  .quote-grid .form-grid{grid-template-columns:1fr;}
  .quote-answer .qa-rate{font-size:1.9rem;}
  .addon-row{flex-wrap:wrap;}
  .addon-row input{width:100%;}
  #qLaneHint:empty{margin:0;min-height:0;}
  .dash-2col{grid-template-columns:1fr !important;}
  .modal{max-width:100%;}
  .toast{bottom:22px;}
  .topbar-logout{display:inline-flex;align-items:center;}
  /* Menu como barra SUPERIOR fija (antes era inferior) */
  .sidebar{width:100%;position:fixed;top:0;bottom:auto;left:0;height:auto;flex-direction:row;
    z-index:40;border-bottom:1px solid rgba(255,255,255,.12);}
  .brand,.sidebar-foot{display:none;}
  .nav{display:flex;flex-direction:row;padding:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
  .nav::-webkit-scrollbar{display:none;}
  .nav-spacer,.nav-div{display:none;}    /* en móvil Ajustes fluye en línea con el resto */
  .subnav{padding:10px 12px 0;}          /* sub-tabs de sección más compactas en móvil */
  .nav-item{flex:1 0 auto;width:auto;min-width:62px;flex-direction:column;gap:3px;font-size:.62rem;padding:8px 4px;justify-content:center;}
  .nav-item.active::before{left:7px;right:7px;top:auto;bottom:0;width:auto;height:3px;border-radius:2px 2px 0 0;}
  .nav-ico{font-size:1.1rem;}
  /* El topbar (titulo/idioma/salir) se pega justo debajo del menu */
  .topbar{top:56px;}
  .topbar-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:0 1 auto;}  /* breadcrumb no desborda; recorta con … si es muy largo */
  .main{padding-top:56px;padding-bottom:0;}
}

/* ===== Mejoras de fluidez ===== */
/* Animaciones base */
@keyframes tmsFade{from{opacity:0}to{opacity:1}}
@keyframes tmsRise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes tmsPop{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
@keyframes tmsSpin{to{transform:rotate(360deg)}}
@keyframes tmsShimmer{100%{background-position:-200% 0}}

/* Fade suave del contenido al cambiar de vista / recargar datos */
#viewBody.fade{animation:tmsRise .18s ease both;}

/* Spinner (carga) */
.spin{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:tmsSpin .6s linear infinite;vertical-align:-2px;}
.spin-lg{width:30px;height:30px;border-width:3px;color:var(--purple);}
.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:54px 20px;color:var(--muted);}

/* Botón ocupado (Guardando…) */
.btn[disabled]{opacity:.65;cursor:default;pointer-events:none;}
.btn .spin{margin-right:6px;color:currentColor;}

/* Skeleton (placeholders mientras carga) */
.skel{background:linear-gradient(90deg,#eee 25%,#f5f5f5 37%,#eee 63%);background-size:200% 100%;animation:tmsShimmer 1.2s ease-in-out infinite;border-radius:8px;}
.skel-line{height:12px;margin:8px 0;}
.skel-card{height:96px;margin-bottom:12px;border-radius:14px;}

/* Búsqueda en listas (reusa el look de load-search) */
.list-search{flex:1;min-width:180px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;font-size:.88rem;outline:none;}
.list-search:focus{border-color:var(--purple);box-shadow:0 0 0 3px var(--purple-soft);}

/* Accesibilidad: si el usuario pide menos movimiento, lo respetamos */
@media (prefers-reduced-motion: reduce){
  *,#viewBody.fade,.modal,.modal-backdrop{animation:none !important;transition:none !important;}
  .spin{animation:tmsSpin .6s linear infinite;}
}

/* ===== Refinamiento moderno (profundidad) ===== */
/* Tarjetas interactivas: sombra + elevacion al pasar el cursor */
.truck-card,.load-card,.mtruck{border-radius:16px;box-shadow:var(--shadow-sm);transition:transform .16s ease,box-shadow .16s ease;}
.truck-card:hover,.load-card:hover,.mtruck:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}

/* Inputs de formulario mas suaves (relleno tenue dentro de tarjetas/modales) */
.field input:not([type=checkbox]),.field select,.field textarea{
  background:var(--surface-2);border:1px solid var(--line);border-radius:10px;
  transition:background .15s,border-color .15s,box-shadow .15s;
}
.field input:not([type=checkbox]):focus,.field select:focus,.field textarea:focus{
  background:#fff;border-color:var(--purple);box-shadow:0 0 0 3px var(--purple-soft);
}

/* Buscadores y filtros: blancos y nitidos sobre el fondo gris */
.toolbar select,.load-search,.list-search{background:#fff;box-shadow:var(--shadow-sm);border-radius:10px;}
.toolbar select:focus{border-color:var(--purple);box-shadow:0 0 0 3px var(--purple-soft);outline:none;}

/* Accesibilidad: anillo de foco visible por teclado */
.btn:focus-visible,.nav-item:focus-visible,.lang-toggle button:focus-visible{outline:2px solid var(--purple);outline-offset:2px;}

/* Login: tarjeta mas elevada */
.auth-card{box-shadow:var(--shadow-lg);border-radius:20px;}

/* Micro-interacciones */
.doc-chip{transition:background .15s,transform .15s;}
.doc-chip:hover{transform:translateY(-1px);}
.alert-card{box-shadow:var(--shadow-sm);border-radius:12px;}
.tag{border:1px solid rgba(21,15,20,.04);}

/* En la barra inferior movil los items van a ras (sin pill redondeado) */
@media (max-width:720px){
  .nav{padding:0;}
  .nav-item{margin:0;border-radius:0;}
}

/* Cotizador: formulario + resultado lado a lado */
.quote-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;}
@media (max-width:860px){ .quote-grid{grid-template-columns:1fr;} }
/* Cotizador: subtítulos de sección, respuesta clara, piso y avisos */
.form-sec{grid-column:1/-1;margin:8px 0 0;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--purple);font-weight:700;border-top:1px solid var(--line);padding-top:12px;}
.form-grid .form-sec:first-child{border-top:none;padding-top:0;margin-top:0;}
.quote-answer{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:flex-end;justify-content:space-between;padding:2px 0 14px;border-bottom:1px solid var(--line);margin-bottom:12px;}
.quote-answer .qa-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600;margin-bottom:3px;}
.quote-answer .qa-rate{font-size:2.1rem;font-weight:800;color:#b8902f;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums;}
.quote-answer .qa-aside{text-align:right;}
.quote-answer .qa-profit{font-size:1.5rem;font-weight:800;line-height:1.05;font-variant-numeric:tabular-nums;}
.quote-answer .qa-profit.pos,.quote-answer .qa-margin.pos{color:#1f9254;}
.quote-answer .qa-profit.neg,.quote-answer .qa-margin.neg{color:#c0392b;}
.quote-answer .qa-margin{font-size:.82rem;font-weight:600;}
.quote-floor{background:var(--gold-soft);border:1px solid var(--gold-soft-line);border-left:3px solid var(--gold);color:var(--gold-deep);border-radius:10px;padding:10px 13px;font-size:.84rem;font-weight:600;margin-bottom:12px;}
.note-warn{background:var(--gold-soft);border:1px solid var(--gold-soft-line);color:var(--gold-deep);border-radius:10px;padding:10px 13px;font-size:.84rem;margin-bottom:12px;}

/* Liquidación semanal del conductor: tarjeta con desglose claro (garantía vs millas + bono) */
.settle-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;}
.settle-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow-sm);}
.settle-top{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.settle-top b{font-size:1.02rem;}
.settle-sub{color:var(--muted);font-size:.77rem;margin:3px 0 10px;line-height:1.4;}
.settle-calc{border-top:1px solid var(--line);padding-top:6px;}
.pay-row{display:flex;justify-content:space-between;gap:10px;padding:4px 0;font-size:.9rem;align-items:baseline;}
.pay-row.on{background:var(--gold-soft);border-radius:8px;padding:6px 9px;margin:2px -5px;font-weight:700;}
.pay-dim{color:var(--muted);font-size:.84em;font-weight:400;}
.pay-win{color:var(--gold-deep);font-weight:700;font-size:.74em;background:#fff;border:1px solid var(--gold-line);padding:1px 6px;border-radius:6px;white-space:nowrap;}
.pay-total{border-top:1px solid var(--line);margin-top:6px;padding-top:9px;font-weight:800;font-size:1.02rem;}
.settle-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}

/* ===== Cargas: tabla paginada + detalle (Fase 2) ===== */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-sm);}
.loads-tbl{width:100%;border-collapse:collapse;}
.loads-tbl tbody tr.load-row{cursor:pointer;}
.loads-tbl td.num,.loads-tbl th.num{text-align:right;white-space:nowrap;}
.loads-tbl .nowrap{white-space:nowrap;}
.loads-tbl .fin-net{font-size:.9rem;font-weight:700;}
.row-route{font-weight:700;text-transform:uppercase;font-size:.9rem;}
.row-route .arrow{color:var(--gold);margin:0 4px;}
.doc-ind{font-size:.72rem;font-weight:600;color:var(--muted);}
.doc-ind.ok{color:#1f7a47;} .doc-ind.warn{color:#a23b2d;}
.pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px;}
.pager-info{color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums;}

/* Drawer de detalle (lateral en desktop, pantalla completa en móvil) */
body.drawer-open{overflow:hidden;}
.drawer-backdrop{position:fixed;inset:0;background:rgba(21,15,20,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:70;animation:tmsFade .16s ease;}
.drawer{position:fixed;top:0;right:0;height:100vh;height:100dvh;width:min(560px,100%);background:var(--surface);box-shadow:var(--shadow-lg);z-index:71;overflow-y:auto;display:flex;flex-direction:column;animation:drawerIn .22s cubic-bezier(.2,.8,.2,1);padding-bottom:env(safe-area-inset-bottom,0px);}
@keyframes drawerIn{from{transform:translateX(100%)}to{transform:none}}
.drawer-head{position:sticky;top:0;background:var(--surface);border-bottom:1px solid var(--line);padding:16px 20px;z-index:2;}
.dw-head-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.drawer-close{border:0;background:none;font-size:1.15rem;color:var(--muted);cursor:pointer;line-height:1;padding:2px 6px;}
.drawer-route{font-size:1.05rem;font-weight:800;text-transform:uppercase;letter-spacing:-.01em;}
.drawer-route .arrow{color:var(--gold);margin:0 5px;}
.drawer-chips{display:flex;flex-wrap:wrap;gap:6px;margin:9px 0 0;}
.drawer-next{margin-top:12px;}
.drawer-next .btn{width:100%;}
.drawer-sec{padding:16px 20px;border-bottom:1px solid var(--line);}
.drawer-sec:last-child{border-bottom:0;}
.drawer-sec h4{margin:0 0 10px;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;}
.dw-row{display:flex;justify-content:space-between;gap:14px;padding:5px 0;font-size:.88rem;border-bottom:1px solid #f6f4fa;}
.dw-row:last-child{border-bottom:0;}
.dw-row>span:first-child{color:var(--muted);flex-shrink:0;}
.dw-row>span:last-child{text-align:right;font-weight:500;}
.dw-money-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;}
.dw-money-lbl{font-size:.72rem;color:var(--muted);font-weight:600;text-transform:uppercase;}
.dw-money-top .fin-net{font-size:1.5rem;}
.dw-acts{display:flex;flex-direction:column;gap:11px;}
.dw-act{display:flex;gap:10px;align-items:flex-start;font-size:.87rem;}
.dw-act-ico{width:20px;text-align:center;flex-shrink:0;}
.dw-menu{position:relative;}
.dw-menu-pop{position:absolute;right:0;top:calc(100% + 4px);background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:6px;min-width:190px;z-index:3;display:flex;flex-direction:column;gap:2px;}
.dw-menu-item{display:block;width:100%;text-align:left;border:0;background:none;padding:9px 12px;border-radius:8px;font-size:.88rem;color:var(--ink);cursor:pointer;}
.dw-menu-item:hover{background:var(--surface-2);}
.dw-menu-item.danger{color:#c0392b;}
@media (max-width:720px){
  .drawer{width:100%;}
  .loads-tbl .col-opt{display:none;}
  .loads-tbl td,.loads-tbl th{padding:9px 8px;}
  .loads-tbl td.col-next .btn{padding:6px 9px;font-size:.8rem;}
}

/* ===== Tablero "Para hoy" (Fase 3) ===== */
.today-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;}
.today-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:12px;padding:12px 15px;box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .14s ease,box-shadow .14s ease;}
.today-row:hover{transform:translateY(-1px);box-shadow:var(--shadow-md);}
.today-row.urgent{border-left-color:#c0392b;background:#fdf3f1;}
.today-row .tr-ico{font-size:1.3rem;width:26px;text-align:center;flex-shrink:0;}
.today-row .tr-main{display:flex;flex-direction:column;flex:1;min-width:0;}
.today-row .tr-label{font-weight:600;font-size:.92rem;}
.today-row .tr-sub{font-size:.76rem;color:var(--muted);}
.today-row .tr-val{font-weight:800;font-size:1rem;font-variant-numeric:tabular-nums;white-space:nowrap;}
.today-row .tr-arrow{color:var(--muted);font-size:1.15rem;flex-shrink:0;}
.more-analysis{margin-top:18px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden;}
.more-analysis>summary{cursor:pointer;padding:13px 16px;font-weight:700;font-size:.92rem;list-style:none;}
.more-analysis>summary::-webkit-details-marker{display:none;}
.more-analysis>summary::before{content:'▸ ';color:var(--purple);}
.more-analysis[open]>summary::before{content:'▾ ';}
.more-analysis .ma-body{padding:0 16px 16px;}

/* ===== Menú ⋯ de fila + action-sheet (Fase 3 paso 2) ===== */
.rowmenu{padding:5px 11px;font-size:1.05rem;line-height:1;font-weight:700;}
tr.rowclick{cursor:pointer;}
.truck-card.rowclick{cursor:pointer;}
.action-sheet{display:flex;flex-direction:column;gap:7px;}
.sheet-item{display:block;width:100%;text-align:left;border:1px solid var(--line);background:var(--surface);padding:12px 14px;border-radius:10px;font-size:.92rem;font-weight:600;color:var(--ink);cursor:pointer;transition:background .14s,border-color .14s;}
.sheet-item:hover{background:var(--surface-2);}
.sheet-item.danger{color:#c0392b;border-color:#f0c9c2;}
.sheet-item.danger:hover{background:#fdf3f1;}

/* ===== Operador "Mi día" (Fase 4B): pantallas móviles grandes ===== */
.myday-h{font-size:1.15rem;font-weight:800;margin:0 0 14px;}
.myday-sub{font-size:.82rem;font-weight:700;color:var(--muted);margin:18px 0 10px;text-transform:uppercase;letter-spacing:.03em;}
.myday-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow-sm);margin-bottom:14px;}
.myday-route{font-size:1.12rem;font-weight:800;text-transform:uppercase;letter-spacing:-.01em;}
.myday-route .arrow{color:var(--gold);margin:0 5px;}
.myday-tags{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0;}
.myday-next{display:block;width:100%;padding:16px;font-size:1.05rem;margin-top:12px;border-radius:12px;}
.myday-docs{display:flex;gap:10px;margin-top:12px;}
.myday-doc{flex:1;padding:13px;font-size:.9rem;border-radius:11px;}
.myday-report{margin-top:8px;color:#9a6b12;}
.myweek-nav{justify-content:space-between;align-items:center;}
.myweek-stats{text-align:center;color:var(--muted);font-size:.86rem;margin-top:12px;font-variant-numeric:tabular-nums;}

/* ===== Asistente IA flotante (Fase 5A) ===== */
.ai-fab{position:fixed;right:20px;bottom:20px;width:56px;height:56px;border-radius:50%;background:var(--purple);color:#fff;font-size:1.5rem;border:0;box-shadow:var(--shadow-lg);cursor:pointer;z-index:80;display:flex;align-items:center;justify-content:center;transition:transform .15s ease;}
.ai-fab:hover{transform:scale(1.06);}
.ai-panel{position:fixed;right:20px;bottom:88px;width:min(380px,calc(100vw - 40px));height:min(560px,calc(100vh - 130px));background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);z-index:80;display:flex;flex-direction:column;overflow:hidden;animation:tmsPop .18s ease;}
.ai-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);font-weight:700;background:linear-gradient(90deg,var(--purple-soft),var(--surface));}
.ai-close{border:0;background:none;font-size:1.1rem;color:var(--muted);cursor:pointer;line-height:1;}
.ai-body{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;}
.ai-hello{color:var(--muted);font-size:.9rem;text-align:center;padding:24px 12px;}
.ai-msg{max-width:86%;padding:10px 13px;border-radius:14px;font-size:.9rem;line-height:1.45;}
.ai-u{align-self:flex-end;background:var(--gold-soft);border:1px solid var(--gold-soft-line);color:var(--gold-deep);border-bottom-right-radius:4px;}
.ai-a{align-self:flex-start;background:var(--surface-2);border:1px solid var(--line);border-bottom-left-radius:4px;}
.ai-typing{display:flex;gap:4px;align-items:center;}
.ai-typing span{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:aiblink 1.2s infinite both;}
.ai-typing span:nth-child(2){animation-delay:.2s;}
.ai-typing span:nth-child(3){animation-delay:.4s;}
@keyframes aiblink{0%,80%,100%{opacity:.3}40%{opacity:1}}
.ai-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 10px;}
.ai-chip{border:1px solid var(--line);background:var(--surface);color:var(--purple);border-radius:9999px;padding:7px 12px;font-size:.8rem;font-weight:600;cursor:pointer;}
.ai-chip:hover{background:var(--purple-soft);}
.ai-input{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line);}
.ai-input input{flex:1;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:.9rem;outline:none;}
.ai-input input:focus{border-color:var(--purple);box-shadow:0 0 0 3px var(--purple-soft);}
.ai-disc{font-size:.68rem;color:var(--muted);padding:2px 14px 10px;line-height:1.3;}
@media (max-width:720px){
  .ai-panel{right:10px;left:10px;width:auto;bottom:80px;height:min(72vh,520px);}
}
/* IA en datos (Fase 5B): resumen del tablero + explicación de margen */
.today-ai-box{background:linear-gradient(90deg,var(--purple-soft),var(--surface));border:1px solid var(--line);border-left:3px solid var(--purple);border-radius:12px;padding:11px 15px;font-size:.92rem;font-weight:500;margin-bottom:16px;color:var(--ink);line-height:1.4;}
.mi-est{color:var(--purple);font-weight:700;}
.mi-est-link{color:var(--purple);font-weight:700;cursor:pointer;text-decoration:underline;}
.mi-est-link:hover{color:#6f47a0;}
.margin-warn{margin-top:10px;}
/* Autorizados por carga (casillas de usuarios dispatch) */
.access-list{display:flex;flex-wrap:wrap;gap:8px 18px;padding:4px 0;}
.access-row{display:inline-flex;align-items:center;gap:7px;font-size:.9rem;font-weight:500;cursor:pointer;}
.access-row input{width:17px;height:17px;}
.margin-explain{background:#fdf3f1;border:1px solid #f0c9c2;border-radius:10px;padding:10px 13px;font-size:.86rem;color:#7a3a2d;line-height:1.45;}

/* ===== Ajustes por tabs + zona de peligro (Fase 6) ===== */
.params-panel{display:none;}
.params-panel.active{display:block;}
.secret-eye{padding:6px 10px;flex-shrink:0;}
.danger-zone{border:1px solid #f0c9c2;border-left:3px solid #c0392b;background:#fffaf9;}
.danger-zone h2{color:#a23b2d;}

/* Enlace de entrega (Fase 7.1) */
.del-signed{background:#e3f5ea;color:#1f7a47;border-radius:9px;padding:8px 11px;font-size:.83rem;font-weight:700;margin-top:10px;}
a.sheet-item{text-decoration:none;display:block;}

/* ---- Mapa de flota (tablero) ---- */
#fleetMap{height:300px;border-radius:12px;border:1px solid var(--line);}
.fleet-pin span{display:inline-block;background:#fff;border:2px solid var(--purple);border-radius:9999px;
  padding:3px 9px;font-weight:800;font-size:.72rem;white-space:nowrap;box-shadow:0 2px 8px rgba(21,15,20,.3);}

/* ---- P&L mensual ---- */
.pnl-table{min-width:1080px;font-size:.82rem;}
.pnl-table th,.pnl-table td{text-align:right;white-space:nowrap;padding:8px 10px;}
.pnl-table .pnl-label{text-align:left;position:sticky;left:0;background:var(--surface);z-index:2;font-weight:600;min-width:180px;box-shadow:2px 0 4px rgba(21,15,20,.06);}
.pnl-table thead th{position:sticky;top:0;background:var(--surface);z-index:1;}
.pnl-table thead th.pnl-label{z-index:3;}
.pnl-bold td{font-weight:800;background:rgba(var(--gold-rgb),.07);}
.pnl-muted td{color:var(--muted);font-weight:400;}
.pnl-sec td{background:var(--surface-2);text-transform:uppercase;font-size:.68rem;letter-spacing:.05em;color:var(--muted);font-weight:800;}
.pnl-now{background:rgba(var(--purple-rgb),.08);}
.pnl-total{font-weight:800;border-left:2px solid var(--line);}
.pnl-table .neg{color:#b3392b;} .pnl-table .pos{color:#1f7a47;}
