/* ==========================================================================
   EasyPay Mechanics — panel del taller
   Paleta: solo azul y blanco. Temas claro y oscuro completos.
   ========================================================================== */

:root{
  /* --- marca (constante en ambos temas) --- */
  --navy:#0f1138;
  --brand:#3a40a8;
  --brand-2:#4a52c8;
  --brand-3:#6d76e8;
  --brand-4:#8f97ff;
  --on-brand:#ffffff;

  --ok:#16a34a; --ok-soft:rgba(22,163,74,.14);
  --warn:#c98a12; --warn-soft:rgba(201,138,18,.13);
  --bad:#dc4444; --bad-soft:rgba(220,68,68,.13);
  --info:#3b82f6;

  --sb:264px;
  --r:12px;
  --r-sm:8px;
  --ease:cubic-bezier(.22,1,.36,1);

  /* --- tema CLARO --- */
  --bg:#eef1fa;
  --surface:#ffffff;
  --surface-2:#f6f8fd;
  --surface-3:#eaeefb;
  --line:#dfe4f4;
  --line-2:#c8cfe8;
  --txt:#111536;
  --txt-2:#525a80;
  --txt-3:#8b92b8;
  --accent:#3a40a8;
  --accent-soft:rgba(58,64,168,.09);
  --shadow-sm:0 1px 2px rgba(15,17,56,.06),0 2px 8px rgba(15,17,56,.05);
  --shadow:0 4px 12px rgba(15,17,56,.07),0 12px 32px rgba(15,17,56,.07);
  --shadow-lg:0 24px 70px rgba(15,17,56,.18);
  --sb-bg:#12153f;
  --sb-txt:#eceffb;
  --sb-txt-2:#9aa1cf;
  --sb-line:rgba(255,255,255,.09);
  --sb-hover:rgba(255,255,255,.07);
  --sb-active:rgba(109,118,232,.22);
  color-scheme:light;
}

