/* ═══════════════════════════════════════════════════════════════
   SMART NOVA — PRIMITIVAS DE MÓDULO
   Base compartida por Cotizaciones, Clientes, Proveedores,
   Reportes y Facturación DIAN. Todos usan el mismo esqueleto
   (header + KPIs + split + tablas), así que vive una sola vez.

   Lienzo 2560×1440. El marco y el escalado los aporta .lienzo.

     01 Base y estructura   05 Barras y gráficos
     02 Header              06 Cotizaciones
     03 KPIs                07 Clientes / Proveedores
     04 Tablas              08 Facturación DIAN
   ═══════════════════════════════════════════════════════════════ */

/* ─────────── 01 · BASE Y ESTRUCTURA ─────────── */
.snm{
  background:#06080c;
  --cyan:#00c8e0; --blue:#4d9bff; --violet:#a78bfa;
  --green:#22c55e; --orange:#fb923c; --red:#f87171; --yellow:#facc15;
  --panel:#0b0f16; --card:#111827;
  --line:rgba(255,255,255,.08);
  --t1:#eaf2ff; --t2:#8ea3bf; --t3:#6f83a0;
}
.snm-canvas{
  width:2560px;height:1440px;display:flex;
  font-family:"Inter",system-ui,sans-serif;color:var(--t1);background:#06080c;
}
.snm-mono{font-family:"JetBrains Mono",ui-monospace,monospace;}
.snm-main{flex:1;min-width:0;padding:44px 48px;display:flex;flex-direction:column;gap:32px;}
.snm-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;height:172px;flex:none;}
.snm-split{display:grid;gap:24px;flex:1;min-height:0;}
.snm-rows{display:flex;flex-direction:column;gap:32px;flex:1;min-height:0;}
.snm-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;flex:1;min-height:0;}

.snm-panel{
  background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:24px 26px;
  display:flex;flex-direction:column;overflow:hidden;box-shadow:0 18px 44px rgba(0,0,0,.35);min-width:0;
}
.snm-aside{
  border-radius:20px;padding:24px 26px;display:flex;flex-direction:column;gap:18px;overflow:hidden;min-width:0;
  background:linear-gradient(165deg,rgba(23,32,50,.72),rgba(11,15,22,.88));
  border:1px solid var(--line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  box-shadow:0 18px 44px rgba(0,0,0,.4);
}
.snm-panel-h{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;flex:none;}
.snm-panel-t{font-size:18px;font-weight:700;letter-spacing:-.02em;}
.snm-panel-s{font-size:12.5px;color:var(--t3);margin-top:4px;}
.snm-chip{font-size:12px;color:var(--t3);padding:5px 12px;border-radius:999px;
  background:rgba(255,255,255,.04);border:1px solid var(--line);white-space:nowrap;}

/* ─────────── 02 · HEADER ─────────── */
.snm-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex:none;}
.snm-title{display:flex;align-items:center;gap:14px;}
.snm-title h1{font-size:38px;font-weight:800;letter-spacing:-.03em;line-height:1;}
.snm-badge{
  display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:600;
  padding:6px 14px;border-radius:999px;color:#8fc0ff;
  background:rgba(77,155,255,.10);border:1px solid rgba(77,155,255,.28);
}
.snm-badge.ok{color:#7ee7a4;background:rgba(34,197,94,.10);border-color:rgba(34,197,94,.28);}
.snm-badge i{width:7px;height:7px;border-radius:50%;background:currentColor;display:block;}
.snm-sub{font-size:14px;color:var(--t3);margin-top:10px;}
.snm-actions{display:flex;align-items:center;gap:10px;flex:none;}
.snm-ctl{
  height:42px;padding:0 16px;border-radius:12px;background:var(--card);border:1px solid var(--line);
  display:flex;align-items:center;gap:9px;font-size:13px;color:var(--t2);font-weight:500;white-space:nowrap;
}
.snm-ctl.icon{width:42px;padding:0;justify-content:center;position:relative;}
.snm-dot{position:absolute;top:9px;right:10px;width:8px;height:8px;border-radius:50%;
  background:var(--orange);border:2px solid var(--card);}
.snm-cta{
  height:42px;padding:0 22px;border-radius:12px;display:flex;align-items:center;gap:9px;white-space:nowrap;
  font-size:13px;font-weight:700;color:#04121a;
  background:linear-gradient(135deg,var(--cyan),var(--blue));box-shadow:0 10px 26px rgba(0,140,220,.35);
}

/* ─────────── 03 · KPIs ─────────── */
.snm-kpi{
  background:var(--card);border:1px solid var(--line);border-radius:20px;padding:24px 26px;
  display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden;
}
.snm-kpi::after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--acc,transparent);opacity:.75;}
.snm-kpi-l{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--t2);font-weight:500;}
.snm-kpi-v{font-size:34px;font-weight:800;letter-spacing:-.03em;line-height:1;}
.snm-kpi-f{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;}
.snm-kpi-f span{color:var(--t3);font-weight:500;}
.snm-kpi-row{display:flex;align-items:center;justify-content:space-between;gap:16px;height:100%;}
.snm-kpi-col{display:flex;flex-direction:column;justify-content:space-between;height:100%;min-width:0;}

