/* Portal ABBA — dark industrial premium con rojo ABBA */

:root {
    /* Backgrounds opacos (uso restringido) */
    --bg-deep: #0a0d10;
    --bg: #0f1318;
    --surface: #161c24;
    --surface-2: #1d242d;
    --surface-3: #242c36;
    --border: rgba(75, 88, 105, 0.55);
    --border-strong: rgba(110, 125, 142, 0.7);

    /* Glass: opacidad alta + blur fuerte → la card se distingue, el fondo se intuye */
    --glass: rgba(18, 24, 32, 0.72);
    --glass-2: rgba(24, 30, 40, 0.80);
    --glass-3: rgba(34, 42, 54, 0.86);
    --glass-input: rgba(14, 19, 26, 0.75);
    --glass-strong: rgba(13, 17, 23, 0.85);

    /* Highlight sutil en el borde superior interno: efecto cristal real */
    --card-inset: inset 0 1px 0 rgba(255, 255, 255, 0.06), inset 0 -1px 0 rgba(0, 0, 0, 0.2);
    --card-float: 0 6px 24px rgba(0, 0, 0, 0.45);

    /* Glow rojo sutil para halos en hover */
    --halo-red: 0 0 24px rgba(217, 46, 46, 0.18);
    --halo-red-strong: 0 0 36px rgba(217, 46, 46, 0.32);

    /* Text */
    --text: #ecf0f5;
    --text-muted: #8b97a3;
    --text-soft: #5a6470;
    --text-dim: #3e4651;

    /* ABBA brand */
    --abba: #d92e2e;
    --abba-red: #d92e2e;   /* alias usado por chips/filtros activos (env-filter-active, sub-tab-active, env-btn-next:hover) */
    --abba-hover: #b82424;
    --abba-glow: rgba(217, 46, 46, 0.4);
    --abba-soft: rgba(217, 46, 46, 0.12);
    --abba-border: rgba(217, 46, 46, 0.32);

    /* Accents por sección */
    --accent-blue:   #4a9eff;
    --accent-teal:   #2dd4a8;
    --accent-violet: #a78bfa;
    --accent-amber:  #f5a623;
    --accent-pink:   #ec4899;

    /* Estados */
    --success: var(--accent-teal);
    --success-soft: rgba(45, 212, 168, 0.12);
    --warning: var(--accent-amber);
    --warning-soft: rgba(245, 166, 35, 0.12);
    --danger: var(--abba);
    --danger-soft: var(--abba-soft);
    --info: var(--accent-blue);
    --info-soft: rgba(74, 158, 255, 0.12);

    /* Aliases compat (componentes que usan estos nombres) */
    --primary: var(--abba);
    --primary-hover: var(--abba-hover);
    --accent: var(--abba);
    --accent-hover: var(--abba-hover);
    --accent-soft: var(--abba-soft);

    /* Sombras */
    --shadow-sm: 0 1px 2px rgba(0,0,0,.5), 0 1px 0 rgba(255,255,255,.02) inset;
    --shadow: 0 4px 16px rgba(0,0,0,.5), 0 1px 3px rgba(0,0,0,.3);
    --shadow-lg: 0 24px 60px rgba(0,0,0,.6), 0 8px 24px rgba(0,0,0,.4);
    --shadow-glow: 0 0 40px rgba(217, 46, 46, 0.15);

    /* Radii */
    --radius-sm: 4px;
    --radius: 6px;
    --radius-md: 8px;
    --radius-lg: 12px;
    --radius-xl: 16px;

    /* Fonts */
    /* Tipografía unificada en todo el sistema.
       UN sans (Sora) para casi todo. Serif solo como acento en headlines
       hero grandes (hero numbers del cierre, "El cierre.", "El panel.").
       Mono solo en datos tabulares.
       NO usar DM Sans (legacy). */
    --font-sans:    'Sora', -apple-system, system-ui, sans-serif;
    --font-display: 'Sora', -apple-system, system-ui, sans-serif;
    --font-body:    'Sora', -apple-system, system-ui, sans-serif;
    --font-serif:   'Sora', -apple-system, system-ui, sans-serif;
    --font-mono:    'JetBrains Mono', ui-monospace, Menlo, monospace;
    --mono: var(--font-mono); /* compat */

    /* Easing */
    --ease: cubic-bezier(0.4, 0, 0.2, 1);
    --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
    --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);

    /* Mouse position (set by JS) */
    --mx: 50%;
    --my: 30%;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; background: var(--bg-deep); }
body {
    font-family: var(--font-body);
    color: var(--text);
    font-size: 14px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    min-height: 100vh;
    position: relative;
    overflow-x: hidden;
    isolation: isolate; /* stacking context propio para que el bg-mesh viva limpio */
}
h1, h2, h3, h4, h5 {
    font-family: var(--font-display);
    letter-spacing: -0.01em;
    font-weight: 600;
    color: var(--text);
}

/* ===== Background dinámico ===== */
.bg-mesh {
    position: fixed; inset: 0;
    z-index: 0; /* dentro del stacking context del body, queda detrás de cualquier z-index:1+ */
    pointer-events: none;
    background: transparent; /* el html ya pinta var(--bg-deep) atrás */
    overflow: hidden;
}
.bg-mesh-glow {
    position: absolute; inset: 0;
    pointer-events: none;
    will-change: background;
}
.bg-mesh-glow-1 {
    background: radial-gradient(
        650px circle at var(--mx) var(--my),
        rgba(217, 46, 46, 0.22) 0%,
        rgba(217, 46, 46, 0.10) 28%,
        transparent 58%
    );
}
.bg-mesh-glow-2 {
    background:
        radial-gradient(900px circle at 15% 110%, rgba(167, 139, 250, 0.10) 0%, transparent 50%),
        radial-gradient(700px circle at 85% -10%, rgba(74, 158, 255, 0.09) 0%, transparent 50%);
}
.bg-grain {
    position: absolute; inset: 0;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.5'/></svg>");
    opacity: 0.04;
    mix-blend-mode: overlay;
    pointer-events: none;
}
.bg-starfield {
    position: absolute;
    inset: 0;
    width: 100%; height: 100%;
    pointer-events: none;
    opacity: 1;
}
@media (prefers-reduced-motion: reduce) {
    .bg-starfield { display: none; }
    .bg-mesh-glow-1 { transition: none; }
}

/* ===== Login ===== */
.body-login {
    min-height: 100vh;
    display: grid;
    place-items: center;
}
.body-login .bg-mesh-glow-1 {
    background: radial-gradient(
        900px circle at var(--mx) var(--my),
        rgba(217, 46, 46, 0.18) 0%,
        rgba(217, 46, 46, 0.06) 30%,
        transparent 60%
    );
}
.login-shell { width: min(440px, 92vw); padding: 24px; animation: fadeUp 0.6s var(--ease-out); position: relative; z-index: 1; }
.login-card {
    background: linear-gradient(180deg, var(--glass-strong) 0%, var(--glass-2) 100%);
    backdrop-filter: blur(28px) saturate(1.5);
    -webkit-backdrop-filter: blur(28px) saturate(1.5);
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-xl);
    padding: 40px 36px;
    box-shadow: var(--shadow-lg), var(--shadow-glow);
    position: relative;
    overflow: hidden;
}
.login-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 2px;
    background: linear-gradient(90deg, transparent 10%, var(--abba) 50%, transparent 90%);
    opacity: 0.8;
}
.login-header { text-align: center; margin-bottom: 28px; }
.login-header h1 {
    margin: 18px 0 6px;
    font-size: 30px;
    font-weight: 700;
    background: linear-gradient(180deg, var(--text) 0%, var(--text-muted) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    letter-spacing: -0.02em;
}
.login-sub { margin: 0; color: var(--text-muted); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500; }
.login-form { display: flex; flex-direction: column; gap: 18px; }

.brand-mark {
    display: inline-flex; align-items: center; justify-content: center;
    width: 60px; height: 60px; border-radius: 16px;
    background: linear-gradient(135deg, var(--abba) 0%, var(--abba-hover) 100%);
    color: #fff;
    font-family: var(--font-display);
    font-weight: 800; letter-spacing: 0.04em; font-size: 18px;
    box-shadow: 0 10px 28px rgba(217,46,46,0.45), inset 0 1px 0 rgba(255,255,255,0.25);
    position: relative;
}
.brand-mark::after {
    content: ''; position: absolute; inset: 0;
    border-radius: 16px;
    background: linear-gradient(180deg, rgba(255,255,255,0.12) 0%, transparent 50%);
    pointer-events: none;
}
.brand-mark.sm { width: 40px; height: 40px; border-radius: 10px; font-size: 13px; }

/* ===== Botones ===== */
.btn {
    display: inline-flex; align-items: center; justify-content: center;
    padding: 9px 16px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--glass-2);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    color: var(--text);
    font: 500 13px/1 var(--font-body);
    cursor: pointer;
    transition: all .2s var(--ease);
    text-decoration: none;
    touch-action: manipulation;
    -webkit-tap-highlight-color: rgba(217, 46, 46, 0.2);
    -webkit-appearance: none;
    appearance: none;
    user-select: none;
    -webkit-user-select: none;
}
.btn:hover {
    background: var(--glass-3);
    border-color: var(--abba-border);
    transform: translateY(-1px);
    box-shadow: var(--halo-red);
}
.btn:active { transform: translateY(0); }
.btn:focus-visible { outline: 2px solid var(--abba); outline-offset: 2px; }
.btn:disabled { opacity: .5; cursor: not-allowed; transform: none; }

.btn-primary {
    background: linear-gradient(180deg, var(--abba) 0%, var(--abba-hover) 100%);
    color: #fff;
    border-color: var(--abba-hover);
    box-shadow: 0 4px 12px rgba(217,46,46,0.25), inset 0 1px 0 rgba(255,255,255,0.18);
    font-weight: 600;
}
.btn-primary:hover {
    background: linear-gradient(180deg, #e53b3b 0%, var(--abba) 100%);
    box-shadow: 0 6px 20px rgba(217,46,46,0.45), inset 0 1px 0 rgba(255,255,255,0.22);
    border-color: var(--abba);
}

.btn-ghost {
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border-color: transparent;
    color: var(--text-muted);
    box-shadow: none;
}
.btn-ghost:hover { background: var(--glass); border-color: var(--border); color: var(--text); box-shadow: none; }

.btn-danger {
    background: var(--abba);
    color: #fff;
    border-color: var(--abba-hover);
}
.btn-danger:hover { background: #e53b3b; }

.btn-sm { padding: 5px 11px; font-size: 12px; }
.btn-block { width: 100%; padding: 12px 16px; font-size: 14px; }

/* Dropdown de apartados nuevos en el masthead */
.apartados-dd { position: relative; }
.apartados-dd-toggle { display: inline-flex; align-items: center; }
.apartados-dd-menu {
    /* default: oculto. Se hace visible solo cuando el toggle setea
       data-open="true" en .apartados-dd. */
    display: none;
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    grid-template-columns: 1fr;
    gap: 0;
    min-width: 280px;
    padding: 8px;
    background: rgba(15, 19, 24, 0.92);
    backdrop-filter: blur(22px);
    -webkit-backdrop-filter: blur(22px);
    border: 1px solid rgba(255,246,240,0.14);
    border-radius: 14px;
    box-shadow: 0 24px 60px rgba(0,0,0,0.5);
    z-index: 100;
    animation: ap-fade-in .2s ease;
}
.apartados-dd[data-open="true"] .apartados-dd-menu {
    display: grid;
}
@keyframes ap-fade-in { from { opacity: 0; transform: translateY(-4px);} to { opacity: 1; transform: translateY(0);} }
.apartados-dd-menu a {
    display: grid;
    grid-template-columns: 30px 1fr;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    border-radius: 9px;
    text-decoration: none;
    color: rgba(255,246,240,0.92);
    transition: background .15s ease;
    font-family: "Sora", -apple-system, system-ui, sans-serif;
}
.apartados-dd-menu a:hover { background: rgba(255,246,240,0.06); }
.apartados-dd-num {
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-style: normal;
    font-weight: 600;
    font-size: 11px;
    color: rgba(255,56,56,0.9);
    text-align: center;
    letter-spacing: 0.06em;
    line-height: 1;
}
.apartados-dd-lbl {
    display: flex;
    flex-direction: column;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.2;
}
.apartados-dd-lbl small {
    color: rgba(255,246,240,0.52);
    font-weight: 400;
    font-size: 11px;
    text-transform: none;
    letter-spacing: 0;
    margin-top: 3px;
}

/* === User menu (consolidado: Apartados + acciones) === */
.user-menu-dd[data-open="true"] .user-chip {
    border-color: rgba(255,246,240,0.3);
    background: rgba(255,246,240,0.05);
}
.user-menu-section-label {
    padding: 10px 14px 6px;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(255,246,240,0.42);
}
.user-menu-separator {
    height: 1px;
    margin: 6px 8px;
    background: rgba(255,246,240,0.1);
}
.apartados-dd-menu .user-menu-action {
    display: grid;
    grid-template-columns: 30px 1fr;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 12px 14px;
    border: none;
    background: transparent;
    border-radius: 9px;
    color: rgba(255,246,240,0.92);
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    text-align: left;
    cursor: pointer;
    transition: background .15s ease;
}
.apartados-dd-menu .user-menu-action:hover {
    background: rgba(255,246,240,0.06);
}
.apartados-dd-menu .user-menu-action .apartados-dd-num {
    color: rgba(255,246,240,0.62);
    font-size: 14px;
}

/* === Modal "Vista inicial" — diseño editorial === */
.vista-ini-modal {
    max-width: 880px;
}
.vista-ini-head {
    align-items: flex-start;
    padding: 36px 40px 24px;
    border-bottom: 1px solid rgba(255,246,240,0.08);
}
.vista-ini-eyebrow {
    display: block;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: rgba(255,246,240,0.42);
    margin-bottom: 12px;
}
.vista-ini-title {
    font-family: var(--serif, "Source Serif Pro", Georgia, serif);
    font-size: clamp(32px, 4vw, 44px);
    font-weight: 400;
    letter-spacing: -0.025em;
    color: rgba(255,246,240,0.96);
    line-height: 1;
    margin: 0 0 10px;
}
.vista-ini-lede {
    font-size: 13px;
    color: rgba(255,246,240,0.58);
    margin: 0;
    letter-spacing: 0.01em;
}
.vista-ini-body {
    padding: 28px 40px 36px;
}
.vista-ini-group {
    margin-bottom: 32px;
}
.vista-ini-group:last-of-type {
    margin-bottom: 0;
}
.vista-ini-group-title {
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.26em;
    text-transform: uppercase;
    color: rgba(255,246,240,0.48);
    margin: 0 0 14px;
    padding-bottom: 8px;
    border-bottom: 1px solid rgba(255,246,240,0.06);
}
.vista-ini-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}
.vista-ini-card {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: 18px 16px 16px;
    border: 1px solid rgba(255,246,240,0.1);
    border-radius: 10px;
    background: rgba(255,246,240,0.015);
    color: rgba(255,246,240,0.92);
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    text-align: left;
    cursor: pointer;
    transition: border-color .15s ease, background .15s ease, transform .12s ease;
    min-height: 96px;
}
.vista-ini-card:hover {
    border-color: rgba(255,246,240,0.28);
    background: rgba(255,246,240,0.04);
    transform: translateY(-1px);
}
.vista-ini-card:focus-visible {
    outline: none;
    border-color: rgba(255,246,240,0.5);
    box-shadow: 0 0 0 2px rgba(255,246,240,0.08);
}
.vista-ini-card[aria-current="true"] {
    border-color: rgba(255,56,56,0.78);
    background: rgba(255,56,56,0.05);
    box-shadow: 0 0 0 1px rgba(255,56,56,0.34) inset;
}
.vista-ini-card[aria-current="true"]::after {
    content: "Actual";
    position: absolute;
    top: 10px;
    right: 12px;
    font-size: 9px;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(255,56,56,0.92);
}
.vista-ini-num {
    font-family: var(--serif, "Source Serif Pro", Georgia, serif);
    font-style: italic;
    font-weight: 400;
    font-size: 18px;
    color: rgba(255,56,56,0.78);
    letter-spacing: 0.01em;
    line-height: 1;
    margin-bottom: 2px;
}
.vista-ini-card[aria-current="true"] .vista-ini-num {
    color: rgba(255,56,56,1);
}
.vista-ini-label {
    font-size: 14px;
    font-weight: 500;
    color: rgba(255,246,240,0.96);
    line-height: 1.2;
}
.vista-ini-sub {
    font-size: 11px;
    color: rgba(255,246,240,0.5);
    letter-spacing: 0.01em;
    line-height: 1.3;
}
.vista-ini-card-reset .vista-ini-num {
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-style: normal;
    font-size: 22px;
    color: rgba(255,246,240,0.5);
}
.vista-ini-msg {
    margin-top: 8px;
    padding: 12px 14px;
    border-radius: 8px;
    background: rgba(107,194,138,0.07);
    border: 1px solid rgba(107,194,138,0.28);
    color: rgba(207,242,220,0.92);
    font-size: 12px;
    letter-spacing: 0.02em;
}
.vista-ini-msg.is-error {
    background: rgba(255,56,56,0.06);
    border-color: rgba(255,56,56,0.32);
    color: rgba(255,200,200,0.96);
}
@media (max-width: 720px) {
    .vista-ini-head { padding: 24px; }
    .vista-ini-body { padding: 20px 24px 28px; }
    .vista-ini-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Acceso al cierre — distintivo, no es un botón cualquiera */
.btn-cierre {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 14px 7px 11px;
    background: linear-gradient(180deg, rgba(255,56,56,0.12), rgba(255,56,56,0.04));
    border: 1px solid rgba(255,56,56,0.35);
    color: #fff;
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-size: 15px;
    font-style: italic;
    letter-spacing: -0.005em;
    border-radius: 999px;
    text-decoration: none;
    transition: border-color .25s ease, transform .25s ease, background .25s ease, box-shadow .25s ease;
    box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset, 0 0 0 0 rgba(255,56,56,0);
}
.btn-cierre:hover {
    border-color: rgba(255,56,56,0.7);
    background: linear-gradient(180deg, rgba(255,56,56,0.18), rgba(255,56,56,0.06));
    box-shadow: 0 1px 0 rgba(255,255,255,0.06) inset, 0 0 22px rgba(255,56,56,0.25);
    transform: translateY(-1px);
}
.btn-cierre-dot {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: #ff3838;
    box-shadow: 0 0 10px rgba(255,56,56,0.7);
    animation: btn-cierre-pulse 3s ease-in-out infinite;
}
@keyframes btn-cierre-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.7; transform: scale(1.25); }
}

