/* ═══════════════════════════════════════════════════════════════
 * module-polish.css — Polish visual de módulos específicos
 * v1.0 · 2026-05-23
 *
 * Mejora visual targeted de los módulos críticos sin tocar JS:
 *   - Presupuesto · tablas, capítulos, items
 *   - Bitácora · cards de entradas, galería
 *   - Compras · órdenes, proveedores
 *   - Inventario · items, stock indicators
 *   - APUs · cards, picker, biblioteca
 *   - Cronograma · barras Gantt, hover info
 *   - AIU · cuadro de cierre, totales
 *
 * Carga DESPUÉS de ui-enhancements.css.
 * ═══════════════════════════════════════════════════════════════ */

/* ═══ PRESUPUESTO ═══════════════════════════════════════════════ */
.budget-table th {
  background: linear-gradient(180deg, var(--surface) 0%, var(--bg) 100%);
  font-weight: 700;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--text3);
  padding: 10px 12px;
  position: sticky;
  top: 0;
  z-index: 5;
  backdrop-filter: blur(8px);
}
.budget-table td {
  padding: 8px 12px;
  transition: background 100ms ease;
}
.budget-table .chapter-row {
  background: linear-gradient(90deg, rgba(240,165,0,.08) 0%, transparent 100%);
  border-left: 3px solid var(--accent);
}
.budget-table .chapter-row td {
  font-weight: 700;
  color: var(--text);
  padding-top: 14px;
  padding-bottom: 14px;
}
.budget-table .total-row {
  background: linear-gradient(90deg, var(--surface2) 0%, var(--surface) 100%);
  border-top: 2px solid var(--accent);
  font-weight: 800;
}
.budget-table .total-row td {
  padding: 12px;
  font-size: 14px;
}

/* Botones de acción dentro de tabla (más sutiles) */
.budget-table .row-action {
  opacity: 0;
  transition: opacity 150ms ease;
}
.budget-table tr:hover .row-action { opacity: 1; }

/* ═══ APUs · biblioteca y picker ═══════════════════════════════ */
.apu-lib-row {
  border-radius: 8px;
  padding: 12px 14px;
  margin-bottom: 6px;
  border: 1px solid transparent;
  transition: all 180ms cubic-bezier(0.0, 0.0, 0.2, 1);
  cursor: pointer;
}
.apu-lib-row:hover {
  background: linear-gradient(90deg, rgba(240,165,0,.06) 0%, transparent 100%);
  border-color: rgba(240,165,0,.20);
  transform: translateX(2px);
}
.apu-option {
  padding: 10px 14px;
  border-radius: 6px;
  cursor: pointer;
  transition: all 120ms ease;
}
.apu-option:hover { background: rgba(240,165,0,.07); }
.apu-option.selected {
  background: rgba(240,165,0,.14);
  border-left: 3px solid var(--accent);
  font-weight: 600;
}

/* APU detail expansion */
.apu-detail-row {
  background: linear-gradient(180deg, var(--surface2) 0%, var(--surface) 100%);
  padding: 14px 18px;
  animation: apuDetailExpand 280ms cubic-bezier(0.0, 0.0, 0.2, 1);
}
@keyframes apuDetailExpand {
  from { opacity: 0; transform: scaleY(0.95); transform-origin: top; }
  to   { opacity: 1; transform: scaleY(1);    }
}

/* Chevrons de expandir */
.apu-chevron, .mem-chev {
  transition: transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);
  display: inline-block;
}
.apu-chevron.open, .mem-chev.open { transform: rotate(90deg); }

/* ═══ BITÁCORA ═════════════════════════════════════════════════ */
.bitacora-card,
[data-photos-for] {
  border-radius: 10px;
  transition: all 200ms ease;
}
.bitacora-card:hover {
  box-shadow: 0 4px 12px rgba(0,0,0,.10);
}

/* Date selector más bonito */
input[type="date"]#bit-date {
  cursor: pointer;
  font-family: var(--font-mono);
  font-weight: 600;
  color: var(--accent);
}

