/* ══════════════════════════════════════════════════════════════════════════
   GroupFin — Industry theme
   ------------------------------------------------------------------------
   Drop into public/assets/ and link it in templates/layout.php AFTER the
   Bootstrap CDN stylesheet and BEFORE app.css:

     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/...">
     <link rel="stylesheet" href="<?= e(asset('industry-theme.css')) ?>">
     <link rel="stylesheet" href="<?= e(asset('app.css')) ?>">

   Fonts (same <head>):
     <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
     <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;600;700&family=Barlow+Condensed:wght@400;500;600;700&display=swap">

   CSP: add fonts.googleapis.com to style-src and fonts.gstatic.com to font-src.
   Nothing else in the policy changes.

   Most of the site restyles from the Bootstrap variable overrides alone. The
   component layer below covers what Bootstrap variables cannot reach.
   ══════════════════════════════════════════════════════════════════════════ */

:root {
  /* ── Industry tokens ─────────────────────────────────────────────────── */
  --color-bg: #f2f2f3;
  --color-surface: #e9e9ea;
  --color-text: #1d1f20;
  --color-accent: #5980a6;
  --color-divider: rgba(29, 31, 32, 0.16);

  --color-accent-100: #eef6ff;
  --color-accent-200: #d6ebff;
  --color-accent-300: #b5d9fd;
  --color-accent-400: #94bce3;
  --color-accent-500: #749dc4;
  --color-accent-600: #597ea3;
  --color-accent-700: #416180;
  --color-accent-800: #2c455d;
  --color-accent-900: #1d2d3d;

  --color-neutral-100: #f5f5f8;
  --color-neutral-200: #e7e7ea;
  --color-neutral-300: #d4d4d7;
  --color-neutral-400: #b7b7ba;
  --color-neutral-500: #98989b;
  --color-neutral-600: #7a7a7d;
  --color-neutral-700: #5d5d60;
  --color-neutral-800: #424244;
  --color-neutral-900: #2b2b2d;

  /* The one sanctioned departure from the mono palette: a red-line
     annotation colour, for unfavourable variance and blockers only. */
  --color-alert: #a63d3d;
  --color-alert-tint: rgba(166, 61, 61, 0.08);

  --font-heading: "Barlow Condensed", system-ui, sans-serif;
  --font-heading-weight: 600;
  --font-body: "Barlow", system-ui, sans-serif;

  --space-1: 3.4px;
  --space-2: 6.8px;
  --space-3: 10.2px;
  --space-4: 13.6px;
  --space-6: 20.4px;
  --space-8: 27.2px;

  --shadow-sm: 0 1px 2px rgba(43, 43, 45, 0.14);
  --shadow-md: 0 3px 10px rgba(43, 43, 45, 0.16);
  --shadow-lg: 0 12px 32px rgba(43, 43, 45, 0.22);

  /* ── Bootstrap 5.3 overrides ─────────────────────────────────────────── */
  --bs-body-bg: var(--color-bg);
  --bs-body-color: var(--color-text);
  --bs-body-font-family: var(--font-body);
  --bs-body-font-size: 0.9375rem;
  --bs-body-line-height: 1.55;
  --bs-emphasis-color: var(--color-text);
  --bs-secondary-color: rgba(29, 31, 32, 0.55);
  --bs-secondary-bg: var(--color-surface);
  --bs-tertiary-bg: var(--color-neutral-100);
  --bs-border-color: var(--color-divider);
  --bs-border-color-translucent: var(--color-divider);
  --bs-link-color: var(--color-accent-700);
  --bs-link-hover-color: var(--color-accent);
  --bs-link-color-rgb: 65, 97, 128;
  --bs-heading-color: var(--color-text);

  --bs-primary: var(--color-accent);
  --bs-primary-rgb: 89, 128, 166;
  --bs-primary-bg-subtle: var(--color-accent-100);
  --bs-primary-border-subtle: var(--color-accent-300);
  --bs-primary-text-emphasis: var(--color-accent-800);

  --bs-secondary: var(--color-neutral-600);
  --bs-secondary-rgb: 122, 122, 125;

  --bs-success: var(--color-accent-700);
  --bs-success-rgb: 65, 97, 128;
  --bs-success-bg-subtle: var(--color-accent-100);
  --bs-success-text-emphasis: var(--color-accent-800);

  --bs-danger: var(--color-alert);
  --bs-danger-rgb: 166, 61, 61;
  --bs-danger-bg-subtle: var(--color-alert-tint);
  --bs-danger-text-emphasis: var(--color-alert);

  --bs-warning: var(--color-accent-400);
  --bs-warning-rgb: 148, 188, 227;
  --bs-warning-bg-subtle: var(--color-accent-100);
  --bs-warning-text-emphasis: var(--color-accent-800);

  --bs-info: var(--color-accent-400);
  --bs-info-rgb: 148, 188, 227;
  --bs-info-bg-subtle: var(--color-accent-100);
  --bs-info-text-emphasis: var(--color-accent-800);

  --bs-dark: var(--color-accent-900);
  --bs-dark-rgb: 29, 45, 61;
  --bs-light: var(--color-surface);

  /* Industry does not round. */
  --bs-border-radius: 0;
  --bs-border-radius-sm: 0;
  --bs-border-radius-lg: 0;
  --bs-border-radius-xl: 0;
  --bs-border-radius-2xl: 0;
  --bs-border-radius-pill: 0;

  --bs-box-shadow-sm: var(--shadow-sm);
  --bs-box-shadow: var(--shadow-md);
  --bs-box-shadow-lg: var(--shadow-lg);
}