.snm-ring{width:92px;height:92px;border-radius:50%;position:relative;flex:none;
  background:conic-gradient(from -90deg,var(--cyan) 0turn,var(--blue) var(--pct,.6turn),rgba(255,255,255,.07) var(--pct,.6turn));}
.snm-ring::before{content:"";position:absolute;inset:10px;border-radius:50%;background:var(--card);}
.snm-ring b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:17px;font-weight:800;letter-spacing:-.02em;}

/* ─────────── 04 · TABLAS ─────────── */
.snm-filters{display:flex;gap:7px;}
.snm-filters span{font-size:11.5px;padding:6px 14px;border-radius:999px;color:var(--t2);
  background:var(--card);border:1px solid var(--line);white-space:nowrap;}
.snm-filters span.on{color:#04121a;font-weight:700;background:linear-gradient(135deg,var(--cyan),var(--blue));border-color:transparent;}

.snm-table{width:100%;border-collapse:collapse;flex:1;}
.snm-table th{
  text-align:left;font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--t3);padding:0 14px 12px;border-bottom:1px solid var(--line);white-space:nowrap;
}
.snm-table td{padding:11px 14px;font-size:13.5px;border-bottom:1px solid rgba(255,255,255,.04);vertical-align:middle;}
.snm-table tbody tr:nth-child(even){background:rgba(255,255,255,.015);}
.snm-table tbody tr.on{background:rgba(0,200,224,.06);box-shadow:inset 3px 0 0 var(--cyan);}
.snm-num{text-align:right;font-weight:700;white-space:nowrap;}
.snm-cli{display:flex;align-items:center;gap:12px;}
.snm-av{width:38px;height:38px;border-radius:11px;flex:none;display:flex;align-items:center;justify-content:center;
  font-size:12.5px;font-weight:700;}
.snm-cli-n{font-weight:600;color:var(--t1);}
.snm-cli-d{font-size:11.5px;color:var(--t3);margin-top:2px;}

.snm-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;
  padding:5px 12px;border-radius:999px;white-space:nowrap;}
.snm-pill i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block;}
.snm-pill.gris {color:#9fb0c6;background:rgba(255,255,255,.06);}
.snm-pill.azul {color:#8fc0ff;background:rgba(77,155,255,.12);}
.snm-pill.verde{color:#7ee7a4;background:rgba(34,197,94,.11);}
.snm-pill.naranja{color:#fdba74;background:rgba(251,146,60,.12);}
.snm-pill.roja {color:#fca5a5;background:rgba(248,113,113,.13);}
.snm-pill.violeta{color:#c4b1fd;background:rgba(167,139,250,.13);}
.snm-pill.cian {color:#7ee7f5;background:rgba(0,200,224,.12);}

.snm-act{font-size:12.5px;font-weight:600;color:var(--cyan);white-space:nowrap;}
.snm-pag{display:flex;align-items:center;justify-content:space-between;padding-top:16px;flex:none;
  font-size:12.5px;color:var(--t3);}
.snm-pages{display:flex;gap:6px;}
.snm-pages span{min-width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);background:var(--card);color:var(--t2);font-size:12.5px;}
.snm-pages span.on{background:linear-gradient(135deg,var(--cyan),var(--blue));color:#04121a;font-weight:700;border-color:transparent;}

/* ─────────── 05 · BARRAS Y GRÁFICOS ─────────── */
.snm-track{height:7px;border-radius:99px;background:rgba(255,255,255,.06);overflow:hidden;}
.snm-fill{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--cyan),var(--blue));}
.snm-bar-h{display:flex;align-items:baseline;justify-content:space-between;font-size:12.5px;color:var(--t2);margin-bottom:7px;}
.snm-bar-h b{color:var(--t1);font-weight:700;}
.snm-bars{display:flex;flex-direction:column;gap:14px;flex:1;min-height:0;justify-content:space-between;}

/* barras horizontales con etiqueta y monto */
.snm-hbar{display:flex;flex-direction:column;gap:7px;}
.snm-hbar-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:13px;}
.snm-hbar-h b{font-weight:700;white-space:nowrap;}
.snm-hbar-s{font-size:11.5px;color:var(--t3);margin-top:2px;}

/* columnas verticales */
.snm-cols{flex:1;min-height:0;display:flex;align-items:flex-end;gap:14px;}
.snm-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:9px;height:100%;}
.snm-col-v{font-size:12.5px;font-weight:700;}
.snm-col-b{width:100%;border-radius:9px 9px 4px 4px;}
.snm-col-l{font-size:11.5px;color:var(--t3);}

.snm-chart{flex:1;min-height:0;}
.snm-chart svg{width:100%;height:100%;display:block;}
.snm-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--t3);margin-top:10px;flex:none;}
/* Variante para gráficos de barras: una columna por barra, centrada.
   Con space-between las etiquetas se desalinean de las barras. */
.snm-axis.cols{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;text-align:center;}
.snm-legend{display:flex;flex-wrap:wrap;gap:10px 18px;font-size:11.5px;color:var(--t2);}
.snm-legend span{display:flex;align-items:center;gap:7px;}
.snm-legend i{width:9px;height:9px;border-radius:3px;display:block;}

/* filas etiqueta / valor */
.snm-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;
  border-bottom:1px solid rgba(255,255,255,.05);font-size:13px;}