[data-theme="dark"]{
  --bg:#080b1e;
  --surface:#111634;
  --surface-2:#161c40;
  --surface-3:#1c2350;
  --line:#252d5c;
  --line-2:#333c75;
  --txt:#e9ecfa;
  --txt-2:#a8afdd;
  --txt-3:#767ea8;
  --accent:#8f97ff;
  --accent-soft:rgba(143,151,255,.14);
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow:0 4px 12px rgba(0,0,0,.35),0 12px 32px rgba(0,0,0,.35);
  --shadow-lg:0 24px 70px rgba(0,0,0,.6);
  --sb-bg:#0a0d24;
  --sb-txt:#e9ecfa;
  --sb-txt-2:#8e96c4;
  --sb-line:rgba(255,255,255,.07);
  --sb-hover:rgba(255,255,255,.05);
  --sb-active:rgba(109,118,232,.2);
  color-scheme:dark;
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font:400 14px/1.55 'Manrope',system-ui,-apple-system,'Segoe UI',sans-serif;
  background:var(--bg);color:var(--txt);-webkit-font-smoothing:antialiased;
  transition:background .3s var(--ease),color .3s var(--ease);
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.icon{width:1em;height:1em;fill:currentColor;flex:none;vertical-align:-.13em}
h1,h2,h3,h4{font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;letter-spacing:-.01em;font-weight:800;line-height:1}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:8px;border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:var(--txt-3)}
::selection{background:var(--brand-2);color:#fff}

/* =============================== LOGIN ============================== */
.login-wrap{
  min-height:100vh;display:grid;place-items:center;padding:24px;
  background:
    radial-gradient(900px 500px at 15% -10%,rgba(74,82,200,.30),transparent 60%),
    radial-gradient(700px 400px at 100% 110%,rgba(58,64,168,.24),transparent 60%),
    var(--navy);
}
.login{
  width:min(430px,100%);background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow-lg);overflow:hidden;
}
.login-hd{padding:28px 32px 24px;background:var(--navy);position:relative;overflow:hidden}
.login-hd::after{
  content:"";position:absolute;right:-80px;top:-120px;width:280px;height:280px;
  border:46px solid var(--brand);transform:rotate(35deg);opacity:.85;
}
.login-hd img{height:42px;margin-bottom:16px;position:relative}
.login-hd h1{font-size:1.9rem;color:#fff;position:relative}
.login-hd p{color:#9aa1cf;font-size:.83rem;margin-top:6px;position:relative}
.login-bd{padding:26px 32px 30px}

/* =============================== LAYOUT ============================= */
.app{display:none;min-height:100vh;grid-template-columns:var(--sb) 1fr}
.app.on{display:grid}

.sidebar{
  background:var(--sb-bg);color:var(--sb-txt);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;z-index:60;
}
.sb-brand{padding:22px 22px 18px;display:flex;align-items:center;gap:11px;border-bottom:1px solid var(--sb-line)}
.sb-brand img{height:36px}
.sb-nav{padding:16px 12px;display:grid;gap:3px;flex:1;align-content:start}
.sb-cap{
  font:800 .62rem/1 'Manrope',sans-serif;letter-spacing:.15em;text-transform:uppercase;
  color:var(--sb-txt-2);opacity:.7;padding:14px 13px 7px;
}
.sb-nav button{
  display:flex;align-items:center;gap:12px;width:100%;padding:11px 13px;background:transparent;border:0;
  color:var(--sb-txt-2);font:700 .82rem/1 'Manrope',sans-serif;cursor:pointer;text-align:left;
  border-radius:var(--r-sm);transition:.18s var(--ease);position:relative;
}
.sb-nav button .icon{width:17px;height:17px}
.sb-nav button:hover{background:var(--sb-hover);color:var(--sb-txt)}
.sb-nav button.on{background:var(--sb-active);color:#fff}
.sb-nav button.on::before{
  content:"";position:absolute;left:-12px;top:9px;bottom:9px;width:3px;
  background:var(--brand-4);border-radius:0 3px 3px 0;
}
.sb-nav .pill{
  margin-left:auto;background:var(--brand-3);color:#fff;font-size:.66rem;font-weight:900;
  padding:3px 8px;border-radius:20px;min-width:22px;text-align:center;
}
.sb-foot{padding:16px;border-top:1px solid var(--sb-line);display:flex;align-items:center;gap:11px}
.sb-avatar{
  width:36px;height:36px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand-2),var(--brand-4));color:#fff;
  font:800 .85rem/1 'Manrope',sans-serif;
}
.sb-who{min-width:0;flex:1}
.sb-who b{display:block;font-size:.83rem;color:var(--sb-txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sb-who span{font-size:.72rem;color:var(--sb-txt-2)}
.sb-foot button{
  background:transparent;border:1px solid var(--sb-line);color:var(--sb-txt-2);cursor:pointer;
  width:32px;height:32px;border-radius:var(--r-sm);display:grid;place-items:center;transition:.18s;flex:none;
}
.sb-foot button:hover{background:var(--bad);border-color:var(--bad);color:#fff}

.main{min-width:0;display:flex;flex-direction:column}
.topbar{
  display:flex;align-items:center;gap:12px;padding:14px 26px;
  border-bottom:1px solid var(--line);background:var(--surface);
  position:sticky;top:0;z-index:50;
}
.topbar h2{font-size:1.6rem}
.topbar .grow{flex:1}
.content{padding:24px 26px 40px;flex:1;min-width:0}

/* =============================== PIEZAS ============================= */
.card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-sm);overflow:hidden;
}
.card-hd{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.card-hd h3{font-size:1.2rem}
.card-hd .grow{flex:1}
.card-bd{padding:20px}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;
  border:1px solid transparent;cursor:pointer;border-radius:var(--r-sm);
  font:800 .75rem/1 'Manrope',sans-serif;letter-spacing:.05em;text-transform:uppercase;
  transition:.2s var(--ease);white-space:nowrap;text-decoration:none;
}
.btn:hover{text-decoration:none;transform:translateY(-1px)}
.btn:active{transform:none}
.btn .icon{width:15px;height:15px}
.btn-primary{background:var(--brand-2);color:#fff;box-shadow:0 2px 8px rgba(74,82,200,.32)}
.btn-primary:hover{background:var(--brand-3);box-shadow:0 5px 16px rgba(74,82,200,.4)}
.btn-ghost{background:var(--surface-2);color:var(--txt-2);border-color:var(--line-2)}
.btn-ghost:hover{background:var(--surface-3);color:var(--txt);border-color:var(--brand-3)}
.btn-ok{background:var(--ok);color:#fff}
.btn-bad{background:transparent;color:var(--bad);border-color:var(--bad-soft)}
.btn-bad:hover{background:var(--bad);color:#fff;border-color:var(--bad)}
.btn-wa{background:#25D366;color:#06331a}
.btn-wa:hover{background:#1fbe5b}
.btn-sm{padding:7px 12px;font-size:.68rem;border-radius:6px}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}

label.lbl{
  display:block;font:800 .66rem/1 'Manrope',sans-serif;letter-spacing:.09em;
  text-transform:uppercase;color:var(--txt-3);margin-bottom:7px;
}
input,select,textarea{
  width:100%;padding:10px 12px;background:var(--surface-2);border:1px solid var(--line-2);
  color:var(--txt);font:inherit;font-size:.86rem;border-radius:var(--r-sm);transition:.18s;
}
input::placeholder,textarea::placeholder{color:var(--txt-3)}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--brand-3);background:var(--surface);
  box-shadow:0 0 0 3px var(--accent-soft);
}
textarea{min-height:100px;resize:vertical;font-family:inherit;line-height:1.6}
select{
  appearance:none;cursor:pointer;padding-right:32px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%238b92b8'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 8px center;background-size:18px;
}
input[type=checkbox]{width:auto;accent-color:var(--brand-2)}
.field{margin-bottom:15px}
.row{display:grid;gap:13px}
.row.c2{grid-template-columns:1fr 1fr}
.row.c3{grid-template-columns:repeat(3,1fr)}
.row.c4{grid-template-columns:repeat(4,1fr)}
.hint{font-size:.74rem;color:var(--txt-3);margin-top:6px;line-height:1.5}

/* --- interruptor de tema --- */
.theme-btn{
  width:38px;height:38px;display:grid;place-items:center;cursor:pointer;border-radius:var(--r-sm);
  background:var(--surface-2);border:1px solid var(--line-2);color:var(--txt-2);transition:.2s var(--ease);
}
.theme-btn:hover{background:var(--surface-3);color:var(--accent);border-color:var(--brand-3)}
.theme-btn svg{width:17px;height:17px}
.theme-btn .i-sol{display:none}
[data-theme="dark"] .theme-btn .i-sol{display:block}
[data-theme="dark"] .theme-btn .i-luna{display:none}

/* ------------------------------- KPIs ------------------------------ */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:14px;margin-bottom:20px}
.kpi{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:18px 20px;position:relative;overflow:hidden;box-shadow:var(--shadow-sm);
  transition:.24s var(--ease);
}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand-3);opacity:.55}
.kpi .l{
  font:800 .65rem/1 'Manrope',sans-serif;letter-spacing:.1em;text-transform:uppercase;
  color:var(--txt-3);margin-bottom:12px;display:flex;align-items:center;gap:8px;
}
.kpi .l .icon{width:14px;height:14px;color:var(--accent)}
.kpi .v{font-family:'Barlow Condensed',sans-serif;font-size:2.6rem;line-height:.85;font-weight:800;color:var(--txt)}
.kpi .s{font-size:.75rem;color:var(--txt-2);margin-top:8px;line-height:1.45}
.kpi.alert{border-color:var(--brand-3)}
.kpi.alert::before{background:var(--brand-2);opacity:1;width:4px}
.kpi.alert .v{color:var(--accent)}

/* ------------------------------ tablas ----------------------------- */
.tbl-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.84rem}
th{
  text-align:left;padding:12px 15px;background:var(--surface-2);border-bottom:1px solid var(--line);
  font:800 .64rem/1 'Manrope',sans-serif;letter-spacing:.1em;text-transform:uppercase;
  color:var(--txt-3);white-space:nowrap;
}
td{padding:13px 15px;border-bottom:1px solid var(--line);vertical-align:middle}
tbody tr{transition:.14s;cursor:pointer}
tbody tr:hover{background:var(--surface-2)}
tbody tr:last-child td{border-bottom:0}
tbody tr.nueva td:first-child{box-shadow:inset 3px 0 0 var(--brand-2)}
td .sub{color:var(--txt-3);font-size:.75rem;margin-top:3px}
th.num,td.num{text-align:right;font-variant-numeric:tabular-nums}
.folio{font-family:'Barlow Condensed',sans-serif;font-size:1.1rem;letter-spacing:.04em;font-weight:700;color:var(--txt)}
.vacio{padding:56px 20px;text-align:center;color:var(--txt-3)}
.vacio .icon{width:40px;height:40px;opacity:.35;margin-bottom:12px}

