/* ═══════════════════════════════════════════════════
   Stiftelsematchning – stylesheet
   ═══════════════════════════════════════════════════ */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --sidebar-w: 260px;
  /* STIFTELSERS-E2E-UX-02-CONTRAST-POLISH-02: the dark-navy sidebar with
     brightened white-ish text (previous pass) still read as too pale per
     the Founder's fresh visual feedback -- flipped to the more reliable
     option offered in that feedback: near-black text on a light
     background, guaranteed legible on any screen/projector regardless of
     blue-channel reproduction. The deep municipal blue is kept as an
     ACCENT (active-item indicator/text, hover) rather than the dominant
     surface, preserving the municipal identity without betting readability
     on a dark-background/light-text combination again. */
  --sidebar-bg: #eef3f8;
  --sidebar-text: #14202b;
  --sidebar-text-soft: #45566b;
  --sidebar-hover-bg: rgba(13,59,102,.08);
  --sidebar-active-bg: #d7e6f4;
  --sidebar-active-text: #0d3b66;
  --bg: #f7f9fb;
  --card: #ffffff;
  --border: #cbd5df;
  --text: #14202b;
  --muted: #445059;
  --accent: #1d4ed8;
  --accent-dark: #1e40af;
  --success-bg: #f0fdf4;
  --success-text: #166534;
  --success-border: #bbf7d0;
  --info-bg: #eff6ff;
  --info-text: #1d4ed8;
  --info-border: #bfdbfe;
  --error-bg: #fef2f2;
  --error-text: #dc2626;
  --error-border: #fecaca;
  --purple-bg: #f5f3ff;
  --purple-text: #6d28d9;
  --purple-border: #ddd6fe;
  /* Rounder cards, generous spacing feel (Finding 03) -- was 8px. */
  --r: 12px;
  --shadow-sm: 0 1px 2px rgba(15,35,55,.06);
  --shadow: 0 2px 8px rgba(15,35,55,.08), 0 1px 2px rgba(15,35,55,.05);
}

html, body {
  height: 100%;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  font-size: 15px;
  line-height: 1.55;
  background: var(--bg);
  color: var(--text);
}

/* ── Sidebar ─────────────────────────────────────── */
.sidebar {
  position: fixed;
  top: 0; left: 0;
  width: var(--sidebar-w);
  height: 100vh;
  background: var(--sidebar-bg);
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  z-index: 100;
}

.sidebar-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 18px 16px;
  border-bottom: 1px solid var(--border);
}
.brand-icon { font-size: 28px; flex-shrink: 0; }
.sidebar-brand h1 { font-size: 15px; font-weight: 700; color: var(--sidebar-text); line-height: 1.3; }
.sidebar-brand p  { font-size: 12px; color: var(--sidebar-text-soft); margin-top: 3px; }

.sidebar-nav {
  padding: 10px 8px;
  border-bottom: 1px solid var(--border);
}
.nav-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 14px;
  border-radius: 6px;
  color: var(--sidebar-text);
  text-decoration: none;
  font-size: 15px;
  font-weight: 500;
  transition: background .15s, color .15s;
  margin-bottom: 3px;
}
.nav-item:hover  { background: var(--sidebar-hover-bg); color: var(--sidebar-active-text); }
/* STIFTELSERS-E2E-UX-02-CONTRAST-POLISH(-02): active state must not rely
   on color/background alone -- a left accent bar plus bold weight makes it
   unmistakable regardless of screen/projector color reproduction. */
.nav-item.active {
  background: var(--sidebar-active-bg); color: var(--sidebar-active-text);
  font-weight: 700; border-left: 3px solid var(--sidebar-active-text); padding-left: 11px;
}
.nav-item:focus-visible {
  outline: 2px solid var(--sidebar-active-text); outline-offset: -2px;
}
.nav-icon { font-size: 16px; width: 20px; text-align: center; flex-shrink: 0; }

/* STIFTELSERS-END-TO-END-SIMPLE-APPLICATION-UX-02 Finding 02: human-task
   nav groups, replacing the old flat blocks separated only by .nav-sep. */
.nav-group { margin-bottom: 6px; }
.nav-group-label {
  /* Solid --sidebar-text-soft (dark blue-grey on the light sidebar bg) --
     clearly secondary in weight/size, never low-contrast or disabled-
     looking. See :root's --sidebar-* comment for the contrast history. */
  font-size: 11px; text-transform: uppercase; letter-spacing: .06em;
  color: var(--sidebar-text-soft); font-weight: 700; margin: 14px 14px 4px;
}
.nav-group:first-child .nav-group-label { margin-top: 4px; }
.nav-more { margin-top: 6px; }
.nav-more-summary {
  cursor: pointer; list-style: none; display: flex; align-items: center;
  justify-content: space-between; padding-right: 14px;
}
.nav-more-summary:focus-visible { outline: 2px solid var(--sidebar-active-text); outline-offset: 2px; }
.nav-more-summary::-webkit-details-marker { display: none; }
.nav-more-summary::after { content: '▾'; opacity: .85; transition: transform .15s; }
.nav-more[open] .nav-more-summary::after { transform: rotate(180deg); }

.sidebar-filters {
  padding: 16px;
  flex: 1;
}
.sidebar-filters h3 {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--sidebar-text);
  margin-bottom: 14px;
}
.filter-group { margin-bottom: 14px; }
.filter-group label {
  display: block;
  font-size: 12px;
  color: var(--sidebar-text);
  margin-bottom: 5px;
}
.filter-group input,
.filter-group select {
  width: 100%;
  padding: 7px 9px;
  background: #ffffff;
  border: 1px solid var(--border);
  border-radius: 6px;
  color: var(--text);
  font-size: 13px;
  outline: none;
  transition: border-color .15s;
}
.filter-group input:focus,
.filter-group select:focus { border-color: var(--accent); outline: 2px solid rgba(13,59,102,.3); outline-offset: 1px; }
.filter-group select option { background: #ffffff; color: var(--text); }

.sidebar-footer {
  padding: 14px 16px;
  border-top: 1px solid var(--border);
  font-size: 12px;
  color: var(--sidebar-text-soft);
}

/* ── Main layout ─────────────────────────────────── */
.main {
  margin-left: var(--sidebar-w);
  min-height: 100vh;
}
.page {
  display: none;
  padding: 32px;
  max-width: 1100px;
}
.page.active { display: block; }

.page-header { margin-bottom: 28px; }
.page-header h2 { font-size: 24px; font-weight: 700; }
.page-header p  { font-size: 15px; color: var(--muted); margin-top: 6px; }

/* ── Buttons ─────────────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 20px;
  border: 1px solid transparent;
  border-radius: 8px;
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  transition: background .15s, opacity .15s, box-shadow .15s;
  white-space: nowrap;
}
.btn:disabled { opacity: .4; cursor: not-allowed; }
.btn:focus-visible {
  outline: 3px solid #93c5fd;
  outline-offset: 2px;
}
.btn-primary { background: var(--accent); color: #fff; }
.btn-primary:hover:not(:disabled) { background: var(--accent-dark); }
.btn-secondary { background: var(--card); color: var(--text); border-color: var(--border); }
.btn-secondary:hover:not(:disabled) { background: var(--bg); }
.btn-block { width: 100%; justify-content: center; padding: 12px 20px; font-size: 16px; }

/* ── Alert boxes ─────────────────────────────────── */
.alert {
  padding: 12px 16px;
  border-radius: var(--r);
  font-size: 14px;
  margin-bottom: 16px;
  line-height: 1.5;
}
.alert-info    { background: var(--info-bg);    color: var(--info-text);    border: 1px solid var(--info-border); }
.alert-success { background: var(--success-bg); color: var(--success-text); border: 1px solid var(--success-border); }
.alert-error   { background: var(--error-bg);   color: var(--error-text);   border: 1px solid var(--error-border); }
.alert-cached  { background: var(--purple-bg);  color: var(--purple-text);  border: 1px solid var(--purple-border); }

/* ── Spinner ─────────────────────────────────────── */
.spinner-wrap {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 28px 0;
  color: var(--muted);
}
@keyframes spin { to { transform: rotate(360deg); } }
.spinner {
  width: 22px; height: 22px;
  border: 3px solid var(--border);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: spin .8s linear infinite;
  flex-shrink: 0;
}

/* ── AI page ─────────────────────────────────────── */
.search-box {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 20px;
  margin-bottom: 24px;
  box-shadow: var(--shadow-sm);
}
.search-box textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 14px;
  font-family: inherit;
  resize: vertical;
  outline: none;
  background: var(--bg);
  transition: border-color .15s;
  margin-bottom: 12px;
}
.search-box textarea:focus { border-color: var(--accent); }
.match-mode-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  font-size: 13px;
  color: var(--muted);
}
.match-mode-row select {
  padding: 6px 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 13px;
  background: var(--bg);
  flex: 1;
}
.pm-local-action {
  padding: 8px 16px 4px;
  border-top: 1px solid var(--border);
  margin-top: 8px;
}

/* Result cards */
.result-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  margin-bottom: 10px;
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  transition: box-shadow .15s;
}
.result-card:hover { box-shadow: var(--shadow); }

.result-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 15px 18px;
  cursor: pointer;
  user-select: none;
}
.result-rank { font-size: 13px; font-weight: 700; color: var(--muted); width: 26px; flex-shrink: 0; }
.result-name { flex: 1; font-weight: 600; font-size: 15px; }
.chevron { font-size: 12px; color: var(--muted); transition: transform .2s; flex-shrink: 0; }
.result-card.open .chevron { transform: rotate(180deg); }

.result-body {
  display: none;
  border-top: 1px solid var(--border);
  padding: 20px 18px;
}
.result-card.open .result-body { display: block; }

