/* ============================================================
   ESG styles (shared)
   - Tokens: the ESG palette as --ct-esg-* variables, next to ClimateTab's --ct-* ones.
   - Components: .ct-esg-* (card, banner, kicker, muted, tabs, chip, bar, pill, tag, btn, icon-btn, empty),
     usable on any ESG page.
   - Workspace: .esg-ws-* layout for the ESG Metrics page (includes/esg-dashboard/esg-metrics-workspace.php)
     and the questions form it embeds (.esg-question-form, .esg-map-*, .esg-headcount-*, .esg-history-*).
   Moved here from the page's inline <style> on 2026-10-13 with rule order kept, so the cascade is the same. Plain flex
   layout now uses Bootstrap/Hyper utilities in the markup, only where the value is identical (Hyper: gap-1 = 6px,
   gap-2 = 12px, gap-3 = 24px).
   ============================================================ */

:root {
  --ct-esg-ink: #17212B;
  --ct-esg-ink-2: #3A444D;
  --ct-esg-muted: #5B6670;
  --ct-esg-line: #E3E6E1;
  --ct-esg-line-2: #D5D9D3;
  --ct-esg-track: #E6E9E4;
  --ct-esg-surface: #FFFFFF;
  --ct-esg-surface-2: #FAFBF9;
  --ct-esg-tint: #F0F2EE;
  --ct-esg-brand: #0E5A4C;
  --ct-esg-brand-soft: #E0F0EC;
  --ct-esg-brand-row: #EEF6F3;
}

/* The theme's body[data-layout=detached] .content-page { overflow: hidden } turns .content-page into a scroll
   container, so the drawer's position:sticky never tracks the viewport. clip still clips but isn't a scroll
   container; browsers without clip fall back to visible. "html body" is there to out-rank the theme selector. */
html body .content-page:has(> .esg-ws) { overflow: visible; overflow: clip; }

.esg-ws {
  color: var(--ct-esg-ink);
  padding-bottom: 48px;
  font-variant-numeric: tabular-nums;
}
.esg-ws h1, .esg-ws h2, .esg-ws h3 { color: var(--ct-esg-ink); margin: 0; }
.ct-esg-muted { font-size: 13px; color: var(--ct-esg-muted); }
.ct-esg-kicker { display: block; font-size: 12px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ct-esg-muted); }

/* Header */
.esg-ws-header { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px; padding-top: 8px; }
.esg-ws-title { display: flex; flex-direction: column; gap: 4px; }
.esg-ws-title h1 { font-size: 28px; font-weight: 700; letter-spacing: -0.01em; }
.esg-ws-year { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--ct-esg-muted); margin: 0; }
.esg-ws-year select, .esg-ws-search {
  font-size: 14px; color: var(--ct-esg-ink); border: 1px solid var(--ct-esg-line-2); border-radius: 8px; background: var(--ct-esg-surface);
}
.esg-ws-year select { padding: 9px 12px; }

