/* ============================================================
   VEEBO COMPONENTS v3.0
   Fase 1 — Semua class diberi suffix -v3 untuk hindari konflik
   dengan existing (.btn, .btn-sm, .card, .badge sudah ada di
   base.html). Zero override pada class existing.

   Migrasi: di Fase 3, markup template di-refactor pakai class
   .btn-v3 / .card-v3 / .badge-v3 dst. Setelah semua halaman
   migrate, class lama dihapus dan -v3 di-rename ke nama bersih
   (atau dibiarkan apa adanya — keputusan saat cleanup).
   ============================================================ */

/* ============================================================
   BUTTONS — .btn-v3
   ============================================================ */

.btn-v3 {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--text-base);
  padding: 10px 18px;
  border-radius: var(--radius-sm);
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: opacity 0.15s, box-shadow 0.15s, transform 0.1s;
  text-decoration: none;
  white-space: nowrap;
  line-height: 1.4;
}
.btn-v3:active { transform: translateY(1px); }
.btn-v3:disabled,
.btn-v3[disabled] {
  opacity: 0.45;
  cursor: not-allowed;
  pointer-events: none;
}

/* Variants */
.btn-v3-primary {
  background: var(--navy);
  color: #fff;
  border-color: var(--navy);
}
.btn-v3-primary:hover {
  background: var(--navy-dark);
  border-color: var(--navy-dark);
}

.btn-v3-gold {
  background: var(--gold);
  color: var(--navy-dark);
  border-color: var(--gold);
  font-weight: 700;
}
.btn-v3-gold:hover {
  background: var(--gold-dark);
  border-color: var(--gold-dark);
}

.btn-v3-ghost {
  background: var(--surface);
  color: var(--ink);
  border-color: var(--border-str);
}
.btn-v3-ghost:hover { border-color: var(--navy); }

.btn-v3-soft {
  background: var(--info-soft);
  color: var(--navy);
  border-color: transparent;
}

.btn-v3-success-soft {
  background: var(--success-soft);
  color: var(--success-ink);
  border-color: transparent;
}

/* Sizes */
.btn-v3-lg { padding: 13px 22px; font-size: calc(var(--text-base) + 1px); }
.btn-v3-sm { padding: 6px 11px; font-size: 12px; }
.btn-v3-block { width: 100%; justify-content: center; }

/* Icon inside button */
.btn-v3 svg {
  width: 16px; height: 16px;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
  fill: none;
  flex-shrink: 0;
}
.btn-v3-lg svg { width: 18px; height: 18px; }

/* ============================================================
   CARDS — .card-v3
   ============================================================ */

.card-v3 {
  background: var(--surface);
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  padding: var(--pad);
}

.card-v3-dark {
  background: var(--navy);
  color: #fff;
  border: 1.5px solid var(--navy-dark);
  border-radius: var(--radius);
  padding: var(--pad);
}

.card-v3-gold {
  background: var(--gold);
  color: var(--navy-dark);
  border: 1.5px solid var(--gold-dark);
  border-radius: var(--radius);
  padding: var(--pad);
}

.card-v3-flat {
  background: var(--surface-2);
  border: none;
  border-radius: var(--radius);
  padding: var(--pad);
}

/* ============================================================
   BADGES — .badge-v3
   ============================================================ */

.badge-v3 {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  font-weight: 500;
  padding: 3px 9px;
  border-radius: 999px;
  white-space: nowrap;
  line-height: 1.4;
}