/* ── Type ──────────────────────────────────────────────────────────────── */
body { font-family: var(--font-body); }
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
  font-family: var(--font-heading);
  font-weight: var(--font-heading-weight);
  letter-spacing: -0.015em;
  line-height: 1.12;
}
.card-header, .navbar-brand, .btn, .nav-link, .dropdown-header {
  font-family: var(--font-heading);
  font-weight: var(--font-heading-weight);
}
.card-header { font-size: 1.1rem; letter-spacing: 0; }
.text-muted, .text-body-secondary { color: rgba(29, 31, 32, 0.55) !important; }

/* Small uppercase labels — the system's h6 role. */
.label-kicker {
  font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase;
  color: rgba(29, 31, 32, 0.55);
}

/* ── Blueprint frame ───────────────────────────────────────────────────── */
/* Every real object — card, chart container, table panel, figure — wears
   this: transparent, hairline-bordered, square, with registration marks.
   Markup: <div class="card blueprint">…<i class="corner tl"></i>×4</div>   */
.blueprint {
  position: relative;
  border: 1px solid var(--color-divider);
  border-radius: 0;
  background: transparent;
}
.blueprint > .corner {
  position: absolute; width: 11px; height: 11px;
  color: rgba(29, 31, 32, 0.55); pointer-events: none;
}
.blueprint > .corner::before,
.blueprint > .corner::after { content: ""; position: absolute; background: currentColor; }
.blueprint > .corner::before { left: 5px; top: 0; width: 1px; height: 100%; }
.blueprint > .corner::after  { top: 5px; left: 0; width: 100%; height: 1px; }
.blueprint > .corner.tl { top: -6px; left: -6px; }
.blueprint > .corner.tr { top: -6px; right: -6px; }
.blueprint > .corner.bl { bottom: -6px; left: -6px; }
.blueprint > .corner.br { bottom: -6px; right: -6px; }

/* ── Cards ─────────────────────────────────────────────────────────────── */
.card {
  background: transparent;
  border: 1px solid var(--color-divider);
  border-radius: 0;
}
.card-header {
  background: transparent;
  border-bottom: 1px solid var(--color-divider);
  padding: var(--space-3) var(--space-6);
}
.card-footer { background: transparent; border-top: 1px solid var(--color-divider); }
.card-body { padding: var(--space-4) var(--space-6); }

/* ── Buttons ───────────────────────────────────────────────────────────── */
.btn {
  border-radius: 0;
  font-size: 0.875rem;
  padding: var(--space-2) calc(var(--space-3) * 1.2);
  border: 1px solid var(--color-divider);
}
.btn-primary {
  background: var(--color-accent); border-color: var(--color-accent); color: var(--color-bg);
}
.btn-primary:hover  { background: var(--color-accent-600); border-color: var(--color-accent-600); color: var(--color-bg); }
.btn-primary:active { background: var(--color-accent-700); border-color: var(--color-accent-700); }
.btn-outline-primary { color: var(--color-accent-700); border-color: var(--color-divider); background: transparent; }
.btn-outline-primary:hover { background: rgba(89, 128, 166, 0.10); color: var(--color-accent-800); border-color: var(--color-accent); }
.btn-outline-secondary { color: var(--color-text); border-color: var(--color-divider); background: transparent; }
.btn-outline-secondary:hover { background: rgba(29, 31, 32, 0.07); color: var(--color-text); border-color: var(--color-divider); }
.btn-outline-light { border-color: rgba(242, 242, 243, 0.4); }
.btn-group > .btn { border-radius: 0; }
.btn:disabled, .btn.disabled { opacity: 0.45; }