/* ===== Forms ===== */
/* Forms editorial — inputs limpios, label uppercase mono, focus rojo sin halo */
.field { display: flex; flex-direction: column; gap: 8px; }
.field > span, .field-group > legend {
    font-size: 10px; font-weight: 500;
    color: rgba(255,246,240,0.56);
    letter-spacing: 0.16em; text-transform: uppercase;
}
.input, .field input, .field textarea, .field select {
    padding: 11px 14px;
    border: 1px solid rgba(255,246,240,0.14);
    border-radius: 10px;
    background: rgba(255,246,240,0.04);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    color: rgba(255,246,240,0.96);
    font: inherit;
    transition: border-color .2s ease, background .2s ease;
    color-scheme: dark;
}
.field textarea { font-family: inherit; resize: vertical; min-height: 72px; }
.field input:focus, .field textarea:focus, .field select:focus, .input:focus {
    outline: none;
    border-color: var(--abba);
    background: rgba(255,246,240,0.06);
    box-shadow: none;
}
.field input::placeholder, .field textarea::placeholder {
    color: rgba(255,246,240,0.30);
}

.form-row { display: flex; gap: 12px; flex-wrap: wrap; }
.form-row > * { flex: 1 1 0; min-width: 140px; }
.form-row .flex-2 { flex: 2 1 0; }
.form-row .flex-1 { flex: 1 1 0; }

.form-section { margin-top: 4px; padding-top: 14px; border-top: 1px dashed var(--border); }
.form-section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.form-section-header h3 {
    margin: 0; font-size: 11px; font-weight: 700;
    color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.08em;
}

.field-group { border: 1px solid var(--border); border-radius: var(--radius); padding: 10px 12px; min-width: 0; background: var(--glass); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.field-group legend { padding: 0 6px; margin-left: -6px; }

.radio-pill {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 12px; margin: 2px 4px 2px 0;
    border: 1px solid var(--border); border-radius: 999px;
    font-size: 13px; cursor: pointer; user-select: none;
    transition: all .2s var(--ease);
    color: var(--text-muted);
    background: var(--glass);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}
.radio-pill:hover { background: var(--glass-2); border-color: var(--border-strong); color: var(--text); }
.radio-pill input { margin: 0; accent-color: var(--abba); }
.radio-pill:has(input:checked) {
    background: var(--abba-soft);
    border-color: var(--abba);
    color: #ff7878;
    box-shadow: 0 0 0 2px rgba(217,46,46,0.15);
}

.check-inline { display: inline-flex; align-items: center; gap: 6px; color: var(--text-muted); font-size: 13px; }
.check-inline.big {
    display: flex; align-items: center; gap: 12px;
    padding: 14px 16px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--glass);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    color: var(--text);
    font-size: 14px;
    cursor: pointer;
}
.check-inline.big input { width: 18px; height: 18px; accent-color: var(--abba); }
.check-inline input { accent-color: var(--abba); }

.form-error {
    background: var(--abba-soft);
    color: #ff8a8a;
    padding: 10px 14px;
    border-radius: var(--radius);
    font-size: 13px;
    border: 1px solid var(--abba-border);
}

/* ===== Dashboard ===== */
.body-dashboard { min-height: 100vh; }

.masthead {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 16px;
    padding: 14px 28px;
    background: linear-gradient(180deg, rgba(10, 13, 16, 0.78) 0%, rgba(10, 13, 16, 0.55) 100%);
    backdrop-filter: blur(22px) saturate(1.4);
    -webkit-backdrop-filter: blur(22px) saturate(1.4);
    border-bottom: 1px solid var(--border);
    box-shadow: 0 1px 0 rgba(217, 46, 46, 0.06) inset, 0 8px 32px rgba(0,0,0,0.4);
    position: sticky; top: 0; z-index: 50;
}
.masthead::after {
    content: ''; position: absolute;
    left: 0; right: 0; bottom: -1px; height: 1px;
    background: linear-gradient(90deg, transparent 5%, rgba(217,46,46,0.35) 50%, transparent 95%);
    pointer-events: none;
}
.masthead-left { display: flex; align-items: center; gap: 14px; min-width: 0; }
.nav-crumb {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 6px 14px;
    margin-left: 8px;
    background: linear-gradient(135deg, rgba(217, 46, 46, 0.16) 0%, rgba(217, 46, 46, 0.05) 100%);
    backdrop-filter: blur(12px) saturate(1.3);
    -webkit-backdrop-filter: blur(12px) saturate(1.3);
    border: 1px solid rgba(217, 46, 46, 0.32);
    border-radius: 999px;
    font: 500 12px/1 var(--font-display);
    letter-spacing: 0.04em;
    box-shadow: var(--halo-red), inset 0 1px 0 rgba(255,255,255,0.06);
    min-width: 0;
}
.crumb-grupo {
    color: #ff8585;
    text-transform: uppercase;
    font-weight: 700;
    font-size: 10px;
    letter-spacing: 0.1em;
    white-space: nowrap;
}
.crumb-sep {
    color: rgba(255, 130, 130, 0.5);
    font-size: 14px;
    line-height: 1;
}
.crumb-tab {
    color: var(--text);
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 240px;
}
.masthead-title { display: flex; flex-direction: column; line-height: 1.1; }
.masthead-title strong {
    font-family: var(--font-display);
    font-size: 16px; font-weight: 700;
    letter-spacing: -0.01em;
}
.masthead-sub { color: var(--text-muted); font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; margin-top: 3px; font-weight: 500; }
.masthead-center { text-align: center; }
.now-clock {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    font-size: 13px;
    color: var(--text-muted);
    display: inline-flex; align-items: center; gap: 10px;
    padding: 6px 12px;
    background: var(--glass);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid var(--border);
    border-radius: 999px;
}
.now-clock::before {
    content: '';
    width: 6px; height: 6px; border-radius: 50%;
    background: var(--success);
    box-shadow: 0 0 8px var(--success);
    animation: live-pulse 2s var(--ease) infinite;
}
@keyframes live-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(0.85); }
}

.masthead-right { display: flex; align-items: center; gap: 8px; justify-content: flex-end; }
/* User-chip rediseñado como botón con avatar + texto + chevron */
.user-chip {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 6px 12px 6px 6px;
    background: rgba(255,246,240,0.02);
    border: 1px solid rgba(255,246,240,0.1);
    border-radius: 999px;
    cursor: pointer;
    color: rgba(255,246,240,0.92);
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    transition: border-color .15s ease, background .15s ease;
}
.user-chip:hover {
    border-color: rgba(255,246,240,0.24);
    background: rgba(255,246,240,0.04);
}
.user-chip:focus-visible {
    outline: none;
    border-color: rgba(255,246,240,0.5);
    box-shadow: 0 0 0 3px rgba(255,246,240,0.06);
}
.user-chip-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(255,56,56,0.92) 0%, rgba(220,30,30,0.92) 100%);
    color: rgba(255,255,255,0.96);
    font-family: var(--serif, "Source Serif Pro", Georgia, serif);
    font-style: italic;
    font-weight: 400;
    font-size: 13px;
    letter-spacing: 0.02em;
    line-height: 1;
    flex-shrink: 0;
}
.user-chip-text {
    display: flex;
    flex-direction: column;
    text-align: left;
    line-height: 1.1;
    min-width: 0;
}
.user-chip-name {
    font-weight: 500;
    font-size: 13px;
    color: rgba(255,246,240,0.94);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 160px;
}
.user-chip-rol {
    margin-top: 2px;
    color: rgba(255,246,240,0.45);
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.22em;
    font-weight: 600;
}
.user-chip-chev {
    color: rgba(255,246,240,0.5);
    transition: transform .2s ease, color .15s ease;
    flex-shrink: 0;
}
.user-chip:hover .user-chip-chev {
    color: rgba(255,246,240,0.85);
}
.user-menu-dd[data-open="true"] .user-chip-chev {
    transform: rotate(180deg);
    color: rgba(255,246,240,0.95);
}

/* ===== Nav grupos ===== */
.nav-groups {
    display: flex; gap: 4px;
    padding: 12px 28px 0;
    background: linear-gradient(180deg, rgba(12, 16, 21, 0.6) 0%, rgba(12, 16, 21, 0.35) 100%);
    backdrop-filter: blur(18px) saturate(1.4);
    -webkit-backdrop-filter: blur(18px) saturate(1.4);
    border-bottom: 1px solid var(--border-strong);
    align-items: stretch;
    position: sticky; top: 65px; z-index: 49;
}
.nav-group {
    background: transparent;
    border: none;
    color: var(--text-muted);
    font: 600 12px/1 var(--font-display);
    letter-spacing: 0.08em;
    padding: 12px 20px;
    cursor: pointer;
    border-radius: 8px 8px 0 0;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: all .2s var(--ease);
    text-transform: uppercase;
    -webkit-tap-highlight-color: rgba(217, 46, 46, 0.2);
    touch-action: manipulation;
    position: relative;
}
.nav-group:hover { color: var(--text); background: rgba(255, 255, 255, 0.04); }
.nav-group-active {
    color: #ff8585;
    border-bottom-color: var(--abba);
    background: linear-gradient(180deg, rgba(217,46,46,0.10) 0%, rgba(217,46,46,0.02) 100%);
}
.nav-group-active::before {
    content: '';
    position: absolute;
    bottom: -2px; left: 50%; transform: translateX(-50%);
    width: 40px; height: 2px;
    background: var(--abba);
    box-shadow: 0 0 16px var(--abba), 0 0 30px rgba(217, 46, 46, 0.5);
    border-radius: 1px;
}
.nav-group-admin { margin-left: auto; padding: 12px 14px; }

.tabs {
    display: flex; gap: 4px;
    padding: 8px 28px 0;
    background: transparent;
    border-bottom: 1px solid var(--border);
    overflow-x: auto;
    align-items: flex-end;
    flex-wrap: wrap;
}
.tabs[hidden] { display: none; }
.tab {
    border: 1px solid transparent;
    border-bottom: none;
    background: transparent;
    padding: 9px 14px;
    cursor: pointer;
    border-radius: 6px 6px 0 0;
    color: var(--text-soft);
    font: 500 13px/1 var(--font-body);
    white-space: nowrap;
    transition: all .15s var(--ease);
    -webkit-tap-highlight-color: rgba(217, 46, 46, 0.2);
    touch-action: manipulation;
}
.tab:hover { background: rgba(255, 255, 255, 0.04); color: var(--text); }
.tab-active {
    background: linear-gradient(180deg, rgba(217, 46, 46, 0.22) 0%, rgba(217, 46, 46, 0.10) 100%);
    backdrop-filter: blur(14px) saturate(1.4);
    -webkit-backdrop-filter: blur(14px) saturate(1.4);
    border-color: rgba(217, 46, 46, 0.5);
    color: #ffc4c4;
    font-weight: 600;
    margin-bottom: -1px;
    box-shadow:
        0 -2px 0 var(--abba) inset,
        0 0 24px rgba(217, 46, 46, 0.32),
        inset 0 1px 0 rgba(255, 255, 255, 0.08);
    position: relative;
}
.tab-active::after {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: -1px;
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--abba), transparent);
    filter: blur(2px);
    pointer-events: none;
}
.tab-admin { margin-left: auto; }