.badge-v3-success { background: var(--success-soft); color: var(--success-ink); }
.badge-v3-danger  { background: var(--danger-soft);  color: var(--danger-ink);  }
.badge-v3-warning { background: var(--warning-soft); color: var(--warning-ink); }
.badge-v3-navy    { background: var(--navy);          color: #fff;              }
.badge-v3-gold    { background: var(--gold-soft);     color: var(--gold-ink);   }
.badge-v3-neutral { background: var(--surface-2);     color: var(--muted);      }

/* Dot indikator di kiri label badge */
.badge-v3-dot::before {
  content: "";
  display: inline-block;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.7;
  flex-shrink: 0;
}

/* ============================================================
   STAT TILES (BENTO) — .stat-tile-v3
   ============================================================ */

.stat-tile-v3 {
  border-radius: var(--radius);
  padding: var(--pad);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.stat-tile-v3 .stat-value {
  font-family: var(--font-display);
  font-size: 56px;
  line-height: 1;
  letter-spacing: -0.02em;
}

.stat-tile-v3 .stat-label {
  font-size: var(--text-sm);
  opacity: 0.7;
  font-weight: 500;
}

.stat-tile-v3 .stat-delta {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  opacity: 0.6;
}

.stat-tile-v3.stat-dark  { background: var(--navy);      color: #fff;             }
.stat-tile-v3.stat-gold  { background: var(--gold);      color: var(--navy-dark); }
.stat-tile-v3.stat-light { background: var(--surface);   border: 1.5px solid var(--border); color: var(--ink); }
.stat-tile-v3.stat-muted { background: var(--surface-2); color: var(--ink-2);     }

/* ============================================================
   SCORE CHIPS — DINAMIS via komponen.skala_max

   Pemakaian di template Jinja2:
     {% set s = skor %}{% set m = komponen.skala_max %}
     {% set ratio = (s / m) if m else 0 %}
     {% set cls = 'score-v3-5' if ratio >= 0.99
                else 'score-v3-4' if ratio >= 0.75
                else 'score-v3-3' if ratio >= 0.55
                else 'score-v3-2' if ratio >= 0.35
                else 'score-v3-1' if s
                else 'score-v3-neutral' %}
     <span class="score-chip-v3 {{ cls }}">{{ s }}</span>

   Untuk konsistensi dengan helper existing (memory:
   project_seaqis_skala_max_via_komponen), helper akan diekspos
   di app.py sebagai Jinja2 global di fase berikutnya.
   ============================================================ */

.score-chip-v3 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-mono);
  font-weight: 600;
  font-size: 12px;
  width: 28px; height: 28px;
  border-radius: 6px;
  flex-shrink: 0;
}

/* Mapping berdasarkan ratio relatif terhadap skala_max */
.score-v3-1 { background: var(--danger-soft);  color: var(--danger-ink);  } /* Awal */
.score-v3-2 { background: var(--warning-soft); color: var(--warning-ink); } /* Dasar */
.score-v3-3 { background: var(--info-soft);    color: var(--navy);        } /* Berkembang */
.score-v3-4 { background: var(--success-soft); color: var(--success-ink); } /* Mahir */
.score-v3-5 { background: var(--success);      color: #fff;               } /* Pakar */
.score-v3-neutral { background: var(--surface-2); color: var(--muted); }   /* Skor null */

/* Variant lebih besar untuk konteks laporan */
.score-chip-v3-lg {
  width: 40px; height: 40px;
  font-size: 16px;
  border-radius: 8px;
}

/* ============================================================
   RECORDING ROW — .recording-row-v3
   ============================================================ */

.recording-row-v3 {
  display: grid;
  grid-template-columns: 42px 1fr auto;
  gap: var(--gap);
  align-items: center;
  padding: var(--pad-sm) var(--pad);
  background: var(--surface);
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  transition: border-color 0.15s, box-shadow 0.15s;
  text-decoration: none;
  color: inherit;
}
.recording-row-v3:hover {
  border-color: var(--navy);
  box-shadow: 0 2px 12px rgba(15, 37, 71, 0.08);
}

.recording-row-v3 .rec-icon {
  width: 42px; height: 42px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.recording-row-v3 .rec-icon svg {
  width: 18px; height: 18px;
  stroke: currentColor; stroke-width: 1.8;
  stroke-linecap: round; stroke-linejoin: round;
  fill: none;
}

.rec-icon-success  { background: var(--success-soft); color: var(--success); }
.rec-icon-danger   { background: var(--danger-soft);  color: var(--danger);  }
.rec-icon-warning  { background: var(--warning-soft); color: var(--warning); }
.rec-icon-progress { background: var(--info-soft);    color: var(--navy);    }
.rec-icon-neutral  { background: var(--surface-2);    color: var(--muted);   }

.recording-row-v3 .rec-content { min-width: 0; }
.recording-row-v3 .rec-title {
  font-weight: 600;
  font-size: var(--text-base);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.recording-row-v3 .rec-meta {
  font-size: var(--text-sm);
  color: var(--muted);
  margin-top: 2px;
  font-family: var(--font-mono);
}

.recording-row-v3 .rec-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

/* ============================================================
   FORM INPUTS — .form-*-v3 (dipakai di Fase 3)
   ============================================================ */

.form-group-v3 {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: var(--gap);
}

.form-label-v3 {
  font-size: var(--text-sm);
  font-weight: 500;
  color: var(--ink-2);
}

.form-input-v3 {
  width: 100%;
  padding: 10px 14px;
  background: var(--surface);
  border: 1.5px solid var(--border);
  border-radius: var(--radius-sm);
  font-size: var(--text-base);
  font-family: var(--font-sans);
  color: var(--ink);
  transition: border-color 0.15s;
  appearance: none;
}
.form-input-v3:focus {
  outline: none;
  border-color: var(--navy);
}
.form-input-v3::placeholder { color: var(--muted-2); }
