/* ============================================================
   Cuyaires Repartos — sistema de diseño del Control Center.
   Tokens y componentes portados de components/theme.tsx,
   kpi-card.tsx, sidebar.tsx y app/globals.css del CC v2.

   Sin build step: CSS custom properties puras, servido estático
   por Express. Compartido por login.html, asignar.html e historico.html.
   ============================================================ */

:root {
  /* Paleta de marca — idéntica en light y dark */
  --green:#1e9c35; --green-dark:#0e6b1e; --green-mid:#2ea83c; --green-light:#5dbb3c;
  --orange:#f5921e; --blue:#1454a8; --blue-dark:#0d3d7a;
  --red:#e03030; --yellow:#f5c518; --purple:#7c3aed;

  --r-sm:8px; --r-md:12px; --r-lg:16px; --r-pill:999px;
  --font:"Nunito",-apple-system,BlinkMacSystemFont,sans-serif;
  --sb-w:230px;
}

:root, [data-theme="light"] {
  --txt:#1a1a1a; --sub:#666; --muted:#999;
  --card-bg:#fff; --page-bg:#f2f7f2; --border:#eef2ee;
  --card-shadow:0 2px 12px #00000010;
  --sidebar-bg:#fff; --logo-txt:#0e6b1e; --track:#f0f4f0; --group-lbl:#a8b5a8;
  --field-bg:#fff; --row-hover:#1e9c350a; --inset:#fafcfa;
  /* Los colores de marca son para superficies grandes (fills, barras). Como
     TEXTO chico sobre su propio tinte al 10% varios no llegan a 4.5:1, así que
     los badges usan estas variantes oscurecidas. En dark se aclaran. */
  --remito:#8a6a08;
  --badge-blue:#1454a8;
  --badge-orange:#9a5b02;
  --badge-purple:#6b21c8;
  --badge-green:#177a29;
}

[data-theme="dark"] {
  --txt:#e8f5e9; --sub:#9ab89a; --muted:#7a9a7a;
  --card-bg:#1e2a1e; --page-bg:#0d1a0d; --border:#2a3a2a;
  --card-shadow:0 2px 12px #00000033;
  --sidebar-bg:#121f12; --logo-txt:#e8f5e9; --track:#2a3a2a; --group-lbl:#547a54;
  --field-bg:#151f15; --row-hover:#22302233; --inset:#17211a;
  --remito:#f5c518;
  --badge-blue:#7ba9e8;
  --badge-orange:#f5a742;
  --badge-purple:#b294f7;
  --badge-green:#4cc45f;
}

*{margin:0;padding:0;box-sizing:border-box}
html,body{min-height:100%}
body{font-family:var(--font);background:var(--page-bg);color:var(--txt);-webkit-font-smoothing:antialiased;transition:background .2s,color .2s}
button,input,select,textarea{font-family:inherit}
a{color:var(--green);text-decoration:none}
a:hover{color:var(--green-dark)}
.hidden{display:none!important}

/* Scrollbar fina y verde. NO usar scrollbar-width:thin — desactiva
   estos estilos en Chrome/Edge y vuelve la nativa de Windows. */
*::-webkit-scrollbar{width:8px;height:8px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:rgba(30,156,53,.35);border-radius:4px}
*::-webkit-scrollbar-thumb:hover{background:rgba(30,156,53,.6)}
*::-webkit-scrollbar-button{display:none;width:0;height:0}

/* ── Tipografía ── */
.t-h1{font-size:26px;font-weight:900;letter-spacing:-.02em;color:var(--txt)}
.t-h2{font-size:19px;font-weight:800;color:var(--txt)}
.t-kpi{font-size:28px;font-weight:800;color:var(--txt);line-height:1}
.t-label{font-size:12px;font-weight:600;color:var(--sub);text-transform:uppercase;letter-spacing:.06em}
.t-sub{font-size:13px;color:var(--sub)}
.t-hint{font-size:11px;color:var(--muted)}
.t-group{font-size:9px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--group-lbl)}
.t-mono{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:12.5px}
.t-remito{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:12.5px;color:var(--remito);font-weight:700}

