/* =====================================================================
   Design System · IASD Library — Bootstrap 5.3 theme
   Load AFTER bootstrap.min.css and tokens.css.
   No build step: overrides Bootstrap CSS variables (--bs-*).
   ===================================================================== */

:root {
  --bs-primary: #003366;
  --bs-primary-rgb: 0, 51, 102;
  --bs-success: #3a781c;
  --bs-success-rgb: 58, 120, 28;
  --bs-warning: #ffa92d;
  --bs-warning-rgb: 255, 169, 45;
  --bs-danger: #aa4c18;
  --bs-danger-rgb: 170, 76, 24;
  --bs-info: #356f7b;
  --bs-info-rgb: 53, 111, 123;
  --bs-secondary: #4a5868;
  --bs-secondary-rgb: 74, 88, 104;

  --bs-primary-text-emphasis: #00264c;
  --bs-primary-bg-subtle: #ebeff3;
  --bs-primary-border-subtle: #b8c7d6;
  --bs-success-text-emphasis: #2c5c15;
  --bs-success-bg-subtle: #e9f1e4;
  --bs-warning-text-emphasis: #8c5d19;
  --bs-warning-bg-subtle: #fff5e6;
  --bs-danger-text-emphasis: #7d3812;
  --bs-danger-bg-subtle: #fcede4;
  --bs-info-text-emphasis: #28555e;
  --bs-info-bg-subtle: #e8f0f2;

  --bs-body-font-family: var(--font-ui);
  --bs-body-font-size: var(--text-base);
  --bs-body-line-height: var(--line-height);
  --bs-body-color: var(--color-text);
  --bs-body-color-rgb: 31, 41, 55;
  --bs-body-bg: var(--color-bg);
  --bs-secondary-color: var(--color-text-muted);
  --bs-emphasis-color: #111827;

  --bs-border-color: var(--color-border);
  --bs-border-radius: var(--radius);
  --bs-border-radius-sm: var(--radius-sm);
  --bs-border-radius-lg: var(--radius-lg);

  --bs-link-color: #003366;
  --bs-link-color-rgb: 0, 51, 102;
  --bs-link-hover-color: #00264c;
  --bs-link-hover-color-rgb: 0, 38, 76;

  --bs-focus-ring-width: 3px;
  --bs-focus-ring-color: rgba(0, 51, 102, 0.45);
}

/* ---------- Typography ---------- */
h1, .h1 { font-size: var(--text-3xl); }
h2, .h2 { font-size: var(--text-2xl); }
h3, .h3 { font-size: var(--text-xl); }
h4, .h4 { font-size: var(--text-lg); }
h1, h2, h3, h4, .h1, .h2, .h3, .h4 {
  font-weight: var(--weight-bold);
  line-height: var(--line-height-heading);
  color: var(--color-primary);
}
small, .small { font-size: var(--text-sm); } /* never below 16px in the UI */

/* ---------- Buttons ---------- */
.btn {
  --bs-btn-font-size: var(--text-base);
  --bs-btn-font-weight: var(--weight-semibold);
  --bs-btn-padding-y: var(--btn-padding-y);
  --bs-btn-padding-x: 1.25rem;
  --bs-btn-border-radius: var(--radius);
  min-height: var(--control-height);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
}
.btn-sm { --bs-btn-font-size: var(--text-sm); min-height: var(--control-height-sm); --bs-btn-padding-x: 0.9rem; }
.btn-lg { --bs-btn-font-size: var(--text-lg); min-height: 56px; }