/* Overview cards */
.esg-ws-overview { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; }
.ct-esg-card {
  font: inherit; color: inherit; cursor: pointer; text-align: left; display: flex; align-items: center; gap: 16px;
  padding: 20px; border-radius: 14px; background: var(--ct-esg-surface); border: 1px solid var(--ct-esg-line);
}
.ct-esg-card[aria-pressed="true"] { border: 2px solid var(--ct-esg-brand); padding: 19px; box-shadow: 0 6px 18px rgba(14, 90, 76, 0.12); }
.ct-esg-card svg { flex: none; }
.ct-esg-card-text { display: flex; flex-direction: column; gap: 4px; }
.ct-esg-card-title { font-size: 18px; font-weight: 700; }
.ct-esg-banner { background: var(--ct-esg-brand); color: #FFFFFF; border-radius: 14px; padding: 20px; display: flex; flex-direction: column; gap: 8px; justify-content: center; }
.ct-esg-banner .ct-esg-kicker { color: #BFE0D6; }
.ct-esg-banner-title { font-size: 18px; font-weight: 700; }
.ct-esg-banner-sub { font-size: 13px; color: #D5ECE5; }

/* Toolbar */
.esg-ws-toolbar { background: var(--ct-esg-surface); border: 1px solid var(--ct-esg-line); border-radius: 14px; padding: 14px 16px; display: flex; flex-direction: column; gap: 14px; }
.ct-esg-tabs { display: flex; flex-wrap: wrap; gap: 4px; background: var(--ct-esg-tint); border-radius: 10px; padding: 4px; }
.ct-esg-tab { font: inherit; font-size: 14px; font-weight: 600; min-height: 40px; padding: 0 14px; border-radius: 8px; border: 0; cursor: pointer; color: var(--ct-esg-ink); background: transparent; }
.ct-esg-tab[aria-selected="true"] { background: var(--ct-esg-surface); box-shadow: 0 1px 3px rgba(23, 33, 43, 0.12); }
.ct-esg-tab span { color: var(--ct-esg-muted); font-weight: 500; margin-left: 4px; }
.esg-ws-search { display: flex; align-items: center; gap: 8px; padding: 0 12px; flex: 1 1 240px; max-width: 360px; margin: 0; color: var(--ct-esg-muted); }
.esg-ws-search input { font: inherit; font-size: 14px; border: 0; outline: none; padding: 10px 0; width: 100%; background: transparent; color: var(--ct-esg-ink); }
.esg-ws-search:focus-within { border-color: var(--ct-esg-brand); }
.esg-ws-chips { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: flex-start; }
.ct-esg-chip { font: inherit; font-size: 13px; font-weight: 600; min-height: 34px; padding: 0 12px; border-radius: 999px; cursor: pointer; border: 1px solid var(--ct-esg-line-2); background: var(--ct-esg-surface); color: var(--ct-esg-ink-2); }
.ct-esg-chip[aria-pressed="true"] { border-color: var(--ct-esg-brand); background: var(--ct-esg-brand); color: #FFFFFF; }

/* Workspace */
.esg-ws-workspace { display: flex; flex-wrap: wrap; gap: 20px; align-items: flex-start; }
.esg-ws-list { flex: 999 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 20px; }
.esg-ws-list-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.esg-ws-list-head h2 { font-size: 18px; font-weight: 700; }
#esgSections { display: flex; flex-direction: column; gap: 20px; }
.ct-esg-empty { background: var(--ct-esg-surface); border: 1px solid var(--ct-esg-line); border-radius: 14px; padding: 32px; text-align: center; color: var(--ct-esg-muted); }

.esg-ws-section { background: var(--ct-esg-surface); border: 1px solid var(--ct-esg-line); border-radius: 14px; overflow: hidden; }
.esg-ws-section-head { padding: 14px 18px; background: var(--ct-esg-surface-2); border-bottom: 1px solid var(--ct-esg-line); }
.esg-ws-section-head h3 { font-size: 15px; font-weight: 700; }
.esg-ws-section-sum { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--ct-esg-muted); }
.ct-esg-bar { display: block; height: 6px; background: var(--ct-esg-track); border-radius: 3px; overflow: hidden; }
.ct-esg-bar > span { display: block; height: 100%; }
.esg-ws-section-sum .ct-esg-bar { width: 120px; }
.esg-ws-rows { overflow-x: auto; }
.esg-ws-row {
  font: inherit; color: inherit; width: 100%; min-width: 480px; cursor: pointer; display: grid;
  grid-template-columns: minmax(220px, 1fr) 120px 120px; gap: 16px; align-items: center;
  padding: 14px 18px; border: 0; border-bottom: 1px solid #EEF0EC; text-align: left; background: var(--ct-esg-surface);
}
.esg-ws-row:last-child { border-bottom: 0; }
.esg-ws-row:hover { background: var(--ct-esg-surface-2); }
.esg-ws-row[aria-current="true"] { background: var(--ct-esg-brand-row); box-shadow: inset 3px 0 0 var(--ct-esg-brand); }
.esg-ws-row-name { min-width: 0; }
.esg-ws-row-title { font-size: 15px; font-weight: 600; color: var(--ct-esg-ink); }
.ct-esg-tag { font-size: 12px; font-weight: 600; border-radius: 6px; padding: 2px 8px; background: var(--ct-esg-surface); color: #4A545E; border: 1px solid #DCE0DB; white-space: nowrap; }
.ct-esg-tag--exact { background: var(--ct-esg-brand-soft); color: var(--ct-esg-brand); border-color: #BFE0D6; }
.ct-esg-tag--partial { background: #FFF0D4; color: #7A4A00; border-color: #F2D9A6; }
.esg-ws-row-code { color: var(--ct-esg-muted); font-weight: 500; margin-right: 6px; }
.esg-ws-row-progress { font-size: 13px; color: var(--ct-esg-ink-2); }
.ct-esg-pill { font-size: 12px; font-weight: 700; border-radius: 999px; padding: 4px 10px; white-space: nowrap; justify-self: start; }

/* Drawer */
.esg-ws-drawer {
  flex: 1 1 400px; max-width: 100%; background: var(--ct-esg-surface); border: 1px solid var(--ct-esg-line); border-radius: 14px;
  box-shadow: 0 12px 32px rgba(23, 33, 43, 0.08); display: flex; flex-direction: column;
  position: sticky; top: 16px; max-height: calc(100vh - 32px);
}
.esg-ws-drawer[hidden] { display: none; }
.esg-ws-drawer-head { padding: 20px 22px 16px; border-bottom: 1px solid var(--ct-esg-line); display: flex; flex-direction: column; gap: 10px; }
.esg-ws-drawer-head h2 { font-size: 20px; font-weight: 700; margin-top: 4px; }
.esg-ws-drawer-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 13px; color: var(--ct-esg-muted); }
.esg-ws-drawer-body { padding: 18px 22px; overflow-y: auto; overscroll-behavior: contain; flex: 1 1 auto; min-height: 120px; }
.esg-ws-drawer-foot { padding: 14px 22px 20px; border-top: 1px solid var(--ct-esg-line); display: flex; flex-wrap: wrap; gap: 8px; justify-content: space-between; align-items: center; }
.esg-ws-drawer-foot-actions { display: flex; gap: 8px; }
.ct-esg-icon-btn { width: 44px; height: 44px; border-radius: 8px; border: 1px solid var(--ct-esg-line); background: var(--ct-esg-surface); color: var(--ct-esg-ink-2); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.ct-esg-btn { font: inherit; font-size: 14px; font-weight: 600; min-height: 44px; padding: 0 14px; border-radius: 8px; border: 1px solid var(--ct-esg-line-2); background: var(--ct-esg-surface); color: var(--ct-esg-ink); cursor: pointer; }
.ct-esg-btn--primary { border: 0; padding: 0 16px; background: var(--ct-esg-brand); color: #FFFFFF; }
.ct-esg-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.esg-ws-drawer-loading { color: var(--ct-esg-muted); font-size: 14px; padding: 8px 0; min-height: 120px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; }
.esg-ws-drawer-loading .spinner-border { width: 2rem; height: 2rem; border-width: .2em; color: var(--ct-esg-brand); }
.esg-ws-drawer-error { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; padding: 12px 14px; border-radius: 10px; background: #FBEAEA; color: #8A1F1F; font-size: 14px; }

/* Questions rendered by esg-group-questions-form.js inside the drawer */
/* One title style for every question, whether it's a text/number label or a checkbox label. */
.esg-ws-drawer-body .esg-question-form .form-label,
.esg-ws-drawer-body .esg-question-form .form-check-label { font-size: 14px; font-weight: 600; line-height: 1.4; color: var(--ct-esg-ink); }
.esg-ws-drawer-body .esg-question-form .form-control,
.esg-ws-drawer-body .esg-question-form .form-select { color: var(--ct-esg-ink); border-color: var(--ct-esg-line-2); border-radius: 8px; font-size: 15px; padding-top: 10px; padding-bottom: 10px; }
.esg-ws-drawer-body .esg-question-form .input-group > .form-control { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.esg-ws-drawer-body .esg-question-form .input-group > .form-select,
.esg-ws-drawer-body .esg-question-form .input-group > .input-group-text { background-color: #F4F5F2; color: var(--ct-esg-muted); font-size: 13px; border-color: var(--ct-esg-line-2); border-top-left-radius: 0; border-bottom-left-radius: 0; }
.esg-ws-drawer-body .esg-question-form .form-control:focus,
.esg-ws-drawer-body .esg-question-form .form-select:focus { border-color: var(--ct-esg-brand); box-shadow: 0 0 0 3px rgba(14, 90, 76, 0.15); }
.esg-ws-drawer-body .esg-question-form .form-control[readonly] { background: #F4F5F2; color: var(--ct-esg-ink-2); cursor: default; }
.esg-ws-drawer-body .esg-question-form .form-control[readonly]:focus { border-color: var(--ct-esg-line-2); box-shadow: none; }
.esg-ws-drawer-body .esg-question-form .form-check-input:checked { background-color: var(--ct-esg-brand); border-color: var(--ct-esg-brand); }
.esg-ws-drawer-body .esg-question-form .mb-3,
.esg-ws-drawer-body .esg-question-form .mb-4 { margin-bottom: 18px !important; }
.esg-ws-drawer-body .esg-question-form .border.rounded { border-color: var(--ct-esg-line) !important; border-radius: 10px !important; background: #F7FAF8; }
.esg-ws-drawer-body .esg-question-form .btn-outline-primary { color: var(--ct-esg-brand); border-color: var(--ct-esg-line-2); }
.esg-ws-drawer-body .esg-question-form .btn-outline-primary:hover { background: var(--ct-esg-brand-soft); color: var(--ct-esg-brand); }

/* "Your answer here also fills" block and per-question mapping lines */
.esg-ws-drawer-body .esg-map-block { background: #F7FAF8; border: 1px solid var(--ct-esg-line); border-radius: 10px; padding: 12px 14px; margin-bottom: 18px; display: flex; flex-direction: column; gap: 8px; }
.esg-ws-drawer-body .esg-map-block-title { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; color: var(--ct-esg-brand); }
.esg-ws-drawer-body .esg-map-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 13px; color: var(--ct-esg-ink-2); }
.esg-ws-drawer-body .esg-map-std { font-size: 12px; font-weight: 700; border-radius: 6px; padding: 2px 8px; background: var(--ct-esg-surface); color: var(--ct-esg-ink); border: 1px solid #DCE0DB; }
.esg-ws-drawer-body .esg-map-match { font-size: 12px; font-weight: 700; border-radius: 999px; padding: 3px 10px; white-space: nowrap; }
.esg-ws-drawer-body .esg-map-match-exact { background: var(--ct-esg-brand-soft); color: var(--ct-esg-brand); }
.esg-ws-drawer-body .esg-map-match-partial { background: #FFF0D4; color: #7A4A00; }
.esg-ws-drawer-body .esg-map-codes { color: var(--ct-esg-muted); }
.esg-ws-drawer-body .esg-map-link { font: inherit; color: var(--ct-esg-brand); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.esg-ws-drawer-body .esg-map-link:hover { color: #093F35; }
.esg-ws-drawer-body .esg-map-link:focus-visible { outline: 2px solid var(--ct-esg-brand); outline-offset: 2px; border-radius: 4px; }
.esg-ws-drawer-body .esg-map-link.esg-map-std { font-size: 12px; font-weight: 700; color: var(--ct-esg-ink); text-decoration: none; border: 1px solid #DCE0DB; border-radius: 6px; padding: 2px 8px; background: var(--ct-esg-surface); }
.esg-ws-drawer-body .esg-map-link.esg-map-std:hover { border-color: var(--ct-esg-brand); color: var(--ct-esg-brand); }
.esg-ws-drawer-body .esg-map-link-strong { font-weight: 700; }
.esg-ws-drawer-body .esg-map-link-partial { color: #7A4A00; }
.esg-ws-drawer-body .esg-map-link-partial:hover { color: #5C3700; }
.esg-ws-drawer-body .esg-map-link.esg-map-std.esg-map-std-exact { background: var(--ct-esg-brand-soft); color: var(--ct-esg-brand); border-color: #BFE0D6; }
.esg-ws-drawer-body .esg-map-link.esg-map-std.esg-map-std-partial { background: #FFF0D4; color: #7A4A00; border-color: #F2D9A6; }
.esg-ws-drawer-body .esg-question-form .esg-question-focus { border-radius: 10px; box-shadow: 0 0 0 3px rgba(14, 90, 76, 0.25); transition: box-shadow 0.3s; }
.esg-ws-drawer-body .esg-question-form .esg-question-maps { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; font-size: 12px; color: var(--ct-esg-muted); }
.esg-ws-drawer-body .esg-question-form .esg-question-maps details summary { cursor: pointer; color: #7A4A00; font-weight: 600; }
.esg-ws-drawer-body .esg-question-form .esg-question-maps ul { margin: 6px 0 0; padding-left: 18px; }
.esg-ws-drawer-body .esg-question-form .esg-question-maps li { margin-bottom: 4px; }
.esg-ws-drawer-body .esg-question-form .esg-question-maps .esg-related-answer { color: var(--ct-esg-ink-2); font-weight: 600; }

/* Percentage questions with the optional headcount calculator (count_or_percentage) */
.esg-ws-drawer-body .esg-question-form .esg-percent-sum { margin: -8px 0 12px; font-weight: 600; }
.esg-ws-drawer-body .esg-question-form .esg-headcount-helper { border: 1px solid var(--ct-esg-line); border-radius: 10px; background: #F7FAF8; padding: 10px 14px; }
.esg-ws-drawer-body .esg-question-form .esg-headcount-helper summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--ct-esg-brand); }
.esg-ws-drawer-body .esg-question-form .esg-headcount-body { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
.esg-ws-drawer-body .esg-question-form .esg-headcount-row { display: grid; grid-template-columns: minmax(0, 1fr) 140px; gap: 12px; align-items: center; }
.esg-ws-drawer-body .esg-question-form .esg-headcount-label { font-size: 13px; color: var(--ct-esg-ink-2); margin: 0; }
.esg-ws-drawer-body .esg-question-form .esg-headcount-total { padding-top: 10px; border-top: 1px solid var(--ct-esg-line); }
.esg-ws-drawer-body .esg-question-form .esg-headcount-total .esg-headcount-label { font-weight: 600; color: var(--ct-esg-ink); }

.esg-ws-drawer-body .esg-question-form .esg-history-btn { font-size: 13px; font-weight: 600; color: var(--ct-esg-brand); text-decoration: none; white-space: nowrap; flex: none; }
.esg-ws-drawer-body .esg-question-form .esg-history-btn:hover { text-decoration: underline; }

/* Answer history modal (built by esg-group-questions-form.js, appended to <body>) */
.esg-history-modal .modal-content { border: 0; border-radius: 14px; color: var(--ct-esg-ink); }
.esg-history-modal .modal-header { border-bottom: 0; padding: 24px 28px 12px; align-items: flex-start; }
.esg-history-modal .modal-title { font-size: 20px; font-weight: 600; color: var(--ct-esg-ink); }
.esg-history-modal .esg-history-sub { font-size: 13px; color: var(--ct-esg-muted); margin-top: 4px; }
.esg-history-modal .modal-body { padding: 4px 28px 8px; }
.esg-history-modal .modal-footer { border-top: 0; padding: 12px 28px 24px; }
.esg-history-table { font-size: 15px; color: var(--ct-esg-ink); }
.esg-history-table thead th { background: #F7F8FA; font-weight: 600; padding: 14px 12px; border-bottom: 1px solid var(--ct-esg-line); white-space: nowrap; position: sticky; top: 0; }
.esg-history-table thead th + th { border-left: 1px solid var(--ct-esg-line); }
.esg-history-table td { padding: 16px 12px; vertical-align: middle; border-bottom: 1px solid #EEF0EC; }
.esg-history-table .esg-history-date { min-width: 150px; }
.esg-history-table .esg-history-by { max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.esg-history-table .esg-history-value { min-width: 140px; max-width: 280px; overflow-wrap: anywhere; }
.esg-history-action { display: inline-block; font-size: 13px; line-height: 1.4; padding: 2px 10px; border-radius: 4px; border: 1px solid #91B4F5; background: #EEF4FF; color: #2F5BD3; }
.esg-history-empty { padding: 32px 8px; text-align: center; color: var(--ct-esg-muted); font-size: 14px; }

@media (max-width: 991.98px) {
  .esg-ws-drawer { position: static; max-height: none; }
  .esg-ws-drawer-body { overflow: visible; }
}
@media (max-width: 575.98px) {
  .esg-ws-row { min-width: 0; grid-template-columns: 1fr auto; row-gap: 10px; }
  .esg-ws-row-name { grid-column: 1 / -1; }
}