/* ── Card ── */
.card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--card-shadow);padding:20px 22px}
.divider{height:1px;background:var(--border);border:none}

/* ── Botones ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 16px;border-radius:var(--r-sm);border:1px solid transparent;font-size:13px;font-weight:700;cursor:pointer;transition:filter .15s,background .15s,border-color .15s;white-space:nowrap}
.btn:hover:not(:disabled){filter:brightness(1.08)}
.btn:disabled{opacity:.45;cursor:not-allowed;filter:none}
.btn-primary{background:var(--green);color:#fff}
.btn-secondary{background:transparent;color:var(--txt);border-color:var(--border)}
.btn-secondary:hover:not(:disabled){border-color:var(--green);color:var(--green);filter:none}
.btn-ghost{background:transparent;color:var(--sub);border-color:transparent}
.btn-ghost:hover:not(:disabled){background:#1e9c3515;color:var(--green);filter:none}
.btn-danger{background:#e0303018;color:var(--red);border-color:#e0303030}
.btn-warn{background:#f5921e18;color:var(--orange);border-color:#f5921e30}
.btn-purple{background:var(--purple);color:#fff}
.btn-sm{padding:6px 11px;font-size:12px}

/* Chips de acción rápida */
.chiprow{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.qbtn{border:1px solid var(--border);background:transparent;color:var(--sub);border-radius:var(--r-pill);padding:6px 13px;font-size:12px;font-weight:700;cursor:pointer;transition:all .15s}
.qbtn:hover{border-color:var(--green);color:var(--green)}

/* ── Inputs ── */
.field{display:flex;flex-direction:column;gap:6px}
.field>label{font-size:12.5px;font-weight:700;color:var(--txt)}
.input{width:100%;padding:9px 12px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--field-bg);color:var(--txt);font-size:13px;outline:none;transition:border-color .15s,box-shadow .15s}
.input::placeholder{color:var(--muted)}
.input:focus{border-color:var(--green);box-shadow:0 0 0 3px #1e9c3522}
.input:disabled,.input[readonly]{background:var(--track);color:var(--muted);cursor:not-allowed}
.field .hint{font-size:11px;color:var(--muted)}
.req{color:var(--red)}
.search-wrap{position:relative;display:inline-flex;align-items:center}
.search-ic{position:absolute;left:11px;color:var(--muted);display:flex;pointer-events:none}

/* Segmented control — reemplaza los grupos de botones Turno / Repartidor / Tipo */
.segmented{display:inline-flex;background:var(--track);border-radius:var(--r-sm);padding:3px;gap:3px;flex-wrap:wrap}
.segmented button{padding:7px 16px;border:none;background:transparent;border-radius:6px;font-size:13px;font-weight:700;color:var(--sub);cursor:pointer;transition:all .15s}
.segmented button:hover:not([aria-pressed="true"]){color:var(--green)}
.segmented button[aria-pressed="true"]{background:var(--green);color:#fff;box-shadow:0 1px 4px #1e9c3540}
/* Variantes por semántica: el tipo de tarea manual pinta con su color */
.segmented button[aria-pressed="true"][data-tipo="COBRO"]{background:var(--purple);box-shadow:0 1px 4px #7c3aed40}
.segmented button[aria-pressed="true"][data-tipo="RETIRO"]{background:var(--green);box-shadow:0 1px 4px #1e9c3540}

/* ── Badges ── */
.badge{display:inline-block;padding:3px 9px;border-radius:var(--r-pill);font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.badge-fa{color:var(--badge-blue);background:#1454a81a}
/* FA-B y FA-E son facturas igual que FA-A (misma familia azul), pero poco
   habituales: el contorno las hace notar sin inventarles un color que no
   significaria nada. El texto del badge es el que dice cual es. */
.badge-fab,.badge-fae{color:var(--badge-blue);background:#1454a814;box-shadow:inset 0 0 0 1px #1454a850}
.badge-presu{color:var(--badge-orange);background:#f5921e1a}
.badge-cobro{color:var(--badge-purple);background:#7c3aed1a}
.badge-retiro{color:var(--badge-green);background:#1e9c351a}
.badge-remito{color:var(--remito);background:#f5c5181f}
.badge-off{color:var(--sub);background:#99999918}

/* ── Tabla ──
   color y font-size viven en la tabla, no en el td: así las utilidades
   (.t-sub, .t-mono, .num) aplicadas a una celda no pierden por especificidad. */
.tbl{width:100%;border-collapse:collapse;color:var(--txt);font-size:13px}
.tbl thead th{text-align:left;padding:9px 10px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--card-bg);z-index:1}
.tbl tbody td{padding:9px 10px;border-bottom:1px solid var(--border)}
.tbl tbody tr{transition:background .12s}
.tbl tbody tr:hover{background:var(--row-hover)}
.tbl tbody tr[aria-disabled="true"]{opacity:.45}
.tbl tbody tr.is-manual{background:#7c3aed0a}
.num{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.chk{width:18px;height:18px;accent-color:var(--green);cursor:pointer}
.rowinput{width:100%;padding:6px 9px;border-radius:6px;border:1px solid var(--border);background:var(--field-bg);color:var(--txt);font-size:12.5px;outline:none}
.rowinput:focus{border-color:var(--green);box-shadow:0 0 0 2px #1e9c3522}
.rowinput:disabled{background:var(--track);color:var(--muted)}
.rm{background:transparent;border:none;color:var(--red);cursor:pointer;padding:2px 5px;font-size:12px;line-height:1;border-radius:4px}
.rm:hover{background:#e0303018}

/* ── Shell + Sidebar ── */
.shell{display:flex;min-height:100vh;gap:16px;padding:16px}
.sidebar{width:var(--sb-w);flex-shrink:0;background:var(--sidebar-bg);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--card-shadow);position:sticky;top:16px;height:calc(100vh - 32px)}
.sb-logo{padding:18px 20px;display:flex;align-items:center;gap:10px;min-height:72px}
.sb-mark{width:42px;height:42px;border-radius:10px;flex-shrink:0;background:linear-gradient(135deg,var(--green),var(--green-dark));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:900;font-size:17px}
.sb-word{font-weight:900;font-size:14px;color:var(--logo-txt);letter-spacing:-.02em;line-height:1.1}
.sb-tag{font-size:9px;color:var(--green);font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.sb-nav{padding:8px;flex:1}
.sb-item{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:var(--r-sm);color:var(--sub);font-size:13px;font-weight:500;cursor:pointer;margin-bottom:1px;text-decoration:none;transition:all .15s}
.sb-item:hover{background:#1e9c3515;color:var(--sub)}
.sb-item[aria-current="page"]{background:var(--green);color:#fff;font-weight:700}
.sb-item[aria-current="page"]:hover{background:var(--green);color:#fff}
.sb-item svg.ic{opacity:.62}
.sb-item:hover svg.ic{opacity:.9}
.sb-item[aria-current="page"] svg.ic{opacity:1}
.sb-user{padding:14px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px}
.avatar{width:34px;height:34px;border-radius:50%;background:#1e9c3522;color:var(--green);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;flex-shrink:0}
.icon-btn{background:transparent;border:none;color:var(--sub);cursor:pointer;padding:6px;border-radius:var(--r-sm);display:flex}
.icon-btn:hover{background:#1e9c3515;color:var(--green)}

.main{flex:1;min-width:0;max-width:1180px;margin:0 auto;width:100%}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}
.toggle{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--card-bg);color:var(--txt);font-size:12.5px;font-weight:700;cursor:pointer}
.toggle:hover{border-color:var(--green)}
.toggle svg.ic{opacity:.8}
svg.ic{display:block;flex-shrink:0}

/* ── Stepper ── */
.stepper{display:flex;align-items:center;margin-bottom:22px;max-width:820px}
.step{display:flex;align-items:center;gap:11px}
.step .num{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;flex-shrink:0;border:2px solid var(--border);color:var(--muted);background:var(--card-bg);transition:all .2s}
.step.done .num{background:var(--green);border-color:var(--green);color:#fff}
.step.active .num{border-color:var(--green);color:var(--green);box-shadow:0 0 0 4px #1e9c3522}
.step .lbl{font-size:13px;font-weight:700;color:var(--muted);white-space:nowrap;transition:color .2s}
.step.active .lbl,.step.done .lbl{color:var(--txt)}
.step-line{flex:1;height:2px;background:var(--border);margin:0 16px;min-width:24px;border-radius:2px;transition:background .25s}
.step-line.done{background:var(--green)}

/* ── KPI ── */
.kpi{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:10px;transition:transform .15s,box-shadow .15s;animation:kpiPop .34s cubic-bezier(.22,1,.36,1) both}
.kpi:hover{transform:translateY(-2px);box-shadow:0 6px 22px #1e9c3520}
.kpi .val{display:flex;align-items:flex-end;gap:6px;min-width:0}
.kpi-ic{position:absolute;top:16px;right:16px;width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center}
/* El label nunca puede meterse debajo del icono absoluto */
.kpi>.t-label{padding-right:46px}
/* auto-fit en vez de repeat(3,1fr): con ventanas angostas baja a 2 columnas
   sola, en vez de apretar las cards hasta que un importe grande
   (ej: $114.776.151,35) se desborde. */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin-bottom:16px}

/* ── Barra de acción (pie del paso 2) ──
   sticky dentro de .main: se alinea sola con el ancho del contenido,
   sin depender del ancho de la sidebar. */
.actionbar{position:sticky;bottom:16px;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:0 -2px 16px #00000018;padding:14px 20px;margin-top:16px}
.actionbar .grp{display:flex;gap:30px;align-items:center}

/* ── Modal ── */
.overlay{position:fixed;inset:0;background:#00000052;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px}
.modal{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:0 18px 50px #00000030;max-width:520px;width:100%;padding:22px;max-height:calc(100vh - 48px);overflow:auto}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.x{background:transparent;border:none;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;padding:0 4px}
.x:hover{color:var(--txt)}
.autocomplete{position:absolute;top:100%;left:0;z-index:5;margin-top:4px;width:100%;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:0 8px 24px #00000022;overflow:hidden auto;max-height:220px}
.autocomplete div{padding:8px 12px;font-size:13px;cursor:pointer}
.autocomplete div:hover{background:var(--row-hover)}

/* ── Histórico: card por hoja ── */
.hoja{border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;margin-bottom:12px;background:var(--card-bg);transition:box-shadow .15s,border-color .15s}
.hoja:hover{border-color:#1e9c3545;box-shadow:0 3px 14px #00000010}
.hoja-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px;cursor:pointer}
.hoja-head:hover{background:var(--row-hover)}
.hoja-body{border-top:1px solid var(--border);background:var(--inset);padding:8px 18px 16px}
.hoja-body .tbl thead th{background:var(--inset)}
.caret{color:var(--muted);font-size:11px;transition:transform .15s;display:inline-block}
.caret.open{transform:rotate(90deg)}

/* ── Login ── */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{width:100%;max-width:360px;text-align:left}
.login-mark{width:52px;height:52px;border-radius:12px;background:linear-gradient(135deg,var(--green),var(--green-dark));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:900;font-size:22px;margin-bottom:18px}

/* ── Estados ── */
.state{text-align:center;padding:44px 20px;color:var(--sub);font-size:13.5px}
.state .icon{opacity:.35;margin-bottom:10px;display:flex;justify-content:center}
.alert{padding:11px 14px;border-radius:var(--r-sm);font-size:13px;border:1px solid #e0303030;background:#e0303012;color:var(--red)}
.done-mark{width:46px;height:46px;border-radius:50%;background:#1e9c351a;color:var(--green);display:flex;align-items:center;justify-content:center;flex-shrink:0}

/* ── Animaciones ── */
@keyframes sectionFade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes kpiPop{from{opacity:0;transform:scale(.96) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}
.section-enter{animation:sectionFade .3s cubic-bezier(.22,1,.36,1) both}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
