/* Composición Dashboard aprobada del Bloque 1. */
/* ---------- KPI and dashboard ---------- */
.kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 12px;
}

.kpi-card {
  min-height: 112px;
  padding: 15px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 11px;
}

.kpi-card__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.kpi-card__label {
  color: var(--text-secondary);
  font-size: 10px;
  font-weight: 750;
}

.kpi-card__icon {
  width: 31px;
  height: 31px;
  display: grid;
  place-items: center;
  color: var(--primary);
  border-radius: 9px;
  background: var(--primary-soft);
}

.kpi-card__value {
  margin-top: 8px;
  font-size: 21px;
  line-height: 1.1;
  font-weight: 800;
  letter-spacing: -.025em;
  font-variant-numeric: tabular-nums;
}

.kpi-card__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 7px;
  color: var(--text-muted);
  font-size: 9px;
}

.positive { color: var(--success); font-weight: 750; }
.negative { color: var(--danger); font-weight: 750; }
.warning-text { color: var(--warning-strong); font-weight: 750; }

.dashboard-middle {
  display: grid;
  grid-template-columns: minmax(0, 1.65fr) minmax(310px, .82fr);
  gap: 14px;
  margin-top: 14px;
}

.dashboard-bottom {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(330px, .9fr);
  gap: 14px;
  margin-top: 14px;
}

.chart-card { height: 244px; }
.alert-card { height: 244px; }
.recent-card { height: 274px; }
.inventory-summary { height: 274px; }

.chart-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.chart-header h3 { margin: 0; font-size: 13px; }
.chart-header p { margin: 3px 0 0; color: var(--text-secondary); font-size: 9px; }

.chart-legend { display: flex; gap: 13px; color: var(--text-secondary); font-size: 9px; font-weight: 650; }
.legend-dot { display:inline-block; width:7px; height:7px; margin-right:5px; border-radius:50%; background:var(--primary); }
.legend-dot--cacao { background: var(--cacao); }

.bar-chart {
  height: 158px;
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  align-items: end;
  gap: 16px;
  padding: 8px 8px 21px;
  border-bottom: 1px solid var(--border);
  background-image: linear-gradient(to bottom, transparent 24%, rgba(227,231,226,.7) 25%, transparent 26%, transparent 49%, rgba(227,231,226,.7) 50%, transparent 51%, transparent 74%, rgba(227,231,226,.7) 75%, transparent 76%);
}

.bar-pair {
  position: relative;
  height: 100%;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 5px;
}

.bar-pair::after {
  content: attr(data-label);
  position: absolute;
  left: 50%;
  bottom: -18px;
  color: var(--text-muted);
  transform: translateX(-50%);
  font-size: 8px;
}

.bar {
  width: 12px;
  min-height: 8px;
  border-radius: 4px 4px 1px 1px;
  background: var(--primary);
}
.bar--cacao { background: var(--cacao); opacity: .86; }

.compact-alerts { display: grid; gap: 8px; }
.compact-alert {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px;
  border-radius: 9px;
  background: var(--surface-subtle);
}
.compact-alert__icon {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  color: var(--warning-strong);
  border-radius: 8px;
  background: var(--warning-soft);
}
.compact-alert__title { font-size: 10px; font-weight: 750; }
.compact-alert__meta { margin-top: 2px; color: var(--text-muted); font-size: 8px; }