.badge {
  display: inline-flex;
  align-items: center;
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  flex-shrink: 0;
}
.badge-high  { background: #dcfce7; color: #166534; }
.badge-mid   { background: #fef9c3; color: #854d0e; }
.badge-low   { background: #fee2e2; color: #991b1b; }
.badge-local { background: #e0e7ff; color: #3730a3; }

.reason-box {
  background: #eff6ff;
  border-left: 3px solid var(--accent);
  padding: 10px 12px;
  border-radius: 0 4px 4px 0;
  font-size: 13px;
  margin-bottom: 12px;
  line-height: 1.5;
}

.meta-row {
  display: flex;
  gap: 24px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.meta-item { display: flex; flex-direction: column; gap: 2px; }
.meta-label { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .05em; }
.meta-value { font-size: 15px; font-weight: 600; }

.purpose-text {
  font-size: 13px;
  line-height: 1.65;
  margin-bottom: 14px;
}

.contacts {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  font-size: 13px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}
.contacts a { color: var(--accent); text-decoration: none; }
.contacts a:hover { text-decoration: underline; }

.summary-box {
  background: var(--success-bg);
  border: 1px solid var(--success-border);
  border-radius: var(--r);
  padding: 14px 16px;
  margin-bottom: 20px;
  font-size: 14px;
  color: var(--success-text);
  line-height: 1.6;
}
.summary-box strong { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 5px; }

.export-row { display: flex; gap: 8px; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--border); }

/* ── Search page ─────────────────────────────────── */
.search-controls {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.search-controls input[type="text"] {
  flex: 1;
  min-width: 200px;
  padding: 9px 13px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 14px;
  font-family: inherit;
  outline: none;
  background: var(--card);
  transition: border-color .15s;
}
.search-controls input:focus { border-color: var(--accent); outline: 2px solid #bfdbfe; outline-offset: 1px; }
.search-controls select {
  padding: 9px 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 14px;
  font-family: inherit;
  background: var(--card);
  outline: none;
  cursor: pointer;
}

.table-wrap {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
table { width: 100%; border-collapse: collapse; }
thead th {
  padding: 12px 16px;
  background: var(--bg);
  text-align: left;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .04em;
  border-bottom: 1px solid var(--border);
}
tbody tr {
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: background .1s;
}
tbody tr:last-child { border-bottom: none; }
tbody tr:hover    { background: #f8fafc; }
tbody tr.selected { background: #eff6ff; }
tbody td {
  padding: 12px 16px;
  font-size: 14px;
  max-width: 260px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.td-name { font-weight: 500; max-width: 300px; }
tbody td a { color: var(--accent); text-decoration: none; }

/* Pagination */
.pagination {
  display: flex;
  align-items: center;
  gap: 5px;
  margin-top: 14px;
  flex-wrap: wrap;
}
.pag-info { font-size: 13px; color: var(--muted); margin-right: 6px; }
.pag-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 34px;
  padding: 0 8px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--card);
  font-size: 13px;
  cursor: pointer;
  font-family: inherit;
  transition: background .1s, border-color .1s;
}
.pag-btn:hover:not(:disabled) { background: var(--bg); border-color: var(--accent); }
.pag-btn.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.pag-btn:disabled { opacity: .4; cursor: not-allowed; }

/* Detail panel */
.detail-panel {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 20px;
  margin-top: 14px;
  box-shadow: var(--shadow-sm);
}
.detail-panel.hidden { display: none; }
.detail-title {
  font-size: 16px;
  font-weight: 700;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 14px;
}
.detail-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-bottom: 14px;
}
.detail-field label {
  font-size: 11px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  display: block;
  margin-bottom: 3px;
}
.detail-field span { font-size: 14px; font-weight: 500; }
.detail-purpose {
  font-size: 14px;
  line-height: 1.7;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 12px;
  margin-bottom: 14px;
}
.detail-contacts {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  font-size: 13px;
}
.detail-contacts a { color: var(--accent); text-decoration: none; }
.detail-contacts a:hover { text-decoration: underline; }

/* ── Agent status (step 1 TF-IDF spinner) ────────── */
.agent-status {
  display: flex;
  align-items: center;
  gap: 16px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 20px 24px;
  margin-bottom: 16px;
  box-shadow: var(--shadow-sm);
}
.agent-icon { font-size: 32px; flex-shrink: 0; }
.agent-label { font-size: 15px; font-weight: 500; color: var(--text); }
.agent-status .spinner { margin-left: auto; }

/* ── AI progress panel (step 2 queue polling) ────── */
.ai-progress {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 20px 24px;
  margin-bottom: 16px;
  box-shadow: var(--shadow-sm);
}
.ai-progress-header {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 16px;
}
.ai-progress-title { font-size: 15px; font-weight: 600; }
.progress-meta {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 12px;
}
.pm-item { display: flex; flex-direction: column; gap: 3px; }
.pm-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--muted);
}
.pm-value { font-size: 14px; font-weight: 500; }
.pm-value code {
  font-size: 12px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 1px 5px;
  font-family: monospace;
}

/* ── Feedback buttons ────────────────────────────── */
.save-cand-actions {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.feedback-row {
  display: flex;
  align-items: center;
  gap: 7px;
}
.feedback-label { font-size: 12px; color: var(--muted); }
.feedback-btn {
  border: 1px solid var(--border);
  background: var(--card);
  border-radius: 6px;
  padding: 3px 10px;
  font-size: 15px;
  cursor: pointer;
  font-family: inherit;
  transition: background .15s;
  line-height: 1.4;
}
.feedback-btn:hover:not(:disabled) { background: var(--bg); }
.feedback-btn:disabled { opacity: .4; cursor: not-allowed; }
.feedback-done { font-size: 13px; color: var(--muted); }

/* ── About page ──────────────────────────────────── */
.about { max-width: 700px; }
.about h3 { font-size: 15px; font-weight: 700; margin: 22px 0 8px; }
.about h3:first-child { margin-top: 0; }
.about p  { font-size: 14px; line-height: 1.7; color: var(--muted); margin-bottom: 8px; }
.about ul { padding-left: 20px; }
.about li { font-size: 14px; line-height: 1.7; color: var(--muted); }
.about hr { border: none; border-top: 1px solid var(--border); margin: 20px 0; }
.about table { border: 1px solid var(--border); border-radius: 6px; overflow: hidden; margin: 10px 0; }
.about table th, .about table td { padding: 8px 16px; font-size: 14px; }
.about table th { background: var(--bg); font-weight: 600; text-align: left; }
.about table td { color: var(--muted); }

/* ── Utilities ───────────────────────────────────── */
.hidden { display: none !important; }
.btn-sm { padding: 7px 16px; font-size: 14px; }

/* ── Candidate status badges ─────────────────────── */
.badge-interested { background: #dbeafe; color: #1d4ed8; }
.badge-applied    { background: #fef3c7; color: #92400e; }
.badge-awarded    { background: #dcfce7; color: #166534; }
.badge-rejected   { background: #f1f5f9; color: #64748b; }

/* ── Nav count badge ─────────────────────────────── */
.nav-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  background: var(--accent);
  color: #fff;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 700;
  margin-left: 4px;
  vertical-align: middle;
}

/* ── Status tabs ─────────────────────────────────── */
.cand-tabs {
  display: flex;
  gap: 6px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}
.cand-tab {
  padding: 7px 16px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--card);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  color: var(--muted);
  transition: background .15s, color .15s, border-color .15s;
}
.cand-tab:hover  { background: var(--bg); color: var(--text); }
.cand-tab.active { background: var(--accent); color: #fff; border-color: var(--accent); }

/* ── Candidate cards ─────────────────────────────── */
.candidate-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  margin-bottom: 8px;
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  transition: box-shadow .15s;
}
.candidate-card:hover { box-shadow: var(--shadow); }

.cand-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 13px 16px;
  cursor: pointer;
  user-select: none;
}
.cand-info { flex: 1; min-width: 0; }
.cand-name {
  display: block;
  font-weight: 600;
  font-size: 14px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cand-meta { font-size: 12px; color: var(--muted); }

.cand-body {
  display: none;
  border-top: 1px solid var(--border);
  padding: 16px;
}
.candidate-card.open .cand-body  { display: block; }
.candidate-card.open .chevron    { transform: rotate(180deg); }

.cand-purpose {
  font-size: 13px;
  line-height: 1.65;
  color: var(--muted);
  margin-bottom: 14px;
}

/* Edit form inside card */
.cand-edit {
  border-top: 1px solid var(--border);
  padding-top: 14px;
  margin-top: 4px;
}
.cand-edit-row { margin-bottom: 10px; }
.cand-edit-row label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--muted);
  margin-bottom: 5px;
}
.cand-edit-row select,
.cand-edit-row textarea {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 14px;
  font-family: inherit;
  background: var(--bg);
  outline: none;
  transition: border-color .15s;
  color: var(--text);
}
.cand-edit-row select:focus,
.cand-edit-row textarea:focus { border-color: var(--accent); }
.cand-edit-row textarea { resize: vertical; }

.cand-actions {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}
.cand-contacts {
  display: flex;
  gap: 14px;
  font-size: 13px;
  flex-wrap: wrap;
}
.cand-contacts a { color: var(--accent); text-decoration: none; }
.cand-contacts a:hover { text-decoration: underline; }

.cand-empty {
  text-align: center;
  padding: 48px 16px;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.6;
}
.cand-loading { padding: 24px 0; color: var(--muted); font-size: 14px; }

/* Save-to-candidates row in AI result cards */
.save-cand-row {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

/* ── S6: Cancel button ───────────────────────────── */
.btn-cancel {
  padding: 4px 12px;
  border: 1px solid #dc2626;
  border-radius: 4px;
  background: transparent;
  color: #dc2626;
  font-size: 13px;
  cursor: pointer;
  white-space: nowrap;
}
.btn-cancel:hover:not(:disabled) { background: #fef2f2; }
.btn-cancel:disabled { opacity: .5; cursor: not-allowed; }

/* ── S6: Cancelled state panel ───────────────────── */
.cancelled-panel {
  padding: 20px 24px;
  border: 1px solid #fecaca;
  border-radius: 8px;
  background: #fef2f2;
  color: #7f1d1d;
}
.cancelled-panel strong {
  display: block;
  font-size: 16px;
  font-weight: 700;
  margin-bottom: 8px;
  color: #dc2626;
}
.cancelled-panel > p {
  font-size: 14px;
  margin-bottom: 10px;
  font-weight: 600;
}
.cancelled-tips {
  padding-left: 20px;
  font-size: 14px;
  margin-bottom: 16px;
  line-height: 1.6;
}
.cancelled-tips li { margin-bottom: 4px; }

/* ── S7: Application workspace ───────────────────── */
.workspace-section {
  border-top: 1px solid var(--border);
  padding: 14px 0 4px;
}
.workspace-section:first-child { border-top: none; }
.ws-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 8px;
}
.ws-body {
  font-size: 14px;
  line-height: 1.6;
  color: var(--text);
}
.ws-contact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 16px;
}
@media (max-width: 600px) { .ws-contact-grid { grid-template-columns: 1fr; } }
.ws-contact-item {
  display: flex;
  flex-direction: column;
  font-size: 13px;
}
.ws-contact-item a { color: var(--accent); text-decoration: none; }
.ws-contact-item a:hover { text-decoration: underline; }
.ws-contact-label {
  font-size: 11px;
  color: var(--muted);
  margin-bottom: 2px;
}
.ws-missing { color: var(--muted); font-style: italic; font-size: 13px; }
.match-motivation {
  font-size: 14px;
  line-height: 1.6;
  margin-bottom: 6px;
}
.relevance-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 12px;
  background: var(--info-bg);
  color: var(--info-text);
  border: 1px solid var(--info-border);
  font-size: 12px;
  font-weight: 600;
}
.guidance-text {
  font-size: 13px;
  color: var(--muted);
  font-style: italic;
}
.ws-placeholder .ws-title { color: #a3a3a3; }
.ws-placeholder .ws-body  { color: #a3a3a3; font-style: italic; font-size: 13px; }

/* ── S8: Applicant profile ───────────────────────── */
.profile-form { max-width: 760px; }
.profile-section {
  border-top: 1px solid var(--border);
  padding: 16px 0 8px;
}
.profile-section:first-child { border-top: none; }
.ps-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 10px;
}
.ps-hint { font-weight: 400; font-size: 11px; color: var(--accent); text-transform: none; letter-spacing: 0; }
.ps-body { font-size: 14px; }
.ps-body textarea, .ps-body input[type="text"], .ps-body select {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 14px;
  background: var(--card);
  color: var(--text);
}
.ps-body textarea { resize: vertical; min-height: 80px; }
.ps-body textarea:focus, .ps-body input:focus, .ps-body select:focus {
  outline: none;
  border-color: var(--accent);
}
.ps-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
@media (max-width: 600px) { .ps-grid { grid-template-columns: 1fr; } }
.ps-field { display: flex; flex-direction: column; gap: 4px; }
.ps-field label { font-size: 12px; color: var(--muted); font-weight: 600; }
.ps-full { grid-column: 1 / -1; }

.interests-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.interest-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  border: 1px solid var(--border);
  border-radius: 16px;
  font-size: 13px;
  cursor: pointer;
  background: var(--card);
  color: var(--text);
  user-select: none;
}
.interest-chip input { display: none; }
.interest-chip.selected {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
.interest-chip:hover:not(.selected) { background: var(--bg); }

.doc-checklist { display: flex; flex-direction: column; gap: 6px; }
.doc-item {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  cursor: pointer;
  background: var(--card);
}
.doc-item input { accent-color: var(--accent); width: 16px; height: 16px; cursor: pointer; }
.doc-item.done { background: var(--success-bg); border-color: var(--success-border); color: var(--success-text); }

.profile-privacy-note {
  margin-top: 20px;
  padding: 12px 16px;
  background: var(--info-bg);
  border: 1px solid var(--info-border);
  border-radius: 6px;
  font-size: 13px;
  color: var(--info-text);
}

.profile-empty {
  max-width: 480px;
  padding: 40px 0;
  font-size: 14px;
  line-height: 1.7;
  color: var(--muted);
}

/* ── S9: AI page active profile banner ───────────────────────────────── */
.ai-profile-banner {
  background: var(--info-bg, #eff6ff);
  border: 1px solid var(--info-border, #bfdbfe);
  border-radius: 8px;
  padding: 12px 16px;
  margin-bottom: 14px;
  font-size: 13px;
}
.apb-top {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.apb-label { color: var(--muted); }
.apb-name  { color: var(--primary, #1e40af); }
.apb-purpose {
  color: var(--text-secondary, #555);
  font-style: italic;
  flex: 1;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.apb-fill-btn {
  background: var(--primary, #1e40af);
  color: #fff;
  border: none;
  border-radius: 5px;
  padding: 4px 10px;
  font-size: 12px;
  cursor: pointer;
  white-space: nowrap;
}
.apb-fill-btn:hover { opacity: .88; }
.apb-link {
  font-size: 12px;
  color: var(--muted);
  text-decoration: underline;
  white-space: nowrap;
}
.apb-opt-in {
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  font-size: 13px;
  color: var(--text, #222);
}
.apb-opt-in input[type=checkbox] { cursor: pointer; }
.ai-profile-preview {
  margin-top: 10px;
  padding: 10px 12px;
  background: #fff;
  border: 1px solid var(--info-border, #bfdbfe);
  border-radius: 6px;
  font-size: 12px;
  line-height: 1.6;
}
.ai-profile-preview.hidden { display: none; }
.app-preview-title {
  font-weight: 600;
  margin-bottom: 4px;
  color: var(--muted);
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: .04em;
}
.app-preview-line { color: var(--text-secondary, #555); }

/* ── S10: Application control — urgency badges ───────────────────────── */
.urgency-badge {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 10px;
  white-space: nowrap;
  letter-spacing: .02em;
}
.urgency-overdue { background: #fee2e2; color: #b91c1c; }
.urgency-soon    { background: #fef3c7; color: #92400e; }
.urgency-later   { background: #e0f2fe; color: #0369a1; }
.urgency-none    { background: var(--surface-alt, #f3f4f6); color: var(--muted); }

/* ── S10: Application control — deadline & next action grid ──────────── */
.app-control-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 16px;
}
.app-control-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.app-control-field label {
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .04em;
}
.app-control-field input[type=text],
.app-control-field input[type=url],
.app-control-field input[type=date] {
  padding: 6px 8px;
  border: 1px solid var(--border, #d1d5db);
  border-radius: 5px;
  font-size: 13px;
  background: var(--bg, #fff);
  color: var(--text, #111);
}
.app-control-full {
  grid-column: 1 / -1;
}

/* ── S10: Draft editor ───────────────────────────────────────────────── */
.draft-hint {
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 8px;
  line-height: 1.5;
  border-left: 3px solid var(--border, #d1d5db);
  padding-left: 10px;
}
.draft-editor {
  width: 100%;
  min-height: 180px;
  padding: 10px;
  border: 1px solid var(--border, #d1d5db);
  border-radius: 6px;
  font-size: 13px;
  line-height: 1.6;
  resize: vertical;
  font-family: inherit;
  background: var(--bg, #fff);
  color: var(--text, #111);
}
.draft-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 8px;
  gap: 10px;
  flex-wrap: wrap;
}
.draft-status {
  font-size: 12px;
}
.draft-saved   { color: var(--success-text, #166534); }
.draft-unsaved { color: var(--muted); }
.draft-save-btn {
  font-size: 12px;
  padding: 5px 14px;
  white-space: nowrap;
}

/* ── S11: Application pack modal ─────────────────────────────────────── */
.pack-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  overflow-y: auto;
  padding: 40px 16px 60px;
}
.pack-modal.hidden { display: none; }
.pack-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.5);
  z-index: -1;
}
.pack-modal-inner {
  background: var(--bg, #fff);
  border-radius: 10px;
  width: 100%;
  max-width: 780px;
  box-shadow: 0 8px 40px rgba(0,0,0,0.18);
  overflow: hidden;
  position: relative;
}
.pack-modal-header {
  padding: 20px 24px 16px;
  border-bottom: 1px solid var(--border, #e5e7eb);
  background: var(--bg-alt, #f9fafb);
}
.pack-modal-header h3 {
  margin: 0 0 4px;
  font-size: 18px;
}
.pack-header-meta {
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 12px;
}
.pack-header-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.pack-sections {
  padding: 16px 24px 28px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.pack-section {
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 7px;
  overflow: hidden;
}
.pack-section-title {
  background: var(--bg-alt, #f9fafb);
  padding: 7px 14px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--muted);
  border-bottom: 1px solid var(--border, #e5e7eb);
}
.pack-body {
  padding: 12px 14px;
}
.pack-row {
  display: flex;
  gap: 10px;
  font-size: 13px;
  padding: 3px 0;
}
.pack-label {
  width: 130px;
  flex-shrink: 0;
  font-weight: 500;
  color: var(--muted);
}
.pack-purpose {
  margin-top: 10px;
  font-size: 13px;
  line-height: 1.6;
  border-top: 1px solid var(--border, #e5e7eb);
  padding-top: 10px;
}
.pack-draft {
  font-family: inherit;
  font-size: 13px;
  line-height: 1.7;
  white-space: pre-wrap;
  margin: 0;
}
.pack-empty {
  font-size: 13px;
  color: var(--muted);
  font-style: italic;
  margin: 0;
}
.pack-missing-list {
  margin: 0;
  padding-left: 18px;
  font-size: 13px;
}
.pack-missing-list li {
  margin-bottom: 4px;
  color: var(--warning-text, #92400e);
}

/* ── S-C5: CUBiNet badge and metadata banner ─────────────────────────── */
.cubinet-badge {
  display: inline-block;
  padding: 1px 7px;
  border-radius: 10px;
  background: var(--purple-bg);
  color: var(--purple-text);
  border: 1px solid var(--purple-border);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .03em;
  vertical-align: middle;
  margin-right: 4px;
}

.cubinet-meta-banner {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  padding: 8px 14px;
  margin-bottom: 14px;
  background: var(--purple-bg);
  border: 1px solid var(--purple-border);
  border-radius: 6px;
  font-size: 12px;
  color: var(--purple-text);
}
.cubinet-meta-banner code {
  font-family: ui-monospace, monospace;
  font-size: 11px;
  color: var(--text);
}

/* ── S11: Print — only active when body.pack-printing ────────────────── */
@media print {
  body:not(.pack-printing) .pack-modal { display: none !important; }
  body.pack-printing .sidebar,
  body.pack-printing .main { display: none !important; }
  body.pack-printing .pack-modal {
    position: static;
    padding: 0;
    overflow: visible;
  }
  body.pack-printing .pack-overlay { display: none; }
  body.pack-printing .pack-modal-inner {
    box-shadow: none;
    border-radius: 0;
    max-width: 100%;
  }
  body.pack-printing .pack-header-actions { display: none; }
}

/* ── S12: AI draft suggestion panel ─────────────────────────────────────── */
.draft-ai-panel {
  margin-bottom: 14px;
}
.draft-ai-toggle-btn {
  font-size: 13px;
  padding: 6px 14px;
  margin-bottom: 6px;
}
.draft-ai-opts {
  background: var(--bg-alt, #f9fafb);
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 7px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 10px;
}
.draft-ai-opts.hidden { display: none; }
.draft-ai-row {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.draft-ai-label {
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
}
.draft-ai-check-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  cursor: pointer;
}
.draft-extra-input {
  width: 100%;
  padding: 7px 9px;
  border: 1px solid var(--border, #d1d5db);
  border-radius: 6px;
  font-size: 13px;
  font-family: inherit;
  resize: vertical;
  background: var(--bg, #fff);
  color: var(--text);
}
.draft-ai-underlag {
  font-size: 11px;
  color: var(--muted);
  line-height: 1.4;
}
.draft-ai-status {
  font-size: 13px;
  min-height: 18px;
}
.draft-ai-error { color: var(--error-text, #dc2626); }

/* ── S12: Suggestion preview box ────────────────────────────────────────── */
.draft-suggestion-box {
  background: var(--info-bg, #eff6ff);
  border: 1px solid var(--info-border, #bfdbfe);
  border-radius: 7px;
  padding: 12px 14px;
  margin-bottom: 14px;
}
.draft-suggestion-box.hidden { display: none; }
.draft-suggestion-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--info-text, #1d4ed8);
  margin-bottom: 8px;
}
.draft-suggestion-text {
  font-family: inherit;
  font-size: 13px;
  line-height: 1.7;
  white-space: pre-wrap;
  margin: 0 0 12px;
  color: var(--text);
  max-height: 280px;
  overflow-y: auto;
}
.draft-suggestion-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.draft-suggestion-info {
  font-size: 11px;
  color: var(--muted);
}

/* ── S14: Draft refinement panel ─────────────────────────────────────────── */
.draft-refine-panel {
  margin-top: 12px;
  margin-bottom: 6px;
}
.draft-refine-toggle-btn {
  font-size: 13px;
  padding: 6px 14px;
  margin-bottom: 6px;
}
.draft-refine-opts {
  background: var(--bg-alt, #f9fafb);
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 7px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 10px;
}
.draft-refine-opts.hidden { display: none; }

/* ── S15: Grantmaker Mode ────────────────────────────────────────────────── */
.gm-layout {
  display: grid;
  grid-template-columns: 340px 1fr;
  gap: 24px;
  align-items: start;
}
@media (max-width: 900px) {
  .gm-layout { grid-template-columns: 1fr; }
}
.gm-profile-panel, .gm-match-panel {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 20px;
}
.gm-profile-panel h3, .gm-match-panel h3 {
  margin: 0 0 14px;
  font-size: 15px;
  font-weight: 600;
}
.gm-active-banner {
  background: var(--success-bg, #f0fdf4);
  border: 1px solid var(--success-border, #86efac);
  border-radius: 6px;
  padding: 8px 12px;
  font-size: 12px;
  color: var(--success-text, #166534);
  margin-bottom: 12px;
}
.gm-active-banner.hidden { display: none; }
.form-grid {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 6px 10px;
  align-items: start;
  margin-bottom: 14px;
}
.form-grid label {
  font-size: 12px;
  color: var(--muted);
  padding-top: 6px;
  font-weight: 500;
}
.form-grid input, .form-grid textarea, .form-grid select {
  font-size: 13px;
  padding: 5px 8px;
  border: 1px solid var(--border);
  border-radius: 5px;
  background: var(--bg);
  color: var(--text);
  width: 100%;
  box-sizing: border-box;
}
.form-grid textarea { resize: vertical; }
.gm-profile-actions {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
}
.gm-profile-list {
  border-top: 1px solid var(--border);
  padding-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 220px;
  overflow-y: auto;
}
.gm-profile-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 7px 10px;
  font-size: 12px;
  cursor: pointer;
  gap: 8px;
}
.gm-profile-item:hover { background: var(--hover-bg, #f3f4f6); }
.gm-profile-item.active { border-color: var(--primary); background: var(--primary-light, #eff6ff); }
.gm-profile-item-name { font-weight: 500; color: var(--text); flex: 1; }
.gm-profile-item-org { color: var(--muted); }
.gm-profile-active-badge {
  background: var(--primary);
  color: #fff;
  border-radius: 4px;
  padding: 1px 6px;
  font-size: 10px;
  font-weight: 600;
}
.gm-match-controls {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.gm-match-controls input { min-width: 0; }
.gm-match-controls select { width: auto; font-size: 13px; padding: 5px 8px; border: 1px solid var(--border); border-radius: 5px; background: var(--bg); color: var(--text); }
.gm-disclaimer {
  background: var(--warn-bg, #fffbeb);
  border: 1px solid var(--warn-border, #fde68a);
  border-radius: 6px;
  padding: 8px 12px;
  font-size: 11px;
  color: var(--warn-text, #92400e);
  margin-bottom: 10px;
}
.gm-disclaimer.hidden { display: none; }
.gm-results-header {
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 10px;
}
.gm-results-header.hidden { display: none; }
.gm-results-grid {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.gm-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 14px 16px;
}
.gm-card-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 6px;
}
.gm-card-name {
  font-weight: 600;
  font-size: 14px;
  color: var(--text);
}
.gm-card-county { font-size: 12px; color: var(--muted); }
.gm-role-badge {
  border-radius: 5px;
  padding: 2px 8px;
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
}
.gm-role-similar_grantmaker  { background: #dbeafe; color: #1e40af; }
.gm-role-cofunding_candidate { background: #d1fae5; color: #065f46; }
.gm-role-local_partner       { background: #e0e7ff; color: #3730a3; }
.gm-role-recipient_channel   { background: #fef3c7; color: #92400e; }
.gm-role-purpose_overlap     { background: #f3e8ff; color: #6b21a8; }
.gm-role-unknown             { background: var(--muted-bg, #f3f4f6); color: var(--muted); }
.gm-card-purpose {
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 8px;
  line-height: 1.45;
}
.gm-overlap-reason {
  font-size: 12px;
  color: var(--text);
  margin-bottom: 8px;
  font-style: italic;
}
.gm-dims {
  display: flex;
  gap: 5px;
  flex-wrap: wrap;
}
.gm-dim-badge {
  border-radius: 4px;
  padding: 2px 7px;
  font-size: 11px;
  font-weight: 500;
  background: var(--muted-bg, #f3f4f6);
  color: var(--muted);
}
.gm-dim-Geografi      { background: #dbeafe; color: #1e40af; }
.gm-dim-Ändamål       { background: #d1fae5; color: #065f46; }
.gm-dim-Målgrupp      { background: #e0e7ff; color: #3730a3; }
.gm-dim-Stödtyp       { background: #fef3c7; color: #92400e; }
.gm-dim-Samfinansiering { background: #fce7f3; color: #9d174d; }
.page-subtitle {
  font-size: 13px;
  color: var(--muted);
  margin: 4px 0 16px;
}

/* ── S16: Grantmaker Candidates & Cofunding Pack ─────────────────────────── */
.gm-saved-section {
  margin-top: 28px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 18px 20px;
}
.gm-saved-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}
.gm-saved-header h3 { margin: 0; font-size: 15px; font-weight: 600; }
.gm-candidates-list { display: flex; flex-direction: column; gap: 8px; }
.gm-empty-msg { font-size: 12px; color: var(--muted); margin: 0; }
.gm-cand-card {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 7px;
  padding: 10px 14px;
  flex-wrap: wrap;
}
.gm-cand-card-body { flex: 1; min-width: 0; }
.gm-cand-name { font-weight: 600; font-size: 13px; color: var(--text); }
.gm-cand-meta { font-size: 11px; color: var(--muted); margin-top: 2px; }
.gm-cand-reason { font-size: 12px; color: var(--text); font-style: italic; margin-top: 4px; }
.gm-cand-actions { display: flex; gap: 6px; align-items: center; flex-shrink: 0; }
.gm-status-badge {
  border-radius: 5px; padding: 2px 8px; font-size: 11px; font-weight: 600;
  background: var(--muted-bg, #f3f4f6); color: var(--muted);
}
.gm-status-new         { background: #dbeafe; color: #1e40af; }
.gm-status-reviewing   { background: #fef3c7; color: #92400e; }
.gm-status-contacted   { background: #e0e7ff; color: #3730a3; }
.gm-status-relevant    { background: #d1fae5; color: #065f46; }
.gm-status-not_relevant{ background: #fee2e2; color: #991b1b; }
.gm-status-archived    { background: var(--muted-bg, #f3f4f6); color: var(--muted); }

/* Save button on match result cards */
.gm-save-btn {
  margin-top: 8px;
  font-size: 11px;
  padding: 3px 10px;
  background: var(--primary-light, #eff6ff);
  color: var(--primary, #2563eb);
  border: 1px solid var(--primary-border, #bfdbfe);
  border-radius: 5px;
  cursor: pointer;
}
.gm-save-btn:hover { background: var(--primary, #2563eb); color: #fff; }
.gm-save-btn:disabled { opacity: 0.5; cursor: default; }
.gm-saved-confirm { font-size: 11px; color: var(--success-text, #166534); margin-top: 6px; }

/* Detail panel */
.gm-detail-panel {
  margin-top: 24px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 18px 20px;
}
.gm-detail-panel.hidden { display: none; }
.gm-detail-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 14px;
}
.gm-detail-header h3 { margin: 0; font-size: 15px; font-weight: 600; }
.gm-detail-body { display: flex; flex-direction: column; gap: 10px; }
.form-row { display: flex; flex-direction: column; gap: 4px; }
.form-row label { font-size: 12px; color: var(--muted); font-weight: 500; }
.form-row select, .form-row textarea {
  font-size: 13px; padding: 5px 8px; border: 1px solid var(--border);
  border-radius: 5px; background: var(--bg); color: var(--text); width: 100%; box-sizing: border-box;
}
.form-row textarea { resize: vertical; }
.gm-checklist { border: 1px solid var(--border); border-radius: 7px; padding: 10px 12px; }
.gm-checklist-title { font-size: 12px; font-weight: 600; color: var(--muted); margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.05em; }
.gm-check-item { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text); cursor: pointer; margin-bottom: 5px; }
.gm-check-item input { cursor: pointer; }
.gm-risk-flags { border: 1px solid var(--border); border-radius: 7px; padding: 10px 12px; }
.gm-risk-editor { display: flex; flex-direction: column; gap: 5px; }
.gm-risk-item { display: flex; align-items: center; gap: 6px; font-size: 12px; }
.gm-risk-item input[type=text] { flex: 1; font-size: 12px; padding: 3px 6px; border: 1px solid var(--border); border-radius: 4px; background: var(--bg); color: var(--text); }
.gm-risk-item button { font-size: 11px; color: var(--muted); background: none; border: none; cursor: pointer; padding: 2px 4px; }
.gm-detail-actions { display: flex; gap: 8px; margin-top: 6px; }

/* Cofunding pack modal (reuses .pack-modal base styles) */
#gm-pack-modal .pack-modal-inner { max-width: 680px; }
.gm-pack-section { margin-bottom: 18px; }
.gm-pack-section h4 { font-size: 13px; font-weight: 600; margin: 0 0 8px; color: var(--text); }
.gm-pack-notice {
  background: var(--warn-bg, #fffbeb);
  border: 1px solid var(--warn-border, #fde68a);
  border-radius: 6px;
  padding: 8px 12px;
  font-size: 12px;
  color: var(--warn-text, #92400e);
  margin-bottom: 14px;
}
.gm-pack-checklist { display: flex; flex-direction: column; gap: 6px; }
.gm-pack-check-item { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; }
.gm-pack-check-icon { flex-shrink: 0; font-size: 14px; }
.gm-pack-check-text { flex: 1; }
.gm-pack-check-why { font-size: 11px; color: var(--muted); margin-top: 2px; }
.gm-pack-risk { display: flex; flex-wrap: wrap; gap: 5px; }
.gm-pack-risk-flag {
  background: #fee2e2; color: #991b1b;
  border-radius: 5px; padding: 2px 8px; font-size: 11px; font-weight: 500;
}
.gm-pack-dims { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }

/* ── S17: Health badges, summary bar, filter row ─ */
.gm-health-badge {
  display: inline-flex; align-items: center; gap: 4px;
  border-radius: 5px; padding: 2px 8px; font-size: 11px; font-weight: 600;
}
.gm-health-green  { background: #d1fae5; color: #065f46; }
.gm-health-yellow { background: #fef3c7; color: #92400e; }
.gm-health-red    { background: #fee2e2; color: #991b1b; }
.gm-health-score  { font-size: 11px; color: var(--muted); }
.gm-cand-health   { margin-top: 4px; display: flex; align-items: center; gap: 6px; }

.gm-summary-bar {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  padding: 8px 12px; background: var(--sidebar-bg, #f8fafc);
  border: 1px solid var(--border); border-radius: 8px; margin-bottom: 10px;
}
.gm-summ-total { font-size: 12px; font-weight: 600; color: var(--text); }
.gm-summ-risk  { font-size: 11px; color: #92400e; background: #fef3c7;
                  border-radius: 5px; padding: 2px 7px; font-weight: 500; }

.gm-filter-row {
  display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px;
}
.gm-filter-row select {
  font-size: 12px; padding: 4px 8px; border: 1px solid var(--border);
  border-radius: 6px; background: var(--bg); color: var(--text); cursor: pointer;
}

.gm-save-btn.gm-already-saved {
  background: var(--muted-bg, #f3f4f6); color: var(--muted);
  border-color: var(--border); cursor: default;
}
.gm-save-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 6px; }
.gm-already-saved-badge {
  font-size: 11px; font-weight: 600; padding: 2px 8px;
  border-radius: 5px; background: #d1fae5; color: #065f46;
}
.gm-save-row .gm-open-detail-link { font-size: 12px; color: var(--primary, #2563eb); }

/* ── S18: Crossing ──────────────────────────────── */
.crossing-controls {
  background: var(--sidebar-bg, #f8fafc); border: 1px solid var(--border);
  border-radius: 10px; padding: 16px 18px; margin-bottom: 14px;
  display: flex; flex-direction: column; gap: 10px;
}
.crossing-controls-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.crossing-controls .form-row { display: flex; align-items: center; gap: 8px; }
.crossing-controls label { font-size: 12px; font-weight: 600; color: var(--muted); white-space: nowrap; }
.crossing-controls select { font-size: 13px; padding: 4px 8px; border: 1px solid var(--border); border-radius: 6px; background: var(--bg); color: var(--text); }
.crossing-controls input[type=range] { width: 120px; }
.crossing-score-label { font-size: 13px; font-weight: 600; color: var(--text); min-width: 24px; }
.crossing-notice {
  font-size: 12px; color: #92400e; background: #fef3c7;
  border: 1px solid #fde68a; border-radius: 7px; padding: 8px 12px; margin-bottom: 12px;
}
.crossing-notice-inline { font-size: 11px; color: var(--muted); margin-bottom: 10px; }
.crossing-results-header { font-size: 13px; color: var(--muted); margin-bottom: 10px; }
.crossing-empty, .crossing-error { font-size: 13px; color: var(--muted); padding: 12px 0; }
.crossing-card {
  border: 1px solid var(--border); border-radius: 10px;
  padding: 14px 16px; margin-bottom: 10px; background: var(--bg);
  border-left-width: 4px;
}
.crossing-level-strong   { border-left-color: #059669; }
.crossing-level-possible { border-left-color: #d97706; }
.crossing-level-weak     { border-left-color: #9ca3af; }
.crossing-card-header    { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px; }
.crossing-card-name      { font-weight: 600; font-size: 14px; color: var(--text); }
.crossing-card-meta      { font-size: 11px; color: var(--muted); margin-top: 2px; }
.crossing-badges         { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; flex-shrink: 0; }
.crossing-level-badge    { border-radius: 5px; padding: 2px 8px; font-size: 11px; font-weight: 600; }
.crossing-level-strong-badge   { background: #d1fae5; color: #065f46; }
.crossing-level-possible-badge { background: #fef3c7; color: #92400e; }
.crossing-level-weak-badge     { background: #f3f4f6; color: #6b7280; }
.crossing-score-badge    { font-size: 12px; font-weight: 700; color: var(--text); }
.crossing-dims           { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; }
.crossing-dim-badge      { background: #ede9fe; color: #4c1d95; border-radius: 4px; padding: 1px 7px; font-size: 11px; }
.crossing-reasons        { font-size: 12px; color: var(--text); margin: 6px 0 0; padding-left: 18px; }
.crossing-risk-notes     { display: flex; flex-direction: column; gap: 3px; margin-top: 6px; }
.crossing-risk-note      { font-size: 11px; color: #92400e; background: #fef3c7; border-radius: 4px; padding: 2px 8px; }
.crossing-next-actions   { font-size: 12px; color: var(--muted); margin-top: 6px; }
.crossing-next-title     { font-weight: 600; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.crossing-next-actions ul { margin: 4px 0 0; padding-left: 18px; }
.crossing-actions        { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.crossing-action-notice  {
  font-size: 12px; color: #92400e; background: #fef3c7;
  border-radius: 7px; padding: 8px 12px; margin-bottom: 12px;
}
.crossing-action-checklist { display: flex; flex-direction: column; gap: 7px; }
.crossing-action-check-item { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; }
.crossing-action-text {
  font-size: 12px; white-space: pre-wrap; font-family: inherit;
  background: var(--sidebar-bg, #f8fafc); border: 1px solid var(--border);
  border-radius: 7px; padding: 12px; max-height: 380px; overflow-y: auto;
}

/* ── S19: Board Pack ────────────────────────────────────────────────────── */

/* Per-card selection checkbox */
.crossing-select-row    { display: flex; align-items: center; margin-bottom: 8px; }
.crossing-select-label  { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); cursor: pointer; user-select: none; }
.crossing-select-label input[type=checkbox] { cursor: pointer; }

/* Board pack controls bar (shown below results) */
.crossing-bp-controls {
  margin-top: 20px; padding: 14px 16px;
  background: var(--card-bg); border: 1px solid var(--border);
  border-radius: 10px; display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
}
.crossing-bp-controls.hidden { display: none; }
.crossing-bp-options    { display: flex; gap: 14px; flex-wrap: wrap; }
.crossing-bp-option     { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text); cursor: pointer; }
.crossing-bp-option input[type=checkbox] { cursor: pointer; }
.crossing-bp-selection-notice { font-size: 12px; color: var(--muted); flex: 1; min-width: 200px; }

/* Board pack modal */
#board-pack-modal .pack-modal-inner { max-width: 800px; }
.bp-notice {
  font-size: 12px; color: #92400e; background: #fef3c7;
  border-radius: 7px; padding: 10px 14px; margin-bottom: 14px; line-height: 1.6;
}
.bp-summary  { font-size: 13px; color: var(--text); margin-bottom: 14px; }
.bp-section-title {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .05em; color: var(--muted); margin-bottom: 8px;
}
.bp-risk-block  { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start; margin-bottom: 14px; }
.bp-risk-stat   { font-size: 12px; background: var(--sidebar-bg, #f8fafc); border: 1px solid var(--border); border-radius: 5px; padding: 2px 10px; }
.bp-top-risks   { font-size: 12px; color: #92400e; margin: 4px 0 0; padding-left: 16px; width: 100%; }
.bp-steps-block { margin-bottom: 14px; }
.bp-steps       { font-size: 13px; color: var(--text); padding-left: 20px; margin: 0; }
.bp-steps li    { margin-bottom: 4px; }
.bp-items-block { margin-top: 14px; }
.bp-item {
  border-left: 4px solid #9ca3af; border-radius: 6px;
  padding: 12px 14px; margin-bottom: 12px;
  background: var(--card-bg); border: 1px solid var(--border);
  border-left-width: 4px;
}
.bp-item.crossing-level-strong   { border-left-color: #10b981; }
.bp-item.crossing-level-possible { border-left-color: #f59e0b; }
.bp-item.crossing-level-weak     { border-left-color: #9ca3af; }
.bp-item-header { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.bp-item-meta   { font-size: 11px; color: var(--muted); margin-bottom: 6px; }
.bp-action-block { margin-top: 10px; }
.bp-action-title {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em; color: var(--muted); margin-bottom: 6px;
}
.bp-check-item  { display: flex; align-items: flex-start; gap: 7px; font-size: 13px; margin-bottom: 4px; }
.bp-action-text {
  font-size: 12px; white-space: pre-wrap; font-family: inherit;
  background: var(--sidebar-bg, #f8fafc); border: 1px solid var(--border);
  border-radius: 6px; padding: 10px 12px; max-height: 260px; overflow-y: auto; margin: 0;
}

/* ── Finansieringsmatchning S-K5 ──────────────────── */
.fm-layout {
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: 24px;
  align-items: start;
}
@media (max-width: 900px) {
  .fm-layout { grid-template-columns: 1fr; }
}

.fm-panel {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.fm-panel h3 {
  font-size: 14px; font-weight: 600; margin-bottom: 8px;
}
.fm-section { display: flex; flex-direction: column; gap: 6px; }

.fm-select {
  width: 100%; padding: 8px 10px;
  border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; background: var(--bg); color: var(--text);
}

.fm-label { font-size: 12px; color: var(--muted); font-weight: 500; }

.fm-slider-row {
  display: flex; align-items: center; gap: 10px;
}
.fm-slider-row input[type="range"] { flex: 1; }
.fm-score-val {
  min-width: 28px; text-align: right;
  font-size: 13px; font-weight: 600; color: var(--accent);
}

.fm-divider {
  border-top: 1px solid var(--border);
  margin: 0;
}

.fm-new-form {
  border-top: 1px solid var(--border);
  padding-top: 14px;
}
.fm-new-form h3 { font-size: 13px; font-weight: 600; margin-bottom: 10px; }

.fm-form-actions {
  display: flex; gap: 8px; margin-top: 8px;
}

.fm-save-msg {
  font-size: 12px; margin-top: 8px; padding: 6px 10px;
  border-radius: 5px;
}
.fm-save-ok    { background: var(--success-bg); color: var(--success-text); border: 1px solid var(--success-border); }
.fm-save-error { background: var(--error-bg);   color: var(--error-text);   border: 1px solid var(--error-border); }

.fm-results-panel { display: flex; flex-direction: column; gap: 12px; }

.fm-disclaimer {
  background: #fffbeb; border: 1px solid #fde68a;
  border-radius: var(--r); padding: 10px 14px;
  font-size: 12px; color: #92400e; line-height: 1.5;
}

.fm-results-header {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  font-size: 14px; padding: 2px 0;
}
.fm-chips { display: flex; gap: 6px; flex-wrap: wrap; margin-left: 4px; }
.fm-chip {
  font-size: 11px; padding: 2px 8px; border-radius: 20px; font-weight: 500;
}
.fm-chip-warn { background: #fef3c7; color: #92400e; border: 1px solid #fde68a; }
.fm-chip-ok   { background: var(--success-bg); color: var(--success-text); border: 1px solid var(--success-border); }

.fm-match-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 16px;
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.fm-card-top {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
}
.fm-score-badge {
  width: 48px; height: 48px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; font-weight: 700; flex-shrink: 0; color: #fff;
}
.fm-score-stark  { background: #10b981; }
.fm-score-mojlig { background: #f59e0b; }
.fm-score-svag   { background: #9ca3af; }

.fm-card-meta { flex: 1; }
.fm-score-label { font-size: 13px; font-weight: 600; color: var(--text); }
.fm-source-id   { font-size: 12px; color: var(--muted); margin-top: 2px; }

.fm-ao-tag {
  font-size: 11px; padding: 3px 9px; border-radius: 20px;
  background: var(--info-bg); color: var(--info-text);
  border: 1px solid var(--info-border); font-weight: 500;
}

.fm-reasons, .fm-cautions {
  margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 3px;
}
.fm-reasons li  { font-size: 13px; color: #166534; }
.fm-cautions li { font-size: 13px; color: #92400e; }

.fm-next-step {
  font-size: 13px; color: var(--text); line-height: 1.5;
  background: var(--bg); border-radius: 5px; padding: 8px 12px;
  border: 1px solid var(--border);
}

.fm-safety-notice {
  font-size: 11px; color: var(--muted); border-top: 1px solid var(--border);
  padding-top: 8px;
}

/* Opportunity-level relevance (distinct from the source-level score) */
.fm-level-tag {
  font-size: 10px; font-weight: 500; color: var(--muted);
  background: var(--bg); border: 1px solid var(--border); border-radius: 4px;
  padding: 0 5px; margin-left: 6px; vertical-align: middle;
}
.fm-opps { border-top: 1px dashed var(--border); margin-top: 6px; padding-top: 8px; }
.fm-opps-head { font-size: 11px; font-weight: 600; color: var(--muted); margin-bottom: 6px; text-transform: uppercase; letter-spacing: .03em; }
.fm-opp { padding: 6px 0; border-bottom: 1px solid var(--border); }
.fm-opp:last-child { border-bottom: none; }
.fm-opp-line { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.fm-opp-title { font-size: 13px; color: var(--text); font-weight: 500; }
.fm-opp-status { font-size: 11px; color: var(--muted); }
.fm-opp-why { margin: 4px 0 0 0; padding-left: 18px; font-size: 12px; color: var(--text); }
.fm-opp-nowhy { font-size: 12px; color: var(--muted); margin-top: 4px; }
.fm-rel-chip { font-size: 11px; font-weight: 600; border-radius: 4px; padding: 1px 7px; white-space: nowrap; }
.fm-rel-likely { background: #dcfce7; color: #166534; }
.fm-rel-possible { background: #fef9c3; color: #854d0e; }
.fm-rel-insufficient { background: #f1f5f9; color: #64748b; }

/* ── S-K6: FundingPack UI ─────────────────────────── */
.fm-pack-bar {
  display: flex;
  justify-content: flex-end;
  padding: 6px 0 2px;
  border-top: 1px solid var(--border);
  margin-top: 4px;
}

.fp-pack {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 28px 32px;
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 20px;
  margin-top: 8px;
}

.fp-header {
  border-bottom: 1px solid var(--border);
  padding-bottom: 12px;
}
.fp-title {
  font-size: 19px;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 6px;
}
.fp-subtitle {
  font-size: 13px;
  color: var(--muted);
}

.fp-notice {
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 6px;
  padding: 12px 16px;
  font-size: 13px;
  color: #78350f;
  line-height: 1.6;
}

.fp-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.fp-section-title {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--muted);
  margin-bottom: 4px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 6px;
}

.fp-summary {
  font-size: 14px;
  line-height: 1.65;
  color: var(--text);
  margin: 0;
}

.fp-dl-row {
  font-size: 14px;
  color: var(--text);
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 3px 0;
}
.fp-dl-open { font-weight: 500; }
.fp-dl-tag {
  font-size: 12px;
  font-weight: 600;
  padding: 1px 7px;
  border-radius: 10px;
  white-space: nowrap;
  flex-shrink: 0;
}
.fp-tag-open     { background: #d1fae5; color: #065f46; }
.fp-tag-upcoming { background: #e0e7ff; color: #3730a3; }

.fp-muted      { font-size: 13px; color: var(--muted); }
.fp-dl-notice  { margin-top: 4px; }

.fp-cofin-warn {
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 5px;
  padding: 5px 10px;
  font-size: 13px;
  color: #92400e;
}
.fp-cofin-row {
  font-size: 14px;
  color: var(--text);
  padding: 2px 0;
}

.fp-workflow {
  margin: 0;
  padding-left: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.fp-workflow li {
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-size: 14px;
  color: var(--text);
  line-height: 1.5;
}
.fp-step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--accent, #2563eb);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  flex-shrink: 0;
}

.fp-checklist {
  margin: 0;
  padding-left: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.fp-checklist li {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-size: 14px;
  color: var(--text);
  line-height: 1.5;
}
.fp-check {
  color: var(--muted);
  font-size: 14px;
  flex-shrink: 0;
}

.fp-not-included { border-top: 1px solid var(--border); padding-top: 12px; }
.fp-ni-list {
  margin: 0;
  padding-left: 18px;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.fp-ni-list li { font-size: 13px; color: var(--muted); }

.fp-safety-footer {
  font-size: 13px;
  color: var(--muted);
  border-top: 1px solid var(--border);
  padding-top: 10px;
  text-align: center;
  letter-spacing: .02em;
}

/* ── FundingObjects S-K8 ─────────────────────────── */

.fob-layout {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 20px;
  align-items: start;
}
@media (max-width: 768px) {
  .fob-layout { grid-template-columns: 1fr; }
}
.fob-panel { display: flex; flex-direction: column; gap: 12px; }
.fob-filter-row { display: flex; flex-direction: column; gap: 6px; }
.fob-list { display: flex; flex-direction: column; gap: 8px; }

.fob-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s;
}
.fob-card:hover {
  border-color: var(--primary);
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
}
.fob-card-active {
  border-color: var(--primary);
  background: #eff6ff;
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
}
.fob-title { font-weight: 600; font-size: 14px; margin-bottom: 6px; color: var(--text); }
.fob-meta { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.fob-type-badge {
  font-size: 12px;
  background: #dbeafe;
  color: #1e40af;
  border-radius: 4px;
  padding: 2px 7px;
  font-weight: 500;
}
.fob-municipality { font-size: 13px; color: var(--muted); }
.fob-evidence-badge {
  font-size: 12px;
  background: #fef3c7;
  color: #92400e;
  border-radius: 4px;
  padding: 2px 6px;
}

.fob-detail-panel { display: flex; flex-direction: column; gap: 16px; }
.fob-empty { color: var(--muted); font-size: 14px; padding: 20px 0; }

.fob-detail-inner {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.fob-detail-header { display: flex; flex-direction: column; gap: 6px; }
.fob-detail-title { font-size: 16px; font-weight: 700; color: var(--text); }
.fob-detail-meta { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.fob-description { font-size: 14px; color: var(--text); line-height: 1.6; margin: 0; }

.fob-tag-row { display: flex; flex-wrap: wrap; gap: 6px; }
.fob-tag {
  font-size: 12px;
  background: #f3f4f6;
  color: #374151;
  border-radius: 4px;
  padding: 2px 8px;
}

.fob-evidence-section { display: flex; flex-direction: column; gap: 6px; }
.fob-evidence-label { font-size: 13px; font-weight: 600; color: var(--muted); }
.fob-missing-list {
  margin: 0;
  padding-left: 18px;
  font-size: 13px;
  color: #92400e;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.fob-next-step {
  font-size: 13px;
  color: var(--text);
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 6px;
  padding: 10px 12px;
}

.fob-safety-banner {
  font-size: 12px;
  color: var(--muted);
  border-top: 1px solid var(--border);
  padding-top: 8px;
  letter-spacing: .02em;
}

.fob-match-controls {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.fob-bottlenecks {
  margin-top: 4px;
  font-size: 12px;
  color: #7c3aed;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  align-items: center;
}
.fob-bottleneck-tag {
  font-size: 12px;
  background: #ede9fe;
  color: #5b21b6;
  border-radius: 4px;
  padding: 2px 6px;
}

.fob-match-results { display: flex; flex-direction: column; gap: 12px; }

/* ── Portfolio S-K10 ─────────────────────────────── */

.pf-safety-banner {
  font-size: 12px;
  color: #92400e;
  background: #fef3c7;
  border: 1px solid #fde68a;
  border-radius: 6px;
  padding: 8px 14px;
  margin-bottom: 16px;
}
.pf-controls {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 20px;
}
.pf-notice {
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 12px;
}
.pf-stat-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}
@media (max-width: 768px) {
  .pf-stat-row { grid-template-columns: repeat(2, 1fr); }
}
.pf-stat-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 14px 16px;
  text-align: center;
}
.pf-stat-num { font-size: 28px; font-weight: 700; color: var(--primary); }
.pf-stat-label { font-size: 13px; color: var(--muted); margin-top: 4px; }

.pf-summary, .pf-hubs, .pf-links, .pf-extras { margin-bottom: 16px; }

.pf-hub-list { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.pf-hub-row {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 10px 14px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.pf-hub-name { font-size: 14px; font-weight: 600; color: var(--text); }
.pf-hub-meta { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.pf-hub-stat { font-size: 13px; color: var(--muted); }

.pf-links-list { display: flex; flex-direction: column; gap: 12px; margin-top: 8px; }

.pf-link-scores { display: flex; gap: 8px; flex-wrap: wrap; margin: 6px 0; }
.pf-score-pill {
  font-size: 12px;
  background: #f3f4f6;
  color: #374151;
  border-radius: 4px;
  padding: 2px 8px;
  font-weight: 500;
}

/* ── Utlysningar (S-K12) ─────────────────────────── */
.opp-filters {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 14px;
  align-items: center;
}
.opp-filter-select { min-width: 160px; }
.opp-search-input {
  flex: 1;
  min-width: 200px;
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 14px;
  background: var(--card-bg);
  color: var(--text);
}
.opp-search-input:focus { outline: none; border-color: var(--primary); }

.opp-summary { margin-bottom: 16px; }
.opp-num-open     { color: #16a34a; }
.opp-num-upcoming { color: #d97706; }

.opp-list { display: flex; flex-direction: column; gap: 12px; }

.opp-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.opp-card-header {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.opp-title { font-size: 15px; font-weight: 600; color: var(--text); }

.opp-badge {
  font-size: 13px;
  font-weight: 700;
  border-radius: 4px;
  padding: 3px 10px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  flex-shrink: 0;
  border: 1px solid transparent;
}
.opp-badge-open     { background: #dcfce7; color: #15803d; border-color: #86efac; }
.opp-badge-upcoming { background: #fef9c3; color: #a16207; border-color: #fde68a; }
.opp-badge-closed   { background: #f3f4f6; color: #6b7280; border-color: #e5e7eb; }

/* S-K40 review badges */
.opp-rev-badge {
  font-size: 12px;
  font-weight: 600;
  border-radius: 4px;
  padding: 2px 8px;
  flex-shrink: 0;
  border: 1px solid transparent;
}
.rev-pending      { background: #f3f4f6; color: #6b7280; border-color: #d1d5db; }
.rev-verified     { background: #dcfce7; color: #15803d; border-color: #86efac; }
.rev-needs-check  { background: #fff7ed; color: #c2410c; border-color: #fed7aa; }
.rev-not-relevant { background: #f5f3ff; color: #7c3aed; border-color: #ddd6fe; }

.opp-review-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 8px;
}
.rev-action-btn {
  font-size: 12px;
  padding: 3px 10px;
  border-radius: 4px;
  border: 1px solid transparent;
  cursor: pointer;
  font-weight: 500;
}
.rev-action-pending      { background: #f3f4f6; color: #6b7280; border-color: #d1d5db; }
.rev-action-verified     { background: #dcfce7; color: #15803d; border-color: #86efac; }
.rev-action-needs-check  { background: #fff7ed; color: #c2410c; border-color: #fed7aa; }
.rev-action-not-relevant { background: #f5f3ff; color: #7c3aed; border-color: #ddd6fe; }

/* S-K40/S-K41 summary stats */
.rev-stat-pending  { color: #6b7280; }
.rev-stat-verified { color: #15803d; }
.rev-stat-queue    { color: #c2410c; font-weight: 700; }
.rev-queue-card    { border-color: #fed7aa !important; background: #fff7ed; }

/* S-K42 review note + timestamp */
.opp-review-note-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 6px;
}
.rev-note-input {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--card-bg);
  color: var(--text);
  resize: vertical;
  font-family: inherit;
  line-height: 1.4;
}
.rev-note-input:focus { outline: none; border-color: var(--primary); }
.rev-decided-at {
  font-size: 12px;
  color: var(--muted);
  white-space: nowrap;
  padding-top: 8px;
  flex-shrink: 0;
}

/* S-K41 queue mode divider */
.opp-queue-divider {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 8px 0 4px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.opp-queue-divider::before,
.opp-queue-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--border);
}

/* S-K43: review session bar */
.opp-session-bar { margin-bottom: 12px; min-height: 32px; }
.session-start-btn { font-size: 13px; }
.session-bar-inner {
  display: flex;
  align-items: center;
  gap: 12px;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 6px;
  padding: 10px 14px;
}
.session-bar-inner.session-bar-complete { background: #f0fdf4; border-color: #86efac; }
.session-label { font-size: 13px; font-weight: 600; white-space: nowrap; color: var(--text); }
.session-progress-track {
  flex: 1;
  height: 8px;
  background: #dbeafe;
  border-radius: 4px;
  overflow: hidden;
  min-width: 60px;
}
.session-bar-complete .session-progress-track { background: #dcfce7; }
.session-progress-fill {
  height: 100%;
  background: #3b82f6;
  border-radius: 4px;
  transition: width 0.25s ease;
}
.session-bar-complete .session-progress-fill { background: #16a34a; }
.session-end-btn, .session-next-btn { white-space: nowrap; }

.opp-source-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.opp-source-name { font-size: 14px; font-weight: 500; color: var(--muted); }

.opp-meta-row {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  align-items: center;
}
.opp-deadline     { font-size: 14px; color: var(--text); }
.opp-dl-unknown   { color: var(--muted); font-style: italic; }
.opp-open-date    { font-size: 13px; color: var(--muted); }
.opp-amount       { font-size: 13px; color: var(--muted); }

.opp-desc {
  font-size: 14px;
  color: var(--text);
  margin: 0;
  line-height: 1.6;
}

.opp-next-step {
  font-size: 13px;
  color: var(--muted);
  border-top: 1px solid var(--border);
  padding-top: 8px;
  font-style: italic;
}

/* ── S-K15 Opportunity badges in packs ──────────── */
.ao-badges {
  margin: 8px 0 4px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ao-badge {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 10px;
  padding: 6px 10px;
  border-radius: 6px;
  border-left: 3px solid var(--border);
  background: var(--card-bg, #f9f9f9);
  font-size: 13px;
}
.ao-badge-open   { border-left-color: #16a34a; background: #f0fdf4; }
.ao-badge-upcoming { border-left-color: #d97706; background: #fffbeb; }
.ao-badge-label {
  font-weight: 600;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.ao-badge-open   .ao-badge-label { color: #15803d; }
.ao-badge-upcoming .ao-badge-label { color: #b45309; }
.ao-badge-title  { font-weight: 500; }
.ao-badge-meta   { color: var(--muted); font-size: 13px; }
.ao-badge-caution {
  width: 100%;
  font-size: 12px;
  color: var(--muted);
  font-style: italic;
}
.fp-match-row {
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}
.fp-match-row:last-child { border-bottom: none; }
.fp-match-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
}
.fp-match-source {
  font-weight: 600;
  font-size: 14px;
  flex: 1;
}
.fp-match-label {
  font-size: 13px;
  color: var(--muted);
}

/* ── S-K13 Meeting Print ─────────────────────────── */
.meeting-print-bar {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 12px;
}
.print-btn {
  padding: 6px 14px;
  font-size: 13px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--card-bg);
  color: var(--text);
  cursor: pointer;
}
.print-btn:hover { background: var(--hover-bg, #f3f4f6); }

@media print {
  /* Only apply meeting layout when body.meeting-printing is active */
  body.meeting-printing .sidebar { display: none !important; }
  body.meeting-printing .main { margin-left: 0 !important; padding: 0 !important; }
  body.meeting-printing .page { padding: 12mm 16mm !important; }
  body.meeting-printing .page:not(.active) { display: none !important; }

  /* Hide interactive controls */
  body.meeting-printing .pf-controls      { display: none !important; }
  body.meeting-printing .opp-filters      { display: none !important; }
  body.meeting-printing .fob-panel        { display: none !important; }
  body.meeting-printing .fob-match-controls { display: none !important; }
  body.meeting-printing .fob-pack-bar     { display: none !important; }
  body.meeting-printing .fm-pack-bar      { display: none !important; }
  body.meeting-printing .fob-match-results { display: none !important; }
  body.meeting-printing .meeting-print-bar { display: none !important; }
  body.meeting-printing .btn              { display: none !important; }
  body.meeting-printing .print-btn        { display: none !important; }

  /* FundingObject detail panel fills full width when list panel is hidden */
  body.meeting-printing .fob-layout        { display: block !important; }
  body.meeting-printing .fob-detail-panel  { width: 100% !important; max-width: 100% !important; }

  /* Clean print appearance */
  body.meeting-printing * {
    box-shadow: none !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  body.meeting-printing body { background: white !important; color: #111 !important; }

  /* Avoid splitting content cards across pages */
  body.meeting-printing .fp-pack,
  body.meeting-printing .fp-section,
  body.meeting-printing .opp-card,
  body.meeting-printing .pf-hub-row,
  body.meeting-printing .fm-match-card,
  body.meeting-printing .pf-stat-card,
  body.meeting-printing .fp-match-row,
  body.meeting-printing .ao-badge {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* Ensure AO badges print with color */
  body.meeting-printing .ao-badge-open     { background: #f0fdf4 !important; border-left-color: #16a34a !important; }
  body.meeting-printing .ao-badge-upcoming { background: #fffbeb !important; border-left-color: #d97706 !important; }

  /* Executive action items print-safe */
  body.meeting-printing .exec-action-item { break-inside: avoid; page-break-inside: avoid; }
}

/* ── S-K17B: Executive overview ─────────────────── */
/* S-K18 acceptance: executive overview optimized for senior-friendly boardroom use. */
.exec-safety {
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 8px;
  padding: 14px 18px;
  font-size: 14px;
  color: #78350f;
  line-height: 1.65;
  margin-bottom: 28px;
}

.exec-section {
  margin-bottom: 36px;
}
.exec-section-title {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--muted);
  margin-bottom: 16px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--border);
}

.exec-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 12px;
}
.exec-grid-sm {
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}

.exec-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 20px 16px;
  text-align: center;
  box-shadow: var(--shadow-sm);
}
.exec-kpi-num {
  font-size: 34px;
  font-weight: 700;
  color: var(--text);
  line-height: 1.1;
}
.exec-kpi-open     .exec-kpi-num { color: #16a34a; }
.exec-kpi-upcoming .exec-kpi-num { color: #d97706; }
.exec-kpi-label {
  font-size: 14px;
  color: var(--muted);
  margin-top: 6px;
  line-height: 1.4;
}

.exec-action-list { display: flex; flex-direction: column; gap: 12px; }
.exec-action-item {
  background: var(--card);
  border: 1px solid var(--border);
  border-left: 4px solid var(--border);
  border-radius: var(--r);
  padding: 16px 20px;
  box-shadow: var(--shadow-sm);
}
.exec-item-open     { border-left-color: #16a34a; }
.exec-item-upcoming { border-left-color: #d97706; }

.exec-action-header {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.exec-action-badge {
  font-size: 12px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 4px;
  flex-shrink: 0;
  text-transform: uppercase;
  letter-spacing: .04em;
  border: 1px solid transparent;
}
.exec-badge-open     { background: #dcfce7; color: #15803d; border-color: #86efac; }
.exec-badge-upcoming { background: #fef9c3; color: #a16207; border-color: #fde68a; }
.exec-action-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
  flex: 1;
}
.exec-action-meta {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  align-items: center;
  margin-bottom: 6px;
}
.exec-action-source { font-size: 13px; color: var(--muted); font-weight: 500; }
.exec-deadline      { font-size: 14px; color: var(--text); }
.exec-dl-missing    { color: var(--muted); font-style: italic; }
.exec-amount        { font-size: 13px; color: var(--muted); }
.exec-action-notice { font-size: 13px; color: var(--muted); font-style: italic; }

.exec-notice { font-size: 13px; color: var(--muted); margin-top: 12px; font-style: italic; }
.exec-empty  { font-size: 14px; color: var(--muted); padding: 8px 0; }

.exec-quick-actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

@media (max-width: 768px) {
  .exec-grid            { grid-template-columns: repeat(2, 1fr); }
  .exec-quick-actions   { flex-direction: column; }
}

/* ── S-K20: Executive drill-down ────────────────── */
.exec-item-clickable {
  cursor: pointer;
  transition: box-shadow 0.15s, border-color 0.15s, background 0.15s;
}
.exec-item-clickable:hover,
.exec-item-clickable:focus-visible {
  background: var(--hover-bg, #f8fafc);
  box-shadow: 0 2px 8px rgba(0,0,0,.10);
  outline: none;
}
.exec-item-clickable:focus-visible {
  outline: 2px solid var(--accent, #1d4ed8);
  outline-offset: 2px;
}
.exec-drill-icon {
  font-size: 14px;
  color: var(--muted);
  margin-left: auto;
  flex-shrink: 0;
  transition: transform 0.15s;
}
.exec-item-clickable:hover .exec-drill-icon,
.exec-item-clickable:focus-visible .exec-drill-icon {
  transform: translateX(3px);
  color: var(--accent, #1d4ed8);
}

.opp-card-highlight {
  animation: opp-highlight-flash 2.5s ease-out forwards;
}
@keyframes opp-highlight-flash {
  0%   { box-shadow: 0 0 0 3px #1d4ed8, 0 2px 8px rgba(29,78,216,.18); background: #eff6ff; }
  60%  { box-shadow: 0 0 0 3px #1d4ed8, 0 2px 8px rgba(29,78,216,.10); background: #eff6ff; }
  100% { box-shadow: none; background: var(--card-bg); }
}

/* ── S-K19: Executive print report ──────────────── */
.exec-print-header   { display: none; }
.exec-meeting-points { display: none; }

.exec-ph-brand  { font-size: 20pt; font-weight: 700; color: #1e3a5f; margin-bottom: 2px; }
.exec-ph-sub    { font-size: 12pt; color: #555; margin-bottom: 6px; }
.exec-ph-date   { font-size: 11pt; color: #444; margin-bottom: 10px; }
.exec-ph-notice { font-size: 10pt; color: #78350f; background: #fffbeb; border: 1px solid #fde68a; padding: 8px 12px; border-radius: 4px; line-height: 1.5; }

.exec-mp-heading { font-size: 15pt; font-weight: 700; margin: 24px 0 12px; border-top: 2pt solid #1e3a5f; padding-top: 12px; }
.exec-mp-section { margin-bottom: 14px; }
.exec-mp-title   { font-size: 11pt; font-weight: 700; margin-bottom: 4px; }
.exec-mp-list    { margin: 0 0 0 18px; padding: 0; }
.exec-mp-list li { font-size: 10.5pt; margin-bottom: 3px; line-height: 1.5; }

@media print {
  body.meeting-printing .exec-print-header   { display: block !important; margin-bottom: 18px; padding-bottom: 14px; border-bottom: 2pt solid #1e3a5f; }
  body.meeting-printing .exec-meeting-points { display: block !important; margin-top: 20px; }
  body.meeting-printing .exec-quick-actions  { display: none !important; }
  body.meeting-printing .exec-safety         { background: #fffbeb !important; border-color: #fde68a !important; }
  body.meeting-printing .exec-section        { margin-bottom: 20px; }
  body.meeting-printing #page-executive .page-header { display: none !important; }
  body.meeting-printing .exec-action-notice  { display: none !important; }
  body.meeting-printing .exec-item-clickable { cursor: default !important; box-shadow: none !important; }
  body.meeting-printing .exec-drill-icon     { display: none !important; }
  body.meeting-printing .opp-card-highlight  { animation: none !important; box-shadow: none !important; background: var(--card-bg) !important; }
}

/* ── S-K21: Manual review queue ─────────────────── */
.review-filter-bar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 24px;
}
.review-filter-btn {
  padding: 6px 16px;
  font-size: 13px;
  font-weight: 500;
  border: 1px solid var(--border);
  border-radius: 20px;
  background: var(--card);
  color: var(--muted);
  cursor: pointer;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.review-filter-btn:hover    { background: var(--hover-bg, #f3f4f6); color: var(--text); }
.review-filter-btn.active   { background: var(--accent, #1d4ed8); color: #fff; border-color: var(--accent, #1d4ed8); }

.review-section {
  margin-bottom: 36px;
}
.review-section-title {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--muted);
  margin-bottom: 16px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--border);
}

.review-list { display: flex; flex-direction: column; gap: 12px; }

.review-item {
  background: var(--card);
  border: 1px solid var(--border);
  border-left: 4px solid var(--border);
  border-radius: var(--r);
  padding: 16px 20px;
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.review-item[data-status="open"]     { border-left-color: #16a34a; }
.review-item[data-status="upcoming"] { border-left-color: #d97706; }

.review-item-header {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.review-badge {
  font-size: 12px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 4px;
  text-transform: uppercase;
  letter-spacing: .04em;
  border: 1px solid transparent;
  flex-shrink: 0;
}
.review-badge-open     { background: #dcfce7; color: #15803d; border-color: #86efac; }
.review-badge-upcoming { background: #fef9c3; color: #a16207; border-color: #fde68a; }
.review-urgency-tag {
  font-size: 12px;
  font-weight: 700;
  padding: 3px 8px;
  border-radius: 4px;
  background: #fef2f2;
  color: #b91c1c;
  border: 1px solid #fca5a5;
  flex-shrink: 0;
}
.review-item-title { font-size: 15px; font-weight: 600; color: var(--text); flex: 1; }

.review-item-meta { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; }
.review-source    { font-size: 13px; color: var(--muted); font-weight: 500; }
.review-date      { font-size: 14px; color: var(--text); }
.review-date-missing { font-size: 13px; color: var(--muted); font-style: italic; }
.review-urgent    { color: #b91c1c; font-weight: 600; }
.review-soon      { color: #d97706; font-weight: 500; }

.review-tags, .review-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.review-reason-tag {
  font-size: 12px;
  padding: 2px 9px;
  border-radius: 12px;
  background: #f1f5f9;
  color: #475569;
  border: 1px solid #e2e8f0;
}
.review-action-tag {
  font-size: 12px;
  font-weight: 600;
  padding: 2px 9px;
  border-radius: 12px;
  background: #eff6ff;
  color: #1d4ed8;
  border: 1px solid #bfdbfe;
}
.review-item-notice { font-size: 12px; color: var(--muted); font-style: italic; }

.review-empty { font-size: 14px; color: var(--muted); padding: 8px 0; }

/* ── STIFTELSERS-END-TO-END-SIMPLE-APPLICATION-UX-02 Finding 09/10: passed-
   deadline conflict presentation + decluttered review card. ────────────── */
.review-date-conflict { color: #b91c1c; font-weight: 700; }
.review-conflict-tag {
  font-size: 12px;
  font-weight: 700;
  padding: 3px 8px;
  border-radius: 4px;
  background: #fef2f2;
  color: #b91c1c;
  border: 1px solid #fca5a5;
  flex-shrink: 0;
}
.review-item-next { font-size: 13.5px; min-width: 0; }
.review-next-label { color: var(--muted); }
.review-next-value { font-weight: 600; color: var(--text); }
.review-item-details { font-size: 13px; min-width: 0; }
.review-item-details summary {
  cursor: pointer;
  color: var(--muted);
  font-size: 12.5px;
  margin-bottom: 8px;
}
.review-item-details[open] summary { margin-bottom: 10px; }

.review-match-info   { background: var(--card); border: 1px solid var(--border); border-radius: var(--r); padding: 18px 20px; }
.review-match-text   { font-size: 14px; color: var(--text); margin-bottom: 14px; line-height: 1.6; }
.review-match-actions { display: flex; gap: 10px; flex-wrap: wrap; }

.review-safety-section .review-section-title { border-bottom-color: #fde68a; }
.review-safety-list {
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: var(--r);
  padding: 16px 20px 16px 36px;
  margin: 0;
  color: #78350f;
  font-size: 14px;
  line-height: 1.7;
}
.review-safety-list li { margin-bottom: 2px; }

/* ── S-K22: Funding source detail ─────────────── */

.opp-source-link,
.review-source-link,
.exec-source-link {
  cursor: pointer;
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 2px;
}
.opp-source-link:hover,
.review-source-link:hover,
.exec-source-link:hover { color: var(--accent); text-decoration-style: solid; }

.source-detail-back { margin-bottom: 16px; }

.source-detail-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-left: 4px solid var(--accent);
  border-radius: var(--r);
  padding: 20px 24px;
  margin-bottom: 20px;
  box-shadow: var(--shadow);
}
.source-detail-header {
  display: flex;
  align-items: baseline;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.source-detail-name { font-size: 18px; font-weight: 700; color: var(--text); margin: 0; }
.source-detail-url  { font-size: 13px; color: var(--accent); white-space: nowrap; }
.source-detail-chips { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.source-detail-desc { font-size: 14px; color: var(--muted); line-height: 1.55; margin-top: 8px; }

.source-detail-aos { margin-top: 4px; }
.source-detail-section-title {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--muted);
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--border);
}
.source-detail-counts { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 18px; }
.source-count-badge {
  display: inline-block;
  padding: 4px 14px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 600;
  background: var(--bg);
  border: 1px solid var(--border);
  color: var(--muted);
}
.source-count-open     { background: #f0fdf4; border-color: #86efac; color: #15803d; }
.source-count-upcoming { background: #fffbeb; border-color: #fde68a; color: #92400e; }

.source-ao-section { margin-bottom: 20px; }
.source-ao-section-title { font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 10px; }
.source-ao-list { display: flex; flex-direction: column; gap: 10px; }
.source-ao-item {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 12px 16px;
  box-shadow: var(--shadow-sm);
}
.source-ao-header {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.source-ao-title  { flex: 1; font-size: 14px; font-weight: 600; color: var(--text); }
.source-ao-drill  { margin-left: auto; flex-shrink: 0; }
.source-ao-meta   { display: flex; gap: 14px; flex-wrap: wrap; font-size: 12px; color: var(--muted); }
.source-ao-date-missing { font-style: italic; }
.source-ao-amount { font-weight: 500; color: var(--text); }

.source-detail-safety-footer {
  font-size: 11px;
  color: var(--muted);
  padding: 12px 0;
  font-style: italic;
  border-top: 1px solid var(--border);
  margin-top: 24px;
}

/* ── S-K23: Funding source overview ─────────────── */

.so-filter-bar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
.so-filter-btn {
  padding: 6px 16px;
  font-size: 13px;
  font-weight: 500;
  border: 1px solid var(--border);
  border-radius: 20px;
  background: var(--card);
  color: var(--muted);
  cursor: pointer;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.so-filter-btn:hover  { background: var(--hover-bg, #f3f4f6); color: var(--text); }
.so-filter-btn.active { background: var(--accent); color: #fff; border-color: var(--accent); }

.so-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
}
.so-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 16px 20px;
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.so-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}
.so-card-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
  flex: 1;
  line-height: 1.3;
}
.so-status-chip {
  font-size: 11px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 20px;
  white-space: nowrap;
  flex-shrink: 0;
  border: 1px solid transparent;
  text-transform: uppercase;
  letter-spacing: .03em;
}
.so-status-open     { background: #dcfce7; color: #15803d; border-color: #86efac; }
.so-status-upcoming { background: #fef9c3; color: #a16207; border-color: #fde68a; }
.so-status-inactive { background: #f1f5f9; color: #475569; border-color: #e2e8f0; }
.so-status-none     { background: #f8fafc; color: #94a3b8; border-color: #e2e8f0; }

.so-card-chips { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.so-url { font-size: 12px; color: var(--accent); margin-left: auto; white-space: nowrap; }

.so-desc { font-size: 13px; color: var(--muted); line-height: 1.5; margin: 0; }

.so-counts { display: flex; gap: 16px; flex-wrap: wrap; font-size: 13px; color: var(--muted); }
.so-count strong       { color: var(--text); }
.so-count-muted strong { color: var(--muted); }

.so-card-actions { margin-top: auto; }

/* ── S-K31: Finansieringskatalog — tabs, search, nettolista, suggest ─────── */

.cat-tab-bar {
  display: flex;
  gap: 4px;
  border-bottom: 2px solid var(--border);
  margin-bottom: 20px;
  flex-wrap: wrap;
}
.cat-tab {
  padding: 10px 20px;
  border: none;
  background: none;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  color: var(--muted);
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  transition: color .15s, border-color .15s;
}
.cat-tab:hover  { color: var(--text); }
.cat-tab.active { color: var(--accent); border-bottom-color: var(--accent); }

.cat-search-wrap {
  margin-bottom: 12px;
}
.cat-search-input {
  width: 100%;
  max-width: 480px;
  padding: 9px 14px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 14px;
  background: var(--card-bg, #fff);
  color: var(--text);
  box-sizing: border-box;
}
.cat-search-input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(59,130,246,.12); }

.cat-filter-bar { flex-wrap: wrap; }

.cat-empty {
  padding: 24px;
  color: var(--muted);
  font-style: italic;
  text-align: center;
}

/* Nettolista */
.nl-disclaimer {
  margin-bottom: 16px;
  font-size: 13px;
  color: var(--muted);
  font-style: italic;
}
.nl-card {
  display: flex;
  gap: 14px;
  align-items: flex-start;
}
.nl-rank {
  min-width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  font-weight: 700;
  flex-shrink: 0;
  margin-top: 2px;
}
.nl-body { flex: 1; min-width: 0; }
.nl-chips { display: flex; gap: 5px; flex-wrap: wrap; margin: 6px 0; }
.nl-chip {
  padding: 2px 8px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 600;
  background: #e0e7ff;
  color: #3730a3;
  border: 1px solid #c7d2fe;
}
.nl-chip-real { background: #dcfce7; color: #15803d; border-color: #86efac; }
.nl-chip-open { background: #dcfce7; color: #15803d; border-color: #86efac; }
.nl-chip-up   { background: #fef9c3; color: #a16207; border-color: #fde68a; }

/* Saknas en källa? suggest form */
.suggest-form-wrap {
  max-width: 560px;
  margin-bottom: 36px;
}
.suggest-title {
  font-size: 16px;
  font-weight: 600;
  margin-bottom: 8px;
  color: var(--text);
}
.suggest-note {
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 16px;
}
.suggest-form { display: flex; flex-direction: column; gap: 14px; }
.form-opt { font-size: 12px; color: var(--muted); font-weight: 400; }
.form-req { color: #dc2626; font-weight: 700; }
.suggest-error {
  padding: 8px 12px;
  background: #fef2f2;
  color: #dc2626;
  border: 1px solid #fecaca;
  border-radius: 6px;
  font-size: 13px;
}
.suggest-ok {
  padding: 8px 12px;
  background: #f0fdf4;
  color: #15803d;
  border: 1px solid #86efac;
  border-radius: 6px;
  font-size: 13px;
}
.sug-list-wrap { margin-top: 8px; }
.sug-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.sug-table th, .sug-table td {
  text-align: left;
  padding: 8px 10px;
  border-bottom: 1px solid var(--border);
  vertical-align: top;
}
.sug-table th {
  font-weight: 600;
  color: var(--muted);
  background: var(--hover-bg, #f8fafc);
}
.sug-status-chip {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 600;
  background: #fef3c7;
  color: #92400e;
  border: 1px solid #fde68a;
  white-space: nowrap;
}

/* ── S-K32: Intake run chips and panel ─────── */

.sug-run-chip {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 600;
  background: #e0e7ff;
  color: #3730a3;
  border: 1px solid #c7d2fe;
  white-space: nowrap;
}
.sug-run-ok   { background: #dcfce7; color: #15803d; border-color: #86efac; }
.sug-run-fail { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }
.sug-run-draft_extracted { background: #dcfce7; color: #15803d; border-color: #86efac; }
.sug-run-fetch_failed    { background: #fee2e2; color: #dc2626; border-color: #fca5a5; }
.sug-run-queued          { background: #fef3c7; color: #92400e; border-color: #fde68a; }

.sug-intake-panel {
  margin-top: 24px;
  padding: 20px;
  background: var(--card-bg, #fff);
  border: 1px solid var(--border);
  border-radius: 10px;
}
.intake-run-box {
  margin-bottom: 20px;
}
.intake-run-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 6px;
}
.intake-run-title {
  font-weight: 600;
  font-size: 14px;
  word-break: break-all;
}
.intake-run-meta {
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 8px;
}
.intake-run-error {
  padding: 6px 10px;
  background: #fef2f2;
  color: #dc2626;
  border: 1px solid #fecaca;
  border-radius: 6px;
  font-size: 13px;
  margin-bottom: 8px;
}
.intake-run-excerpt {
  font-size: 13px;
}
.intake-pre {
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 12px;
  background: var(--hover-bg, #f8fafc);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 10px;
  max-height: 200px;
  overflow-y: auto;
  margin-top: 6px;
}
.intake-draft-box {
  border-top: 1px solid var(--border);
  padding-top: 16px;
}
.intake-draft-header {
  font-weight: 600;
  font-size: 14px;
  margin-bottom: 10px;
}
.intake-draft-warn {
  margin-bottom: 12px;
  font-size: 13px;
}
.alert-warn {
  background: #fffbeb;
  color: #92400e;
  border: 1px solid #fde68a;
  border-radius: 6px;
  padding: 8px 12px;
}
.intake-draft-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.intake-draft-table th, .intake-draft-table td {
  text-align: left;
  padding: 6px 10px;
  border-bottom: 1px solid var(--border);
  vertical-align: top;
}
.intake-draft-table th {
  width: 160px;
  font-weight: 600;
  color: var(--muted);
  background: var(--hover-bg, #f8fafc);
}

/* ── S-K24: Project profile overview & detail ─────── */

.pp-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
}
.pp-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 16px 20px;
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.pp-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}
.pp-card-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
  flex: 1;
  line-height: 1.3;
}
.pp-status-chip {
  font-size: 11px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 20px;
  border: 1px solid #e2e8f0;
  text-transform: uppercase;
  letter-spacing: .03em;
  white-space: nowrap;
  flex-shrink: 0;
  background: #f1f5f9;
  color: #475569;
}
.pp-status-active { background: #dcfce7; color: #15803d; border-color: #86efac; }
.pp-card-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.pp-summary     { font-size: 13px; color: var(--muted); line-height: 1.5; margin: 0; }
.pp-card-actions { margin-top: auto; }

/* ── S-K76B: Aktörer och satsningar ─────────────────────────────────── */
.aor-columns {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 20px;
}
.aor-column {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 16px 20px;
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 12px;
  /* Grid item's automatic minimum size otherwise resolves to its widest
     descendant's intrinsic content (a <select> populated with a long
     Aktör/Satsning option) and can blow out past the 1fr track. */
  min-width: 0;
}
.aor-form { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.aor-form-fieldset { border: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.aor-form-fieldset label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--muted); min-width: 0; }
.aor-form-fieldset input, .aor-form-fieldset select {
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 13px;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}
.aor-form-error { color: var(--danger, #b91c1c); font-size: 12px; }
.aor-list { display: flex; flex-direction: column; gap: 8px; }
.aor-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 13px;
}
.aor-row-name { font-weight: 600; color: var(--text); }
.aor-row-meta { color: var(--muted); font-size: 12px; }
.aor-status-chip {
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 20px;
  text-transform: uppercase;
  letter-spacing: .03em;
  white-space: nowrap;
}
.aor-status-draft    { background: #f1f5f9; color: #475569; border: 1px solid #e2e8f0; }
.aor-status-approved { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; }
.aor-status-rejected { background: #fee2e2; color: #991b1b; border: 1px solid #fecaca; }
.aor-form-actions { display: flex; gap: 8px; }
.aor-edit-btn { margin-left: auto; }

.pp-detail-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-left: 4px solid #7c3aed;
  border-radius: var(--r);
  padding: 20px 24px;
  margin-bottom: 20px;
  box-shadow: var(--shadow);
}
.pp-detail-header { margin-bottom: 10px; }
.pp-detail-name   { font-size: 18px; font-weight: 700; color: var(--text); margin: 0; }
.pp-detail-chips  { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; align-items: center; }
.pp-budget        { font-size: 13px; color: var(--muted); font-weight: 500; }
.pp-detail-summary { font-size: 14px; color: var(--muted); line-height: 1.55; margin: 8px 0 0; }

/* S-K58B: project narrative (problem/solution/timeline) */
.pp-context-section  { margin-top: 12px; display: flex; flex-direction: column; gap: 10px; }
.pp-context-heading  { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); margin: 0 0 2px; }
.pp-context-text     { font-size: 14px; color: var(--text); line-height: 1.55; margin: 0; }

.pp-matches-section { margin-top: 4px; }
.pp-matches-grid { display: flex; flex-direction: column; gap: 12px; }
.pp-match-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 14px 18px;
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.pp-match-header { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pp-match-name   { font-size: 15px; font-weight: 700; color: var(--text); flex: 1; }
.pp-source-link  {
  cursor: pointer;
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 2px;
}
.pp-source-link:hover { color: var(--accent); text-decoration-style: solid; }

.pp-score-badge {
  font-size: 12px;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 20px;
  border: 1px solid transparent;
  white-space: nowrap;
  flex-shrink: 0;
}
.pp-score-strong   { background: #dcfce7; color: #15803d; border-color: #86efac; }
.pp-score-possible { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; }
.pp-score-weak     { background: #f1f5f9; color: #475569; border-color: #e2e8f0; }

/* S-K74 entry-fix: was a horizontal wrap of bare status/date badges;
   now a vertical stack of per-AO rows (title + badge/Workspace pair)
   since a single funding source can expose several active AOs and the
   badge alone no longer has to carry AO identity. */
.pp-ao-badges    { display: flex; flex-direction: column; gap: 10px; }
.pp-ao-row       { display: flex; flex-direction: column; gap: 4px; }
.pp-ao-row + .pp-ao-row { border-top: 1px solid var(--border); padding-top: 10px; }
.pp-ao-row-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  margin: 0;
  line-height: 1.35;
  word-break: break-word;
}
.pp-ao-badge {
  font-size: 12px;
  font-weight: 600;
  padding: 4px 12px;
  border-radius: 4px;
  cursor: pointer;
  border: 1px solid transparent;
  transition: opacity 0.12s;
}
.pp-ao-badge:hover   { opacity: 0.8; }
.pp-no-aos           { font-size: 12px; color: var(--muted); font-style: italic; margin: 0; }
.pp-match-reasons    { display: flex; gap: 6px; flex-wrap: wrap; }
.pp-match-cautions   { display: flex; gap: 6px; flex-wrap: wrap; }
.pp-caution-tag {
  font-size: 12px;
  padding: 2px 9px;
  border-radius: 12px;
  background: #fffbeb;
  color: #92400e;
  border: 1px solid #fde68a;
}
.pp-match-notice { font-size: 12px; color: var(--muted); font-style: italic; }

/* ── S-K73: Ansökningsarbetsyta (read-only workspace UI) ──────────────────
   Bounded .aw-* / .pp-ao-workspace-link namespace. Reuses existing tokens
   (--success/--info/--error/--purple/--card/--border/--muted) rather than
   inventing new colors; the two warn literals below (#fffbeb/#fde68a/
   #92400e) match the existing .pp-caution-tag warn palette exactly. */
.pp-ao-badge-group     { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.pp-ao-workspace-link {
  /* Neutralizes native <button> UA defaults (font, line-height, appearance)
     while keeping real button semantics/keyboard behavior. */
  appearance: none;
  font-family: inherit;
  line-height: normal;
  font-size: 12px;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 4px;
  cursor: pointer;
  border: 1px solid var(--border);
  background: var(--card);
  color: var(--accent);
  transition: opacity 0.12s;
}
.pp-ao-workspace-link:hover { opacity: 0.8; }
.pp-ao-workspace-link:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.aw-header       { margin: 0 0 20px; }
.aw-eyebrow       { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); font-weight: 600; margin: 0 0 6px; }
.aw-title         { margin: 0 0 6px; font-size: 20px; }
.aw-subtitle      { margin: 0 0 10px; color: var(--muted); font-size: 14px; }
.aw-header-chips  { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.aw-chip {
  font-size: 12px; font-weight: 600; padding: 4px 10px; border-radius: 4px;
  background: var(--card); border: 1px solid var(--border); color: var(--text);
}
.aw-disclaimer { font-size: 12px; color: var(--muted); font-style: italic; margin: 0; }

.aw-section {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 16px 18px;
  margin: 0 0 16px;
}
.aw-section-title { margin: 0 0 10px; font-size: 14px; font-weight: 700; }
.aw-empty          { font-size: 13.5px; color: var(--muted); margin: 0; }
.aw-summary        { font-size: 13px; color: var(--muted); margin: 0 0 10px; }
.aw-inline-ok      { font-size: 13px; color: var(--success-text); margin: 0 0 16px; }

.aw-callout {
  border-radius: var(--r);
  padding: 12px 14px;
  margin: 0 0 10px;
  font-size: 13.5px;
  line-height: 1.5;
}
.aw-callout-compact { padding: 8px 12px; margin: 6px 0 0; }
.aw-callout-warn     { background: #fffbeb; border: 1px solid #fde68a; color: #92400e; }
.aw-callout-purple   { background: var(--purple-bg); border: 1px solid var(--purple-border); color: var(--purple-text); }
/* UX-07: non-blocking "analysis in progress" status while semantic review runs */
.aw-callout-info     { background: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; }
.aw-callout-title    { font-weight: 700; margin: 0 0 4px; }
.aw-callout p        { margin: 0; }
.aw-callout p + p    { margin-top: 6px; }

.aw-badge {
  display: inline-flex; align-items: center; font-size: 11.5px; font-weight: 650;
  padding: 3px 9px; border-radius: 12px; white-space: nowrap;
}
.aw-badge-ok      { background: var(--success-bg); color: var(--success-text); border: 1px solid var(--success-border); }
.aw-badge-warn2   { background: #fffbeb; color: #92400e; border: 1px solid #fde68a; }
.aw-badge-danger  { background: var(--error-bg); color: var(--error-text); border: 1px solid var(--error-border); }
.aw-badge-neutral { background: var(--bg); color: var(--muted); border: 1px solid var(--border); }
.aw-badge-purple  { background: var(--purple-bg); color: var(--purple-text); border: 1px solid var(--purple-border); }

.aw-req-list      { display: flex; flex-direction: column; gap: 10px; }
.aw-req-row       { border: 1px solid var(--border); border-radius: var(--r); padding: 10px 12px; }
.aw-req-row-head  { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; margin-bottom: 6px; }
.aw-req-text      { font-size: 13.5px; color: var(--text); }
.aw-tag {
  font-size: 10.5px; text-transform: uppercase; letter-spacing: .03em; font-weight: 650;
  padding: 2px 8px; border-radius: 10px; background: var(--bg); color: var(--muted);
  border: 1px solid var(--border); white-space: nowrap; flex-shrink: 0;
}
.aw-tag-mandatory { background: var(--info-bg); color: var(--info-text); border-color: var(--info-border); }
.aw-req-row-meta  { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.aw-req-category  { font-size: 12px; color: var(--muted); }

.aw-ev-row        { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--border); }
.aw-ev-row:last-child { border-bottom: none; }
.aw-ev-type       { font-size: 13px; color: var(--text); }

.aw-dl            { margin: 0; }
.aw-dl-row        { display: flex; justify-content: space-between; gap: 10px; padding: 5px 0; border-bottom: 1px dotted var(--border); font-size: 13px; }
.aw-dl-row:last-child { border-bottom: none; }
.aw-dl-row dt     { color: var(--muted); margin: 0; }
.aw-dl-row dd     { margin: 0; color: var(--text); text-align: right; }

.aw-decision-head { display: flex; gap: 8px; margin-bottom: 10px; }
.aw-rationale     { font-size: 13.5px; line-height: 1.5; margin: 0 0 12px; white-space: pre-wrap; }

.aw-gov-list      { display: flex; flex-direction: column; gap: 2px; }
.aw-gov-row       { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--border); }
.aw-gov-row:last-child { border-bottom: none; }
.aw-gov-label     { font-size: 13px; color: var(--text); }
.aw-gov-note      { font-size: 11.5px; color: var(--muted); font-style: italic; margin: 10px 0 0; }

/* ── STIFTELSERS-QUALITY-REVIEW-WORKSPACE-UI-01: Quality Review panel ─────
   .aw-qr-finding mirrors .aw-req-row's bordered-row rhythm; min-width: 0 on
   every flex child (same fix as the Actor Relation card overflow gate) so a
   long unbroken finding message or reviewer string cannot push the row
   past the card edge at narrow widths. */
.aw-qr-block-title { font-size: 12px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .03em; margin: 14px 0 6px; }
.aw-qr-live, .aw-qr-history { min-width: 0; }
.aw-qr-callout-ok  { background: var(--success-bg); border: 1px solid var(--success-border); color: var(--success-text); }
.aw-qr-checklist   { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.aw-qr-finding {
  display: flex; align-items: flex-start; gap: 8px;
  border: 1px solid var(--border); border-radius: var(--r);
  padding: 8px 10px; min-width: 0;
}
.aw-qr-finding-body     { flex: 1; min-width: 0; overflow-wrap: break-word; word-break: break-word; }
.aw-qr-finding-category { font-size: 11.5px; color: var(--muted); text-transform: uppercase; letter-spacing: .02em; }
.aw-qr-finding-message  { font-size: 13.5px; color: var(--text); }

/* S-K77B: Ansökningsresa stage rows -- more children per row than
   .aw-gov-row (label, status badge, detail text, deep-link button), so a
   dedicated wrapping flex layout rather than justify-content:space-between. */
.aj-stage-list    { display: flex; flex-direction: column; gap: 2px; }
.aj-stage-row     { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.aj-stage-row:last-child { border-bottom: none; }
.aj-stage-label   { min-width: 180px; flex-shrink: 0; font-weight: 600; }
.aj-stage-detail  { flex: 1 1 220px; }
.aj-systemet-ni   { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 0 0 10px; }
.aj-systemet-ni ul { margin: 4px 0 0; padding-left: 18px; font-size: 13px; color: var(--text); }
.aj-systemet-ni li { margin: 2px 0; }
.aj-systemet-ni-heading { font-weight: 700; font-size: 13px; margin: 0; }

/* STIFTELSERS-PRODUCTION-TRUST-FOUNDATION-01C: whole-application readiness
   panel -- a plain list is sufficient elsewhere in this file, but the
   blockers list benefits from the same bordered-row rhythm as
   .aj-stage-list so it doesn't read as a stray bullet list bolted onto the
   summary badge above it. */
.aj-readiness-panel     { margin-bottom: 4px; }
.aj-readiness-blockers  { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.aj-readiness-blockers li { padding: 6px 10px; border-left: 3px solid var(--border); font-size: 13px; color: var(--text); }
@media (max-width: 720px) {
  .aj-systemet-ni { grid-template-columns: 1fr; }
}

/* ── S-K74: governed Requirement/Evidence/Resolution authoring forms ──────
   Native controls only (button/input/textarea/label) — no span-role-button
   patterns. Reuses existing tokens; no new colors. */
.aw-form {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px dashed var(--border);
}
.aw-form-compact { margin-top: 8px; padding-top: 8px; }
.aw-form-fieldset { border: none; padding: 0; margin: 0; }
.aw-form-legend {
  font-size: 11px; text-transform: uppercase; letter-spacing: .05em;
  color: var(--muted); font-weight: 650; padding: 0; margin: 0 0 8px;
}
.aw-form-row { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }
.aw-form-label { font-size: 12.5px; color: var(--text); font-weight: 600; }
.aw-form-input, .aw-form-textarea {
  font: inherit; font-size: 13px; padding: 7px 10px;
  border: 1px solid var(--border); border-radius: var(--r);
  background: var(--bg); color: var(--text); width: 100%;
}
.aw-form-textarea { min-height: 64px; resize: vertical; }
.aw-form-hint { font-size: 11.5px; color: var(--muted); margin: 3px 0 0; }
.aw-form-checkbox-row { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; font-size: 13px; }
.aw-form-actions { display: flex; gap: 8px; }
.aw-form-error {
  font-size: 12.5px; color: var(--error-text); margin: 8px 0 0; min-height: 1em;
}
.aw-form-loading { font-size: 12.5px; color: var(--muted); font-style: italic; }

.aw-btn-inline {
  font: inherit; font-size: 12px; font-weight: 600;
  padding: 3px 9px; border-radius: var(--r);
  border: 1px solid var(--border); background: var(--card); color: var(--accent);
  cursor: pointer; margin-left: 6px;
}
.aw-btn-inline:hover { opacity: 0.85; }
.aw-btn-inline:disabled { opacity: 0.5; cursor: default; }

.aw-res-area { margin-top: 10px; }

.aw-ev-picker { display: flex; flex-direction: column; gap: 6px; margin-bottom: 10px; }
.aw-ev-picker-item {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-size: 12.5px; padding: 6px 8px;
  border: 1px solid var(--border); border-radius: var(--r); background: var(--bg);
}
.aw-ev-picker-item label { display: flex; align-items: center; gap: 6px; cursor: pointer; }
/* S-K74 hardening: "just persisted" is deliberately NOT styled with the
   --success-* tokens used for approved/complete state elsewhere in this
   file (e.g. .aw-badge-ok) -- persistence is not approval. Reuses the
   same neutral/informational --info-* tokens as .aw-tag-mandatory. */
.aw-ev-picker-item-new { border-color: var(--info-border); background: var(--info-bg); }
.aw-tag-new { background: var(--info-bg); color: var(--info-text); border-color: var(--info-border); }

.aw-section input:focus-visible,
.aw-section textarea:focus-visible,
.aw-section button:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

@media (max-width: 768px) {
  .aw-req-row-head { flex-direction: column; align-items: flex-start; }
  .aw-dl-row       { flex-direction: column; gap: 2px; }
  .aw-dl-row dd    { text-align: left; }
  .aw-ev-picker-item { flex-direction: column; align-items: flex-start; }
}

/* ── S-K28: Hjälpknappar och hjälppaneler ─────────── */
.page-header {
  position: relative;
}
.help-btn {
  position: absolute;
  top: 4px;
  right: 0;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 2px solid var(--border);
  background: var(--surface);
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
  flex-shrink: 0;
  line-height: 1;
}
.help-btn:hover,
.help-btn.active {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary);
}

.help-panel {
  margin: 0 0 20px 0;
  border-radius: 8px;
  border: 1px solid #bfdbfe;
  background: #eff6ff;
  overflow: hidden;
}
.help-panel[hidden] { display: none; }
.help-panel-inner {
  padding: 16px 20px;
  position: relative;
}
.help-title {
  font-size: 14px;
  font-weight: 700;
  margin: 0 0 10px 0;
  color: #1e40af;
}
.help-panel p  { font-size: 13px; margin: 0 0 8px 0; color: #1e3a5f; line-height: 1.55; }
.help-panel h5 { font-size: 12px; font-weight: 700; color: #1e40af; margin: 12px 0 6px 0; text-transform: uppercase; letter-spacing: 0.04em; }
.help-panel dl { margin: 0 0 8px 0; display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; }
.help-panel dt { font-size: 12px; font-weight: 700; color: #1e40af; white-space: nowrap; padding-top: 1px; }
.help-panel dd { font-size: 12px; color: #1e3a5f; margin: 0; }
.help-close {
  position: absolute;
  top: 12px;
  right: 14px;
  background: none;
  border: none;
  font-size: 13px;
  color: #1e40af;
  cursor: pointer;
  padding: 2px 6px;
  border-radius: 4px;
  font-weight: 700;
}
.help-close:hover { background: #bfdbfe; }

/* ── S-K29: Pilotguide ───────────────────────────── */
.pg-intro {
  margin-bottom: 24px;
  font-size: 14px;
  color: var(--muted);
  max-width: 680px;
}

.pg-steps {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-bottom: 32px;
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
}

.pg-step {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  transition: background 0.1s;
}
.pg-step:last-child { border-bottom: none; }
.pg-step:hover      { background: #f8fafc; }
.pg-step-pilot      { background: #f0fdf4; }
.pg-step-pilot:hover { background: #dcfce7; }

.pg-step-num {
  width: 52px;
  min-width: 52px;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 18px;
  font-size: 22px;
  font-weight: 800;
  color: var(--primary);
  opacity: 0.35;
  flex-shrink: 0;
}

.pg-step-body {
  padding: 16px 20px 16px 4px;
  flex: 1;
}

.pg-step-title {
  font-size: 15px;
  font-weight: 700;
  margin: 0 0 6px 0;
  color: var(--text);
}

.pg-step-desc {
  font-size: 13px;
  color: var(--muted);
  margin: 0 0 12px 0;
  line-height: 1.55;
  max-width: 600px;
}

.pg-btn { font-size: 13px; }

.pg-realdemo-info {
  margin-bottom: 10px;
}

.pg-ao-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  background: #f8fafc;
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 13px;
}
.pg-ao-title { font-weight: 600; }
.pg-ao-date  { color: var(--muted); font-size: 12px; }

.pg-pilot-plan {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 4px;
}
.pg-pilot-week {
  display: flex;
  gap: 14px;
  align-items: flex-start;
}
.pg-week-label {
  font-size: 12px;
  font-weight: 700;
  color: #166534;
  background: #dcfce7;
  border: 1px solid #bbf7d0;
  border-radius: 4px;
  padding: 2px 10px;
  white-space: nowrap;
  flex-shrink: 0;
  margin-top: 1px;
}
.pg-week-desc {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
}

.pg-section {
  margin-bottom: 28px;
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
}
.pg-section-title {
  font-size: 14px;
  font-weight: 700;
  margin: 0;
  padding: 12px 18px;
  background: #f8fafc;
  border-bottom: 1px solid var(--border);
  color: var(--text);
}
.pg-decision-list,
.pg-limits-list {
  margin: 0;
  padding: 14px 18px 14px 36px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.pg-decision-list li,
.pg-limits-list li {
  font-size: 13px;
  line-height: 1.5;
  color: var(--text);
}
.pg-section-limits .pg-section-title { background: #fef2f2; border-color: #fecaca; }
.pg-section-limits .pg-limits-list li { color: var(--muted); }

/* ── S-K28: Om-sida — ordlista och FAQ ───────────── */
.about-glossary,
.about-faq {
  margin: 12px 0 0 0;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 6px 20px;
}
.about-glossary dt,
.about-faq dt {
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  padding-top: 2px;
  white-space: nowrap;
}
.about-glossary dd,
.about-faq dd {
  font-size: 13px;
  color: var(--muted);
  margin: 0;
  line-height: 1.55;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--border);
}
.about-glossary dd:last-child,
.about-faq dd:last-child { border-bottom: none; }

.about-safety {
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 8px;
  padding: 16px 20px;
}
.about-safety ul { margin: 8px 0 12px 0; padding-left: 20px; }
.about-safety li { font-size: 13px; margin-bottom: 6px; line-height: 1.5; }
.about-safety-notice {
  font-size: 12px;
  color: #92400e;
  font-style: italic;
  margin: 0;
}

/* ── S-K27: Deadline Radar / Åtgärdskalender ─────── */
.dr-summary       { margin-bottom: 20px; }
.dr-kpi-urgent    { border-top: 3px solid #ef4444; }
.dr-kpi-realdemo  { border-top: 3px solid #7c3aed; }

.dr-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-bottom: 20px;
}
.dr-filter-label  { font-size: 13px; font-weight: 600; color: var(--muted); }
.dr-filter-btn {
  font-size: 12px;
  font-weight: 600;
  padding: 5px 12px;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  cursor: pointer;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.dr-filter-btn:hover  { background: var(--primary-light, #eff6ff); border-color: var(--primary); }
.dr-filter-btn.active { background: var(--primary); color: #fff; border-color: var(--primary); }

.dr-list          { display: flex; flex-direction: column; gap: 24px; }

.dr-group         { border-radius: 8px; overflow: hidden; border: 1px solid var(--border); }
.dr-group-title {
  font-size: 13px;
  font-weight: 700;
  padding: 10px 16px;
  margin: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}
.dr-group-count   { font-weight: 400; color: var(--muted); }
.dr-group-cards   { display: flex; flex-direction: column; gap: 0; }

.dr-group-urgent  .dr-group-title { background: #fef2f2; color: #991b1b; border-bottom: 1px solid #fecaca; }
.dr-group-soon    .dr-group-title { background: #fffbeb; color: #92400e; border-bottom: 1px solid #fde68a; }
.dr-group-later   .dr-group-title { background: #f0fdf4; color: #166534; border-bottom: 1px solid #bbf7d0; }
.dr-group-opening .dr-group-title { background: #eff6ff; color: #1e40af; border-bottom: 1px solid #bfdbfe; }
.dr-group-nodate  .dr-group-title { background: #f8fafc; color: #475569; border-bottom: 1px solid var(--border); }
.dr-group-closed  .dr-group-title { background: #f1f5f9; color: var(--muted); border-bottom: 1px solid var(--border); }

.dr-card {
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  transition: background 0.1s;
}
.dr-card:last-child   { border-bottom: none; }
.dr-card:hover        { background: var(--surface-hover, #f8fafc); }

.dr-card-header {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.dr-title  { font-size: 14px; font-weight: 600; flex: 1; min-width: 0; }
.dr-tags   { display: flex; gap: 6px; flex-shrink: 0; }

.dr-tag {
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 10px;
  letter-spacing: 0.02em;
  cursor: default;
}
.dr-tag-realdemo { background: #ede9fe; color: #5b21b6; border: 1px solid #c4b5fd; }
.dr-tag-unver    { background: #fffbeb; color: #92400e; border: 1px solid #fde68a; }

.dr-meta-row {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 8px;
  font-size: 13px;
}
.dr-date-label        { color: var(--text); }
.dr-date-missing      { color: var(--muted); font-style: italic; }

.dr-days          { font-size: 12px; font-weight: 700; padding: 2px 9px; border-radius: 10px; }
.dr-days-urgent   { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }
.dr-days-warn     { background: #fffbeb; color: #92400e; border: 1px solid #fde68a; }
.dr-days-ok       { background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0; }
.dr-days-overdue  { background: #ef4444; color: #fff; border: 1px solid #dc2626; }

.dr-verify-notice {
  font-size: 12px;
  color: #92400e;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 4px;
  padding: 6px 10px;
  margin-bottom: 10px;
}

.dr-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.btn-sm {
  font-size: 12px;
  padding: 5px 12px;
  border-radius: 6px;
}

/* ── S-K33: Granska intag ───────────────────────────────────────────────────── */

.intake-review-card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: 18px 20px 14px;
  margin-bottom: 20px;
}

.intake-review-header {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

.intake-review-title {
  font-weight: 600;
  font-size: 15px;
  color: #1e293b;
}

.intake-status-chip {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 999px;
}
.chip-draft     { background: #f1f5f9; color: #475569; }
.chip-review    { background: #fef3c7; color: #92400e; }
.chip-approved  { background: #dcfce7; color: #166534; }
.chip-rejected  { background: #fee2e2; color: #991b1b; }

.intake-promoted-note {
  font-size: 11px;
  color: #166534;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 4px;
  padding: 2px 8px;
}

.intake-review-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 12px;
  color: #64748b;
  margin-bottom: 10px;
}

.intake-review-warning {
  font-size: 12px;
  color: #92400e;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 4px;
  padding: 6px 10px;
  margin-bottom: 10px;
}

.intake-review-consent {
  margin-top: 10px;
  margin-bottom: 0;
}

.intake-excerpt-wrap {
  margin-bottom: 10px;
  font-size: 12px;
}
.intake-excerpt-wrap summary {
  cursor: pointer;
  color: #475569;
  padding: 2px 0;
}
.intake-excerpt {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 4px;
  padding: 8px;
  font-size: 11px;
  max-height: 180px;
  overflow-y: auto;
  white-space: pre-wrap;
  word-break: break-word;
  margin-top: 6px;
  color: #475569;
}

.intake-review-form {
  margin-bottom: 12px;
}
.irf-row {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 6px 10px;
  align-items: start;
  margin-bottom: 6px;
}
.irf-row label {
  font-size: 12px;
  font-weight: 500;
  color: #475569;
  padding-top: 6px;
}
.irf-row input, .irf-row textarea {
  font-size: 13px;
  padding: 5px 8px;
  border: 1px solid #cbd5e1;
  border-radius: 5px;
  width: 100%;
  background: #f8fafc;
}
.irf-row textarea {
  resize: vertical;
}

.intake-review-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

.btn-success {
  background: #22c55e;
  color: #fff;
  border: none;
  cursor: pointer;
  border-radius: 8px;
  padding: 8px 16px;
  font-weight: 500;
}
.btn-success:hover { background: #16a34a; }

.btn-danger {
  background: #ef4444;
  color: #fff;
  border: none;
  cursor: pointer;
  border-radius: 8px;
  padding: 8px 16px;
  font-weight: 500;
}
.btn-danger:hover { background: #dc2626; }

.intake-msg {
  font-size: 12px;
  padding: 4px 8px;
  border-radius: 4px;
  margin-top: 6px;
}
.intake-msg-ok    { background: #dcfce7; color: #166534; }
.intake-msg-error { background: #fee2e2; color: #991b1b; }

/* ── S-K34: Utlysningsutkast ────────────────────────────────────────────────── */

.aod-create-box {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: 16px 18px;
  margin-bottom: 20px;
}
.aod-create-title {
  font-size: 13px;
  font-weight: 600;
  color: #334155;
  margin-bottom: 10px;
}
.aod-create-box select {
  font-size: 13px;
  padding: 5px 8px;
  border: 1px solid #cbd5e1;
  border-radius: 5px;
  background: #fff;
  width: 100%;
}

/* ── S-K36: AO Draft filter bar & compact cards ─────────────────────────────── */

.aod-filter-bar {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.aod-filter-btn {
  background: #f1f5f9;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  padding: 4px 12px;
  font-size: 12px;
  cursor: pointer;
  color: #475569;
  transition: background 0.15s, color 0.15s;
}
.aod-lifecycle-bar { margin-top: -6px; align-items: center; }
.aod-filter-label { font-size: 12px; color: #64748b; margin-right: 4px; align-self: center; }
.aod-filter-btn:hover { background: #e2e8f0; }
.aod-filter-btn.active {
  background: #1d4ed8;
  color: #fff;
  border-color: #1d4ed8;
}
.aod-compact-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 12px;
  color: #64748b;
  padding: 4px 0 10px;
}
.aod-compact-meta span { white-space: nowrap; }
.aod-edit-panel { margin-top: 10px; }
.aod-empty-filter {
  padding: 16px 0;
  color: #64748b;
  font-size: 13px;
}

/* ── S-K39: Kortlista ───────────────────────────────────────────────── */
.kortlista-content { display: flex; flex-direction: column; gap: 16px; }

.sl-section { border-radius: 8px; overflow: hidden; border: 1px solid var(--border); }
.sl-section-header {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 14px; font-size: 14px; font-weight: 600;
}
.sl-section-title  { flex: 1; }
.sl-section-count  { font-weight: 400; color: var(--muted); font-size: 13px; }
.sl-section-desc   { margin: 0; padding: 4px 14px 10px; font-size: 12px; color: var(--muted); }
.sl-toggle-btn {
  background: none; border: 1px solid var(--border); border-radius: 4px;
  padding: 2px 8px; font-size: 12px; cursor: pointer; color: var(--muted);
}
.sl-toggle-btn:hover { background: var(--hover-bg, #f1f5f9); }

.sl-section-agera      .sl-section-header { background: #f0fdf4; color: #166534; border-bottom: 1px solid #bbf7d0; }
.sl-section-verifiera  .sl-section-header { background: #fffbeb; color: #92400e; border-bottom: 1px solid #fde68a; }
.sl-section-bevaka     .sl-section-header { background: #f8fafc; color: #475569; border-bottom: 1px solid var(--border); }
.sl-section-ej-relevant .sl-section-header { background: #f1f5f9; color: var(--muted); border-bottom: 1px solid var(--border); }

.sl-card {
  padding: 12px 14px; border-top: 1px solid var(--border);
  font-size: 13px; background: var(--card-bg, #fff);
}
.sl-card:first-child { border-top: none; }
.sl-card-header { display: flex; align-items: flex-start; gap: 8px; margin-bottom: 6px; }
.sl-card-title  { flex: 1; font-weight: 500; line-height: 1.35; }

.sl-badge {
  flex-shrink: 0; font-size: 10px; font-weight: 700; letter-spacing: .04em;
  border-radius: 3px; padding: 2px 5px; white-space: nowrap;
}
.sl-badge-verified { background: #dcfce7; color: #166534; }
.sl-badge-check    { background: #fef3c7; color: #92400e; }

.sl-card-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 4px; }
.sl-deadline  { font-size: 12px; font-weight: 500; }
.sl-dl-urgent { color: #dc2626; }
.sl-dl-soon   { color: #d97706; }
.sl-dl-later  { color: #16a34a; }
.sl-dl-unknown { color: var(--muted); font-style: italic; }
.sl-amount    { font-size: 12px; color: var(--muted); }
.sl-card-link { font-size: 12px; color: var(--link, #2563eb); text-decoration: none; }
.sl-card-link:hover { text-decoration: underline; }
.sl-card-note { font-size: 12px; color: var(--muted); line-height: 1.4; margin-top: 4px; }
.sl-empty     { padding: 12px 14px; color: var(--muted); font-size: 13px; font-style: italic; }

/* ── S-K40 Action Pack ──────────────────────────────────────────────────────── */
.sl-action-pack { margin-top: 8px; border-top: 1px solid #d1fae5; padding-top: 6px; }
.sl-ap-toggle {
  background: none; border: 1px solid #6ee7b7; border-radius: 4px;
  padding: 3px 9px; font-size: 12px; cursor: pointer; color: #065f46;
}
.sl-ap-toggle:hover { background: #ecfdf5; }
.sl-ap-body { margin-top: 6px; }
.sl-ap-list {
  list-style: none; margin: 0; padding: 0;
}
.sl-ap-item {
  padding: 4px 0 4px 18px; font-size: 12px; line-height: 1.4; position: relative;
  color: #1e293b;
}
.sl-ap-item::before {
  content: '☐'; position: absolute; left: 0; color: #6b7280;
}
.sl-ap-alert {
  color: #b91c1c; font-weight: 600;
}
.sl-ap-alert::before { content: '⚠'; color: #b91c1c; }
.sl-print-btn {
  background: none; border: 1px solid #6ee7b7; border-radius: 4px;
  padding: 2px 8px; font-size: 12px; cursor: pointer; color: #065f46;
}
.sl-print-btn:hover { background: #ecfdf5; }

/* ── S-K40 Scoped print — only agera_nu section ─────────────────────────────── */
@media print {
  body.printing-agera-nu .main-header,
  body.printing-agera-nu nav,
  body.printing-agera-nu #page-search,
  body.printing-agera-nu #page-opportunities,
  body.printing-agera-nu #page-ai,
  body.printing-agera-nu #page-foundations,
  body.printing-agera-nu #page-queue,
  body.printing-agera-nu .sl-section:not(.sl-section-agera),
  body.printing-agera-nu .sl-print-btn,
  body.printing-agera-nu .sl-toggle-btn,
  body.printing-agera-nu .sl-ap-toggle {
    display: none !important;
  }
  body.printing-agera-nu .sl-ap-body {
    display: block !important;
  }
  body.printing-agera-nu .sl-section-agera {
    border: none;
    box-shadow: none;
  }
}

/* ── S-K41 Meeting Pack — screen utility classes ────────────────────────────── */
.sl-print-only  { display: none; }
.sl-screen-only { display: block; }
.sl-card-funder { font-size: 11px; color: var(--muted); margin-bottom: 4px; }
.sl-card-note-full { font-size: 12px; color: var(--muted); line-height: 1.4; margin-top: 4px; }

/* ── S-K41 Meeting Pack — scoped print rules ────────────────────────────────── */
@media print {
  /* Show print-only elements, hide screen-only elements */
  body.printing-agera-nu .sl-print-only  { display: block !important; }
  body.printing-agera-nu .sl-screen-only { display: none  !important; }

  /* Meeting header */
  body.printing-agera-nu #sl-motet-header {
    margin-bottom: 24px;
    padding-bottom: 14px;
    border-bottom: 2px solid #16a34a;
    page-break-inside: avoid;
  }
  body.printing-agera-nu .sl-mh-title {
    font-size: 20px; font-weight: 700; margin: 0 0 4px; color: #14532d;
  }
  body.printing-agera-nu .sl-mh-sub {
    font-size: 13px; margin: 0 0 6px; color: #374151; font-weight: 500;
  }
  body.printing-agera-nu .sl-mh-meta {
    font-size: 12px; margin: 0 0 8px; color: #6b7280;
  }
  body.printing-agera-nu .sl-mh-disclaimer {
    font-size: 11px; margin: 0; font-style: italic; color: #374151;
    padding: 6px 8px; background: #f0fdf4; border-left: 3px solid #16a34a;
  }

  /* Card layout */
  body.printing-agera-nu .sl-card-agera {
    page-break-inside: avoid;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    padding: 12px 16px;
    margin-bottom: 14px;
  }
  body.printing-agera-nu .sl-card-agera:last-child { margin-bottom: 0; }

  /* Funder name */
  body.printing-agera-nu .sl-card-funder {
    font-size: 11px; color: #6b7280; margin-bottom: 4px;
  }

  /* Full note */
  body.printing-agera-nu .sl-card-note-full {
    font-size: 12px; color: #374151; line-height: 1.5; margin-top: 4px;
  }

  /* Source URL visible as text */
  body.printing-agera-nu .sl-card-link::after {
    content: " (" attr(href) ")";
    font-size: 10px;
    color: #6b7280;
    word-break: break-all;
  }

  /* Section header without colours */
  body.printing-agera-nu .sl-section-agera .sl-section-header {
    background: none;
    border-bottom: 1px solid #d1d5db;
    color: #111;
  }
}

/* ── S-K44 Verification Pack ────────────────────────────────────────────────── */
.sl-verify-pack { margin-top: 8px; border-top: 1px solid #fde68a; padding-top: 6px; }
.sl-vp-toggle {
  background: none; border: 1px solid #f59e0b; border-radius: 4px;
  padding: 3px 9px; font-size: 12px; cursor: pointer; color: #92400e;
}
.sl-vp-toggle:hover { background: #fffbeb; }
.sl-vp-label {
  margin: 0 0 6px; font-size: 11px; font-style: italic; color: #92400e;
  padding: 4px 8px; background: #fffbeb; border-left: 3px solid #f59e0b;
}
.sl-vp-list  { list-style: none; margin: 0; padding: 0; }
.sl-vp-item {
  padding: 4px 0 4px 18px; font-size: 12px; line-height: 1.4;
  position: relative; color: #374151;
}
.sl-vp-item::before  { content: '▸'; position: absolute; left: 0; color: #9ca3af; font-size: 10px; }
.sl-vp-gap           { color: #b45309; font-weight: 500; }
.sl-vp-gap::before   { content: '⚑'; color: #b45309; }
.sl-vp-warning       { color: #b91c1c; font-weight: 600; }
.sl-vp-warning::before { content: '⚠'; color: #b91c1c; }
.sl-vp-patch         { color: #1d4ed8; font-size: 11px; }
.sl-vp-patch::before { content: '→'; color: #3b82f6; }

/* ── S-K48 Action Taken Toggle ──────────────────────────────────────────────── */
.sl-action-taken-btn {
  margin-top: 8px; display: inline-block;
  background: none; border: 1px solid #6b7280; border-radius: 4px;
  padding: 3px 10px; font-size: 12px; cursor: pointer; color: #374151;
}
.sl-action-taken-btn:hover { background: #f3f4f6; }
.sl-action-taken-done {
  border-color: #16a34a; color: #15803d; background: #f0fdf4;
}
.sl-action-taken-done:hover { background: #dcfce7; }
.sl-card-actioned { opacity: 0.6; }
.sl-card-actioned .sl-card-title { text-decoration: line-through; color: #6b7280; }
.sl-actioned-stamp {
  font-size: 11px; font-weight: 700; color: #15803d;
  border: 1px solid #16a34a; border-radius: 3px;
  padding: 1px 6px; display: inline-block; margin-top: 6px;
  text-transform: uppercase; letter-spacing: 0.05em;
}
@media print {
  body.printing-agera-nu .sl-action-taken-btn { display: none; }
  body.printing-agera-nu .sl-card-actioned { opacity: 1; }
  body.printing-agera-nu .sl-card-actioned .sl-card-title {
    text-decoration: none; color: #111;
  }
}

/* ── S-K49 Kungsbackamodellen Frontend Reset ──────────────────────────────── */
.nav-sep {
  height: 1px; background: var(--border); margin: 6px 12px;
}

.sidebar-filter-stiftelse {
  margin-top: 4px;
}
.sidebar-filter-stiftelse > summary {
  cursor: pointer; font-size: 12px; font-weight: 600;
  color: var(--muted); padding: 4px 0; list-style: none;
  user-select: none;
}
.sidebar-filter-stiftelse > summary::after {
  content: ' ▸'; font-size: 10px;
}
.sidebar-filter-stiftelse[open] > summary::after {
  content: ' ▾';
}
.sidebar-filter-stiftelse .filter-group {
  margin-top: 8px;
}

.sl-cockpit-strip {
  display: flex; gap: 12px; margin-bottom: 16px;
}
.sl-cockpit-cell {
  flex: 1; border-radius: 8px; padding: 12px 14px;
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  border: 1px solid var(--border);
}
.sl-cockpit-num {
  font-size: 28px; font-weight: 700; line-height: 1;
}
.sl-cockpit-lbl {
  font-size: 11px; color: var(--muted); text-align: center;
}
.sl-cockpit-agera    { background: #f0fdf4; border-color: #bbf7d0; }
.sl-cockpit-agera    .sl-cockpit-num { color: #166534; }
.sl-cockpit-verifiera { background: #fffbeb; border-color: #fde68a; }
.sl-cockpit-verifiera .sl-cockpit-num { color: #92400e; }
.sl-cockpit-bevaka   { background: #f8fafc; border-color: var(--border); }
.sl-cockpit-bevaka   .sl-cockpit-num { color: #475569; }

/* ── S-K50 Municipal Operator Workspace (GOV.UK/NHS benchmark) ─────────────── */

/* Page header */
.kl-page-head { margin-bottom: 20px; }
.kl-h1 {
  font-size: 26px; font-weight: 700; color: #0b0c0c;
  line-height: 1.2; margin-bottom: 8px;
}
.kl-lead {
  font-size: 15px; color: #505a5f; max-width: 680px;
  line-height: 1.55; margin: 0;
}
.kl-inset {
  border-left: 4px solid #b1b4b6; padding: 10px 14px;
  margin-bottom: 20px; font-size: 13px; color: #505a5f;
  background: #f3f2f1; max-width: 680px;
}

/* Summary bar */
.kl-summary-bar {
  display: flex; align-items: center; flex-wrap: wrap;
  gap: 8px 20px; border: 1px solid var(--border);
  background: #fff; padding: 10px 16px;
  margin-bottom: 4px; font-size: 13px;
}
.kl-stat-item { color: #505a5f; white-space: nowrap; }
.kl-stat-n { font-weight: 700; color: #0b0c0c; font-size: 15px; margin-right: 4px; }
.kl-stat-muted { color: #9ca3af; }
.kl-stat-sep {
  width: 1px; height: 14px; background: #d1d5db;
  display: inline-block; vertical-align: middle;
}

/* Section blocks */
.kl-section {
  background: #fff; border: 1px solid var(--border);
  border-left-width: 4px; border-radius: 0;
}
.kl-sect-agera       { border-left-color: #1d4ed8; }
.kl-sect-verifiera   { border-left-color: #d97706; }
.kl-sect-bevaka      { border-left-color: #9ca3af; }
.kl-sect-ej-relevant { border-left-color: #d1d5db; }

.kl-sect-head {
  padding: 12px 16px; border-bottom: 1px solid var(--border);
}
.kl-sect-top {
  display: flex; justify-content: space-between;
  align-items: flex-start; gap: 12px;
}
.kl-sect-h2 { font-size: 16px; font-weight: 700; color: #0b0c0c; margin: 0; }
.kl-sect-count { font-weight: 400; color: #505a5f; font-size: 15px; }
.kl-sect-hint {
  font-size: 13px; color: #505a5f; margin: 4px 0 0;
  max-width: 640px; line-height: 1.45;
}
.kl-sect-controls { display: flex; gap: 6px; align-items: center; flex-shrink: 0; }

.kl-toggle-btn, .kl-print-btn {
  font-size: 13px; padding: 3px 10px; cursor: pointer;
  background: #fff; border: 1px solid #b1b4b6; color: #505a5f;
  border-radius: 0; font-family: inherit; white-space: nowrap;
}
.kl-toggle-btn:hover, .kl-print-btn:hover { background: #f3f2f1; }
.kl-toggle-btn:focus-visible, .kl-print-btn:focus-visible {
  outline: 3px solid #ffdd00; outline-offset: 0;
}

/* Empty state */
.kl-empty {
  padding: 12px 16px; font-size: 13px; color: #9ca3af; font-style: italic;
}

/* Opportunity rows */
.kl-row { padding: 12px 16px; border-top: 1px solid #f3f2f1; background: #fff; }
.kl-rows > .kl-row:first-child { border-top: none; }
.kl-row-actioned { background: #f9fafb; }

.kl-row-hd { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 6px; }
.kl-row-title { flex: 1; font-size: 14px; font-weight: 600; color: #0b0c0c; line-height: 1.35; }
.kl-row-actioned .kl-row-title { color: #6b7280; }

/* Status tags */
.kl-tag {
  display: inline-block; font-size: 12px; font-weight: 600;
  padding: 2px 7px; border-radius: 0; white-space: nowrap; flex-shrink: 0;
}
.kl-tag-verified { background: #cce2d8; color: #005a30; }
.kl-tag-check    { background: #fce9c5; color: #6e3a00; }

/* Metadata summary list */
.kl-meta { font-size: 13px; margin: 0; border-top: 1px solid #f3f2f1; padding-top: 2px; }
.kl-meta-row {
  display: flex; gap: 0; padding: 3px 0;
  border-bottom: 1px solid #f3f2f1; align-items: baseline;
}
.kl-meta-row:last-child { border-bottom: none; }
.kl-meta-row dt {
  width: 140px; flex-shrink: 0; color: #505a5f;
  font-weight: 400; font-size: 12px; padding-right: 12px;
}
.kl-meta-row dd { flex: 1; color: #0b0c0c; font-size: 13px; }
.kl-meta-nextstep dd { color: #505a5f; font-style: italic; font-size: 12px; }

/* Deadline values */
.kl-dl-urgent { color: #d4351c; font-weight: 600; }
.kl-dl-soon   { color: #c2410c; }
.kl-dl-later  { color: #0b0c0c; }
.kl-dl-unknown { color: #9ca3af; font-style: italic; }

/* Source link */
.kl-link { color: #1d4ed8; text-decoration: underline; font-size: 13px; }
.kl-link:hover { color: #1e40af; }
.kl-link:focus-visible { outline: 3px solid #ffdd00; outline-offset: 0; }

/* External action taken row */
.kl-meta-eat dd { display: flex; align-items: center; gap: 8px; }
.kl-eat-status { font-size: 12px; font-weight: 500; }
.kl-eat-taken     { color: #005a30; }
.kl-eat-not-taken { color: #505a5f; }
.kl-eat-btn {
  font-size: 11px; padding: 1px 7px; cursor: pointer;
  background: #fff; border: 1px solid #b1b4b6; color: #505a5f;
  border-radius: 0; font-family: inherit;
}
.kl-eat-btn:hover { background: #f3f2f1; }
.kl-eat-btn:focus-visible { outline: 3px solid #ffdd00; outline-offset: 0; }

/* Note and funder */
.kl-note {
  font-size: 13px; color: #505a5f; line-height: 1.5;
  margin: 6px 0 0; padding: 6px 0; border-top: 1px solid #f3f2f1;
}
.kl-funder { font-size: 12px; color: #505a5f; margin: 0 0 4px; }

/* Checklists using <details> */
.kl-checklist { margin-top: 8px; border-top: 1px solid #f3f2f1; padding-top: 6px; }
.kl-checklist > summary {
  font-size: 13px; color: #1d4ed8; cursor: pointer;
  padding: 2px 0; list-style: none; user-select: none;
}
.kl-checklist > summary::before { content: '▸ '; font-size: 10px; color: #6b7280; }
.kl-checklist[open] > summary::before { content: '▾ '; }
.kl-checklist > summary::-webkit-details-marker { display: none; }
.kl-checklist-note {
  font-size: 12px; color: #505a5f; font-style: italic;
  padding: 4px 8px; background: #f3f2f1;
  border-left: 3px solid #b1b4b6; margin: 6px 0;
}
.kl-checklist-action .kl-checklist-list { list-style: decimal; padding-left: 22px; margin: 6px 0 0; }
.kl-checklist-verify .kl-checklist-list { list-style: none; padding-left: 14px; margin: 6px 0 0; }
.kl-checklist-item {
  font-size: 13px; line-height: 1.45; color: #0b0c0c;
  padding: 3px 0; border-bottom: 1px solid #f3f2f1; position: relative;
}
.kl-checklist-item:last-child { border-bottom: none; }
.kl-checklist-verify .kl-checklist-item::before {
  content: '▸'; position: absolute; left: -12px; top: 4px;
  font-size: 10px; color: #9ca3af;
}
.kl-checklist-alert   { color: #d4351c; font-weight: 600; }
.kl-checklist-gap     { color: #6e3a00; font-weight: 500; }
.kl-checklist-warning { color: #d4351c; font-weight: 600; }
.kl-checklist-patch   { color: #1d4ed8; font-size: 12px; }

/* ── S-K50 Print rules ──────────────────────────────────────────────────────── */
@media print {
  body.printing-agera-nu .kl-summary-bar                  { display: none !important; }
  body.printing-agera-nu .kl-section:not(.kl-sect-agera)  { display: none !important; }
  body.printing-agera-nu .kl-sect-controls                { display: none !important; }
  body.printing-agera-nu .kl-rows.hidden                  { display: block !important; }
  body.printing-agera-nu .kl-inset                        { display: none !important; }
  body.printing-agera-nu .kl-page-head                    { display: none !important; }
  body.printing-agera-nu .kl-row                          { page-break-inside: avoid; }
  body.printing-agera-nu .kl-eat-btn                      { display: none !important; }
  body.printing-agera-nu .kl-row-actioned                 { background: #fff; }
  body.printing-agera-nu .kl-row-actioned .kl-row-title   { color: #0b0c0c; }
  body.printing-agera-nu .kl-section                      { border-left-width: 0; }
  body.printing-agera-nu .kl-meta-nextstep                { display: none !important; }
  body.printing-agera-nu .sl-print-only                   { display: block !important; }
  body.printing-agera-nu .sl-screen-only                  { display: none  !important; }
  body.printing-agera-nu #sl-motet-header                 { display: block !important; }
}

/* ── S-K51 First Page Operator UX Rebuild ───────────────────────────────────── */

.kortlista-content { display: block; }

/* Service band */
.kl-svc-band {
  border-bottom: 2px solid #0b0c0c;
  padding: 20px 0 16px;
  margin-bottom: 20px;
}
.kl-svc-ctx {
  display: block; font-size: 11px; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase;
  color: #505a5f; margin-bottom: 4px;
}
.kl-svc-title {
  font-size: 28px; font-weight: 700; color: #0b0c0c;
  line-height: 1.15; margin: 0 0 6px;
}
.kl-svc-sub {
  font-size: 14px; color: #505a5f; line-height: 1.5;
  max-width: 600px; margin: 0;
}

/* Two-column workspace */
.kl-workspace {
  display: grid;
  grid-template-columns: 1fr 220px;
  gap: 20px;
  align-items: start;
}
.kl-main { min-width: 0; }

/* Priority queue */
.kl-queue-section {
  background: #fff; border: 1px solid var(--border);
  margin-bottom: 16px; border-radius: 6px; overflow: hidden;
}
.kl-q-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 14px; border-bottom: 1px solid var(--border);
  background: #eef0f2;
}
.kl-q-head-title { font-size: 14px; font-weight: 700; color: #0b0c0c; }
.kl-q-head-count { font-weight: 400; color: #505a5f; }

/* Column header row */
.kl-q-colhd {
  display: flex; align-items: center;
  padding: 4px 10px; border-bottom: 1px solid var(--border);
  background: #f3f2f1; font-size: 11px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .06em; color: #505a5f;
}

/* Column widths — shared by colhd and q-row */
.kl-q-col-badge { width: 88px; flex-shrink: 0; }
.kl-q-col-title { flex: 1; min-width: 0; }
.kl-q-col-dl    { width: 175px; flex-shrink: 0; padding-right: 10px; }
.kl-q-col-eat   { width: 70px; flex-shrink: 0; }

/* Queue items */
.kl-q-item { border-top: 1px solid #f3f2f1; }
.kl-q-item:first-child { border-top: none; }

.kl-q-row {
  display: flex; align-items: center;
  padding: 8px 10px; cursor: pointer;
  list-style: none; user-select: none;
}
.kl-q-row::-webkit-details-marker { display: none; }
.kl-q-row::marker { display: none; }
.kl-q-item[open] > .kl-q-row { background: #eef0f2; }
.kl-q-row:hover  { background: #eef0f2; }
.kl-q-actioned > .kl-q-row { background: #f9fafb; }

.kl-q-title {
  font-size: 13px; font-weight: 600; color: #0b0c0c;
  line-height: 1.3; padding-right: 10px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.kl-q-actioned .kl-q-title { color: #6b7280; }
.kl-q-dl { font-size: 12px; }

/* Badges */
.kl-badge {
  display: inline-block; font-size: 11px; font-weight: 700;
  padding: 2px 7px; white-space: nowrap; border-radius: 0;
}
.kl-badge-agera     { background: #dbeafe; color: #1e40af; border: 1px solid #bfdbfe; }
.kl-badge-verifiera { background: #fef3c7; color: #92400e; border: 1px solid #fde68a; }

/* EAT column tag in summary row */
.kl-eat-tag-taken { font-size: 12px; color: #005a30; font-weight: 500; }
.kl-eat-tag-no    { font-size: 12px; color: #6b7280; }

/* Queue empty state */
.kl-q-empty { padding: 14px; font-size: 13px; color: #9ca3af; font-style: italic; }

/* Queue detail panel */
.kl-q-detail {
  padding: 10px 14px 14px 100px;
  background: #f2f4f7; border-top: 1px solid #e2e5e9;
}

/* Detail metadata DL */
.kl-qdm { font-size: 13px; margin: 0 0 8px; }
.kl-qdm-row {
  display: flex; gap: 0; padding: 3px 0;
  border-bottom: 1px solid #f3f2f1; align-items: baseline;
}
.kl-qdm-row:last-child { border-bottom: none; }
.kl-qdm-row dt {
  width: 100px; flex-shrink: 0; color: #505a5f;
  font-weight: 400; font-size: 12px; padding-right: 10px;
}
.kl-qdm-row dd { flex: 1; color: #0b0c0c; font-size: 13px; }
.kl-qdm-nextstep dd { color: #505a5f; font-style: italic; font-size: 12px; }

/* EAT control in detail */
.kl-eat-ctrl {
  display: flex; align-items: center; gap: 10px;
  margin-top: 10px; padding-top: 8px; border-top: 1px solid #f3f2f1;
}
.kl-eat-label { font-size: 13px; font-weight: 500; }
.kl-eat-ctrl .kl-eat-tag-taken { color: #005a30; }
.kl-eat-ctrl .kl-eat-tag-no    { color: #505a5f; }

/* Secondary sections */
.kl-secondary { margin-top: 4px; }
.kl-ss { border: 1px solid var(--border); margin-bottom: 8px; border-radius: 4px; overflow: hidden; }
.kl-ss-summary {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 12px; cursor: pointer;
  font-size: 13px; font-weight: 600; color: #505a5f;
  background: #f8fafc; list-style: none; user-select: none;
}
.kl-ss-summary::-webkit-details-marker { display: none; }
.kl-ss-summary::marker { display: none; }
.kl-ss-count { font-weight: 400; color: #9ca3af; font-size: 12px; }
.kl-ss-hint {
  font-size: 12px; color: #9ca3af; font-style: italic;
  padding: 6px 12px 4px; margin: 0;
}
.kl-ss-list { list-style: none; margin: 0; padding: 0 12px 8px; }
.kl-ss-item {
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 4px 0; border-top: 1px solid #f3f2f1; font-size: 13px;
}
.kl-ss-item:first-child { border-top: none; }
.kl-ss-title { flex: 1; color: #374151; padding-right: 10px; }
.kl-ss-dl    { font-size: 12px; flex-shrink: 0; white-space: nowrap; }

/* Aside */
.kl-aside { position: sticky; top: 24px; }

.kl-status-panel {
  background: #fff; border: 1px solid var(--border);
  padding: 14px; margin-bottom: 12px; border-radius: 6px;
}
.kl-sp-title {
  font-size: 12px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: #505a5f; margin: 0 0 10px;
}
.kl-status-dl { margin: 0; }
.kl-status-row {
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 5px 0; border-top: 1px solid #f3f2f1; font-size: 13px;
}
.kl-status-row:first-child { border-top: none; }
.kl-status-row dt { color: #505a5f; }
.kl-status-row dd { font-size: 15px; font-weight: 700; color: #111827; }
.kl-s-agera    dt { color: #1e40af; font-weight: 500; }
.kl-s-verifiera dt { color: #b45309; font-weight: 500; }
.kl-s-ej       dd { color: #9ca3af; font-weight: 400; }
.kl-s-actioned dd { font-size: 13px; font-weight: 500; color: #374151; }

.kl-safety-panel {
  border-left: 3px solid #6b7280;
  padding: 8px 12px; background: #f8fafc;
  border-radius: 0 4px 4px 0;
}
.kl-safety-text {
  font-size: 12px; color: #505a5f; line-height: 1.45;
  margin: 0 0 4px;
}
.kl-safety-text:last-child { margin: 0; }

/* ── S-K51 Print rules ──────────────────────────────────────────────────────── */
@media print {
  body.printing-agera-nu .kl-svc-band          { display: none !important; }
  body.printing-agera-nu .kl-aside             { display: none !important; }
  body.printing-agera-nu .kl-secondary         { display: none !important; }
  body.printing-agera-nu .kl-q-colhd           { display: none !important; }
  body.printing-agera-nu .kl-q-head            { display: none !important; }
  body.printing-agera-nu .kl-q-item-verifiera  { display: none !important; }
  body.printing-agera-nu .kl-q-item            { page-break-inside: avoid; }
  body.printing-agera-nu .kl-q-detail          { background: none; padding-left: 0; }
  body.printing-agera-nu .kl-eat-btn           { display: none !important; }
  body.printing-agera-nu .kl-workspace         { display: block; }
  body.printing-agera-nu .kl-q-actioned .kl-q-title { color: #0b0c0c; }
  body.printing-agera-nu .sl-print-only        { display: block !important; }
  body.printing-agera-nu .sl-screen-only       { display: none  !important; }
  body.printing-agera-nu #sl-motet-header      { display: block !important; }
}

/* ── S-K52 Verify from operator workspace ───────────────────────────────────── */

.kl-verify-ctrl {
  margin-top: 12px; padding-top: 10px;
  border-top: 2px solid #d1d5db;
}
.kl-verify-head {
  font-size: 13px; margin: 0 0 6px; color: #0b0c0c; line-height: 1.4;
}
.kl-verify-title { font-weight: 700; }
.kl-verify-note  { color: #505a5f; }
.kl-verify-safety {
  font-size: 12px; color: #505a5f; font-style: italic;
  line-height: 1.4; margin: 0 0 10px;
  border-left: 3px solid #6b7280; padding: 4px 8px;
  background: #f8fafc;
}
.kl-verify-btn {
  font-size: 13px; font-weight: 600; cursor: pointer;
  padding: 5px 14px; border: 1px solid #374151;
  background: #fff; color: #111827;
  border-radius: 4px; font-family: inherit;
}
.kl-verify-btn:hover { background: #f3f2f1; }
.kl-verify-btn:focus-visible { outline: 3px solid #ffdd00; outline-offset: 0; }

/* Restrained success notice */
.kl-notice {
  background: #f0fdf4; border: 1px solid #bbf7d0;
  color: #166534; font-size: 13px; font-weight: 500;
  padding: 8px 14px; margin-bottom: 12px;
  border-radius: 4px;
}

/* Error notice modifier — S-K57 */
.kl-notice-error {
  background: #fef2f2; border-color: #fecaca; color: #991b1b;
}

/* Hide verify block when printing */
@media print {
  .kl-verify-ctrl { display: none !important; }
  .kl-notice      { display: none !important; }
}

/* ── S-K53 Urgency layer ─────────────────────────────────────────────────────── */

/* Deadline cell — stacked date + urgency label */
.kl-q-dl-cell {
  display: flex; flex-direction: column; justify-content: center; gap: 2px;
}
.kl-q-dl-date { font-size: 12px; }

/* Urgency label (inline and stacked uses) */
.kl-urgency { font-size: 11px; font-weight: 500; }
.kl-urg-critical { color: #b91c1c; font-weight: 600; }
.kl-urg-soon     { color: #92400e; }
.kl-urg-later    { color: #4b5563; font-weight: 400; }
.kl-urg-none     { color: #9ca3af; font-style: italic; font-weight: 400; }
.kl-urg-passed   { color: #6b7280; font-style: italic; font-weight: 400; }

/* Date colors for urgent thresholds */
.kl-dl-urgent7  { color: #b91c1c; font-weight: 600; }
.kl-dl-urgent14 { color: #92400e; font-weight: 500; }
.kl-dl-passed   { color: #6b7280; }

/* Unverified deadline marker in detail panel */
.kl-dl-unverified {
  font-size: 11px; color: #6b7280; font-style: italic;
  border: 1px solid #d1d5db; padding: 0 5px;
  border-radius: 3px; margin-left: 4px; white-space: nowrap;
}

/* S-K53 print: hide urgency labels — dates suffice on paper */
@media print {
  .kl-urgency     { display: none !important; }
  .kl-dl-unverified { display: none !important; }
}

/* ── S-K54 Operator Meeting Pack ────────────────────────────────────────────── */

.kl-q-head-btns { display: flex; gap: 6px; align-items: center; }

/* kl-mp-header is injected dynamically and hidden on screen */
#kl-mp-header { display: none; }

.kl-mp-title {
  font-size: 20pt; font-weight: 700; color: #0b0c0c;
  margin: 0 0 4pt; border-bottom: 2pt solid #0b0c0c;
  padding-bottom: 6pt; line-height: 1.2;
}
.kl-mp-sub   { font-size: 11pt; color: #505a5f; margin: 4pt 0 2pt; font-weight: 400; }
.kl-mp-meta  { font-size: 10pt; color: #0b0c0c; margin: 2pt 0 8pt; }
.kl-mp-safety {
  font-size: 10pt; color: #0b0c0c; font-style: italic;
  border-left: 3pt solid #6b7280; padding: 4pt 8pt;
  margin: 6pt 0 12pt; line-height: 1.4;
}
.kl-mp-counts {
  width: 100%; border-collapse: collapse; font-size: 11pt; margin-bottom: 12pt;
}
.kl-mp-counts th {
  text-align: left; font-weight: 600; color: #505a5f;
  border-bottom: 1pt solid #6b7280; padding: 3pt 8pt 3pt 0; font-size: 10pt;
}
.kl-mp-counts td {
  padding: 4pt 8pt 4pt 0; font-size: 14pt; font-weight: 700; color: #0b0c0c;
}
.kl-mp-section-title {
  font-size: 14pt; font-weight: 700; color: #0b0c0c;
  margin: 8pt 0 2pt; border-bottom: 1pt solid #6b7280; padding-bottom: 3pt;
}
.kl-mp-section-note {
  font-size: 10pt; color: #505a5f; font-style: italic; margin: 0 0 10pt;
}

@media print {
  body.printing-meeting-pack #kl-mp-header       { display: block !important; }
  body.printing-meeting-pack .kl-svc-band        { display: none !important; }
  body.printing-meeting-pack .kl-aside           { display: none !important; }
  body.printing-meeting-pack .kl-q-colhd         { display: none !important; }
  body.printing-meeting-pack .kl-q-head          { display: none !important; }
  body.printing-meeting-pack .kl-workspace       { display: block; }
  body.printing-meeting-pack .kl-q-detail        { background: none !important; padding-left: 0 !important; }
  body.printing-meeting-pack .kl-q-item          { page-break-inside: avoid; border-bottom: 1pt solid #e5e7eb; }
  body.printing-meeting-pack .kl-eat-btn         { display: none !important; }
  body.printing-meeting-pack .kl-verify-ctrl     { display: none !important; }
  body.printing-meeting-pack .kl-print-btn       { display: none !important; }
  body.printing-meeting-pack .kl-notice          { display: none !important; }
  body.printing-meeting-pack .kl-q-actioned .kl-q-title { color: #0b0c0c !important; }
  body.printing-meeting-pack .sl-print-only      { display: block !important; }
  body.printing-meeting-pack .sl-screen-only     { display: none  !important; }
  body.printing-meeting-pack .kl-ss-ej_relevant  { display: none !important; }
}

/* ── S-K55 Source Verification Aid ──────────────────────────────────────────── */

.kl-sv-block {
  margin-top: 10px; padding: 8px 10px;
  border-left: 3px solid #b1b4b6; background: #f8fafc;
}
.kl-sv-title {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: #505a5f; margin: 0 0 4px;
}
.kl-sv-hint {
  font-size: 12px; color: #505a5f; font-style: italic;
  margin: 0 0 6px; line-height: 1.4;
}
.kl-sv-dl { margin: 0; }
.kl-sv-row {
  display: flex; padding: 2px 0; align-items: baseline;
  border-bottom: 1px solid #f3f2f1; font-size: 12px;
}
.kl-sv-row:last-child { border-bottom: none; }
.kl-sv-row dt {
  width: 120px; flex-shrink: 0; color: #6b7280;
  font-weight: 400; font-size: 11px; padding-right: 8px;
}
.kl-sv-row dd { flex: 1; color: #0b0c0c; }
.kl-sv-link {
  color: #1d4ed8; text-decoration: none; font-size: 12px; font-weight: 500;
}
.kl-sv-link:hover { text-decoration: underline; }
.kl-sv-link:focus-visible { outline: 3px solid #ffdd00; outline-offset: 0; }
.kl-sv-missing { color: #6b7280; font-style: italic; font-size: 12px; }
.kl-sv-ok   { font-size: 12px; color: #005a30; font-weight: 500; }
.kl-sv-warn { font-size: 12px; color: #6b7280; }

/* Verification checklist reminder — verifiera_nasta only, before verify button */
.kl-vc-list {
  list-style: none; margin: 8px 0; padding: 6px 8px;
  border: 1px solid #e5e7eb; background: #fff; font-size: 12px;
}
.kl-vc-item {
  padding: 3px 0 3px 18px; color: #374151; position: relative;
  line-height: 1.4;
}
.kl-vc-item::before {
  content: '\2610'; position: absolute; left: 0;
  color: #9ca3af; font-size: 11px;
}

/* EAT safety text — screen only, above the eat-ctrl row */
.kl-eat-safety {
  font-size: 12px; color: #505a5f; font-style: italic;
  margin: 8px 0 4px; line-height: 1.4;
}

/* Print: hide verbose hint, checklist, and interactive safety text */
@media print {
  body.printing-meeting-pack .kl-sv-hint  { display: none !important; }
  body.printing-meeting-pack .kl-vc-list  { display: none !important; }
  body.printing-agera-nu     .kl-sv-hint  { display: none !important; }
  body.printing-agera-nu     .kl-vc-list  { display: none !important; }
}

/* ── S-K56 Bevaka deadline verification ─────────────────────────────────────── */

.kl-ss-item-dlv { padding: 0; }
.kl-ss-dlv { width: 100%; }
.kl-ss-dlv-summary {
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 4px 0; cursor: pointer; list-style: none;
}
.kl-ss-dlv-summary::-webkit-details-marker { display: none; }
.kl-ss-dlv-summary::marker { display: none; }
.kl-ss-dlv-body {
  padding: 6px 0 10px; border-top: 1px solid #f3f2f1;
}

@media print {
  body.printing-meeting-pack .kl-ss-dlv-body { display: none !important; }
}

/* ── S-K59A: environment/pilot bar + login overlay ────────────────────────── */
/* STIFTELSERS-E2E-UX-02-CONTRAST-POLISH Finding 4: visually demoted --
   normal weight (was 500) so it never competes with the application
   title/branding; still truthful and readable (--muted darkened globally
   to #445059, ~9:1 on white). Warning states keep their own bold emphasis
   below, unchanged. */
.stiftelser-env-bar {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  padding: 6px 20px; font-size: 12.5px; font-weight: 400;
  background: var(--card); border-bottom: 1px solid var(--border); color: var(--muted);
}
.stiftelser-env-bar-pilot {
  background: #fffbeb; border-bottom-color: #fde68a; color: #78350f;
}
.stiftelser-pilot-warning { font-weight: 700; }
.stiftelser-readonly-warning { font-weight: 700; }
.stiftelser-logout-btn {
  border: 1px solid var(--border); background: var(--card); color: var(--text);
  border-radius: 6px; padding: 4px 10px; font-size: 12px; cursor: pointer;
}

.stiftelser-login-overlay {
  position: fixed; inset: 0; z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  background: rgba(17, 24, 39, .55);
}
.stiftelser-login-form {
  background: var(--card); border-radius: var(--r); padding: 28px 32px;
  box-shadow: var(--shadow); width: 320px; display: flex; flex-direction: column; gap: 12px;
}
.stiftelser-login-form h2 { margin: 0 0 4px; font-size: 18px; }
.stiftelser-login-form label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--muted); }
.stiftelser-login-form input {
  border: 1px solid var(--border); border-radius: 6px; padding: 8px 10px; font-size: 14px;
}
.stiftelser-login-error { color: #b91c1c; font-size: 13px; margin: 0; }
.stiftelser-login-cancel { margin-top: 2px; }

/* ── KUNGSBACKAMODELLEN-PUBLIC-ACCESS-01E-A: anonymous public navigation ──
   Presentation only — the real boundary is backend auth. In public-anonymous
   mode we show ONLY the customer-first public nav group and hide every
   operator nav group, the "Fler verktyg" drawer and the operator filters.
   Outside public mode the public group is hidden and the normal operator
   nav renders unchanged. */
.nav-public-only { display: none; }
body.public-anonymous .nav-public-only { display: block; }
body.public-anonymous .sidebar-nav > .nav-group:not(.nav-public-only) { display: none; }
body.public-anonymous .sidebar-nav > .nav-more { display: none; }
body.public-anonymous .sidebar-filters { display: none; }
/* A <button> styled as a nav item (Så fungerar det / Inspiration / Logga in):
   inherit the .nav-item look but reset native button chrome. */
.nav-item.nav-linklike {
  background: none; border: none; width: 100%; text-align: left;
  font: inherit; cursor: pointer;
}
.nav-item.nav-login-btn { color: var(--accent, #0f6e6e); font-weight: 600; }

/* ── S-K77E: Projektets budgetunderlag ──────────────────────────────────
   Reuses aw-section / aor-form / pp-match-card / aw-badge primitives
   throughout; only genuinely new layout concerns get their own class. */
.bb-item-list { display: flex; flex-direction: column; gap: 10px; margin-top: 8px; }
.bb-history-list { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
.bb-currency-edit { max-width: 260px; margin: 10px 0; }
.bb-cost-mode {
  display: flex; gap: 16px; flex-wrap: wrap; margin: 10px 0;
  font-size: 13px; color: var(--muted);
}
.bb-cost-mode label { display: flex; align-items: center; gap: 6px; font-weight: normal; }
.bb-breakdown { margin-top: 8px; font-size: 13px; color: var(--muted); }
.bb-breakdown summary { cursor: pointer; }
.bb-breakdown ul { margin: 6px 0 0; padding-left: 18px; }

@media (max-width: 720px) {
  .bb-cost-mode { flex-direction: column; gap: 8px; }
}

/* ── S-K77F-B: Ansökningsavsikt panel (inside Application Workspace) ─────
   Reuses aw-section / aw-form / aw-gov-row / aw-badge / pp-match-card
   throughout; only the requested-grant field row and history/provenance
   list need their own layout, mirroring the S-K77E bb-cost-mode/bb-history-
   list pattern above exactly. */
.awi-grant-fields { display: flex; gap: 16px; flex-wrap: wrap; margin: 10px 0; }
.awi-grant-fields .aw-form-row { min-width: 140px; flex: 1 1 140px; }
.awi-grant-hint { margin: 4px 0 10px; font-size: 12px; color: var(--muted); }
.awi-history-list { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
.awi-provenance { margin-top: 10px; font-size: 13px; color: var(--muted); }
.awi-provenance summary { cursor: pointer; }
.awi-provenance ul { margin: 6px 0 0; padding-left: 18px; }

@media (max-width: 720px) {
  .awi-grant-fields { flex-direction: column; gap: 8px; }
  .awi-grant-fields .aw-form-row { min-width: 0; }
}

/* ── STIFTELSERS-END-TO-END-SIMPLE-APPLICATION-UX-01: Ansökningsarbete
   breadcrumb, overview banner and task-oriented tab navigation. Reuses
   aw-section / aw-badge / aw-callout throughout; every rule below has
   min-width: 0 / overflow-wrap on any text-bearing container so long
   Swedish satsning/utlysning titles wrap safely instead of overflowing. */
.aw-breadcrumb {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
  margin: 0 0 12px; font-size: 12.5px; color: var(--muted); min-width: 0;
}
.aw-breadcrumb-link {
  background: none; border: none; padding: 0; margin: 0; cursor: pointer;
  color: var(--accent, #2563eb); font-size: inherit; text-decoration: underline;
}
.aw-breadcrumb-link:focus-visible { outline: 2px solid var(--accent, #2563eb); outline-offset: 2px; }
.aw-breadcrumb-sep { opacity: .6; }
.aw-breadcrumb-current { overflow-wrap: break-word; min-width: 0; }
.aw-breadcrumb-active { font-weight: 700; color: var(--text); }

.aw-overview-banner { min-width: 0; }

.aw-tabs {
  display: flex; flex-wrap: wrap; gap: 4px; margin: 0 0 16px;
  border-bottom: 1px solid var(--border); padding-bottom: 0;
}
.aw-tab-btn {
  background: none; border: 1px solid transparent; border-bottom: none;
  border-radius: 6px 6px 0 0; padding: 8px 12px; font-size: 13.5px;
  color: var(--muted); cursor: pointer; white-space: nowrap;
}
.aw-tab-btn:hover { color: var(--text); background: var(--bg); }
.aw-tab-btn.active {
  color: var(--text); font-weight: 700; background: var(--bg);
  border-color: var(--border);
}
.aw-tab-btn:focus-visible { outline: 2px solid var(--accent, #2563eb); outline-offset: 2px; }
.aw-tab-panel { min-width: 0; }
.aw-tab-panel[hidden] { display: none; }

@media (max-width: 720px) {
  .aw-tabs { overflow-x: auto; flex-wrap: nowrap; -webkit-overflow-scrolling: touch; }
  .aw-tab-btn { flex: 0 0 auto; }
}

/* ── STIFTELSERS-END-TO-END-SIMPLE-APPLICATION-UX-02 ─────────────────────── */

/* Finding 04: discreet user menu, replacing the always-visible
   "Inloggad som: X (role) / Logga ut" pair. */
.stiftelser-user-menu { position: relative; }
.stiftelser-user-menu-btn {
  background: none; border: 1px solid transparent; color: inherit;
  font: inherit; font-weight: 600; cursor: pointer; padding: 4px 8px;
  border-radius: 6px; display: inline-flex; align-items: center; gap: 4px;
}
.stiftelser-user-menu-btn:hover, .stiftelser-user-menu-btn[aria-expanded="true"] {
  background: var(--bg); border-color: var(--border);
}
.stiftelser-user-menu-caret { font-size: 10px; opacity: .7; }
.stiftelser-user-menu-panel {
  position: absolute; right: 0; top: calc(100% + 4px); z-index: 50;
  background: var(--card); border: 1px solid var(--border); border-radius: var(--r);
  box-shadow: var(--shadow); min-width: 180px; padding: 6px;
  display: flex; flex-direction: column; gap: 2px;
}
.stiftelser-user-menu-panel.hidden { display: none; }
.stiftelser-user-menu-role {
  font-size: 12px; color: var(--muted); padding: 6px 8px 4px; font-weight: 500;
}
.stiftelser-user-menu-item {
  background: none; border: none; text-align: left; padding: 8px;
  font-size: 13.5px; color: var(--text); cursor: pointer; border-radius: 4px;
}
.stiftelser-user-menu-item:hover { background: var(--bg); }

/* Findings 05/06/18: labelled Satsning/Sökande/Partners/Utlysning/Deadline
   identity block -- min-width: 0 throughout for long Swedish names. */
.aw-context-block {
  display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px;
  margin: 10px 0 14px; min-width: 0;
}
.aw-context-row { display: contents; }
.aw-context-row dt {
  font-size: 12px; text-transform: uppercase; letter-spacing: .04em;
  color: var(--muted); font-weight: 600; white-space: nowrap;
}
.aw-context-row dd {
  margin: 0; font-size: 14px; color: var(--text); min-width: 0;
  overflow-wrap: break-word;
}

@media (max-width: 560px) {
  .aw-context-block { grid-template-columns: 1fr; }
  .aw-context-row dd { margin-bottom: 6px; }
}

/* Finding 16: collapsed "Vad systemet kan hjälpa till med" help block. */
.aj-help-details { margin-top: 4px; }
.aj-help-details summary {
  cursor: pointer; font-size: 13.5px; color: var(--muted);
  padding: 8px 0; font-weight: 500;
}
.aj-help-details[open] summary { color: var(--text); }

/* Finding 14: progressive-disclosure governance summary on Granskning. */
.review-safety-summary {
  list-style: none; margin: 0 0 10px; padding: 0;
  display: flex; flex-direction: column; gap: 4px;
  font-size: 13.5px; color: var(--text);
}
.review-safety-summary li::before { content: "• "; color: var(--muted); }
.review-safety-details summary {
  cursor: pointer; font-size: 12.5px; color: var(--muted); margin-bottom: 8px;
}

/* ── STIFTELSERS-END-TO-END-SIMPLE-APPLICATION-UX-02 Findings 03/19/20:
   Kungsbackamodellen concept/demo landing page. Self-contained -- reuses
   only the root tokens (--accent/--card/--r/--shadow etc.), no new
   dependency, no webfont. ────────────────────────────────────────────── */
.kbm-hero {
  max-width: 720px; margin: 12px auto 40px; text-align: center;
}
.kbm-hero-badge {
  /* STIFTELSERS-E2E-UX-02-CONTRAST-POLISH: fixed a real bug -- this badge
     sits on a pale blue background (--info-bg) but was colored with
     --sidebar-active-text, a *sidebar* token that this contrast pass made
     solid white -- rendering the badge text nearly invisible. Uses the
     dark municipal-blue color directly, matching the sidebar's hue while
     staying dark-on-light here. */
  display: inline-block; font-size: 12px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .06em;
  color: #0d3b66; background: var(--info-bg);
  border: 1px solid var(--info-border); border-radius: 999px;
  padding: 5px 14px; margin-bottom: 20px;
}
.kbm-hero-title {
  font-size: 40px; font-weight: 800; color: var(--text); margin: 0 0 6px;
  letter-spacing: -.01em;
}
.kbm-hero-tagline { font-size: 19px; color: var(--muted); margin: 0 0 28px; }
.kbm-hero-question { font-size: 17px; font-weight: 600; color: var(--text); margin: 0; }

.kbm-cards {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 18px; max-width: 980px; margin: 0 auto 44px;
}
.kbm-card {
  display: flex; flex-direction: column; align-items: flex-start; gap: 8px;
  text-align: left; background: var(--card); border: 1px solid var(--border);
  border-radius: var(--r); padding: 22px 20px; box-shadow: var(--shadow-sm);
  cursor: pointer; font: inherit; color: inherit;
  transition: box-shadow .15s, transform .15s, border-color .15s;
  min-width: 0;
}
button.kbm-card:hover {
  box-shadow: var(--shadow); transform: translateY(-2px);
  border-color: var(--accent);
}
button.kbm-card:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
/* STIFTELSERS-E2E-UX-02-CONTRAST-POLISH Finding 5: was `opacity: .72` on
   the whole card, which faded the title/description text along with it --
   "explanatory text must still be legible" per the Founder's own rule.
   Distinguished via background/border only now; title and description
   keep their full, already-compliant --text/--muted contrast. */
.kbm-card-coming { cursor: default; background: var(--bg); }
.kbm-card-icon { font-size: 26px; }
.kbm-card-title { font-size: 15.5px; font-weight: 700; color: var(--text); }
.kbm-card-desc { font-size: 13.5px; color: var(--muted); line-height: 1.5; }
.kbm-card-badge {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em; color: var(--muted); background: var(--bg);
  border: 1px solid var(--border); border-radius: 999px; padding: 2px 9px;
}

.kbm-how { max-width: 720px; margin: 0 auto 32px; text-align: center; }
.kbm-how-title { font-size: 20px; font-weight: 700; color: var(--text); margin: 0 0 20px; }
.kbm-how-steps {
  list-style: none; display: flex; flex-wrap: wrap; justify-content: center;
  gap: 28px; margin: 0; padding: 0;
}
.kbm-how-steps li {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  max-width: 200px; font-size: 14px; color: var(--text);
}
.kbm-how-num {
  display: flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: 50%;
  background: var(--accent); color: #fff; font-weight: 700; font-size: 15px;
  flex-shrink: 0;
}

.kbm-hero-note {
  max-width: 640px; margin: 0 auto; text-align: center;
  font-size: 12.5px; color: var(--muted); font-style: italic;
}

@media (max-width: 720px) {
  .kbm-hero-title { font-size: 30px; }
  .kbm-cards { grid-template-columns: 1fr; }
  .kbm-how-steps { flex-direction: column; align-items: center; }
}

/* ── STIFTELSERS-END-TO-END-SIMPLE-APPLICATION-UX-03: "Hitta finansiering"
   guided wizard. Reuses aw-section/aw-gov-note/aw-callout/aor-form
   primitives throughout; only the option-grid/question/help-callout are
   genuinely new. min-width: 0 + wrap for long Swedish option labels. ──── */
.hf-step { min-width: 0; }
.hf-question { font-size: 16px; font-weight: 700; color: var(--text); margin: 14px 0 10px; }
.hf-help-callout {
  background: var(--bg); border: 1px solid var(--border); border-radius: var(--r);
  padding: 14px 16px; margin: 14px 0; min-width: 0;
}
.hf-help-title { font-size: 13px; font-weight: 700; color: var(--text); margin: 0 0 6px; }
.hf-help-list { margin: 0; padding-left: 18px; font-size: 13.5px; color: var(--muted); line-height: 1.7; }
.hf-option-grid {
  display: flex; flex-wrap: wrap; gap: 10px; min-width: 0;
}
.hf-option-btn {
  background: var(--card); border: 1px solid var(--border); border-radius: var(--r);
  padding: 12px 18px; font-size: 14.5px; font-weight: 600; color: var(--text);
  cursor: pointer; text-align: left; min-width: 0; overflow-wrap: break-word;
  transition: border-color .15s, background .15s;
}
.hf-option-btn:hover { border-color: var(--accent); background: var(--info-bg); }
.hf-option-btn.active { border-color: var(--accent); background: var(--info-bg); color: var(--accent-dark); }
.hf-option-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

@media (max-width: 560px) {
  .hf-option-grid { flex-direction: column; }
  .hf-option-btn { width: 100%; }
}

/* ── STIFTELSERS-END-TO-END-SIMPLE-APPLICATION-UX-04: onboarding-context
   summary, search-context tags, weak-results/historical-review disclosure.
   Reuses aw-context-block/aw-callout primitives; min-width: 0 throughout. */
.hf-onboarding-summary {
  background: var(--bg); border: 1px solid var(--border); border-radius: var(--r);
  padding: 12px 16px; margin: 0 0 14px; min-width: 0;
}
.hf-search-context {
  background: var(--info-bg); border: 1px solid var(--info-border); border-radius: var(--r);
  padding: 12px 16px; margin: 10px 0; min-width: 0;
}
.hf-tag-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.hf-tag {
  font-size: 12.5px; font-weight: 600; color: var(--info-text);
  background: var(--card); border: 1px solid var(--info-border);
  border-radius: 999px; padding: 3px 11px;
}
/* STIFTELSERS-END-TO-END-SIMPLE-APPLICATION-UX-05 Finding 7: TEMA /
   ORGANISATION / PLATS facet rows -- only rendered when that facet has at
   least one value, so an empty PLATS/ORGANISATION never shows a blank row. */
.hf-facet-grid { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; min-width: 0; }
.hf-facet-row { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.hf-facet-row dt {
  font-size: 11px; text-transform: uppercase; letter-spacing: .04em;
  color: var(--muted); font-weight: 700;
}
.hf-facet-row dd { margin: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.hf-weak-results { margin-top: 10px; }
.hf-weak-results summary {
  cursor: pointer; font-size: 13px; color: var(--muted); padding: 10px 0;
}
.hf-hist-details { margin-top: 4px; }
.hf-hist-details summary {
  cursor: pointer; font-size: 12.5px; color: var(--muted); margin-bottom: 6px;
}

/* ── KUNGSBACKAMODELLEN-NL-FRONT-DOOR-01B: public discovery front door ─────
   Mobile-first: single column, 16px inputs (no mobile zoom), full-width CTA,
   no horizontal scroll. Match state is text + colour, never colour alone. */
.kbm-hero-cta { margin-top: 20px; padding: 14px 28px; font-size: 16px; }

/* KUNGSBACKAMODELLEN-STOREFRONT-LANDING-01C: hero supporting line + honest
   inspiration surface. Reuses the existing .kbm-hero/.kbm-cards/.kbm-card
   storefront styles (grid, hover, focus-visible, mobile single-column). */
.kbm-hero-lead { font-size: 16px; color: var(--muted); margin: 0 0 4px; max-width: 640px; margin-left: auto; margin-right: auto; }
.kbm-inspiration {
  max-width: 720px; margin: 0 auto 32px; padding: 22px 24px; text-align: center;
  background: var(--card); border: 1px solid var(--border); border-radius: var(--r);
}
.kbm-inspiration-title { font-size: 18px; font-weight: 700; color: var(--text); margin: 0 0 8px; }
.kbm-inspiration-text { font-size: 14.5px; color: var(--muted); margin: 0; }

.disc-hero { max-width: 720px; margin: 8px auto 4px; text-align: center; }
.disc-title { font-size: 28px; margin: 0 0 8px; color: var(--text); }
.disc-sub { color: var(--muted); font-size: 15px; margin: 0; }

.disc-form { max-width: 720px; margin: 20px auto 0; display: flex; flex-direction: column; gap: 12px; }
.disc-label { font-weight: 600; color: var(--text); font-size: 15px; }
.disc-need {
  width: 100%; font-size: 16px; padding: 12px 14px; border: 1px solid var(--border);
  border-radius: var(--r); background: var(--card); color: var(--text); resize: vertical;
  box-sizing: border-box; line-height: 1.4;
}
.disc-need:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }

.disc-more summary { cursor: pointer; color: var(--accent); font-size: 14px; padding: 4px 0; }
.disc-context { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 10px; }
.disc-field { display: flex; flex-direction: column; gap: 4px; }
.disc-field label { font-size: 13px; color: var(--muted); }
.disc-field select, .disc-field input {
  font-size: 16px; padding: 10px 12px; border: 1px solid var(--border);
  border-radius: var(--r); background: var(--card); color: var(--text); box-sizing: border-box;
}
.disc-budget { display: flex; align-items: center; gap: 8px; }
.disc-budget input { width: 100%; }

.disc-submit { align-self: flex-start; padding: 12px 28px; font-size: 16px; }
.disc-safety {
  max-width: 720px; margin: 12px auto 0; font-size: 12.5px; color: var(--muted);
  background: var(--info-bg); border: 1px solid var(--info-border);
  border-radius: var(--r); padding: 10px 14px;
}

.discovery-results { max-width: 860px; margin: 20px auto 0; }
.disc-results-note { color: var(--muted); font-size: 14px; margin: 0 0 14px; }
.disc-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.disc-card {
  background: var(--card); border: 1px solid var(--border); border-radius: var(--r);
  padding: 18px; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; gap: 8px;
}
.disc-card-head { display: flex; }
.disc-badge {
  display: inline-block; font-size: 12px; font-weight: 700; padding: 4px 10px;
  border-radius: 999px; border: 1px solid transparent;
}
.disc-badge-strong   { background: var(--success-bg); color: var(--success-text); border-color: var(--success-border); }
.disc-badge-possible { background: var(--info-bg);    color: var(--info-text);    border-color: var(--info-border); }
.disc-badge-moreinfo { background: #fef9ec;           color: #92610a;             border-color: #f5e0a3; }
.disc-badge-block    { background: var(--error-bg);   color: var(--error-text);   border-color: var(--error-border); }
.disc-card-title { font-size: 17px; margin: 2px 0 0; color: var(--text); }
.disc-funder { font-size: 13px; color: var(--muted); margin: 0; }
.disc-rationale { font-size: 14px; color: var(--text); margin: 4px 0 0; }
.disc-card-meta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 4px; }
.disc-meta { font-size: 12.5px; color: var(--muted); }
.disc-card-actions { margin-top: auto; padding-top: 8px; }
.disc-see { font-size: 14px; }
.disc-empty {
  max-width: 720px; margin: 20px auto 0; text-align: center; color: var(--muted);
  background: var(--card); border: 1px solid var(--border); border-radius: var(--r); padding: 24px;
}
.disc-safety-foot { font-size: 12.5px; color: var(--muted); margin: 16px 0 0; text-align: center; }

/* KBM-RESULT-EXPERIENCE-01D: grounded result card sections. */
.disc-group-h { font-size: 15px; font-weight: 700; color: var(--text); margin: 22px 0 12px; }
.disc-lowconf { font-size: 13.5px; color: var(--muted); margin: 0 0 12px; }
.disc-facts { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 6px 0 2px; }
.disc-fact { font-size: 12.5px; color: var(--text); }
.disc-fact-k { color: var(--muted); }
.disc-tag { font-size: 11px; color: #92610a; background: #fef9ec; border: 1px solid #f5e0a3; border-radius: 999px; padding: 1px 7px; }
.disc-why { margin: 8px 0 2px; }
.disc-why-h { font-size: 12.5px; font-weight: 600; color: var(--text); margin: 0 0 4px; }
.disc-why-list { margin: 0; padding-left: 0; list-style: none; }
.disc-why-list li { font-size: 13px; color: var(--text); padding-left: 20px; position: relative; margin: 2px 0; }
.disc-why-list li::before { content: "✓"; position: absolute; left: 0; color: var(--success-text); }
.disc-check { margin: 8px 0 2px; }
.disc-check > summary { cursor: pointer; font-size: 12.5px; color: var(--accent); }
.disc-check-list { margin: 6px 0 0; padding-left: 18px; }
.disc-check-list li { font-size: 12.5px; color: var(--muted); margin: 2px 0; }

@media (max-width: 600px) {
  .disc-context { grid-template-columns: 1fr; }
  .disc-submit { align-self: stretch; width: 100%; }
  .disc-cards { grid-template-columns: 1fr; }
  .disc-title { font-size: 24px; }
  .disc-facts { flex-direction: column; gap: 4px; }
}

/* ── KUNGSBACKA-01F: save journey (discovery save btn, toast, case picker,
   customer saved list) — theme-aligned, minimal, reuses existing tokens. ── */
.disc-save { margin-right: .5rem; }

.btn-ghost { background: transparent; color: var(--muted); border-color: transparent; }
.btn-ghost:hover:not(:disabled) { background: var(--bg); color: var(--text); }

.kbm-toast {
  position: fixed; left: 50%; bottom: 1.5rem; transform: translateX(-50%);
  display: flex; align-items: center; gap: .75rem; z-index: 1000;
  max-width: min(92vw, 520px); padding: .75rem 1rem;
  border: 1px solid var(--border); border-radius: var(--r);
  background: var(--card); color: var(--text); box-shadow: var(--shadow);
}
.kbm-toast.hidden { display: none; }
.kbm-toast-success { background: var(--success-bg); color: var(--success-text); border-color: var(--success-border); }
.kbm-toast-error   { background: var(--error-bg);   color: var(--error-text);   border-color: var(--error-border); }
.kbm-toast-info    { background: var(--info-bg);    color: var(--info-text);    border-color: var(--info-border); }
.kbm-toast-msg { flex: 1; }
.kbm-toast-action {
  border: 1px solid currentColor; background: transparent; color: inherit;
  padding: .35rem .7rem; border-radius: 8px; cursor: pointer; font: inherit; white-space: nowrap;
}

.kbm-modal {
  position: fixed; inset: 0; z-index: 1100; display: flex;
  align-items: center; justify-content: center; padding: 1rem;
  background: rgba(15,35,55,.45);
}
.kbm-modal-card {
  background: var(--card); color: var(--text); border-radius: var(--r);
  box-shadow: var(--shadow); padding: 1.25rem; width: min(94vw, 440px);
}
.kbm-modal-title { margin: 0 0 .25rem; }
.kbm-modal-sub { margin: 0 0 1rem; color: var(--muted); }
.kbm-modal-label { display: block; font-weight: 600; margin-bottom: .35rem; }
.kbm-modal-select { width: 100%; padding: .5rem; border: 1px solid var(--border); border-radius: 8px; background: var(--card); color: var(--text); }
.kbm-modal-actions { display: flex; justify-content: flex-end; gap: .5rem; margin-top: 1rem; }

.saved-toolbar { display: flex; align-items: center; gap: .6rem; margin-bottom: 1rem; flex-wrap: wrap; }
.saved-case-label { font-weight: 600; }
.saved-case-select { padding: .45rem .6rem; border: 1px solid var(--border); border-radius: 8px; background: var(--card); color: var(--text); min-width: 220px; max-width: 100%; }

.saved-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }
.saved-card { border: 1px solid var(--border); border-radius: var(--r); background: var(--card); padding: 1rem; box-shadow: var(--shadow-sm); }
.saved-card-head { margin-bottom: .5rem; }
.saved-badge { display: inline-block; padding: .15rem .55rem; border-radius: 999px; font-size: .8rem; font-weight: 600; border: 1px solid transparent; }
.saved-badge-saved { background: var(--info-bg);    color: var(--info-text);    border-color: var(--info-border); }
.saved-badge-prio  { background: var(--purple-bg);  color: var(--purple-text);  border-color: var(--purple-border); }
.saved-card-title { margin: .1rem 0 .25rem; font-size: 1.05rem; }
.saved-card-source { margin: 0 0 .75rem; color: var(--muted); }
.saved-card-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.saved-empty { color: var(--muted); padding: 1.5rem 0; }

/* KUNGSBACKA-01F-02 hardening: pending-save banner + inline link affordance */
.linklike {
  background: none; border: none; padding: 0; margin: 0; font: inherit;
  color: var(--accent); text-decoration: underline; cursor: pointer;
}
.linklike:hover { color: var(--accent-dark); }
.saved-opp-pending.hidden { display: none; }
.saved-pending {
  display: flex; align-items: center; gap: .75rem; flex-wrap: wrap;
  padding: .75rem 1rem; margin-bottom: 1rem;
  border: 1px solid var(--info-border); border-radius: var(--r);
  background: var(--info-bg); color: var(--info-text);
}
.saved-pending-msg { flex: 1; min-width: 12rem; }

/* KBM-CUSTOMER-V2-SHELL — mobile off-canvas sidebar (fixes app-wide mobile overflow) */
.mobile-nav-btn { display:none; }
.mobile-nav-scrim { display:none; }
@media (max-width:700px){
  .sidebar { position:fixed; top:0; left:0; height:100%; z-index:60; width:84vw; max-width:300px;
    transform:translateX(-100%); transition:transform .22s ease; box-shadow:0 0 24px rgba(0,0,0,.18); }
  body.nav-open .sidebar { transform:translateX(0); }
  .main { margin-left:0 !important; width:100%; max-width:100%; box-sizing:border-box; }
  .mobile-nav-btn { display:flex; align-items:center; justify-content:center; position:fixed;
    top:calc(env(safe-area-inset-top,0px) + 10px); left:10px; z-index:55; width:44px; height:44px;
    font-size:20px; background:#fff; border:1px solid var(--border); border-radius:10px; cursor:pointer;
    box-shadow:0 1px 4px rgba(0,0,0,.12); }
  body.nav-open .mobile-nav-scrim { display:block; position:fixed; inset:0; z-index:50; background:rgba(15,23,42,.4); }
  .main > * { max-width:100%; }
}
/* end mobile off-canvas sidebar */

/* ════════════════════════════════════════════════════════════════════════════
   KUNGSBACKAMODELLEN — CUSTOMER V2 SHELL (design system)
   A customer-facing shell that sits ALONGSIDE the legacy admin UI. Scoped under
   .v2-shell / body.v2-active so the legacy interface is untouched. Systematic
   typography, spacing, and card tokens. No external fonts/CDN (CSP + offline).
   ════════════════════════════════════════════════════════════════════════════ */
:root {
  /* type scale (1.25 modular, system stack) */
  --v2-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
  --v2-t-eyebrow: 13px;  --v2-t-small: 14px;  --v2-t-body: 16px;  --v2-t-lead: 19px;
  --v2-t-h3: 22px;  --v2-t-h2: 30px;  --v2-t-h1: 52px;
  --v2-w-regular: 400; --v2-w-medium: 550; --v2-w-semibold: 650; --v2-w-bold: 760;
  --v2-lh-tight: 1.1; --v2-lh-snug: 1.3; --v2-lh-body: 1.6;
  /* spacing scale (4px base) */
  --v2-s1: 4px; --v2-s2: 8px; --v2-s3: 12px; --v2-s4: 16px; --v2-s5: 24px;
  --v2-s6: 32px; --v2-s7: 48px; --v2-s8: 64px; --v2-s9: 96px;
  /* color */
  --v2-ink: #0b2239; --v2-ink-soft: #40566b; --v2-ink-faint: #6b7d8f;
  --v2-bg: #f4f7fb; --v2-surface: #ffffff; --v2-surface-2: #f8fafc;
  --v2-line: #e2e8f0; --v2-line-strong: #cbd5e1;
  --v2-primary: #1d4ed8; --v2-primary-ink: #1e3a8a; --v2-primary-soft: #eef4ff;
  --v2-accent: #0ea5a3;  /* teal secondary for bioeconomy / variety */
  /* radius + elevation */
  --v2-r-sm: 10px; --v2-r: 16px; --v2-r-lg: 22px; --v2-r-pill: 999px;
  --v2-sh-1: 0 1px 2px rgba(11,34,57,.06);
  --v2-sh-2: 0 4px 16px rgba(11,34,57,.08), 0 1px 3px rgba(11,34,57,.05);
  --v2-sh-3: 0 12px 40px rgba(11,34,57,.12), 0 2px 8px rgba(11,34,57,.06);
  --v2-maxw: 1120px;
}

/* shell: hide the legacy sidebar on V2 pages; V2 provides its own top chrome */
body.v2-active .sidebar { display: none; }
body.v2-active .main { margin-left: 0 !important; width: 100%; max-width: 100%; box-sizing: border-box; padding: 0; }
body.v2-active .mobile-nav-btn { display: none !important; }

.v2-shell { font-family: var(--v2-font); color: var(--v2-ink); background: var(--v2-bg); min-height: 100vh; }
.v2-shell *, .v2-shell *::before, .v2-shell *::after { box-sizing: border-box; }
.v2-wrap { max-width: var(--v2-maxw); margin: 0 auto; padding: 0 var(--v2-s5); }

/* top bar */
.v2-topbar { position: sticky; top: 0; z-index: 40; background: rgba(255,255,255,.86);
  backdrop-filter: saturate(1.4) blur(10px); border-bottom: 1px solid var(--v2-line); }
.v2-topbar-inner { max-width: var(--v2-maxw); margin: 0 auto; padding: var(--v2-s3) var(--v2-s5);
  display: flex; align-items: center; gap: var(--v2-s5); }
.v2-brand { display: flex; align-items: center; gap: var(--v2-s3); text-decoration: none; color: var(--v2-ink); }
.v2-brand-mark { width: 34px; height: 34px; border-radius: 9px; background: linear-gradient(135deg,var(--v2-primary),#4f46e5);
  display: grid; place-items: center; color: #fff; box-shadow: var(--v2-sh-1); flex: 0 0 auto; }
.v2-brand-name { font-size: 17px; font-weight: var(--v2-w-bold); letter-spacing: -.01em; line-height: 1; }
.v2-brand-sub { font-size: 11px; color: var(--v2-ink-faint); line-height: 1; margin-top: 3px; }
.v2-nav { display: flex; gap: var(--v2-s2); margin-left: auto; align-items: center; }
.v2-nav a { font-size: var(--v2-t-small); font-weight: var(--v2-w-medium); color: var(--v2-ink-soft);
  text-decoration: none; padding: 9px 14px; border-radius: var(--v2-r-pill); line-height: 1; }
.v2-nav a:hover { background: var(--v2-surface-2); color: var(--v2-ink); }
.v2-nav a.active { background: var(--v2-primary-soft); color: var(--v2-primary-ink); }

/* buttons */
.v2-btn { display: inline-flex; align-items: center; gap: 8px; font-family: inherit; font-size: var(--v2-t-body);
  font-weight: var(--v2-w-semibold); line-height: 1; padding: 14px 24px; border-radius: var(--v2-r-pill);
  border: 1px solid transparent; cursor: pointer; text-decoration: none; min-height: 48px; transition: transform .08s, box-shadow .15s, background .15s; }
.v2-btn:active { transform: translateY(1px); }
.v2-btn-primary { background: var(--v2-primary); color: #fff; box-shadow: var(--v2-sh-2); }
.v2-btn-primary:hover { background: #1b45c0; box-shadow: var(--v2-sh-3); }
.v2-btn-ghost { background: var(--v2-surface); color: var(--v2-ink); border-color: var(--v2-line-strong); }
.v2-btn-ghost:hover { background: var(--v2-surface-2); }
.v2-btn-lg { font-size: 17px; padding: 16px 30px; }

/* type helpers */
.v2-eyebrow { font-size: var(--v2-t-eyebrow); font-weight: var(--v2-w-bold); letter-spacing: .08em;
  text-transform: uppercase; color: var(--v2-primary); }
.v2-h1 { font-size: var(--v2-t-h1); font-weight: var(--v2-w-bold); line-height: var(--v2-lh-tight); letter-spacing: -.02em; margin: 0; }
.v2-h2 { font-size: var(--v2-t-h2); font-weight: var(--v2-w-bold); line-height: var(--v2-lh-snug); letter-spacing: -.01em; margin: 0; }
.v2-h3 { font-size: var(--v2-t-h3); font-weight: var(--v2-w-semibold); line-height: var(--v2-lh-snug); margin: 0; }
.v2-lead { font-size: var(--v2-t-lead); line-height: var(--v2-lh-body); color: var(--v2-ink-soft); margin: 0; }
.v2-body { font-size: var(--v2-t-body); line-height: var(--v2-lh-body); color: var(--v2-ink-soft); }

/* hero */
.v2-hero { position: relative; overflow: hidden; background:
    radial-gradient(1200px 500px at 15% -10%, #e8f0ff 0%, rgba(232,240,255,0) 60%),
    radial-gradient(900px 500px at 95% 0%, #e6fbfa 0%, rgba(230,251,250,0) 55%), var(--v2-bg); }
.v2-hero-inner { max-width: var(--v2-maxw); margin: 0 auto; padding: var(--v2-s9) var(--v2-s5) var(--v2-s8); }
.v2-hero-badge { display: inline-flex; align-items: center; gap: 8px; font-size: var(--v2-t-small);
  font-weight: var(--v2-w-semibold); color: var(--v2-primary-ink); background: var(--v2-surface);
  border: 1px solid var(--v2-line); border-radius: var(--v2-r-pill); padding: 7px 14px; box-shadow: var(--v2-sh-1); }
.v2-hero h1 { margin: var(--v2-s5) 0 var(--v2-s4); max-width: 16ch; }
.v2-hero .v2-lead { max-width: 54ch; }
.v2-hero-cta { display: flex; gap: var(--v2-s3); flex-wrap: wrap; margin-top: var(--v2-s6); }

/* section + card grid */
.v2-section { padding: var(--v2-s8) 0; }
.v2-section-head { margin-bottom: var(--v2-s6); }
.v2-section-head h2 { margin-top: var(--v2-s2); }
.v2-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--v2-s5); }
.v2-card { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: var(--v2-r);
  padding: var(--v2-s6); box-shadow: var(--v2-sh-1); transition: transform .12s, box-shadow .15s, border-color .15s;
  display: flex; flex-direction: column; gap: var(--v2-s3); text-align: left; }
a.v2-card, button.v2-card { cursor: pointer; font-family: inherit; color: inherit; width: 100%; }
.v2-card:hover { transform: translateY(-3px); box-shadow: var(--v2-sh-3); border-color: var(--v2-line-strong); }
.v2-card-ico { width: 46px; height: 46px; border-radius: 12px; background: var(--v2-primary-soft);
  color: var(--v2-primary); display: grid; place-items: center; }
.v2-card-ico svg { width: 24px; height: 24px; }
.v2-card h3 { font-size: var(--v2-t-h3); font-weight: var(--v2-w-semibold); }
.v2-card p { font-size: var(--v2-t-small); line-height: var(--v2-lh-body); color: var(--v2-ink-soft); margin: 0; }
.v2-card-arrow { margin-top: auto; color: var(--v2-primary); font-weight: var(--v2-w-semibold); font-size: var(--v2-t-small); }

/* how-it-works band */
.v2-band { background: var(--v2-surface); border-top: 1px solid var(--v2-line); border-bottom: 1px solid var(--v2-line); }
.v2-steps { display: grid; grid-template-columns: repeat(3,1fr); gap: var(--v2-s6); }
.v2-step-num { width: 40px; height: 40px; border-radius: 50%; background: var(--v2-primary); color: #fff;
  display: grid; place-items: center; font-weight: var(--v2-w-bold); margin-bottom: var(--v2-s3); }
.v2-step h3 { font-size: var(--v2-t-h3); margin-bottom: 6px; }
.v2-step p { color: var(--v2-ink-soft); font-size: var(--v2-t-small); line-height: var(--v2-lh-body); margin: 0; }

/* footer */
.v2-footer { padding: var(--v2-s7) 0; color: var(--v2-ink-faint); font-size: var(--v2-t-small); }
.v2-footer .v2-wrap { display: flex; justify-content: space-between; gap: var(--v2-s4); flex-wrap: wrap; align-items: center; }

/* responsive */
@media (max-width: 920px){
  :root { --v2-t-h1: 40px; --v2-t-h2: 26px; }
  .v2-grid, .v2-steps { grid-template-columns: 1fr 1fr; }
  .v2-nav { display: none; }
}
@media (max-width: 600px){
  :root { --v2-t-h1: 32px; }
  .v2-grid, .v2-steps { grid-template-columns: 1fr; }
  .v2-hero-inner { padding: var(--v2-s7) var(--v2-s5) var(--v2-s6); }
}
/* KBM-PUBLIC-HTTPS-01 (mobile readability, small scope only — no redesign/branding change):
   on phones, scale the largest headings down and guarantee long procurement titles wrap inside
   the viewport so nothing forces horizontal overflow of the radar / Mina sidor / login views. */
@media (max-width: 480px){
  :root { --v2-t-h1: 26px; --v2-t-h2: 21px; }
  .v2-h1, .v2-h2, .v2-card h3, .v2-radar-card h3, .v2-mp-title,
  .v2-pc-top h3 { overflow-wrap: anywhere; word-break: break-word; hyphens: auto; }
  .v2-wrap, .v2-section { overflow-x: hidden; }
}
/* end CUSTOMER V2 SHELL */

/* KBM-CUSTOMER-V2-SHELL: opportunity experience */
.v2-filters { display:flex; gap:var(--v2-s2); flex-wrap:wrap; margin-bottom:var(--v2-s5); }
.v2-filter { font-family:inherit; font-size:var(--v2-t-small); font-weight:var(--v2-w-medium); color:var(--v2-ink-soft);
  background:var(--v2-surface); border:1px solid var(--v2-line-strong); border-radius:var(--v2-r-pill);
  padding:9px 18px; min-height:40px; cursor:pointer; }
.v2-filter:hover { background:var(--v2-surface-2); }
.v2-filter.active { background:var(--v2-primary); color:#fff; border-color:var(--v2-primary); }
.v2-opp-card { gap:var(--v2-s3); }
.v2-opp-top { display:flex; align-items:center; gap:var(--v2-s3); justify-content:space-between; }
.v2-opp-src { font-size:var(--v2-t-small); color:var(--v2-ink-faint); font-weight:var(--v2-w-medium); text-align:right; }
.v2-opp-card h3 { font-size:var(--v2-t-h3); line-height:var(--v2-lh-snug); }
.v2-status { font-size:12px; font-weight:var(--v2-w-bold); letter-spacing:.02em; border-radius:var(--v2-r-pill); padding:4px 12px; white-space:nowrap; }
.v2-st-open { background:#dcfce7; color:#166534; }
.v2-st-up { background:#dbeafe; color:#1e40af; }
.v2-st-closed { background:#f1f5f9; color:#64748b; }
.v2-opp-meta { display:flex; flex-wrap:wrap; gap:var(--v2-s4); }
.v2-opp-meta-i { font-size:var(--v2-t-small); color:var(--v2-ink-soft); }
.v2-opp-grid { grid-template-columns:repeat(3,1fr); }
@media (max-width:920px){ .v2-opp-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:600px){ .v2-opp-grid { grid-template-columns:1fr; } }
/* end opportunity experience */

/* ════════════════════════════════════════════════════════════════════════════
   KBM-CUSTOMER-V2 — ART DIRECTION
   Navy · warm white · teal. Editorial serif (display) + clean sans (UI/body).
   Big type, lots of space, few elements, clear decisions. Future through clarity.
   (Serif = system Georgia/Palatino stack — no external font/CDN, CSP-safe.)
   ════════════════════════════════════════════════════════════════════════════ */
:root {
  --v2-serif: Georgia, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", "Times New Roman", serif;
  /* navy */
  --v2-ink: #0b2239; --v2-ink-soft: #465a6e; --v2-ink-faint: #7c8694;
  --v2-primary: #13294b; --v2-primary-ink: #13294b; --v2-primary-soft: #eef1f6;
  /* warm white */
  --v2-bg: #faf6ef; --v2-surface: #ffffff; --v2-surface-2: #f5efe5;
  --v2-line: #ece4d6; --v2-line-strong: #dccfbb;
  /* teal */
  --v2-accent: #0f8f8a;
  /* bigger type + air */
  --v2-t-h1: 60px; --v2-t-h2: 34px; --v2-t-lead: 20px;
}
body.v2-active { background: var(--v2-bg); }
.v2-shell { background: var(--v2-bg); }

/* editorial serif on display headings; sans elsewhere */
.v2-h1, .v2-h2, .v2-card h3, .v2-step h3, .v2-opp-card h3 {
  font-family: var(--v2-serif); font-weight: 600; letter-spacing: -.012em; }
.v2-h1 { line-height: 1.04; }
.v2-eyebrow { color: var(--v2-accent); }

/* navy primary, teal accents */
.v2-btn-primary { background: var(--v2-primary); box-shadow: 0 6px 20px rgba(19,41,75,.18); }
.v2-btn-primary:hover { background: #1c3a66; }
.v2-brand-mark { background: linear-gradient(135deg, var(--v2-primary), var(--v2-accent)); }
.v2-nav a.active { background: var(--v2-primary-soft); color: var(--v2-primary); }
.v2-card-ico { background: #e4f3f2; color: var(--v2-accent); }
.v2-card-arrow { color: var(--v2-accent); }
.v2-step-num { background: var(--v2-primary); }
.v2-filter.active { background: var(--v2-primary); border-color: var(--v2-primary); }
.v2-hero-badge { color: var(--v2-primary); }
.v2-status.v2-st-open { background:#e2f3ea; color:#0f6a44; }
.v2-status.v2-st-up { background:#e6eef8; color:#1e3a66; }

/* warm, calm hero wash */
.v2-hero { background:
  radial-gradient(1100px 480px at 12% -12%, #fff6e8 0, rgba(255,246,232,0) 60%),
  radial-gradient(880px 460px at 97% -4%, #e7f5f3 0, rgba(231,245,243,0) 55%), var(--v2-bg); }

/* more air */
.v2-hero-inner { padding-top: var(--v2-s9); padding-bottom: var(--v2-s9); }
.v2-section { padding: var(--v2-s9) 0; }
.v2-card { padding: var(--v2-s6); box-shadow: 0 1px 2px rgba(11,34,57,.05); }
.v2-card:hover { box-shadow: 0 16px 44px rgba(11,34,57,.10); }
/* end ART DIRECTION */

/* ════ KBM-CUSTOMER-V2 — journey components (navy/warm-white/teal) ════ */
.v2-narrow { max-width:720px; }
.v2-fineprint { font-size:var(--v2-t-small); color:var(--v2-ink-faint); margin-top:var(--v2-s4); }
.v2-textarea { width:100%; font-family:inherit; font-size:18px; line-height:1.5; padding:18px;
  border:1px solid var(--v2-line-strong); border-radius:var(--v2-r); background:var(--v2-surface); resize:vertical; min-height:120px; }
.v2-textarea:focus { outline:3px solid rgba(15,143,138,.18); border-color:var(--v2-accent); }
.v2-chips { display:flex; flex-wrap:wrap; gap:var(--v2-s2); }
.v2-chip { font-family:inherit; font-size:var(--v2-t-small); color:var(--v2-ink-soft); background:var(--v2-surface);
  border:1px solid var(--v2-line-strong); border-radius:var(--v2-r-pill); padding:9px 16px; min-height:40px; cursor:pointer; }
.v2-chip:hover { background:var(--v2-surface-2); border-color:var(--v2-accent); color:var(--v2-ink); }


/* two-column + role cards */
.v2-two { display:grid; grid-template-columns:1fr 1fr; gap:var(--v2-s7); }
.v2-roles { display:flex; flex-direction:column; gap:var(--v2-s3); }
.v2-role-card { display:flex; gap:var(--v2-s4); align-items:flex-start; background:var(--v2-surface);
  border:1px solid var(--v2-line); border-radius:var(--v2-r); padding:var(--v2-s5); }
.v2-role-ico { width:36px; height:36px; flex:0 0 auto; border-radius:50%; display:grid; place-items:center; font-weight:700; }
.v2-role-have .v2-role-ico { background:#e4f3f2; color:var(--v2-accent); }
.v2-role-gap .v2-role-ico { background:#f4ece0; color:#b45309; }
.v2-role-org { font-size:var(--v2-t-lead); font-weight:var(--v2-w-semibold); color:var(--v2-ink); }
.v2-role-role { font-size:var(--v2-t-small); color:var(--v2-ink-soft); margin-top:2px; }
.v2-role-loc { font-size:13px; color:var(--v2-ink-faint); margin-top:2px; }
.v2-role-tag { display:inline-block; margin-top:6px; font-size:11px; font-weight:700; color:#b45309; background:#f6ead6; border-radius:5px; padding:2px 8px; }
.v2-role-critical { border-color:#e7cfa6; }

/* V2 pages are full-bleed (override legacy .page max-width:1100 + padding) */
body.v2-active .page { max-width:100% !important; width:100%; padding:0 !important; }
body.v2-active .page.active { display:block; }

/* V2 mobile top-nav menu */
.v2-menu-btn { display:none; }
@media (max-width:920px){
  .v2-topbar-inner { position:relative; }
  .v2-menu-btn { display:inline-flex; align-items:center; justify-content:center; margin-left:auto;
    width:44px; height:44px; font-size:20px; background:var(--v2-surface); border:1px solid var(--v2-line-strong);
    border-radius:10px; color:var(--v2-ink); cursor:pointer; }
  .v2-nav { display:none; position:absolute; top:calc(100% + 8px); right:var(--v2-s5); margin-left:0;
    flex-direction:column; align-items:stretch; background:var(--v2-surface); border:1px solid var(--v2-line);
    border-radius:var(--v2-r); box-shadow:var(--v2-sh-3); padding:var(--v2-s3); min-width:210px; z-index:50; }
  .v2-topbar.v2-menu-open .v2-nav { display:flex; }
  .v2-nav a { padding:12px 14px; min-height:44px; display:flex; align-items:center; }
}

/* KUNGSBACKAMODELLEN-PRODUCTIONIZATION-P1 — read-only consortium view */
.v2-three { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--v2-s6); }
.v2-pick { text-align:left; cursor:pointer; font:inherit; }
.v2-muted { color:var(--v2-ink-faint); }
.v2-eyebrow-warn { color:#b45309; }
.v2-eyebrow-unknown { color:var(--v2-ink-soft); }
.v2-cons-summary { margin-top:var(--v2-s5); padding:var(--v2-s4) var(--v2-s5); border-radius:var(--v2-r);
  background:var(--v2-surface); border:1px solid var(--v2-line); max-width:640px; }
.v2-cons-line { font-size:var(--v2-t-lead); font-weight:var(--v2-w-semibold); color:var(--v2-ink); }
.v2-cons-state { margin-top:4px; font-size:var(--v2-t-small); color:var(--v2-ink-soft); }
.v2-req-list { list-style:none; padding:0; margin:var(--v2-s4) 0 0; display:grid; gap:var(--v2-s3); }
.v2-req-list li { background:var(--v2-surface); border:1px solid var(--v2-line); border-left-width:4px;
  border-radius:var(--v2-r-sm); padding:var(--v2-s3) var(--v2-s4); }
.v2-req-ok li { border-left-color:var(--v2-accent); }
.v2-req-missing li { border-left-color:#b45309; }
.v2-req-unknown li { border-left-color:var(--v2-line-strong); border-left-style:dashed; }
.v2-req-desc { font-weight:var(--v2-w-semibold); color:var(--v2-ink); }
.v2-req-reason { font-size:var(--v2-t-small); color:var(--v2-ink-soft); margin-top:2px; }
.v2-req-unverified { font-size:11px; font-weight:700; color:var(--v2-ink-soft); background:var(--v2-surface-2);
  border:1px solid var(--v2-line-strong); border-radius:5px; padding:1px 6px; margin-left:4px; }
.v2-cons-gaps { margin:var(--v2-s6) 0 0; padding-left:1.2em; color:var(--v2-ink-soft); font-size:var(--v2-t-small); }
@media (max-width:920px){ .v2-two, .v2-three { grid-template-columns:1fr; } }
.v2-cons-line-2 { margin-top:var(--v2-s3); padding-top:var(--v2-s3); border-top:1px solid var(--v2-line); font-size:var(--v2-t-body); }
.v2-col-h { font-size:var(--v2-t-small); font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--v2-accent); margin:0; }
.v2-roles-row { flex-direction:row; flex-wrap:wrap; }
.v2-roles-row .v2-role-card { flex:1 1 240px; }
/* P2 — project partner needs */
.v2-need-list { list-style:none; padding:0; margin:var(--v2-s4) 0 0; display:grid; gap:var(--v2-s3); max-width:820px; }
.v2-need { display:flex; gap:var(--v2-s4); align-items:flex-start; background:var(--v2-surface);
  border:1px solid var(--v2-line); border-radius:var(--v2-r-sm); padding:var(--v2-s3) var(--v2-s4); }
.v2-need-mark { width:28px; height:28px; flex:0 0 auto; border-radius:50%; display:grid; place-items:center; font-weight:700; }
.v2-need-satisfied .v2-need-mark { background:#e4f3f2; color:var(--v2-accent); }
.v2-need-not_satisfied .v2-need-mark { background:#f4ece0; color:#b45309; }
.v2-need-unknown .v2-need-mark { background:var(--v2-surface-2); color:var(--v2-ink-soft); border:1px dashed var(--v2-line-strong); }
.v2-need-word { font-size:12px; font-weight:600; color:var(--v2-ink-soft); margin-left:6px; }
.v2-need-critical { font-size:11px; font-weight:700; color:#b45309; background:#f6ead6; border-radius:5px; padding:1px 7px; margin-left:6px; }
/* P3 — partner interests (operator view) */
.v2-pi-card { display:flex; flex-direction:column; gap:var(--v2-s2); }
.v2-pi-status { font-size:12px; font-weight:700; border-radius:var(--v2-r-pill); padding:3px 10px; background:var(--v2-surface-2); color:var(--v2-ink-soft); }
.v2-pi-reviewed { background:#eef1f6; color:var(--v2-primary); }
.v2-pi-promoted { background:#e4f3f2; color:var(--v2-accent); }
.v2-pi-rejected, .v2-pi-withdrawn { background:#f4ece0; color:#92600c; }
.v2-pi-outcome { font-size:var(--v2-t-small); color:var(--v2-ink-soft); margin:0; }
.v2-pi-reason { display:block; margin-top:var(--v2-s3); }
.v2-pi-reason span { display:block; font-size:var(--v2-t-small); font-weight:600; margin-bottom:4px; }
.v2-pi-reason textarea { width:100%; font:inherit; padding:8px 10px; border:1px solid var(--v2-line-strong); border-radius:var(--v2-r-sm); }
.v2-int-err { color:#b42318; font-weight:600; font-size:var(--v2-t-small); margin-top:var(--v2-s2); }
.v2-pc-top { display:flex; justify-content:space-between; align-items:flex-start; gap:var(--v2-s3); }
.v2-pc-loc { font-size:var(--v2-t-small); color:var(--v2-ink-faint); }
.v2-pc-dl { display:grid; grid-template-columns:auto 1fr; gap:4px var(--v2-s4); margin:var(--v2-s2) 0; }
.v2-pc-dl dt { font-size:13px; color:var(--v2-ink-faint); } .v2-pc-dl dd { font-size:var(--v2-t-small); color:var(--v2-ink); margin:0; }
.v2-pc-actions { display:flex; gap:var(--v2-s2); flex-wrap:wrap; align-items:center; margin-top:auto; }
.v2-pc-actions .v2-btn { padding:11px 18px; min-height:44px; font-size:var(--v2-t-small); }
/* P4 — public recruitment (owner view) */
.v2-rec-published { background:#e4f3f2; color:var(--v2-accent); }
.v2-rec-paused { background:#f4ece0; color:#92600c; }
.v2-rec-closed { background:var(--v2-surface-2); color:var(--v2-ink-faint); }
.v2-rec-qr img { width:220px; height:220px; max-width:100%; background:#fff; border:1px solid var(--v2-line); border-radius:var(--v2-r-sm); padding:6px; }
.v2-pi-retention { color:#92600c; font-weight:600; }
a.v2-btn { display:inline-flex; align-items:center; text-decoration:none; }
/* P5 — partner candidates: background check + decision */
.v2-bgstat { font-size:12px; font-weight:700; border-radius:var(--v2-r-pill); padding:2px 10px; }
.v2-bgstat.v2-bg-green { background:#e2f3ea; color:#0f6a44; }
.v2-bgstat.v2-bg-yellow { background:#fbf0d9; color:#92600c; }
.v2-bgstat.v2-bg-red { background:#f7e0df; color:#9a2b25; }
.v2-bgstat.v2-bg-unknown { background:var(--v2-surface-2); color:var(--v2-ink-soft); border:1px dashed var(--v2-line-strong); }
.v2-bgr { margin-top:var(--v2-s3); border:1px solid var(--v2-line); border-radius:var(--v2-r-sm); padding:var(--v2-s3) var(--v2-s4); background:var(--v2-surface-2); }
.v2-bgr-head { display:flex; gap:var(--v2-s3); align-items:center; flex-wrap:wrap; }
.v2-bgr-meta { font-size:var(--v2-t-small); color:var(--v2-ink-soft); }
.v2-bgr-cols { display:grid; grid-template-columns:1fr 1fr; gap:var(--v2-s4); margin-top:var(--v2-s3); font-size:var(--v2-t-small); }
.v2-bgr-cols h5 { margin:0 0 4px; font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--v2-ink-faint); }
.v2-bgr-cols ul { margin:0 0 var(--v2-s3); padding-left:1.1em; } .v2-bgr-cols p { margin:0; }
.v2-bg-dims { list-style:none; padding-left:0 !important; } .v2-bg-dims span { display:inline-block; width:1.2em; font-weight:700; }
.v2-cand-done { font-size:var(--v2-t-small); color:var(--v2-accent); font-weight:600; }
.v2-cand-done-rejected { color:#92600c; }
.v2-cand-approved { background:#e4f3f2; color:var(--v2-accent); }
.v2-cand-rejected { background:#f4ece0; color:#92600c; }
.v2-add-blocked { font-size:var(--v2-t-small); color:#9a2b25; font-weight:600; margin:0; flex-basis:100%; }
.v2-btn-link { background:none; border:0; padding:10px 4px; min-height:44px; font:inherit; font-size:var(--v2-t-small);
  color:var(--v2-primary); text-decoration:underline; text-underline-offset:3px; cursor:pointer; }
@media (max-width:600px){ .v2-bgr-cols { grid-template-columns:1fr; } }
/* end P1 consortium view */

/* KBM-R1-P1B: Källtäckning */
.fc-statement { font-weight: 600; margin: 8px 0 12px; }
.fc-table-wrap { overflow-x: auto; margin-top: 12px; }
.fc-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.fc-table th, .fc-table td { text-align: left; vertical-align: top; padding: 6px 8px; border-bottom: 1px solid var(--border, #e5e7eb); }
.fc-tag { font-size: 11px; padding: 1px 6px; border-radius: 8px; background: #f1f5f9; color: #64748b; }
/* KBM-FUNDING-REVIEW-QUEUE-01: granskningskö */
.rq-flags { margin: 0; padding-left: 16px; }
.rq-block { color: #b42318; }
.rq-verify { color: #92400e; }
.rq-advisory { color: #475569; }
.rq-archive-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 8px 0; }
.rq-archive-bar input { flex: 1 1 220px; min-width: 0; padding: 6px 8px; }


/* KBM-R1-DUAL-UI-1: Klassiskt ↔ AI — Claes & Annica selectors + guide panel */
.ui-mode-switch, .ui-guide-switch { display: flex; flex-wrap: wrap; gap: 6px; }
.ui-mode-group .ui-mode-switch { padding: 0 12px 8px; }
.ui-mode-btn, .ui-guide-btn { font: inherit; font-size: 13px; line-height: 1.2; padding: 6px 10px; min-height: 32px;
  border-radius: 999px; border: 1px solid var(--border, #cbd5e1); background: transparent; color: inherit; cursor: pointer; }
.ui-mode-btn.active, .ui-guide-btn.active { background: #13294b; border-color: #13294b; color: #fff; }
.v2-mode-slot { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-left: var(--v2-s3); }
.v2-mode-slot .ui-mode-btn, .v2-mode-slot .ui-guide-btn { border-color: var(--v2-line-strong); color: var(--v2-ink-soft); }
.v2-mode-slot .ui-mode-btn.active, .v2-mode-slot .ui-guide-btn.active { background: var(--v2-primary); border-color: var(--v2-primary); color: #fff; }
.v2-guide-wrap { padding-top: var(--v2-s5); }
.v2-guide-panel { background: var(--v2-surface); border: 1px solid var(--v2-line); border-radius: var(--v2-r);
  padding: var(--v2-s5); display: grid; gap: var(--v2-s3); }
.v2-guide-head { display: flex; gap: var(--v2-s3); align-items: center; }
.v2-guide-avatar { position: relative; display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 44px; height: 44px; border-radius: 50%; overflow: hidden; font-weight: 700; color: #fff; background: #64748b; }
.v2-guide-avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.v2-guide-avatar.guide-claes { background: linear-gradient(135deg, #13294b, #0f8f8a); }
.v2-guide-avatar.guide-annica { background: linear-gradient(135deg, #7c2d54, #c2410c); }
.v2-guide-name { font-weight: 700; }
.v2-guide-role, .v2-guide-focus, .v2-guide-empty { color: var(--v2-ink-soft); font-size: var(--v2-t-small); margin: 0; }
.v2-guide-ai-status { margin: 0; font-size: var(--v2-t-small); padding: 8px 12px; border-radius: var(--v2-r-sm);
  background: var(--v2-surface-2); color: var(--v2-ink-soft); }
.v2-guide-facts { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; font-size: var(--v2-t-small); }
.v2-guide-fact-label { color: var(--v2-ink-soft); }
@media (max-width: 760px) { .v2-topbar-inner { flex-wrap: wrap; } .v2-mode-slot { width: 100%; margin-left: 0; } }

/* ── KBM-MEMBERS-ONBOARDING-02: Medlemskap (operator page) ─────────────── */
.ms-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; }
.ms-card { padding: 18px; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.ms-card form { display: flex; flex-direction: column; gap: 8px; }
.ms-wide { grid-column: 1 / -1; }
.ms-label { font-weight: 600; font-size: 13px; }
.ms-input { width: 100%; box-sizing: border-box; min-height: 40px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--r); font: inherit; }
.ms-muted { color: var(--muted); font-size: 13px; margin: 0; }
.ms-link { margin-top: 8px; padding: 12px; border: 1px solid var(--info-border); background: var(--info-bg); border-radius: var(--r); display: flex; flex-direction: column; gap: 6px; }
.ms-link p { margin: 0; font-size: 13px; }
.ms-table-wrap { overflow-x: auto; }
.ms-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.ms-table th, .ms-table td { text-align: left; padding: 8px 6px; border-bottom: 1px solid var(--border); }
.ms-list { margin: 0; padding-left: 18px; }

/* ── KBM-PRODUCT-MEMBERS-PARTNERS-01: Mina sidor + V2 form fields ───────── */
body:not(.mp-signed-in) .v2-mp-link { display: none; }
.v2-mp-title { font-size: clamp(34px, 6vw, var(--v2-t-h1)); }
.v2-mp-block { margin-top: var(--v2-s7); }
.v2-mp-block > .v2-h2 { margin-bottom: var(--v2-s4); }
.v2-mp-head-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--v2-s3); margin-bottom: var(--v2-s2); }
.v2-mp-role { display: inline-block; align-self: flex-start; margin-top: var(--v2-s3); background: var(--v2-primary-soft); color: var(--v2-primary); }
/* .v2-section's shorthand padding drops .v2-wrap's side gutter; keep it on this page. */
#v2-mypages-shell .v2-wrap { padding-left: clamp(16px, 4vw, var(--v2-s5)); padding-right: clamp(16px, 4vw, var(--v2-s5)); }
.v2-mp-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--v2-line); }
.v2-mp-row { display: flex; justify-content: space-between; gap: var(--v2-s3); padding: var(--v2-s3) 0; border-bottom: 1px solid var(--v2-line); }
.v2-mp-row a { color: var(--v2-primary); font-weight: var(--v2-w-semibold); text-decoration: none; }
.v2-mp-row a:hover, .v2-mp-row a:focus-visible { text-decoration: underline; }
.v2-mp-req { margin-top: var(--v2-s4); }
.v2-mp-req-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--v2-s3); margin-bottom: var(--v2-s2); }
.v2-form { margin-top: var(--v2-s5); }
.v2-field { display: flex; flex-direction: column; gap: 6px; margin-bottom: var(--v2-s5); }
.v2-field label { font-weight: var(--v2-w-semibold); color: var(--v2-ink); }
.v2-input { width: 100%; box-sizing: border-box; font: inherit; font-size: 17px; line-height: 1.5; color: var(--v2-ink);
  background: var(--v2-surface); border: 1px solid var(--v2-line-strong); border-radius: var(--v2-r); padding: 12px 14px; min-height: 48px; }
.v2-input:focus { outline: 3px solid rgba(15,143,138,.22); border-color: var(--v2-accent); }
.v2-input[aria-invalid="true"] { border-color: #b42318; }
.v2-input:disabled { background: var(--v2-surface-2); color: var(--v2-ink-soft); }
textarea.v2-input { resize: vertical; }
.v2-field-hint { margin: 0; font-size: var(--v2-t-small); color: var(--v2-ink-soft); }
.v2-form-actions { display: flex; flex-wrap: wrap; gap: var(--v2-s3); margin-top: var(--v2-s3); }
@media (max-width: 640px) {
  .v2-mp-head-row .v2-btn, .v2-form-actions .v2-btn { width: 100%; justify-content: center; }
  .v2-mp-row { flex-direction: column; gap: 4px; }
}

/* ── KBM-MY-PAGES-REVIEW-01: administrator review of a recruitment draft ─── */
.v2-rec-detail { margin: var(--v2-s3) 0; display: grid; gap: var(--v2-s2); }
.v2-rec-label { display: block; font-size: var(--v2-t-small); font-weight: var(--v2-w-semibold); color: var(--v2-ink-soft); }
.v2-rec-field p { margin: 2px 0 0; }
.v2-rec-needs { display: grid; gap: 8px; margin: var(--v2-s3) 0; }
.v2-rec-need { display: flex; align-items: flex-start; gap: 10px; font-size: var(--v2-t-small); }
.v2-rec-need input { width: 20px; height: 20px; margin-top: 1px; accent-color: var(--v2-accent); }

/* ── KBM-CUSTOMER-JOURNEY-COMPLETION-01: needs → annons → förhandsvisning → dela ─── */
.v2-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.v2-pj-steps { margin-top: var(--v2-s5); }
.v2-pj-steps ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.v2-pj-step button { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 14px; font: inherit;
  font-size: var(--v2-t-small); color: var(--v2-ink-soft); background: var(--v2-surface); border: 1px solid var(--v2-line);
  border-radius: var(--v2-r-pill); cursor: pointer; }
.v2-pj-step button:focus-visible { outline: 3px solid rgba(15,143,138,.35); outline-offset: 2px; }
.v2-pj-step-n { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; font-weight: 700;
  font-size: 13px; background: var(--v2-surface-2); color: var(--v2-ink-soft); }
.v2-pj-step.is-done .v2-pj-step-n { background: #e4f3f2; color: var(--v2-accent); }
.v2-pj-step.is-current button { border-color: var(--v2-primary); color: var(--v2-ink); font-weight: 600; }
.v2-pj-step.is-current .v2-pj-step-n { background: var(--v2-primary); color: #fff; }
.v2-pj-primary { margin: var(--v2-s5) 0 var(--v2-s3); }
.v2-pj-form { margin: var(--v2-s3) 0 var(--v2-s5); padding: var(--v2-s5); background: var(--v2-surface); border: 1px solid var(--v2-line);
  border-radius: var(--v2-r); max-width: 720px; }
.v2-pj-form .v2-field { margin-bottom: var(--v2-s4); }
.v2-pj-form textarea.v2-input { resize: vertical; }
.v2-pj-row { display: flex; flex-wrap: wrap; gap: var(--v2-s4); align-items: center; }
.v2-pj-row .v2-field { flex: 0 1 220px; }
.v2-check { display: flex; align-items: flex-start; gap: 10px; min-height: 44px; font-size: var(--v2-t-small); color: var(--v2-ink); cursor: pointer; }
.v2-check input { width: 20px; height: 20px; margin-top: 2px; flex: none; accent-color: var(--v2-accent); }
.v2-req-mark { color: #b42318; }
.v2-pj-err:focus { outline: none; }
.v2-pj-flash { margin: var(--v2-s4) 0 0; padding: 12px 16px; border-radius: var(--v2-r-sm); background: #e4f3f2; color: #0b5f5c; font-weight: 600; }
.v2-pj-more { margin-top: var(--v2-s3); }
.v2-pj-more summary { cursor: pointer; font-size: var(--v2-t-small); color: var(--v2-ink-soft); min-height: 32px; }
.v2-need-st-active { background: #e4f3f2; color: var(--v2-accent); }
.v2-need-st-retired { background: #f1f1f1; color: var(--v2-ink-faint); }
fieldset.v2-rec-needs { border: 0; padding: 0; }
fieldset.v2-rec-needs legend { font-weight: var(--v2-w-semibold); color: var(--v2-ink); margin-bottom: 6px; padding: 0; }
.v2-rec-preview { margin: var(--v2-s4) 0; }
.v2-rec-preview-page { margin-top: 8px; padding: var(--v2-s5); background: #fff; border: 1px solid var(--v2-line-strong);
  border-radius: var(--v2-r); box-shadow: 0 1px 2px rgba(11,34,57,.05); }
.v2-rec-preview-page h3 { margin: 0 0 8px; font-size: var(--v2-t-h3); }
.v2-rec-preview-page h4 { margin: var(--v2-s4) 0 6px; font-size: var(--v2-t-body); }
.v2-rec-pv-lead { margin: 0 0 8px; color: var(--v2-ink); }
.v2-rec-pv-geo { color: var(--v2-ink-soft); font-size: var(--v2-t-small); }
.v2-rec-pv-needs { margin: 0; padding-left: 20px; }
.v2-rec-pv-caps { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; }
.v2-rec-pv-caps span { padding: 3px 10px; border-radius: var(--v2-r-pill); background: var(--v2-surface-2); font-size: 13px; }
#v2-recruitments .v2-pi-grid { grid-template-columns: 1fr; max-width: 860px; }
.v2-share { margin: var(--v2-s3) 0; padding: var(--v2-s4); border-radius: var(--v2-r-sm); background: var(--v2-surface-2); }
.v2-share-h { margin: 0 0 8px; font-size: var(--v2-t-body); }
.v2-share-since { font-weight: 400; color: var(--v2-ink-soft); font-size: var(--v2-t-small); }
.v2-share-warn { margin: 8px 0; padding: 10px 12px; border-left: 4px solid #b45309; background: #fff7ed; color: #7c2d12;
  font-size: var(--v2-t-small); border-radius: 6px; }
.v2-share-row { margin: 10px 0; }
.v2-share-row label { display: block; font-size: 13px; font-weight: 600; color: var(--v2-ink-soft); margin-bottom: 4px; }
.v2-share-copy { display: flex; gap: 8px; }
.v2-share-copy .v2-input { flex: 1 1 auto; min-width: 0; font-size: 14px; padding: 8px 10px; }
.v2-share-copy .v2-btn { flex: none; min-height: 44px; }
.v2-copy-fb { display: block; min-height: 18px; font-size: 13px; color: var(--v2-accent); }
@media (max-width: 640px) {
  .v2-pj-form { padding: var(--v2-s4); }
  .v2-pj-primary .v2-btn, .v2-pj-form .v2-pc-actions .v2-btn { width: 100%; justify-content: center; }
  .v2-pj-steps ol { flex-direction: column; }
  .v2-pj-step button { width: 100%; }
}

/* ── KBM-R27: background-check placeholder (no provider connected yet) ───── */
.v2-bgph { margin-top: var(--v2-s3); padding: 14px 16px; border: 1px dashed var(--v2-line-strong); border-radius: var(--v2-r); background: var(--v2-surface); }
.v2-bgph-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.v2-bgph-title { font-weight: 700; color: var(--v2-ink); }
.v2-bgph-status { font-size: 12px; font-weight: 700; border-radius: var(--v2-r-pill); padding: 2px 10px; background: #eef2f6; color: #465a6e; }
.v2-bgph-note { margin: 10px 0 6px; font-size: 14px; color: var(--v2-ink-soft); }
.v2-bgph-legend { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; font-size: 14px; color: var(--v2-ink-soft); }
.v2-bgph-legend li { display: flex; align-items: center; gap: 8px; }
.v2-bgph-dot { width: 12px; height: 12px; border-radius: 50%; flex: none; opacity: .55; }
.v2-bgph-g { background: #0f6a44; } .v2-bgph-y { background: #c58a12; } .v2-bgph-r { background: #b42318; }
.v2-cand-ack { display: flex; gap: 10px; align-items: flex-start; margin: 8px 0; font-size: 14px; color: var(--v2-ink); }
.v2-cand-ack input { width: 20px; height: 20px; margin-top: 2px; flex: none; }

/* KBM-GLOBAL-FUNDING-RADAR-01: Finansieringsradarn */
.v2-radar-filters { display: flex; flex-wrap: wrap; gap: 12px; margin: 16px 0; }
.v2-radar-filters .v2-input { flex: 1 1 180px; min-width: 150px; }
.v2-status.v2-ok      { background:#e2f3ea; color:#0f6a44; }
.v2-status.v2-warn    { background:#fdecea; color:#b42318; }
.v2-status.v2-info    { background:#e6eef8; color:#1e3a66; }
.v2-status.v2-neutral { background:#eef0f2; color:#4a5560; }
.v2-radar-card { min-width: 0; }
.v2-radar-card .v2-pc-top { flex-wrap: wrap; gap: 6px; }
.v2-radar-card .v2-status { white-space: normal; }
.v2-radar-card .v2-pc-dl dd { min-width: 0; overflow-wrap: anywhere; }
.v2-radar-card .v2-pc-actions { margin-top: 10px; }
#radar-list { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
@media (max-width: 640px) { #radar-list { grid-template-columns: minmax(0, 1fr); } }

/* KBM-OPPORTUNITY-RADAR-01 (Increment 2): opportunity cards + class chips */
.v2-chip-n{display:inline-block;min-width:1.4em;padding:0 .35em;margin-left:.3em;border-radius:999px;background:rgba(0,0,0,.08);font-size:.8em;font-weight:600}
.v2-badges{display:flex;flex-wrap:wrap;gap:.4rem;margin:.35rem 0}
.v2-tag{display:inline-block;padding:.18rem .55rem;border-radius:999px;font-size:.78rem;font-weight:600;border:1px solid rgba(0,0,0,.12)}
.v2-tag-class{background:rgba(20,90,120,.10);color:#0d4f66}
.v2-elig-unknown{display:inline-block;font-size:.85em;color:#8a5a00;background:rgba(220,150,0,.12);padding:.1rem .45rem;border-radius:6px}
.v2-card-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}
.v2-empty{padding:2rem 1rem;text-align:center;border:1px dashed rgba(0,0,0,.18);border-radius:12px}
@media (prefers-color-scheme: dark){
  .v2-chip-n{background:rgba(255,255,255,.14)}
  .v2-tag-class{background:rgba(80,180,220,.16);color:#8fd4ec}
  .v2-elig-unknown{color:#e7b35a;background:rgba(220,150,0,.16)}
  .v2-empty{border-color:rgba(255,255,255,.2)}
}