.btn-primary {
  --bs-btn-bg: #003366; --bs-btn-border-color: #003366;
  --bs-btn-hover-bg: #00264c; --bs-btn-hover-border-color: #00264c;
  --bs-btn-active-bg: #001a33; --bs-btn-active-border-color: #001a33;
  --bs-btn-disabled-bg: #003366; --bs-btn-disabled-border-color: #003366;
}
.btn-outline-primary {
  --bs-btn-color: #003366; --bs-btn-border-color: #003366;
  --bs-btn-hover-bg: #003366; --bs-btn-hover-border-color: #003366; --bs-btn-hover-color: #fff;
  --bs-btn-active-bg: #00264c; --bs-btn-active-border-color: #00264c;
  border-width: 2px;
}
.btn-success {
  --bs-btn-bg: #3a781c; --bs-btn-border-color: #3a781c;
  --bs-btn-hover-bg: #2c5c15; --bs-btn-hover-border-color: #2c5c15;
}
.btn-danger {
  --bs-btn-bg: #aa4c18; --bs-btn-border-color: #aa4c18;
  --bs-btn-hover-bg: #7d3812; --bs-btn-hover-border-color: #7d3812;
}
.btn-warning {
  --bs-btn-bg: #ffa92d; --bs-btn-border-color: #ffa92d; --bs-btn-color: #1f2937;
  --bs-btn-hover-bg: #f29a14; --bs-btn-hover-border-color: #f29a14; --bs-btn-hover-color: #1f2937;
}
.btn-link { --bs-btn-color: #003366; text-underline-offset: 3px; }

.btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
/* Fields keep their size on focus (feature 028, DESIGN-SYSTEM §11): only the border takes the focus colour,
   with no ring outside it, also on a field with an error (the message stays below the field). */
.form-control:focus, .form-select:focus, .form-check-input:focus,
.form-control.is-invalid:focus, .form-select.is-invalid:focus, .form-check-input.is-invalid:focus {
  outline: none; box-shadow: none; border-color: var(--focus);
}

/* ---------- Forms ---------- */
.form-label { font-weight: var(--weight-semibold); margin-bottom: var(--space-1); }
.form-control, .form-select {
  background-color: var(--color-surface); /* white on the cards and on the page background (feature 029) */
  min-height: var(--control-height);
  font-size: var(--text-base);
  border: 1px solid var(--color-border-input);
  border-radius: var(--radius);
}
.form-control::placeholder { color: var(--gray-600); opacity: 1; }
.form-text { font-size: var(--text-sm); color: var(--color-text-muted); }
.form-check-input { background-color: var(--color-surface); width: 1.25em; height: 1.25em; border-color: var(--color-border-input); }
/* Room between the box (or the circle) and its text; the box is larger than Bootstrap's. */
.form-check { padding-left: 1.85em; min-height: 1.5em; }
.form-check .form-check-input { margin-left: -1.85em; margin-top: 0.15em; }
.form-check-inline { margin-right: var(--space-5); }
.form-check-input:checked { background-color: #003366; border-color: #003366; }
.invalid-feedback { font-size: var(--text-sm); color: var(--color-danger); }
.form-control.is-invalid { border-color: var(--color-danger); }

/* ---------- Tables ---------- */
.table { --bs-table-bg: var(--color-surface); font-size: var(--text-sm); --bs-table-cell-padding-y: var(--table-cell-padding-y); }
.table > thead th {
  font-weight: var(--weight-semibold); color: var(--color-text-muted);
  border-bottom: 2px solid var(--color-border); white-space: nowrap;
}
.table > :not(caption) > * > * { padding: 0.75rem 0.75rem; vertical-align: middle; }

/* ---------- Cards, alerts, modals ---------- */
.card { --bs-card-border-color: var(--color-border); --bs-card-border-radius: var(--radius-lg); box-shadow: var(--shadow-1); }
.alert { border-radius: var(--radius); border-width: 0 0 0 6px; font-size: var(--text-base); }
.alert-success { --bs-alert-border-color: var(--color-success-base); }
.alert-warning { --bs-alert-border-color: var(--iasd-warm); }
.alert-danger  { --bs-alert-border-color: var(--color-danger-base); }
.alert-info    { --bs-alert-border-color: var(--color-info-base); }
.modal-content { border-radius: var(--radius-lg); }
.badge { font-weight: var(--weight-semibold); }
/* Soft badges (feature 029): a light background with the text in the colour (§3.3, all AA). */
.badge.text-bg-info    { background-color: var(--color-info-bg) !important; color: var(--color-info) !important; }
.badge.text-bg-warning { background-color: var(--color-warning-bg) !important; color: var(--color-warning-text) !important; }
.badge.text-bg-success { background-color: var(--color-success-bg) !important; color: var(--color-success) !important; }
.badge.text-bg-danger  { background-color: var(--color-danger-bg) !important; color: var(--color-danger) !important; }
.badge.text-bg-primary { background-color: var(--color-primary-light) !important; color: var(--color-primary) !important; }

/* ---------- Tabs between related screens (reports) ---------- */
.nav-pills {
  --bs-nav-link-color: var(--color-primary); --bs-nav-link-hover-color: var(--color-primary);
  --bs-nav-pills-link-active-bg: var(--color-primary); --bs-nav-pills-link-active-color: #fff;
  --bs-nav-link-font-weight: var(--weight-semibold); gap: var(--space-1);
}
.nav-pills .nav-link { min-height: var(--control-height); display: flex; align-items: center; }