/* ── Forms ─────────────────────────────────────────────────────────────── */
.form-control, .form-select, .input-group-text {
  border-radius: 0;
  background: var(--color-surface);
  border-color: var(--color-divider);
  color: var(--color-text);
  caret-color: var(--color-accent);
}
.form-control:hover, .form-select:hover { border-color: rgba(29, 31, 32, 0.45); }
.form-control:focus, .form-select:focus {
  background: var(--color-surface);
  border-color: var(--color-accent);
  box-shadow: none;
}
.form-check-input { border-radius: 0; border-color: var(--color-divider); }
.form-check-input:checked { background-color: var(--color-accent); border-color: var(--color-accent); }
.form-check-input:focus { border-color: var(--color-accent); box-shadow: none; }

/* Keyboard focus is themed, never the browser default. */
:focus { outline: none; }
:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  box-shadow: none;
}
::selection { background: rgba(89, 128, 166, 0.30); }

/* ── Navigation ────────────────────────────────────────────────────────── */
.navbar.bg-dark { background: var(--color-accent-900) !important; border-bottom: none; }
.navbar-brand { font-size: 1.15rem; letter-spacing: 0.01em; }
.navbar-dark .nav-link, .navbar[data-bs-theme="dark"] .nav-link {
  color: rgba(242, 242, 243, 0.8);
}
.navbar-dark .nav-link:hover, .navbar[data-bs-theme="dark"] .nav-link:hover { color: #f2f2f3; }
.navbar-dark .nav-link.active, .navbar[data-bs-theme="dark"] .nav-link.active {
  color: #f2f2f3; box-shadow: inset 0 -2px 0 var(--color-accent-400);
}
.dropdown-menu {
  border-radius: 0; border-color: var(--color-divider);
  background: var(--color-bg); box-shadow: var(--shadow-md);
}
.dropdown-item:hover, .dropdown-item:focus { background: rgba(89, 128, 166, 0.10); }
.dropdown-header {
  font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase;
  color: rgba(29, 31, 32, 0.55);
}

/* ── Badges and status chips ───────────────────────────────────────────── */
.badge {
  border-radius: 0; font-weight: 500; font-size: 11px;
  letter-spacing: 0.06em; text-transform: uppercase; padding: 3px 9px;
}
.text-bg-dark      { background: var(--color-accent-900) !important; color: var(--color-bg) !important; }
.text-bg-success   { background: var(--color-accent) !important;     color: var(--color-bg) !important; }
.text-bg-warning   { background: transparent !important; color: var(--color-alert) !important; box-shadow: inset 0 0 0 1px var(--color-alert); }
.text-bg-danger    { background: var(--color-alert) !important;      color: var(--color-bg) !important; }
.text-bg-secondary { background: var(--color-neutral-600) !important; color: var(--color-bg) !important; }
.text-bg-light     { background: transparent !important; color: rgba(29,31,32,0.6) !important; box-shadow: inset 0 0 0 1px var(--color-divider); }
.badge.text-bg-secondary-subtle {
  background: transparent !important; color: rgba(29, 31, 32, 0.55) !important;
  box-shadow: inset 0 0 0 1px rgba(29, 31, 32, 0.4); border-style: dashed !important;
}

/* ── Tables ────────────────────────────────────────────────────────────── */
.table {
  --bs-table-bg: transparent;
  --bs-table-hover-bg: rgba(29, 31, 32, 0.04);
  --bs-table-border-color: rgba(29, 31, 32, 0.08);
  color: var(--color-text);
}
.table > thead th {
  font-family: var(--font-body);
  font-size: 10.5px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase;
  color: rgba(29, 31, 32, 0.6);
  border-bottom: 1px solid var(--color-divider);
  background: var(--color-bg);
}
.table-statement tr.row-header td { color: rgba(29, 31, 32, 0.55); }
.table-statement tr.row-total td {
  border-top: 2px solid var(--color-text);
  border-bottom: 3px double var(--color-text);
}
.table-statement tr.row-suspense td { background: var(--color-alert-tint); }
.table-statement a.drill { border-bottom-color: rgba(29, 31, 32, 0.4); }
.table-statement a.drill:hover { color: var(--color-accent); border-bottom-color: var(--color-accent); }
.table-sticky-first thead th:first-child,
.table-sticky-first tbody td:first-child {
  background: var(--color-bg);
  box-shadow: 1px 0 0 var(--color-divider);
}

/* ── Amounts and variance ──────────────────────────────────────────────── */
.amt { font-variant-numeric: tabular-nums; white-space: nowrap; }
.amt.neg { color: var(--color-alert); }
.kpi-delta-up   { color: var(--color-accent-700); white-space: nowrap; }
.kpi-delta-down { color: var(--color-alert);      white-space: nowrap; }
.check-pass { color: var(--color-accent-700); }
.check-fail { color: var(--color-alert); }
.check-warn { color: var(--color-accent-600); }

/* ── KPI spec plate ────────────────────────────────────────────────────── */
/* One framed plate with 1px internal rules, not N separate cards.
   Markup: <div class="kpi-plate blueprint"><div class="kpi-cell">…</div>…</div> */
.kpi-plate {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--color-divider);
}
.kpi-cell {
  background: var(--color-bg);
  padding: var(--space-4) var(--space-4);
  display: flex; flex-direction: column; gap: var(--space-1);
  min-height: 104px;
}
.kpi-cell .kpi-label {
  font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase;
  color: rgba(29, 31, 32, 0.55);
}
.kpi-cell .kpi-value {
  font-family: var(--font-heading); font-weight: var(--font-heading-weight);
  font-size: 31px; line-height: 1; font-variant-numeric: tabular-nums;
}
.kpi-cell .kpi-unit { font-size: 12px; color: rgba(29, 31, 32, 0.5); }
.kpi-cell .kpi-sub  { font-size: 12.5px; color: rgba(29, 31, 32, 0.6); }
@media (max-width: 1200px) { .kpi-plate { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px)  { .kpi-plate { grid-template-columns: 1fr; } }

/* ── Close-out progress bar ────────────────────────────────────────────── */
.progress-close { display: flex; height: 14px; border: 1px solid var(--color-divider); }
.progress-close > span { display: block; height: 100%; }
.seg-closed      { background: var(--color-accent-900); }
.seg-submitted   { background: var(--color-accent); }
.seg-draft       { background: var(--color-accent-400); }
.seg-not-started { background: rgba(29, 31, 32, 0.12); }

/* ── Blocker list ──────────────────────────────────────────────────────── */
.blocker { display: flex; gap: var(--space-3); align-items: flex-start; }
.blocker::before {
  content: ""; width: 6px; height: 6px; margin-top: 7px; flex: none;
  background: var(--color-alert);
}

/* ── Filter chips (dashboard subsidiary panel) ─────────────────────────── */
.chip-filter {
  font-family: var(--font-body); font-size: 12.5px; padding: 5px 11px;
  border: 1px solid var(--color-divider); border-radius: 0;
  background: transparent; color: var(--color-text);
  cursor: pointer; white-space: nowrap; text-decoration: none;
}
.chip-filter:hover { background: rgba(29, 31, 32, 0.07); color: var(--color-text); }
.chip-filter .chip-count { opacity: 0.6; margin-left: 4px; }
.chip-filter[aria-pressed="true"], .chip-filter.active {
  background: var(--color-accent); border-color: var(--color-accent); color: var(--color-bg);
}

/* ── Diverging variance bar ────────────────────────────────────────────── */
.var-track { position: relative; display: block; width: 100%; height: 13px; }
.var-track::before {
  content: ""; position: absolute; left: 50%; top: 0; bottom: 0;
  width: 1px; background: rgba(29, 31, 32, 0.35);
}
.var-bar { position: absolute; top: 3px; height: 7px; }
.var-bar.pos { left: 50%; background: var(--color-accent); }
.var-bar.neg { right: 50%; background: var(--color-alert); }

/* ── Wizard steps (square, not pills) ──────────────────────────────────── */
.wizard-steps .step {
  border-radius: 0; background: transparent;
  border: 1px solid var(--color-divider); color: rgba(29, 31, 32, 0.7);
}
.wizard-steps .step.active { background: var(--color-accent); border-color: var(--color-accent); color: var(--color-bg); }
.wizard-steps .step.done   { background: transparent; border-color: var(--color-accent); color: var(--color-accent-800); }

/* ── Charts ────────────────────────────────────────────────────────────── */
.chart { color: var(--color-text); }
.chart-legend {
  font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase;
  color: rgba(29, 31, 32, 0.55);
}
.chart-swatch { border-radius: 0; height: 2px; width: 16px; }

/* ── Alerts and modals ─────────────────────────────────────────────────── */
.alert { border-radius: 0; border-color: var(--color-divider); }
.modal-content { border-radius: 0; border-color: var(--color-divider); background: var(--color-bg); }
.modal-header, .modal-footer { border-color: var(--color-divider); }

/* ── Print ─────────────────────────────────────────────────────────────── */
@media print {
  .blueprint > .corner { display: none; }
  .card, .table { border-color: rgba(29, 31, 32, 0.35); }
}