/* ═══ COMPRAS · órdenes y proveedores ══════════════════════════ */
.po-card,
.supplier-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 16px;
  transition: all 200ms cubic-bezier(0.0, 0.0, 0.2, 1);
}
.po-card:hover,
.supplier-card:hover {
  border-color: var(--accent);
  box-shadow: 0 4px 12px rgba(0,0,0,.10);
  transform: translateY(-1px);
}

/* Estados de PO con badges semánticos */
.po-status-pending  { background: rgba(240,165,0,.10); color: #f0a500; padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 600; }
.po-status-approved { background: rgba(63,185,80,.10); color: #3fb950; padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 600; }
.po-status-received { background: rgba(88,166,255,.10); color: #58a6ff; padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 600; }
.po-status-cancelled { background: rgba(248,81,73,.10); color: #f85149; padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 600; }

/* ═══ INVENTARIO · stock indicators ════════════════════════════ */
.inv-stock-low    { color: #f85149; font-weight: 700; }
.inv-stock-medium { color: #f0a500; font-weight: 600; }
.inv-stock-high   { color: #3fb950; font-weight: 600; }
.inv-progress {
  height: 6px;
  background: var(--border);
  border-radius: 3px;
  overflow: hidden;
  margin-top: 4px;
}
.inv-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--accent), var(--accent2));
  border-radius: 3px;
  transition: width 400ms cubic-bezier(0.0, 0.0, 0.2, 1);
}

/* ═══ AIU · cuadro de cierre ═══════════════════════════════════ */
.aiu-table th {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--text3);
}
.aiu-grand {
  background: linear-gradient(135deg, rgba(240,165,0,.10) 0%, rgba(240,165,0,.05) 100%);
  border: 2px solid var(--accent);
  border-radius: 12px;
  padding: 16px 20px;
  margin-top: 16px;
  box-shadow: 0 4px 12px rgba(240,165,0,.15);
}
.aiu-grand .lbl {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--text3);
  font-weight: 700;
}
.aiu-grand .val {
  font-size: 28px;
  font-weight: 800;
  color: var(--accent);
  font-family: var(--font-mono);
}

/* ═══ CRONOGRAMA · Gantt ═══════════════════════════════════════ */
.gantt-bar {
  border-radius: 5px;
  transition: all 180ms ease;
  background: linear-gradient(180deg, var(--accent) 0%, var(--accent2) 100%);
  box-shadow: 0 1px 2px rgba(0,0,0,.10), inset 0 1px 0 rgba(255,255,255,.18);
  cursor: pointer;
}
.gantt-bar:hover {
  filter: brightness(1.10);
  transform: translateY(-1px);
  box-shadow: 0 3px 8px rgba(240,165,0,.30), inset 0 1px 0 rgba(255,255,255,.20);
}
.gantt-bar.done {
  background: linear-gradient(180deg, #3fb950 0%, #2ea043 100%);
}
.gantt-bar-track {
  background: var(--bg2);
  border-radius: 6px;
  height: 8px;
}

/* ═══ EVM · Earned Value indicators ════════════════════════════ */
.evm-kpi {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 14px 18px;
  transition: transform 200ms ease;
}
.evm-kpi:hover { transform: translateY(-2px); }
.evm-kpi-value {
  font-size: 24px;
  font-weight: 800;
  font-family: var(--font-mono);
  letter-spacing: -0.5px;
}
.evm-kpi-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--text3);
  margin-top: 4px;
}
.evm-spi-good,
.evm-cpi-good { color: #3fb950; }
.evm-spi-warn,
.evm-cpi-warn { color: #f0a500; }
.evm-spi-bad,
.evm-cpi-bad  { color: #f85149; }

/* ═══ CONTRATA-PÚBLICA · wizard steps ══════════════════════════ */
.wizard-step {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  border-radius: 10px;
  background: var(--surface);
  border: 1px solid var(--border);
  margin-bottom: 10px;
  transition: all 200ms ease;
}
.wizard-step.active {
  border-color: var(--accent);
  background: linear-gradient(135deg, rgba(240,165,0,.08) 0%, var(--surface) 100%);
  box-shadow: 0 4px 12px rgba(240,165,0,.12);
}
.wizard-step.done {
  border-color: #3fb950;
  background: rgba(63,185,80,.05);
}
.wizard-step .step-num {
  width: 32px; height: 32px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-weight: 800;
  background: var(--border);
  color: var(--text3);
  font-size: 14px;
  flex-shrink: 0;
  transition: all 200ms ease;
}
.wizard-step.active .step-num {
  background: var(--accent);
  color: #fff;
  box-shadow: 0 0 0 3px rgba(240,165,0,.25);
}
.wizard-step.done .step-num {
  background: #3fb950;
  color: #fff;
}

/* ═══ MODALES de formularios (form-input, form-select) ════════ */
.form-input,
.form-select,
.form-textarea {
  width: 100%;
  background: var(--bg);
  border: 1px solid var(--border2);
  color: var(--text);
  padding: 10px 12px;
  border-radius: 8px;
  font-size: 13px;
  font-family: inherit;
  transition: all 150ms ease;
  box-sizing: border-box;
}
.form-input:focus,
.form-select:focus,
.form-textarea:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(240,165,0,.15);
}
.form-label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  color: var(--text3);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 4px;
}

/* ═══ NAV GROUP BADGES (PRO, NEW, BETA) ═════════════════════════ */
.nav-grp-badge {
  font-size: 9px !important;
  font-weight: 700 !important;
  padding: 2px 7px !important;
  letter-spacing: 1px !important;
  background: linear-gradient(135deg, var(--accent), var(--accent2)) !important;
  color: #fff !important;
  border-radius: 999px !important;
  margin-right: 8px !important;
  box-shadow: 0 1px 3px rgba(240,165,0,.30);
}

/* ═══ NOTIFICATIONS BELL · animación cuando hay nuevas ═════════ */
@keyframes bellShake {
  0%, 100% { transform: rotate(0); }
  20% { transform: rotate(-12deg); }
  40% { transform: rotate(12deg); }
  60% { transform: rotate(-6deg); }
  80% { transform: rotate(6deg); }
}
#notif-bell[data-has-new="true"] {
  animation: bellShake 0.6s cubic-bezier(0.36, 0.07, 0.19, 0.97);
}
#notif-bell[data-has-new="true"]::after {
  content: '';
  position: absolute;
  top: 8px; right: 6px;
  width: 8px; height: 8px;
  background: var(--red);
  border-radius: 50%;
  border: 2px solid var(--surface);
  box-shadow: 0 0 0 0 rgba(248,81,73,.7);
  animation: pulseRed 1.5s infinite;
}
@keyframes pulseRed {
  0%   { box-shadow: 0 0 0 0 rgba(248,81,73,.7); }
  70%  { box-shadow: 0 0 0 8px rgba(248,81,73,0); }
  100% { box-shadow: 0 0 0 0 rgba(248,81,73,0); }
}

/* ═══ PLAN GATING · locks visuales ═════════════════════════════ */
.locked-feature {
  position: relative;
  opacity: 0.55;
  filter: grayscale(0.7);
  pointer-events: none;
  user-select: none;
}
.locked-feature::after {
  content: '🔒 Plan Pro+';
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  background: rgba(13,17,23,.85);
  color: var(--accent);
  padding: 6px 14px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  pointer-events: auto;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0,0,0,.20);
  letter-spacing: 0.5px;
}

/* ═══ DRAG & DROP zones ════════════════════════════════════════ */
.drop-zone {
  border: 2px dashed var(--border2);
  border-radius: 10px;
  padding: 28px;
  text-align: center;
  color: var(--text3);
  font-size: 13px;
  transition: all 200ms ease;
}
.drop-zone.dragover {
  border-color: var(--accent);
  background: rgba(240,165,0,.05);
  color: var(--accent);
  transform: scale(1.01);
}
