/* PM-KPI MBI - component styles (utilities come from the pre-built assets/tailwind.css) */
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:400;font-display:swap;src:url(vendor/fonts/plus-jakarta-sans-latin-400-normal.woff2) format('woff2');}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:500;font-display:swap;src:url(vendor/fonts/plus-jakarta-sans-latin-500-normal.woff2) format('woff2');}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:600;font-display:swap;src:url(vendor/fonts/plus-jakarta-sans-latin-600-normal.woff2) format('woff2');}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:700;font-display:swap;src:url(vendor/fonts/plus-jakarta-sans-latin-700-normal.woff2) format('woff2');}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:800;font-display:swap;src:url(vendor/fonts/plus-jakarta-sans-latin-800-normal.woff2) format('woff2');}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url(vendor/fonts/jetbrains-mono-latin-500-normal.woff2) format('woff2');}

:root { --ink: #0b1f3a; --brand: #10a37f; }
input:where(:not([type]), [type=text], [type=email], [type=password], [type=number], [type=date], [type=datetime-local], [type=search]), select, textarea {
  border: 1px solid #e2e8f0; border-radius: .5rem; padding: .5rem .75rem; font-size: .875rem; background: #fff; width: 100%; outline: none; transition: border-color .15s, box-shadow .15s;
}
input:where(:focus), select:where(:focus), textarea:where(:focus) { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(16,163,127,.15); }
input:where([type=checkbox]) { width: 1rem; height: 1rem; accent-color: var(--brand); }
label.lbl { display:block; font-size:.75rem; font-weight:600; color:#475569; margin-bottom:.35rem; letter-spacing:.01em; }
.btn { display:inline-flex; align-items:center; gap:.4rem; border-radius:.5rem; padding:.5rem .9rem; font-size:.8125rem; font-weight:600; line-height:1.25rem; transition: all .15s; white-space:nowrap; cursor:pointer; }
.btn-primary { background: var(--brand); color:#fff; box-shadow: 0 1px 2px rgba(16,163,127,.3); }
.btn-primary:hover { background:#0b8a6b; }
.btn-dark { background: var(--ink); color:#fff; }
.btn-dark:hover { background:#12305a; }
.btn-light { background:#fff; color:#334155; border:1px solid #e2e8f0; }
.btn-light:hover { background:#f8fafc; border-color:#cbd5e1; }
.btn-danger { background:#fff; color:#e11d48; border:1px solid #fecdd3; }
.btn-danger:hover { background:#fff1f2; }
.btn-sm { padding:.3rem .6rem; font-size:.75rem; }
.card { max-width:100%; overflow-x:auto; background:#fff; border:1px solid #e2e8f0; border-radius: .875rem; box-shadow: 0 1px 2px rgba(15,23,42,.04); }
.card-h { display:flex; align-items:center; justify-content:space-between; gap:.75rem; padding: .9rem 1.1rem; border-bottom:1px solid #f1f5f9; }
.card-t { font-size:.9rem; font-weight:700; color:#0f172a; }
.tbl { width:100%; font-size:.8125rem; }
.tbl th { text-align:left; font-size:.6875rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#64748b; background:#f8fafc; padding:.6rem .75rem; border-bottom:1px solid #e2e8f0; white-space:nowrap; }
.tbl td { padding:.6rem .75rem; border-bottom:1px solid #f1f5f9; vertical-align:top; }
.tbl tr:hover td { background:#fafcff; }
.kpi-num { font-variant-numeric: tabular-nums; }
.scrollbar-thin::-webkit-scrollbar { width:6px; } .scrollbar-thin::-webkit-scrollbar-thumb { background: rgba(255,255,255,.15); border-radius: 6px; }
.tab { padding:.55rem .9rem; font-size:.8125rem; font-weight:600; color:#64748b; border-bottom:2px solid transparent; white-space:nowrap; }
.tab:hover { color:#0f172a; }
.tab.active { color: var(--ink); border-color: var(--brand); }
.bsc-table th, .bsc-table td { border:1px solid #cbd5e1; padding:.4rem .5rem; font-size:.75rem; }
.bsc-table thead th { background: #0b1f3a; color:#fff; text-transform:none; letter-spacing:0; font-size:.72rem; }
.bsc-table .tier th { background:#12305a; }
/* Gantt */
.gantt { position:relative; font-size:.75rem; }
.gantt-row { display:grid; grid-template-columns: 300px 1fr; border-bottom:1px solid #f1f5f9; min-height: 30px; }
.gantt-row:hover { background:#f8fafc; }
.gantt-label { padding:.35rem .6rem; border-right:1px solid #e2e8f0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; position:sticky; left:0; background:inherit; z-index:2; }
.gantt-track { position:relative; }
.gantt-bar { position:absolute; height:9px; border-radius:4px; }
.gantt-bar.plan { top:5px; background:#cbd5e1; }
.gantt-bar.act { top:16px; background: var(--brand); }
.gantt-bar.act.late { background:#e11d48; }
.gantt-bar.prog { top:5px; background: rgba(11,31,58,.55); }
.gantt-ms { position:absolute; top:7px; width:12px; height:12px; transform: rotate(45deg); background:#0b1f3a; }
.gantt-ms.late { background:#e11d48; }
.gantt-ms.done { background: var(--brand); }
.gantt-today { position:absolute; top:0; bottom:0; width:2px; background:#f59e0b; z-index:1; }
@media print {
  body { background:#fff !important; }
  .no-print, .print\:hidden { display:none !important; }
  main { padding:0 !important; }
  .lg\:pl-64 { padding-left:0 !important; }
  .card { box-shadow:none; break-inside: avoid; }
  @page { size: A4 landscape; margin: 10mm; }
}
.grid > * { min-width: 0; }