.snm-row span{color:var(--t2);display:flex;align-items:center;gap:9px;}
.snm-row b{font-weight:700;white-space:nowrap;}
.snm-box{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;}
.snm-box-l{font-size:11px;color:var(--t3);}
.snm-box-v{font-size:19px;font-weight:800;letter-spacing:-.02em;margin-top:5px;}
.snm-grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;flex:none;}
.snm-tags{display:flex;flex-wrap:wrap;gap:8px;}
.snm-btn{
  height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:9px;
  font-size:13.5px;font-weight:700;color:#04121a;
  background:linear-gradient(135deg,var(--cyan),var(--blue));box-shadow:0 10px 26px rgba(0,140,220,.32);
}
.snm-btn.ghost{background:none;border:1px solid var(--line);color:var(--t1);box-shadow:none;}

/* ─────────── 06 · COTIZACIONES ─────────── */
.snm-funnel{display:flex;flex-direction:column;gap:13px;flex:none;}
.snm-fn{display:flex;flex-direction:column;gap:6px;}
.snm-fn-h{display:flex;align-items:baseline;justify-content:space-between;font-size:12.5px;color:var(--t2);}
.snm-fn-h b{font-size:15px;font-weight:800;color:var(--t1);}
.snm-fn-b{height:26px;border-radius:8px;}
.snm-prev{border-radius:16px;padding:18px;flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;
  background:linear-gradient(150deg,rgba(0,200,224,.09),rgba(77,155,255,.05));
  border:1px solid rgba(0,200,224,.22);overflow:hidden;}
.snm-prev-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.snm-prev-t{font-size:15px;font-weight:700;}
.snm-prev-d{font-size:11.5px;color:var(--t2);margin-top:3px;}
.snm-li{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12.5px;
  padding:8px 0;border-bottom:1px solid rgba(255,255,255,.06);}
.snm-li-n{color:var(--t1);}
.snm-li-q{color:var(--t3);font-size:11px;margin-top:2px;}
.snm-tot{display:flex;justify-content:space-between;font-size:12.5px;color:var(--t2);}
.snm-tot.big{align-items:baseline;margin-top:6px;}
.snm-tot.big span:first-child{font-size:14px;font-weight:600;color:var(--t1);}
.snm-tot.big span:last-child{font-size:24px;font-weight:800;letter-spacing:-.02em;color:var(--t1);}

/* ─────────── 07 · CLIENTES / PROVEEDORES ─────────── */
.snm-prof-top{display:flex;align-items:center;gap:14px;flex:none;}
.snm-prof-n{font-size:18px;font-weight:700;letter-spacing:-.02em;}
.snm-prof-d{font-size:12px;color:var(--t3);margin-top:4px;}
.snm-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;flex:none;}
.snm-stat{text-align:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 10px;}
.snm-stat b{display:block;font-size:19px;font-weight:800;letter-spacing:-.02em;}
.snm-stat span{display:block;font-size:11px;color:var(--t3);margin-top:5px;}
.snm-hist{display:flex;flex-direction:column;gap:11px;flex:1;min-height:0;overflow:hidden;}
.snm-hist-r{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12.5px;}
.snm-hist-d{font-size:11px;color:var(--t3);margin-top:2px;}
.snm-score{font-weight:800;font-size:14px;}
.snm-btns{display:flex;gap:10px;flex:none;}
.snm-btns > *{flex:1;}

/* ─────────── 08 · FACTURACIÓN DIAN ─────────── */
.snm-estados{display:grid;grid-template-columns:repeat(4,1fr) 1.5fr;gap:20px;height:196px;flex:none;}
.snm-res{background:var(--card);border:1px solid rgba(0,200,224,.22);border-radius:20px;padding:22px 24px;
  display:flex;flex-direction:column;gap:10px;}
.snm-res-t{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);
  display:flex;align-items:center;gap:8px;}
.snm-res-g{display:grid;grid-template-columns:1fr 1fr;gap:6px 18px;font-size:12px;}
.snm-res-g span{color:var(--t3);}
.snm-res-g b{font-weight:600;}
.snm-cufe{background:#06080c;border:1px solid var(--line);border-radius:14px;padding:16px;flex:none;}
.snm-cufe-t{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);}
.snm-barcode{display:flex;align-items:flex-end;gap:1.6px;height:44px;margin:12px 0 10px;}
.snm-barcode i{background:#c9d8ee;display:block;height:100%;}
.snm-hash{font-size:10.5px;line-height:1.7;color:var(--t2);word-break:break-all;}
.snm-part{display:grid;grid-template-columns:1fr 1fr;gap:14px;flex:none;}
.snm-part-b{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;}
.snm-part-l{font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--t3);}
.snm-part-n{font-size:13.5px;font-weight:600;margin-top:7px;}
.snm-part-d{font-size:11.5px;color:var(--t3);margin-top:3px;}
