/* Shell helpers */
.bf-max-width { max-width: 1680px; }
.bf-surface { background: var(--bf-surface-1); border:1px solid var(--bf-border); border-radius: var(--bf-radius); box-shadow: var(--bf-shadow-1); }

.bf-panel{
  border: 1px solid var(--bf-border);
  border-radius: var(--bf-radius-sm);
  background: var(--bf-surface-1);
  padding: 0.6rem;
}

.bf-mono{
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}

.bf-weak{
  color: var(--bf-ink-3);
}

/* Page header */
.bf-page-header {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:1rem;
  margin-bottom:1.1rem;
}
.bf-page-header h1 { font-size:1.35rem; font-weight:700; margin:2px 0 6px; }
.bf-page-header .bf-breadcrumb { font-size:.85rem; color:var(--bf-muted); text-transform:uppercase; letter-spacing:.06em; }
.bf-page-header .bf-context { display:flex; flex-wrap:wrap; gap:.35rem; }
.bf-page-header .bf-meta { color: var(--bf-ink-3); font-size:.9rem; }
.bf-ph-actions { display:flex; gap:.5rem; flex-wrap:wrap; }

/* Badges & pills */
.bf-pill {
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  padding:4px 10px;
  border-radius:999px;
  border:1px solid var(--bf-border);
  background: var(--bf-surface-2);
  color: var(--bf-ink-2);
  font-weight:600;
  font-size:.8rem;
  letter-spacing:.02em;
}
.bf-pill.accent { background: rgba(45,108,223,0.12); color:#1d4ed8; border-color: rgba(45,108,223,0.2); }
.bf-pill.success { background: rgba(22,163,74,0.1); color:#15803d; border-color: rgba(22,163,74,0.2); }
.bf-pill.danger { background: rgba(220,38,38,0.12); color:#b91c1c; border-color: rgba(220,38,38,0.2); }
.bf-pill.subtle { background: var(--bf-surface-2); color: var(--bf-ink-3); }

/* Filter bar */
.bf-filterbar {
  border:1px solid var(--bf-border);
  border-radius: var(--bf-radius);
  padding: .95rem;
  background: var(--bf-surface-1);
  box-shadow: var(--bf-shadow-1);
}
.bf-filterbar-main { display:flex; flex-wrap:wrap; gap:.75rem; align-items:flex-end; }
.bf-filterbar .form-label {
  font-size:.82rem;
  color: var(--bf-ink-3);
  text-transform: uppercase;
  letter-spacing:.05em;
  margin-bottom:4px;
}
.bf-filterchips {
  display:flex;
  flex-wrap:wrap;
  gap:.35rem;
  margin:.5rem 0 0;
}
.bf-chip {
  display:inline-flex; align-items:center; gap:.35rem;
  padding:4px 10px;
  border-radius:999px;
  border:1px solid var(--bf-border);
  background: var(--bf-surface-2);
  color: var(--bf-ink-2);
  font-size:.82rem;
}
.bf-chip .bi { opacity:.6; cursor:pointer; }

/* Table shell */
.bf-table-wrap {
  border:1px solid var(--bf-border);
  border-radius: var(--bf-radius);
  background: var(--bf-surface-1);
  box-shadow: var(--bf-shadow-1);
  overflow:auto;
}
.bf-table thead th {
  position: sticky; top:0;
  background: var(--bf-surface-1);
  z-index: 2;
  text-transform: uppercase;
  letter-spacing:.04em;
  font-size:.82rem;
  color: var(--bf-ink-3);
  border-bottom:1px solid var(--bf-border-strong);
}
.bf-table .bf-sticky-col {
  position: sticky;
  left:0;
  background: var(--bf-surface-1);
  z-index:3;
  box-shadow: 3px 0 0 var(--bf-surface-1);
}
.bf-table .bf-state td {
  text-align:center;
  color: var(--bf-muted);
  padding:1rem;
}
.bf-table .bf-state.bf-error td { color: var(--bf-danger); }
.bf-table .bf-num { text-align:end; font-variant-numeric: tabular-nums; }

/* Console */
.bf-console {
  border:1px solid var(--bf-border);
  border-radius: var(--bf-radius);
  background: #0f172a;
  color: #e5e7eb;
  font-family: "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;
  font-size:12px;
  line-height:1.5;
}
.bf-console-header {
  padding:10px 12px;
  border-bottom:1px solid rgba(255,255,255,0.08);
  text-transform: uppercase;
  letter-spacing:.04em;
  font-size:11px;
  color:#cbd5e1;
}
.bf-console-body { max-height:260px; overflow:auto; padding:12px; }
.bf-log { display:flex; gap:10px; align-items:flex-start; }
.bf-log .time { color:#94a3b8; min-width:74px; display:inline-block; }
.bf-log .level { text-transform: uppercase; letter-spacing:.06em; font-size:.75rem; opacity:.7; }
.bf-log .msg { flex:1; }
.bf-log.info .level { color:#60a5fa; }
.bf-log.success .level { color:#22c55e; }
.bf-log.error .level { color:#f87171; }
.bf-log.warn .level { color:#f59e0b; }

/* Progress stack */
.bf-progress-stack { display:grid; gap:.9rem; }
.bf-progress-row {
  display:grid;
  grid-template-columns: 150px 1fr 180px;
  align-items:center;
  gap:.75rem;
}
.bf-progress-row .label { font-weight:600; font-size:.92rem; }
.bf-progress-row .meta { color: var(--bf-ink-3); font-size:.82rem; text-align:right; }
.bf-progress-row .progress { width: 100%; height: 14px; }
.bf-progress-row .progress-sm { height:12px; }

/* Stepper */
.bf-stepper { display:flex; gap:.75rem; flex-wrap:wrap; margin-bottom: 1rem; }
.bf-step {
  display:flex; align-items:center; gap:.5rem;
  padding:.5rem .75rem;
  border-radius: var(--bf-radius-sm);
  background: var(--bf-surface-2);
  border:1px solid var(--bf-border);
  color: var(--bf-ink-2);
  font-weight:600;
}
.bf-step .badge { background: var(--bf-accent-weak); color: var(--bf-accent); border:1px solid rgba(45,108,223,0.2); }
.bf-step.active { border-color: var(--bf-accent); box-shadow: 0 0 0 3px rgba(45,108,223,0.15); }
.bf-step.done { background: rgba(22,163,74,0.12); border-color: rgba(22,163,74,0.4); color: #166534; }

/* Dropzone */
.bf-dropzone {
  border:1px dashed var(--bf-border);
  border-radius: var(--bf-radius);
  background: var(--bf-surface-2);
  padding: 1.1rem;
  text-align:center;
  transition: border-color .15s ease, background .15s ease;
}
.bf-dropzone:hover { border-color: var(--bf-accent); }
.bf-dropzone input[type="file"] { display:none; }
.bf-dropzone .dz-label { font-weight:700; color: var(--bf-ink-1); }
.bf-dropzone .dz-meta { color: var(--bf-ink-3); font-size:.9rem; }
.bf-dropzone .dz-pill { display:inline-flex; align-items:center; gap:.25rem; padding:4px 10px; background: rgba(45,108,223,0.12); border-radius:999px; color: #1d4ed8; font-weight:600; font-size:.82rem; }

/* Info & states */
.bf-inline-alert {
  border:1px solid var(--bf-border);
  border-radius: var(--bf-radius-sm);
  background: var(--bf-surface-2);
  padding:.75rem .85rem;
  font-size:.92rem;
}
.bf-inline-alert.danger { border-color: rgba(220,38,38,0.2); background: rgba(220,38,38,0.05); color: #b91c1c; }
.bf-inline-alert.success { border-color: rgba(22,163,74,0.2); background: rgba(22,163,74,0.05); color: #166534; }
.bf-state-block {
  border:1px dashed var(--bf-border);
  border-radius: var(--bf-radius);
  padding:1rem;
  color: var(--bf-ink-3);
  text-align:center;
}

@media (max-width: 991.98px){
  .bf-page-header { flex-direction: column; }
  .bf-ph-actions { width:100%; justify-content:flex-start; }
}

/* Fix footer hover: basefive.css references --bf-primary (not defined) */
.bf-footer a:hover { color: var(--bf-accent) !important; }

/* Sticky cards with a comfortable offset (replaces style="top:1rem") */
.bf-sticky-offset { top: 1rem; }

/* Compact in-card navigation */
.bf-nav-compact .nav-link{
  padding: 0.4rem 0.75rem;
  color: var(--bf-ink-3);
  font-size: 0.9rem;
  border-radius: var(--bf-radius-sm);
}
.bf-nav-compact .nav-link:hover{
  color: var(--bf-ink-1);
  background: var(--bf-surface-2);
}
.bf-nav-compact .nav-link.active{
  color: #fff;
  background: var(--bf-accent);
}

/* Section titles (replaces inline border styling) */
.bf-section-title{
  margin: 0 0 0.75rem;
  padding-bottom: 0.55rem;
  border-bottom: 1px solid var(--bf-border);
  position: relative;
}
.bf-section-title::after{
  content:"";
  display:block;
  width: 52px;
  height: 3px;
  border-radius: 999px;
  background: var(--bf-accent);
  margin-top: 0.55rem;
}

/* Prose measure (replaces style="max-width:80ch") */
.bf-measure { max-width: 80ch; }

/* “Callout” cards used in docs/legal pages */
.bf-callout{
  border: 1px solid var(--bf-border);
  border-left: 4px solid var(--bf-accent);
  border-radius: var(--bf-radius);
  background: var(--bf-surface-1);
  padding: 1rem;
}
.bf-callout.soft { background: var(--bf-surface-2); }
.bf-callout .title{
  display:flex;
  align-items:center;
  gap: 0.5rem;
  font-weight: 700;
  margin-bottom: 0.5rem;
}

/* Print cleanup only when wrapper is present */
@media print {
  .bf-print-clean .bf-print-hide { display:none !important; }
  .bf-print-clean .card,
  .bf-print-clean .bf-surface { box-shadow: none !important; }
}