.badge{
  display:inline-flex;align-items:center;gap:6px;padding:4px 11px;font-size:.68rem;font-weight:800;
  letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;border:1px solid;border-radius:20px;
}
.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}
.prio{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--bad);margin-right:7px}

.filtros{display:flex;gap:11px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}
.filtros .field{margin:0;min-width:135px}
.filtros .buscar{flex:1;min-width:230px}
.paginacion{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 20px;border-top:1px solid var(--line);flex-wrap:wrap;
}
.paginacion span{font-size:.79rem;color:var(--txt-2)}

/* ------------------------------ gráfica ---------------------------- */
.chart{width:100%;height:150px;display:block}
.chart .bar{fill:var(--brand-3);opacity:.85;transition:.2s}
.chart .bar:hover{opacity:1;fill:var(--brand-2)}

.dist{display:grid;gap:11px}
.dist-row{display:grid;grid-template-columns:130px 1fr 46px;align-items:center;gap:12px;font-size:.79rem}
.dist-bar{height:9px;background:var(--surface-3);overflow:hidden;border-radius:20px}
.dist-bar i{display:block;height:100%;background:var(--brand-3);border-radius:20px;transition:width .5s var(--ease)}
.dist-row b{text-align:right;font-variant-numeric:tabular-nums;color:var(--txt-2)}