.dashboard {
    padding: 24px 28px 80px;
    max-width: 1500px;
    margin: 0 auto;
    animation: fadeUp 0.5s var(--ease-out);
    position: relative;
    z-index: 1;
}
@keyframes fadeUp {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

.tab-panel { display: none; }
.tab-panel-active { display: block; animation: fadeIn 0.3s var(--ease-out); }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

.panel-toolbar {
    display: flex; gap: 14px; align-items: center; flex-wrap: wrap;
    margin-bottom: 20px;
}
.panel-toolbar .filters { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; flex: 1 1 auto; }
.panel-toolbar .actions { display: flex; gap: 8px; align-items: center; }
.panel-toolbar .filters .input { min-width: 140px; padding: 7px 12px; font-size: 13px; }
.panel-title {
    margin: 0;
    font-family: var(--font-display);
    font-size: 20px; font-weight: 700;
    letter-spacing: -0.02em;
}
.panel-summary { color: var(--text-muted); font-size: 13px; margin-bottom: 8px; }

/* ===== Tablas ===== */
.table-wrap {
    background: var(--glass);
    backdrop-filter: blur(28px) saturate(1.3);
    -webkit-backdrop-filter: blur(28px) saturate(1.3);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    overflow-x: auto;
    overflow-y: visible;
    box-shadow: var(--card-inset), var(--card-float);
}
/* min-width: max-content asegura que la tabla NUNCA aplaste columnas;
   si excede al wrap, aparece scroll horizontal natural en el wrap. */
/* Tablas — editorial: sin zebra, hairlines, hover sutil */
.data-table {
    width: 100%; min-width: max-content;
    border-collapse: collapse;
    font-size: 13px;
    color: rgba(255,246,240,0.96);
}
.data-table th, .data-table td {
    padding: 14px 16px;
    text-align: left;
    border-bottom: 1px solid rgba(255,246,240,0.07);
    white-space: nowrap;
}
.data-table th {
    background: transparent;
    font-weight: 500;
    color: rgba(255,246,240,0.56);
    text-transform: uppercase;
    font-size: 10px;
    letter-spacing: 0.16em;
    border-bottom: 1px solid rgba(255,246,240,0.14);
}
.data-table tbody tr { transition: background .15s ease; }
.data-table tbody tr:hover { background: rgba(255,246,240,0.025); }
.data-table tbody tr.is-cancelled td { color: rgba(255,246,240,0.34); text-decoration: line-through; }
.data-table tbody tr { cursor: pointer; }
.data-table tbody tr:last-child td { border-bottom: none; }
.data-table tbody tr.row-totales {
    background: rgba(255,246,240,0.04);
    cursor: default;
    border-top: 1px solid rgba(255,246,240,0.18);
}
.data-table tbody tr.row-totales:hover { background: rgba(255,246,240,0.06); }
.data-table tbody tr.row-totales td {
    padding-top: 14px;
    padding-bottom: 14px;
    font-size: 0.95rem;
}
.data-table .col-codigo { font-family: var(--font-mono); font-weight: 500; color: var(--accent-blue); }
.data-table .col-acciones { width: 90px; text-align: right; }
.data-table .col-prio { width: 70px; }
.data-table .col-fecha { width: 110px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.empty-row { text-align: center; color: var(--text-muted); padding: 36px; cursor: default; }

.pill {
    display: inline-flex; align-items: center;
    padding: 3px 9px; border-radius: 999px;
    font-size: 10px; font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    border: 1px solid transparent;
    font-family: var(--font-body);
}
.pill-info     { background: var(--info-soft);    color: var(--info);    border-color: rgba(74,158,255,0.3); }
.pill-success  { background: var(--success-soft); color: var(--success); border-color: rgba(45,212,168,0.3); }
.pill-warning  { background: var(--warning-soft); color: var(--warning); border-color: rgba(245,166,35,0.3); }
.pill-danger   { background: var(--abba-soft);    color: #ff7878;        border-color: var(--abba-border); }
.pill-muted    { background: var(--surface-2);    color: var(--text-muted); border-color: var(--border); }

.pagination {
    display: flex; justify-content: flex-end; align-items: center;
    gap: 8px; margin-top: 16px; color: var(--text-muted); font-size: 12px;
}

.coming-soon {
    background: var(--glass);
    backdrop-filter: blur(24px) saturate(1.2);
    -webkit-backdrop-filter: blur(24px) saturate(1.2);
    border: 1px dashed var(--border-strong);
    border-radius: var(--radius-lg);
    padding: 56px 32px;
    text-align: center;
    color: var(--text-muted);
    box-shadow: var(--card-inset), var(--card-float);
}
.coming-soon h2 {
    margin: 0 0 8px;
    color: var(--text);
    font-family: var(--font-display);
    font-weight: 700;
}

.section-title {
    margin: 28px 0 12px;
    font-size: 11px; font-weight: 700;
    color: var(--text-muted);
    text-transform: uppercase; letter-spacing: 0.08em;
}

/* ===== Logística ===== */

/* ===== KPI bar ===== */
/* KPI bar editorial — sin cards, hairlines verticales, numerales en serif */
.kpi-bar {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0;
    padding: 6px 36px 28px;
    background: transparent;
    border-bottom: 1px solid rgba(255,246,240,0.07);
    margin: 0 0 28px;
}
.kpi-bar[hidden] { display: none; }
.kpi-chip-wide { grid-column: span 2; }

.kpi-chip {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 18px 22px 16px;
    border: 0;
    border-left: 1px solid rgba(255,246,240,0.07);
    border-radius: 0;
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    box-shadow: none;
    transition: background .2s ease;
    position: relative;
    overflow: visible;
    cursor: pointer;
}
.kpi-chip:first-child { border-left: 0; padding-left: 0; }
.kpi-chip:hover {
    border-color: rgba(255,246,240,0.07);
    background: rgba(255,246,240,0.025);
    box-shadow: none;
}
.kpi-chip::before { display: none; }
.kpi-label {
    font-size: 10px;
    color: rgba(255,246,240,0.56);
    text-transform: uppercase;
    letter-spacing: 0.18em;
    font-weight: 500;
}
.kpi-value {
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-size: clamp(30px, 3.4vw, 44px);
    font-weight: 400;
    font-variant-numeric: tabular-nums;
    color: rgba(255,246,240,0.96);
    line-height: 1;
    letter-spacing: -0.025em;
}
.kpi-sub {
    font-size: 11px;
    color: rgba(255,246,240,0.40);
    margin-top: 4px;
    letter-spacing: 0.04em;
    font-family: "JetBrains Mono", ui-monospace, monospace;
}
.kpi-alert {
    border-color: rgba(255,246,240,0.07);
    background: transparent;
}
.kpi-alert .kpi-value { color: #f5b366; }
.kpi-alert.has-red { background: transparent; }
.kpi-alert.has-red .kpi-value {
    color: #ff3838;
    text-shadow: 0 0 24px rgba(255,56,56,0.25);
}
.kpi-alert.has-red::after {
    content: "";
    position: absolute;
    top: 14px; right: 14px;
    width: 6px; height: 6px;
    border-radius: 50%;
    background: #ff3838;
    box-shadow: 0 0 12px rgba(255,56,56,0.7);
    animation: kpi-pulse 3s ease-in-out infinite;
}
@keyframes kpi-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%      { opacity: 0.7; transform: scale(1.4); }
}

@media (max-width: 900px) {
    .kpi-bar { grid-template-columns: repeat(2, 1fr); padding: 6px 22px 22px; }
    .kpi-chip { border-left: 0; border-top: 1px solid rgba(255,246,240,0.07); padding-left: 0; padding-top: 18px; }
    .kpi-chip:first-child { border-top: 0; padding-top: 0; }
    .kpi-chip:nth-child(odd) { padding-right: 16px; }
    .kpi-chip:nth-child(even) { padding-left: 16px; border-left: 1px solid rgba(255,246,240,0.07); }
}

/* ===== Hero KPI cards ===== */
.hero-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
    margin-bottom: 18px;
}
.hero-grid[hidden] { display: none; }
.hero-grid-top {
    padding: 14px 28px;
    margin-bottom: 0;
    background: linear-gradient(180deg, rgba(12, 16, 21, 0.45) 0%, transparent 100%);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--border);
}
.hero-empty { grid-column: 1 / -1; padding: 28px; text-align: center; color: var(--text-muted); }
.hero-filter-banner {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 10px 16px;
    background: rgba(255,180,90,0.07);
    border: 1px solid rgba(255,180,90,0.3);
    border-radius: 4px;
    color: rgba(255,210,180,0.92);
    font-size: 12px;
    letter-spacing: 0.06em;
    margin-bottom: 12px;
}
.hero-grid.is-filtered .hero-card {
    border-color: rgba(255,180,90,0.25);
}
.hero-card {
    background: linear-gradient(180deg, var(--glass-2) 0%, var(--glass) 100%);
    backdrop-filter: blur(28px) saturate(1.3);
    -webkit-backdrop-filter: blur(28px) saturate(1.3);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 16px 18px;
    display: flex; flex-direction: column;
    box-shadow: var(--card-inset), var(--card-float);
    transition: all .25s var(--ease);
    position: relative;
    overflow: hidden;
}
.hero-card::before {
    content: ''; position: absolute;
    top: 0; left: 0; right: 0; height: 2px;
    background: var(--border-strong);
    opacity: 0;
    transition: opacity .2s var(--ease);
}
.hero-card:hover::before { opacity: 1; }

.hero-card-main {
    grid-column: span 2;
    background: linear-gradient(135deg, var(--abba) 0%, #a01e1e 100%);
    color: #fff;
    border: none;
    box-shadow: 0 8px 32px rgba(217,46,46,0.3), inset 0 1px 0 rgba(255,255,255,0.15);
    position: relative;
    overflow: hidden;
}
.hero-card-main::after {
    content: ''; position: absolute;
    top: -50%; right: -20%;
    width: 200px; height: 200px;
    background: radial-gradient(circle, rgba(255,255,255,0.1), transparent 70%);
    pointer-events: none;
}
.hero-card-main .hero-label,
.hero-card-main .hero-sub { color: rgba(255, 255, 255, 0.78); }
.hero-card-main::before { display: none; }

.hero-card-success { border-left: 3px solid var(--success); }
.hero-card-success::before { background: var(--success); }
.hero-card-info { border-left: 3px solid var(--accent-violet); }
.hero-card-info::before { background: var(--accent-violet); }
.hero-card-warning { border-left: 3px solid var(--warning); }
.hero-card-warning::before { background: var(--warning); }
.hero-card-alert { border-left: 3px solid var(--abba); }
.hero-card-alert::before { background: var(--abba); }
.hero-card-acopio { border-left: 3px solid var(--accent-blue); }
.hero-card-cobrado { border-left: 3px solid #6bc28a; }
.hero-card-cobrado::before { background: #6bc28a; }
.hero-card-deuda { border-left: 3px solid #d4a04a; }
.hero-card-deuda::before { background: #d4a04a; }
.hero-card-favor { border-left: 3px solid #6bc28a; }
.hero-card-favor::before { background: #6bc28a; }
.hero-card-acopio::before { background: var(--accent-blue); }

.hero-label {
    font-size: 10px; font-weight: 700; color: var(--text-muted);
    text-transform: uppercase; letter-spacing: 0.08em;
}
.hero-value {
    font-family: var(--font-display);
    font-size: 26px; font-weight: 700; margin-top: 6px;
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
    letter-spacing: -0.01em;
}
.hero-card-main .hero-value { font-size: 36px; letter-spacing: -0.02em; }
.hero-sub { font-size: 11px; color: var(--text-muted); margin-top: 4px; }

.is-clickeable {
    cursor: pointer;
    transition: all .2s var(--ease);
    touch-action: manipulation;
    -webkit-tap-highlight-color: rgba(217, 46, 46, 0.2);
}
.is-clickeable:hover {
    transform: translateY(-2px);
    border-color: var(--abba) !important;
    box-shadow: 0 8px 20px rgba(0,0,0,0.4), 0 0 0 1px var(--abba-soft);
}
.is-clickeable:focus-visible {
    outline: 2px solid var(--abba);
    outline-offset: 2px;
}

/* Hover específico para tab-strip-cell clickables (sin border-radius, comparten bordes) */
.tab-strip-cell.is-clickeable {
    transition: background .15s var(--ease);
}
.tab-strip-cell.is-clickeable:hover {
    transform: none !important;
    border-color: rgba(255,246,240,0.07) !important;
    box-shadow: none !important;
    background: rgba(217,46,46,0.06);
}
.tab-strip-cell.is-clickeable:hover .tab-strip-eyebrow {
    color: var(--abba);
}

/* ===== Saldo cliente ===== */
.saldo-cliente-card {
    margin-top: 8px;
    padding: 12px 14px;
    border: 1px solid var(--abba-border);
    border-radius: var(--radius);
    background: var(--abba-soft);
    font-size: 12px;
    display: flex; flex-wrap: wrap; gap: 16px;
}
.saldo-cliente-card .sc-item { display: flex; flex-direction: column; }
.saldo-cliente-card .sc-label { color: var(--text-muted); font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700; }
.saldo-cliente-card .sc-value { font-weight: 600; color: var(--text); font-variant-numeric: tabular-nums; font-family: var(--font-mono); }

/* ===== Autocomplete ===== */
.autocomplete-wrap { position: relative; }
.autocomplete-list {
    position: absolute; top: 100%; left: 0; right: 0;
    background: var(--glass-strong);
    backdrop-filter: blur(20px) saturate(1.4);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    border: 1px solid var(--border-strong);
    border-radius: var(--radius);
    box-shadow: var(--shadow-lg);
    max-height: 240px; overflow-y: auto;
    z-index: 90;
    display: none;
    margin-top: 4px;
}
.autocomplete-list[data-open="1"] { display: block; }
.autocomplete-item {
    padding: 10px 14px; cursor: pointer;
    border-bottom: 1px solid var(--border);
    transition: background .15s var(--ease);
}
.autocomplete-item:hover,
.autocomplete-item.is-active { background: var(--abba-soft); color: #ff8a8a; }
.autocomplete-item:last-child { border-bottom: none; }
.autocomplete-item-sub { font-size: 11px; color: var(--text-muted); margin-top: 2px; }

/* ===== Editor secciones ===== */
.sec-list { display: flex; flex-direction: column; gap: 8px; }
.sec-item {
    display: flex; align-items: flex-start; gap: 12px;
    padding: 12px 14px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--glass);
    backdrop-filter: blur(20px) saturate(1.2);
    -webkit-backdrop-filter: blur(20px) saturate(1.2);
    box-shadow: var(--card-inset), var(--card-float);
    cursor: pointer;
    transition: all .2s var(--ease);
}
.sec-item:hover { background: var(--glass-2); border-color: var(--abba-border); box-shadow: var(--card-inset), var(--card-float), var(--halo-red); }
.sec-item input[type="checkbox"] {
    width: 20px; height: 20px; margin-top: 2px; flex-shrink: 0;
    accent-color: var(--abba);
}
.sec-item-text { flex: 1; }
.sec-item-label { display: flex; align-items: center; gap: 8px; font-weight: 500; color: var(--text); }
.sec-item-desc { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.sec-badge {
    display: inline-block;
    padding: 2px 8px;
    font-size: 9px; font-weight: 700;
    border-radius: 999px;
    text-transform: uppercase; letter-spacing: 0.08em;
}
.sec-badge-default { background: var(--info-soft); color: var(--info); }
.sec-badge-override { background: var(--warning-soft); color: var(--warning); }

/* ===== Modales ===== */
.modal-backdrop {
    position: fixed; inset: 0;
    background: rgba(7, 10, 13, .68);
    backdrop-filter: blur(16px) saturate(1.3);
    -webkit-backdrop-filter: blur(16px) saturate(1.3);
    display: grid; place-items: center;
    z-index: 100;
    padding: 20px;
    animation: backdropIn 0.25s var(--ease-out);
}
@keyframes backdropIn { from { opacity: 0; } to { opacity: 1; } }
.modal-backdrop[hidden] { display: none; }
/* Modales editorial — glassmorphism real, headers en serif */
.modal {
    background: rgba(18, 22, 28, 0.96);
    backdrop-filter: blur(32px) saturate(1.4);
    -webkit-backdrop-filter: blur(32px) saturate(1.4);
    border: 1px solid rgba(255,246,240,0.14);
    border-radius: 18px;
    width: auto;
    min-width: min(560px, 92vw);
    max-width: 96vw;
    max-height: 92vh;
    overflow: auto;
    box-shadow: 0 40px 100px rgba(0,0,0,0.6);
    display: flex; flex-direction: column;
    animation: modalIn 0.35s cubic-bezier(.2,.8,.2,1);
    position: relative;
}
.modal::before { display: none; }
@keyframes modalIn {
    from { opacity: 0; transform: translateY(12px) scale(0.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
.modal-sm { min-width: min(440px, 92vw); max-width: min(520px, 92vw); }
.modal-lg { min-width: min(800px, 96vw); max-width: 96vw; }
.modal-xl { min-width: min(1100px, 96vw); max-width: 96vw; }
.modal-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 28px 32px 20px;
    border-bottom: 1px solid rgba(255,246,240,0.07);
}
.modal-header h2 {
    margin: 0;
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-size: 28px;
    font-weight: 400;
    letter-spacing: -0.02em;
    color: rgba(255,246,240,0.96);
    line-height: 1.05;
}
.modal-close {
    width: 32px; height: 32px;
    border: 1px solid rgba(255,246,240,0.14);
    border-radius: 50%;
    background: transparent;
    cursor: pointer;
    font-size: 14px;
    color: rgba(255,246,240,0.56);
    display: inline-flex; align-items: center; justify-content: center;
    padding: 0;
    transition: color .15s ease, border-color .15s ease;
}
.modal-close:hover {
    color: rgba(255,246,240,0.96);
    border-color: rgba(255,246,240,0.34);
    background: transparent;
}
.modal-body {
    padding: 24px 32px 32px;
    display: flex; flex-direction: column; gap: 20px;
}
.modal-footer {
    padding: 18px 32px 28px;
    border-top: 1px solid rgba(255,246,240,0.07);
    display: flex; justify-content: flex-end; gap: 10px;
}

.codigo-display {
    text-align: center;
    padding: 30px 12px;
    background: linear-gradient(180deg, var(--abba-soft) 0%, transparent 100%);
    border: 1px dashed var(--abba);
    border-radius: var(--radius);
    margin: 4px 0;
}
.codigo-display code {
    font-family: var(--font-mono);
    font-size: 36px; font-weight: 700;
    color: #ff6b6b;
    letter-spacing: 0.06em;
    text-shadow: 0 0 16px rgba(217,46,46,0.4);
}
.codigo-actions { display: flex; justify-content: center; }

/* ===== Items dinámicos ===== */
.item-row {
    display: grid;
    grid-template-columns: 80px 80px 1fr auto;
    gap: 8px;
    align-items: end;
    margin-bottom: 8px;
}
.item-row .item-remove {
    background: transparent; border: 1px solid var(--border);
    color: var(--text-muted); padding: 6px 10px; cursor: pointer;
    border-radius: var(--radius);
    transition: all .15s var(--ease);
}
.item-row .item-remove:hover { color: var(--abba); border-color: var(--abba); }
.item-row label { display: flex; flex-direction: column; gap: 4px; }
.item-row label > span { font-size: 9px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
.item-row input { padding: 7px 10px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--glass-input); color: var(--text); }

/* ===== Detalle modal ===== */
.detalle-section { margin-bottom: 18px; }
.detalle-section h3 {
    margin: 0 0 10px;
    font-size: 10px; font-weight: 700;
    color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.08em;
}
.detalle-grid {
    display: grid;
    grid-template-columns: 140px 1fr;
    gap: 7px 18px;
    font-size: 13px;
}
.detalle-grid dt { color: var(--text-muted); font-weight: 500; }
.detalle-grid dd { margin: 0; color: var(--text); }
.detalle-items, .detalle-salidas {
    border: 1px solid var(--border); border-radius: var(--radius);
    overflow-x: auto;
}
.detalle-items table, .detalle-salidas table {
    width: 100%; min-width: max-content;  /* nunca se aplasta debajo del contenido */
    border-collapse: collapse;
}
.detalle-items th, .detalle-items td,
.detalle-salidas th, .detalle-salidas td {
    padding: 7px 10px; text-align: left; font-size: 12px;
    border-bottom: 1px solid var(--border);
    white-space: nowrap;
}
.detalle-items td .input,
.detalle-items td input[type="number"] { min-width: 100px; }
.detalle-items th, .detalle-salidas th {
    background: rgba(20, 26, 34, 0.7); color: var(--text-muted);
    font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700;
}

.detalle-actions {
    display: flex; flex-wrap: wrap; gap: 8px;
    padding-bottom: 14px;
    border-bottom: 1px dashed var(--border);
    margin-bottom: 14px;
}
.detalle-actions .btn { text-decoration: none; }

.rel-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 8px;
}
.rel-card {
    display: flex; flex-direction: column;
    padding: 10px 12px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--glass);
    backdrop-filter: blur(18px) saturate(1.2);
    -webkit-backdrop-filter: blur(18px) saturate(1.2);
    box-shadow: var(--card-inset);
    gap: 2px;
    transition: all .15s var(--ease);
}
.rel-card.is-clickeable:hover { border-color: var(--abba); background: var(--abba-soft); }
.rel-label {
    font-size: 9px; font-weight: 700; color: var(--text-muted);
    text-transform: uppercase; letter-spacing: 0.08em;
}
.rel-codigo {
    font-family: var(--font-mono); font-weight: 500; font-size: 13px; color: var(--accent-blue);
}
.rel-sub { font-size: 11px; color: var(--text-muted); }

.ocr-box {
    font-family: var(--font-mono);
    font-size: 11px;
    white-space: pre-wrap;
    background: rgba(8, 11, 14, 0.6);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 12px 14px;
    max-height: 320px; overflow: auto;
    color: var(--text);
}

/* ===== Alertas ===== */
.alerta-grupo { margin-bottom: 22px; }
.alerta-grupo-head {
    display: flex; align-items: center; gap: 10px;
    margin: 0 0 10px;
    font-size: 11px; font-weight: 700;
    color: var(--text-muted);
    text-transform: uppercase; letter-spacing: 0.08em;
}

/* Secciones plegables */
.alerta-seccion {
    margin-bottom: 14px;
    background: var(--glass);
    backdrop-filter: blur(24px) saturate(1.2);
    -webkit-backdrop-filter: blur(24px) saturate(1.2);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--card-inset), var(--card-float);
    overflow: hidden;
    transition: border-color .2s var(--ease);
}
.alerta-seccion[open] { border-color: var(--border-strong); }
.alerta-seccion-head {
    display: flex; justify-content: space-between; align-items: center;
    gap: 14px;
    padding: 16px 20px;
    cursor: pointer;
    user-select: none;
    list-style: none;
}
.alerta-seccion-head::-webkit-details-marker { display: none; }
.alerta-seccion-head:hover { background: rgba(255,255,255,0.025); }
.alerta-seccion-title {
    display: flex; align-items: center; gap: 12px;
    font-size: 15px; font-weight: 600; color: var(--text);
}
.alerta-seccion-chevron {
    display: inline-block;
    font-size: 11px; color: var(--text-muted);
    transition: transform .2s var(--ease);
}
.alerta-seccion[open] .alerta-seccion-chevron { transform: rotate(90deg); }
.alerta-seccion-meta { display: flex; align-items: center; gap: 10px; }
.alerta-seccion-count {
    font-variant-numeric: tabular-nums;
    font-weight: 700; font-size: 13px;
    color: var(--text-muted);
    padding: 2px 10px;
    border-radius: 999px;
    background: rgba(255,255,255,0.04);
    border: 1px solid var(--border);
}
.alerta-seccion .alerta-list {
    padding: 4px 16px 16px;
}

/* Sub-grupos (carpetas dentro de carpetas) */
.alerta-subgrupos {
    padding: 6px 14px 14px;
    display: flex; flex-direction: column; gap: 6px;
}
.alerta-subgrupo {
    background: rgba(0,0,0,0.18);
    border: 1px solid var(--border);
    border-left: 3px solid var(--text-muted);
    border-radius: calc(var(--radius) - 2px);
    overflow: hidden;
    transition: border-color .2s var(--ease);
}
.alerta-subgrupo[open] { border-color: var(--border-strong); }
.alerta-subgrupo.sev-roja     { border-left-color: var(--abba); }
.alerta-subgrupo.sev-naranja  { border-left-color: var(--warning); }
.alerta-subgrupo.sev-amarilla { border-left-color: #eab308; }
.alerta-subgrupo.sev-verde    { border-left-color: var(--success); }
.alerta-subgrupo-head {
    display: flex; justify-content: space-between; align-items: center;
    gap: 12px;
    padding: 12px 18px;
    cursor: pointer;
    user-select: none;
    list-style: none;
    font-size: 13.5px;
}
.alerta-subgrupo-head::-webkit-details-marker { display: none; }
.alerta-subgrupo-head:hover { background: rgba(255,255,255,0.02); }
.alerta-subgrupo-title {
    display: flex; align-items: center; gap: 10px;
    font-weight: 600; color: var(--text);
}
.alerta-subgrupo[open] .alerta-seccion-chevron { transform: rotate(90deg); }
.alerta-subgrupo .alerta-list {
    padding: 2px 14px 12px;
}
.alerta-subgrupo .alerta-ver-todas {
    padding: 6px 14px 12px;
}

.alerta-list { display: flex; flex-direction: column; gap: 8px; }
.alerta-item {
    display: flex; gap: 14px; align-items: flex-start; justify-content: space-between;
    padding: 14px 16px;
    background: var(--glass);
    backdrop-filter: blur(24px) saturate(1.2);
    -webkit-backdrop-filter: blur(24px) saturate(1.2);
    border: 1px solid var(--border);
    border-left: 3px solid var(--text-muted);
    border-radius: var(--radius);
    box-shadow: var(--card-inset), var(--card-float);
    transition: all .2s var(--ease);
    cursor: pointer;
}
.alerta-item:hover { border-color: var(--border-strong); transform: translateX(2px); box-shadow: var(--card-inset), var(--card-float), var(--halo-red); }
.alerta-item.sev-roja     { border-left-color: var(--abba); }
.alerta-item.sev-naranja  { border-left-color: var(--warning); }
.alerta-item.sev-amarilla { border-left-color: #eab308; }
.alerta-item.sev-verde    { border-left-color: var(--success); }
.alerta-msg { flex: 1; min-width: 0; }
.alerta-tipo { display: block; font-size: 10px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.06em; margin-top: 4px; font-weight: 600; }
.alerta-actions {
    display: flex; flex-direction: column; align-items: flex-end; gap: 8px;
    flex-shrink: 0;
}
.alerta-fecha { color: var(--text-muted); font-size: 12px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.btn-resolver {
    font-size: 11px; font-weight: 600;
    padding: 5px 12px;
    border-radius: 6px;
    border: 1px solid var(--border-strong);
    background: rgba(34,197,94,0.08);
    color: var(--success);
    cursor: pointer;
    transition: all .15s var(--ease);
    white-space: nowrap;
}
.btn-resolver:hover:not(:disabled) {
    background: rgba(34,197,94,0.18);
    border-color: var(--success);
}
.btn-resolver:disabled { opacity: 0.5; cursor: wait; }

.alerta-ver-todas {
    padding: 10px 16px 16px;
    text-align: right;
}
.alerta-ver-todas .btn-link {
    background: transparent; border: none;
    color: var(--accent-blue);
    font-size: 13px; font-weight: 600;
    cursor: pointer; padding: 6px 10px;
    border-radius: 6px;
    transition: background .15s var(--ease);
}
.alerta-ver-todas .btn-link:hover { background: rgba(74,158,255,0.08); }

.modal-large {
    max-width: 900px;
    width: 90%;
    max-height: 85vh;
    display: flex; flex-direction: column;
}
.modal-large .modal-body {
    overflow-y: auto;
    padding: 18px 24px;
}
.modal-large .alerta-list { gap: 6px; }

.modal-medium {
    max-width: 540px;
    width: 90%;
    display: flex; flex-direction: column;
}
.modal-medium .modal-body { padding: 18px 24px; }
.modal-medium label { display: block; font-size: 13px; color: var(--text-muted); }
.modal-medium .modal-footer {
    display: flex; gap: 10px; justify-content: flex-end;
    padding: 14px 24px;
    border-top: 1px solid var(--border);
}

/* Auditoría Bigsys sub-tabs */
.abg-tabs {
    display: flex; gap: 4px;
    margin: 16px 0 8px;
    border-bottom: 1px solid var(--border);
}
.abg-tab {
    background: transparent; border: none;
    padding: 10px 18px;
    font-size: 13px; font-weight: 600;
    color: var(--text-muted);
    cursor: pointer;
    border-bottom: 2px solid transparent;
    transition: color .15s, border-color .15s;
}
.abg-tab:hover { color: var(--text); }
.abg-tab-active {
    color: var(--abba) !important;
    border-bottom-color: var(--abba) !important;
}
#ms-paginacion .btn-link {
    background: transparent; border: none;
    color: var(--accent-blue);
    font-size: 13px; font-weight: 600;
    cursor: pointer; padding: 4px 10px;
    margin-left: 8px;
}
.link {
    color: var(--accent-blue);
    text-decoration: underline;
    text-decoration-color: rgba(74,158,255,0.4);
    text-underline-offset: 2px;
}
.link:hover { text-decoration-color: var(--accent-blue); }

/* ===== Reportes ===== */
.rep-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 14px;
    margin-bottom: 14px;
}
.rep-card {
    background: var(--glass);
    backdrop-filter: blur(28px) saturate(1.3);
    -webkit-backdrop-filter: blur(28px) saturate(1.3);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 18px;
    box-shadow: var(--card-inset), var(--card-float);
    margin-bottom: 14px;
    transition: all .25s var(--ease);
}
.rep-card:hover { border-color: var(--abba-border); box-shadow: var(--card-inset), var(--card-float), var(--halo-red); }
.rep-card h3 {
    margin: 0 0 14px;
    font-size: 11px; font-weight: 700;
    color: var(--text-muted);
    text-transform: uppercase; letter-spacing: 0.08em;
}
.rep-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rep-stat { display: flex; flex-direction: column; gap: 2px; }
.rep-stat-label { font-size: 10px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700; }
.rep-stat-value {
    font-family: var(--font-display);
    font-size: 22px; font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.rep-bar-chart {
    display: flex; align-items: flex-end;
    gap: 4px;
    height: 140px;
    padding: 8px 0;
}
.rep-bar {
    flex: 1; min-width: 6px;
    background: linear-gradient(180deg, var(--abba) 0%, var(--abba-hover) 100%);
    border-radius: 2px 2px 0 0;
    position: relative;
    transition: all .2s var(--ease);
    cursor: pointer;
}
.rep-bar:hover {
    filter: brightness(1.3);
    box-shadow: 0 0 12px rgba(217,46,46,0.5);
}
.rep-bar-empty { background: var(--border); }
.rep-bar-label {
    position: absolute; top: -22px; left: 50%; transform: translateX(-50%);
    font-size: 10px; color: var(--text);
    background: var(--surface-3);
    padding: 2px 6px; border-radius: 4px;
    opacity: 0; transition: opacity .15s var(--ease);
    white-space: nowrap; pointer-events: none;
}
.rep-bar:hover .rep-bar-label { opacity: 1; }
.rep-axis {
    display: flex; justify-content: space-between;
    margin-top: 6px;
    font-size: 10px; color: var(--text-muted);
    font-variant-numeric: tabular-nums;
}

.muted { color: var(--text-muted); }
.small { font-size: 12px; }

/* ===== Vinc-stats (compat) ===== */
.vinc-stats {
    display: flex; gap: 16px; flex-wrap: wrap;
    padding: 14px 16px; margin-bottom: 12px;
    background: var(--abba-soft);
    border: 1px solid var(--abba-border);
    border-radius: var(--radius);
    color: var(--text);
    font-size: 13px;
}
.vinc-stats strong { font-weight: 600; }

/* ===== Tab group label (legacy) ===== */
.tab-group-label {
    align-self: center;
    margin: 0 6px 0 8px;
    padding: 2px 8px;
    font-size: 10px; font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--text-soft);
    border-left: 2px solid var(--border);
    white-space: nowrap;
}

/* ===== Responsive ===== */
@media (max-width: 768px) {
    .masthead { grid-template-columns: 1fr auto; padding: 10px 14px; }
    .masthead-center { display: none; }
    .nav-crumb { padding: 5px 10px; }
    .nav-crumb .crumb-grupo { display: none; }
    .nav-crumb .crumb-sep { display: none; }
    .nav-crumb .crumb-tab { max-width: 140px; font-size: 11px; }
    .nav-groups { padding: 8px 14px 0; top: 56px; }
    .nav-group { padding: 10px 14px; font-size: 11px; }
    .tabs { padding: 6px 14px 0; }
    .dashboard { padding: 16px 14px 80px; }
    .user-chip { padding: 4px; gap: 0; }
    .user-chip-text { display: none; }
    .user-chip-chev { display: none; }
    .data-table .col-fecha { display: none; }
    .kpi-bar { grid-template-columns: repeat(2, 1fr); padding: 10px 14px; gap: 8px; }
    .kpi-chip-wide { grid-column: span 2; }
    .kpi-value { font-size: 18px; }
    .hero-grid-top { padding: 10px 14px; }
    .hero-card-main { grid-column: 1 / -1; }
    .hero-card-main .hero-value { font-size: 28px; }
    .log-cards { grid-template-columns: 1fr; gap: 12px; }
    .log-card-actions .btn {
        min-height: 52px;
        padding: 14px 14px;
        font-size: 15px;
        font-weight: 600;
    }
    .log-card-cliente { font-size: 16px; }
    /* Tabla CC en mobile: scroll horizontal natural si no entra */
    .table-wrap { -webkit-overflow-scrolling: touch; }

    /* Modales en móvil: estilo bottom sheet / full screen */
    .modal-backdrop {
        padding: 0;
        align-items: flex-end;
    }
    .modal {
        min-width: 100vw; max-width: 100vw;
        max-height: 95vh;
        border-radius: 24px 24px 0 0;
        border-bottom: none; border-left: none; border-right: none;
        animation: modalSlideUp 0.35s cubic-bezier(.2,.8,.2,1);
    }
    @keyframes modalSlideUp {
        from { transform: translateY(100%); opacity: 0; }
        to { transform: translateY(0); opacity: 1; }
    }
    .modal-header { padding: 20px 24px 16px; }
    .modal-header h2 { font-size: 22px; }
    .modal-body { padding: 16px 24px 24px; }
    .modal-footer { padding: 16px 24px 24px; }
}
@media (max-width: 600px) {
    .masthead-title { display: none; }
    .nav-crumb { margin-left: 4px; }
}

/* ===== Scrollbar dark ===== */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
    background: var(--surface-3);
    border-radius: 5px;
    border: 2px solid transparent;
    background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover { background: var(--border-strong); background-clip: content-box; }

/* ===== Selección de texto ===== */
::selection { background: var(--abba); color: #fff; }

/* =============================================================================
   Dashboard masthead — refresh editorial (post-merge visual)
   Se aplica solo con .masthead-editorial; el resto del CSS antiguo queda.
   ============================================================================= */

.masthead-editorial {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    padding: 22px 36px 18px;
    border-bottom: 1px solid rgba(255,246,240,0.10);
    margin-bottom: 18px;
    background: transparent;
}
.masthead-editorial::after { display: none; }
.masthead-editorial .masthead-left { gap: 22px; align-items: center; }
.masthead-editorial .masthead-right { gap: 10px; }

button.me-mark, .me-mark {
    width: 40px; height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(255,246,240,0.14);
    border-radius: 50%;
    background: rgba(255,246,240,0.04);
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-weight: 600;
    color: var(--abba);
    font-size: 18px;
    letter-spacing: -0.02em;
    cursor: pointer;
    padding: 0;
    transition: border-color .25s ease, background .25s ease, box-shadow .25s ease, transform .15s ease;
    flex-shrink: 0;
    position: relative;
}
button.me-mark:hover, .me-mark:hover {
    border-color: rgba(255,56,56,0.55);
    background: rgba(255,56,56,0.08);
    box-shadow: 0 0 0 4px rgba(255,56,56,0.08), 0 0 24px rgba(255,56,56,0.18);
}
button.me-mark:active, .me-mark:active { transform: scale(0.96); }
.section-picker[data-open="true"] button.me-mark {
    border-color: rgba(255,56,56,0.7);
    background: rgba(255,56,56,0.12);
    box-shadow: 0 0 0 4px rgba(255,56,56,0.12);
}
.me-title {
    display: flex;
    flex-direction: column;
    line-height: 1;
}
.me-eyebrow {
    color: rgba(255,246,240,0.56);
    font-size: 10px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    margin-bottom: 6px;
}
.me-headline {
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-weight: 400;
    font-size: 32px;
    letter-spacing: -0.025em;
    color: rgba(255,246,240,0.96);
    margin: 0;
    line-height: 1;
}
.me-crumb {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding-left: 18px;
    margin-left: 4px;
    border-left: 1px solid rgba(255,246,240,0.12);
    color: rgba(255,246,240,0.72);
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-style: italic;
    font-size: 17px;
}
.me-crumb-dot {
    width: 5px; height: 5px;
    border-radius: 50%;
    background: var(--abba);
    box-shadow: 0 0 8px rgba(255,56,56,0.65);
}

/* Tabs unificadas — sin grupos */
.tabs-unified {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 0 36px;
    border-bottom: 1px solid rgba(255,246,240,0.06);
    margin-bottom: 28px;
    overflow-x: auto;
    scrollbar-width: thin;
}
.tabs-unified::-webkit-scrollbar { height: 4px; }
.tabs-unified::-webkit-scrollbar-thumb { background: rgba(255,246,240,0.1); border-radius: 2px; }
.tabs-unified .tab {
    background: transparent;
    border: 0;
    border-bottom: 2px solid transparent;
    padding: 12px 14px;
    margin: 0;
    border-radius: 0;
    color: rgba(255,246,240,0.56);
    font-family: "Sora", sans-serif;
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: color .2s ease, border-color .25s ease;
    white-space: nowrap;
}
.tabs-unified .tab:hover { color: rgba(255,246,240,0.96); background: transparent; }
.tabs-unified .tab-active {
    color: rgba(255,246,240,0.96);
    background: transparent !important;
    border-bottom-color: var(--abba);
    box-shadow: none !important;
}
.tabs-unified .tab-active::after,
.tabs-unified .tab-active::before { display: none !important; }
.tab-divider {
    display: inline-block;
    width: 1px;
    height: 16px;
    background: rgba(255,246,240,0.10);
    margin: 0 8px;
    flex-shrink: 0;
}

@media (max-width: 900px) {
    .masthead-editorial { grid-template-columns: 1fr auto; padding: 18px 22px 12px; }
    .masthead-editorial .masthead-center { display: none; }
    .me-headline { font-size: 24px; }
    .me-crumb { padding-left: 12px; margin-left: 0; font-size: 14px; }
    .tabs-unified { padding: 0 22px; }
}

/* ============================================================================
   Section picker — popup anclado al boton 'A' del masthead
   ============================================================================ */
.section-picker {
    position: relative;
    margin: 0;
    padding: 0;
    border: 0;
    display: inline-flex;
    align-items: center;
}

.section-picker-toggle {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    padding: 12px 18px;
    background: rgba(255,246,240,0.04);
    border: 1px solid rgba(255,246,240,0.14);
    border-radius: 12px;
    color: rgba(255,246,240,0.96);
    cursor: pointer;
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    line-height: 1.15;
    transition: border-color .2s ease, background .2s ease;
    min-width: 280px;
    text-align: left;
}
.section-picker-toggle:hover {
    border-color: rgba(255,246,240,0.34);
    background: rgba(255,246,240,0.06);
}
.section-picker-toggle > div { flex: 1; }
.section-picker-toggle svg {
    margin-left: auto;
    color: rgba(255,246,240,0.56);
    transition: transform .25s ease;
    flex-shrink: 0;
}
.section-picker[data-open="true"] .section-picker-toggle svg { transform: rotate(180deg); }
.section-picker-eyebrow {
    display: block;
    font-size: 10px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(255,246,240,0.56);
    margin-bottom: 4px;
    font-weight: 500;
}
.section-picker-label {
    display: block;
    font-size: 16px;
    font-weight: 500;
    color: rgba(255,246,240,0.96);
}

.section-picker-popup {
    display: none;
    position: absolute;
    top: calc(100% + 12px);
    left: 0;
    z-index: 80;
    min-width: 320px;
    max-height: 70vh;
    overflow-y: auto;
    padding: 12px;
    background: rgba(15, 19, 24, 0.95);
    backdrop-filter: blur(28px);
    -webkit-backdrop-filter: blur(28px);
    border: 1px solid rgba(255,246,240,0.14);
    border-radius: 14px;
    box-shadow: 0 30px 80px rgba(0,0,0,0.55);
    animation: ap-fade-in .2s ease;
}
.section-picker[data-open="true"] .section-picker-popup { display: block; }
/* Pequena flecha visual hacia el boton */
.section-picker-popup::before {
    content: "";
    position: absolute;
    top: -6px;
    left: 14px;
    width: 12px; height: 12px;
    background: rgba(15,19,24,0.95);
    border-left: 1px solid rgba(255,246,240,0.14);
    border-top: 1px solid rgba(255,246,240,0.14);
    transform: rotate(45deg);
}

.picker-cluster { padding: 6px 0 14px; }
.picker-cluster + .picker-cluster {
    border-top: 1px solid rgba(255,246,240,0.07);
    margin-top: 4px;
    padding-top: 14px;
}
.picker-cluster h4 {
    margin: 0 0 8px;
    padding: 0 10px;
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255,246,240,0.42);
}
.picker-item {
    display: block;
    width: 100%;
    text-align: left;
    padding: 10px 12px;
    background: transparent;
    border: 0;
    border-radius: 8px;
    color: rgba(255,246,240,0.86);
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    transition: background .15s ease, color .15s ease;
    line-height: 1.2;
}
.picker-item:hover { background: rgba(255,246,240,0.06); color: rgba(255,246,240,0.96); }
.picker-item.tab-active {
    background: rgba(255,56,56,0.10);
    color: #fff;
    box-shadow: none;
    position: relative;
}
.picker-item.tab-active::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 3px;
    height: 18px;
    background: var(--abba);
    border-radius: 2px;
}

/* Ocultar la barra horizontal de tabs legacy (queda en HTML por compat
   pero ya no se usa visualmente — toda navegacion via section-picker) */
.tabs-unified { display: none; }

/* ============================================================================
   Tab strip — resumen visual de metricas en cada tab-panel del dashboard
   ============================================================================ */
.tab-strip {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 0;
    border-top: 1px solid rgba(255,246,240,0.07);
    border-bottom: 1px solid rgba(255,246,240,0.07);
    margin: 0 0 28px;
    padding: 0;
}
.tab-strip-cell {
    padding: 22px 24px 22px 0;
    border-right: 1px solid rgba(255,246,240,0.07);
    cursor: default;
    overflow: hidden;
    min-width: 0;
}
.tab-strip-cell:last-child { border-right: 0; }
.tab-strip-cell:nth-child(n+2) { padding-left: 24px; }
.tab-strip-eyebrow {
    display: block;
    font-size: 10px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(255,246,240,0.56);
    margin-bottom: 8px;
    font-weight: 500;
}
.tab-strip-value {
    display: block;
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-size: clamp(22px, 2.4vw, 32px);
    font-weight: 500;
    color: rgba(255,246,240,0.96);
    line-height: 1;
    letter-spacing: -0.02em;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.tab-strip-value.warn  { color: #f5b366; }
.tab-strip-value.alert { color: #ff3838; }
.tab-strip-value.good  { color: #6cd6c6; }
.tab-strip-foot {
    display: block;
    color: rgba(255,246,240,0.40);
    font-size: 11px;
    margin-top: 6px;
    letter-spacing: 0.04em;
}

@media (max-width: 700px) {
    .tab-strip { grid-template-columns: 1fr 1fr; }
    .tab-strip-cell { padding: 16px 14px; border-right: 0; border-bottom: 1px solid rgba(255,246,240,0.07); }
    .tab-strip-cell:nth-child(odd) { border-right: 1px solid rgba(255,246,240,0.07); }
    .tab-strip-cell:nth-child(n+2) { padding-left: 14px; }
}

/* ============================================================================
   Envíos (Mateo, feat/logistica)
   ============================================================================ */
.env-filters { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.env-filter {
    background: transparent; color: var(--text-muted);
    border: 1px solid var(--border-strong); border-radius: 999px;
    padding: 6px 14px; font-size: 12px; cursor: pointer; transition: all .15s;
    display: inline-flex; align-items: center; gap: 6px;
}
.env-filter:hover { background: var(--glass-2); color: var(--text); border-color: var(--abba-border); }
.env-filter-active {
    background: var(--abba-red); color: #fff; border-color: var(--abba-red);
}
.env-filter-badge {
    background: rgba(255,255,255,.12); color: inherit;
    border-radius: 999px; padding: 1px 8px; font-size: 11px;
}
.env-filter-active .env-filter-badge { background: rgba(255,255,255,.25); color: #fff; }

/* Segunda y tercera barra: filtros por chofer y zona */
.env-zona-bar {
    display: flex; flex-wrap: wrap; gap: 6px;
    margin-top: 6px;
}
.env-zona-chip { font-size: 11px; }
.env-chofer-bar {
    display: flex; flex-wrap: wrap; gap: 6px;
    margin-top: 8px; padding-top: 8px;
    border-top: 1px dashed var(--border);
}
.env-chofer-chip { font-size: 11px; }
.env-chofer-hoy {
    margin-left: 4px; padding: 1px 6px; border-radius: 999px;
    background: rgba(108,214,198,.22); color: #6cd6c6;
    font-size: 10px; font-weight: 700;
}

/* Badge "+Nd" pegado al nombre del cliente cuando pendiente >= 3 días */
/* Dot de frescura de sync; al lado de #env-status en la toolbar de Envíos. */
.env-sync-dot {
    width: 9px; height: 9px; border-radius: 50%;
    display: inline-block; vertical-align: middle;
    margin-left: 2px;
}
.env-sync-dot.ok    { background: #6cd6c6; box-shadow: 0 0 6px rgba(108,214,198,.6); }
.env-sync-dot.warn  { background: #f5b366; box-shadow: 0 0 6px rgba(245,179,102,.6); }
.env-sync-dot.stale {
    background: #ff7777; box-shadow: 0 0 8px rgba(255,119,119,.8);
    animation: env-sync-pulse 1.5s infinite;
}
/* Falló el último intento de sync: la planilla no responde. Rojo intenso
   con anillo, distinto del "stale" (viejo pero quizá OK). */
.env-sync-dot.error {
    background: #cf2a3d;
    box-shadow: 0 0 0 3px rgba(207,42,61,.35), 0 0 10px rgba(207,42,61,.9);
    animation: env-sync-pulse 1s infinite;
}
@keyframes env-sync-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%      { opacity: .55; transform: scale(1.25); }
}
@media (prefers-reduced-motion: reduce) {
    .env-sync-dot.stale, .env-sync-dot.error { animation: none; }
}

/* ============================================================================
   Plan del día — armado anticipado de despachos (sub-panel "plan")
   ============================================================================ */
.log-plan-toolbar {
    display: flex; align-items: flex-end; gap: 12px;
    margin: 12px 0 16px;
}
.log-plan-toolbar label {
    display: flex; flex-direction: column; gap: 4px;
    font-size: 13px; color: var(--text-muted);
}
.log-plan-toolbar input[type="date"] {
    background: var(--glass-input); color: var(--text);
    border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px;
}
.log-plan-grid {
    display: grid; grid-template-columns: 1fr;  /* pool full-width arriba, viajes abajo */
    gap: 18px; align-items: start;
}

/* ===== Pool denso del Plan del día (armado en lote) ===== */
.log-zona { margin-bottom: 14px; }
.log-zona-head {
    display: flex; align-items: center; gap: 10px; margin: 0 0 8px;
    padding-left: 8px; border-left: 3px solid var(--zona-color, var(--border-strong));
}
.log-zona-chip {
    font-size: 12px; font-weight: 700; letter-spacing: .3px; text-transform: uppercase;
    color: var(--text); padding: 2px 8px; border-radius: 999px;
    background: var(--surface-2); border: 1px solid var(--border);
}
.log-zona-sel { margin-left: auto; }
.log-pool-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 8px;
}
.log-pool-row {
    display: flex; align-items: center; gap: 8px; padding: 7px 10px;
    background: var(--surface-2); border: 1px solid var(--border);
    border-left: 3px solid var(--zona-color, var(--border-strong)); border-radius: 8px;
    cursor: pointer; min-width: 0;
}
.log-pool-row:hover { box-shadow: var(--card-float); }
.log-pool-row.sel { background: var(--abba-soft); border-color: var(--abba); }
.log-pool-chk { flex: 0 0 auto; width: 18px; height: 18px; cursor: pointer; accent-color: var(--abba); }
.log-pool-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.log-pool-row-l1 { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.log-pool-row-l1 .cli { font-weight: 600; }
.log-pool-row-l2 { font-size: 11px; color: var(--text-muted); }
.log-pool-flag { flex: 0 0 auto; color: var(--warning); font-weight: 700; }
.log-pool-exp { flex: 0 0 auto; color: var(--text-muted); font-size: 11px; }
.log-pool-row-exp {
    grid-column: 1 / -1; background: var(--surface); border: 1px solid var(--border);
    border-radius: 8px; padding: 8px 10px; margin: -2px 0 4px; font-size: 12px;
}

/* ===== Barra flotante de asignación en lote ===== */
.log-selected-bar {
    position: fixed; left: 50%; bottom: 22px; transform: translateX(-50%); z-index: 90;
    display: flex; align-items: center; gap: 12px; padding: 10px 16px;
    background: var(--surface); border: 1px solid var(--border-strong); border-radius: 12px;
    box-shadow: var(--card-float); max-width: calc(100vw - 32px);
}
.log-selected-bar strong { color: var(--abba); }
.log-selected-bar select {
    background: var(--glass-input); color: var(--text); border: 1px solid var(--border);
    border-radius: 8px; padding: 7px 9px; font-size: 13px; max-width: 220px;
}
.log-plan-col {
    background: var(--surface); border: 1px solid var(--border);
    border-radius: 12px; padding: 14px;
}
.log-plan-col-titulo {
    margin: 0 0 12px; font-size: 14px; font-weight: 600;
    display: flex; align-items: center; gap: 8px;
}
.log-plan-badge {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 22px; height: 20px; padding: 0 7px;
    border-radius: 999px; background: var(--abba-soft); color: var(--abba);
    border: 1px solid var(--abba-border); font-size: 12px; font-weight: 700;
}

/* Pool de remitos sin asignar */
.log-pool-lista { list-style: none; margin: 0; padding: 0; }
.log-pool-item {
    display: flex; flex-direction: column; align-items: stretch; gap: 5px;
    padding: 10px; border-radius: 8px; background: var(--surface-2);
    border: 1px solid var(--border); margin-bottom: 8px;
}
.log-pool-item .cli { font-weight: 600; }
.log-asignar-sel {
    background: var(--glass-input); color: var(--text);
    border: 1px solid var(--border); border-radius: 8px;
    padding: 7px 9px; font-size: 13px; width: 100%; margin-top: 2px;
}

/* ===== Rebotes: pedidos que volvieron (Problema/Reprogramar) ===== */
.plan-rebotes { margin: 0 0 16px; }
.rebote-box {
    background: var(--warning-soft); border: 1px solid rgba(245,166,35,0.4);
    border-left: 4px solid var(--warning); border-radius: 12px; overflow: hidden;
}
.rebote-head {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    width: 100%; padding: 12px 14px; background: none; border: 0; cursor: pointer;
    color: var(--text); font: inherit; text-align: left;
}
.rebote-head-tit { font-size: 14px; font-weight: 700; letter-spacing: .02em; color: var(--warning); }
.rebote-badge {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 22px; height: 20px; padding: 0 7px; margin-left: 6px;
    border-radius: 999px; background: var(--warning); color: #1b1b1b;
    font-size: 12px; font-weight: 800;
}
.rebote-chev { color: var(--warning); transition: transform .15s ease; }
.rebote-colapsado .rebote-chev { transform: rotate(-90deg); }
.rebote-colapsado .rebote-body { display: none; }
.rebote-body {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 10px; padding: 0 14px 14px;
}
.rebote-card {
    display: flex; flex-direction: column; gap: 6px;
    background: var(--surface); border: 1px solid var(--border);
    border-left: 3px solid var(--warning); border-radius: 10px; padding: 11px 12px;
}
.rebote-card-head {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.rebote-cli { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rebote-obs {
    margin: 2px 0; font-size: 13px; color: var(--text);
    background: var(--warning-soft); border-radius: 8px; padding: 7px 9px;
}
.rebote-obs.muted { background: none; padding: 2px 0; }
.rebote-acciones { display: flex; gap: 8px; margin-top: 4px; }
.rebote-acciones .btn { flex: 1; min-height: 44px; font-weight: 700; }
.rebote-cancel { color: var(--abba-red); border-color: rgba(217,46,46,0.5); }
.rebote-cancel:hover { background: rgba(217,46,46,0.12); border-color: var(--abba-red); }

/* Cinta "↻ REBOTÓ" sobre la tarjeta del pool que volvió de un rebote */
.log-pool-item-rebote { border-color: rgba(245,166,35,0.55); border-left: 3px solid var(--warning); }
.log-rebote-cinta {
    display: block; font-size: 11px; font-weight: 700; letter-spacing: .03em;
    color: var(--warning); background: var(--warning-soft);
    border-radius: 6px; padding: 3px 7px; margin: -2px 0 2px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* Bottom-sheet de cancelación logística */
.rebote-chips { display: flex; flex-wrap: wrap; gap: 7px; margin: 10px 0; }
.rebote-chip {
    background: var(--surface-2); color: var(--text);
    border: 1px solid var(--border); border-radius: 999px;
    padding: 7px 12px; font-size: 13px; cursor: pointer;
}
.rebote-chip:hover { border-color: var(--abba); }
.rebote-chip-on { background: var(--abba-soft); color: var(--abba); border-color: var(--abba-border); }
.rebote-nota {
    width: 100%; background: var(--glass-input); color: var(--text);
    border: 1px solid var(--border); border-radius: 8px; padding: 9px 10px;
    font: inherit; font-size: 14px; resize: vertical; min-height: 64px;
}
.rebote-sheet [data-rb-confirm] { letter-spacing: .03em; }

/* Cabecera de tarjeta de remito: cliente a la izquierda + remito/acción a la derecha */
.log-card-head {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.log-head-main { display: flex; align-items: center; gap: 6px; min-width: 0; }
.log-head-main .cli { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---- Declutter Pedidos: chip de camión en la fila + flota en kpi-bar ---- */
.kpi-sep {
    width: 1px; align-self: stretch; min-height: 28px;
    background: var(--border); margin: 0 6px;
}
.env-cam-chip {
    display: inline-block; margin-left: 6px; padding: 1px 7px;
    border-radius: 999px; background: var(--abba-soft); color: var(--abba);
    border: 1px solid var(--abba-border); font-size: 12px; font-weight: 600;
    white-space: nowrap;
}
/* Retiro de contenedor sin remito (PR-5): chip claro en vez de '—', para que
   no parezca un dato faltante. font-family normal (anula el .mono del td). */
.remito-retiro {
    display: inline-block; padding: 1px 8px; border-radius: 999px;
    background: rgba(245,179,102,.14); color: #f5b366;
    border: 1px solid rgba(245,179,102,.4);
    font-family: var(--font-sans, system-ui, sans-serif);
    font-size: 12px; font-weight: 600; white-space: nowrap;
}
/* Cierre de reparto — checklist (PR-2) */
.cierre-lista { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; max-height: 50vh; overflow-y: auto; }
.cierre-row { display: flex; gap: 10px; align-items: flex-start; padding: 8px; border: 1px solid var(--border); border-radius: 10px; }
.cierre-toggle {
    flex: 0 0 auto; width: 40px; height: 40px; border-radius: 10px;
    border: 1px solid var(--border-strong); background: var(--success-soft);
    color: var(--success); font-size: 18px; font-weight: 700; cursor: pointer;
}
.cierre-toggle-prob { background: var(--warning-soft); color: var(--warning); border-color: var(--warning); }
.cierre-info { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; }
.cierre-obs {
    margin-top: 4px; width: 100%; box-sizing: border-box; background: var(--glass-input);
    color: var(--text); border: 1px solid var(--border); border-radius: 8px;
    padding: 8px; font-size: 14px; font-family: inherit; resize: vertical;
}
/* D4: chips de motivo rápido en el cierre de despacho (escritorio). */
.cierre-obs-wrap { display: flex; flex-direction: column; gap: 8px; margin-top: 6px; }
.cierre-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.cierre-chip {
    background: var(--glass-input); color: var(--text); border: 1px solid var(--border);
    border-radius: 999px; padding: 6px 12px; font-size: 12px; font-family: inherit; cursor: pointer;
}
.cierre-chip:hover, .cierre-chip:active { background: var(--warning-soft); border-color: var(--warning); }
.cierre-conteo { margin-right: auto; }
@media (max-width: 768px) { .cierre-toggle { width: 48px; height: 48px; font-size: 20px; } }
/* Teléfono como acción bajo el cliente (tap-to-call), no como columna. */
.env-tel-row { margin-top: 2px; }
.env-tel-link {
    font-size: 12px; color: var(--accent-blue); text-decoration: none;
    white-space: nowrap;
}
.env-tel-link:hover { text-decoration: underline; }
/* Barra de KPIs oculta en la sub-tab Pedidos (la barra de filtros ya resume). */
.kpi-bar-oculta { display: none !important; }
/* Panel colapsable "Más filtros" (chips chofer + zona). */
.env-filtros-mas { margin: 8px 0 4px; }
.env-filter-mas { margin-left: auto; }
.env-detalle-camion { margin: 12px 0; }
.env-cam-label { display: flex; flex-direction: column; gap: 5px; font-size: 13px; color: var(--text-muted); }
.env-cam-label select {
    background: var(--glass-input); color: var(--text);
    border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; font-size: 14px;
}

/* ---- Drag & drop del armado (Plan del día) ---- */
.log-grip {
    color: var(--text-soft); font-size: 14px; line-height: 1;
    cursor: grab; user-select: none; flex-shrink: 0;
}
.log-pool-item, .log-trip-item { cursor: grab; }
.log-pool-item:active, .log-trip-item:active { cursor: grabbing; }
.log-pool-item:hover, .log-trip-item:hover { box-shadow: var(--card-float); }
.log-card-dragging { opacity: .4; }
/* Zonas válidas mientras hay un drag activo (punteado tenue). */
.log-dnd-active .log-trip { outline: 1px dashed var(--border-strong); outline-offset: 2px; }
#plan-pool.log-dnd-poolzone { outline: 2px dashed var(--accent-blue); outline-offset: -4px; border-radius: 12px; }
/* Zona apuntada ahora mismo (encendido fuerte). */
.log-trip.log-dnd-over, #plan-pool.log-dnd-over {
    outline: 2px solid var(--accent-blue);
    background: rgba(74, 158, 255, .10);
}
/* Píldora compacta que sigue al cursor durante el drag. */
.log-drag-pill {
    position: fixed; top: -1000px; left: -1000px;
    padding: 6px 12px; border-radius: 999px;
    background: var(--abba); color: #fff; font-size: 13px; font-weight: 700;
    box-shadow: var(--card-float); pointer-events: none; white-space: nowrap;
}
@media (prefers-reduced-motion: reduce) {
    .log-pool-item, .log-trip-item { transition: none; }
}
.log-remito {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px; color: var(--text-muted); flex-shrink: 0;
}

/* Lista de artículos (contenido del remito) — lo que Juanpi usa para armar */
.log-articulos {
    list-style: none; margin: 4px 0 0; padding: 6px 0 0;
    border-top: 1px dashed var(--border);
}
.log-articulos li {
    position: relative; padding-left: 14px;
    font-size: 13px; line-height: 1.4; color: var(--text);
}
.log-articulos li::before {
    content: '•'; position: absolute; left: 0;
    color: var(--abba); font-weight: 800;
}
.log-art-mas { padding-left: 0 !important; }
.log-art-mas::before { content: '' !important; }
.log-art-toggle {
    background: transparent; border: 0; color: var(--accent-blue);
    cursor: pointer; font-size: 12px; padding: 2px 0;
}
.log-art-toggle:hover { text-decoration: underline; }

/* Camiones + viajes */
.log-cam-block {
    border: 1px solid var(--border); border-radius: 10px;
    padding: 10px 12px; margin-bottom: 14px; background: var(--surface-2);
}
.log-cam-head {
    display: flex; align-items: center; justify-content: space-between;
    gap: 10px; margin-bottom: 10px;
}
.log-cam-nombre { font-weight: 700; font-size: 15px; }
.log-cam-vacio { margin: 4px 0 0; }
.log-btn-sm { padding: 5px 10px !important; font-size: 13px !important; }

.log-trip {
    border: 1px solid var(--border); border-radius: 8px;
    background: var(--surface-3); padding: 10px; margin-bottom: 8px;
}
.log-trip-head {
    display: flex; align-items: center; justify-content: space-between;
    gap: 8px; margin-bottom: 8px;
}
.log-trip-titulo { font-weight: 600; display: flex; align-items: center; gap: 6px; }
.log-trip-actions { display: flex; gap: 6px; }
.log-trip-lista { list-style: none; margin: 0; padding: 0; }
.log-trip-item {
    display: flex; flex-direction: column; gap: 3px;
    padding: 8px 0; border-top: 1px solid var(--border);
}
.log-trip-item .cli { font-weight: 600; font-size: 14px; }
.log-trip-vacio { margin: 2px 0 0; }
.log-quitar {
    background: transparent; color: var(--text-muted);
    border: 1px solid var(--border); border-radius: 6px;
    width: 26px; height: 26px; cursor: pointer; flex-shrink: 0;
}
.log-quitar:hover { color: var(--abba); border-color: var(--abba-border); }

/* Sub-panel Reportes */
.rep-toolbar {
    display: flex; flex-direction: column; gap: 14px;
    margin-bottom: 16px;
}
.rep-preset-group { display: flex; flex-wrap: wrap; gap: 8px; }
.rep-custom > summary {
    cursor: pointer; font-size: 13px; color: var(--text-muted);
    padding: 6px 10px; border: 1px dashed var(--border); border-radius: 6px;
    display: inline-block; list-style: none;
}
.rep-custom > summary::-webkit-details-marker { display: none; }
.rep-custom[open] > summary { color: var(--text); border-style: solid; }
.rep-custom-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; margin-top: 10px; }
.rep-custom-row label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--text-muted); }
.rep-custom-row input[type="date"] {
    background: var(--glass-1); color: var(--text);
    border: 1px solid var(--border); border-radius: 6px; padding: 6px 10px;
    color-scheme: dark;
}
.rep-custom-row input[type="date"]::-webkit-calendar-picker-indicator { filter: invert(.8); }
.rep-summary {
    display: flex; flex-wrap: wrap; gap: 18px;
    padding: 12px 16px; background: var(--glass-1); border-radius: 8px;
    margin-bottom: 18px;
}
.rep-grid {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 16px;
}
.rep-card {
    background: var(--glass-1); border: 1px solid var(--border);
    border-radius: 8px; padding: 12px 14px;
}
.rep-card h4 { margin: 0 0 8px 0; font-size: 13px; color: var(--text-muted); text-transform: uppercase; letter-spacing: .05em; }
.rep-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.rep-table th, .rep-table td { padding: 4px 6px; border-bottom: 1px solid var(--border); text-align: left; }
.rep-table th { font-size: 11px; color: var(--text-muted); }
.rep-table td.num { text-align: right; font-weight: 600; }

/* Contacto en obra al lado del teléfono ("Nacho" para 2615703303) */
.env-contacto {
    color: var(--text-muted);
    font-size: 12px;
    margin-left: 2px;
}
.env-contacto-solo {
    color: var(--text-muted);
    font-size: 12px;
    font-style: italic;
}

.env-badge-atrasado {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 7px;
    border-radius: 999px;
    background: rgba(245,179,102,.22);
    color: #f5b366;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .02em;
    vertical-align: middle;
}

.env-pill {
    display: inline-block; padding: 5px 12px; border-radius: 999px;
    font-size: 11px; font-weight: 700; letter-spacing: .04em;
    border: 1px solid transparent;
    text-transform: uppercase;
}
.env-pill-pendiente { background: rgba(200,200,210,.28); color: #e6e6ee; border-color: rgba(200,200,210,.45); }
.env-pill-remitado  { background: rgba(120,160,255,.32); color: #b9cfff; border-color: rgba(120,160,255,.65); }
/* Progresión de carteles logísticos (azul → más saturado = más inminente). */
.env-pill-agendado    { background: rgba(90,180,230,.24); color: #a9dcf0; border-color: rgba(90,180,230,.55); }
.env-pill-preparacion { background: rgba(74,120,255,.42); color: #cdd9ff; border-color: rgba(74,120,255,.78); }
.env-pill-reparto   { background: rgba(245,179,102,.32); color: #ffcf8f; border-color: rgba(245,179,102,.65); }
.env-pill-entregado { background: rgba(108,214,198,.32); color: #8df0e0; border-color: rgba(108,214,198,.65); }
.env-pill-problema  { background: rgba(255,80,80,.34);   color: #ffb0b0; border-color: rgba(255,80,80,.75); }
.env-pill-borrado   { background: rgba(120,120,120,.20); color: #999; text-decoration: line-through; border-color: rgba(120,120,120,.40); }

/* Acción de remito en la fila: "➕ Cargar remito" es la vía Pendiente→Remitado
   del vendedor, así que se ve como un botón claro (no como texto). */
.env-remito-add {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 5px 10px; font-size: 12px; font-weight: 600; cursor: pointer;
  color: #fff; background: var(--abba); border: 1px solid var(--abba);
  border-radius: var(--radius); white-space: nowrap;
  transition: background .12s, box-shadow .12s;
}
.env-remito-add:hover { background: var(--abba-hover); box-shadow: 0 2px 8px var(--abba-glow); }
/* Remito ya cargado: editable de forma sutil (el ✏️ aparece al hover). */
.env-remito-edit {
  font: inherit; color: var(--text); background: transparent; border: none;
  padding: 2px 4px; cursor: pointer; border-radius: var(--radius-sm);
  white-space: nowrap;
}
.env-remito-edit:hover { background: var(--glass-2); }

/* Nº de pedido: id nativo, referenciable. Discreto pero presente. */
.col-id { width: 60px; }
.env-id { color: var(--text-soft); font-variant-numeric: tabular-nums; white-space: nowrap; font-weight: 600; }
/* Vendedor: texto secundario, no compite con el cliente. */
.env-vendedor { color: var(--text-muted); white-space: nowrap; }
/* Condición de pago: chip neutro, scaneable. Acopio resaltado (paga adelantado,
   caso comercialmente distinto). */
.env-cond-tag {
  display: inline-block; padding: 3px 9px; border-radius: 999px;
  font-size: 11px; font-weight: 600; letter-spacing: .02em; white-space: nowrap;
  background: var(--surface-3); color: var(--text-muted); border: 1px solid var(--border);
}
.env-cond-acopio { background: rgba(245,179,102,.18); color: #ffcf8f; border-color: rgba(245,179,102,.45); }

/* Retiro sin remito: "s/remito" discreto, no compite con los nº reales. */
.env-remito-sret { font-size: 12px; }

.env-row { cursor: pointer; transition: opacity .12s; }
/* Hover: solo bajamos opacidad. NO cambiar background ni brightness:
   queremos que cada fila mantenga el color de su estado (gris/ámbar/
   verde/rojo) y solo se note "un poco más translúcida". */
.env-row:hover { opacity: .82; }

/* Info completa visible: wrap en celdas largas en lugar de truncar. */
#tbl-envios td {
    vertical-align: top;
    white-space: normal;
    word-wrap: break-word;
    overflow-wrap: anywhere;
    line-height: 1.35;
    padding-top: 10px;
    padding-bottom: 10px;
}
.env-articulos { min-width: 200px; max-width: 360px; }

/* Cada artículo del detalle en su propia línea cuando se separan con `+`.
   Lista compacta sin sangría exagerada para que entre en celdas chicas. */
.art-list {
    list-style: none;
    margin: 0; padding: 0;
}
.art-list li {
    position: relative;
    padding-left: 14px;
    line-height: 1.4;
    margin-bottom: 2px;
}
.art-list li::before {
    content: '•';
    position: absolute;
    left: 0;
    color: var(--abba-red);
    font-weight: 700;
}
.art-list li:last-child { margin-bottom: 0; }
.env-direccion { min-width: 160px; max-width: 280px; }
.env-anotado { font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--text-muted); font-size: 12px; }

/* Tintes transparentes por estado (fila completa). */
.env-row-pendiente  { background-color: rgba(170,170,170,0.10); }
.env-row-remitado   { background-color: rgba(120,160,255,0.16); }
.env-row-reparto    { background-color: rgba(245,179,102,0.18); }
.env-row-entregado  { background-color: rgba(108,214,198,0.14); }
.env-row-problema   { background-color: rgba(255,56,56,0.18); }
.env-row-borrado    { background-color: rgba(120,120,120,0.06); opacity: 0.55; }

/* Celda Estado + botón inline "siguiente estado" para acceso rápido. */
.env-estado-cell {
    display: flex; flex-direction: column; gap: 6px; align-items: flex-start;
    white-space: nowrap;
}
.env-btn-next {
    background: transparent;
    color: var(--text);
    border: 1px solid var(--border-strong);
    border-radius: 6px;
    padding: 4px 10px;
    font-size: 11px; font-weight: 600;
    cursor: pointer;
    transition: all .12s;
}
.env-btn-next:hover {
    background: var(--abba-red);
    color: #fff;
    border-color: var(--abba-red);
}
.env-btn-next:disabled { opacity: .5; cursor: wait; }

.env-banner {
    background: rgba(245,179,102,.10); border: 1px solid rgba(245,179,102,.30);
    color: #f5b366; padding: 10px 14px; border-radius: 8px; margin-bottom: 14px;
    font-size: 13px;
}

.env-detalle .env-dl {
    display: grid; grid-template-columns: max-content 1fr;
    gap: 8px 16px; margin-bottom: 16px;
}
.env-detalle .env-dl dt { color: var(--text-muted); font-size: 12px; }
.env-detalle .env-dl dd { margin: 0; font-size: 14px; }
.env-obs { padding: 10px; background: var(--glass); border-radius: 8px; margin-bottom: 14px; font-size: 13px; }

/* Bloque "Reparto" en el drawer del envío — visible solo cuando el envío
   fue despachado. Muestra camión + número de despacho + fechas. */
.env-traza {
    border-top: 1px solid var(--border-strong);
    padding-top: 12px;
    margin-top: 6px;
    margin-bottom: 14px;
}
.env-traza-head {
    display: flex; align-items: center; gap: 8px;
    margin-bottom: 8px;
    font-size: 14px;
    flex-wrap: wrap;
}
.env-traza-icono { font-size: 18px; }
.env-traza-dl {
    display: grid; grid-template-columns: max-content 1fr;
    gap: 4px 16px; margin: 0;
}
.env-traza-dl dt { color: var(--text-muted); font-size: 12px; }
.env-traza-dl dd { margin: 0; font-size: 13px; font-variant-numeric: tabular-nums; }

.env-acciones { border-top: 1px solid var(--border-strong); padding-top: 14px; }
.env-botones {
    display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-bottom: 14px;
}
.env-btn-estado {
    min-height: 64px; font-size: 14px; font-weight: 600;
}
.env-obs-label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--text-muted); }
.env-obs-label textarea {
    width: 100%; padding: 8px; border-radius: 6px;
    background: var(--glass); border: 1px solid var(--border-strong); color: var(--text);
    font-family: inherit; font-size: 13px;
}

/* ============================================================================
   Toasts no bloqueantes (reemplazo de alert()).
   Position fixed bottom-right, slide-in, auto-cierre.
   ============================================================================ */
.toast-container {
    position: fixed; right: 16px; bottom: 16px;
    display: flex; flex-direction: column; gap: 10px;
    z-index: 9999;
    pointer-events: none;
}
.toast {
    pointer-events: auto;
    background: rgba(15, 18, 22, 0.96);
    color: var(--text);
    border: 1px solid var(--border-strong);
    border-left: 4px solid var(--text-muted);
    border-radius: 10px;
    padding: 12px 16px;
    padding-right: 36px;
    min-width: 240px; max-width: 380px;
    box-shadow: 0 8px 24px rgba(0,0,0,.5), 0 2px 6px rgba(0,0,0,.3);
    font-size: 14px;
    line-height: 1.4;
    opacity: 0;
    transform: translateY(12px) scale(.98);
    transition: opacity .22s ease-out, transform .22s ease-out;
    position: relative;
    backdrop-filter: blur(8px);
}
.toast.toast-in {
    opacity: 1;
    transform: translateY(0) scale(1);
}
.toast.toast-out {
    opacity: 0;
    transform: translateY(12px) scale(.98);
}
.toast-success { border-left-color: #6cd6c6; }
.toast-error   { border-left-color: #ff7777; }
.toast-info    { border-left-color: #f5b366; }
.toast-title {
    font-weight: 700; font-size: 13px;
    text-transform: uppercase; letter-spacing: .04em;
    margin-bottom: 4px;
}
.toast-success .toast-title { color: #6cd6c6; }
.toast-error   .toast-title { color: #ff7777; }
.toast-info    .toast-title { color: #f5b366; }
.toast-body { color: var(--text); }
.toast-body div + div { margin-top: 2px; color: var(--text-muted); font-size: 13px; }
.toast-close {
    position: absolute; top: 8px; right: 10px;
    background: transparent; border: 0; color: var(--text-muted);
    cursor: pointer; font-size: 20px; line-height: 1;
    padding: 2px 6px;
}
.toast-close:hover { color: var(--text); }

@media (max-width: 768px) {
    .toast-container {
        right: 8px; left: 8px; bottom: 8px;
        align-items: stretch;
    }
    .toast { min-width: 0; max-width: none; }
}

/* ============================================================================
   Envíos — Desktop responsive (≥ 769px). La tabla por defecto
   (`.data-table`) tiene `min-width: max-content` + `white-space: nowrap`,
   lo que con 12 columnas obliga a scroll horizontal. Acá la dejamos
   adaptarse al viewport: wrap en texto largo, ancho controlado por
   columnas, padding más compacto.
   ============================================================================ */
@media (min-width: 769px) {
    [data-panel="envios"] .table-wrap {
        overflow-x: visible;  /* anula scroll horizontal del wrapper */
    }
    #tbl-envios {
        min-width: 0;
        table-layout: auto;
        width: 100%;
    }
    #tbl-envios th,
    #tbl-envios td {
        white-space: normal;        /* anula nowrap heredado */
        word-break: break-word;
        overflow-wrap: anywhere;
        padding: 10px 10px;          /* compacto: era 14/16 */
        vertical-align: top;
        font-size: 12.5px;
        line-height: 1.35;
    }
    /* Columnas con texto largo: max-width estricto + wrap.
       Las otras se ajustan automáticamente. */
    #tbl-envios .env-articulos { max-width: 240px; }
    #tbl-envios .env-direccion { max-width: 200px; }
    #tbl-envios .env-td-cliente { max-width: 180px; }
    /* Tel / Remito en monospace pero permitiendo wrap si es muy largo */
    #tbl-envios td.mono { font-size: 11.5px; word-break: break-all; }
    /* Selector camión más chico */
    #tbl-envios .env-cam-select { min-width: 90px; max-width: 120px; font-size: 11.5px; }
    /* Estado: pill + botón siempre en columna (no fila) para no estirar */
    #tbl-envios .env-estado-cell {
        display: flex; flex-direction: column; gap: 4px; align-items: flex-start;
    }
    #tbl-envios .env-btn-next { padding: 3px 8px; font-size: 11px; min-height: 28px; }
}

/* ============================================================================
   Envíos — Sub-tabs (Pedidos / Camiones / Despacho), CRUD camiones,
   barra de bulk-asignar, cards de despacho.
   ============================================================================ */
.sub-tabs {
    display: flex; flex-wrap: nowrap; gap: 4px;
    overflow-x: auto; -webkit-overflow-scrolling: touch;
    border-bottom: 1px solid var(--border-strong);
    margin: 8px 0 16px;
    padding-bottom: 0;
}
.sub-tab {
    background: transparent; color: var(--text-muted);
    border: 0; border-bottom: 2px solid transparent;
    padding: 10px 18px; font-size: 14px; font-weight: 500;
    cursor: pointer; transition: all .15s;
    white-space: nowrap;
}
.sub-tab:hover { color: var(--text); }
.sub-tab-active {
    color: var(--text);
    border-bottom-color: var(--abba-red);
    font-weight: 600;
}
.sub-panel { display: block; }
.sub-panel[hidden] { display: none; }

/* === Sidebar de Logística (Logistics Core) — scope: solo el panel Envíos ===
   Convierte la nav de sub-tabs en una barra lateral vertical. No afecta el
   masthead global ni ninguna sección contable. */
.env-layout { display: flex; align-items: flex-start; gap: 0; }
.env-sidebar {
  width: 232px; flex: 0 0 232px; box-sizing: border-box;
  display: flex; flex-direction: column; gap: 4px;
  padding: 4px 0 10px; border-right: 1px solid var(--border);
  position: sticky; top: 10px; align-self: flex-start;
  max-height: calc(100vh - 20px);
}
.env-main { flex: 1; min-width: 0; padding-left: 24px; }

/* Marca */
.env-sb-brand { display: flex; align-items: center; gap: 11px; padding: 4px 16px 14px; }
.env-sb-mark {
  width: 40px; height: 40px; border-radius: 10px; flex-shrink: 0;
  background: var(--abba); color: #fff; font-weight: 800; font-size: 15px;
  letter-spacing: .03em; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 10px var(--abba-glow);
}
.env-sb-brandtext strong { display: block; font-size: 13px; font-weight: 800; color: var(--text); letter-spacing: .04em; line-height: 1.15; }
.env-sb-brandtext small { display: block; color: var(--text-muted); font-size: 10px; text-transform: uppercase; letter-spacing: .12em; margin-top: 2px; }

/* Botón provisorio "Otras secciones" (abre el section-picker global) */
.env-sb-otras {
  margin: 0 12px 8px; padding: 9px 12px; cursor: pointer; text-align: left;
  font-size: 12.5px; font-weight: 600; color: var(--text-muted);
  background: var(--glass-2); border: 1px solid var(--border); border-radius: var(--radius-md);
  transition: background .12s, color .12s, border-color .12s;
}
.env-sb-otras:hover { background: var(--surface-3); color: var(--text); border-color: var(--border-strong); }

/* Nav vertical: reusa .sub-tab pero en columna (override del horizontal) */
.env-sb-nav {
  display: flex; flex-direction: column; flex-wrap: nowrap; gap: 2px;
  overflow: visible; border-bottom: none; margin: 0; padding: 0 8px;
}
.env-sb-nav .sub-tab {
  display: flex; align-items: center; gap: 11px; width: 100%; text-align: left;
  padding: 10px 12px; border-radius: var(--radius-md); border-bottom: none;
  border-left: 3px solid transparent; font-size: 14px;
}
.env-sb-nav .sub-tab:hover { background: rgba(255,255,255,.04); }
.env-sb-nav .sub-tab.sub-tab-active {
  background: var(--abba-soft); color: var(--abba); font-weight: 700;
  border-bottom: none; border-left-color: var(--abba);
}
.env-sb-ico { font-size: 16px; line-height: 1; width: 18px; text-align: center; }

/* Footer del sidebar */
.env-sb-foot { margin-top: auto; padding: 8px 12px 0; border-top: 1px solid var(--border); }
.env-sb-link {
  width: 100%; text-align: left; padding: 9px 12px; cursor: pointer;
  background: transparent; border: 0; border-radius: var(--radius-md);
  color: var(--text-muted); font-size: 13px; font-weight: 500; transition: background .12s, color .12s;
}
.env-sb-link:hover { background: rgba(255,80,80,.10); color: var(--abba); }

/* Mobile: el sidebar vuelve a ser una barra horizontal arriba (como las sub-tabs). */
@media (max-width: 860px) {
  .env-layout { flex-direction: column; }
  .env-sidebar {
    width: 100%; flex: none; position: static; max-height: none;
    flex-direction: row; align-items: center; gap: 8px; padding: 4px 0 10px;
    border-right: none; border-bottom: 1px solid var(--border); overflow-x: auto;
  }
  .env-sb-brand { padding: 0 8px 0 4px; flex-shrink: 0; }
  .env-sb-mark { width: 32px; height: 32px; font-size: 12px; }
  .env-sb-brandtext { display: none; }
  .env-sb-otras { margin: 0; flex-shrink: 0; white-space: nowrap; }
  .env-sb-nav { flex-direction: row; padding: 0; flex: 1; overflow-x: auto; }
  .env-sb-nav .sub-tab { width: auto; white-space: nowrap; border-left: none; border-bottom: 3px solid transparent; }
  .env-sb-nav .sub-tab.sub-tab-active { border-left: none; border-bottom-color: var(--abba); }
  .env-sb-foot { display: none; }
  .env-main { padding-left: 0; }
}

/* ============================================================================
   PALETA "LOGISTICS CORE" — idéntica a los diseños de Stitch.
   Scope GLOBAL (:root): toda la app adopta los tokens navy/salmón del design
   system, del header al pie. Re-themea también las vistas contables (compartido).
   ============================================================================ */
:root {
  --bg-deep: #010f1f;        /* surface-container-lowest */
  --bg: #051424;             /* background / surface */
  --surface: #122131;        /* surface-container */
  --surface-2: #1c2b3c;      /* surface-container-high */
  --surface-3: #273647;      /* surface-container-highest */
  --text: #d4e4fa;           /* on-surface */
  --text-muted: #9babc4;     /* blue-gray legible */
  --text-soft: #6a7c95;
  --border: rgba(91, 64, 61, .45);            /* outline-variant #5b403d */
  --border-strong: rgba(171, 137, 133, .50);  /* outline #ab8985 */
  --glass: rgba(18, 33, 49, .72);
  --glass-2: rgba(28, 43, 60, .85);
  --abba: #d32f2f;           /* primary-container */
  --abba-red: #d32f2f;
  --abba-hover: #b91f1f;
  --abba-glow: rgba(211, 47, 47, .40);
  --abba-soft: rgba(211, 47, 47, .12);
  --abba-border: rgba(211, 47, 47, .35);
  --lc-primary: #ffb3ac;     /* primary (salmón): texto/íconos/bordes ACTIVOS */
  --radius: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;
}

/* Fondo del módulo en navy (la superficie base del design system). */
[data-panel="envios"] { background: var(--bg); }

/* La tabla va dentro de una "card" (surface-container + borde + radius), como Stitch. */
[data-panel="envios"] .table-wrap {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); overflow: hidden;
  box-shadow: 0 1px 2px rgba(0,0,0,.30);
}

/* Hover de fila: tinte salmón al 5% (.table-row-hover de Stitch), con transición. */
[data-panel="envios"] .env-row { transition: background-color .15s ease; }
[data-panel="envios"] .env-row:hover { opacity: 1; background-color: rgba(255, 179, 172, .05); }

/* Chips de filtro = pills idénticos a Stitch (navy + borde cálido, activo rojo sólido,
   press con scale). El contador queda como texto translúcido, no como burbuja. */
[data-panel="envios"] .env-filter {
  background: var(--surface-2); color: var(--text-muted);
  border: 1px solid var(--border); border-radius: 999px;
  padding: 7px 16px; font-size: 12px; font-weight: 600;
  transition: background-color .15s, color .15s, border-color .15s, transform .1s;
}
[data-panel="envios"] .env-filter:hover { background: var(--surface-3); color: var(--text); border-color: var(--border); }
[data-panel="envios"] .env-filter:active { transform: scale(.96); }
[data-panel="envios"] .env-filter-active {
  background: var(--abba); color: #fff2f0; border-color: var(--abba); font-weight: 700;
  box-shadow: 0 1px 3px rgba(0,0,0,.35);
}
[data-panel="envios"] .env-filter-badge { background: transparent; padding: 0 0 0 4px; opacity: .7; }
[data-panel="envios"] .env-filter-active .env-filter-badge { background: transparent; color: #fff2f0; opacity: .8; }

/* Micro-interacción de "press" (active:scale-95) en botones y chips, como Stitch. */
[data-panel="envios"] .btn,
[data-panel="envios"] .env-tipo-btn,
[data-panel="envios"] .env-cond-chip,
[data-panel="envios"] .env-remito-add { transition: background-color .15s, box-shadow .15s, transform .1s, color .15s; }
[data-panel="envios"] .btn:active,
[data-panel="envios"] .env-remito-add:active { transform: scale(.96); }
[data-panel="envios"] .btn-primary:hover { filter: brightness(1.08); }

/* Sidebar: activo = salmón (texto + borde derecho), fondo rojo al 10%; hover surface-high. */
.env-sb-nav .sub-tab { border-left: none; border-right: 3px solid transparent; }
.env-sb-nav .sub-tab:hover { background: var(--surface-2); }
.env-sb-nav .sub-tab.sub-tab-active {
  background: rgba(211, 47, 47, .10); color: var(--lc-primary);
  border-left: none; border-right-color: var(--lc-primary);
}

/* Scrollbars finos (6px) como en los diseños. */
[data-panel="envios"] *::-webkit-scrollbar { width: 6px; height: 6px; }
[data-panel="envios"] *::-webkit-scrollbar-track { background: transparent; }
[data-panel="envios"] *::-webkit-scrollbar-thumb { background: #5b403d; border-radius: 10px; }
[data-panel="envios"] *::-webkit-scrollbar-thumb:hover { background: #ab8985; }

/* Modales en navy (surface-container) en toda la app, no solo en Envíos. */
.modal { background: #122131; border-color: rgba(171,137,133,.22); }

/* ============================================================================
   SHELL GLOBAL — app de Logística como página completa (Stitch full-page):
   sidebar fijo a la izquierda + topbar + main. Estética Logistics Core.
   ============================================================================ */
.lc-shell { display: flex; align-items: stretch; min-height: 100vh; }
.lc-sidebar {
  width: 240px; flex: 0 0 240px; box-sizing: border-box;
  position: sticky; top: 0; height: 100vh; z-index: 40;
  display: flex; flex-direction: column; gap: 4px; padding: 18px 0 12px;
  background: #0d1c2d;                       /* surface-container-low */
  border-right: 1px solid var(--border);
}
.lc-sidebar .env-sb-nav { flex: 1 1 auto; overflow-y: auto; padding: 0 8px; }
.lc-side-cta { margin: 2px 14px 12px; width: calc(100% - 28px); justify-content: center; }
.lc-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
/* Topbar (header Stitch): buscador izq + íconos/avatar der. Navy plano. */
.lc-topbar {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  height: 64px; padding: 0 24px; flex-shrink: 0;
  background: var(--surface); border-bottom: 1px solid var(--border);
  position: sticky; top: 0; z-index: 30;
}
/* Buscador */
.lc-topbar-search {
  display: flex; align-items: center; gap: 8px; width: 300px; max-width: 40vw;
  background: var(--surface-3); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 7px 12px; transition: border-color .15s;
}
.lc-topbar-search:focus-within { border-color: rgba(255,179,172,.5); }
.lc-topbar-search-ico { font-size: 18px; color: var(--text-muted); }
.lc-topbar-search-input {
  flex: 1; min-width: 0; background: transparent; border: none; outline: none;
  color: var(--text); font: inherit; padding: 0;
}
.lc-topbar-search-input::placeholder { color: var(--text-soft); }
/* Acciones + íconos */
.lc-topbar-actions { display: flex; align-items: center; gap: 4px; }
.lc-icon-btn {
  width: 40px; height: 40px; border-radius: 999px; border: none; cursor: pointer;
  background: transparent; color: var(--text-muted); display: grid; place-items: center;
  transition: background-color .15s, color .15s, transform .1s;
}
.lc-icon-btn:hover { background: var(--surface-2); color: var(--text); }
.lc-icon-btn:active { transform: scale(.92); opacity: .85; }
/* Avatar + dropdown */
.lc-avatar-dd { position: relative; margin-left: 6px; }
.lc-avatar-toggle { background: none; border: none; padding: 0; cursor: pointer; display: block; }
.lc-avatar-circle {
  width: 36px; height: 36px; border-radius: 999px; display: grid; place-items: center;
  background: rgba(211,47,47,.18); border: 1px solid var(--abba-border);
  color: var(--lc-primary); font-weight: 700; font-size: 13px; transition: transform .1s;
}
.lc-avatar-toggle:active .lc-avatar-circle { transform: scale(.92); }
.lc-avatar-menu {
  position: absolute; right: 0; top: calc(100% + 8px); min-width: 220px; z-index: 50;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-md); box-shadow: var(--shadow-lg); padding: 6px;
}
.lc-avatar-menu[hidden] { display: none; }
.lc-avatar-menu-head { padding: 8px 10px 10px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
.lc-avatar-menu-head strong { display: block; font-size: 13px; color: var(--text); }
.lc-avatar-menu-head small { color: var(--text-muted); font-size: 11px; text-transform: uppercase; letter-spacing: .08em; }
.lc-avatar-item {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  background: none; border: none; cursor: pointer; color: var(--text); font: inherit;
  padding: 9px 10px; border-radius: var(--radius); transition: background-color .12s;
}
.lc-avatar-item:hover { background: var(--surface-2); }
.lc-avatar-item .material-symbols-outlined { font-size: 18px; color: var(--text-muted); }
/* Ícono font del design system (Material Symbols Outlined). */
.material-symbols-outlined {
  font-family: 'Material Symbols Outlined'; font-weight: normal; font-style: normal;
  line-height: 1; vertical-align: middle; -webkit-font-feature-settings: 'liga';
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
/* El main ocupa el ancho del body (sin el centrado max-width del dashboard viejo). */
.lc-body .dashboard { max-width: none; margin: 0; }
/* Fuente Geist (design system Logistics Core) — solo en la app de logística. */
.body-dashboard {
  --font-sans: 'Geist', -apple-system, system-ui, sans-serif;
  --font-display: 'Geist', -apple-system, system-ui, sans-serif;
  --font-body: 'Geist', -apple-system, system-ui, sans-serif;
}

/* Mobile: el sidebar se vuelve una barra horizontal arriba. */
@media (max-width: 860px) {
  .lc-shell { flex-direction: column; }
  .lc-sidebar {
    width: 100%; flex: none; position: static; height: auto;
    flex-direction: row; align-items: center; gap: 8px;
    padding: 8px 10px; border-right: none; border-bottom: 1px solid var(--border); overflow-x: auto;
  }
  .lc-sidebar .env-sb-brand { padding: 0 8px 0 2px; flex-shrink: 0; }
  .lc-sidebar .env-sb-brandtext { display: none; }
  .lc-side-cta { display: none; }
  .lc-sidebar .env-sb-nav { flex-direction: row; flex: 1; overflow-x: auto; padding: 0; }
  .lc-sidebar .env-sb-nav .sub-tab { width: auto; white-space: nowrap; border-right: none; border-bottom: 3px solid transparent; }
  .lc-sidebar .env-sb-nav .sub-tab.sub-tab-active { border-right: none; border-bottom-color: var(--lc-primary); }
  .lc-sidebar .env-sb-foot { display: none; }
  /* Topbar mobile: buscador flexible, header compacto. */
  .lc-topbar { padding: 0 12px; gap: 8px; }
  .lc-topbar-search { width: auto; flex: 1; max-width: none; }
}

.env-bulk-bar {
    display: flex; gap: 10px; align-items: center;
    background: var(--glass-2);
    border: 1px solid var(--border-strong);
    border-radius: 10px;
    padding: 10px 14px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}
.env-bulk-bar select {
    background: var(--glass); border: 1px solid var(--border-strong);
    color: var(--text); padding: 6px 10px; border-radius: 6px;
    font-size: 13px;
}
.env-col-check { width: 36px; text-align: center; }
.env-col-check input[type="checkbox"] { cursor: pointer; }
#tbl-envios .env-row-check { width: 36px; text-align: center; }
#tbl-envios .env-row-check input[type="checkbox"] { cursor: pointer; transform: scale(1.2); }

.env-cam-select {
    background: var(--glass); border: 1px solid var(--border-strong);
    color: var(--text); padding: 4px 6px; border-radius: 6px;
    font-size: 12px; min-width: 110px;
}
.env-cam-select:disabled { opacity: .5; cursor: not-allowed; }

.cam-toolbar { margin-bottom: 16px; }
.cam-form-inline {
    display: flex; gap: 8px; align-items: center;
}
.cam-form-inline input[type="text"] {
    flex: 1; max-width: 400px;
    background: var(--glass); border: 1px solid var(--border-strong);
    color: var(--text); padding: 8px 12px; border-radius: 8px;
    font-size: 14px;
}
.cam-acciones { display: flex; gap: 6px; justify-content: flex-end; }
.cam-acciones button {
    background: transparent; border: 1px solid var(--border-strong);
    color: var(--text-muted); padding: 4px 10px; border-radius: 6px;
    cursor: pointer; font-size: 12px;
}
.cam-acciones button:hover { color: var(--text); border-color: var(--abba-red); }
.cam-acciones .btn-danger:hover { color: #ff7777; border-color: #ff7777; }

#despacho-cards { display: flex; flex-direction: column; gap: 16px; }
.desp-card {
    background: var(--glass);
    border: 1px solid var(--border-strong);
    border-radius: 12px;
    padding: 16px;
}
.desp-card-head {
    display: flex; justify-content: space-between; align-items: center;
    gap: 12px; flex-wrap: wrap;
    margin-bottom: 12px;
}
.desp-card-titulo { font-size: 17px; font-weight: 600; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.desp-numero {
    font-size: 12px; font-weight: 500; color: var(--text-muted);
    background: var(--glass-2); padding: 2px 8px; border-radius: 999px;
    letter-spacing: .03em;
}
.desp-card-count {
    background: rgba(245,179,102,.18); color: #f5b366;
    padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 600;
}
.desp-card-lista { list-style: none; padding: 0; margin: 0 0 12px; }
.desp-card-lista li {
    padding: 6px 0; border-bottom: 1px solid rgba(255,255,255,.05);
    font-size: 13px; display: flex; justify-content: space-between; gap: 12px;
}
.desp-card-lista li:last-child { border-bottom: 0; }
.desp-card-lista li .cli { color: var(--text); }
.desp-card-lista li .det { color: var(--text-muted); flex: 1; text-align: right; }
.desp-empty { color: var(--text-muted); padding: 24px; text-align: center; }

/* "En ruta" — barra de progreso + acciones */
.en-ruta-progreso { margin: 8px 0 14px; }
.en-ruta-bar {
    width: 100%; height: 6px; background: rgba(255,255,255,.06);
    border-radius: 999px; overflow: hidden; margin-top: 6px;
}
.en-ruta-bar > div {
    height: 100%; background: linear-gradient(90deg, #6cd6c6 0%, #2d8278 100%);
    transition: width .3s ease;
}
/* Pedidos del viaje listados en el card de En ruta */
.en-ruta-pedidos { list-style: none; margin: 0 0 12px; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.erp-item {
    display: grid; grid-template-columns: 18px 1fr; gap: 2px 8px; align-items: baseline;
    padding: 6px 8px; border-radius: 8px; background: rgba(255,255,255,.03);
    border-left: 2px solid var(--border-strong);
}
.erp-item.erp-ok   { border-left-color: var(--success); opacity: .7; }
.erp-item.erp-prob { border-left-color: var(--warning); }
.erp-item.erp-ruta { border-left-color: var(--accent-blue); }
.erp-ico { grid-row: 1 / span 2; font-size: 13px; text-align: center; }
.erp-cli { font-weight: 600; font-size: 13px; }
.erp-dir { grid-column: 2; }
.en-ruta-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.en-ruta-actions .btn { min-height: 44px; }
.en-ruta-actions a.btn { text-decoration: none; display: inline-flex; align-items: center; gap: 6px; }
@media (max-width: 768px) {
    .en-ruta-actions { flex-direction: column; align-items: stretch; }
    .en-ruta-actions .btn { width: 100%; min-height: 52px; font-size: 15px; }
}

@media (max-width: 768px) {
    .sub-tab { padding: 12px 16px; font-size: 15px; min-height: 44px; }
    .cam-form-inline { flex-direction: column; align-items: stretch; }
    .cam-form-inline input[type="text"] { max-width: none; }
    .desp-card-head { flex-direction: column; align-items: stretch; }
    #tbl-camiones th, #tbl-camiones td { padding: 10px 8px !important; font-size: 13px !important; }
}

/* ============================================================================
   Envíos — vista mobile (≤ 768px). Tabla se convierte en cards apiladas.
   Juanpi usa esta vista el 70% del tiempo desde el celular en el galpón.
   ============================================================================ */
@media (max-width: 768px) {

    /* === Toolbar y header compactos === */
    [data-panel="envios"] .panel-toolbar {
        flex-wrap: wrap;
        gap: 8px;
        padding: 8px 0;
    }
    [data-panel="envios"] .panel-title { font-size: 18px; margin: 0; }
    [data-panel="envios"] .actions {
        flex-wrap: wrap;
        gap: 6px;
        width: 100%;
    }
    #env-hoja {
        flex: 1 1 100%;
        min-width: 0;
        font-size: 15px;
        padding: 10px 12px;
        background: var(--glass);
        border: 1px solid var(--border-strong);
        color: var(--text);
        border-radius: 8px;
    }
    #env-q {
        flex: 1 1 100%;
        font-size: 15px;
        padding: 10px 12px;
        background: var(--glass);
        border: 1px solid var(--border-strong);
        color: var(--text);
        border-radius: 8px;
    }
    #env-status { width: 100%; font-size: 11px; }
    #btn-env-refresh, #btn-env-config {
        flex: 1 1 calc(50% - 3px);
        min-height: 44px;
        font-size: 14px;
    }

    /* === KPIs en chips horizontales scrollables === */
    [data-panel="envios"] .tab-strip {
        display: flex;
        overflow-x: auto;
        gap: 6px;
        scroll-snap-type: x mandatory;
        padding-bottom: 4px;
        -webkit-overflow-scrolling: touch;
    }
    [data-panel="envios"] .tab-strip-cell {
        flex: 0 0 auto;
        scroll-snap-align: start;
        min-width: 110px;
        padding: 10px 14px;
        border: 1px solid var(--border-strong);
        border-radius: 10px;
        background: var(--glass);
    }
    [data-panel="envios"] .tab-strip-cell:nth-child(odd) { border-right: 1px solid var(--border-strong); }
    [data-panel="envios"] .tab-strip-eyebrow { font-size: 10px; }
    [data-panel="envios"] .tab-strip-value { font-size: 22px; }

    /* === Filtros chip con scroll horizontal === */
    .env-filters {
        overflow-x: auto;
        flex-wrap: nowrap;
        padding-bottom: 4px;
        -webkit-overflow-scrolling: touch;
    }
    .env-filter {
        flex: 0 0 auto;
        padding: 11px 18px;
        font-size: 14px;
        min-height: 44px;  /* WCAG / Apple HIG: tap target mínimo */
    }
    .env-filter-badge {
        font-size: 12px;
        padding: 2px 9px;
        min-width: 22px;
        text-align: center;
    }
    /* Barras secundarias (chofer/zona): inline con la principal, sin
       border-top dashed, para no comer espacio vertical antes del 1er envío. */
    .env-chofer-bar, .env-zona-bar {
        border-top: none;
        margin-top: 4px;
        padding-top: 0;
        overflow-x: auto;
        flex-wrap: nowrap;
    }
    .env-chofer-chip, .env-zona-chip { font-size: 12px; min-height: 40px; padding: 8px 12px; flex: 0 0 auto; }

    /* === TABLA → CARDS ===
       Cada <tr> se vuelve una card vertical full-width.
       Cada <td> se apila con label visible (via data-label).
       <thead> se oculta porque cada celda ya tiene su label. */

    /* Anular el wrapper que tenía scroll horizontal por defecto (`.table-wrap`
       tiene `overflow-x: auto` y `.data-table` tiene `min-width: max-content`,
       lo que en mobile dejaba los valores fuera del viewport). */
    [data-panel="envios"] .table-wrap {
        overflow-x: visible;
        background: transparent;
        border: none;
        box-shadow: none;
        padding: 0;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
    }
    #tbl-envios {
        width: 100%;
        min-width: 0 !important;
        table-layout: auto;
    }
    #tbl-envios thead { display: none; }
    #tbl-envios, #tbl-envios tbody {
        display: block;
        /* Aislar el repaint al tbody — si una card se mueve, no recalcula
           el resto del documento. */
        contain: layout style;
    }
    #tbl-envios tr.env-row {
        display: flex;
        flex-direction: column;
        margin-bottom: 12px;
        padding: 14px;
        border-radius: 12px;
        border: 1px solid var(--border-strong);
        background: var(--glass);
        width: 100%;
        box-sizing: border-box;
        touch-action: pan-y;
        position: relative;
        /* Promote a layer permanente — translate3d usa GPU desde el render
           (sin promote-on-the-fly). `contain` aísla repaint. */
        will-change: transform;
        transform: translateZ(0);
        contain: layout style paint;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        /* NATIVE VIRTUALIZATION: el browser skipea el render/layout/paint de
           las cards que están FUERA del viewport. Para 346 cards en pantalla
           reduce el costo de cada frame ~30×. Soportado Chrome 85+. */
        content-visibility: auto;
        contain-intrinsic-size: 0 320px;
    }
    /* Indicadores visuales mientras se hace swipe (>30% del ancho).
       Hint a la izquierda (verde) cuando arrastrás a la derecha = siguiente estado.
       Hint a la derecha (rojo) cuando arrastrás a la izquierda = Problema. */
    #tbl-envios tr.env-row::before,
    #tbl-envios tr.env-row::after {
        content: '';
        position: absolute;
        top: 0; bottom: 0;
        width: 60px;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 28px;
        font-weight: 700;
        opacity: 0;
        transition: opacity .15s;
        pointer-events: none;
    }
    #tbl-envios tr.env-row::before {
        left: -70px;
        content: '→';
        color: #6cd6c6;
    }
    #tbl-envios tr.env-row::after {
        right: -70px;
        content: '↶';     /* arrow undo: retroceder estado */
        color: #f5b366;
    }
    /* Hint visual: en lugar de outline (que es paint del tr entero), solo
       cambiamos el color del borde existente — el browser ya lo tiene en
       su layer y este toggle es muy barato. */
    #tbl-envios tr.env-row.env-swipe-right-ready {
        border-color: #6cd6c6;
    }
    #tbl-envios tr.env-row.env-swipe-right-ready::before { opacity: 1; }
    #tbl-envios tr.env-row.env-swipe-left-ready {
        border-color: #f5b366;
    }
    #tbl-envios tr.env-row.env-swipe-left-ready::after { opacity: 1; }
    /* Tintes de estado en cards mobile + barra lateral 4px del color: el
       chofer/Juanpi identifica el estado de la card de un vistazo, sin
       leer el pill. */
    #tbl-envios tr.env-row-pendiente  { background-color: rgba(200,200,210,0.14); border-left: 4px solid rgba(200,200,210,.55); }
    #tbl-envios tr.env-row-remitado   { background-color: rgba(120,160,255,0.22); border-left: 4px solid #82a4ff; }
    #tbl-envios tr.env-row-reparto    { background-color: rgba(245,179,102,0.22); border-left: 4px solid #f5b366; }
    #tbl-envios tr.env-row-entregado  { background-color: rgba(108,214,198,0.18); border-left: 4px solid #6cd6c6; }
    #tbl-envios tr.env-row-problema   { background-color: rgba(255,80,80,0.24);  border-left: 4px solid #ff7777; }
    #tbl-envios tr.env-row-borrado    { background-color: rgba(120,120,120,0.08); border-left: 4px solid #888; }

    #tbl-envios tr.env-row td {
        display: flex;
        justify-content: space-between;
        align-items: baseline;
        gap: 12px;
        padding: 6px 0;
        border: none;
        text-align: right;
        min-width: 0;
        max-width: none !important;
        word-break: break-word;
        white-space: normal !important;  /* anula el nowrap heredado de .data-table td */
        line-height: 1.35;
        font-size: 14px;
        width: 100%;
        box-sizing: border-box;
    }
    /* Etiqueta (chica, alineada a la izquierda). */
    #tbl-envios tr.env-row td::before {
        content: attr(data-label);
        flex: 0 0 auto;
        color: var(--text-muted);
        font-size: 11px;
        font-weight: 600;
        letter-spacing: 0.04em;
        text-transform: uppercase;
        white-space: nowrap;
    }
    /* Cliente: protagonista de la card, sin label inline, full-width arriba. */
    #tbl-envios tr.env-row td.env-td-cliente {
        flex-direction: column;
        align-items: flex-start;
        text-align: left;
        padding: 4px 0 10px 0;
        border-bottom: 1px solid var(--border-strong);
        margin-bottom: 8px;
    }
    #tbl-envios tr.env-row td.env-td-cliente::before { display: none; }
    #tbl-envios tr.env-row td.env-td-cliente strong { font-size: 17px; line-height: 1.25; }

    /* Detalle: también sin label inline, full-width debajo del cliente. */
    #tbl-envios tr.env-row td.env-articulos {
        flex-direction: column;
        align-items: flex-start;
        text-align: left;
        padding: 4px 0;
        font-size: 13px;
        color: var(--text-muted);
    }
    #tbl-envios tr.env-row td.env-articulos::before {
        font-size: 10px;
        margin-bottom: 2px;
    }

    /* Estado: full-width abajo con pill grande y botón siguiente prominente. */
    #tbl-envios tr.env-row td.env-estado-cell {
        flex-direction: column;
        align-items: stretch;
        text-align: left;
        padding-top: 12px;
        margin-top: 8px;
        border-top: 1px solid var(--border-strong);
        gap: 10px;
    }
    #tbl-envios tr.env-row td.env-estado-cell::before { display: none; }
    .env-estado-cell .env-pill {
        align-self: stretch;
        text-align: center;
        font-size: 14px;
        padding: 10px 14px;
        font-weight: 700;
        letter-spacing: .04em;
        text-transform: uppercase;
    }

    /* Orden visual en mobile: lo que Juanpi necesita escanear primero
       arriba (cliente / estado / dirección / teléfono); el resto del meta
       queda al final. Funciona porque tr.env-row pasa a flex column. */
    #tbl-envios tr.env-row td.env-row-check { order: 0; }
    #tbl-envios tr.env-row td.env-td-cliente  { order: 1; }
    #tbl-envios tr.env-row td.env-estado-cell { order: 2; border-top: none; padding-top: 6px; margin-top: 0; }
    #tbl-envios tr.env-row td.env-direccion   { order: 3; }
    #tbl-envios tr.env-row td[data-label="Tel"] { order: 4; }
    #tbl-envios tr.env-row td.env-articulos   { order: 5; }
    #tbl-envios tr.env-row td.env-anotado     { order: 6; }
    #tbl-envios tr.env-row td[data-label="Chofer"],
    #tbl-envios tr.env-row td[data-label="Remito"],
    #tbl-envios tr.env-row td[data-label="Pago"],
    #tbl-envios tr.env-row td[data-label="Condición"],
    #tbl-envios tr.env-row td[data-label="Nº"],
    #tbl-envios tr.env-row td[data-label="Vendedor"],
    #tbl-envios tr.env-row td[data-label="Camión"] { order: 7; }

    /* Botón "siguiente estado" full-width grande, fácil de tapear. */
    .env-btn-next {
        width: 100%;
        min-height: 52px;
        font-size: 15px;
        font-weight: 600;
        padding: 12px;
        border-radius: 10px;
    }

    /* Links de teléfono más visibles. */
    #tbl-envios tr.env-row a[href^="tel:"] {
        color: var(--accent-blue, #6cd6c6);
        text-decoration: none;
        font-weight: 500;
    }

    /* === Drawer (modal-envio) como bottom-sheet === */
    #modal-envio .modal {
        position: fixed;
        bottom: 0; left: 0; right: 0;
        max-height: 88vh;
        width: 100%;
        max-width: none;
        margin: 0;
        border-radius: 16px 16px 0 0;
        overflow-y: auto;
        animation: env-slide-up .2s ease-out;
    }
    @keyframes env-slide-up {
        from { transform: translateY(100%); }
        to { transform: translateY(0); }
    }
    .env-detalle .env-dl {
        grid-template-columns: 1fr;
        gap: 4px;
    }
    .env-detalle .env-dl dt {
        font-size: 10px;
        text-transform: uppercase;
        letter-spacing: .04em;
        margin-top: 6px;
    }
    .env-detalle .env-dl dd { font-size: 15px; margin-bottom: 4px; }
    .env-botones { grid-template-columns: 1fr; }
    .env-btn-estado { min-height: 56px; font-size: 16px; }
}

@media (max-width: 380px) {
    /* Apretar todavía un poco para iPhones SE / similares */
    [data-panel="envios"] .tab-strip-cell { min-width: 96px; padding: 8px 10px; }
    [data-panel="envios"] .tab-strip-value { font-size: 18px; }
    #tbl-envios tr.env-row { padding: 12px; }
    #tbl-envios tr.env-row td { font-size: 13px; }
    #tbl-envios tr.env-row td.env-td-cliente strong { font-size: 16px; }
}

/* ============================================================================
   Info system — íconos "ⓘ" con popover explicativo
   ============================================================================ */
.info-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px;
    height: 14px;
    margin-left: 6px;
    border-radius: 50%;
    background: rgba(255,246,240,0.12);
    color: rgba(255,246,240,0.7);
    font-family: var(--serif, "Source Serif Pro", Georgia, serif);
    font-style: italic;
    font-size: 10px;
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
    transition: background .15s ease, color .15s ease, transform .12s ease;
    vertical-align: middle;
    user-select: none;
    flex-shrink: 0;
}
.info-icon::before { content: "i"; }
.info-icon:hover {
    background: rgba(255,56,56,0.78);
    color: #fff;
    transform: scale(1.15);
}
.info-icon:focus-visible {
    outline: none;
    box-shadow: 0 0 0 2px rgba(255,56,56,0.4);
}
.info-icon-light {
    background: rgba(255,246,240,0.18);
    color: rgba(255,246,240,0.85);
}

/* Popover */
.info-popover {
    position: absolute;
    z-index: 9999;
    max-width: 420px;
    min-width: 280px;
    padding: 18px 20px 16px;
    background: rgba(15, 19, 24, 0.97);
    backdrop-filter: blur(22px);
    -webkit-backdrop-filter: blur(22px);
    border: 1px solid rgba(255,246,240,0.16);
    border-radius: 12px;
    box-shadow: 0 24px 60px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,56,56,0.08);
    color: rgba(255,246,240,0.94);
    font-family: "Sora", -apple-system, system-ui, sans-serif;
    font-size: 13px;
    line-height: 1.45;
    animation: infopop-in .18s ease-out;
}
@keyframes infopop-in {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: translateY(0); }
}
.info-pop-title {
    margin: 0 0 8px;
    font-family: var(--serif, "Source Serif Pro", Georgia, serif);
    font-style: italic;
    font-weight: 400;
    font-size: 18px;
    letter-spacing: -0.01em;
    color: rgba(255,56,56,0.95);
    padding-right: 24px;
}
.info-pop-desc {
    margin: 0 0 12px;
    color: rgba(255,246,240,0.92);
    font-size: 13px;
}
.info-pop-body {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 8px;
    padding-top: 10px;
    border-top: 1px solid rgba(255,246,240,0.1);
}
.info-pop-row {
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: 12px;
}
.info-pop-key {
    color: rgba(255,246,240,0.55);
    font-weight: 600;
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.info-pop-val {
    color: rgba(255,246,240,0.88);
    font-size: 12.5px;
}
.info-pop-val code, .info-pop-row code {
    font-family: var(--font-mono, "JetBrains Mono", monospace);
    background: rgba(255,246,240,0.06);
    padding: 1px 5px;
    border-radius: 4px;
    font-size: 11px;
}
.info-pop-row-plain {
    color: rgba(255,246,240,0.85);
}
.info-pop-close {
    position: absolute;
    top: 8px;
    right: 8px;
    background: transparent;
    border: 0;
    color: rgba(255,246,240,0.5);
    font-size: 16px;
    width: 24px;
    height: 24px;
    line-height: 1;
    cursor: pointer;
    border-radius: 4px;
    transition: background .15s ease, color .15s ease;
}
.info-pop-close:hover {
    background: rgba(255,246,240,0.08);
    color: rgba(255,246,240,0.9);
}

/* Info icon en /cierre — fondo dark también, usa color claro */
.cierre-page .info-icon {
    background: rgba(255,246,240,0.10);
    color: rgba(255,246,240,0.82);
}
.cierre-page .info-icon:hover {
    background: rgba(255,56,56,0.92);
    color: #fff;
}

/* Info flotante para paneles sin titulo visible (Pre-pedidos, Documentos) */
.panel-info-floating {
    position: absolute;
    top: 8px;
    right: 12px;
    z-index: 5;
}
.tab-panel { position: relative; }
.info-icon-section {
    width: 18px;
    height: 18px;
    font-size: 12px;
    background: rgba(255,56,56,0.12);
    color: rgba(255,140,140,0.95);
}
.info-icon-section:hover {
    background: rgba(255,56,56,0.92);
    color: #fff;
}

/* === Carga nativa de pedidos (formulario del vendedor) ===================== */
.env-form { display: flex; flex-direction: column; gap: 16px; }
.env-form .form-field { display: flex; flex-direction: column; gap: 6px; }
/* Jerarquía: label claro y con peso (no gris medio sobre fondo oscuro). */
.env-form .form-field,
.env-form .form-field > span {
  font-size: 13px; font-weight: 600; letter-spacing: .02em; color: #cbd5e1;
}
.env-form .form-field .muted { font-weight: 400; }
/* Inputs legibles y táctiles. 16px evita el zoom automático de iOS al enfocar. */
.env-form input,
.env-form textarea {
  min-height: 48px; padding: 12px 14px; font-size: 16px;
  color: var(--text); background: var(--surface-2);
  border: 1.5px solid var(--border-strong); border-radius: var(--radius-md);
  width: 100%; box-sizing: border-box;
  transition: border-color .12s, box-shadow .12s;
}
.env-form textarea { min-height: 96px; resize: vertical; line-height: 1.4; }
.env-form input::placeholder,
.env-form textarea::placeholder { color: var(--text-soft); }
/* Foco con el rojo de marca (Logistics Core / Stitch). */
.env-form input:focus,
.env-form textarea:focus {
  outline: none; border-color: var(--abba);
  box-shadow: 0 0 0 3px var(--abba-glow);
}
.env-form-envio-only { display: flex; flex-direction: column; gap: 16px; }
/* Retiro de contenedor oculta este grupo: el display:flex de arriba le gana al
   atributo [hidden] (display:none de UA), así que hay que forzarlo. */
.env-form-envio-only[hidden] { display: none; }

/* Switch de tipo — botones grandes, seleccionado SÓLIDO (rojo de marca + peso + sombra). */
.env-tipo-switch { display: flex; gap: 10px; }
.env-tipo-btn {
  flex: 1; min-height: 52px; padding: 12px; cursor: pointer; font-size: 16px;
  color: var(--text-muted); background: var(--surface-2);
  border: 1.5px solid var(--border-strong); border-radius: var(--radius-lg);
  transition: all .12s ease;
}
.env-tipo-btn.env-tipo-active {
  background: var(--abba); color: #fff; border-color: var(--abba); font-weight: 700;
  box-shadow: 0 2px 10px var(--abba-glow);
}

/* Condición de pago — SEGMENTED CONTROL: opción única y excluyente, activo sólido. */
.env-cond-chips {
  display: flex; border: 1.5px solid var(--border-strong); border-radius: var(--radius-md);
  overflow: hidden; background: var(--surface-2);
}
.env-cond-chip {
  flex: 1; min-height: 44px; padding: 10px 8px; cursor: pointer;
  font-size: 15px; color: var(--text-muted); background: transparent; border: none;
  border-right: 1.5px solid var(--border-strong); transition: all .12s ease;
  white-space: nowrap;
}
.env-cond-chip:last-child { border-right: none; }
.env-cond-chip.env-cond-chip-active { background: var(--abba); color: #fff; font-weight: 700; }
.env-acciones-editar { margin: 8px 0; }

/* Aterrizaje visible: flash de la fila recién guardada/editada. */
@keyframes envRowFlash {
  0%   { background: var(--abba-glow); }
  100% { background: transparent; }
}
.env-row-flash > td { animation: envRowFlash 1.6s ease-out; }

/* Mobile: modal de carga a pantalla completa + acciones fijas abajo. */
@media (max-width: 640px) {
  #modal-env-form .modal {
    width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh;
    border-radius: 0; display: flex; flex-direction: column;
  }
  #modal-env-form .modal-body { flex: 1; overflow-y: auto; }
  #modal-env-form .modal-actions {
    position: sticky; bottom: 0; background: #0f172a;
    padding: 12px 0 4px; margin: 0; border-top: 1px solid #334155;
    display: flex; gap: 10px;
  }
  #modal-env-form .modal-actions .btn { flex: 1; min-height: 48px; }
}

/* Desktop: grid de 2 columnas para aprovechar el ancho y evitarle scroll al
   vendedor. Mobile (≤640px) queda en una sola columna a pantalla completa. */
@media (min-width: 768px) {
  #modal-env-form .modal { min-width: 660px; max-width: 760px; }
  #modal-env-form .env-form {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 20px;
    align-items: start;
  }
  /* El grupo envío-only desaparece como caja: sus campos (Artículos/Condición/
     Remito) pasan a ser celdas del MISMO grid. */
  #modal-env-form .env-form-envio-only { display: contents; }
  /* …salvo cuando es retiro: ahí se oculta de verdad (gana al display:contents
     por especificidad porque el selector lleva el #id). */
  #modal-env-form .env-form-envio-only[hidden] { display: none; }
  /* Filas a todo el ancho; el resto fluye en 2 columnas en orden de DOM:
     Cliente|Dirección, Teléfono|Contacto, Condición|Remito. */
  #modal-env-form .env-tipo-switch,
  #modal-env-form .env-col-full,
  #modal-env-form .modal-actions { grid-column: 1 / -1; }
}
