/* ===========================================================
   Centro X — Base para demos de SISTEMAS WEB (dashboards)
   Autocontenido. Cada sistema sobrescribe --brand/--accent.
   =========================================================== */
:root{
  --brand:#4f46e5; --brand-d:#4338ca; --accent:#4f46e5;
  --bg:#f4f6fb; --side:#0f172a; --side-2:#1e293b; --card:#ffffff;
  --ink:#0f172a; --muted:#64748b; --line:#e6eaf2;
  --ok:#16a34a; --ok-bg:#dcfce7; --warn:#d97706; --warn-bg:#fef3c7; --danger:#dc2626; --danger-bg:#fee2e2;
  --radius:14px; --head:'Space Grotesk',system-ui,sans-serif; --body:'Poppins',system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{overflow-x:hidden}
body{font-family:var(--body);background:var(--bg);color:var(--ink);overflow-x:hidden}
a{text-decoration:none;color:inherit} ul{list-style:none}
h1,h2,h3{font-family:var(--head)}

.demo-bar{background:#0e1114;color:#fff;font-size:.85rem;display:flex;gap:14px;justify-content:center;align-items:center;flex-wrap:wrap;padding:8px 16px;text-align:center}
.demo-bar strong{color:#fff}.demo-bar a{color:#bfead0;font-weight:700;white-space:nowrap}

.app{display:grid;grid-template-columns:248px 1fr;min-height:calc(100vh - 37px)}

/* Sidebar */
.side{background:var(--side);color:#cbd5e1;display:flex;flex-direction:column;padding:20px 16px}
.side .logo{display:flex;align-items:center;gap:10px;font-family:var(--head);font-weight:700;font-size:1.2rem;color:#fff;padding:6px 10px 20px}
.side .logo .mk{width:32px;height:32px;border-radius:9px;background:var(--brand);display:grid;place-items:center;color:#fff;font-size:1.1rem}
.navi{display:grid;gap:4px}
.navi a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;font-weight:500;font-size:.95rem;color:#94a3b8;transition:.15s}
.navi a .ic{width:20px;text-align:center}
.navi a:hover{background:var(--side-2);color:#fff}
.navi a.active{background:var(--brand);color:#fff}
.side-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--side-2);display:flex;align-items:center;gap:10px}
.side-foot .av{width:38px;height:38px;border-radius:50%;background:var(--brand);display:grid;place-items:center;color:#fff;font-weight:700}
.side-foot b{color:#fff;font-size:.9rem;display:block}
.side-foot span{color:#64748b;font-size:.78rem}

/* Main */
.main{display:flex;flex-direction:column;min-width:0}
.top{background:var(--card);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:16px;padding:16px 26px}
.top h1{font-size:1.3rem}
.top .sub{color:var(--muted);font-size:.85rem}
.search{margin-left:auto;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:9px 14px;color:var(--muted);font-size:.9rem;min-width:200px}
.btn{font-family:var(--head);font-weight:600;font-size:.9rem;padding:10px 18px;border-radius:10px;border:0;cursor:pointer;background:var(--brand);color:#fff}
.btn:hover{background:var(--brand-d)}
.btn-ghost{background:var(--card);border:1px solid var(--line);color:var(--ink)}

.content{padding:26px;display:grid;gap:22px}
.content>*, .grid2>*{min-width:0}

/* KPIs */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.kpi .lbl{color:var(--muted);font-size:.85rem;display:flex;align-items:center;gap:8px}
.kpi .lbl .ic{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:color-mix(in srgb,var(--brand) 12%,#fff);font-size:1rem}
.kpi .num{font-family:var(--head);font-weight:700;font-size:1.9rem;margin-top:12px}
.kpi .tr{font-size:.82rem;font-weight:600;margin-top:4px}
.tr.up{color:var(--ok)} .tr.down{color:var(--danger)}

.grid2{display:grid;grid-template-columns:1.4fr 1fr;gap:22px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px}
.panel-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.panel-h h3{font-size:1.05rem}
.panel-h a{color:var(--brand);font-weight:600;font-size:.85rem}

/* Chart de barras (CSS puro) */
.chart{display:flex;align-items:flex-end;gap:10px;height:180px;padding-top:10px}
.chart .bar{flex:1;background:color-mix(in srgb,var(--brand) 22%,#fff);border-radius:8px 8px 0 0;position:relative;min-height:6px}
.chart .bar.hi{background:var(--brand)}
.chart .bar span{position:absolute;bottom:-22px;left:0;right:0;text-align:center;font-size:.72rem;color:var(--muted)}

/* Lista simple */
.mini{display:grid;gap:12px}
.mini .row{display:flex;align-items:center;gap:12px}
.mini .row .ic{width:38px;height:38px;border-radius:10px;background:var(--bg);display:grid;place-items:center;font-size:1.1rem}
.mini .row .m{flex:1;min-width:0}
.mini .row .m b{font-size:.92rem;display:block}
.mini .row .m span{color:var(--muted);font-size:.8rem}
.mini .row .amt{font-family:var(--head);font-weight:700}

/* Tabla */
.table{width:100%;border-collapse:collapse}
.table th,.table td{padding:13px 12px;text-align:left;border-bottom:1px solid var(--line);font-size:.9rem}
.table th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}
.table tbody tr:hover{background:var(--bg)}
.table .who{display:flex;align-items:center;gap:10px}
.table .who .av{width:32px;height:32px;border-radius:50%;background:color-mix(in srgb,var(--brand) 18%,#fff);display:grid;place-items:center;font-weight:700;font-size:.8rem;color:var(--brand-d)}
.pill{font-size:.75rem;font-weight:700;padding:4px 10px;border-radius:999px}
.pill.ok{background:var(--ok-bg);color:var(--ok)}
.pill.warn{background:var(--warn-bg);color:var(--warn)}
.pill.danger{background:var(--danger-bg);color:var(--danger)}
.pill.info{background:#e0e7ff;color:#4338ca}

@media(max-width:1000px){ .kpis{grid-template-columns:repeat(2,1fr)} .grid2{grid-template-columns:1fr} }
@media(max-width:780px){
  .app{grid-template-columns:1fr}
  .side{flex-direction:row;flex-wrap:wrap;align-items:center;padding:12px}
  .side .logo{padding:0 10px 0 4px}
  .navi{display:flex;flex-wrap:wrap;margin-left:auto}
  .navi a{padding:8px 10px}.navi a span.tx{display:none}
  .side-foot{display:none}
  /* barra superior: se acomoda en móvil, buscador a fila completa */
  .top{flex-wrap:wrap;padding:14px 16px;gap:10px 12px}
  .top .btn{margin-left:auto}
  .search{order:3;width:100%;flex:1 1 100%;min-width:0;margin-left:0}
  .content{padding:16px;gap:16px}
  .kpis{gap:12px}
  .kpi{padding:16px}
  .kpi .num{font-size:1.6rem}
  .table-wrap{overflow-x:auto}
  .table{min-width:520px}
}
@media(max-width:420px){ .kpis{grid-template-columns:1fr} }

/* ===========================================================
   Ajustes de la auditoría de diseño (agosto 2026)
   -----------------------------------------------------------
   Común a los tres demos de sistemas. Nada de esto altera el
   layout: son iconos, cifras alineadas y estados de foco.
   =========================================================== */

/* Iconos SVG. Reemplazan a los emojis, que cambiaban de forma según
   el sistema operativo del que miraba el demo. */
.i{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.navi a .ic{width:20px;height:20px}
.kpi .lbl .ic .i{width:18px;height:18px;color:var(--brand)}
.kpi .lbl .ic-warn{background:var(--warn-bg)!important}
.kpi .lbl .ic-warn .i{color:var(--warn)}
.side .logo .mk .i{width:18px;height:18px;color:#fff}
.btn{display:inline-flex;align-items:center;gap:7px}

/* Cifras: sin ancho tabular los dígitos bailan de fila en fila y
   una tabla de stock deja de leerse en vertical. */
.kpi .num,.mini .amt,.table td.n,.table .sku-txt{font-variant-numeric:tabular-nums}
.table th.n,.table td.n{text-align:right}
.table .sku-txt{letter-spacing:.02em;color:var(--muted)}

/* Buscador: el icono va dentro del campo, no al costado. */
.search-wrap{margin-left:auto;position:relative;display:flex;align-items:center;min-width:200px}
.search-wrap .search-ic{position:absolute;left:11px;width:17px;height:17px;color:var(--muted);pointer-events:none}
.search-wrap .search{margin-left:0;width:100%;padding-left:34px}
.search::-webkit-search-cancel-button{cursor:pointer}

/* Foco visible: sin esto no se puede recorrer el panel con el teclado. */
:focus-visible{outline:2.5px solid color-mix(in srgb,var(--brand) 70%,#fff);outline-offset:2px;border-radius:8px}
.navi a:focus-visible{outline-offset:-2px}

/* Respuesta al clic: el botón se hunde un pixel, como algo físico. */
.btn:active{transform:translateY(1px)}
.navi a,.table tbody tr,.btn{transition:background .15s,color .15s,transform .12s}

@media(max-width:780px){ .search-wrap{order:3;width:100%;flex:1 1 100%;margin-left:0} }

@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}