.mini-table { width:100%; border-collapse:collapse; table-layout:fixed; }
.mini-table th,
.mini-table td { padding: 9px 10px; border-bottom:1px solid var(--border); text-align:left; }
.mini-table th { color:var(--text-secondary); background:#FAFBFA; font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.035em; }
.mini-table td { font-size:10px; }
.mini-table tbody tr:last-child td { border-bottom:0; }
.mini-table .numeric { text-align:right; font-variant-numeric:tabular-nums; }

.inventory-lines { display:grid; gap:10px; }
.inventory-line__head { display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:10px; }
.inventory-line__head strong { font-size:11px; }
.inventory-line__bar { height:6px; margin-top:6px; overflow:hidden; border-radius:var(--radius-pill); background:var(--surface-subtle); }
.inventory-line__fill { height:100%; border-radius:inherit; background:var(--primary); }
.inventory-line__fill--cacao { background:var(--cacao); }
.inventory-line__fill--coffee { background:var(--coffee); }
.inventory-line__fill--corn { background:var(--corn); }

.featured-mini {
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:12px;
  padding:11px;
  border:1px solid #ECDDAE;
  border-radius:10px;
  background:var(--gold-soft);
}
.featured-mini__avatar { width:34px;height:34px;display:grid;place-items:center;flex:0 0 auto;border-radius:9px;color:var(--gold-dark);background:#F2D98C;font-size:11px;font-weight:800; }
.featured-mini__name { font-size:10px;font-weight:800; }
.featured-mini__meta { margin-top:2px;color:var(--gold-dark);font-size:8px; }


.kpi-grid--five {grid-template-columns:repeat(5,minmax(0,1fr));}
.kpi-grid--five .kpi-card__value {font-size:20px;}
.module-body {display:grid;gap:14px;}
.module-grid {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;}
.module-grid h3 {margin:0 0 8px;font-size:14px;}
.module-grid p {font-size:12px;color:var(--text-secondary);}
.module-grid .btn {margin-top:12px;}
.demo-label {color:var(--text-muted);font-size:10px;}
.settings-panel {max-width:800px;}
.settings-panel p {font-size:13px;color:var(--text-secondary);}
.settings-panel .btn {margin-top:12px;}
.page-heading__actions {flex-wrap:wrap;justify-content:flex-end;}
.mini-table td {overflow-wrap:anywhere;}
.recent-card,.inventory-summary {height:auto;min-height:294px;}
.inventory-line__fill--achiote {background:var(--achiote);}
.module-body > .filter-card {margin-bottom:0;}
@media(max-width:1250px) {.kpi-grid--five {grid-template-columns:repeat(3,minmax(0,1fr));}.dashboard-middle,.dashboard-bottom {grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);}.module-grid {grid-template-columns:repeat(2,minmax(0,1fr));}}

/* Etapa 1: composición de formularios y boleta, extraída de Bloques 1 y 4. */
.purchase-layout {
  display:grid;
  grid-template-columns:minmax(0,1.67fr) minmax(330px,.82fr);
  gap:15px;
}

.purchase-form-card { height:662px; }
.purchase-summary-card { height:662px; }
.purchase-section { padding:15px 17px; }
.purchase-section + .purchase-section { border-top:1px solid var(--border); }


.summary-panel { padding:17px; }
.summary-product { display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--border); }
.summary-product__title { font-size:13px;font-weight:800; }
.summary-product__meta { margin-top:3px;color:var(--text-secondary);font-size:10px; }
.summary-lines { display:grid;gap:11px;padding:15px 0;border-bottom:1px solid var(--border); }
.summary-line { display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-secondary);font-size:11px; }
.summary-line strong { color:var(--text-primary);font-weight:750;font-variant-numeric:tabular-nums; }
.summary-total { display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:16px 0; }
.summary-total__label { color:var(--text-secondary);font-size:10px;font-weight:700; }
.summary-total__value { margin-top:4px;font-size:26px;font-weight:850;letter-spacing:-.03em;font-variant-numeric:tabular-nums; }
.summary-balance { padding:11px 12px;border-radius:9px;background:var(--primary-soft); }
.summary-balance__line { display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--primary-dark);font-size:10px; }
.summary-actions { display:grid;gap:8px;margin-top:14px; }
.summary-actions .btn { width:100%; }
.print-check { display:flex;align-items:center;gap:8px;justify-content:center;margin-top:10px;color:var(--text-secondary);font-size:9px; }


.thermal-ticket { width:360px;color:#111;background:white;box-shadow:0 14px 38px rgba(20,28,22,.18);font-family:var(--font-sans);font-size:12px;line-height:1.35; }
.ticket-paper { padding:24px 22px 20px; }
.ticket-brand { text-align:center; }
.ticket-brand__mark { width:42px;height:42px;display:grid;place-items:center;margin:0 auto 8px;color:#111;border:2px solid #111;border-radius:10px; }
.ticket-brand h1 { margin:0;font-size:18px;letter-spacing:.02em;text-transform:uppercase; }
.ticket-brand p { margin:3px 0 0;font-size:9px; }
.ticket-divider { margin:14px 0;border:0;border-top:1px dashed #555; }
.ticket-title { text-align:center;font-size:11px;font-weight:850;letter-spacing:.08em;text-transform:uppercase; }
.ticket-number { margin-top:4px;text-align:center;font-size:16px;font-weight:850; }
.ticket-row { display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:4px 0; }
.ticket-row span { color:#333; }
.ticket-row strong { max-width:190px;text-align:right;font-weight:750;font-variant-numeric:tabular-nums; }
.ticket-product { margin:10px 0;padding:10px;border:1px solid #111; }
.ticket-product__name { font-size:14px;font-weight:850;text-transform:uppercase; }
.ticket-product__meta { margin-top:3px;font-size:10px; }
.ticket-total { display:flex;align-items:end;justify-content:space-between;gap:12px;margin-top:8px;padding-top:10px;border-top:2px solid #111; }
.ticket-total span { font-size:12px;font-weight:800;text-transform:uppercase; }
.ticket-total strong { font-size:22px;font-weight:900;font-variant-numeric:tabular-nums; }
.ticket-balance { margin-top:8px;padding:8px;border:1px solid #111; }
.ticket-message { margin-top:14px;text-align:center;font-size:9px; }
.ticket-footer { margin-top:12px;text-align:center;font-size:8px;letter-spacing:.04em; }

.operation-actions {display:flex;flex-wrap:wrap;gap:5px;}
.data-table .badge {max-width:100%;white-space:normal;text-align:center;}
.operation-check input,.operation-products input {accent-color:var(--primary);}
.operation-error {color:var(--danger);background:var(--danger-soft);padding:10px 12px;border-radius:var(--radius-md);font-size:12px;}
.operation-notice {padding:12px;border-radius:var(--radius-md);background:var(--primary-soft);color:var(--primary-dark);font-size:12px;}
.operation-fields {margin-top:12px;}
.operation-products {display:flex;flex-wrap:wrap;gap:12px;margin:14px 0;border:1px solid var(--border);border-radius:var(--radius-md);font-size:12px;}
.operation-check {display:flex;gap:8px;align-items:center;margin:12px 0;font-size:12px;}
summary {cursor:pointer;font-size:12px;font-weight:650;}
.summary-line strong {text-align:right;overflow-wrap:anywhere;}
.operation-receipt {margin:0 auto;}
.ticket-row strong {overflow-wrap:anywhere;}
@media(max-width:1200px) {.purchase-layout {grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);}}