/* ============================== DETALLE ============================= */
.drawer{
  position:fixed;inset:0;z-index:200;background:rgba(6,8,24,.6);backdrop-filter:blur(6px);
  opacity:0;visibility:hidden;transition:.26s var(--ease);
}
.drawer.on{opacity:1;visibility:visible}
.drawer-panel{
  position:absolute;top:0;right:0;bottom:0;width:min(1000px,100%);background:var(--bg);
  border-left:1px solid var(--line);display:flex;flex-direction:column;
  transform:translateX(100%);transition:.34s var(--ease);box-shadow:var(--shadow-lg);
}
.drawer.on .drawer-panel{transform:none}
.d-hd{
  padding:16px 22px;border-bottom:1px solid var(--line);background:var(--surface);
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;flex:none;
}
.d-hd h2{font-size:1.65rem}
.d-hd .grow{flex:1}
/* Columna flexible, NO grid: un ítem de grid con `overflow:hidden` (como .card)
   pierde su altura mínima automática y la fila se colapsa a la altura de los
   bordes. Con flex + `flex:0 0 auto` cada tarjeta conserva su alto real. */
.d-bd{overflow-y:auto;padding:20px 22px 40px;display:flex;flex-direction:column;gap:16px;flex:1;min-height:0}
.d-bd > *{flex:0 0 auto}
.d-close{
  background:var(--surface-2);border:1px solid var(--line-2);color:var(--txt-2);
  width:36px;height:36px;border-radius:var(--r-sm);cursor:pointer;display:grid;place-items:center;transition:.2s;
}
.d-close:hover{background:var(--brand-2);color:#fff;border-color:var(--brand-2)}

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.dl{display:grid;grid-template-columns:auto 1fr;gap:9px 16px;font-size:.85rem}
.dl dt{color:var(--txt-3);font-weight:800;font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;padding-top:3px}
.dl dd{color:var(--txt);word-break:break-word}
.acciones-cli{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.bloque-texto{
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:14px 16px;white-space:pre-wrap;font-size:.87rem;line-height:1.65;color:var(--txt);
}

.items{width:100%;font-size:.84rem}
.items th{background:transparent;padding:8px;font-size:.62rem}
.items td{padding:9px 8px;border-bottom:1px solid var(--line)}
.items tbody tr{cursor:default}
.items tbody tr:hover{background:transparent}
.items input,.items select{padding:8px 10px;font-size:.82rem}
.items .del{background:none;border:0;color:var(--txt-3);cursor:pointer;padding:5px;border-radius:5px;transition:.18s}
.items .del:hover{color:var(--bad);background:var(--bad-soft)}
.totales{margin-top:16px;border-top:1px solid var(--line);padding-top:15px;display:grid;gap:8px;font-size:.86rem}
.totales .t{display:flex;justify-content:space-between;gap:14px}
.totales .t span:last-child{font-variant-numeric:tabular-nums}
.totales .t.big{
  border-top:1px solid var(--line);padding-top:13px;margin-top:6px;
  font-size:1.05rem;font-weight:800;align-items:center;
}
.totales .t.big span:last-child{
  color:var(--accent);font-family:'Barlow Condensed',sans-serif;font-size:2rem;line-height:1;
}

.plantillas{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.plantillas button{
  display:inline-flex;align-items:center;gap:7px;
  background:var(--surface-2);border:1px solid var(--line-2);color:var(--txt-2);padding:8px 13px;
  font-size:.73rem;font-weight:800;cursor:pointer;border-radius:20px;transition:.18s var(--ease);
}
.plantillas button .icon{width:14px;height:14px}
.plantillas button:hover{border-color:var(--brand-3);color:var(--accent);background:var(--accent-soft)}

.hilo{display:grid;gap:11px}
.msg{
  border:1px solid var(--line);background:var(--surface-2);padding:14px 16px;
  border-radius:var(--r-sm);position:relative;border-left:3px solid var(--brand-3);
}
.msg.nota{border-left-color:var(--warn);background:var(--warn-soft)}
.msg.err{border-left-color:var(--bad);background:var(--bad-soft)}
.msg-hd{display:flex;gap:10px;align-items:center;margin-bottom:8px;font-size:.72rem;color:var(--txt-3);flex-wrap:wrap}
.msg-hd b{color:var(--txt);font-size:.79rem}
.msg-bd{
  font-size:.84rem;color:var(--txt-2);max-height:130px;overflow:hidden;
  position:relative;line-height:1.65;white-space:pre-wrap;
}
.msg-bd.abierto{max-height:none}
.msg-bd::after{content:"";position:absolute;left:0;right:0;bottom:0;height:34px;background:linear-gradient(transparent,var(--surface-2))}
.msg.nota .msg-bd::after,.msg.err .msg-bd::after{background:none}
.msg-bd.abierto::after{display:none}
.msg-mas{background:none;border:0;color:var(--accent);font-size:.73rem;font-weight:800;cursor:pointer;padding:7px 0 0}

/* =============================== TOASTS ============================= */
.toasts{position:fixed;right:20px;bottom:20px;z-index:600;display:grid;gap:10px;max-width:380px}
.toast{
  background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--info);
  padding:13px 17px;font-size:.84rem;border-radius:var(--r-sm);box-shadow:var(--shadow-lg);
  animation:tIn .32s var(--ease);color:var(--txt);
}
.toast.ok{border-left-color:var(--ok)}
.toast.bad{border-left-color:var(--bad)}
@keyframes tIn{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}

.cargando{display:grid;place-items:center;padding:64px;color:var(--txt-3)}
.spin{
  width:28px;height:28px;border:3px solid var(--line-2);border-top-color:var(--brand-3);
  border-radius:50%;animation:sp .8s linear infinite;
}
@keyframes sp{to{transform:rotate(360deg)}}

.tab-panel{display:none;animation:fadeUp .34s var(--ease)}
.tab-panel.on{display:block}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

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

/* ============================= RESPONSIVE =========================== */
.menu-btn{
  display:none;width:38px;height:38px;background:var(--surface-2);border:1px solid var(--line-2);
  color:var(--txt-2);cursor:pointer;border-radius:var(--r-sm);place-items:center;
}
.sb-tapa{display:none;position:fixed;inset:0;background:rgba(6,8,24,.5);z-index:55}
.sb-tapa.on{display:block}

@media(max-width:1150px){ .grid2{grid-template-columns:1fr} }
@media(max-width:900px){
  .app{grid-template-columns:1fr}
  .sidebar{
    position:fixed;left:0;top:0;bottom:0;width:var(--sb);height:100vh;
    transform:translateX(-100%);transition:.3s var(--ease);z-index:60;
  }
  .sidebar.on{transform:none;box-shadow:var(--shadow-lg)}
  .menu-btn{display:grid}
  .row.c3,.row.c4{grid-template-columns:1fr 1fr}
  .content{padding:16px 16px 40px}
  .topbar{padding:12px 16px}
  .d-bd{padding:16px 16px 40px}
}
@media(max-width:620px){
  .row.c2,.row.c3,.row.c4{grid-template-columns:1fr}
  .topbar h2{font-size:1.25rem}
  .kpi .v{font-size:2.1rem}
  .toasts{left:14px;right:14px;max-width:none}
  .dist-row{grid-template-columns:96px 1fr 38px}
}
@media print{
  .sidebar,.topbar,.d-hd,.toasts,.sb-tapa{display:none!important}
  body{background:#fff;color:#111}
}
