/* ==========================================================
   COMPRAS CALZADAS · Sistema de diseño
   Identidad de www.byp.cl: carbón y blanco, Neue Haas Grotesk,
   sin color de acento. Los únicos colores son los de estado.
   Para cambiar la paleta, edita solo las variables de :root.
   ========================================================== */

/* ── Fuentes (licenciadas por ByP para byp.cl; ver docs/despliegue-TI.md) ── */
@font-face{font-family:"Neue Haas Grotesk Display Pro";src:url("/assets/fonts/NHaasGroteskDSPro-lt.woff") format("woff");font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:"Neue Haas Grotesk Display Pro";src:url("/assets/fonts/NHaasGroteskDSPro-rg.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Neue Haas Grotesk Display Pro";src:url("/assets/fonts/NHaasGroteskDSPro-md.woff") format("woff");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Neue Haas Grotesk Display Pro";src:url("/assets/fonts/NHaasGroteskDSPro-bd.woff") format("woff");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Gotham";src:url("/assets/fonts/Gotham-Book.otf") format("opentype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Gotham";src:url("/assets/fonts/Gotham-Medium.otf") format("opentype");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Gotham";src:url("/assets/fonts/Gotham-Bold.otf") format("opentype");font-weight:700;font-style:normal;font-display:swap}

:root{
  /* Marca */
  --byp-carbon:#272727;
  --byp-black:#000;
  --byp-white:#fff;
  --byp-gray-900:#3f3f40;
  --byp-gray-800:#494949;
  --byp-gray-700:#646464;   /* texto secundario */
  --byp-gray-600:#727273;
  --byp-gray-500:#898989;
  --byp-gray-400:#979899;
  --byp-gray-300:#cacbcc;
  --byp-gray-200:#dadada;   /* bordes */
  --byp-gray-150:#e3e4e6;
  --byp-gray-100:#f2f4f5;
  --byp-gray-50:#f6f6f6;    /* fondos suaves */

  /* Estados (únicos colores) */
  --ok:#8bc34a;      --ok-bg:#eafce3;   --ok-text:#3a6912;
  --warn:#ffb100;    --warn-bg:#fff6e0; --warn-text:#7a5200;
  --danger:#ff4c4c;  --danger-strong:#dd1659; --danger-bg:#ffe6e6; --danger-text:#b0103f;
  --info:#2a89ff;    --info-bg:#eaf3ff; --info-text:#0b5cc2;

  /* Semánticos */
  --bg:#f6f6f6;
  --surface:#fff;
  --surface-muted:#f6f6f6;
  --text:#272727;
  --text-2:#646464;
  --text-3:#727273;
  --border:#dadada;
  --border-soft:#e3e4e6;
  --focus:0 0 0 2px #fff,0 0 0 4px #272727;
  --focus-dark:0 0 0 2px #272727,0 0 0 4px #fff;

  /* Tipografía */
  --font:"Neue Haas Grotesk Display Pro","Helvetica Neue",Helvetica,Arial,sans-serif;
  --font-num:"Gotham","Helvetica Neue",Helvetica,Arial,sans-serif;
  --fs-2xs:12px; --fs-xs:13px; --fs-sm:14px; --fs-base:15px; --fs-md:16px; --fs-lg:18px; --fs-xl:22px; --fs-2xl:28px; --fs-3xl:34px;

  /* Espaciado (escala de 4px) */
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:20px; --s-6:24px; --s-8:32px; --s-10:40px; --s-12:48px;

  /* Radios, sombras, movimiento */
  --r-sm:4px; --r-md:6px; --r-lg:8px; --r-pill:999px;
  --shadow-1:0 1px 2px rgba(0,0,0,.05);
  --shadow-2:0 4px 14px rgba(0,0,0,.08);
  --shadow-3:0 12px 32px rgba(0,0,0,.14);
  --shadow-modal:0 24px 64px rgba(0,0,0,.28),0 4px 14px rgba(0,0,0,.12);
  --ease:cubic-bezier(.2,.7,.3,1);
  --t-fast:150ms; --t:200ms;

  /* Layout */
  --topbar-h:68px;
  --nav-h:48px;
  --page-max:1480px;
  --z-nav:90; --z-top:100; --z-drop:120; --z-overlay:200; --z-modal:300; --z-toast:1000;
}

/* ── Reset ── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{font-family:var(--font);font-size:var(--fs-base);line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400}
img,svg{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0}
a{color:var(--info-text);text-decoration:none}
a:hover{text-decoration:underline}
strong,b{font-weight:500}
table{border-collapse:collapse}
:focus{outline:none}
:focus-visible{box-shadow:var(--focus);border-radius:var(--r-sm)}
::selection{background:var(--byp-carbon);color:#fff}
.ico{width:18px;height:18px;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.ico-sm{width:15px;height:15px}
.ico-lg{width:22px;height:22px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;left:16px;top:-60px;z-index:2000;background:#fff;color:var(--text);padding:10px 16px;border-radius:var(--r-md);box-shadow:var(--shadow-2);font-weight:500;transition:top var(--t-fast)}
.skip-link:focus{top:12px}

/* ── Botones ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 18px;border:1px solid transparent;border-radius:var(--r-md);font-size:var(--fs-xs);font-weight:500;letter-spacing:.04em;text-transform:uppercase;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;user-select:none;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
.btn:hover{text-decoration:none}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.45;cursor:not-allowed}
.btn-primary,.btn-success{background:var(--byp-carbon);color:#fff;border-color:var(--byp-carbon)}
.btn-primary:hover:not(:disabled),.btn-success:hover:not(:disabled){background:var(--byp-black);border-color:var(--byp-black)}
.btn-outline,.btn-secondary{background:#fff;color:var(--byp-carbon);border-color:var(--byp-carbon)}
.btn-outline:hover:not(:disabled),.btn-secondary:hover:not(:disabled){background:var(--byp-gray-100)}
.btn-ghost{background:transparent;color:var(--byp-carbon);border-color:transparent;text-transform:none;letter-spacing:0;font-size:var(--fs-xs)}
.btn-ghost:hover:not(:disabled){background:var(--byp-gray-100)}
.btn-danger{background:#fff;color:var(--danger-text);border-color:var(--danger-strong)}
.btn-danger:hover:not(:disabled){background:var(--danger-bg)}
.btn-sm{height:36px;padding:0 14px;font-size:var(--fs-xs)}
.btn-xs{height:30px;padding:0 11px;font-size:var(--fs-2xs);gap:6px}
.btn-block{width:100%;height:46px;font-size:var(--fs-xs)}
.btn-icon{width:36px;height:36px;padding:0;border:1px solid var(--border);background:#fff;color:var(--text-2);border-radius:var(--r-md)}
.btn-icon:hover{color:var(--text);border-color:var(--byp-gray-400)}
.btn.is-loading{pointer-events:none}
.btn.is-loading .ico{display:none}
.btn.is-loading::before{content:"";width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .7s linear infinite}
/* Botones sobre la barra carbón */
.btn-on-dark{background:transparent;color:#fff;border-color:rgba(255,255,255,.28)}
.btn-on-dark:hover:not(:disabled){background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.6)}
.btn-on-dark:focus-visible,.topbar :focus-visible{box-shadow:var(--focus-dark)}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── Formularios ── */
.form-group{margin-bottom:var(--s-4)}
.form-group label,.field-lbl{display:block;font-size:var(--fs-xs);font-weight:500;color:var(--text-2);margin-bottom:6px;letter-spacing:.01em}
.form-control,
.field-edit input:not([type=checkbox]):not([type=radio]),.field-edit select,.field-edit textarea,
.it-input,.data-table input[type=text],.data-table select,.input{
  width:100%;height:40px;padding:0 12px;border:1px solid var(--border);border-radius:var(--r-md);background-color:#fff;color:var(--text);font-size:var(--fs-base);transition:border-color var(--t-fast),box-shadow var(--t-fast)}
.field-edit textarea,textarea.form-control{height:auto;min-height:72px;padding:10px 12px;resize:vertical;line-height:1.45}
.form-control::placeholder,.field-edit input::placeholder,.field-edit textarea::placeholder,.it-input::placeholder,.data-table input::placeholder{color:var(--byp-gray-400)}
.form-control:hover,.field-edit input:hover,.field-edit select:hover,.field-edit textarea:hover,.it-input:hover,.data-table input[type=text]:hover,.data-table select:hover{border-color:var(--byp-gray-400)}
.form-control:focus,.field-edit input:focus,.field-edit select:focus,.field-edit textarea:focus,.it-input:focus,.data-table input[type=text]:focus,.data-table select:focus,.filter-select:focus{outline:none;border-color:var(--byp-carbon);box-shadow:0 0 0 3px rgba(39,39,39,.12)}
.field-edit input[readonly],.input-readonly{background:var(--byp-gray-100)!important;color:var(--text-2)!important;cursor:not-allowed;border-color:var(--border-soft)!important}
/* Select con flecha propia */
select,.filter-select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23272727' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:14px;padding-right:32px!important;cursor:pointer}
select::-ms-expand{display:none}
/* Checkbox y radio */
input[type=checkbox],input[type=radio]{appearance:none;-webkit-appearance:none;width:18px;height:18px;border:1.5px solid var(--byp-gray-400);background:#fff;border-radius:var(--r-sm);display:inline-grid;place-content:center;cursor:pointer;flex-shrink:0;vertical-align:middle;transition:background-color var(--t-fast),border-color var(--t-fast)}
input[type=radio]{border-radius:50%}
input[type=checkbox]::after{content:"";width:10px;height:6px;border:2px solid #fff;border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px) scale(0);transition:transform var(--t-fast) var(--ease)}
input[type=radio]::after{content:"";width:8px;height:8px;border-radius:50%;background:#fff;transform:scale(0);transition:transform var(--t-fast)}
input[type=checkbox]:checked,input[type=radio]:checked{background:var(--byp-carbon);border-color:var(--byp-carbon)}
input[type=checkbox]:checked::after{transform:rotate(-45deg) translate(1px,-1px) scale(1)}
input[type=radio]:checked::after{transform:scale(1)}
input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{box-shadow:var(--focus)}
input[type=checkbox]:disabled{opacity:.45;cursor:not-allowed}
.req{color:var(--danger-text);font-weight:500}
input[list]{cursor:text}
input[type=number]{font-variant-numeric:tabular-nums}
.field-hint{font-size:var(--fs-xs);color:var(--text-2);margin-top:4px}

/* ── Pantalla de carga inicial ── */
.boot{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;background:var(--byp-carbon)}
.boot img{width:auto;height:120px}
.boot-spinner{width:22px;height:22px;border-radius:50%;border:2px solid rgba(255,255,255,.25);border-top-color:#fff;animation:spin .8s linear infinite}

/* ── LOGIN ── */
#login-page{min-height:100vh;min-height:100dvh;background:var(--byp-carbon);color:#fff}
.login-wrap{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:40px 16px;background:radial-gradient(120% 80% at 50% 0%,#333 0%,var(--byp-carbon) 55%,#1c1c1c 100%)}
.login-col{width:100%;max-width:400px;display:flex;flex-direction:column;align-items:center;animation:rise .45s var(--ease) both}
.login-logo{height:148px;width:auto;margin-bottom:28px}
.login-app{font-size:var(--fs-sm);letter-spacing:.24em;text-transform:uppercase;color:rgba(255,255,255,.72);margin-bottom:28px;font-weight:500}
.login-card{width:100%;background:#fff;color:var(--text);border-radius:var(--r-lg);padding:32px 32px 28px;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.login-title{font-size:var(--fs-xl);font-weight:500;letter-spacing:-.01em;margin-bottom:4px}
.login-subtitle{font-size:var(--fs-sm);color:var(--text-2);margin-bottom:24px}
.login-err{display:none;align-items:flex-start;gap:8px;background:var(--danger-bg);color:var(--danger-text);border-radius:var(--r-md);padding:10px 12px;font-size:var(--fs-sm);margin-bottom:16px;line-height:1.4}
.login-err[style*="block"]{display:flex!important}
.pass-field{position:relative}
.pass-field .form-control{padding-right:44px}
.pass-toggle{position:absolute;right:4px;top:4px;width:32px;height:32px;display:grid;place-items:center;border-radius:var(--r-sm);color:var(--text-2)}
.pass-toggle:hover{color:var(--text);background:var(--byp-gray-100)}
.login-foot{margin-top:24px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.5);text-align:center}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ── SHELL: barra superior carbón ── */
#app-page{min-height:100vh;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:var(--z-top);background:var(--byp-carbon);color:#fff}
.topbar-inner{max-width:var(--page-max);margin:0 auto;height:var(--topbar-h);padding:0 24px;display:grid;grid-template-columns:auto minmax(200px,520px) auto;align-items:center;justify-content:space-between;gap:24px}
.topbar-left{display:flex;align-items:center;gap:8px;min-width:0}
.brand{display:flex;align-items:center;gap:14px;color:#fff;text-decoration:none;min-width:0}
.brand:hover{text-decoration:none}
.brand img{height:50px;width:auto;flex-shrink:0}
.brand-app{font-size:var(--fs-sm);font-weight:500;letter-spacing:.18em;text-transform:uppercase;white-space:nowrap;padding-left:14px;border-left:1px solid rgba(255,255,255,.22);line-height:1.2}
.nav-toggle{display:none;width:40px;height:40px;place-items:center;color:#fff;border-radius:var(--r-md)}
.nav-toggle:hover{background:rgba(255,255,255,.08)}
.search-box{position:relative;display:flex;align-items:center;width:100%}
.search-box .ico{position:absolute;left:14px;color:var(--byp-gray-600);pointer-events:none}
.search-box input{width:100%;height:40px;border:0;border-radius:var(--r-md);background:#fff;padding:0 14px 0 42px;font-size:var(--fs-base);color:var(--text)}
.search-box input::placeholder{color:var(--byp-gray-500)}
.search-box input:focus{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.35)}
.search-box input::-webkit-search-cancel-button{cursor:pointer}
.topbar-actions{display:flex;align-items:center;gap:10px;justify-self:end}
#extra-header-btns:empty{display:none}

/* Menú de usuario */
.user-menu{position:relative}
.user-btn{display:flex;align-items:center;gap:10px;height:44px;padding:0 8px 0 4px;border-radius:var(--r-md);color:#fff;text-align:left}
.user-btn:hover,.user-btn[aria-expanded="true"]{background:rgba(255,255,255,.08)}
.user-avatar{width:34px;height:34px;border-radius:50%;background:#fff;color:var(--byp-carbon);display:grid;place-items:center;font-size:12px;font-weight:700;letter-spacing:.04em;flex-shrink:0}
.user-meta{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.user-name{font-size:var(--fs-sm);font-weight:500;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis}
.user-role-label{font-size:12px;color:rgba(255,255,255,.65);letter-spacing:.04em}
.user-btn .chev{color:rgba(255,255,255,.7)}
.user-panel{right:0;left:auto;min-width:260px}
.user-panel-head{padding:14px 16px;border-bottom:1px solid var(--border-soft);display:flex;gap:12px;align-items:center}
.user-panel-head .user-avatar{background:var(--byp-carbon);color:#fff}
.user-panel-name{font-weight:500;font-size:var(--fs-base)}
.user-panel-mail{font-size:var(--fs-xs);color:var(--text-2);word-break:break-all}

/* ── Barra secundaria blanca con el menú por rol ── */
.mainnav{position:sticky;top:var(--topbar-h);z-index:var(--z-nav);background:#fff;border-bottom:1px solid var(--border)}
.mainnav-inner{max-width:var(--page-max);margin:0 auto;padding:0 24px;height:var(--nav-h);display:flex;align-items:stretch;justify-content:center}
.nav-list{display:flex;align-items:stretch;list-style:none}
.nav-li{position:relative;display:flex;align-items:stretch}
.nav-li+.nav-li::before{content:"";position:absolute;left:0;top:50%;height:16px;margin-top:-8px;width:1px;background:var(--border)}
.nav-link{position:relative;display:flex;align-items:center;gap:8px;padding:0 18px;font-size:var(--fs-sm);font-weight:500;color:var(--text-2);letter-spacing:.02em;white-space:nowrap;transition:color var(--t-fast)}
.nav-link::after{content:"";position:absolute;left:20px;right:20px;bottom:-1px;height:2px;background:var(--byp-carbon);transform:scaleX(0);transition:transform var(--t) var(--ease)}
.nav-link:hover{color:var(--text)}
.nav-link.active,.nav-link[aria-expanded="true"]{color:var(--text)}
.nav-link.active::after{transform:scaleX(1)}
.nav-link .chev{transition:transform var(--t) var(--ease);color:var(--text-3)}
.nav-link[aria-expanded="true"] .chev{transform:rotate(180deg)}
.nav-link:focus-visible{box-shadow:inset 0 0 0 2px var(--byp-carbon);border-radius:var(--r-sm)}
.nav-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-pill);background:var(--danger-strong);color:#fff;font-size:12px;font-weight:500;letter-spacing:0;font-variant-numeric:tabular-nums;line-height:1}
.nav-badge.neutral{background:var(--byp-carbon)}

/* Panel desplegable (menú y usuario) */
.drop{position:absolute;top:calc(100% + 6px);left:50%;min-width:280px;background:#fff;border:1px solid var(--border-soft);border-radius:var(--r-lg);box-shadow:var(--shadow-3);padding:6px;z-index:var(--z-drop);opacity:0;visibility:hidden;transform:translate(-50%,-4px);transition:opacity var(--t-fast) var(--ease),transform var(--t-fast) var(--ease),visibility 0s linear var(--t-fast)}
.drop.user-panel{left:auto;right:0;transform:translateY(-4px);padding:0}
.drop.open{opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:0s}
.drop.user-panel.open{transform:none}
.drop-item{display:flex;align-items:flex-start;gap:12px;width:100%;padding:10px 12px;border-radius:var(--r-md);color:var(--text);text-align:left;text-decoration:none;transition:background-color var(--t-fast)}
.drop-item:hover,.drop-item:focus-visible{background:var(--byp-gray-100);text-decoration:none;box-shadow:none}
.drop-item:focus-visible{outline:2px solid var(--byp-carbon);outline-offset:-2px}
.drop-item.active{background:var(--byp-gray-100)}
.drop-item.active .drop-ico{background:var(--byp-carbon);color:#fff;border-color:var(--byp-carbon)}
.drop-ico{width:34px;height:34px;border-radius:var(--r-md);border:1px solid var(--border);display:grid;place-items:center;flex-shrink:0;color:var(--text);background:#fff}
.drop-txt{display:flex;flex-direction:column;min-width:0;flex:1}
.drop-label{font-size:var(--fs-sm);font-weight:500;display:flex;align-items:center;gap:8px}
.drop-desc{font-size:var(--fs-xs);color:var(--text-2);line-height:1.35;margin-top:2px}
.drop-sep{height:1px;background:var(--border-soft);margin:6px 0}
.drop-item.danger{color:var(--danger-text)}
.user-panel .drop-list{padding:6px}

/* ── Página ── */
.page-content{flex:1;width:100%;max-width:var(--page-max);margin:0 auto;padding:28px 24px 56px}
.page-head{display:flex;flex-direction:column;gap:4px;margin-bottom:24px}
.page-crumb{font-size:var(--fs-xs);color:var(--text-2);letter-spacing:.04em}
.page-title{font-size:var(--fs-2xl);font-weight:500;letter-spacing:-.015em;line-height:1.15}
#main-view{animation:fadein var(--t) var(--ease)}
@keyframes fadein{from{opacity:0}to{opacity:1}}

/* ── KPIs ── */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:32px}
.kpi-card{position:relative;background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 20px 16px;display:flex;flex-direction:column;gap:2px;text-align:left;transition:border-color var(--t-fast),box-shadow var(--t-fast)}
.kpi-clickable{cursor:pointer}
.kpi-clickable:hover{border-color:var(--byp-carbon);box-shadow:var(--shadow-2)}
.kpi-clickable:focus-visible{box-shadow:var(--focus)}
.kpi-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.kpi-label{font-size:var(--fs-sm);font-weight:500;color:var(--text-2)}
.kpi-icon{color:var(--byp-gray-500)}
.kpi-value{font-family:var(--font-num);font-size:var(--fs-3xl);font-weight:500;line-height:1;letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums}
.kpi-sub{font-size:var(--fs-xs);color:var(--text-2);margin-top:8px;display:flex;align-items:center;gap:6px}
.kpi-sub.danger{color:var(--danger-text)}
.kpi-sub.success{color:var(--ok-text)}
.kpi-card.is-danger{border-color:#f3b7c6}
.kpi-card.is-danger::before{content:"";position:absolute;left:-1px;right:-1px;top:-1px;height:3px;border-radius:var(--r-lg) var(--r-lg) 0 0;background:var(--danger-strong)}
.kpi-card.is-danger .kpi-value{color:var(--danger-text)}
.kpi-card .kpi-arrow{position:absolute;right:16px;bottom:16px;color:var(--byp-gray-300);transition:color var(--t-fast),transform var(--t-fast)}
.kpi-clickable:hover .kpi-arrow{color:var(--byp-carbon);transform:translateX(2px)}

/* ── Secciones ── */
.section-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px;flex-wrap:wrap}
.section-title{font-size:var(--fs-lg);font-weight:500;letter-spacing:-.01em;color:var(--text);display:flex;align-items:center;gap:8px}
.section-title.danger{color:var(--danger-text)}
.section-subtitle{font-size:var(--fs-sm);color:var(--text-2);margin-top:2px}

/* Banner de alertas */
.alert-banner{background:var(--warn-bg);border:1px solid #f5d98c;border-radius:var(--r-lg);padding:14px 18px;margin-bottom:24px}
.alert-banner-title{display:flex;align-items:center;gap:8px;font-weight:500;color:var(--warn-text);margin-bottom:8px}
.alert-list{display:flex;flex-direction:column;gap:4px;list-style:none}
.alert-item{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:#5c3e00}
.alert-item button{color:#5c3e00;text-decoration:underline;text-underline-offset:2px;text-align:left}
.alert-item button:hover{color:#000}
.alert-tag{font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;padding:2px 8px;border-radius:var(--r-pill);background:#fff;border:1px solid #f0cf7a;color:var(--warn-text);flex-shrink:0}
.alert-more{font-size:var(--fs-xs);color:var(--warn-text);margin-top:4px}

/* ── Barra de filtros ── */
.filter-bar{background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 16px;display:flex;flex-direction:column;gap:12px;margin-bottom:16px}
.filter-bar-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.filter-label{font-size:var(--fs-xs);color:var(--text-2);font-weight:500;white-space:nowrap}
.filter-chips,.segmented{display:inline-flex;gap:2px;background:var(--byp-gray-100);padding:3px;border-radius:var(--r-md);flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 14px;border-radius:var(--r-sm);font-size:var(--fs-sm);font-weight:500;color:var(--text-2);cursor:pointer;user-select:none;transition:background-color var(--t-fast),color var(--t-fast),box-shadow var(--t-fast);border:0;background:transparent}
.chip:hover{color:var(--text)}
.chip.active{background:#fff;color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.chip .chip-dot{width:7px;height:7px;border-radius:50%;background:var(--danger-strong)}
.chip-count{font-size:var(--fs-xs);color:var(--text-3);font-variant-numeric:tabular-nums}
.filter-select{height:34px;padding:0 12px;border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--text);background-color:#fff;max-width:190px;transition:border-color var(--t-fast)}
.filter-select:hover{border-color:var(--byp-gray-400)}
.filter-select-active{border-color:var(--byp-carbon)!important;background-color:var(--byp-gray-100)!important;font-weight:500}
.filter-results{font-size:var(--fs-sm);color:var(--text-2);margin-left:auto;white-space:nowrap;font-variant-numeric:tabular-nums}
.btn-clear-filters{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:var(--r-md);font-size:var(--fs-sm);font-weight:500;color:var(--text);cursor:pointer;transition:background-color var(--t-fast)}
.btn-clear-filters:hover{background:var(--byp-gray-100)}
.active-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.filter-pill{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 6px 0 12px;border-radius:var(--r-pill);background:var(--byp-carbon);color:#fff;font-size:var(--fs-xs);font-weight:500;max-width:280px}
.filter-pill span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.filter-pill button{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;color:#fff;flex-shrink:0}
.filter-pill button:hover{background:rgba(255,255,255,.18)}

/* ── Tablas ── */
.table-container{background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}
.table-toolbar{padding:12px 16px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.table-count{font-size:var(--fs-sm);color:var(--text-2)}
.table-count strong{font-family:var(--font-num);color:var(--text);font-size:var(--fs-md);font-weight:500}
.table-wrapper{overflow:auto;-webkit-overflow-scrolling:touch}
.table-container.is-main .table-wrapper{max-height:max(380px,calc(100vh - 360px))}
.table-wrapper table,.rep-table{width:100%}
.table-wrapper table{min-width:720px}
thead th{position:sticky;top:0;z-index:2;background:var(--byp-gray-50);padding:10px 12px;text-align:left;font-size:var(--fs-xs);font-weight:500;color:var(--text-2);letter-spacing:.01em;white-space:nowrap;border-bottom:1px solid var(--border);user-select:none}
tbody tr{border-bottom:1px solid var(--border-soft);transition:background-color var(--t-fast)}
tbody tr[onclick]{cursor:pointer}
tbody tr:hover{background:#fafafa}
tbody tr[onclick]:hover{background:var(--byp-gray-100)}
tbody td{padding:10px 12px;font-size:var(--fs-sm);color:var(--text);white-space:nowrap;vertical-align:middle;font-variant-numeric:tabular-nums}
tbody tr:last-child{border-bottom:0}
td.muted,.td-muted{color:var(--text-2)}
td.num,th.num{text-align:right}
td.ctr,th.ctr{text-align:center}
.td-strong{font-weight:500}
.td-sub{display:block;font-size:var(--fs-xs);color:var(--text-2);font-weight:400}
.td-wrap{white-space:normal;min-width:160px;max-width:260px}
.table-footer{padding:10px 16px;border-top:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:var(--fs-xs);color:var(--text-2);background:var(--byp-gray-50);flex-wrap:wrap}
.col-clip{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.col-clip-sm{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
tr.row-atrasada{background:#fff8f9}
tr.row-atrasada td:first-child{box-shadow:inset 3px 0 0 var(--danger-strong)}
tr.row-atrasada:hover{background:#ffeef1!important}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}
.code-chip{display:inline-block;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;background:var(--byp-gray-100);border:1px solid var(--border-soft);padding:2px 6px;border-radius:var(--r-sm)}
.more-tag{color:var(--text-2);font-size:var(--fs-xs);margin-left:2px}

/* ── Badges y pills de estado ── */
.ticket-badge{display:inline-flex;align-items:center;height:26px;padding:0 8px;border-radius:var(--r-sm);background:var(--byp-gray-100);border:1px solid var(--border-soft);color:var(--text);font-family:var(--font-num);font-size:13px;font-weight:500;letter-spacing:.01em;font-variant-numeric:tabular-nums}
.status-badge{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 11px;border-radius:var(--r-pill);font-size:13px;font-weight:500;letter-spacing:.02em;white-space:nowrap;border:1px solid transparent;line-height:1}
.status-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}
.status-badge.s-llegada{background:var(--byp-carbon);color:#fff}
.status-badge.s-a-tiempo{background:var(--ok-bg);color:var(--ok-text);border-color:#cdeebf}
.status-badge.s-a-tiempo::before{background:var(--ok)}
.status-badge.s-atrasada{background:var(--danger-bg);color:var(--danger-text);border-color:#f6bfcc}
.status-badge.s-atrasada::before{background:var(--danger-strong)}
.status-badge.s-en-produccion{background:var(--warn-bg);color:var(--warn-text);border-color:#f7dfa1}
.status-badge.s-en-produccion::before{background:var(--warn)}
.status-badge.s-pi-enviada{background:var(--byp-gray-150);color:var(--text)}
.status-badge.s-solicitud-pm{background:#fff;color:var(--text);border-color:var(--byp-gray-300)}
.status-badge.s-completado{background:var(--ok-bg);color:var(--ok-text);border-color:#cdeebf}
.status-badge.s-completado::before{content:"";width:8px;height:5px;border-radius:0;background:transparent;border:1.5px solid var(--ok-text);border-top:0;border-right:0;transform:rotate(-45deg) translateY(-1px)}
.status-badge.s-pendiente{background:var(--byp-gray-100);color:var(--text-2)}
.status-badge.s-pendiente::before{background:var(--byp-gray-400)}
.days-badge{display:inline-flex;align-items:center;font-family:var(--font-num);font-size:var(--fs-sm);font-weight:500;white-space:nowrap;font-variant-numeric:tabular-nums}
.days-pos{color:var(--ok-text)}
.days-neg{color:var(--danger-text)}
.days-neu{color:var(--text-2)}
.role-badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--r-pill);font-size:13px;font-weight:500;letter-spacing:.02em;white-space:nowrap;background:var(--byp-gray-100);color:var(--text);border:1px solid var(--border-soft)}
.r-admin{background:var(--byp-carbon);color:#fff;border-color:var(--byp-carbon)}
.r-pm{background:#fff;border-color:var(--byp-gray-300)}
.r-comex{background:var(--byp-gray-150)}
.topbar .role-badge{background:transparent;border:0;padding:0;height:auto;color:rgba(255,255,255,.65);font-size:12px}
.tag{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--r-pill);font-size:13px;font-weight:500;white-space:nowrap;background:var(--byp-gray-100);color:var(--text);border:1px solid var(--border-soft)}
.tag-ok{background:var(--ok-bg);color:var(--ok-text);border-color:#cdeebf}
.tag-warn{background:var(--warn-bg);color:var(--warn-text);border-color:#f7dfa1}
.tag-danger{background:var(--danger-bg);color:var(--danger-text);border-color:#f6bfcc}
.tag-dark{background:var(--byp-carbon);color:#fff;border-color:var(--byp-carbon)}
.tag-info{background:var(--info-bg);color:var(--info-text);border-color:#c9defa}

/* Etapa del proceso (1 a 10) con mini barra de avance */
.stage-badge{display:inline-flex;align-items:center;gap:8px;height:26px;padding:0 11px 0 9px;border-radius:var(--r-pill);font-size:13px;font-weight:500;white-space:nowrap;background:#fff;border:1px solid var(--border);color:var(--text)}
.stage-step{font-family:var(--font-num);font-size:var(--fs-xs);color:var(--text-2);font-variant-numeric:tabular-nums}
.stage-badge::before{content:"";width:28px;height:4px;border-radius:2px;background:linear-gradient(90deg,var(--byp-carbon) var(--p,10%),var(--byp-gray-150) var(--p,10%));flex-shrink:0}
.stage-1{--p:10%}.stage-2{--p:20%}.stage-3{--p:30%}.stage-4{--p:40%}.stage-5{--p:50%}.stage-6{--p:60%}.stage-7{--p:70%}.stage-8{--p:80%}.stage-9{--p:90%}
.stage-10{--p:100%;background:var(--ok-bg);border-color:#cdeebf;color:var(--ok-text)}
.stage-10::before{background:var(--ok-text)}

/* ── Ventana centrada (detalle de orden, Nueva compra, Editor de partidas) y fondos de los modales ── */
body.modal-abierto{overflow:hidden;padding-right:var(--sbw,0)}
.overlay,.reporte-overlay,.modal-overlay{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;align-items:center;justify-content:center;padding:max(12px,3vh) 16px;background:rgba(24,24,26,.5);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fadein var(--t) var(--ease)}
.detail-panel{background:#fff;width:min(1120px,94vw);max-height:90vh;display:flex;flex-direction:column;border-radius:var(--r-lg);box-shadow:var(--shadow-modal);overflow:hidden;transition:width var(--t) var(--ease);animation:winIn .24s var(--ease)}
.detail-panel.is-wide,.nof-panel{width:min(1180px,96vw)}
@keyframes winIn{from{transform:translateY(12px) scale(.985);opacity:0}to{transform:none;opacity:1}}
@keyframes sheetIn{from{transform:translateY(28px);opacity:.4}to{transform:none;opacity:1}}
.panel-top{position:relative;flex:none;background:#fff;padding:22px 72px 16px 28px;border-bottom:1px solid var(--border-soft)}
.panel-tabbar{flex:none;padding:12px 28px;background:#fff;border-bottom:1px solid var(--border-soft)}
.panel-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.panel-project{font-size:var(--fs-xl);font-weight:500;letter-spacing:-.01em;line-height:1.2}
.panel-client{font-size:var(--fs-sm);color:var(--text-2);margin-top:4px}
.close-btn{position:absolute;top:18px;right:20px;width:36px;height:36px;border-radius:var(--r-md);display:grid;place-items:center;color:var(--text);border:1px solid var(--border);background:#fff;transition:background-color var(--t-fast),border-color var(--t-fast)}
.close-btn:hover{background:var(--byp-gray-100);border-color:var(--byp-gray-400)}
.panel-body{--win-px:28px;--win-pb:28px;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:20px var(--win-px) var(--win-pb)}
.panel-tabs{display:flex;gap:2px;background:var(--byp-gray-100);padding:3px;border-radius:var(--r-md)}
.panel-tab{flex:1;height:36px;padding:0 12px;border-radius:var(--r-sm);font-size:var(--fs-sm);font-weight:500;color:var(--text-2);transition:background-color var(--t-fast),color var(--t-fast),box-shadow var(--t-fast);text-align:center}
.panel-tab *{pointer-events:none}
.panel-tab:hover{color:var(--text)}
.panel-tab.active{background:#fff;color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.panel-tab-content{display:none}
.panel-tab-content.active{display:block}
#panel-tab-body{animation:fadein var(--t) var(--ease)}

/* Línea de tiempo del proceso */
.process-timeline{margin-bottom:20px}
.timeline-scroll{display:flex;align-items:flex-start;overflow-x:auto;padding:4px 0 6px}
.tl-step{display:flex;flex-direction:column;align-items:center;min-width:84px;position:relative;flex:1 0 84px}
.tl-step:not(:last-child)::after{content:"";position:absolute;top:13px;left:calc(50% + 15px);right:calc(-50% + 15px);height:2px;background:var(--border);z-index:0}
.tl-step.s-completado:not(:last-child)::after{background:var(--byp-carbon)}
.tl-step.s-atrasada:not(:last-child)::after{background:var(--danger-strong)}
.tl-step.s-a-tiempo:not(:last-child)::after{background:var(--byp-gray-300)}
.tl-dot{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;z-index:1;border:2px solid var(--border);background:#fff;color:var(--text-3)}
.tl-dot.s-completado{background:var(--byp-carbon);border-color:var(--byp-carbon);color:#fff}
.tl-dot.s-a-tiempo,.tl-dot.s-activo{background:#fff;border-color:var(--byp-carbon);color:var(--byp-carbon);box-shadow:0 0 0 4px rgba(39,39,39,.1)}
.tl-dot.s-atrasada{background:var(--danger-strong);border-color:var(--danger-strong);color:#fff}
.tl-dot.s-pendiente{background:#fff;border-color:var(--border);color:var(--byp-gray-400)}
.tl-label{font-size:12.5px;text-align:center;margin-top:8px;color:var(--text);line-height:1.25;max-width:80px;font-weight:500}
.tl-date{font-size:12px;text-align:center;margin-top:2px;color:var(--text-2);font-variant-numeric:tabular-nums}
.tl-table{width:100%;font-size:var(--fs-sm);margin-bottom:16px}
.tl-table th{position:static;background:transparent;border-bottom:1px solid var(--border)}
.tl-table td{padding:8px 12px}
.tl-table tr.is-late{background:#fff8f9}
.tl-table tr.is-late td.tl-stage{color:var(--danger-text);font-weight:500}
.tl-link{display:inline-flex;align-items:center;gap:4px;padding:0;border-radius:var(--r-pill)}
.tl-link .ico{color:var(--byp-gray-400)}
.tl-link:hover .ico{color:var(--text)}

/* Secciones en cards */
.info-section{margin-bottom:16px;border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;background:#fff}
.info-section-header{padding:12px 16px;background:var(--byp-gray-50);border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.info-section-title{font-size:var(--fs-base);font-weight:500;color:var(--text);display:flex;align-items:center;gap:8px}
.info-section-title .ico{color:var(--text-2)}
.info-section-meta{font-size:var(--fs-xs);color:var(--text-2)}
.info-section-body{padding:16px}
.info-section-body.flush{padding:0}
.info-section.is-attention{border-color:#f0cf7a;background:var(--warn-bg)}
.info-section.is-attention .info-section-header{background:transparent;border-color:#f5e2ad}
.info-section.is-attention .info-section-title,.info-section.is-attention .info-section-meta{color:var(--warn-text)}
.info-section.is-attention textarea{border-color:#e8c25e}
.section-lead{font-size:var(--fs-sm);color:var(--text-2);margin-bottom:14px;max-width:72ch}
.form-actions{display:flex;gap:10px;padding:8px 0 4px;flex-wrap:wrap}
.form-actions.sticky{position:sticky;bottom:0;background:linear-gradient(to top,#fff 70%,rgba(255,255,255,0));padding:16px 0 20px;z-index:3}

/* Proveedor (PM / COMEX / Timeline) */
.prov-section{margin-bottom:16px;border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;background:#fff}
.prov-section.is-assign{border-bottom-style:dashed;border-radius:var(--r-lg) var(--r-lg) 0 0;margin-bottom:0}
.prov-section.after-assign{border-top:0;border-radius:0 0 var(--r-lg) var(--r-lg)}
.prov-section-header{padding:12px 16px;background:var(--byp-gray-50);border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.prov-section-title{display:flex;align-items:center;gap:12px;min-width:0}
.prov-avatar{width:36px;height:36px;border-radius:var(--r-md);background:var(--byp-carbon);color:#fff;font-size:12px;font-weight:500;letter-spacing:.06em;display:grid;place-items:center;flex-shrink:0}
.prov-name{font-size:var(--fs-base);font-weight:500;color:var(--text);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.prov-sub{font-size:var(--fs-xs);color:var(--text-2);margin-top:1px}
.prov-section-body{padding:16px}
.prov-block-title{font-size:var(--fs-xs);font-weight:500;color:var(--text-2);letter-spacing:.06em;text-transform:uppercase;margin:4px 0 12px;display:flex;align-items:center;gap:8px}
.prov-block-title::after{content:"";flex:1;height:1px;background:var(--border-soft)}
.prov-block-title.mt{margin-top:22px}
.prov-partida-label{font-size:13px;font-weight:500;letter-spacing:.02em;color:var(--text);background:#fff;border:1px solid var(--border);border-radius:var(--r-pill);padding:2px 8px}
.assign-title{font-size:var(--fs-sm);font-weight:500;display:flex;align-items:center;gap:8px}
.assign-table{width:100%;font-size:var(--fs-sm);margin-bottom:12px}
.assign-table th{position:static;background:transparent;padding:6px 10px}
.assign-table td{padding:6px 10px}
.envio-item-sel{height:32px;padding:0 10px;border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--fs-xs);font-weight:500;background-color:#fff}

/* Persona asignada (PM) */
.person-list{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}
.person-card{display:flex;align-items:center;gap:12px;border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 16px;flex:1;min-width:180px;background:#fff}
.person-av{width:40px;height:40px;border-radius:50%;background:var(--byp-carbon);color:#fff;font-weight:500;font-size:13px;letter-spacing:.04em;display:grid;place-items:center;flex-shrink:0}
.person-av.sm{width:30px;height:30px;font-size:12px}
.person-name{font-size:var(--fs-base);font-weight:500}
.person-role{font-size:var(--fs-xs);color:var(--text-2)}
.person-stack{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.notice{display:flex;align-items:center;gap:10px;border-radius:var(--r-lg);padding:12px 16px;margin-bottom:18px;font-size:var(--fs-sm)}
.notice-warn{background:var(--warn-bg);color:var(--warn-text);border:1px dashed #e8c25e}
.notice-info{background:var(--byp-gray-50);color:var(--text-2);border:1px solid var(--border-soft)}
/* Selector de PM (tarjetas) */
.pm-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.pm-card-label{cursor:pointer;border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 10px;text-align:center;user-select:none;background:#fff;transition:border-color var(--t-fast),box-shadow var(--t-fast),background-color var(--t-fast);position:relative}
.pm-card-label:hover{border-color:var(--byp-gray-400)}
.pm-card-label.is-selected{border-color:var(--byp-carbon);box-shadow:0 0 0 1px var(--byp-carbon);background:var(--byp-gray-50)}
.pm-card-label.is-selected::after{content:"";position:absolute;top:10px;right:10px;width:16px;height:16px;border-radius:50%;background:var(--byp-carbon) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/10px no-repeat}
.pm-av{width:44px;height:44px;border-radius:50%;background:var(--byp-gray-100);color:var(--text);font-weight:500;font-size:14px;letter-spacing:.04em;display:grid;place-items:center;margin:0 auto 8px;transition:background-color var(--t-fast),color var(--t-fast)}
.pm-card-label.is-selected .pm-av{background:var(--byp-carbon);color:#fff}
.pm-card-name{font-size:var(--fs-sm);font-weight:500;line-height:1.3}
.pm-card-role{font-size:13px;color:var(--text-2);margin-top:2px}

/* Historial */
.historial-entry{padding:14px 18px;border-bottom:1px solid var(--border-soft)}
.historial-entry:last-child{border-bottom:0}
.historial-entry-latest{box-shadow:inset 3px 0 0 var(--byp-carbon)}
.historial-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.historial-user-block{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.historial-user{font-size:var(--fs-sm);font-weight:500}
.historial-date{font-size:var(--fs-xs);color:var(--text-2);margin-left:auto;white-space:nowrap;font-variant-numeric:tabular-nums}
.historial-badge-last{font-size:13px;font-weight:500;background:var(--byp-gray-100);color:var(--text);border-radius:var(--r-pill);padding:2px 8px}
.historial-motivo{font-size:var(--fs-sm);color:var(--text);background:var(--byp-gray-50);border-left:2px solid var(--byp-gray-300);padding:6px 10px;border-radius:0 var(--r-sm) var(--r-sm) 0;margin-bottom:8px}
.historial-cambios{display:flex;flex-direction:column;gap:4px}
.historial-cambio{display:grid;grid-template-columns:150px 1fr 18px 1fr;align-items:center;gap:8px;font-size:var(--fs-xs);border:1px solid var(--border-soft);border-radius:var(--r-sm);padding:6px 10px}
.historial-campo{font-weight:500;color:var(--text-2)}
.historial-antes{color:var(--text-3);text-decoration:line-through}
.historial-arrow{color:var(--byp-gray-400);text-align:center}
.historial-despues{color:var(--text);font-weight:500}
.historial-sin-cambios{font-size:var(--fs-xs);color:var(--text-2)}
.comex-log{font-size:var(--fs-xs)}
.comex-log-row{padding:8px 0;border-bottom:1px solid var(--border-soft);color:var(--text-2);line-height:1.6}
.comex-log-row strong{color:var(--text)}
.comex-log-chg{display:inline-block;background:var(--byp-gray-100);border-radius:var(--r-sm);padding:1px 6px;margin:2px 2px 0 0}

/* Campos */
.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}
.field-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.field-grid.cols-1-2{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
.field-item{display:flex;flex-direction:column;gap:4px;min-width:0}
.field-item.full{grid-column:1/-1}
.field-item.span-2{grid-column:span 2}
.field-lbl{margin-bottom:0}
.field-val{font-size:var(--fs-base);color:var(--text);font-weight:400;overflow-wrap:anywhere}
.field-val.empty{color:var(--byp-gray-500)}
.field-val.note{color:var(--text-2)}
.field-val.alert{color:var(--danger-text);font-weight:500}
.field-lbl-check{display:flex!important;align-items:center;gap:8px}

/* Check PM (marcar realizado) */
.pm-check-lbl{display:inline-flex;align-items:center;cursor:pointer;user-select:none;flex-shrink:0;line-height:1}
.pm-check-box{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--byp-gray-400);display:grid;place-items:center;font-size:12px;font-weight:700;color:transparent;transition:all var(--t-fast);background:#fff}
.pm-check-box.pm-check-done{border-color:var(--byp-carbon);background:var(--byp-carbon);color:#fff}
.pm-check-lbl:hover .pm-check-box:not(.pm-check-done){border-color:var(--byp-carbon);color:var(--byp-gray-400)}
.pm-check-lbl[title*="Desmarcar"]:hover .pm-check-box.pm-check-done{border-color:var(--danger-strong);background:var(--danger-bg);color:var(--danger-text)}

/* ── Formulario Nueva compra calzada ── */
/* Partidas: cada una es una tarjeta con campos etiquetados que se reacomoda según el ancho de su contenedor
   (2 columnas en angosto, 6 en medio, 12 en la ventana ancha); así no hace falta desplazamiento horizontal. */
.items-wrap{container-type:inline-size;padding:14px 16px 6px}
.items-table,.items-table tbody,.items-table tfoot,.items-table tr,.items-table td{display:block}
.items-table{width:100%;min-width:0}
.items-table tbody{display:flex;flex-direction:column;gap:12px}
.items-table tr.it-row{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 14px;padding:40px 16px 16px;border:1px solid var(--border);border-radius:var(--r-lg);background:#fff}
.items-table tr.it-row:hover{background:#fff}
.items-table td{min-width:0;padding:0;white-space:normal}
.items-table .f-prov,.items-table .f-provreal,.items-table .f-ref{grid-column:1/-1}
.it-lbl{display:block;margin-bottom:6px;font-size:var(--fs-xs);font-weight:500;color:var(--text-2);line-height:1.3}
.items-table td.row-num{position:absolute;top:11px;left:16px;display:flex;align-items:center;gap:4px;font-size:var(--fs-xs);font-weight:500;color:var(--text-2);font-variant-numeric:tabular-nums}
.items-table td.row-num::before{content:"Partida"}
.items-table td.f-del{position:absolute;top:5px;right:8px}
.items-table .it-tracking{margin-top:6px}
.items-table tfoot tr{display:flex;justify-content:flex-end;align-items:baseline;gap:18px;padding:10px 4px 12px}
@container (min-width:560px){
  .items-table tr.it-row{grid-template-columns:repeat(6,minmax(0,1fr))}
  .items-table .f-prov,.items-table .f-provreal{grid-column:span 3}
  .items-table .f-origen{grid-column:span 3}
  .items-table .f-transp{grid-column:span 2}
  .items-table .f-ref{grid-column:span 4}
  .items-table .f-bp{grid-column:span 2}
  .items-table .f-cant{grid-column:span 2}
  .items-table .f-mon{grid-column:span 2}
  .items-table .f-unit{grid-column:span 3}
  .items-table .f-total{grid-column:span 3}
}
@container (min-width:900px){
  .items-table tr.it-row{grid-template-columns:repeat(12,minmax(0,1fr))}
  .items-table .f-prov,.items-table .f-provreal{grid-column:span 3}
  .items-table .f-origen{grid-column:span 3}
  .items-table .f-transp{grid-column:span 3}
  .items-table .f-ref{grid-column:span 3}
  .items-table .f-bp{grid-column:span 3}
  .items-table .f-cant{grid-column:span 2}
  .items-table .f-mon{grid-column:span 2}
  .items-table .f-unit{grid-column:span 2}
  .items-table .f-total{grid-column:span 3}
}
.it-input{height:40px;padding:0 12px;font-size:var(--fs-sm)}
select.it-input{padding-right:28px!important;background-position:right 8px center}
.it-input[required]:placeholder-shown{border-color:var(--byp-gray-300)}
.it-input.is-invalid,.field-edit .is-invalid{border-color:var(--danger-strong)!important;background:#fffafb}
.field-error{color:var(--danger-text);font-size:var(--fs-xs);line-height:1.35;margin-top:4px}
.pm-picker + .field-error{margin-top:8px}
.items-empty.is-invalid-msg{color:var(--danger-text);font-weight:500}
.it-total{font-weight:500;background:var(--byp-gray-50)!important}
.row-del{width:32px;height:32px;margin-top:2px;display:grid;place-items:center;border-radius:var(--r-md);color:var(--text-2);transition:background-color var(--t-fast),color var(--t-fast)}
.row-del:hover{background:var(--danger-bg);color:var(--danger-text)}
.grand-total{font-family:var(--font-num);font-size:var(--fs-md);font-weight:500;font-variant-numeric:tabular-nums}
.grand-label{text-align:right;font-size:var(--fs-xs);color:var(--text-2);font-weight:500;letter-spacing:.06em;text-transform:uppercase}
.items-empty{text-align:center;padding:28px;color:var(--text-2);font-size:var(--fs-sm)}
/* Editor de partidas (pestaña General) */
.info-section-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.pe-help{padding:10px 16px;color:var(--text-2);font-size:var(--fs-sm);border-bottom:1px solid var(--border-soft)}
.items-table tr.it-row.is-locked{background:var(--byp-gray-50);border-style:dashed}
.items-table tr.is-locked .it-val{display:block;font-size:var(--fs-sm);color:var(--text);overflow-wrap:anywhere}
.items-table tr.is-locked .lock-cell{color:var(--text-2)}
.items-table tr.it-note{margin:-6px 0 0;padding:0 4px;border-bottom:0}
.lock-note{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--text-2)}
.lock-note .ico{flex:none}
.form-error-summary{display:none;align-items:flex-start;gap:10px;background:var(--danger-bg);color:var(--danger-text);border-radius:var(--r-md);padding:12px 14px;margin-bottom:16px;font-size:var(--fs-sm)}
.form-error-summary.show{display:flex}

/* ── Toasts ── */
.toast-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:10px;z-index:var(--z-toast);pointer-events:none;max-width:calc(100vw - 32px)}
.toast{position:relative;background:var(--byp-carbon);color:#fff;border-radius:var(--r-lg);padding:12px 12px 12px 16px;box-shadow:var(--shadow-3);min-width:280px;max-width:420px;display:flex;align-items:flex-start;gap:12px;animation:toastIn .22s var(--ease);pointer-events:auto;overflow:hidden}
.toast::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--byp-gray-400)}
.toast.success::before{background:var(--ok)}
.toast.error::before{background:var(--danger)}
.toast.info::before{background:#fff}
.toast-icon{display:grid;place-items:center;margin-top:1px}
.toast.success .toast-icon{color:var(--ok)}
.toast.error .toast-icon{color:var(--danger)}
.toast-msg{font-size:var(--fs-sm);flex:1;line-height:1.45}
.toast-close{width:24px;height:24px;display:grid;place-items:center;border-radius:var(--r-sm);color:rgba(255,255,255,.7)}
.toast-close:hover{background:rgba(255,255,255,.12);color:#fff}
@keyframes toastIn{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}

/* ── Estados vacíos y de carga ── */
.empty-state{text-align:center;padding:56px 24px;color:var(--text-2);display:flex;flex-direction:column;align-items:center}
.empty-state-icon{width:56px;height:56px;border-radius:50%;background:var(--byp-gray-100);display:grid;place-items:center;color:var(--text-2);margin-bottom:16px}
.empty-state-title{font-size:var(--fs-md);font-weight:500;color:var(--text);margin-bottom:4px}
.empty-state-sub{font-size:var(--fs-sm);max-width:44ch}
.empty-state .btn{margin-top:16px}
.skeleton{display:flex;flex-direction:column;gap:12px}
.skeleton{gap:24px}
.sk{display:block;border-radius:6px;background:linear-gradient(90deg,var(--byp-gray-100) 0%,#fcfcfc 50%,var(--byp-gray-100) 100%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}
.sk-line{height:12px}
.sk-line.sk-lg{height:16px}
.sk-num{height:34px;width:38%}
.sk-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px}
@media (min-width:1101px){ .sk-kpis{grid-template-columns:repeat(4,minmax(0,1fr))} }
.sk-card{display:flex;flex-direction:column;gap:14px;min-height:118px;padding:18px 20px 16px;background:#fff;border:1px solid var(--border);border-radius:var(--r-lg)}
.sk-tabla{background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}
.sk-fila{display:grid;grid-template-columns:repeat(var(--cols,5),minmax(0,1fr));gap:24px;align-items:center;padding:17px 16px;border-bottom:1px solid var(--border-soft)}
.sk-fila:last-child{border-bottom:0}
.sk-fila.sk-cab{padding:13px 16px;background:var(--byp-gray-50);border-bottom-color:var(--border)}
.sk-seccion{display:flex;flex-direction:column;gap:18px;padding:16px;margin-bottom:16px;border:1px solid var(--border);border-radius:var(--r-lg)}
.sk-campos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 24px}
.sk-campo{display:flex;flex-direction:column;gap:8px}
@media (max-width:768px){
  .sk-fila{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sk-fila>:nth-child(n+3){display:none}
  .sk-campos{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@keyframes shimmer{from{background-position:200% 0}to{background-position:-200% 0}}
.loading-inline{display:flex;align-items:center;justify-content:center;gap:10px;padding:48px;color:var(--text-2)}
.loading-inline::before{content:"";width:18px;height:18px;border-radius:50%;border:2px solid var(--byp-gray-200);border-top-color:var(--byp-carbon);animation:spin .8s linear infinite}

/* ── Tiempos ── */
.tiempos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin-bottom:32px}
.tiempo-card{background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;cursor:pointer;display:flex;flex-direction:column;transition:border-color var(--t-fast),box-shadow var(--t-fast)}
.tiempo-card:hover{border-color:var(--byp-carbon);box-shadow:var(--shadow-2)}
.tiempo-card-header{padding:14px 18px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border-soft)}
.tiempo-card-ticket{font-family:var(--font-num);font-size:13px;font-weight:500;color:var(--text-2)}
.tiempo-card-title{font-size:var(--fs-md);font-weight:500;margin-top:4px;line-height:1.25}
.tiempo-card-body{padding:6px 18px 14px;flex:1;display:flex;flex-direction:column}
.tiempo-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--border-soft);font-size:var(--fs-sm)}
.tiempo-row:last-of-type{border-bottom:0}
.tiempo-label{color:var(--text-2)}
.tiempo-value{font-weight:500;text-align:right}
.tiempo-days{display:flex;align-items:baseline;justify-content:center;gap:8px;padding:14px 0 2px;margin-top:auto;border-top:1px solid var(--border-soft)}
.days-big{font-family:var(--font-num);font-size:var(--fs-2xl);font-weight:500;letter-spacing:-.02em;font-variant-numeric:tabular-nums}

/* ── Actualización ── */
.update-card{background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);padding:16px 20px;margin-bottom:12px;display:flex;align-items:flex-start;gap:16px;cursor:pointer;transition:border-color var(--t-fast),box-shadow var(--t-fast)}
.update-card:hover{border-color:var(--byp-carbon);box-shadow:var(--shadow-2)}
.update-card-left{flex:1;min-width:0}
.update-title{font-size:var(--fs-md);font-weight:500}
.update-meta{font-size:var(--fs-sm);color:var(--text-2);margin-top:2px}
.update-facts{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:var(--fs-xs);color:var(--text-2)}
.update-facts span{display:inline-flex;align-items:center;gap:6px}
.update-comment{font-size:var(--fs-sm);color:var(--text);margin-top:10px;background:var(--byp-gray-50);border-radius:var(--r-md);padding:8px 12px;border-left:2px solid var(--byp-gray-300)}
.update-days{min-width:84px;text-align:right}

/* ── En tránsito ── */
.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:20px}
.stat{background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);padding:16px 18px;display:flex;align-items:center;gap:14px}
.stat-ico{width:40px;height:40px;border-radius:var(--r-md);display:grid;place-items:center;background:var(--byp-gray-100);color:var(--text)}
.stat-n{font-family:var(--font-num);font-size:var(--fs-xl);font-weight:500;line-height:1;font-variant-numeric:tabular-nums}
.stat-l{font-size:var(--fs-xs);color:var(--text-2);margin-top:4px}
.stat.warn .stat-ico{background:var(--warn-bg);color:var(--warn-text)}
.stat.ok .stat-ico{background:var(--ok-bg);color:var(--ok-text)}

/* ── Calendario ── */
.view-help{margin:0 0 14px;color:var(--text-2);font-size:var(--fs-sm);max-width:78ch}
.cal-notice{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 14px;padding:10px 14px;border:1px solid var(--border-soft);border-radius:var(--r-md);background:var(--byp-gray-50);color:var(--text-2);font-size:var(--fs-sm)}
.cal-notice .btn{margin-left:auto}
.cal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.cal-title{font-size:var(--fs-xl);font-weight:500;letter-spacing:-.01em}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.cal-dow{text-align:center;font-size:var(--fs-xs);font-weight:500;color:var(--text-2);padding:4px 0}
.cal-cell{min-height:92px;background:#fff;border:1px solid var(--border-soft);border-radius:var(--r-md);padding:6px;display:flex;flex-direction:column;gap:3px;min-width:0}
.cal-cell.is-out{background:transparent;border-style:dashed;border-color:var(--border-soft)}
.cal-cell.is-past{background:var(--byp-gray-50)}
.cal-cell.is-past .cal-day{color:var(--byp-gray-500)}
.cal-cell.is-today{border-color:var(--byp-carbon);box-shadow:inset 0 0 0 1px var(--byp-carbon)}
.cal-day{font-family:var(--font-num);font-weight:500;font-size:var(--fs-sm);color:var(--text);margin-bottom:2px;display:flex;align-items:center;gap:6px}
.cal-cell.is-today .cal-day::after{content:"Hoy";font-family:var(--font);font-size:11px;letter-spacing:.06em;text-transform:uppercase;background:var(--byp-carbon);color:#fff;border-radius:var(--r-pill);padding:1px 6px}
.cal-ev{display:block;width:100%;text-align:left;border-radius:var(--r-sm);padding:2px 6px;font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid transparent;cursor:pointer;transition:filter var(--t-fast)}
.cal-ev:hover{filter:brightness(.95)}
.ev-eta{background:var(--byp-carbon);color:#fff}
.ev-byp{background:var(--ok-bg);color:var(--ok-text);border-color:#cdeebf}
.ev-chile{background:#fff;color:var(--text);border-color:var(--byp-gray-300)}
.cal-more{font-size:12px;color:var(--text-2)}
.cal-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px;font-size:var(--fs-xs);color:var(--text-2)}
.cal-legend span{display:inline-flex;align-items:center;gap:6px}
.cal-legend .cal-ev{width:auto;display:inline-block;cursor:default;flex:none;overflow:visible;text-overflow:clip}

/* ── Usuarios ── */
.data-table{width:100%;font-size:var(--fs-sm)}
.data-table thead th{position:static}
.data-table td{padding:8px 12px;white-space:nowrap}
.data-table input[type=text],.data-table select{height:36px;font-size:var(--fs-sm);min-width:160px}
.data-table tfoot td{padding:12px;background:var(--byp-gray-50);border-top:1px solid var(--border)}
.data-table .tfoot-label{font-size:var(--fs-xs);font-weight:500;color:var(--text-2);letter-spacing:.06em;text-transform:uppercase;padding-bottom:0}
.switch-cell{display:flex;align-items:center;gap:8px}

/* ── Modales (reporte semanal, envíos) ── */
.reporte-overlay,.modal-overlay{z-index:var(--z-modal)}
.reporte-modal,.modal{background:#fff;border-radius:var(--r-lg);width:100%;max-width:800px;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-3);overflow:hidden;animation:pop .22s var(--ease)}
.modal{max-width:440px;padding:24px 24px 20px;overflow:visible}
.modal-title{font-size:var(--fs-lg);font-weight:500;margin-bottom:4px}
.modal-sub{font-size:var(--fs-sm);color:var(--text-2);margin-bottom:18px}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}
.modal-list{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.check-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;font-size:var(--fs-sm);transition:border-color var(--t-fast),background-color var(--t-fast)}
.check-row:hover{border-color:var(--byp-gray-400)}
.check-row:has(input:checked){border-color:var(--byp-carbon);background:var(--byp-gray-50)}
@keyframes pop{from{transform:translateY(8px) scale(.985);opacity:0}to{transform:none;opacity:1}}
.rep-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 24px;background:var(--byp-carbon);color:#fff}
.rep-brand{display:flex;align-items:center;gap:16px;min-width:0}
.rep-brand img{height:44px;width:auto;flex-shrink:0}
.rep-title{font-size:var(--fs-lg);font-weight:500}
.rep-subtitle{font-size:var(--fs-xs);color:rgba(255,255,255,.7);margin-top:2px}
.rep-close{width:36px;height:36px;border-radius:var(--r-md);display:grid;place-items:center;color:#fff;border:1px solid rgba(255,255,255,.28);flex-shrink:0;transition:background-color var(--t-fast)}
.rep-close:hover{background:rgba(255,255,255,.1)}
.rep-body{flex:1;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:20px}
.rep-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.rep-kpi{border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 12px}
.rep-kpi-n{font-family:var(--font-num);font-size:var(--fs-2xl);font-weight:500;line-height:1;font-variant-numeric:tabular-nums}
.rep-kpi-warn .rep-kpi-n{color:var(--danger-text)}
.rep-kpi-ok .rep-kpi-n{color:var(--ok-text)}
.rep-kpi-l{font-size:var(--fs-xs);color:var(--text-2);margin-top:6px;font-weight:500}
.rep-section{border:1px solid var(--border);border-radius:var(--r-lg);padding:16px 18px}
.rep-sec-hd{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.rep-sec-title{font-size:var(--fs-md);font-weight:500}
.rep-sec-desc{font-size:var(--fs-xs);color:var(--text-2)}
.rep-main-btn{display:flex;width:100%;margin-top:4px}
.rep-table{font-size:var(--fs-sm)}
.rep-table thead th{position:static;background:transparent;padding:8px 10px}
.rep-table tbody td{padding:9px 10px}
.rep-tc{text-align:center!important}
.rep-depto{display:block;font-size:13px;color:var(--text-2);font-weight:400}
.rep-depto:empty{display:none}
.rep-badge-warn,.rep-badge-ok,.rep-badge-info{display:inline-grid;place-items:center;min-width:26px;height:22px;padding:0 8px;border-radius:var(--r-pill);font-size:13px;font-weight:500;font-variant-numeric:tabular-nums}
.rep-badge-warn{background:var(--danger-bg);color:var(--danger-text)}
.rep-badge-ok{background:var(--ok-bg);color:var(--ok-text)}
.rep-badge-info{background:var(--byp-gray-150);color:var(--text)}
.rep-send-btn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid var(--byp-carbon);border-radius:var(--r-md);font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--byp-carbon);background:#fff;transition:background-color var(--t-fast)}
.rep-send-btn:hover{background:var(--byp-gray-100)}
.rep-actions{display:flex;gap:6px;justify-content:center;align-items:center}
.rep-hint{font-size:var(--fs-xs);color:var(--text-2);margin-top:10px}

/* ── Partidas / envíos ── */
.partida-badge,.partida-btn{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 10px;border-radius:var(--r-pill);font-size:13px;font-weight:500;background:#fff;color:var(--text);border:1px solid var(--border);white-space:nowrap;font-variant-numeric:tabular-nums}
.partida-btn{cursor:pointer}
.partida-btn:hover{border-color:var(--byp-carbon)}
.add-partida-btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;font-size:var(--fs-xs);font-weight:500;color:var(--text);background:#fff;border:1px dashed var(--byp-gray-400);border-radius:var(--r-md);cursor:pointer}
.add-partida-btn:hover{border-color:var(--byp-carbon)}
.tracking{display:block;font-size:13px;color:var(--text-2)}

/* ── Scrollbars discretos ── */
*{scrollbar-width:thin;scrollbar-color:var(--byp-gray-300) transparent}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--byp-gray-300);border-radius:8px;border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:var(--byp-gray-500);background-clip:padding-box}

/* ── Utilidades ── */
.hidden{display:none!important}
.flex{display:flex}
.items-center{align-items:center}
.justify-between{justify-content:space-between}
.gap-2{gap:8px}
.gap-3{gap:12px}
.mt-3{margin-top:12px}
.mt-4{margin-top:32px}
.fw-700{font-weight:500}
.text-sm{font-size:var(--fs-sm)}
.text-xs{font-size:var(--fs-xs)}
.text-secondary{color:var(--text-2)}

/* ── Responsive ── */
@media (max-width:1180px){
  .brand-app{display:none}
  .topbar-actions .btn .btn-label{display:none}
  .topbar-actions .btn{width:40px;padding:0}
  .user-meta{display:none}
}
@media (max-width:900px){
  :root{--topbar-h:60px}
  .topbar-inner{grid-template-columns:auto 1fr auto;gap:12px;padding:0 12px}
  .nav-toggle{display:grid}
  .brand img{height:42px}
  .mainnav{position:fixed;top:var(--topbar-h);left:0;right:0;bottom:0;background:rgba(0,0,0,.4);border:0;opacity:0;visibility:hidden;transition:opacity var(--t) var(--ease),visibility 0s linear var(--t)}
  .mainnav.open{opacity:1;visibility:visible;transition-delay:0s}
  .mainnav-inner{height:auto;max-height:calc(100dvh - var(--topbar-h));overflow-y:auto;display:block;background:#fff;padding:8px 12px 16px;transform:translateY(-8px);transition:transform var(--t) var(--ease)}
  .mainnav.open .mainnav-inner{transform:none}
  .nav-list{flex-direction:column}
  .nav-li{flex-direction:column}
  .nav-li+.nav-li::before{display:none}
  .nav-link{height:48px;padding:0 8px;border-bottom:1px solid var(--border-soft);justify-content:flex-start}
  .nav-link::after{left:0;right:auto;width:3px;top:12px;bottom:12px;height:auto;transform:scaleY(0)}
  .nav-link.active::after{transform:scaleY(1)}
  .nav-link .chev{margin-left:auto}
  .drop{position:static;transform:none!important;box-shadow:none;border:0;padding:4px 0 8px 8px;min-width:0;display:none;opacity:1;visibility:visible}
  .drop.open{display:block}
  .drop.user-panel{position:absolute;display:block;box-shadow:var(--shadow-3);border:1px solid var(--border-soft);padding:0;opacity:0;visibility:hidden}
  .drop.user-panel.open{opacity:1;visibility:visible}
  .page-content{padding:20px 16px 48px}
  .page-title{font-size:var(--fs-xl)}
  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .kpi-value{font-size:var(--fs-2xl)}
  .field-grid,.field-grid.cols-3,.field-grid.cols-1-2{grid-template-columns:minmax(0,1fr)}
  .field-item.span-2{grid-column:auto}
  .panel-top{padding:18px 64px 14px 20px}
  .panel-tabbar{padding:10px 20px}
  .panel-body{--win-px:20px;--win-pb:24px;padding-top:16px}
  .rep-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .historial-cambio{grid-template-columns:1fr;gap:2px}
  .historial-arrow{display:none}
  .cal-cell{min-height:64px;padding:4px}
  .cal-ev{font-size:12px;padding:1px 4px}
  .filter-results,.btn-clear-filters{margin-left:0}
}
@media (max-width:620px){
  .topbar-inner{grid-template-columns:1fr auto;grid-template-areas:"left act" "search search";height:auto;padding:8px 12px 10px;row-gap:8px}
  .topbar-left{grid-area:left}
  .topbar-actions{grid-area:act;gap:6px}
  .search-box{grid-area:search}
  .topbar-actions .btn{width:36px;height:36px}
  :root{--topbar-h:118px}
  .page-head{margin-bottom:16px}
  .kpi-card{padding:14px 14px 12px}
  .kpi-value{font-size:26px}
  .section-header .flex{width:100%}
  .section-header .flex .btn{flex:1}
  .filter-select{max-width:none;flex:1 1 140px}
  .tiempos-grid{grid-template-columns:minmax(0,1fr)}
  .cal-dow{font-size:12px}
  .cal-cell{min-height:52px}
  .cal-ev{font-size:0;height:6px;padding:0;border-radius:3px}
  .toast-container{left:16px;right:16px;bottom:16px}
  .toast{min-width:0;max-width:none}
  .update-card{flex-direction:column;gap:8px}
  .update-days{text-align:left}
  .login-card{padding:24px 20px}
  .login-logo{height:120px}
}

/* Ventana en móvil: hoja que sube desde abajo, casi a pantalla completa */
@media (max-width:640px){
  .overlay{align-items:flex-end;padding:8px 0 0}
  .detail-panel,.detail-panel.is-wide,.nof-panel{width:100vw;max-height:calc(100vh - 8px);border-radius:14px 14px 0 0;animation:sheetIn .26s var(--ease)}
  .panel-top{padding:16px 56px 12px 16px}
  .close-btn{top:12px;right:12px}
  .panel-tabbar{padding:8px 12px}
  .panel-body{--win-px:16px;--win-pb:20px}
  .modal-overlay,.reporte-overlay{padding:12px}
}
@supports (height:1dvh){ @media (max-width:640px){ .detail-panel,.detail-panel.is-wide,.nof-panel{max-height:calc(100dvh - 8px)} } }

/* ── Movimiento reducido ── */
@media (prefers-reduced-motion:reduce){
  .sk{animation:none;background:var(--byp-gray-100)}
  .overlay,.detail-panel,.reporte-overlay,.reporte-modal,.modal-overlay,.modal{animation:none}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
@media (prefers-reduced-motion:reduce){
  .btn.is-loading::before,.boot-spinner,.loading-inline::before{animation-duration:1s!important;animation-iteration-count:infinite!important}
}
.pm-check-lbl input:focus-visible + .pm-check-box{box-shadow:var(--focus)}

/* ── Ajustes tras revisión de capturas ── */
@media (min-width:1101px){ .kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))} }
.drop{min-width:320px}
.drop.user-panel{min-width:260px}
.filter-selects .filter-select{flex:0 1 200px;max-width:220px}
.alert-details{margin-top:4px}
.alert-details summary{cursor:pointer;font-size:var(--fs-sm);font-weight:500;color:var(--warn-text);padding:4px 0;list-style:none;display:inline-flex;align-items:center;gap:6px}
.alert-details summary::-webkit-details-marker{display:none}
.alert-details summary::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform var(--t-fast)}
.alert-details[open] summary::after{transform:rotate(-135deg) translateY(-1px)}
.alert-details summary:focus-visible{box-shadow:var(--focus)}
.alert-details .alert-list{margin-top:4px}
@media (max-width:620px){
  .filter-selects .filter-label{display:none}
  .filter-selects .filter-select{flex:1 1 calc(50% - 10px);max-width:none}
  .filter-chips{width:100%}
  .filter-chips .chip{flex:1;justify-content:center;padding:0 8px}
}
.filter-select{min-width:0;text-overflow:ellipsis}
.form-actions.sticky{bottom:calc(var(--win-pb,28px) * -1);background:#fff;border-top:1px solid var(--border-soft);margin:16px calc(var(--win-px,28px) * -1) calc(var(--win-pb,28px) * -1);padding:14px var(--win-px,28px) 16px;box-shadow:0 -6px 16px rgba(0,0,0,.04)}
.topbar .user-panel{color:var(--text)}
.topbar .user-panel .role-badge{display:inline-flex;height:22px;padding:0 9px;border:1px solid var(--border-soft);background:var(--byp-gray-100);color:var(--text);font-size:12.5px}
.topbar .user-panel .role-badge.r-admin{background:var(--byp-carbon);color:#fff;border-color:var(--byp-carbon)}

/* Avisos por correo (admin) */
.aviso-kpis{margin-bottom:20px}
@media (min-width:1101px){ .aviso-kpis{grid-template-columns:repeat(3,minmax(0,1fr))} }
.aviso-link{font-family:var(--font-num);font-weight:500;color:var(--byp-carbon);text-decoration:underline;text-underline-offset:2px}
.aviso-link:hover{color:#000}
.aviso-err{color:var(--danger-text)}

/* ── Estados calculados por plazos (línea de tiempo, PM y COMEX) ── */
.ep-chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 11px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:500;letter-spacing:.01em;white-space:nowrap;line-height:1;border:1px solid transparent;vertical-align:middle}
.ep-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}
.ep-ok{background:var(--ok-bg);color:var(--ok-text);border-color:#cdeebf}
.ep-ok::before{background:var(--ok)}
.ep-late{background:var(--danger-bg);color:var(--danger-text);border-color:#f6bfcc}
.ep-late::before{background:var(--danger-strong)}
.ep-pend{background:var(--byp-gray-100);color:var(--text-2);border-color:var(--border-soft)}
.ep-pend::before{background:var(--byp-gray-400)}
.ep-hecho{background:#fff;color:var(--text);border-color:var(--byp-gray-300)}
.ep-hecho::before{width:8px;height:5px;border-radius:0;background:transparent;border:1.5px solid var(--text);border-top:0;border-right:0;transform:rotate(-45deg) translateY(-1px)}
.ep-na{background:#fff;color:var(--text-2);border-color:var(--border);border-style:dashed}
.ep-na::before{display:none}
.ep-warn{background:var(--warn-bg);color:var(--warn-text);border-color:#f7dfa1}
.ep-warn::before{background:var(--warn)}
.pi-chip{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:var(--r-sm);font-family:var(--font-num);font-size:var(--fs-xs);font-weight:500;background:var(--byp-gray-100);border:1px solid var(--border-soft);color:var(--text);white-space:nowrap}
.pi-chip.is-empty{font-family:var(--font);color:var(--text-2);background:#fff;border-style:dashed}
.field-hint.is-warn{color:var(--warn-text)}
.field-item.is-proxima{background:var(--warn-bg);border:1px solid #f7dfa1;border-radius:var(--r-md);padding:8px 10px;margin:-9px -11px}
.calc-val{display:flex;align-items:center;min-height:40px;padding:0 12px;border:1px dashed var(--border);border-radius:var(--r-md);background:var(--byp-gray-50);color:var(--text)}
.form-note{display:flex;align-items:flex-start;gap:8px;margin-top:14px;font-size:var(--fs-sm);color:var(--text-2)}
.form-note .ico{margin-top:2px}
.kpi-unit{font-family:var(--font);font-size:13px;font-weight:500;letter-spacing:0;margin-left:6px;color:var(--text-2)}
.anticipo-antiguo{color:var(--warn-text);font-weight:500;border-bottom:1px dotted currentColor;cursor:help}

/* Campo con sufijo («%», «días») */
.input-suffix{position:relative;display:flex;align-items:center}
.input-suffix input{padding-right:52px!important}
.input-suffix-txt{position:absolute;right:12px;font-size:var(--fs-sm);color:var(--text-2);pointer-events:none}
/* Casilla en línea (p. ej. «Sin pago de adelanto») */
.check-inline{display:flex;align-items:center;gap:10px;margin-top:8px;font-size:var(--fs-sm);color:var(--text);cursor:pointer;user-select:none}
.field-edit[hidden]{display:none}

/* Diálogo propio de confirmación */
.dlg{max-width:460px}
.dlg .modal-sub{font-size:var(--fs-base);color:var(--text);line-height:1.55;margin-bottom:6px}
.dlg .modal-sub strong{font-weight:700}

/* ── Tabla sin desplazamiento horizontal (rtable) ──
   Ancho fijo por columna, texto que envuelve, columnas secundarias ocultas en anchos medianos y tarjetas en móvil. */
.table-wrapper table.rtable,.rtable{width:100%;min-width:0;table-layout:fixed}
.rtable thead th{white-space:normal;line-height:1.25;font-size:var(--fs-xs);vertical-align:bottom}
.rtable tbody td{white-space:normal;overflow-wrap:anywhere;vertical-align:top;padding:12px;font-size:var(--fs-sm);line-height:1.4}
.rtable tbody td .td-sub{margin-top:3px;line-height:1.35}
.rtable tbody td .td-sub .ep-chip{margin-top:2px}
.rtable tbody tr[tabindex]:focus-visible{outline:2px solid var(--byp-carbon);outline-offset:-2px;box-shadow:none}
.rtable .rt-vacio td{padding:0}
.rtable tr.rt-vacio:hover{background:transparent}
/* Dentro de las tablas las pastillas pueden pasar a dos líneas en vez de salirse de su columna */
.rtable .stage-badge::before{width:22px}
.stage-step{white-space:nowrap}
.rtable .status-badge,.rtable .stage-badge,.rtable .ep-chip{white-space:normal;height:auto;min-height:26px;padding-top:3px;padding-bottom:3px;line-height:1.25;max-width:100%}
/* Las pastillas nunca parten una palabra («Atrasad/o»): pasan a otra línea solo entre palabras. Las celdas tienen overflow-wrap:anywhere,
   que se hereda, por eso se anula aquí; el ancho de columna (columnasModo) garantiza que la palabra más larga cabe. */
.status-badge,.stage-badge,.ep-chip,.ticket-badge,.more-tag{overflow-wrap:normal;word-break:normal;hyphens:manual}
/* N° de carpeta / PI completo: en dos líneas si hace falta (parte en los guiones; solo un código largo sin guiones se corta en cualquier punto) */
.td-code{display:block;white-space:normal;overflow-wrap:anywhere;line-height:1.3}
.td-clip{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.td-clip2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.td-wrap2{display:block;white-space:normal}
.cell-stack{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.pi-txt{font-family:var(--font-num);font-weight:500;color:var(--text)}
.orden-relevancia{font-size:var(--fs-sm);color:var(--text-2)}
.stat.danger .stat-ico{background:var(--danger-bg);color:var(--danger-text)}
.alert-tag.is-late{border-color:#f6bfcc;color:var(--danger-text)}
@media (max-width:1100px){ .rtable .h-md{display:none} }
@media (max-width:768px){
  .rtable,.rtable tbody,.rtable tr,.rtable td{display:block;width:100%}
  .rtable thead{display:none}
  .rtable tbody tr{position:relative;padding:12px 14px;border-bottom:1px solid var(--border)}
  .rtable tbody tr.row-atrasada{box-shadow:inset 3px 0 0 var(--danger-strong)}
  .rtable tbody tr.row-atrasada td:first-child{box-shadow:none}
  /* Cada celda: etiqueta a la izquierda (posición absoluta) y el contenido, en una o varias líneas, a la derecha */
  .rtable tbody td{--lw:max(96px,34%);display:block;position:relative;padding:6px 0 6px calc(var(--lw) + 10px);border:0;text-align:left;min-height:30px}
  .rtable tbody td::before{content:attr(data-label);position:absolute;left:0;top:7px;width:var(--lw);font-size:var(--fs-xs);font-weight:500;color:var(--text-2);line-height:1.4}
  .rtable tbody td:first-child{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:0 0 8px;min-height:0}
  .rtable tbody td:first-child::before{display:none}
  .rtable tbody td:first-child .td-sub{margin:0}
  .rtable tbody td.num,.rtable tbody td.ctr{text-align:left}
  .rtable .h-md{display:block}
  .rtable td > *{min-width:0}
  .rtable .rt-vacio td{display:block;padding:0;min-height:0}
  .rtable .rt-vacio td::before{display:none}
  .table-container.is-main .table-wrapper{max-height:none}
}

/* ── Línea de tiempo por envío (PI) ── */
.tl-selector{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.tl-sel-btn{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;max-width:100%;padding:10px 14px;border:1px solid var(--border);border-radius:var(--r-lg);background:#fff;text-align:left;transition:border-color var(--t-fast),box-shadow var(--t-fast),background-color var(--t-fast)}
.tl-sel-btn:hover{border-color:var(--byp-gray-400)}
.tl-sel-btn.active{border-color:var(--byp-carbon);box-shadow:0 0 0 1px var(--byp-carbon);background:var(--byp-gray-50)}
.tl-sel-pi{font-family:var(--font-num);font-size:var(--fs-sm);font-weight:500;color:var(--text)}
.tl-sel-sub{font-size:var(--fs-xs);color:var(--text-2);overflow-wrap:anywhere}
.tl-sel-dot{position:absolute;top:10px;right:10px;width:8px;height:8px;border-radius:50%;background:var(--danger-strong)}
.tl-sel-btn:has(.tl-sel-dot){padding-right:28px}
.tl-resumen{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tl-resumen-txt{font-size:var(--fs-sm);color:var(--text-2)}
.tl-resumen-txt strong{color:var(--text)}
.tl-leyenda{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:var(--fs-xs);color:var(--text-2);line-height:1.6;margin-bottom:14px;padding:10px 12px;background:var(--byp-gray-50);border-radius:var(--r-md)}
.tl-leyenda .ep-chip{height:22px}
.tl-list{list-style:none;position:relative;margin:0;padding:0}
.tl-item{position:relative;display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:12px;padding:6px 0}
.tl-item:not(:last-child)::after{content:"";position:absolute;left:15px;top:calc(50% + 16px);bottom:calc(-50% + 16px);width:2px;background:var(--border-soft)}
.tl-item.is-completado:not(:last-child)::after,.tl-item.is-a_tiempo:not(:last-child)::after{background:var(--byp-gray-400)}
.tl-mk{position:relative;z-index:1;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-num);font-size:13px;font-weight:500;border:2px solid var(--border);background:#fff;color:var(--text-2)}
.tl-mk.is-done{background:var(--byp-carbon);border-color:var(--byp-carbon);color:#fff}
.tl-mk.is-done .ico{stroke-width:2.5}
.tl-mk.is-late{background:var(--danger-strong);border-color:var(--danger-strong);color:#fff;font-family:var(--font);font-weight:700}
.tl-mk.is-na{border-style:dashed;color:var(--text-3)}
.tl-mk.is-current{border-color:var(--byp-carbon);color:var(--byp-carbon);box-shadow:0 0 0 4px rgba(39,39,39,.1)}
.tl-go{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0;padding:8px 10px;margin:-2px 0;border-radius:var(--r-md);text-align:left;transition:background-color var(--t-fast)}
.tl-go:hover{background:var(--byp-gray-100)}
.tl-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.tl-name{font-size:var(--fs-base);font-weight:500;color:var(--text)}
.tl-det{font-size:var(--fs-sm);color:var(--text-2);line-height:1.45;overflow-wrap:anywhere}
.tl-det strong{color:var(--text);font-weight:500}
.tl-now{font-size:13px;font-weight:500;color:var(--text);background:var(--byp-gray-150);border-radius:var(--r-pill);padding:2px 8px}
.tl-item.is-atrasado .tl-name{color:var(--danger-text)}
.tl-item.is-atrasado .tl-go{background:#fff8f9}
.tl-item.is-atrasado .tl-go:hover{background:#ffeef1}
.tl-item.is-proxima .tl-go{background:var(--warn-bg);box-shadow:inset 0 0 0 1px #f7dfa1}
.tl-ambar{color:var(--warn-text);font-weight:500}
.tl-state{display:flex;justify-content:flex-end;min-width:96px}
.is-destacado{animation:destacar 1.6s var(--ease)}
@keyframes destacar{0%,40%{background:var(--warn-bg);box-shadow:0 0 0 6px var(--warn-bg)}100%{background:transparent;box-shadow:0 0 0 6px transparent}}
@media (max-width:640px){
  .tl-item{grid-template-columns:28px minmax(0,1fr);gap:8px}
  .tl-mk{width:28px;height:28px;font-size:13px}
  .tl-item:not(:last-child)::after{left:13px}
  .tl-state{grid-column:2;justify-content:flex-start;min-width:0;padding-left:10px;margin-top:-4px}
  .tl-sel-btn{flex:1 1 100%}
}

/* Calendario: entrega de mercadería y fechas reales */
.ev-entrega{background:var(--warn-bg);color:var(--warn-text);border-color:#f0cf7a}
.ev-entrega.is-proxima{background:var(--warn);color:#3d2a00;border-color:var(--warn)}
.cal-ev.is-real{box-shadow:inset 0 0 0 1.5px currentColor}
.cal-ev-inline{display:inline-block;width:auto;cursor:default}
.tl-ley-item{display:inline-flex;align-items:center;gap:6px;margin-right:10px}
.tl-ley-nota{flex-basis:100%;font-size:var(--fs-xs)}

/* ── Buscador ── */
.search-count{position:absolute;right:10px;font-size:12.5px;font-weight:500;color:var(--text-2);background:var(--byp-gray-100);border-radius:var(--r-pill);padding:3px 9px;pointer-events:none;white-space:nowrap}
.search-box input:has(+ .search-count:not([hidden])){padding-right:120px}
.match-tag{display:inline-flex;align-items:center;max-width:100%;margin-top:6px;padding:2px 8px;border-radius:var(--r-sm);background:var(--info-bg);color:var(--info-text);font-size:13px;font-weight:500;line-height:1.35;overflow-wrap:anywhere}
.search-box input::-webkit-search-cancel-button{display:none}
.flex-wrap{flex-wrap:wrap}

/* ── Importación de partidas: errores en ventana y avisos ── */
.dlg.imp-dialogo{width:100%}
.imp-resumen{margin:0 0 12px;color:var(--text);font-size:var(--fs-base);line-height:1.5}
.imp-scroll{max-height:min(48vh,420px);overflow-y:auto;overflow-x:hidden;border:1px solid var(--border);border-radius:var(--r-md)}
.imp-scroll .rtable thead th{position:sticky;top:0;z-index:1;background:var(--byp-gray-50)}
.imp-scroll .rtable tbody td{padding:10px 12px}
.imp-aviso{align-items:flex-start;margin:12px 16px 0}
.imp-aviso-cuerpo{flex:1;min-width:0;line-height:1.45}
.imp-aviso-cuerpo ul{margin:6px 0 0 18px;font-size:var(--fs-sm)}
.imp-aviso-cuerpo li+li{margin-top:4px}
@media (max-width:768px){
  .imp-scroll .rtable tbody td{padding:6px 0 6px calc(max(96px,34%) + 10px)}
  .imp-scroll .rtable tbody td:first-child{padding:0 0 8px}
  .imp-scroll .rtable tbody td:first-child::before{display:inline;position:static;width:auto;content:"Fila"}
}
.modal-actions{flex-wrap:wrap}
@media (max-width:640px){
  .modal-actions .btn{flex:1 1 auto;white-space:normal;height:auto;min-height:38px;padding-top:8px;padding-bottom:8px;line-height:1.25}
}

/* ── Etapa 5: sin desplazamiento horizontal y tipografías legibles ── */
/* Tablas de datos que llevan campos dentro de las celdas (Usuarios) */
.rtable input[type=text],.rtable select{min-width:0;width:100%;height:38px;padding:0 12px;border:1px solid var(--border);border-radius:var(--r-md);background-color:#fff;font-size:var(--fs-sm);transition:border-color var(--t-fast),box-shadow var(--t-fast)}
.rtable input[type=text]:hover,.rtable select:hover{border-color:var(--byp-gray-400)}
.rtable input[type=text]:focus,.rtable select:focus{outline:none;border-color:var(--byp-carbon);box-shadow:0 0 0 3px rgba(39,39,39,.12)}
.rtable.tabla-form tbody td{vertical-align:middle}
.rtable .switch-cell{flex-wrap:wrap}
.rtable td.num .btn,.rtable td.ctr .btn{max-width:100%}
.ua-nuevo{grid-template-columns:repeat(4,minmax(0,1fr))}
.ua-nuevo-acceso{min-height:40px;font-size:var(--fs-sm)}
@media (max-width:900px){ .ua-nuevo{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:640px){ .ua-nuevo{grid-template-columns:minmax(0,1fr)} }
.mt-4{margin-top:32px}
/* Reporte semanal: la tabla de vendedores usa el mismo diseño */
.rep-section .rtable thead th{background:transparent}
@media (min-width:769px){ .rep-section .rtable tbody td{padding:10px} }
.rep-main-btn{white-space:normal;height:auto;min-height:44px;padding:10px 16px;text-align:center;line-height:1.3}
/* Asignación de envíos (pestañas PM y COMEX) */
.assign-table{table-layout:fixed;width:100%}
.assign-table td{overflow-wrap:anywhere;vertical-align:middle}
.assign-table th.col-n{width:36px}
.assign-table th.col-cant{width:64px}
.assign-table th.col-env{width:min(190px,44%)}
.envio-item-sel{width:100%;max-width:100%;min-width:0;height:36px;font-size:var(--fs-xs)}
/* Calendario en móvil: el día de hoy se marca con círculo en vez de la etiqueta «Hoy» */
@media (max-width:620px){
  .stat-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .stat{padding:12px;gap:10px;align-items:flex-start}
  .stat-ico{width:34px;height:34px;flex:none}
  .cal-legend .cal-ev,.cal-ev-inline{font-size:12px;height:auto;padding:2px 8px;border-radius:var(--r-sm)}
  .cal-head .btn-label{display:none}
  .cal-head .btn{width:40px;padding:0}
  .cal-cell.is-today .cal-day::after{display:none}
  .cal-cell.is-today .cal-day{color:var(--byp-carbon);font-weight:700}
}

/* Pago del cliente: lista + porcentaje (el porcentaje queda gris y sin poder escribirse si no es «Anticipo») */
.pago-cliente{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.7fr);gap:8px;align-items:start}
.pago-cliente .field-error{grid-column:1/-1}
.input-suffix.is-disabled input{background:var(--byp-gray-100);color:var(--text-2);cursor:not-allowed;opacity:1}
.input-suffix.is-disabled .input-suffix-txt{opacity:.5}

/* Campana de novedades */
.bell-btn{position:relative;width:40px;height:40px;display:grid;place-items:center;color:#fff;border-radius:var(--r-md)}
.bell-btn:hover,.bell-btn[aria-expanded="true"]{background:rgba(255,255,255,.08)}
.bell-badge{position:absolute;top:3px;right:3px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#fff;color:var(--byp-carbon);font-size:12px;font-weight:700;line-height:18px;text-align:center}
.campana-panel{width:min(400px,92vw);right:0;left:auto}
.campana-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--border-soft)}
.campana-lista{max-height:min(70vh,520px);overflow-y:auto}
.campana-vacia{padding:28px 16px;text-align:center;color:var(--text-2);font-size:var(--fs-sm)}
.nov-item{display:flex;align-items:flex-start;gap:10px;width:100%;padding:12px 14px;text-align:left;color:var(--text-2);background:#fff;border-bottom:1px solid var(--border-soft)}
.nov-item:hover,.nov-item:focus-visible{background:var(--byp-gray-100)}
.nov-punto{flex:0 0 8px;height:8px;margin-top:6px;border-radius:50%;background:transparent}
.nov-cuerpo{display:flex;flex-direction:column;gap:2px;min-width:0}
.nov-texto{font-size:var(--fs-sm);line-height:1.35}
.nov-compra{font-size:13px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nov-hora{font-size:13px;color:var(--byp-gray-600)}
.nov-item.is-nueva{background:var(--byp-gray-100);color:var(--text)}
.nov-item.is-nueva .nov-texto{font-weight:600}
.nov-item.is-nueva .nov-punto{background:var(--byp-carbon)}
.nov-item.is-nueva:hover{background:#e8ebec}

/* Documentos adjuntos */
.docs-nuevos{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.doc-fila{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) auto;gap:12px;align-items:end}
.doc-fila .field-error{grid-column:auto}
.docs-box{display:flex;flex-direction:column;margin-bottom:14px}
.doc-item{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--border-soft)}
.doc-item:last-child{border-bottom:0}
.doc-ico{color:var(--text-2);margin-top:2px}
.doc-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.doc-nombre{align-self:flex-start;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;color:var(--text);text-decoration:underline;text-underline-offset:2px}
.doc-desc{font-size:var(--fs-sm);color:var(--text)}
.doc-meta{font-size:13px;color:var(--text-2)}
.docs-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) auto;gap:12px;align-items:end;padding-top:12px;border-top:1px dashed var(--border)}
@media (max-width:720px){.doc-fila,.docs-form{grid-template-columns:1fr}.doc-fila .row-del{justify-self:end}}
