/* =============================================================
   2L Dealflow — designsystem.
   ALLE farver styres via CSS-variabler her (defaults) og overskrives
   ved runtime fra central konfiguration (config/theme.json → Settings).
   ============================================================= */
:root {
  /* v3.82: visningsstørrelse (src/uiscale.js) — 1 / 0.9 / 0.8 / 0.7 */
  --uiz: 1;
  /* 2L-brandpalet (PPT-skabelonen, 11.08.2026): mørk teal #2A4D4F, sand
     #C4A77D, beige #D6C6B8, taupe #8B7E74, tekst #2B2B2B på #F8F8F8. */
  --c-primary: #2A4D4F;
  --c-primary-dark: #1D3839;
  --c-primary-soft: #E8EEED;
  --c-accent: #C4A77D;
  --c-accent-soft: #F2EBDF;
  --c-bg: #F8F8F8;
  --c-surface: #FFFFFF;
  --c-border: #E5E1DA;
  --c-text: #2B2B2B;
  --c-text-dim: #5E5E5E;
  --c-positive: #2F7D5B;
  --c-warning: #B7791F;
  --c-danger: #B04A38;
  --c-info: #33628C;
  --c-high: #2F7D5B;
  --c-medium: #B7791F;
  --c-low: #8A918D;

  --radius: 10px;
  --radius-sm: 7px;
  --shadow-card: 0 1px 2px rgba(35, 32, 28, .06), 0 1px 6px rgba(35, 32, 28, .05);
  --shadow-pop: 0 6px 24px rgba(30, 27, 24, .16);
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body { height: 100%; }
/* v3.82: hele appen skaleres med brugerens visningsstørrelse. Under zoom ganges
   vh/vw også med faktoren — derfor står viewport-enheder herunder som
   calc(… / var(--uiz)). */
html { zoom: var(--uiz); }
body {
  margin: 0;
  font-family: var(--font);
  font-size: 14px;
  color: var(--c-text);
  background: var(--c-bg);
  -webkit-font-smoothing: antialiased;
  /* v3.52: dokumentet må ALDRIG scrolle vandret — så glider topbaren ud af
     billedet. Brede flader (kanban, tabeller) scroller i egne containere. */
  overflow-x: hidden;
}
button { font-family: inherit; }
/* v3.55: dvh følger mobilbrowserens adresselinje — på desktop = vh (uændret) */
#app { height: calc(100vh / var(--uiz) - var(--test-baand, 0px)); height: calc(100dvh / var(--uiz) - var(--test-baand, 0px)); display: flex; flex-direction: column; }

.boot-splash {
  height: calc(100vh / var(--uiz) - var(--test-baand, 0px)); height: calc(100dvh / var(--uiz) - var(--test-baand, 0px)); display: flex; flex-direction: column; gap: 14px;
  align-items: center; justify-content: center; color: var(--c-text-dim);
}
.boot-logo {
  width: 54px; height: 54px; border-radius: 14px; background: var(--c-primary);
  color: var(--c-accent); font-weight: 700; font-size: 20px;
  display: flex; align-items: center; justify-content: center;
}

/* ---------- Topbar ---------- */
.topbar {
  height: 58px; flex: 0 0 auto; display: flex; align-items: center; gap: 14px;
  padding: 0 18px; background: var(--c-primary); color: #fff;
  /* v3.55: INGEN overflow her — det klippede søgeresultat-dropdownen (absolut
     positioneret inde i baren). Pladsmangel løses ved, at søgefeltet viger
     (desktop) og ved to-række-layoutet under 900px. */
}
.topbar > * { flex: 0 0 auto; }
.brand { display: flex; align-items: center; gap: 10px; margin-right: 6px; cursor: default; }
.brand-logo {
  width: 32px; height: 32px; border-radius: 8px; background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.14); color: var(--c-accent);
  font-weight: 700; font-size: 13px; display: flex; align-items: center; justify-content: center;
}
.brand-name { font-weight: 600; font-size: 15px; letter-spacing: .2px; }
.brand-org { font-size: 11px; opacity: .55; margin-top: -2px; }

.nav { display: flex; gap: 4px; margin: 0 8px; }
.nav-pill {
  border: 0; background: transparent; color: rgba(255,255,255,.72);
  padding: 7px 13px; border-radius: 8px; font-size: 13.5px; font-weight: 500;
  cursor: pointer; display: flex; align-items: center; gap: 7px; transition: background .12s, color .12s;
}
.nav-pill:hover { background: rgba(255,255,255,.08); color: #fff; }
.nav-pill.active { background: rgba(255,255,255,.14); color: #fff; }
.nav-pill .count {
  background: rgba(255,255,255,.14); font-size: 11px; padding: 1px 7px;
  border-radius: 99px; font-weight: 600;
}
.nav-pill.drop-target { outline: 2px dashed var(--c-accent); outline-offset: 2px; background: rgba(255,255,255,.12); color:#fff; }

.topbar-spacer { flex: 1; }

/* ---------- Underfaner (Deals: Canvas · Pipeline · Monitor · Kasseret/Tabt) ---------- */
.subnav { display: flex; gap: 4px; padding: 10px 18px 0; flex: 0 0 auto; }
.subnav .nav-pill { color: var(--c-text-dim); }
.subnav .nav-pill:hover { background: var(--c-primary-soft); color: var(--c-text); }
.subnav .nav-pill.active { background: var(--c-primary-soft); color: var(--c-primary); font-weight: 650; }
.subnav .nav-pill .count { background: var(--c-border); color: var(--c-text-dim); }
.subnav .nav-pill.drop-target { outline: 2px dashed var(--c-accent); outline-offset: 2px; background: var(--c-accent-soft); color: var(--c-text); }
/* v3.52: søgefeltet VIGER, når pladsen er knap, i stedet for at skubbe baren
   ud over vinduskanten — dog aldrig under 120px. */
.topbar-search { position: relative; flex: 0 1 230px; min-width: 120px; }
.topbar-search input {
  width: 100%; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.14);
  color: #fff; border-radius: 8px; padding: 7px 26px 7px 32px; font-size: 13px; outline: none;
}
.topbar-search input::placeholder { color: rgba(255,255,255,.68); }
.topbar-search .icn { position: absolute; left: 9px; top: 7px; color: rgba(255,255,255,.55); }
.search-results {
  position: absolute; top: 40px; right: 0; width: min(380px, calc(92vw / var(--uiz))); max-height: 380px; overflow: auto;
  background: var(--c-surface); color: var(--c-text); border-radius: var(--radius);
  box-shadow: var(--shadow-pop); z-index: 60; padding: 6px;
}
.search-item { padding: 8px 10px; border-radius: var(--radius-sm); cursor: pointer; display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.search-item:hover { background: var(--c-primary-soft); }
/* v4.2.2: mærkaten til højre (Pipeline, CVR, udført) klippes ikke længere — navnet giver plads */
.search-item > :first-child { min-width: 0; }
.search-item > * + * { flex-shrink: 0; }
/* v3.90: tastatur i søgningen — pil op/ned markerer, "/" i feltets højre kant viser genvejen */
.search-item.active { background: var(--c-primary-soft); box-shadow: inset 2px 0 0 var(--c-primary); }
.search-recent-clear { justify-content: flex-end; font-size: 11.5px; padding-top: 4px; padding-bottom: 4px; }
.search-kbd {
  position: absolute; right: 8px; top: 7px; font: 600 10.5px/16px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  color: rgba(255,255,255,.7); background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.22);
  border-radius: 4px; padding: 0 5px; pointer-events: none;
}
.topbar-search:focus-within .search-kbd { display: none; }

.icon-btn {
  border: 0; background: transparent; color: inherit; cursor: pointer;
  width: 32px; height: 32px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center;
}
.topbar .icon-btn { color: rgba(255,255,255,.75); }
.topbar .icon-btn:hover, .icon-btn:hover { background: rgba(127,127,127,.14); color: inherit; }

/* ---------- Knapper ---------- */
.btn {
  border: 1px solid transparent; border-radius: 8px; padding: 7.5px 14px;
  font-size: 13.5px; font-weight: 600; cursor: pointer; display: inline-flex;
  align-items: center; gap: 7px; transition: filter .12s, background .12s;
  white-space: nowrap;
}
.btn:disabled { opacity: .55; cursor: default; }
.btn-primary { background: var(--c-primary); color: #fff; }
.btn-primary:hover:not(:disabled) { filter: brightness(1.15); }
.btn-accent { background: var(--c-accent); color: var(--c-primary-dark); }
.btn-accent:hover:not(:disabled) { filter: brightness(1.05); }
.btn-ghost { background: transparent; color: var(--c-text); border-color: var(--c-border); }
.btn-ghost:hover:not(:disabled) { background: var(--c-primary-soft); }
.btn-danger { background: var(--c-danger); color: #fff; }
.btn-sm { padding: 5px 10px; font-size: 12.5px; }
.btn-link { border: 0; background: none; color: var(--c-info); cursor: pointer; padding: 0; font-size: inherit; }
.btn-link:hover { text-decoration: underline; }

/* ---------- Layout under topbar ---------- */
.view { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.view-toolbar {
  display: flex; align-items: center; gap: 10px; padding: 12px 18px 4px;
  flex-wrap: wrap;
}
.view-title { font-size: 17px; font-weight: 700; margin-right: 6px; }
.toolbar-stat { font-size: 12.5px; color: var(--c-text-dim); }
.toolbar-stat b { color: var(--c-text); font-weight: 600; }

/* ---------- Kanban-board ---------- */
.board {
  flex: 1; min-height: 0; display: flex; gap: 12px; padding: 10px 18px 16px;
  overflow-x: auto; align-items: stretch;
}
.col {
  flex: 1 1 0; min-width: 218px; max-width: 340px; display: flex; flex-direction: column;
  background: rgba(20, 45, 38, .045); border-radius: 12px; border: 1px solid rgba(20,45,38,.05);
}
.col-head { padding: 11px 12px 8px; }
.col-title { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: 13px; }
.col-count { background: var(--c-surface); border: 1px solid var(--c-border); font-size: 11px; padding: 0 7px; border-radius: 99px; color: var(--c-text-dim); font-weight: 600; }
.col-sums { margin-top: 3px; font-size: 11.5px; color: var(--c-text-dim); }
.col-sums b { color: var(--c-text); font-weight: 600; }
.col-body { flex: 1; min-height: 60px; overflow-y: auto; padding: 4px 8px 10px; display: flex; flex-direction: column; gap: 8px; }
.col.drag-over { background: var(--c-primary-soft); border-color: var(--c-primary); }
/* v3.52: tom kolonne forklarer sig selv i stedet for at stå som grå flade */
.col-empty-hint {
  margin: 6px 4px; padding: 18px 10px; text-align: center;
  border: 1.5px dashed var(--c-border); border-radius: var(--radius);
  color: var(--c-text-dim); font-size: 12px;
}
.drop-placeholder {
  height: 3px; border-radius: 2px; background: var(--c-accent); margin: 2px 4px; flex: 0 0 auto;
}

/* ---------- Deal-kort ---------- */
.card {
  background: var(--c-surface); border-radius: var(--radius); box-shadow: var(--shadow-card);
  border: 1px solid rgba(20,45,38,.06); padding: 10px 11px 9px; cursor: pointer;
  transition: box-shadow .12s, transform .12s; user-select: none; position: relative;
  touch-action: pan-y; /* tablet: lodret scroll bevares, vandret træk starter drag */
}
.card:hover { box-shadow: 0 3px 10px rgba(15,30,25,.12); }
.card.dragging { opacity: .35; }
.card-ghost {
  position: fixed; z-index: 100; pointer-events: none; width: 250px;
  transform: rotate(2.5deg); box-shadow: var(--shadow-pop); opacity: .95;
}
.card-name { font-weight: 650; font-size: 13.5px; line-height: 1.25; display: flex; align-items: center; gap: 6px 4px; flex-wrap: wrap; min-width: 0; }
/* v4.1: navnet får mindst ~120 px, ellers ombrydes HELE navnet til linjen under markørerne */
.card-name-text { flex: 1 1 120px; min-width: 0; overflow-wrap: anywhere; }
.card-name .gc-flag { margin-right: 0; }
.card-title-sub { font-size: 11px; color: var(--c-text-dim); margin-top: 1px; }
.card-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; min-width: 0; }
/* v3.36: lange deal type-/tema-navne klippes med … i stedet for at skubbe
   kortlayoutet. text-overflow virker ikke i inline-flex (teksten bliver et
   anonymt flex-item) — derfor block her, hvor chips på kortet er ren tekst. */
.card-chips .chip { display: block; max-width: 100%; }
.card-value { margin-top: 7px; font-size: 12.5px; }
.card-value b { font-weight: 700; }
.card-value .dim { color: var(--c-text-dim); font-size: 11.5px; }
.card-foot { display: flex; align-items: center; gap: 6px; margin-top: 8px; }
.card-foot .spacer { flex: 1; }
.card-menu-btn { position: absolute; top: 6px; right: 5px; opacity: 0; width: 26px; height: 26px; }
.card:hover .card-menu-btn { opacity: 1; }
/* v3.40: dokumentikon i kortets højre hjørne. Har kortet dokumenter, rykker
   "Flyt til …"-knappen til venstre for ikonet ved hover — så ingen af delene
   flytter sig på selve ikonet, og begge kan rammes. */
.card-doc-flag {
  position: absolute; top: 8px; right: 8px; display: inline-flex;
  color: var(--c-text-dim);
}
.card.has-docs .card-name { padding-right: 18px; }
.card.has-docs:hover .card-menu-btn { right: 26px; }
/* v3.41: hjemløs deal — stadiet findes ikke på fanen. Kortet vises i første
   kolonne i stedet for at forsvinde, og skal kunne ses med det samme. */
.board-warn {
  display: flex; align-items: center; gap: 8px; margin: 0 8px 8px; padding: 8px 12px;
  border: 1px solid var(--c-danger); border-radius: var(--radius);
  background: #F7E7E3; color: var(--c-danger); font-size: 12.5px; font-weight: 600;
}
.card.card-orphan { border: 1px solid var(--c-danger); }
.card-orphan-note {
  display: inline-flex; align-items: center; gap: 4px; margin-bottom: 5px;
  font-size: 10.5px; font-weight: 700; color: var(--c-danger);
  background: #F7E7E3; border-radius: 99px; padding: 1.5px 8px 1.5px 6px;
}

.chip {
  display: inline-flex; align-items: center; font-size: 10.5px; font-weight: 600;
  padding: 2px 8px; border-radius: 99px; background: var(--c-primary-soft);
  color: var(--c-primary); white-space: nowrap; max-width: 160px; overflow: hidden; text-overflow: ellipsis;
}
.chip-dim { background: #EFEDEA; color: var(--c-text-dim); }
.chip-accent { background: var(--c-accent-soft); color: #7A6230; }
.chip-danger { background: #F7E7E3; color: var(--c-danger); }
.chip-pos { background: #E5F1EB; color: var(--c-positive); }
.chip-info { background: #E7EEF5; color: var(--c-info); }

.prob { font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 6px; color: #fff; }
.prob-high { background: var(--c-high); }
.prob-medium { background: var(--c-medium); }
.prob-low { background: var(--c-low); }
.prob-pct { font-weight: 500; opacity: .85; }

.avatar {
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; color: #fff; font-weight: 700; flex: 0 0 auto; letter-spacing: .3px;
}
.avatar-empty { background: #D8D2CA; color: #fff; }
.avatar-stack { display: flex; }
.avatar-stack .avatar { margin-left: -6px; border: 1.5px solid var(--c-surface); }
.avatar-stack .avatar:first-child { margin-left: 0; }

.meta-days { font-size: 11px; color: var(--c-text-dim); display: inline-flex; align-items: center; gap: 3px; }
/* v3.90: dage siden sidste kontakt — dæmpet under 30 dage, rød derover, "ingen kontakt" kun i Pipeline */
.contact-age { font-size: 11px; color: var(--c-text-dim); display: inline-flex; align-items: center; gap: 3px; white-space: nowrap; }
.contact-age-stale { color: var(--c-danger); font-weight: 700; }
.contact-age-never { font-style: italic; }
.deal-table .contact-age { font-size: 12px; }
.task-ind { font-size: 11px; font-weight: 700; display: inline-flex; align-items: center; gap: 3px; color: var(--c-text-dim); }
.task-ind.overdue { color: var(--c-danger); }

/* ---------- Grid-visninger (Monitor & Discarded) ---------- */
.grid-wrap { flex: 1; overflow-y: auto; padding: 8px 18px 20px; }
.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 12px; }
.gcard {
  background: var(--c-surface); border-radius: var(--radius); box-shadow: var(--shadow-card);
  border: 1px solid rgba(20,45,38,.06); padding: 13px 14px; cursor: pointer; transition: box-shadow .12s;
}
.gcard:hover { box-shadow: 0 3px 12px rgba(15,30,25,.13); }
/* v4.2.2: knapperne i bunden af kortet står på samme linje i hele rækken */
.gcard { display: flex; flex-direction: column; }
.gcard > .gcard-actions, .gcard > .gcard-foot { margin-top: auto; padding-top: 10px; }
.gcard-head { display: flex; align-items: flex-start; gap: 8px; }
.gcard-name { font-weight: 700; font-size: 14.5px; flex: 1; }
.gcard-kv { display: grid; grid-template-columns: auto 1fr; gap: 3px 12px; margin-top: 9px; font-size: 12.5px; }
.gcard-kv .k { color: var(--c-text-dim); }
.gcard-foot { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
.gcard-note { font-size: 12px; color: var(--c-text-dim); margin-top: 7px; font-style: italic; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.empty-state { text-align: center; color: var(--c-text-dim); padding: 60px 20px; font-size: 13.5px; }

/* ---------- Drawer (detaljevisning) ---------- */
.drawer-overlay { position: fixed; inset: 0; background: rgba(10, 22, 18, .35); z-index: 40; }
.drawer {
  /* v3.77: draweren fylder godt halvdelen af skærmen (brugerens ønske 18.09.2026:
     bredere deal-overblik) — mindst 780 px, aldrig mere end 96 vw. */
  position: fixed; top: 0; right: 0; bottom: 0; width: min(max(780px, calc(52vw / var(--uiz))), calc(96vw / var(--uiz))); z-index: 41;
  background: var(--c-bg); box-shadow: -8px 0 30px rgba(10,25,20,.2);
  display: flex; flex-direction: column; animation: slideIn .18s ease-out;
}
/* v3.52: ingen opacity i animationen — en gennemsigtig drawer lod boardets
   tekst skinne igennem panelet, mens det gled ind. */
@keyframes slideIn { from { transform: translateX(30px); } to { transform: none; } }
.drawer-head { background: var(--c-surface); border-bottom: 1px solid var(--c-border); padding: 14px 18px 0; }
.drawer-top { display: flex; align-items: flex-start; gap: 10px; }
.drawer-company { font-size: 19px; font-weight: 750; line-height: 1.2; }
/* v3.36: blyant til omdøbning ved dealnavnet — diskret til man peger på den */
.title-edit-btn { width: 24px; height: 24px; margin-left: 4px; vertical-align: middle; opacity: .45; }
.drawer-company:hover .title-edit-btn, .title-edit-btn:focus-visible { opacity: 1; }
.drawer-sub { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-top: 6px; font-size: 12px; color: var(--c-text-dim); }
.drawer-actions { display: flex; gap: 8px; margin-left: auto; flex-wrap: wrap; justify-content: flex-end; align-items: center; }
/* v3.52: skillelinje mellem destruktive handlinger og navigation — slet må
   ikke stå klods op ad luk-krydset. */
.action-sep { width: 1px; height: 22px; background: var(--c-border); margin: 0 2px; flex: 0 0 auto; }
.drawer-tabs { display: flex; gap: 2px; margin-top: 12px; overflow-x: auto; }
.dtab {
  border: 0; background: none; padding: 9px 13px; font-size: 13px; font-weight: 600;
  color: var(--c-text-dim); cursor: pointer; border-bottom: 2.5px solid transparent; white-space: nowrap;
}
.dtab:hover { color: var(--c-text); }
.dtab.active { color: var(--c-primary); border-bottom-color: var(--c-accent); }
.dtab .mini-count { font-size: 10.5px; background: var(--c-primary-soft); color: var(--c-primary); padding: 0 6px; border-radius: 99px; margin-left: 5px; }
.drawer-body { flex: 1; overflow-y: auto; padding: 16px 18px 30px; }

.panel { background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 14px 16px; margin-bottom: 12px; }
.panel-title { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .6px; color: var(--c-text-dim); margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
.panel-title .spacer { flex: 1; }

.kv-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px 18px; }
/* v3.77: i den brede drawer holdes tre faste kolonner, så rækkerne (dealnavn/beløb/EV,
   næste skridt/estimat/ejer, prioritet/kilde/NDA …) står ens uanset skærmbredde. */
.drawer .kv-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.kv-grid .kv.full { grid-column: 1 / -1; } /* v3.75: status-teksten må fylde hele bredden */
.kv { font-size: 13px; }
.kv .k { display: flex; align-items: center; gap: 5px; font-size: 11px; color: var(--c-text-dim); font-weight: 600; text-transform: uppercase; letter-spacing: .4px; margin-bottom: 2px; }
.kv .v { min-height: 19px; }
.kv .v.editable { border-bottom: 1px dashed transparent; cursor: text; }
.kv .v.editable:hover { border-bottom-color: var(--c-border); background: var(--c-primary-soft); border-radius: 3px; }

.src-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; flex: 0 0 auto; }
.src-ownr { background: var(--c-info); }
.src-aarsrapport { background: var(--c-positive); } /* v4.4: tal fra årsregnskabet (ERST) */
.src-mock { background: var(--c-warning); }
.src-manual { background: #CBC4BB; }
.src-pipedrive { background: var(--c-accent); }

/* ---------- Log/timeline ---------- */
.log-item { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px solid #F0EEEA; font-size: 13px; }
.log-item:last-child { border-bottom: 0; }
.log-icon {
  width: 28px; height: 28px; border-radius: 8px; flex: 0 0 auto; display: flex; align-items: center;
  justify-content: center; background: var(--c-primary-soft); color: var(--c-primary);
}
.log-main { flex: 1; min-width: 0; }
.log-meta { font-size: 11.5px; color: var(--c-text-dim); margin-top: 1px; }
.log-comment { background: var(--c-accent-soft); border-radius: 0 var(--radius-sm) var(--radius-sm) var(--radius-sm); padding: 8px 10px; margin-top: 3px; white-space: pre-wrap; }
.comment-box { display: flex; gap: 8px; margin-bottom: 12px; }
.comment-box textarea { flex: 1; resize: vertical; min-height: 38px; }

/* ---------- Tabeller ---------- */
.table { width: 100%; border-collapse: collapse; font-size: 13px; }
.table th { text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: .5px; color: var(--c-text-dim); font-weight: 700; padding: 7px 10px; border-bottom: 1.5px solid var(--c-border); white-space: nowrap; }
.table td { padding: 8px 10px; border-bottom: 1px solid #F0EEEA; vertical-align: middle; }
.table tr:last-child td { border-bottom: 0; }
.table .num { text-align: right; font-variant-numeric: tabular-nums; }
.table tr.clickable { cursor: pointer; }
.table tr.clickable:hover td { background: var(--c-primary-soft); }

/* ---------- Formularer ---------- */
.field { display: flex; flex-direction: column; gap: 5px; }
.field-label { font-size: 11.5px; font-weight: 700; color: var(--c-text-dim); text-transform: uppercase; letter-spacing: .4px; display: flex; gap: 6px; align-items: center; }
.input, textarea.input {
  border: 1px solid var(--c-border); border-radius: 8px; padding: 8px 10px; font-size: 13.5px;
  font-family: inherit; background: var(--c-surface); color: var(--c-text); outline: none; width: 100%;
}
.input:focus { border-color: var(--c-primary); box-shadow: 0 0 0 3px rgba(22,56,47,.1); }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.form-grid .full { grid-column: 1 / -1; }
.form-row { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; }
.hint { font-size: 11.5px; color: var(--c-text-dim); }
/* v4.13: ⓘ-tooltips — forklarende tekst vises kun ved hover/fokus (title). */
.info-tip { display: inline-flex; align-items: center; color: var(--c-text-dim); cursor: help; vertical-align: middle; line-height: 0; border-radius: 50%; }
.info-tip:hover, .info-tip:focus-visible { color: var(--c-text); outline: none; }
.panel-title .info-tip { text-transform: none; letter-spacing: 0; }
.field-label .info-tip { margin-left: 2px; }
.form-section { display: flex; align-items: center; gap: 6px; margin: 10px 0 4px; font-size: 11.5px; font-weight: 650; color: var(--c-text); }
.mock-note {
  background: var(--c-accent-soft); border: 1px solid #E3D6C2; color: #7A6230;
  font-size: 12px; padding: 8px 11px; border-radius: 8px; display: flex; gap: 8px; align-items: flex-start;
}

/* ---------- Modal ---------- */
.modal-overlay {
  position: fixed; inset: 0; background: rgba(10,22,18,.4); z-index: 70;
  display: flex; align-items: flex-start; justify-content: center; padding: calc(6vh / var(--uiz)) 16px; overflow-y: auto;
}
.modal {
  background: var(--c-surface); border-radius: 14px; box-shadow: var(--shadow-pop);
  width: 520px; max-width: 100%; animation: popIn .15s ease-out;
}
.modal-wide { width: 760px; }
@keyframes popIn { from { transform: translateY(8px); opacity: .6; } to { transform: none; opacity: 1; } }
.modal-head { display: flex; align-items: center; padding: 15px 18px 0; }
.modal-title { font-size: 16px; font-weight: 750; flex: 1; }
.modal-body { padding: 14px 18px; }
.modal-actions { display: flex; justify-content: flex-end; gap: 9px; padding: 4px 18px 16px; }

/* ---------- Toast ---------- */
.toast-wrap { position: fixed; bottom: 18px; left: 50%; transform: translateX(-50%); z-index: 90; display: flex; flex-direction: column; gap: 8px; align-items: center; }
.toast {
  background: var(--c-primary-dark); color: #fff; padding: 10px 16px; border-radius: 10px;
  font-size: 13px; box-shadow: var(--shadow-pop); opacity: 0; transform: translateY(6px); transition: all .25s; max-width: min(480px, calc(92vw / var(--uiz)));
}
.toast.show { opacity: 1; transform: none; }
.toast-error { background: var(--c-danger); }
.toast-auto { background: var(--c-positive); } /* grøn: en auto-opgave blev udløst */

/* ---------- Login ---------- */
.login-page { height: calc(100vh / var(--uiz) - var(--test-baand, 0px)); height: calc(100dvh / var(--uiz) - var(--test-baand, 0px)); display: flex; align-items: center; justify-content: center; background: linear-gradient(150deg, var(--c-primary-dark), var(--c-primary) 70%); }
.login-card { background: var(--c-surface); border-radius: 16px; box-shadow: var(--shadow-pop); padding: 34px 34px 28px; width: 360px; max-width: calc(92vw / var(--uiz)); }
.login-logo { width: 46px; height: 46px; border-radius: 12px; background: var(--c-primary); color: var(--c-accent); font-weight: 700; font-size: 17px; display: flex; align-items: center; justify-content: center; margin-bottom: 14px; }
.login-title { font-size: 19px; font-weight: 750; }
.login-sub { color: var(--c-text-dim); font-size: 12.5px; margin: 3px 0 18px; }
.login-card .field { margin-bottom: 12px; }
.login-error { color: var(--c-danger); font-size: 12.5px; margin-bottom: 8px; }

/* ---------- Dashboard ---------- */
.dash { flex: 1; overflow-y: auto; padding: 14px 18px 30px; }
/* v3.52: 148px-minimum lader alle seks KPI-kort stå på ÉN række ned til
   ~1000px vinduesbredde — før stod det sjette kort alene på række to. */
.kpi-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); gap: 12px; margin-bottom: 14px; }
.kpi { background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 13px 15px; }
.kpi-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--c-text-dim); }
.kpi-value { font-size: 22px; font-weight: 750; margin-top: 4px; font-variant-numeric: tabular-nums; }
.kpi-sub { font-size: 11.5px; color: var(--c-text-dim); margin-top: 2px; }
.dash-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 12px; }
.dash-card { background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 14px 16px; grid-column: span 6; min-width: 0; }
.dash-card.third { grid-column: span 4; }
.dash-card.full { grid-column: span 12; }
.dash-title { font-size: 13px; font-weight: 700; margin-bottom: 2px; }
.dash-sub { font-size: 11.5px; color: var(--c-text-dim); margin-bottom: 10px; }
.dash-note { font-size: 11.5px; color: var(--c-text-dim); margin-top: 14px; max-width: 900px; }
.chart-svg { width: 100%; display: block; }
.chart-svg text { font-family: var(--font); }
.legend { display: flex; flex-wrap: wrap; gap: 5px 14px; margin-top: 8px; font-size: 11.5px; color: var(--c-text-dim); }
.legend-item { display: inline-flex; align-items: center; gap: 5px; }
.legend-swatch { width: 9px; height: 9px; border-radius: 3px; }

/* ---------- Settings ---------- */
.settings-wrap { flex: 1; overflow-y: auto; padding: 14px 18px 40px; max-width: 860px; }
.chips-editor { display: flex; flex-wrap: wrap; gap: 7px; }
.chips-editor .chip { font-size: 12px; padding: 5px 8px 5px 11px; display: inline-flex; gap: 6px; align-items: center; max-width: 340px; }
/* Kun TEKSTEN klippes — sletteknappen må aldrig kunne skubbes uden for chippen,
   uanset hvor lang værdien er (v3.24). */
.chips-editor .chip-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chip-x { cursor: pointer; opacity: .55; font-weight: 700; flex: 0 0 auto; padding: 0 2px; }
.chip-x:hover { opacity: 1; }
.color-row { display: flex; align-items: center; gap: 10px; padding: 6px 0; }
.color-row input[type=color] { width: 34px; height: 28px; border: 1px solid var(--c-border); border-radius: 6px; padding: 1px; background: none; cursor: pointer; }
.color-row .name { width: 130px; font-size: 12.5px; font-weight: 600; }
.color-row .hexval { font-size: 12px; color: var(--c-text-dim); font-variant-numeric: tabular-nums; width: 84px; }
.integration-row { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid #F0EEEA; flex-wrap: wrap; }
.badge-live { background: #E5F1EB; color: var(--c-positive); font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 99px; }
.badge-mock { background: var(--c-accent-soft); color: #7A6230; font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 99px; }

/* ---------- Opgaveliste ---------- */
.tasks-wrap { flex: 1; overflow-y: auto; padding: 10px 18px 30px; max-width: 1000px; }
/* v3.4: grupperet visning udnytter HELE skærmbredden */
.tasks-wrap.grouped { max-width: none; }
.tasks-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); gap: 12px; align-items: start; }
.task-group { background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 10px 13px; min-width: 0; }
.task-group-head { display: flex; align-items: center; gap: 7px; padding-bottom: 7px; margin-bottom: 6px; border-bottom: 1px solid var(--c-border); }
.task-group-name { font-weight: 700; font-size: 13.5px; text-align: left; }
.task-group-head .mini-count { font-size: 11px; background: var(--c-primary-soft); color: var(--c-primary); padding: 1px 8px; border-radius: 99px; font-weight: 700; }
.task-group .task-row { border: none; border-bottom: 1px solid var(--c-border); border-radius: 0; padding: 8px 0; margin-bottom: 0; }
.task-group .task-row:last-child { border-bottom: none; }
/* v3.62.1: flex-wrap + fast minimumsbredde på .task-main — i smalle paneler
   (profilsidernes kolonner, draweren) blev titlen ellers klemt til én smal
   ordsøjle, fordi dato (nowrap) og knapperne tog pladsen. Nu beholder titlen
   sin bredde, og dato/knapper ombrydes til en linje nedenunder. */
.task-row { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 11px; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 10px 13px; margin-bottom: 8px; }
.task-check { width: 19px; height: 19px; border-radius: 6px; border: 1.6px solid var(--c-border); background: var(--c-surface); cursor: pointer; flex: 0 0 auto; display: flex; align-items: center; justify-content: center; color: transparent; }
.task-check:hover { border-color: var(--c-positive); }
.task-check.done { background: var(--c-positive); border-color: var(--c-positive); color: #fff; }
.task-main { flex: 1 1 200px; min-width: 0; }
.deal-no { font-weight: 600; color: var(--c-text-dim); font-variant-numeric: tabular-nums; margin-right: 2px; }
.row-actions { white-space: nowrap; text-align: right; }
.row-actions .icon-btn { opacity: .28; }
tr:hover .row-actions .icon-btn { opacity: 1; }
.icon-btn-danger:hover { color: var(--c-danger); }
.task-row-editable .task-main { cursor: pointer; }
.task-row-editable:hover { border-color: var(--c-accent); }
.task-row-editable:hover .task-title { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }
.task-row-editable:hover .task-title.done { text-decoration: line-through; }
.task-title { font-weight: 600; font-size: 13.5px; }
.task-title.done { text-decoration: line-through; color: var(--c-text-dim); }
.task-meta { font-size: 11.5px; color: var(--c-text-dim); display: flex; gap: 10px; flex-wrap: wrap; margin-top: 2px; }
.task-due { font-size: 12px; font-weight: 600; white-space: nowrap; }
.task-due.overdue { color: var(--c-danger); }

/* ---------- Delopgaver (v3.62): Opgave → indrykket checkliste ---------- */
/* .task-block holder rækken + checklisten sammen, så gruppelister og grids
   behandler dem som ét element. Checklisten er indrykket med en lodret
   markering, så tilhørsforholdet kan ses uden at læse. */
.task-block { margin-bottom: 8px; }
.task-block .task-row { margin-bottom: 0; }
.task-fold {
  border: 0; background: none; cursor: pointer; flex: 0 0 auto; padding: 0 2px;
  color: var(--c-text-dim); font-size: 12px; line-height: 1;
  transition: transform .12s; transform-origin: 45% 50%;
}
.task-fold.open { transform: rotate(90deg); }
.task-fold:hover { color: var(--c-text); }
.sub-progress { font-variant-numeric: tabular-nums; font-weight: 700; }
/* v3.62.2: dato + handlinger som ÉN samlet hale — margin-left:auto holder den
   til højre, og ved pladsmangel ombrydes den SAMLET til linjen nedenunder
   (før ombrød hvert element for sig og landede hulter til bulter). */
.task-tail { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-wrap: wrap; max-width: 100%; min-width: 0; }
/* v3.65: halen kan selv ombryde (stadie-pille + knapper) — ellers var den
   bredere end rækken på en telefon og gav vandret scroll. */
/* "+ Delopgave"-knappen har tekst (et nøgent + var ikke til at afkode) og er
   kompakt, så halen ikke vokser. */
.sub-add-btn { padding: 3px 8px; font-size: 11.5px; gap: 4px; color: var(--c-text-dim); }
.sub-add-btn:hover { color: var(--c-text); }
.subtask-block {
  margin: 0 0 0 40px; padding: 2px 0 4px 14px;
  border-left: 2px solid var(--c-border);
}
.task-group .subtask-block { margin-left: 30px; border-bottom: 1px solid var(--c-border); }
.task-group .task-block { margin-bottom: 0; }
.task-group .task-block .task-row { border-bottom: none; }
.subtask-row { display: flex; align-items: center; gap: 9px; padding: 4.5px 0; }
.subtask-row.done .sub-title { text-decoration: line-through; color: var(--c-text-dim); }
.sub-check { width: 15px; height: 15px; border-radius: 5px; }
.sub-main { flex: 1; min-width: 0; cursor: pointer; }
.sub-title { font-size: 12.5px; font-weight: 500; }
.sub-main:hover .sub-title { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }
.subtask-row.done .sub-main:hover .sub-title { text-decoration: line-through; }
.sub-due { font-size: 11px; }
.sub-edit { opacity: .28; width: 26px; height: 26px; }
.subtask-row:hover .sub-edit { opacity: 1; }
.subtask-add { padding: 3px 0 1px; }
.subtask-add-link { font-size: 12px; color: var(--c-text-dim); }
.subtask-add-link:hover { color: var(--c-info); }
.subtask-input {
  width: 100%; max-width: 340px; padding: 4.5px 9px; font-size: 12.5px;
  border-style: dashed; background: transparent;
}
.subtask-input:focus { border-style: solid; background: var(--c-surface); }

/* ---------- Selskabshændelser (flag) ---------- */
.evt-flag {
  display: inline-flex; align-items: center; gap: 3px; font-size: 11px; font-weight: 800;
  color: #fff; background: var(--c-danger); border-radius: 99px; padding: 1.5px 7px 1.5px 5px;
}
/* v3.59: hændelsesfilter i toolbaren — tæller og filterknap i ét.
   Slukket: dæmpet ramme med rødt flag. Tændt: samme røde flade som .evt-flag
   på kortene, så det er utvetydigt, at boardet er filtreret. */
.evt-filter-btn { gap: 5px; }
.evt-filter-btn .icn { color: var(--c-danger); }
.evt-filter-btn:disabled .icn { color: var(--c-text-dim); }
.evt-filter-btn.evt-filter-on {
  background: var(--c-danger); border-color: var(--c-danger); color: #fff;
}
.evt-filter-btn.evt-filter-on .icn { color: #fff; }
.evt-filter-btn.evt-filter-on:hover:not(:disabled) { background: var(--c-danger); filter: brightness(1.1); }

.badge-new { background: var(--c-danger); color: #fff; font-size: 9.5px; font-weight: 800; padding: 1px 6px; border-radius: 99px; letter-spacing: .3px; }
.event-item { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px solid #F0EEEA; font-size: 13px; }
.event-item:last-child { border-bottom: 0; }
.evt-icon { background: var(--c-accent-soft); color: #7A6230; }

/* ---------- Org chart (ejerstruktur) ---------- */
.org-chart { display: flex; flex-direction: column; align-items: center; padding: 4px 0; }
.org-tier-label { font-size: 10px; text-transform: uppercase; letter-spacing: .6px; color: var(--c-text-dim); font-weight: 700; margin-bottom: 6px; text-align: center; }
.org-tier { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; max-width: 100%; }
.org-node {
  border: 1px solid var(--c-border); background: var(--c-surface); border-radius: 9px;
  padding: 6px 11px; font-size: 12px; text-align: center; max-width: 190px;
  cursor: pointer; box-shadow: var(--shadow-card); transition: border-color .12s;
}
.org-node:hover { border-color: var(--c-primary); }
.org-node.center { background: var(--c-primary); color: #fff; cursor: default; font-weight: 700; padding: 10px 18px; font-size: 13px; }
.org-node.person { border-radius: 99px; }
.org-note { font-size: 10px; color: var(--c-text-dim); margin-top: 1px; }
.org-node.center .org-note { color: rgba(255,255,255,.72); font-weight: 400; }
.org-connector { width: 1.5px; height: 16px; background: #C9CFC9; margin: 3px auto; }

/* ---------- Relationsgraf (v3.74) ----------
   Selskabet i midten, ring 1 = direkte relationer, ring 2 = andre CRM-
   selskaber (rav). Personer er cirkler, selskaber afrundede kasser. Tekst i
   ink-farver — farven på kanten/rammen bærer betydningen. */
/* v3.77: grafen er nu fanen "Relationer" i draweren (før v3.74–3.76 lå den som
   panel til venstre for draweren, og draweren fyldte 65 vw). */
.rel-panel .panel-title { position: sticky; top: 0; background: var(--c-surface); z-index: 1; padding-bottom: 6px; margin-top: -2px; }
.rel-graph { max-width: 1100px; margin: 0 auto; overflow-x: auto; } /* dybe grafer: SVG'en har min-width og scroller vandret */
.rel-svg { width: 100%; display: block; font-family: var(--font); }
.rel-ring { fill: none; stroke: #E5E7E4; stroke-width: 1; }
.rel-ring-2 { stroke-dasharray: 3 4; }
.rel-sector { font-size: calc(9.5px * var(--rel-k, 1)); font-weight: 700; letter-spacing: .7px; fill: var(--c-text-dim); pointer-events: none; paint-order: stroke; stroke: var(--c-surface); stroke-width: 4px; stroke-linejoin: round; }
.rel-edge { fill: none; stroke: #C6CBC6; stroke-width: 1.2; }
.rel-edge-ownr { stroke: #B9C6C4; }
.rel-edge-r2 { stroke: var(--c-accent); stroke-width: 1.6; }
.rel-edge-weak { stroke-dasharray: 4 4; }
.rel-edge-cross { stroke-width: 1.3; opacity: .85; } /* delt person mellem to selskaber (ikke træ-kant) */
.rel-depth { font-size: calc(8.5px * var(--rel-k, 1)); font-weight: 800; fill: #8F7443; pointer-events: none; } /* skridt fra centrum på selskaber ≥2 væk */
.rel-dot-shared { fill: var(--c-accent); stroke: #fff; stroke-width: 1; } /* personen binder flere selskaber sammen */
.rel-node.rel-d3 .rel-shape, .rel-node.rel-d4 .rel-shape, .rel-node.rel-d5 .rel-shape, .rel-node.rel-d6 .rel-shape { opacity: .92; }
.rel-node .rel-shape { fill: var(--c-surface); stroke: var(--c-border); stroke-width: 1.2; transition: stroke .12s, fill .12s; }
.rel-node.rel-click { cursor: pointer; }
.rel-node.rel-click:hover .rel-shape { stroke: var(--c-primary); stroke-width: 1.8; }
.rel-person .rel-shape { fill: var(--c-primary-soft); stroke: #B8CCC9; }
.rel-person.rel-crm .rel-shape { fill: var(--c-primary); stroke: var(--c-primary); }
.rel-person.rel-crm .rel-initials { fill: #fff; }
.rel-initials { font-size: calc(11px * var(--rel-k, 1)); font-weight: 700; fill: var(--c-primary); pointer-events: none; }
.rel-company.rel-ext .rel-shape { stroke-dasharray: 3 2; }
.rel-company.rel-crm .rel-shape { stroke: var(--c-primary); }
.rel-r2 .rel-shape { fill: var(--c-accent-soft); stroke: var(--c-accent); stroke-width: 1.5; }
/* v3.75: konkurrent (kapaciteten 'Konkurrent' på dealen) — rød kasse, uanset om selskabet er i CRM eller ej */
.rel-node.rel-competitor .rel-shape { fill: #FBEDEA; stroke: var(--c-danger); stroke-width: 1.7; stroke-dasharray: none; }
.rel-node.rel-competitor.rel-click:hover .rel-shape { stroke: #8A3427; }
.rel-swatch-competitor { background: #FBEDEA; border-color: var(--c-danger); }
.org-cap-label.org-cap-competitor { color: var(--c-danger); }
.rel-r2.rel-click:hover .rel-shape { stroke: #8F7443; }
.rel-center .rel-shape { fill: var(--c-primary); stroke: var(--c-primary-dark); }
.rel-center .rel-label { fill: #fff; font-size: calc(13px * var(--rel-k, 1)); font-weight: 750; }
.rel-center .rel-sub { fill: rgba(255,255,255,.75); }
.rel-label { font-size: calc(11px * var(--rel-k, 1)); font-weight: 650; fill: var(--c-text); pointer-events: none; }
.rel-sub { font-size: calc(9.5px * var(--rel-k, 1)); fill: var(--c-text-dim); pointer-events: none; }
.rel-dot-deal { fill: var(--c-info); }
.rel-dot-profile { fill: var(--c-positive); stroke: #fff; stroke-width: 1; }
.rel-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; font-size: 11.5px; color: var(--c-text-dim); padding: 6px 0 2px; border-top: 1px solid #F0EEEA; }
.rel-leg { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.rel-leg b { color: var(--c-text); }
.rel-sep { width: 1px; height: 14px; background: var(--c-border); }
.rel-swatch { width: 12px; height: 12px; border-radius: 3px; border: 1.5px solid var(--c-border); background: var(--c-surface); display: inline-block; }
.rel-swatch-crm { background: var(--c-accent-soft); border-color: var(--c-accent); }
.rel-swatch-person { border-radius: 50%; background: var(--c-primary); border-color: var(--c-primary); }
.rel-swatch-ext { border-style: dashed; }
.rel-conn { padding: 8px 0; border-bottom: 1px solid #F0EEEA; font-size: 13px; }
.rel-conn:last-child { border-bottom: 0; }
.rel-conn-name { font-weight: 700; color: var(--c-text); padding: 0; }
.rel-paths { margin-top: 4px; display: flex; flex-direction: column; gap: 2px; }
.rel-path { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--c-text); flex-wrap: wrap; padding-left: 4px; }
.rel-path .rel-kind { color: var(--c-text-dim); }
.rel-path .rel-src { font-size: 9.5px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; color: var(--c-text-dim); background: #F1EFEA; border-radius: 4px; padding: 0 5px; margin-left: 2px; }
.rel-compact .rel-conn { font-size: 12.5px; }

.seg { display: inline-flex; background: #ECE9E4; border-radius: 9px; padding: 3px; gap: 2px; }
.seg button { border: 0; background: none; padding: 5.5px 13px; font-size: 12.5px; font-weight: 600; border-radius: 7px; cursor: pointer; color: var(--c-text-dim); }
.seg button.active { background: var(--c-surface); color: var(--c-text); box-shadow: 0 1px 3px rgba(0,0,0,.09); }

/* Persondropdown (Opgaver-fanen): Mine/Alle/flere personer */
.dd-wrap { position: relative; display: inline-block; }
.dd-btn { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; }
.dd-caret { font-size: 9px; opacity: .65; }
.dd-panel {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 60;
  background: var(--c-surface); border: 1px solid var(--c-border); border-radius: 10px;
  box-shadow: 0 10px 28px rgba(0,0,0,.16); padding: 6px; min-width: 220px;
  max-height: 340px; overflow: auto;
}
.dd-item {
  display: flex; align-items: center; gap: 9px; width: 100%; border: 0; background: none;
  padding: 7px 9px; border-radius: 7px; cursor: pointer; font-size: 13px;
  color: var(--c-text); text-align: left;
}
.dd-item:hover { background: var(--c-primary-soft); }
.dd-item .dd-check {
  width: 15px; height: 15px; border: 1.5px solid var(--c-border); border-radius: 4px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 10px; line-height: 1; color: #fff; flex: none; background: var(--c-surface);
}
.dd-item.on { font-weight: 650; }
.dd-item.on .dd-check { background: var(--c-primary); border-color: var(--c-primary); }
.dd-sep { height: 1px; background: var(--c-border); margin: 5px 4px; }
.dd-head { font-size: 11px; font-weight: 650; color: var(--c-text-dim); text-transform: uppercase; letter-spacing: .04em; padding: 4px 9px 2px; }

/* Virksomhedsvælger (v3.6): søg først i universet — opret kun, hvis intet passer */
.company-picker { display: block; }
.picker-results {
  margin-top: 6px; max-height: 190px; overflow-y: auto;
  border: 1px solid var(--c-border); border-radius: var(--radius-sm); padding: 4px; background: var(--c-bg);
}
.picker-results .search-item.picked { background: var(--c-primary-soft); box-shadow: inset 2px 0 0 var(--c-primary); }
.picker-create {
  display: flex; align-items: center; gap: 7px; width: 100%; text-align: left;
  border: 1px dashed var(--c-border); background: var(--c-surface); color: var(--c-text);
  padding: 8px 10px; border-radius: var(--radius-sm); cursor: pointer; font-size: 13px; font-family: inherit;
  margin-top: 4px;
}
.picker-create:hover { border-color: var(--c-primary); background: var(--c-primary-soft); }
.picker-create .dim { margin-left: auto; }
.picker-status { display: flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 12.5px; min-height: 20px; }
.picker-status.ok { color: var(--c-positive); }
.picker-status.new { color: var(--c-primary); }
.picker-new { margin-top: 8px; padding: 9px 10px; border: 1px solid var(--c-border); border-radius: var(--radius-sm); background: var(--c-accent-soft); }
.picker-new .form-grid { margin: 0; }

/* Telefonnumre (v3.7): flere numre pr. person, ét primært (★) */
.phone-editor .phone-row {
  display: grid; grid-template-columns: 150px 1fr auto auto; gap: 6px;
  align-items: center; margin-bottom: 6px;
}
.phone-editor .phone-row.is-primary .input { border-color: var(--c-primary); }
.phone-star { font-size: 15px; line-height: 1; color: var(--c-text-dim); }
.phone-star.on { color: var(--c-accent); }
.phone-list { display: flex; flex-direction: column; gap: 4px; }
.phone-item {
  display: flex; align-items: center; gap: 8px; padding: 4px 0;
  border-bottom: 1px solid var(--c-border);
}
.phone-item:last-child { border-bottom: 0; }
.phone-item.is-primary a.ext { font-weight: 650; }
.phone-item .icon-btn { width: 26px; height: 26px; }

/* Global søgning (v3.8): grupperede resultater i topbaren */
.search-group {
  font-size: 10.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
  color: var(--c-text-dim); padding: 8px 10px 3px; border-top: 1px solid var(--c-border);
}
.search-group:first-child { border-top: 0; padding-top: 4px; }
.search-results .search-item .icn { position: static; vertical-align: -2px; color: var(--c-text-dim); } /* v3.90: position static — .topbar-search .icn gjorde resultaternes ikoner absolutte (de lå oven i gruppeoverskriften) */

/* Dubletvagt på personer (v3.8) */
.dup-warn {
  grid-column: 1 / -1; background: var(--c-accent-soft); border: 1px solid #E3D6C2;
  border-radius: var(--radius-sm); padding: 8px 10px; font-size: 12.5px;
}
.dup-row { display: flex; align-items: center; gap: 8px; padding: 2px 0; flex-wrap: wrap; }

/* Datakvalitet (v3.8) */
.dq-wrap { padding: 4px 18px 20px; overflow-y: auto; }
.dq-summary {
  display: flex; align-items: center; gap: 14px; background: var(--c-surface);
  border: 1px solid var(--c-border); border-radius: var(--radius); padding: 12px 16px; margin-bottom: 12px;
}
.dq-summary.clean .dq-big { color: var(--c-positive); }
.dq-big { font-size: 30px; font-weight: 700; color: var(--c-warning); min-width: 44px; text-align: center; }
.dq-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(430px, 1fr)); gap: 12px; align-items: start; }
.dq-panel { padding: 0; overflow: hidden; }
.dq-head {
  display: flex; align-items: center; gap: 11px; width: 100%; text-align: left;
  border: 0; background: none; padding: 12px 14px; cursor: pointer; font-family: inherit; font-size: 13.5px; color: var(--c-text);
}
.dq-head:hover { background: var(--c-primary-soft); }
.dq-head .dq-caret { transition: transform .15s; color: var(--c-text-dim); }
.dq-head.open .dq-caret { transform: rotate(180deg); }
.dq-count {
  min-width: 30px; height: 26px; padding: 0 7px; border-radius: 8px; font-weight: 700; font-size: 13px;
  display: inline-flex; align-items: center; justify-content: center; flex: none;
}
.dq-count.warn { background: #F7E7E3; color: var(--c-danger); }
.dq-count.info { background: var(--c-accent-soft); color: #7A6230; }
.dq-count.zero { background: #E5F1EB; color: var(--c-positive); }
.dq-body { border-top: 1px solid var(--c-border); max-height: 340px; overflow-y: auto; }
.dq-item {
  display: flex; align-items: center; gap: 9px; padding: 7px 14px;
  border-bottom: 1px solid #F0EEEA; font-size: 13px; flex-wrap: wrap;
}
.dq-item:last-child { border-bottom: 0; }
.dq-item:hover { background: var(--c-bg); }
.dq-merge-row {
  display: flex; align-items: flex-start; gap: 9px; padding: 9px 10px; cursor: pointer;
  border: 1px solid var(--c-border); border-radius: var(--radius-sm); margin-bottom: 6px;
}
.dq-merge-row.picked { border-color: var(--c-primary); background: var(--c-primary-soft); }

.dim { color: var(--c-text-dim); }
.small { font-size: 12px; }
.mt8 { margin-top: 8px; }
.mt12 { margin-top: 12px; }
.flex { display: flex; align-items: center; gap: 8px; }
.flex-wrap { flex-wrap: wrap; }
.spacer { flex: 1; }
a.btn, a.btn:hover { text-decoration: none; } /* v4.2.2: link-knapper (Excel) stod understreget */
a.ext { color: var(--c-info); text-decoration: none; }
a.ext:hover { text-decoration: underline; }

/* ---------- Responsivt (tablet) ---------- */
@media (max-width: 1180px) {
  .col { min-width: 200px; }
  .topbar-search input { width: 160px; }
  .brand-name { display: none; }
  .brand-org { display: none; }
}
@media (max-width: 900px) {
  /* v3.55: to rækker — brand/knapper/søgning øverst, navigationen på egen
     række med vandret scroll. Før scrollede hele baren (og klippede
     søgeresultaterne). */
  .topbar { flex-wrap: wrap; height: auto; padding: 8px 10px; row-gap: 2px; gap: 8px; }
  .topbar .nav { order: 10; flex: 1 0 100%; overflow-x: auto; scrollbar-width: none; margin: 0; }
  .topbar .nav::-webkit-scrollbar { display: none; }
  .topbar-search { flex: 1 1 140px; }
  .subnav { overflow-x: auto; scrollbar-width: none; padding: 8px 10px 0; }
  .subnav::-webkit-scrollbar { display: none; }
  .subnav .nav-pill { white-space: nowrap; }
  .nav-pill { padding: 7px 9px; font-size: 12.5px; }
  .drawer { width: calc(100vw / var(--uiz)); }
  .form-grid { grid-template-columns: 1fr; }
  .dash-card, .dash-card.third { grid-column: span 12; }
  .board { padding: 8px 10px 12px; }
  .view-toolbar { padding: 10px 12px 2px; }
}

/* ---------- Mobil (v3.55) — desktopvisningen er urørt ---------- */
@media (max-width: 640px) {
  /* Grids med faste minimumsbredder ville tvinge vandret klipning på en
     smal skærm — én kolonne i stedet. */
  .tasks-grid, .dq-grid, .card-grid { grid-template-columns: 1fr; }
  .kv-grid, .drawer .kv-grid { grid-template-columns: 1fr 1fr; }
  .col { min-width: 250px; }
  .grid-wrap, .dash, .dq-wrap, .settings-wrap, .tasks-wrap, .profile-grid { padding-left: 12px; padding-right: 12px; }
  .drawer-head { padding: 12px 12px 0; }
  .drawer-body { padding: 12px 12px 30px; }
  .modal-overlay { padding: calc(3vh / var(--uiz)) 10px; }
  .view-title { font-size: 16px; }
  /* iOS zoomer automatisk ind på felter med skrift under 16px — undgå det. */
  .input, textarea.input, .topbar-search input { font-size: 16px; }
  /* Fingervenlige mål på de mindste knapper. */
  .icon-btn { width: 38px; height: 38px; }
  .task-check { width: 22px; height: 22px; }
  /* Alt på topbarens første række skal kunne stå på 375px: mindre luft,
     mindre Ny Deal-knap, og søgefeltet må krympe helt. */
  .topbar { gap: 6px; }
  .topbar .btn { padding: 6px 9px; font-size: 12.5px; }
  .topbar-search { min-width: 0; flex: 1 1 80px; }
  /* Kompakte kanbankort: tema- og branchechips skjules — navn, prioritet,
     deal type, beløb og ejer er nok på en telefon (brugerens valg 27.08). */
  .card .card-chips .chip { display: none; }
  .card .card-chips .chip-accent { display: block; }
  /* Opgaverækker: titlen må ikke klemmes til ét ord pr. linje af dato og
     knapper — rækken ombrydes, og titlen får mindst 200px. */
  .task-row { flex-wrap: wrap; row-gap: 4px; }
  .task-main { flex: 1 1 200px; }
}

/* ---------- v1.5 ---------- */

/* Til-/fravalgs-chips (investeringstemaer, situationer): utvetydig tilstand */
.chip-pick { display: inline-flex; align-items: center; gap: 5px; border: 1.5px solid transparent; }
.chip-pick .chip-tick { font-weight: 800; font-size: 11px; line-height: 1; }
.chip-pick.chip-on { background: var(--c-primary); color: #fff; border-color: var(--c-primary); }
.chip-pick.chip-on .chip-tick { color: var(--c-accent); }
.chip-pick.chip-off { background: var(--c-surface); color: var(--c-text-dim); border: 1.5px dashed var(--c-border); }
button.chip-pick { cursor: pointer; font: inherit; font-size: 11.5px; padding: 3px 10px; }
button.chip-pick.chip-off:hover { border-color: var(--c-primary); color: var(--c-primary); }
button.chip-pick.chip-on:hover { opacity: .88; }

/* Nøgletals-fliser (EV-estimat m.v. på Økonomi-fanen) */
.stat-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
.stat-tile { background: var(--c-primary-soft); border-radius: 10px; padding: 10px 12px; min-width: 0; }
.stat-label { font-size: 11px; text-transform: uppercase; letter-spacing: .5px; color: var(--c-text-dim); font-weight: 700; }
.stat-value { font-size: 19px; font-weight: 750; margin-top: 2px; font-variant-numeric: tabular-nums; }
.stat-sub { font-size: 11px; color: var(--c-text-dim); margin-top: 1px; }

/* Finansiel oversigt: mange talkolonner -> kompakt + vandret scroll ved behov.
   v3.52: egen lodret scroll m. loft + sticky kolonneoverskrifter — 13 rækker
   tal uden synlige overskrifter kan ikke aflæses. */
.fin-scroll { overflow: auto; max-height: 430px; }
.fin-scroll .table th { position: sticky; top: 0; background: var(--c-surface); z-index: 2; }
.fin-table { font-size: 12.5px; min-width: 640px; }
.fin-table th, .fin-table td { padding: 7px 7px; }
.fin-table th:first-child, .fin-table td:first-child { padding-left: 10px; }

/* v4.13: Årsregnskabet som opstilling (aarsregnskab.js) — år som kolonner,
   poster som rækker i afsnit, som i årsrapporten. Første kolonne (posten) er
   sticky, så lange opstillinger kan rulles vandret uden at miste etiketten.
   Forklaringer står kun som title-tooltips. */
.aar-scroll { max-height: none; }
.aar-table { font-size: 12.5px; min-width: 520px; }
.aar-table th, .aar-table td { padding: 4px 10px; border-bottom: 0; white-space: nowrap; }
.aar-table th.aar-label, .aar-table td.aar-label { position: sticky; left: 0; background: var(--c-surface); z-index: 1; min-width: 230px; max-width: 320px; white-space: normal; }
.aar-table thead th { border-bottom: 1.5px solid var(--c-border); padding-bottom: 6px; vertical-align: bottom; z-index: 3; }
.aar-table thead th.aar-label { z-index: 4; }
.aar-table th.aar-col { text-transform: none; letter-spacing: 0; font-size: 12.5px; color: var(--c-text); min-width: 86px; }
.aar-colhead { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; }
.aar-tag { font-size: 10px; font-weight: 600; color: var(--c-text-dim); text-transform: uppercase; letter-spacing: .4px; }
.aar-manual .aar-colhead > span:first-child { font-style: italic; }
.aar-colbtns { display: flex; justify-content: flex-end; gap: 0; margin-top: 2px; opacity: 0; transition: opacity .12s; }
.aar-table th.aar-col:hover .aar-colbtns, .aar-table th.aar-col:focus-within .aar-colbtns { opacity: 1; }
.aar-colbtn { width: 20px; height: 20px; }
.aar-sec td { padding: 14px 10px 5px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .6px; color: var(--c-text-dim); border-bottom: 1px solid var(--c-border); position: sticky; left: 0; background: var(--c-surface); }
.aar-sec:first-child td { padding-top: 6px; }
.aar-row td { border-bottom: 1px solid #F3F1EE; }
.aar-sub td.aar-label { padding-left: 24px; color: var(--c-text-dim); font-size: 12px; }
.aar-sub td.num { color: var(--c-text-dim); font-size: 12px; }
.aar-total td { font-weight: 700; }
.aar-total td { border-top: 1px solid var(--c-border); }
.aar-grand td { font-size: 13.5px; border-top: 1.5px solid var(--c-text-dim); border-bottom: 1.5px solid var(--c-text-dim) !important; padding-top: 6px; padding-bottom: 6px; }
.aar-neg { color: var(--c-danger); }
.aar-gap { opacity: .72; }
.aar-derived { color: var(--c-text-dim); margin-left: 3px; }
.aar-m { font-size: 10px; color: var(--c-text-dim); margin-left: 3px; }
.aar-tools { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.aar-seg button { padding: 4px 11px; font-size: 12px; }
/* v4.15: udregnede poster og nøgletal foldes ud med delposterne; kildelinks nederst */
.aar-foldable td.aar-label { cursor: pointer; }
.aar-fold { border: 0; background: none; padding: 0 4px 0 0; margin-left: -2px; color: var(--c-text-dim); font-size: 11px; cursor: pointer; line-height: 1; }
.aar-foldable:hover .aar-fold, .aar-open .aar-fold { color: var(--c-text); }
.aar-part td { font-size: 12px; color: var(--c-text-dim); background: var(--c-accent-soft); }
.aar-part td.aar-label { padding-left: 26px; font-style: italic; }
.aar-part-sub td { font-style: normal; border-top: 1px dashed var(--c-border); }
.aar-op { display: inline-block; width: 12px; color: var(--c-text-dim); font-style: normal; }
.aar-links { margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--c-border); font-size: 12px; display: grid; gap: 4px; }
.aar-links-title { font-weight: 650; color: var(--c-text-dim); font-size: 11px; text-transform: uppercase; letter-spacing: .4px; }
.aar-links-row { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: baseline; }
.aar-links-name { font-weight: 650; min-width: 120px; }
.aar-links-year { white-space: nowrap; }

/* Brandfarver: egen-tegnet farveprøve m. usynlig native picker ovenpå + HEX-felt */
.swatch-wrap { position: relative; width: 36px; height: 28px; flex: 0 0 auto; display: inline-block; }
.swatch { position: absolute; inset: 0; border: 1px solid var(--c-border); border-radius: 6px; }
.swatch-input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; padding: 0; border: 0; }
.hexfield { width: 96px; font-size: 12px; padding: 4px 8px; font-variant-numeric: tabular-nums; text-transform: uppercase; }
.input-error { border-color: var(--c-danger) !important; background: #FDF6F4; }

/* Beskrivelse (v3.18): fri tekst i læsetilstand. pre-wrap bevarer
   afsnit og linjeskift, som brugeren har skrevet dem — teksten er noter, ikke
   brødtekst, og punktopstillinger skal overleve. */
.notes-body {
  white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13.5px; line-height: 1.6;
  color: var(--c-text); max-width: 78ch;
}
.notes-wrap textarea.input { font-family: inherit; font-size: 13.5px; }

/* Noteliste (v3.19): daterede noter under beskrivelsen. Bordede rækker frem for
   kort — det er en tæt liste, man skimmer, ikke objekter man klikker på. */
.note-list textarea.input { font-family: inherit; font-size: 13.5px; }
.note-item { padding: 10px 0; border-top: 1px solid var(--c-border); }
.note-item:first-of-type { margin-top: 10px; }
.note-meta {
  display: flex; align-items: center; gap: 8px; margin-bottom: 4px;
  font-size: 11.5px; color: var(--c-text-dim);
}
.note-meta b { font-weight: 650; color: var(--c-text); }
.note-meta .spacer { flex: 1; }

/* Deal-prioritet: farvet ikon (⌃⌃ Høj / = Medium / ⌄⌄ Lav) i stedet for prik */
.prio-icn { display: inline-flex; flex: 0 0 auto; align-items: center; }
.prio-icn svg { stroke-width: 2.4; }

/* Prioritets-BADGE (v3.17) — kanban-kortene sorteres efter prioritet, så den
   skal kunne aflæses uden at lede. Farvet flade + tekst frem for en tynd streg.
   Høj får en kraftigere kant, fordi det er den, man scanner efter. */
.prio-badge {
  display: inline-flex; align-items: center; gap: 3px; flex: 0 0 auto;
  padding: 2px 7px 2px 5px; border-radius: 999px;
  font-size: 10.5px; font-weight: 750; letter-spacing: .3px; text-transform: uppercase;
  line-height: 1.4; white-space: nowrap;
}
.prio-badge .prio-icn svg { stroke-width: 2.8; }
.prio-badge.prio-high { background: #F7E2DD; color: var(--c-danger); box-shadow: inset 0 0 0 1.5px rgba(176,74,56,.45); }
.prio-badge.prio-medium { background: #FAEEDA; color: var(--c-warning); box-shadow: inset 0 0 0 1px rgba(183,121,31,.3); }
.prio-badge.prio-low { background: #E7EEF5; color: var(--c-info); box-shadow: inset 0 0 0 1px rgba(51,98,140,.25); }

/* v3.36: dæmpet prioritet på kanban-kortene — ingen farvet flade/kant, mindre
   skrift. Farvestriben i kortets venstre kant er fortsat det perifere signal. */
.prio-badge.prio-mini {
  background: transparent; box-shadow: none; padding: 2px 2px 2px 0;
  font-size: 10px; font-weight: 650; letter-spacing: .2px; opacity: .85;
}

/* Prioritetsstriben i kortets venstre kant: en anden kanal end badget, så
   grupperne kan ses i periferien, mens man scanner kolonnen. */
.card.card-prio-High { --prio-stripe: var(--c-danger); }
.card.card-prio-Medium { --prio-stripe: var(--c-warning); }
.card.card-prio-Low { --prio-stripe: var(--c-info); }
.card[class*="card-prio-"] { box-shadow: inset 3px 0 0 var(--prio-stripe), var(--shadow-card); }
.card[class*="card-prio-"]:hover { box-shadow: inset 3px 0 0 var(--prio-stripe), 0 3px 10px rgba(15,30,25,.12); }

/* Skillelinje mellem prioritetsgrupperne i kolonnen */
.card.prio-group-start { margin-top: 10px; padding-top: 12px; border-top: 1px dashed var(--c-border); }
.col-body .card.prio-group-start:first-child { margin-top: 0; padding-top: 10px; border-top: 0; }

/* ================= v3 (fase 3-4): profilsider, relationslister, tabelfaner ================= */

/* Profilsider (Virksomheder/Personer). v3.54: FAST 4-kolonne grid hvor hvert
   panel fylder 2 kolonner — auto-fit gav 5-6 smalle kolonner på ultrabrede
   skærme, og layoutet lignede spredehagl. Fuldbreddepaneler sætter selv
   grid-column: 1 / -1 (inline). Under 1150px: én kolonne. */
.profile-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; align-items: start; flex: 1; overflow-y: auto; padding: 8px 18px 20px; }
.profile-grid > .panel { grid-column: span 2; }
/* v3.74.3: virksomhedsprofilen delt 2/5 (relationsgraf, venstre, sticky) og
   3/5 (resten af overblikket i panelgriddet). .profile-split er scroll-
   containeren; venstre kolonne klæber i toppen og scroller selv, hvis
   forbindelseslisten er længere end skærmen. */
.profile-split { display: grid; grid-template-columns: 2fr 3fr; gap: 12px; align-items: start; flex: 1; min-height: 0; overflow-y: auto; padding: 8px 18px 20px; }
.profile-split > * { min-width: 0; }
.profile-left { position: sticky; top: 0; max-height: calc(100vh / var(--uiz) - 150px); overflow-y: auto; }
.profile-left > .panel { margin-bottom: 0; }
.profile-split > .profile-grid { flex: none; overflow: visible; padding: 0; }
@media (max-width: 1150px) {
  .profile-split { grid-template-columns: 1fr; }
  .profile-left { position: static; max-height: none; }
}
/* v3.55: uden min-width:0 dikterer det bredeste panels MIN-INDHOLD sporet —
   økonomitabellen (min 640px) gjorde ALLE paneler 672px brede på en telefon.
   Med 0 scroller tabellen i .fin-scroll i stedet. */
.profile-grid > * { min-width: 0; }
.profile-grid .panel { margin-bottom: 0; }
@media (max-width: 1150px) {
  .profile-grid { grid-template-columns: 1fr; }
  .profile-grid > .panel { grid-column: auto; }
}
/* v3.54: grafen må ikke skalere med i det uendelige på brede skærme — SVG'en
   følger containerbredden (viewBox), så et loft på bredden er også et loft på
   højden. */
/* v3.85: fast flex-basis (320px) i stedet for auto. Grafen tegnes nu i plottets
   målte bredde med fast højde, så med auto ville SVG'ens egen bredde styre
   plottets bredde (og skubbe listen ned under grafen). Listen falder stadig ned,
   når rækken er smallere end 320 + 14 + 210 px. */
.fin-plot { flex: 1 1 320px; min-width: 0; max-width: 1100px; }

/* Relationsrækker (deals/personer/virksomheder på profiler + Organisationer-panelet) */
.rel-row { display: flex; align-items: center; gap: 8px; padding: 7px 0; border-bottom: 1px solid #F0EEEA; }
.rel-row:last-child { border-bottom: 0; }
.rel-main { flex: 1; min-width: 0; }
.rel-main .btn-link { padding: 0; text-align: left; }

/* Kapacitets-gruppelabel i Organisationer-panelet */
.org-cap-label { font-size: 11px; text-transform: uppercase; letter-spacing: .5px; color: var(--c-text-dim); font-weight: 700; margin: 8px 0 2px; display: flex; align-items: center; gap: 6px; }
.org-cap-label .mini-count { background: var(--c-border); color: var(--c-text-dim); border-radius: 99px; padding: 0 6px; font-size: 10px; }

/* Liste-tabeller (Virksomheder-/Personer-fanerne) */
.list-table { font-size: 13px; }
.list-table th { position: sticky; top: 0; background: var(--c-surface); z-index: 1; user-select: none; }
.list-table tbody tr:hover td { background: var(--c-primary-soft); }
.list-table td { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.list-table td:first-child { white-space: normal; }

/* Interaktioner: typechip i historiklisten */
.log-main .chip.small { font-size: 10.5px; padding: 1px 7px; vertical-align: 1px; }

/* Økonomi-fanens graf: nøgletals-vælger ved siden af plottet (v3.13).
   Listen falder ned under grafen på smalle skærme i stedet for at klemme den. */
.fin-chart-row { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; }
.fin-metrics { flex: 0 0 210px; display: flex; flex-direction: column; gap: 1px; padding-top: 18px; }
.fin-metric { display: flex; align-items: center; gap: 8px; padding: 5px 8px; border-radius: 7px; cursor: pointer; font-size: 12.5px; line-height: 1.25; }
.fin-metric:hover { background: var(--c-primary-soft); }
.fin-metric.picked { background: var(--c-primary-soft); font-weight: 650; }
.fin-metric.disabled { opacity: .45; cursor: not-allowed; }
.fin-metric.disabled:hover { background: transparent; }
.fin-metric input { accent-color: var(--c-primary); margin: 0; flex: 0 0 auto; }
.fin-metric .dim { font-weight: 400; }
@media (max-width: 860px) {
  .fin-metrics { flex: 1 1 100%; flex-direction: row; flex-wrap: wrap; padding-top: 4px; }
  .fin-metric { flex: 0 0 auto; }
}

/* =============================================================
   Opgaver som ARBEJDSRUM (v3.65): sidepanel + Liste/Board/Tidslinje + Min dag
   ============================================================= */
.tasks-shell { flex: 1; min-height: 0; display: flex; }
.tasks-side {
  flex: 0 0 208px; background: var(--c-surface); border-right: 1px solid var(--c-border);
  padding: 12px 10px; display: flex; flex-direction: column; gap: 2px; overflow-y: auto;
}
.tasks-side-grp { font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--c-text-dim); font-weight: 700; padding: 10px 8px 4px; opacity: .8; }
.tasks-side-item {
  display: flex; align-items: center; gap: 8px; padding: 7px 8px; border-radius: 7px; font-size: 13px;
  color: var(--c-text-dim); text-align: left; width: 100%; border: 0; background: none; cursor: pointer; font-family: inherit;
}
.tasks-side-item:hover { background: var(--c-primary-soft); color: var(--c-text); }
.tasks-side-item.on { background: var(--c-primary-soft); color: var(--c-primary); font-weight: 700; }
.tasks-side-item .icn { opacity: .75; display: inline-flex; }
.tasks-side-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tasks-side-cnt { font-size: 11px; color: var(--c-text-dim); font-weight: 600; font-variant-numeric: tabular-nums; }
.tasks-side-cnt.ov { color: var(--c-danger); font-weight: 700; }
.tasks-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.tasks-heading { display: flex; flex-direction: column; gap: 1px; margin-right: 6px; }
.tasks-heading .view-title { margin-right: 0; line-height: 1.2; }
.view-sub { font-size: 12px; color: var(--c-text-dim); }
.tasks-wrap[data-mode="board"], .tasks-wrap[data-mode="timeline"] { max-width: none; padding-bottom: 16px; }
.tasks-wrap[data-mode="agenda"] { max-width: 900px; }

/* Filterrækken: Gruppér-seg + personpiller (Hele 2L) */
.tasks-toolbar-inner { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; width: 100%; }
.people-row { display: flex; gap: 8px 14px; padding: 4px 18px 8px; flex-wrap: wrap; align-items: center; }
.people-row[hidden] { display: none; }
.tasks-groupctl { display: inline-flex; align-items: center; gap: 6px; }
.tasks-people { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.person-pill {
  display: inline-flex; align-items: center; gap: 6px; padding: 3px 9px 3px 4px; border-radius: 99px;
  border: 1px solid var(--c-border); background: var(--c-surface); font-size: 12px; font-weight: 600; cursor: pointer; font-family: inherit; color: var(--c-text);
}
.person-pill:hover { border-color: var(--c-primary); }
.person-pill.on { border-color: var(--c-primary); background: var(--c-primary-soft); }
.person-pill-n { color: var(--c-text-dim); font-size: 11px; font-variant-numeric: tabular-nums; }
.person-pill-ov { color: var(--c-danger); font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums; }

/* Stadie-vælger på rækker, kort og agenda: en pille med farvet prik og
   en USYNLIG <select> ovenpå (font-size 16px → iOS zoomer ikke). */
.stage-pill {
  position: relative; display: inline-flex; align-items: center; gap: 6px; padding: 3px 20px 3px 9px;
  border-radius: 99px; border: 1px solid var(--c-border); background: var(--c-surface);
  font-size: 11.5px; font-weight: 600; color: var(--c-text); white-space: nowrap; cursor: pointer; --st-c: #8B7E74;
  background-image: linear-gradient(45deg, transparent 50%, var(--c-text-dim) 50%), linear-gradient(135deg, var(--c-text-dim) 50%, transparent 50%);
  background-position: calc(100% - 11px) 55%, calc(100% - 7px) 55%; background-size: 4px 4px; background-repeat: no-repeat;
}
.stage-pill::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: var(--st-c); flex: 0 0 auto; }
.stage-pill:hover { border-color: var(--c-primary); }
.stage-pill.readonly { cursor: default; background-image: none; padding-right: 9px; opacity: .85; }
.stage-pill.st-doing { --st-c: var(--c-warning); }
.stage-pill.st-waiting { --st-c: var(--c-info); }
.stage-pill.st-done { --st-c: var(--c-positive); }
.stage-select { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; font-size: 16px; margin: 0; }
.stage-select:disabled { cursor: default; }

/* Board (arbejdsstadier) */
.tb-board { display: grid; grid-template-columns: repeat(4, minmax(215px, 1fr)); gap: 12px; align-items: start; overflow-x: auto; padding-bottom: 6px; }
.tb-col { background: #ECE9E4; border-radius: var(--radius); padding: 8px; min-width: 0; --tb-c: #8B7E74; }
.tb-col.tb-doing { --tb-c: var(--c-warning); }
.tb-col.tb-waiting { --tb-c: var(--c-info); }
.tb-col.tb-done { --tb-c: var(--c-positive); }
.tb-col.drag-over { outline: 2px dashed var(--c-primary); outline-offset: -2px; background: var(--c-primary-soft); }
.tb-col-head { display: flex; align-items: center; gap: 7px; padding: 4px 6px 8px; font-size: 12.5px; font-weight: 700; }
.tb-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--tb-c); flex: 0 0 auto; }
.tb-col-n { color: var(--c-text-dim); font-weight: 600; font-size: 12px; font-variant-numeric: tabular-nums; }
.tb-col-body { display: flex; flex-direction: column; gap: 7px; min-height: 40px; }
.tb-grp { display: flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; color: var(--c-text-dim); padding: 6px 4px 0; }
.tb-grp .btn-link { font-size: 11.5px; font-weight: 700; }
.tb-grp .mini-count { font-size: 10.5px; background: var(--c-surface); padding: 0 6px; border-radius: 99px; }
.tb-card {
  background: var(--c-surface); border: 1px solid var(--c-border); border-left: 3px solid var(--c-border);
  border-radius: var(--radius-sm); padding: 9px 10px; box-shadow: var(--shadow-card); display: grid; gap: 6px;
  cursor: pointer; user-select: none; touch-action: pan-y; position: relative;
}
.tb-card:hover { box-shadow: 0 3px 10px rgba(15,30,25,.12); }
.tb-card.prio-high { border-left-color: var(--c-danger); }
.tb-card.prio-medium { border-left-color: var(--c-warning); }
.tb-card.is-done { opacity: .75; }
.tb-card.dragging { opacity: .35; }
.tb-ghost { position: fixed; z-index: 1000; pointer-events: none; transform: rotate(1.5deg); box-shadow: var(--shadow-pop); }
.tb-title { font-weight: 600; font-size: 13px; line-height: 1.3; }
.tb-title.done { text-decoration: line-through; color: var(--c-text-dim); font-weight: 500; }
.tb-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 11.5px; color: var(--c-text-dim); }
.tb-meta:empty { display: none; }
.tb-link { max-width: 100%; }
.tb-link .btn-link { color: inherit; font-size: 11px; font-weight: 600; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block; }
.tb-link .btn-link .icn { margin-right: 4px; vertical-align: -2px; } /* v4.2.2: ikon og virksomhedsnavn stod klistret sammen */
.tb-foot { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; font-size: 11.5px; color: var(--c-text-dim); }
.tb-kind { display: inline-flex; align-items: center; gap: 3px; }
.tb-kind .icn { display: inline-flex; opacity: .7; }
.tb-foot .task-due { font-size: 11.5px; }
.tb-foot .task-due.today { color: var(--c-warning); }
.tb-stage { display: flex; }
/* Delopgaver inde i kortet: checklisten står uden indrykning (kortet er smalt) */
.tb-card .subtask-block { margin: 2px 0 0 4px; padding: 2px 0 2px 10px; }
.tb-card .subtask-input { max-width: none; }
.tb-card .task-fold { padding: 0 4px; font-size: 13px; }
.tb-card .sub-add-btn { padding: 1px 6px; font-size: 11px; }
.tb-empty { padding: 16px 8px; color: var(--c-text-dim); font-size: 12px; text-align: center; border: 1.5px dashed var(--c-border); border-radius: var(--radius-sm); }
.tb-add { border: 0; background: none; color: var(--c-text-dim); font-size: 12px; padding: 7px 8px 3px; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; font-family: inherit; }
.tb-add:hover { color: var(--c-text); }
.tb-add .icn { display: inline-flex; }

/* Tidslinje */
.tl-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 2px 0 10px; }
.tl-toolbar .btn.active { background: var(--c-primary-soft); border-color: var(--c-primary); }
.tl-hint { white-space: normal; }
.tl-scroll { overflow-x: auto; overflow-y: hidden; border: 1px solid var(--c-border); border-radius: var(--radius); background: var(--c-surface); overscroll-behavior-x: contain; }
.tl-inner { position: relative; }
.tl-months { display: flex; height: 26px; border-bottom: 1px solid var(--c-border); }
/* Månedsnavnet er sticky, så det bliver stående i venstre kant, mens man
   scroller gennem måneden (ellers står det kun ved månedens første dag). */
/* INGEN overflow:hidden her — det ville gøre måneden selv til sticky-container,
   og etiketten ville aldrig klæbe til scrollkanten. */
.tl-month { flex: 0 0 auto; position: relative; height: 26px; display: flex; align-items: center; font-size: 12px; font-weight: 700; color: var(--c-text-dim); border-left: 1px solid var(--c-border); white-space: nowrap; }
.tl-month:first-child { border-left: 0; }
.tl-month span { position: sticky; left: 0; padding: 0 8px; background: var(--c-surface); }
.tl-days { display: flex; height: 30px; border-bottom: 1px solid var(--c-border); }
.tl-day { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 11px; color: var(--c-text-dim); line-height: 1.05; font-variant-numeric: tabular-nums; }
.tl-day.weekend { color: #A79E94; }
.tl-daynum { font-weight: 600; }
.tl-wd { font-size: 9.5px; opacity: .75; }
.tl-day.today .tl-daynum { background: var(--c-primary); color: #fff; border-radius: 99px; width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; }
.tl-body {
  position: relative;
  background-image: linear-gradient(to right, var(--c-border) 1px, transparent 1px);
  background-repeat: repeat-x;
}
.tl-weekend { position: absolute; top: 0; bottom: 0; background: rgba(139,126,116,.07); pointer-events: none; }
.tl-today { position: absolute; top: 0; bottom: 0; background: rgba(42,77,79,.07); border-left: 2px solid var(--c-primary); pointer-events: none; }
.tl-target { position: absolute; top: 0; bottom: 0; background: rgba(196,167,125,.25); outline: 1px dashed var(--c-accent); pointer-events: none; }
.tl-chip {
  position: absolute; height: 28px; display: flex; align-items: center; gap: 6px; padding: 0 8px 0 9px;
  background: var(--c-surface); border: 1px solid var(--c-border); border-left: 3px solid var(--c-border); border-radius: 6px;
  font-size: 12px; box-shadow: var(--shadow-card); cursor: pointer; user-select: none; touch-action: pan-x pan-y; z-index: 1;
}
/* Arbejdsstadie på tidslinjen (v3.68): farven siger STATUS (prik + fyld),
   venstrekanten siger PRIORITET — de to må ikke blandes sammen. */
.tl-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--st-c, #8B7E74); flex: 0 0 auto; }
.tl-chip { --st-c: #8B7E74; }
.tl-chip.st-doing { --st-c: var(--c-warning); background: #FDF6E8; }
.tl-chip.st-waiting { --st-c: var(--c-info); background: #EEF4FA; }
.tl-chip.st-done { --st-c: var(--c-positive); background: #EFF6F1; }
.tl-chip-time { font-size: 11px; font-weight: 700; color: var(--c-text-dim); font-variant-numeric: tabular-nums; flex: 0 0 auto; }

/* Bånd pr. stadie (kun når "Opdel pr. stadie" er slået til) */
.tl-band { position: absolute; left: 0; --st-c: #8B7E74; background: rgba(139,126,116,.05); border-top: 1px solid var(--c-border); pointer-events: none; }
.tl-band.st-doing { --st-c: var(--c-warning); background: rgba(183,121,31,.06); }
.tl-band.st-waiting { --st-c: var(--c-info); background: rgba(51,98,140,.06); }
.tl-band.st-done { --st-c: var(--c-positive); background: rgba(47,125,91,.06); }
.tl-band-lbl {
  position: sticky; left: 0; top: 0; display: inline-flex; align-items: center; gap: 6px; margin: 3px 0 0 4px;
  padding: 2px 8px; border-radius: 99px; background: var(--c-surface); border: 1px solid var(--c-border);
  font-size: 11px; font-weight: 700; color: var(--c-text-dim); white-space: nowrap;
}
.tl-band-lbl b { font-variant-numeric: tabular-nums; color: var(--c-text); }

/* Signaturrække: klik slår et stadie fra/til */
.tl-legend { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 0 8px; }
.tl-leg {
  display: inline-flex; align-items: center; gap: 6px; padding: 3px 9px; border-radius: 99px;
  border: 1px solid var(--c-border); background: var(--c-surface); font: inherit; font-size: 11.5px; font-weight: 600;
  color: var(--c-text); cursor: pointer; --st-c: #8B7E74;
}
.tl-leg:hover { border-color: var(--c-primary); }
.tl-leg.st-doing { --st-c: var(--c-warning); }
.tl-leg.st-waiting { --st-c: var(--c-info); }
.tl-leg.st-done { --st-c: var(--c-positive); }
.tl-leg.off { opacity: .45; text-decoration: line-through; }
.tl-leg b { font-variant-numeric: tabular-nums; color: var(--c-text-dim); }
.tl-chip:hover { box-shadow: 0 3px 10px rgba(15,30,25,.14); z-index: 2; }
.tl-chip.prio-high { border-left-color: var(--c-danger); }
.tl-chip.prio-medium { border-left-color: var(--c-warning); }
.tl-chip.overdue { border-color: var(--c-danger); border-left-color: var(--c-danger); }
.tl-chip.overdue .tl-chip-title { color: var(--c-danger); }
.tl-chip.is-done .tl-chip-title { text-decoration: line-through; color: var(--c-text-dim); }
.tl-chip.dragging { opacity: .6; z-index: 3; box-shadow: var(--shadow-pop); }
.tl-chip-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.tl-nodate { max-width: 900px; }

/* Min dag (agenda) */
.agenda { display: grid; gap: 14px; }
.agenda-h { margin: 0 0 6px; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--c-text-dim); display: flex; align-items: center; gap: 8px; font-weight: 700; }
.agenda-ln { flex: 1; height: 1px; background: var(--c-border); }
.agenda-n { font-variant-numeric: tabular-nums; }
.agenda-empty { padding: 12px; color: var(--c-text-dim); font-size: 12.5px; text-align: center; border: 1.5px dashed var(--c-border); border-radius: var(--radius-sm); }
.agenda-row { display: flex; align-items: center; gap: 10px; padding: 8px 12px; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); margin-bottom: 6px; }
.agenda-row.task-row-editable:hover { border-color: var(--c-accent); }
.agenda-row.task-row-editable .task-main { cursor: pointer; }
.agenda-time { width: 46px; font-weight: 700; font-size: 12.5px; color: var(--c-primary); font-variant-numeric: tabular-nums; flex: 0 0 auto; }
.agenda-row .icn { color: var(--c-text-dim); display: inline-flex; flex: 0 0 auto; }
.agenda-row .task-tail { margin-left: auto; }

/* Tablet/mobil: sidepanelet bliver en vandret række af piller øverst;
   boardet scroller vandret med snap; tidslinjen fylder bredden. */
@media (max-width: 900px) {
  .tasks-shell { flex-direction: column; }
  .tasks-side {
    flex: 0 0 auto; flex-direction: row; align-items: center; gap: 4px; padding: 8px 10px; overflow-x: auto; overflow-y: hidden;
    border-right: 0; border-bottom: 1px solid var(--c-border); scrollbar-width: none; -webkit-overflow-scrolling: touch;
  }
  .tasks-side::-webkit-scrollbar { display: none; }
  .tasks-side-grp { padding: 0 4px 0 8px; white-space: nowrap; }
  .tasks-side-grp:first-child { padding-left: 0; }
  .tasks-side-item { width: auto; white-space: nowrap; padding: 6px 10px; border-radius: 99px; border: 1px solid var(--c-border); background: var(--c-surface); flex: 0 0 auto; }
  .tasks-side-item.on { border-color: var(--c-primary); }
  .people-row { padding-left: 12px; padding-right: 12px; }
  .tb-board { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 10px; padding-bottom: 6px; -webkit-overflow-scrolling: touch; }
  .tb-col { flex: 0 0 calc(82vw / var(--uiz)); max-width: 340px; scroll-snap-align: start; }
  .tl-toolbar .tl-hint { display: none; }
}
@media (max-width: 640px) {
  .tasks-wrap { padding: 10px 12px 30px; }
  .tasks-heading .view-sub { display: none; }
  .tasks-group-lbl { display: none; }
  .stage-pill { padding-top: 5px; padding-bottom: 5px; font-size: 12px; }
  .tb-col { flex-basis: calc(86vw / var(--uiz)); }
  /* Personpillerne som én vandret strimmel — fem rækker piller åd skærmen. */
  .tasks-people { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; max-width: 100%; padding-bottom: 2px; }
  .tasks-people::-webkit-scrollbar { display: none; }
  .person-pill { flex: 0 0 auto; }
  .agenda-row { flex-wrap: wrap; }
  .agenda-row .task-main { flex: 1 1 160px; }
}

/* ---------- Going concern (v3.66) ---------- */
.gc-wrap { flex: 1; min-height: 0; display: flex; flex-direction: column; padding: 4px 18px 12px; gap: 10px; }
.gc-toolbar-hint { max-width: 620px; }
.gc-strip { display: flex; flex-direction: column; gap: 6px; }
.gc-kpis { margin-bottom: 0; grid-template-columns: repeat(4, minmax(120px, 1fr)); max-width: 720px; }
.gc-kpi { text-align: left; cursor: pointer; font: inherit; color: inherit; border-left: 4px solid var(--c-border); padding: 10px 13px; transition: box-shadow .12s; }
.gc-kpi:hover { box-shadow: var(--shadow-card); }
.gc-kpi.active { outline: 2px solid var(--c-primary); outline-offset: -1px; }
.gc-kpi-red { border-left-color: var(--c-danger); }
.gc-kpi-yellow { border-left-color: var(--c-warning); }
.gc-kpi-green { border-left-color: var(--c-positive); }
.gc-kpi-all { border-left-color: var(--c-primary); }
.gc-kpi .kpi-value { font-size: 20px; }
.gc-status { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.gc-running { display: inline-flex; align-items: center; gap: 4px; color: var(--c-info); font-weight: 600; margin-left: 6px; }
.gc-running .icn { animation: gcspin 1.4s linear infinite; }
@keyframes gcspin { to { transform: rotate(360deg); } }
.gc-error { color: var(--c-danger); font-weight: 600; }
.gc-badge { display: inline-flex; align-items: center; font-size: 11px; font-weight: 800; letter-spacing: .3px; padding: 2px 9px; border-radius: 99px; white-space: nowrap; }
.gc-badge-red { background: #F7E7E3; color: var(--c-danger); }
.gc-badge-yellow { background: #FBF1DC; color: var(--c-warning); }
.gc-badge-green { background: #E5F1EB; color: var(--c-positive); }
.gc-new { display: inline-flex; align-items: center; font-size: 10px; font-weight: 800; color: #fff; background: var(--c-danger); border-radius: 99px; padding: 1px 6px; margin-right: 6px; vertical-align: middle; letter-spacing: .4px; }
.gc-new-btn { border: 0; cursor: pointer; font: inherit; font-size: 11px; font-weight: 800; padding: 2px 8px; margin-right: 0; }
.gc-new-btn:hover { filter: brightness(1.1); }
.gc-row-new td { background: #FCF6F4; }
.gc-nav-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; margin-left: 6px; font-size: 10.5px; font-weight: 800; color: #fff; background: var(--c-danger); border-radius: 99px; }
/* Filtre: én række der ombryder — små felter med egen etiket */
.gc-filters { display: flex; flex-wrap: wrap; gap: 8px 10px; align-items: flex-end; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 10px 12px; }
.gc-field { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.gc-field-label { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--c-text-dim); }
.gc-field-wide .input { min-width: 200px; }
.input-sm { padding: 5px 8px; font-size: 12.5px; }
.gc-field .input { width: auto; min-width: 110px; }
.gc-checks { display: flex; flex-wrap: wrap; gap: 6px 14px; align-self: center; padding-top: 12px; }
/* v4.9: filtrene kan foldes sammen på alle skærme (knappen i toolbaren) — som Branchescreenerens */
.gc-filter-toggle { display: inline-flex; }
.gc-filters:not(.scr-filters) { display: none; }
.gc-filters:not(.scr-filters).open { display: flex; }
.gc-check { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; cursor: pointer; white-space: nowrap; }
/* Nøgletals-intervaller: to smalle felter med bindestreg (v3.66.3) */
.gc-range .gc-range-row { display: flex; align-items: center; gap: 4px; }
.gc-range-input { width: 68px; min-width: 0; }
.gc-range-dash { color: var(--c-text-dim); font-size: 12px; }
/* Tabel: scroller i egen container — dokumentet må aldrig scrolle vandret */
.gc-table-wrap { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.gc-scroll { flex: 1; min-height: 240px; max-height: none; overflow: auto; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); }
.gc-table { font-size: 12.5px; }
.gc-table th { white-space: nowrap; }
.gc-table th.sortable { cursor: pointer; user-select: none; }
.gc-table th.sortable:hover { color: var(--c-text); }
.gc-table th.sorted { color: var(--c-primary); }
.gc-table td { vertical-align: top; }
.gc-table td.num { white-space: nowrap; }
.gc-name { min-width: 170px; }
.gc-chips { display: flex; flex-wrap: wrap; gap: 4px; min-width: 180px; max-width: 260px; }
.gc-chips .chip { max-width: 250px; white-space: normal; text-align: left; line-height: 1.3; }
.gc-col-text { min-width: 240px; max-width: 360px; }
.gc-text { font-size: 12px; line-height: 1.45; color: var(--c-text); }
.gc-full .gc-col-text { max-width: 480px; }
.gc-text-full { white-space: pre-line; }
.gc-delta { font-size: 9.5px; margin-left: 3px; vertical-align: middle; }
.gc-delta-up { color: var(--c-positive); }
.gc-delta-down { color: var(--c-danger); }
.gc-delta-flat { color: var(--c-text-dim); }
.gc-crm-chip { border: 0; cursor: pointer; font: inherit; font-size: 10.5px; font-weight: 600; }
.gc-crm-chip:hover { filter: brightness(.95); }
.gc-add-wrap .dd-panel { min-width: 190px; }
.gc-add-btn { white-space: nowrap; }
.gc-cols-wrap { margin-left: 6px; vertical-align: middle; }
.gc-cols-panel { min-width: 240px; }
.gc-pager { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gc-pager .input { width: auto; margin-left: auto; }
.gc-drawer { width: min(900px, calc(96vw / var(--uiz))); }
/* v3.71: "gennemgået"-flueben — brugerens eget, rent manuelle mærke pr. selskab.
   Hele cellen er klikflade (label), så man ikke rammer rækken og åbner draweren. */
.gc-table th.gc-col-review, .gc-table td.gc-col-review { width: 34px; padding-left: 8px; padding-right: 2px; text-align: center; }
.gc-review-wrap { display: inline-flex; align-items: center; justify-content: center; gap: 6px; cursor: pointer; min-width: 26px; min-height: 26px; }
.gc-review { width: 16px; height: 16px; margin: 0; cursor: pointer; accent-color: var(--c-primary); }
.gc-review-labeled { font-size: 12.5px; font-weight: 600; color: var(--c-text); white-space: nowrap; padding: 0 6px; }
.gc-row-reviewed .gc-name > div:first-child { color: var(--c-text-dim); }
.gc-review-count { font-weight: 600; }
/* v3.94: AFVIST (fælles for teamet). Rækken dæmpes og navnet streges over, men
   chippen står i fuld farve, så man kan se hvorfor ved at holde musen over den. */
.gc-row-rejected td { background: var(--c-bg); }
.gc-row-rejected td > *:not(.gc-name):not(.gc-add-wrap):not(.gc-review-wrap) { opacity: .55; }
.gc-row-rejected .gc-name-text { text-decoration: line-through; text-decoration-color: var(--c-text-dim); color: var(--c-text-dim); }
.gc-rejected-chip { display: inline-flex; align-items: center; gap: 3px; background: #F7E7E3; color: var(--c-danger); font-weight: 650; cursor: help; }
.gc-rejected-chip.gc-rejected-outdated { background: var(--c-accent-soft); color: var(--c-text); }
/* v4.14: afvisning ophævet af re-tjekket pga. nyt regnskab — selskabet er tilbage og skal vurderes igen */
.gc-lifted-chip { display: inline-flex; align-items: center; gap: 3px; background: var(--c-accent-soft); color: var(--c-text); font-weight: 650; cursor: help; }
.gc-lifted-note { border-color: #D9D2C5; background: var(--c-accent-soft); }
.gc-rejected-count { font-weight: 600; color: var(--c-danger); }
.gc-rejected-note { border: 1px solid #EBC9C1; background: #FBF1EE; border-radius: 8px; padding: 10px 12px; margin-bottom: 12px; display: grid; gap: 3px; }
.btn-danger-ghost { background: transparent; color: var(--c-danger); border: 1px solid #EBC9C1; }
.btn-danger-ghost:hover { background: #F7E7E3; }
/* Mobil: fluebenet uden tekst, og skillestregen væk — ellers ombrydes luk-knappen
   til en ny linje i drawerens hoved (målt i 375px: 303 af 326px var brugt før). */
@media (max-width: 480px) {
  .gc-review-labeled > span { display: none; }
  .gc-review-labeled { padding: 0; min-width: 22px; }
  .gc-drawer .drawer-actions .action-sep { display: none; }
  /* v3.94: Afvis/Fortryd som rent ikon (titel + aria-label bærer teksten) */
  .gc-drawer .gc-reject-label, .gc-drawer .gc-refresh-label { display: none; }
}
.gc-fulltext { white-space: pre-line; font-size: 13px; line-height: 1.55; }
.gc-fin { min-width: 0; }
.gc-row-current td { background: var(--c-primary-soft); }
/* Going concern-advarsel på CRM-selskaber (kort, drawer, liste, profil) */
button.gc-flag { border: 0; font-family: inherit; }
.gc-flag { display: inline-flex; align-items: center; gap: 3px; font-size: 10.5px; font-weight: 800; letter-spacing: .3px; border-radius: 99px; padding: 1.5px 7px 1.5px 5px; margin-right: 6px; cursor: pointer; vertical-align: middle; white-space: nowrap; }
.gc-flag-red { background: var(--c-danger); color: #fff; }
.gc-flag-yellow { background: #FBF1DC; color: var(--c-warning); border: 1px solid #E8D4A8; }
.gc-flag:hover { filter: brightness(1.08); }
/* v3.87: markører for negativ egenkapital / negativ equity value (samme form som gc-flag, men
   kun kant og tekst i advarselsfarven, så den ikke forveksles med Going concern RØD) */
.eqv-neg { color: var(--c-danger); font-weight: 700; }
.deal-table-eqv-wrap { display: inline-flex; align-items: center; gap: 2px; justify-content: flex-end; width: 100%; }
.deal-table-eqv-wrap .tbl-input { min-width: 70px; }
.deal-table td.deal-table-eqv.eqv-neg .tbl-input { color: var(--c-danger); font-weight: 700; }
/* v3.92: manuelt indtastet EqV markeres med en lille blyant ("m" ville støde sammen med enheden m) */
.eqv-m { display: inline-flex; align-items: center; margin-left: 3px; color: var(--c-text-dim); vertical-align: middle; }
.eqv-m .icn { display: block; }
.eqv-neg .eqv-m { color: inherit; }
/* v4.2: dæmpet markør, når kun selskabets egen EK er negativ, men koncernens er positiv */
.fin-flag.fin-flag-dim { background: #F3F1EC; color: var(--c-text-dim); border-color: var(--c-border); }
.fin-flag { display: inline-flex; align-items: center; gap: 3px; font-size: 10.5px; font-weight: 800; letter-spacing: .3px; border-radius: 99px; padding: 1.5px 7px 1.5px 5px; margin-right: 6px; vertical-align: middle; white-space: nowrap; background: #FBE9E7; color: var(--c-danger); border: 1px solid #F0C4BE; cursor: help; }
/* Settings-panel: fremdrift */
.gc-progress { height: 8px; background: var(--c-primary-soft); border-radius: 99px; overflow: hidden; margin: 6px 0; }
.gc-progress > div { height: 100%; background: var(--c-primary); transition: width .4s; }
@media (max-width: 900px) {
  .gc-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .gc-wrap { padding: 4px 12px 10px; }
  .gc-kpis { grid-template-columns: 1fr 1fr; }
  .gc-filters { flex-direction: column; align-items: stretch; }
  .gc-field .input, .gc-field-wide .input { width: 100%; min-width: 0; font-size: 16px; }
  .gc-range-input { width: 100%; }
  .gc-checks { padding-top: 0; }
  .gc-col-text { min-width: 240px; }
  .gc-toolbar-hint { display: none; }
  /* Filtrene bag knappen — sammenfoldet som udgangspunkt (gc.js vælger ud fra skærmbredden) */
}

/* ---------- Dealtabel (v3.75) ----------
   Tabelvisning af deal-fanerne: redigérbare celler (status, næste skridt,
   stadie, prioritet, beløb, t+1-estimater), officielle LFY-tal og FTE'er fra
   selskabet i grå "fin"-celler. Første kolonne klæber til venstre, hovedet
   til toppen — tabellen scroller vandret i sit panel. */
.deal-table-panel { max-height: calc(100vh / var(--uiz) - 190px); }
.deal-table { font-size: 12.5px; min-width: 1880px; } /* v3.79: to statuskolonner + opgavekolonne; v3.90: + sidste kontakt */
.deal-table th, .deal-table td { padding: 6px 8px; }
.deal-table td { max-width: none; white-space: normal; }
.deal-table th.deal-table-sticky, .deal-table td.deal-table-sticky { position: sticky; left: 0; background: var(--c-surface); z-index: 2; box-shadow: 1px 0 0 var(--c-border); }
.deal-table thead th.deal-table-sticky { z-index: 3; }
.deal-table tr.deal-table-groups th { font-size: 10px; letter-spacing: .6px; color: var(--c-text-dim); border-bottom: 1px solid #F0EEEA; padding: 6px 8px 2px; text-align: center; }
.deal-table tr.deal-table-groups th.deal-table-group-fin { color: #4E6E68; background: #F1F5F4; }
.deal-table tr.deal-table-groups th.deal-table-group-est { color: #8F7443; background: var(--c-accent-soft); }
.deal-table td.deal-table-fin { color: var(--c-text); background: #F7F9F8; font-variant-numeric: tabular-nums; }
.deal-table tbody tr:hover td.deal-table-fin { background: #EEF3F1; }
.deal-table tbody tr:hover td.deal-table-sticky { background: var(--c-primary-soft); }
.deal-table-name { display: flex; align-items: center; gap: 5px; flex-wrap: nowrap; }
/* v4.2.2: afkrydsningen bliver på linje med navnet — før brød lange navne den ud på en linje for sig */
.deal-table-name > * { flex-shrink: 0; }
.deal-table-name > b { flex-shrink: 1; min-width: 0; }
.deal-table-meta { display: flex; align-items: center; gap: 8px; margin-top: 3px; font-size: 11px; }
.deal-table-meta .btn-link { padding: 0; font-size: 11px; }
.deal-table td.deal-table-edit { padding: 4px 6px; }
.tbl-input { width: 100%; min-width: 0; padding: 5px 7px; font-size: 12.5px; line-height: 1.35; border-color: transparent; background: transparent; resize: none; overflow: hidden; }
.tbl-input:hover { border-color: var(--c-border); background: var(--c-surface); }
.tbl-input:focus { border-color: var(--c-primary); background: var(--c-surface); overflow: auto; }
.tbl-input.num { text-align: right; font-variant-numeric: tabular-nums; width: 88px; }
select.tbl-input { padding-right: 22px; }
.deal-table-stage { display: flex; align-items: center; gap: 2px; }
.deal-table-stage select.tbl-input { flex: 1; min-width: 0; }
.deal-table-stamp { font-size: 10.5px; padding-left: 7px; min-height: 0; }
/* v4.12: næste vigtige deadline — chip (kort, tabel, drawer) + redigeringscelle (dato + tekst) */
.deadline-chip { font-size: 11px; color: var(--c-text-dim); display: inline-flex; align-items: center; gap: 3px; white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.deadline-chip.deadline-soon { color: var(--c-warning); font-weight: 600; }
.deadline-chip.deadline-overdue { color: var(--c-danger); font-weight: 700; }
.card-deadline { margin-top: 4px; }
.card-deadline .deadline-chip { white-space: normal; }
.deal-table .deadline-chip { font-size: 12px; }
.kv-grid .deadline-chip { font-size: 13px; color: var(--c-text); }
.kv-grid .deadline-chip.deadline-soon { color: var(--c-warning); }
.kv-grid .deadline-chip.deadline-overdue { color: var(--c-danger); }
.deal-table-deadline-wrap { display: flex; gap: 4px; align-items: center; }
.deal-table-deadline-wrap .deadline-date { width: 128px; flex: 0 0 auto; }
.deal-table-deadline-wrap .deadline-text { flex: 1 1 auto; min-width: 90px; }
.deal-table-deadline-chip .hint { font-size: 10.5px; padding-left: 7px; min-height: 0; }
.deal-table-deadline.deadline-soon .deadline-date, .deal-table-deadline.deadline-soon .hint { color: var(--c-warning); font-weight: 600; }
.deal-table-deadline.deadline-overdue .deadline-date, .deal-table-deadline.deadline-overdue .hint { color: var(--c-danger); font-weight: 700; }
.deal-table-deadline.deadline-half .tbl-input { border-color: var(--c-danger); background: #FBF1EF; }
/* v3.79: Ny status (tomt felt) · Seneste status (visning) · Næste skridt (næste opgave + knap) */
.deal-table td.deal-table-status-new .tbl-input { border-color: var(--c-border); background: var(--c-surface); }
.deal-table td.deal-table-status-new .tbl-input:focus { border-color: var(--c-primary); }
.deal-table td.deal-table-status { vertical-align: top; }
.deal-table-status-text { white-space: pre-wrap; line-height: 1.35; max-height: 7.5em; overflow: hidden; }
.deal-table td.deal-table-status .deal-table-stamp { padding-left: 0; }
.deal-table td.deal-table-task { vertical-align: top; }
.deal-table-task-main { cursor: pointer; padding: 3px 5px; border-radius: 6px; margin-bottom: 3px; }
.deal-table-task-main:hover { background: var(--c-primary-soft); }
.deal-table-task-title { font-weight: 600; line-height: 1.3; }
.deal-table-task-meta { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--c-text-dim); margin-top: 2px; }
.deal-table-task-meta .task-due.overdue { color: var(--c-danger); font-weight: 600; }
.deal-table-task-add { padding: 2px 8px; font-size: 11.5px; display: inline-flex; align-items: center; gap: 3px; }
.deal-table td.saving { opacity: .6; }
/* v3.90: filterlinje (gemte visninger + filtre) og masseredigeringslinje over dealtabellen */
.deal-table-filters, .deal-table-bulk { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0 18px 8px; }
.deal-table-filters .input, .deal-table-bulk .input { font-size: 12.5px; }
.deal-table-filters-lbl { font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--c-text-dim); display: inline-flex; align-items: center; gap: 4px; }
.deal-table-filters-sep { width: 1px; height: 22px; background: var(--c-border); margin: 0 4px; }
.deal-table-stale-filter { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; cursor: pointer; white-space: nowrap; }
.deal-table-bulk { background: var(--c-primary-soft); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 8px 12px; }
.deal-table-bulk.saving { opacity: .6; pointer-events: none; }
.deal-table-bulk .spacer { flex: 1; }
.deal-table-bulk-count { font-size: 12.5px; display: inline-flex; align-items: center; gap: 2px; margin-right: 6px; }
.deal-table-bulk-count b { font-weight: 700; }
.deal-table-checkwrap { display: inline-flex; align-items: center; margin-right: 6px; vertical-align: middle; }
.deal-table-check { width: 15px; height: 15px; margin: 0; cursor: pointer; accent-color: var(--c-primary); }
.deal-table tr.selected td { background: var(--c-primary-soft); }
.deal-table tr.selected td.deal-table-sticky { background: var(--c-primary-soft); }
.deal-table td.deal-table-contact { white-space: nowrap; }
@media (max-width: 900px) { .deal-table-filters, .deal-table-bulk { margin-left: 12px; margin-right: 12px; } }
.deal-table td.save-failed .tbl-input { border-color: var(--c-danger); }
.deal-table tfoot td { border-top: 1.5px solid var(--c-border); border-bottom: 0; background: var(--c-surface); position: sticky; bottom: 0; font-variant-numeric: tabular-nums; }

/* v3.95: ALT-GENVEJE (keytips.js). Mærkaterne ligger i et fast lag over alt,
   som i Excel: lille mørk boks med hvide bogstaver midt under knappen. Det,
   der allerede er tastet, står fremhævet; ikke-matchende mærker skjules. */
.kt-layer { position: fixed; inset: 0; pointer-events: none; z-index: 10000; }
.kt-badge {
  position: absolute;
  background: var(--c-text); color: var(--c-surface);
  font: 700 11px/1 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .04em;
  padding: 3px 5px; border-radius: 3px; min-width: 16px; text-align: center;
  box-shadow: 0 1px 4px rgba(0,0,0,.35); white-space: nowrap;
}
.kt-badge b { color: var(--c-accent); font-weight: 700; }
.kt-badge { transform: translate(-50%, -40%); } /* knapper: på underkanten */
.kt-badge-field { transform: translate(-45%, -50%); } /* felter: på venstre kant */
.kt-badge-menu { transform: translate(0, -50%); }     /* menupunkter: foran teksten */
.kt-badge-icon { transform: translate(-50%, -50%); }  /* lodrette lister: over ikonet */
.kt-badge-group { transform: translate(-100%, -50%); background: var(--c-primary); }
.kt-badge-group.kt-badge-group-top { transform: translate(0, -55%); }
.kt-badge-group i { font-style: normal; font-weight: 600; font-family: inherit; letter-spacing: 0; opacity: .9; }
.kt-on .kt-menu .dd-item, .kt-on .dd-panel .dd-item { padding-left: 36px; }
.kt-empty {
  position: absolute; left: 50%; top: 12px; transform: translateX(-50%);
  background: var(--c-text); color: var(--c-surface); font-size: 12px; padding: 5px 10px; border-radius: 6px;
}
.kt-shake { animation: kt-shake .22s; }
@keyframes kt-shake { 25% { transform: translateX(-3px); } 75% { transform: translateX(3px); } }
.kt-menu { z-index: 9999; min-width: 230px; }
.kt-help kbd, .kt-menu kbd {
  font: 600 11px/1 ui-monospace, Consolas, monospace; border: 1px solid var(--c-border);
  border-bottom-width: 2px; border-radius: 4px; padding: 1px 4px; background: var(--c-surface);
}

/* ======================================================================
   ANALYSE → BRANCHESCREENER (v4.0, client/src/views/screener.js)
   Farverne er Dealflows egne variabler: HTML'ens --p = --c-primary,
   --acc = --c-accent, --pl = --c-primary-soft, --accl = --c-accent-soft.
   Score-skalaen (grøn/gul/orange/rød) beholder signalfarverne fra HTML'en.
   ====================================================================== */
.scr-wrap { flex: 1; min-height: 0; display: flex; flex-direction: column; padding: 4px 18px 12px; gap: 10px; }
.scr-filters { display: none; }
.scr-filters.open { display: flex; }
.scr-filters .scr-num { width: 84px; min-width: 0; }
.scr-row { display: flex; align-items: center; gap: 6px; }
.scr-seg { background: #EFEDE8; border-radius: 9px; padding: 2px; display: inline-flex; gap: 2px; }
.scr-seg button { border: 0; background: transparent; color: var(--c-text-dim); font: inherit; font-size: 11.5px; font-weight: 650; padding: 4px 9px; cursor: pointer; border-radius: 7px; white-space: nowrap; }
.scr-seg button.active { background: var(--c-surface); color: var(--c-primary-dark); box-shadow: 0 1px 3px rgba(0,0,0,.14); }
.scr-msel { position: relative; }
.scr-msel-btn { text-align: left; cursor: pointer; min-width: 130px; }
.scr-msel-panel { min-width: 270px; max-height: 300px; overflow-y: auto; padding: 8px; }
.scr-msel-row { display: flex; align-items: center; gap: 7px; font-size: 12px; padding: 3px 4px; cursor: pointer; white-space: nowrap; border-radius: 6px; }
.scr-msel-row:hover { background: var(--c-primary-soft); }
.scr-msel-row .cnt { color: var(--c-low); margin-left: auto; font-variant-numeric: tabular-nums; }
.scr-lensflags { display: flex; flex-wrap: wrap; gap: 2px 10px; padding-top: 4px; }
.scr-lensflags .gc-check { font-size: 11.5px; gap: 4px; }
.scr-stats { white-space: nowrap; }
.scr-busy .view-title::after { content: ''; display: inline-block; width: 10px; height: 10px; margin-left: 8px; border-radius: 50%; border: 2px solid var(--c-accent); border-top-color: transparent; animation: gcspin 1s linear infinite; vertical-align: middle; }
.scr-gswrap { position: relative; flex: 0 1 240px; min-width: 140px; }
.scr-gswrap .search-results { top: 34px; left: 0; right: auto; width: min(400px, 92vw); }
.scr-gswrap .search-item { display: block; }
/* To paneler: brancheliste/selskaber til venstre, detaljer til højre */
.scr-main { flex: 1; min-height: 0; display: flex; gap: 10px; }
.scr-left { flex: 0 0 58%; min-width: 0; display: flex; flex-direction: column; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); overflow: hidden; }
.scr-right { flex: 1; min-width: 0; display: flex; flex-direction: column; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); overflow: hidden; }
.scr-panel-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 12px; border-bottom: 1px solid var(--c-border); background: var(--c-bg); font-size: 12.5px; min-height: 40px; }
.scr-panel-title { font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 60%; }
.scr-panel-body { flex: 1; min-height: 0; overflow: auto; }
.scr-scroll { overflow: auto; }
.scr-fbadge { background: var(--c-accent-soft); border: 1px solid var(--c-accent); font-size: 10px; color: #6B5732; padding: 2px 9px; border-radius: 99px; font-weight: 600; }
/* Tabellerne (kompakte, som HTML'en) */
.scr-table { font-size: 11.5px; }
.scr-table th { position: sticky; top: 0; background: var(--c-bg); z-index: 2; font-size: 10px; padding: 6px 7px; letter-spacing: .4px; }
.scr-table th.sortable { cursor: pointer; user-select: none; }
.scr-table th.sortable:hover { color: var(--c-primary); }
.scr-table th.sorted-asc::after { content: ' ▲'; font-size: 8px; color: var(--c-accent); }
.scr-table th.sorted-desc::after { content: ' ▼'; font-size: 8px; color: var(--c-accent); }
.scr-table td { padding: 4px 7px; white-space: nowrap; border-bottom: 1px solid #F3F1EC; }
.scr-table tr.dim { opacity: .45; }
.scr-table tr.selrow td { background: var(--c-accent-soft) !important; box-shadow: inset 3px 0 0 var(--c-accent); }
.scr-table .selyr { background: var(--c-accent-soft); }
.scr-table tr.clickable { user-select: none; }
.scr-table td.scr-star { cursor: pointer; color: var(--c-accent); font-size: 13px; text-align: center; padding: 2px 4px; }
.scr-table td.scr-star.off { color: #DDD8CF; }
.scr-table td.scr-star:hover { color: var(--c-warning); transform: scale(1.25); }
.mono { font-variant-numeric: tabular-nums; }
.pos { color: var(--c-positive); } .neg { color: var(--c-danger); } .muted { color: #B5B2AB; }
.scr-score { display: flex; align-items: center; gap: 6px; font-weight: 650; font-variant-numeric: tabular-nums; }
.scr-score-bar { display: inline-block; height: 7px; border-radius: 5px; min-width: 3px; }
.scr-lowconf { color: var(--c-warning); font-weight: 700; }
.scr-spark { display: inline-flex; align-items: flex-end; gap: 1px; height: 16px; }
.scr-spark-bar { width: 5px; border-radius: 2px 2px 0 0; min-height: 1px; }
.scr-badge { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 4px; box-shadow: 0 0 0 2px rgba(0,0,0,.04); vertical-align: middle; }
.scr-badge.b-ok { background: var(--c-positive); } .scr-badge.b-konk { background: var(--c-danger); } .scr-badge.b-oth { background: var(--c-low); }
.scr-cat { display: inline-block; padding: 1px 7px; border-radius: 99px; font-size: 9px; font-weight: 700; color: #fff; margin-left: 4px; vertical-align: 1px; }
.scr-note-ic { color: var(--c-low); font-size: 10px; margin-left: 3px; cursor: default; }
.scr-crm-chip { border: 0; cursor: pointer; font: inherit; font-size: 10.5px; font-weight: 600; display: inline-flex; align-items: center; gap: 3px; }
.scr-stars { position: relative; display: inline-block; font-size: 12px; line-height: 1; letter-spacing: 1px; white-space: nowrap; vertical-align: -1px; }
.scr-stars.big { font-size: 20px; }
.scr-stars .st-bg { color: #DDD8CF; }
.scr-stars .st-fg { position: absolute; left: 0; top: 0; overflow: hidden; color: var(--c-accent); }
.scr-ko { display: inline-block; background: var(--c-danger); color: #fff; font-size: 9px; font-weight: 700; border-radius: 4px; padding: 1px 5px; }
/* Linse-dropdown og eksportmenu */
.scr-lens-panel { min-width: 260px; }
.scr-lens-opt { gap: 6px; }
.scr-lens-opt .scr-gear { margin-left: auto; color: #9A9A9A; font-size: 12px; padding: 0 3px; border-radius: 4px; }
.scr-lens-opt .scr-gear:hover { color: var(--c-text); background: #E9E5DE; }
.scr-mode { border: 1px solid var(--c-border); background: var(--c-surface); border-radius: 6px; padding: 1px 8px; font-size: 10px; cursor: pointer; font-family: inherit; color: var(--c-text); margin-left: 3px; text-transform: none; letter-spacing: 0; }
.scr-mode.on { background: var(--c-primary); border-color: var(--c-primary); color: #fff; font-weight: 600; }
.scr-mode:disabled { opacity: .4; cursor: default; }
.scr-exp-menu { width: 520px; max-width: 92vw; right: 0; left: auto; max-height: min(82vh, 640px); }
.scr-exp-row { display: flex; align-items: center; gap: 9px; padding: 7px 9px; border-radius: 8px; }
.scr-exp-row:hover { background: #F5F3EF; }
.scr-exp-row.sub { padding-left: 26px; }
.scr-exp-ic { width: 26px; height: 26px; border-radius: 7px; display: flex; align-items: center; justify-content: center; font-size: 13px; flex: none; font-weight: 700; }
.scr-exp-ic.ov { background: var(--c-primary-soft); color: var(--c-primary); }
.scr-exp-ic.br { background: var(--c-accent-soft); color: #6B5732; }
.scr-exp-txt { flex: 1; min-width: 0; }
.scr-exp-t { font-size: 12px; font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.scr-exp-s { font-size: 10.5px; color: var(--c-text-dim); margin-top: 1px; line-height: 1.3; }
.scr-exp-n { font-size: 11px; font-weight: 700; color: var(--c-primary); font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; line-height: 1.2; }
.scr-exp-n small { display: block; font-size: 8.5px; font-weight: 600; color: var(--c-low); text-transform: uppercase; letter-spacing: .4px; }
.scr-exp-foot { border-top: 1px solid #EFEBE4; margin-top: 4px; padding: 6px 9px 2px; font-size: 10.5px; color: var(--c-text-dim); line-height: 1.35; }
/* v4.6: Rådata — hele universet (tidy) */
.scr-exp-raa { border-top: 1px solid #EFEBE4; margin-top: 4px; padding-top: 2px; }
.scr-exp-ic.raa { background: #E7EEF3; color: #33628C; }
.scr-exp-raa-ctl { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; padding: 0 9px 4px 44px; }
.scr-exp-raa-ctl select.input-sm { width: auto; padding: 3px 6px; font-size: 12px; }
.scr-exp-raa-ctl .gc-check { margin-left: 8px; }
.scr-exp-raa-hint { padding: 0 9px 4px 44px; font-size: 10.5px; color: #6B5732; }
.scr-exp-raa-hint:empty { display: none; }
.scr-exp-menu a.btn.disabled { opacity: .45; cursor: not-allowed; }
/* Højre panel: branchedata og selskabskort */
.scr-detail-in { padding: 14px 16px; font-size: 12.5px; }
.scr-detail-in h3 { font-size: 15px; margin: 0 0 2px; letter-spacing: -.01em; }
.scr-meta { color: var(--c-text-dim); font-size: 11px; margin-bottom: 8px; }
.scr-h4 { font-size: 12px; margin: 12px 0 4px; font-weight: 700; }
.note { color: var(--c-text-dim); font-style: italic; font-size: 10.5px; line-height: 1.45; margin: 4px 0; }
.notice { background: #F6EDDD; border: 1px solid #E5CFA5; border-radius: 9px; padding: 8px 11px; font-size: 11.5px; margin: 8px 0; color: #7A5514; }
.scr-theme { display: inline-block; padding: 2px 8px; border-radius: 9px; font-size: 10px; font-weight: 600; background: var(--c-primary-soft); color: var(--c-primary); border: 1px solid #CBD8D6; margin-right: 4px; }
.scr-ychip { display: inline-block; padding: 2px 7px; border-radius: 9px; font-size: 10px; font-weight: 700; border: 1px solid var(--c-border); margin-right: 3px; }
.scr-ychip.sel { border: 1.5px solid var(--c-accent); }
.scr-dgrid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 7px; margin: 10px 0; }
.scr-dcard { background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 9px 10px; box-shadow: var(--shadow-card); min-width: 0; }
.scr-dcard .label { font-size: 8.5px; color: var(--c-low); text-transform: uppercase; font-weight: 700; letter-spacing: .5px; }
.scr-dcard .value { font-size: 15px; font-weight: 700; margin-top: 2px; font-variant-numeric: tabular-nums; }
.scr-dcard .sub { font-size: 9px; color: #B5B2AB; margin-top: 1px; }
.scr-yrtable { font-size: 11px; }
.scr-yrtable th, .scr-yrtable td { font-size: 10.5px; padding: 3px 6px; }
.scr-yrtable th { background: var(--c-bg); position: static; }
.scr-yrtable .warn26 { background: var(--c-accent-soft); }
/* v4.5: historiske år (før 2021) — egen vandret rullezone, så mange år ikke skubber panelet ud */
.scr-yrwrap { overflow-x: auto; max-width: 100%; }
.scr-yrtable th.hist { color: var(--c-text-dim); font-style: italic; }
.scr-yrtable th.selyr { background: var(--c-accent-soft); }
.scr-ychip.hist { opacity: .7; border-style: dashed; }
/* Settings → Historiske regnskabstal */
.hist-aar { width: 100%; font-size: 12px; margin-top: 8px; }
.hist-aar td.bar { width: 38%; min-width: 120px; }
.hist-bar { height: 7px; border-radius: 4px; background: var(--c-border); overflow: hidden; }
.hist-bar > div { height: 100%; background: var(--c-primary); }
.hist-bar.done > div { background: var(--c-positive); }
.scr-annbox { background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 9px 11px; margin: 8px 0; display: flex; gap: 9px; align-items: flex-start; flex-wrap: wrap; box-shadow: var(--shadow-card); }
.scr-annbox .scr-astar { font-size: 21px; cursor: pointer; color: #DDD8CF; line-height: 1; }
.scr-annbox .scr-astar.on { color: var(--c-accent); }
.scr-annbox textarea { flex: 1; min-width: 180px; min-height: 36px; resize: vertical; font-family: inherit; font-size: 12px; }
.scr-annbox select { width: auto; }
.scr-colens-wrap { display: flex; flex-wrap: wrap; gap: 4px; justify-content: flex-end; align-items: center; }
.scr-colens { display: inline-flex; align-items: center; gap: 4px; border: 1px solid; border-radius: 999px; padding: 2px 8px; font-size: 10px; font-weight: 600; line-height: 1.6; cursor: pointer; white-space: nowrap; }
.scr-ctabs { display: flex; gap: 2px; border-bottom: 1px solid var(--c-border); margin: 4px 0 10px; }
.scr-ctab { padding: 6px 11px; font-size: 12px; font-weight: 650; color: var(--c-text-dim); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; user-select: none; }
.scr-ctab.active { color: var(--c-primary); border-color: var(--c-accent); }
.scr-txtbox { font-size: 11.5px; line-height: 1.45; background: var(--c-bg); border: 1px solid var(--c-border); border-radius: 9px; padding: 7px 10px; margin: 0 0 8px; }
.scr-gcbox { background: #F7E7E3; border-color: #E8C4BC; color: var(--c-danger); }
/* Stjerner */
.scr-stbox { border: 1px solid var(--c-border); border-radius: var(--radius); padding: 10px 12px; margin: 10px 0; background: #FCFBF8; }
.scr-stnum { font-size: 13px; font-weight: 700; margin-left: 8px; color: var(--c-primary); }
.scr-sttab { font-size: 11px; }
.scr-sttab th { position: static; font-size: 9.5px; padding: 5px 6px; }
.scr-sttab td { font-size: 11px; padding: 4px 6px; vertical-align: top; white-space: normal; }
.scr-sttab tr.scr-stoff td { opacity: .45; }
.scr-vals { font-size: 10px; color: var(--c-text-dim); margin-top: 2px; line-height: 1.35; }
.scr-lvl { font-size: 10px; color: #8A7550; margin-top: 2px; font-style: italic; }
.scr-pill { display: inline-block; min-width: 26px; text-align: center; color: #fff; font-weight: 700; border-radius: 9px; padding: 1px 6px; font-size: 10.5px; }
.scr-ko-r, .scr-ko-y, .scr-ko-g { display: inline-block; font-size: 10px; font-weight: 700; border-radius: 4px; padding: 1px 6px; color: #fff; }
.scr-ko-r { background: var(--c-danger); } .scr-ko-y { background: #C49A3A; } .scr-ko-g { background: var(--c-positive); }
/* Normalvirksomheden */
.scr-bmbox { border: 1px solid var(--c-border); border-radius: var(--radius); padding: 10px 12px; margin: 8px 0 12px; background: var(--c-surface); box-shadow: var(--shadow-card); }
.scr-bmt { font-size: 13px; font-weight: 700; color: var(--c-primary); }
.scr-bmkpi { display: grid; grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); gap: 6px; margin: 4px 0 10px; }
.scr-bmk { background: var(--c-primary-soft); border-radius: 8px; padding: 7px 9px 6px; min-width: 0; }
.scr-bmk .bm-kl { font-size: 8.5px; text-transform: uppercase; letter-spacing: .4px; color: var(--c-low); font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.scr-bmk .bm-kv { font-size: 16px; font-weight: 700; color: var(--c-primary); font-variant-numeric: tabular-nums; line-height: 1.2; margin-top: 2px; white-space: nowrap; }
.scr-bmk .bm-kv.pos { color: var(--c-positive); } .scr-bmk .bm-kv.neg { color: var(--c-danger); }
.scr-bmk .bm-ks { font-size: 9.5px; color: var(--c-text-dim); margin-top: 1px; font-variant-numeric: tabular-nums; line-height: 1.25; } /* v4.2.2: ombrydes i stedet for "median 21,8 mi…" */
.scr-bmdist { margin: 4px 0 8px; }
.scr-bmdr { display: flex; align-items: center; gap: 6px; font-size: 10px; margin: 1px 0; }
.scr-bmdr .bm-dl { width: 74px; color: var(--c-text-dim); text-align: right; }
.scr-bmdr .bm-db { flex: 1; height: 8px; background: #F1EFEA; border-radius: 4px; overflow: hidden; }
.scr-bmdr .bm-db span { display: block; height: 100%; }
.scr-bmdr .bm-dn { width: 44px; font-variant-numeric: tabular-nums; color: var(--c-text-dim); }
.scr-bmleg { display: flex; align-items: center; gap: 6px; font-size: 9.5px; color: var(--c-text-dim); margin: 2px 0 4px; flex-wrap: wrap; }
.scr-bmleg .w { display: inline-block; width: 14px; height: 1px; background: #B5B2AB; }
.scr-bmleg .b { display: inline-block; width: 14px; height: 8px; background: var(--c-accent); border-radius: 2px; }
.scr-bmleg .m { display: inline-block; width: 2px; height: 12px; background: var(--c-primary); }
.scr-bmleg .pt { display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: var(--c-primary-dark); }
.scr-bmleg .pt.pos { background: var(--c-positive); } .scr-bmleg .pt.neg { background: var(--c-danger); }
.scr-bmtab { font-size: 11px; }
.scr-bmtab th { position: static; font-size: 9.5px; padding: 5px 6px; }
.scr-bmtab td { font-size: 11px; padding: 4px 6px; white-space: normal; vertical-align: middle; }
.scr-bmtab tr.scr-bmg td { background: var(--c-bg); font-size: 8.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .6px; color: var(--c-low); padding-top: 6px; }
.scr-bmtab td.scr-bmmed { font-weight: 700; color: var(--c-primary); }
.scr-bpc { width: 58%; padding: 3px 8px 2px !important; }
.scr-bp { position: relative; height: 31px; font-variant-numeric: tabular-nums; }
.scr-bp .w { position: absolute; top: 14px; height: 1px; background: #B5B2AB; }
.scr-bp .wc { position: absolute; top: 11px; width: 1px; height: 7px; background: #B5B2AB; }
.scr-bp .b { position: absolute; top: 10px; height: 9px; background: var(--c-accent); border-radius: 2px; }
.scr-bp .m { position: absolute; top: 8px; width: 2px; height: 13px; background: var(--c-primary); margin-left: -1px; border-radius: 1px; }
.scr-bp .lm { position: absolute; top: -3px; font-size: 10px; font-weight: 700; color: var(--c-primary); transform: translateX(-50%); white-space: nowrap; }
.scr-bp .l25, .scr-bp .l75 { position: absolute; top: 20px; font-size: 9px; color: var(--c-text-dim); white-space: nowrap; line-height: 1; }
.scr-bp .l25 { padding-right: 3px; } .scr-bp .l75 { padding-left: 3px; }
.scr-bp .pt { position: absolute; top: 9.5px; width: 10px; height: 10px; border-radius: 50%; background: var(--c-primary-dark); border: 2px solid #fff; box-shadow: 0 0 0 1.5px var(--c-primary-dark); margin-left: -5px; z-index: 2; box-sizing: border-box; }
.scr-bp .pt.pos { background: var(--c-positive); box-shadow: 0 0 0 1.5px var(--c-positive); }
.scr-bp .pt.neg { background: var(--c-danger); box-shadow: 0 0 0 1.5px var(--c-danger); }
.scr-bp .pt.out { border-radius: 2px; transform: rotate(45deg); }
/* Dialoger: vægte, kriterier, metode */
.scr-wdlg { max-height: 70vh; overflow: auto; }
.scr-wgroup { display: flex; align-items: center; gap: 6px; margin: 10px 0 4px; }
.scr-wgroup .dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.scr-wgroup strong { font-size: 10.5px; text-transform: uppercase; letter-spacing: .6px; }
.scr-metric-row { display: flex; justify-content: space-between; align-items: center; padding: 4px 0; border-bottom: 1px solid #F3F1EC; gap: 8px; font-size: 12px; }
.scr-metric-row:last-child { border-bottom: 0; }
.scr-metode-txt { font-size: 12.5px; line-height: 1.55; max-height: 70vh; overflow: auto; }
.scr-metode-txt p { margin: 0 0 8px; }
.scr-metode-txt ul { font-size: 11.5px; line-height: 1.5; margin: 4px 0 8px 18px; }
.scr-metode-txt h4 { font-size: 13px; margin: 14px 0 6px; }
@media (max-width: 1100px) {
  .scr-main { flex-direction: column; }
  .scr-left, .scr-right { flex: 0 0 auto; max-height: 55vh; }
  .scr-dgrid { grid-template-columns: 1fr 1fr; }
}
/* Branchescreener-panelet på profil, deal-drawer og GC-drawer (v4.0) */
.scr-panel-in { font-size: 12.5px; }
.scr-panel-in .scr-bmkpi { grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); }
.scr-kpill { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; font-weight: 600; color: var(--c-text-dim); border: 1px solid var(--c-border); border-radius: 99px; padding: 1px 7px 1px 8px; }

/* v4.1: profilfarve-vælger i brugermenuen (ingen gule) */
.swatch-btn { width: 26px; height: 26px; border-radius: 50%; border: 2px solid transparent; color: #fff; font-size: 13px; font-weight: 700; line-height: 1; cursor: pointer; padding: 0; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 0 0 1px rgba(0,0,0,.08) inset; }
.swatch-btn:hover { transform: scale(1.08); }
.swatch-btn.on { border-color: var(--c-text, #2B2B2B); }
.swatch-free { display: inline-flex; align-items: center; gap: 4px; margin-left: 6px; cursor: pointer; }
.swatch-free input[type="color"] { width: 26px; height: 26px; padding: 0; border: 1px solid var(--c-border); border-radius: 6px; background: none; cursor: pointer; }

/* v4.1: ＋-knap pr. selskab i Branchescreenerens selskabsliste (fane → kategori) */
.scr-rowact { width: 26px; padding: 0 2px !important; }
.scr-rowadd { position: relative; display: inline-block; }
.scr-rowadd .icon-btn.btn-xs { width: 22px; height: 22px; padding: 0; display: inline-flex; align-items: center; justify-content: center; opacity: .45; }
.scr-rowadd .icon-btn.btn-xs:hover { opacity: 1; }
.scr-rowadd .dd-panel { left: 0; right: auto; min-width: 250px; max-height: 60vh; overflow: auto; }
.dd-item.scr-catitem { padding-left: 22px; font-size: 12px; }
/* v4.1: farvehjul (client/src/colorwheel.js) */
.cw-row { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; }
.cw-wheel { border-radius: 50%; cursor: crosshair; touch-action: none; box-shadow: 0 0 0 1px var(--c-border); }
.cw-side { display: flex; flex-direction: column; gap: 8px; min-width: 170px; flex: 1; }
.cw-prev-row { display: flex; gap: 8px; align-items: center; }
.cw-preview { width: 34px; height: 34px; border-radius: 50%; display: inline-block; border: 1px solid var(--c-border); flex: 0 0 auto; }
.cw-hex { width: 96px; font-family: ui-monospace, Menlo, Consolas, monospace; text-transform: uppercase; }
.cw-lum { display: flex; flex-direction: column; gap: 3px; }
.cw-lum input[type="range"] { width: 100%; }
.cw-rgb { display: flex; gap: 6px; }
.cw-rgb label { display: flex; align-items: center; gap: 4px; font-size: 11px; color: var(--c-text-dim, #5E5E5E); }
.cw-num { width: 58px; }
.cw-yellow .cw-preview { outline: 2px solid var(--c-danger); }

/* ======================================================================
   v4.2: SÆSONTEMAER (client/src/seasons.js). <html data-season="…"> styrer
   headeren; .season-deco er dekorationen i topbaren (pointer-events: none),
   .season-fx er det fuldskærms-canvas, animationerne tegnes på. Alt er
   bevidst dæmpet — det må ikke distrahere. Reduceret bevægelse: ingen animation.
   ====================================================================== */
.topbar { position: relative; }
.season-deco { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
.topbar > *:not(.season-deco) { position: relative; z-index: 1; }
.season-emoji { display: inline-flex; align-items: flex-end; gap: 2px; font-size: 18px; line-height: 1; opacity: .9; filter: drop-shadow(0 1px 1px rgba(0,0,0,.25)); margin-left: -4px; }
.season-fx { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999; }

/* Jul: dyb rød header, gylden Ny Deal, snefnug der daler stille, guirlande i underkanten */
html[data-season="jul"] .topbar { background: linear-gradient(90deg, #7A1414 0%, #A71C1C 55%, #8E1B1B 100%); }
html[data-season="jul"] .brand-logo { color: #FFD98A; border-color: rgba(255,217,138,.45); }
html[data-season="jul"] .nav-pill.active { background: rgba(255,255,255,.18); }
html[data-season="jul"] .btn-accent { background: #C9A227; color: #2B1B00; }
.season-deco .sd-snow { position: absolute; top: -20px; color: #fff; animation: sd-fall linear infinite; }
.season-deco .sd-snow svg { width: 100%; height: 100%; display: block; }
@keyframes sd-fall { 0% { transform: translateY(0) rotate(0deg); } 100% { transform: translateY(90px) rotate(180deg); } }
.season-deco .sd-garland { position: absolute; left: 0; right: 0; bottom: 0; height: 4px;
  background: repeating-linear-gradient(90deg, #2F7D5B 0 14px, #FFD98A 14px 18px, #2F7D5B 18px 32px, #C9A227 32px 36px); opacity: .7; }

/* Halloween: mørk lilla/orange header, flagermus der svæver, spindelvæv i hjørnet */
html[data-season="halloween"] .topbar { background: linear-gradient(90deg, #1E1230 0%, #2D1A45 50%, #3A2010 100%); }
html[data-season="halloween"] .brand-logo { color: #FF8C1A; border-color: rgba(255,140,26,.5); }
html[data-season="halloween"] .btn-accent { background: #FF8C1A; color: #2B1300; }
html[data-season="halloween"] .nav-pill.active { background: rgba(255,140,26,.22); }
.season-deco .sd-bat { position: absolute; color: rgba(0,0,0,.55); animation: sd-hover ease-in-out infinite alternate; }
.season-deco .sd-bat svg { width: 100%; display: block; }
@keyframes sd-hover { 0% { transform: translate(0, 0) rotate(-4deg); } 100% { transform: translate(14px, -8px) rotate(5deg); } }
.season-deco .sd-ghost { animation: sd-ghost 3.2s ease-in-out infinite alternate; }
@keyframes sd-ghost { 0% { transform: translateY(0); opacity: .55; } 100% { transform: translateY(-5px); opacity: .9; } }
.season-deco .sd-web { position: absolute; left: 0; top: 0; width: 46px; height: 46px; opacity: .22;
  background: radial-gradient(circle at 0 0, transparent 0 6px, #fff 6px 7px, transparent 7px 14px, #fff 14px 15px, transparent 15px 22px, #fff 22px 23px, transparent 23px 30px, #fff 30px 31px, transparent 31px 38px, #fff 38px 39px, transparent 39px),
    linear-gradient(45deg, transparent 49%, #fff 49% 51%, transparent 51%), linear-gradient(90deg, #fff 0 1px, transparent 1px), linear-gradient(0deg, #fff 0 1px, transparent 1px); }

/* Nytår: midnatsblå header med guldstjerner, der blinker */
html[data-season="nytaar"] .topbar { background: linear-gradient(90deg, #0B1230 0%, #16224F 55%, #1E1A4A 100%); }
html[data-season="nytaar"] .brand-logo { color: #FFD700; border-color: rgba(255,215,0,.45); }
html[data-season="nytaar"] .btn-accent { background: #FFD700; color: #2B2300; }
html[data-season="nytaar"] .nav-pill.active { background: rgba(255,215,0,.18); }
.season-deco .sd-star { position: absolute; color: #FFD98A; animation: sd-twinkle ease-in-out infinite alternate; }
.season-deco .sd-star svg { width: 100%; display: block; }
@keyframes sd-twinkle { 0% { opacity: .15; transform: scale(.7); } 100% { opacity: .95; transform: scale(1.15); } }
/* Dannebrog (9. april, grundlovsdag): headeren ER flaget — rød flade med hvidt kors; det lodrette
   korsben står i mellemrummet mellem navnet og fanerne, det vandrette går bag fanerne, som derfor
   får en mørk, gennemskinnelig flade, så den hvide tekst kan læses på begge farver. */
html[data-season="dannebrog"] .topbar { background: #C60C30; }
html[data-season="dannebrog"] .topbar::before { content: ''; position: absolute; left: 0; right: 0; top: 50%; height: 10px; margin-top: -5px; background: #fff; pointer-events: none; z-index: 0; }
html[data-season="dannebrog"] .topbar::after { content: ''; position: absolute; left: 152px; top: 0; bottom: 0; width: 10px; background: #fff; pointer-events: none; z-index: 0; }
html[data-season="dannebrog"] .brand { background: rgba(0,0,0,.3); border-radius: 10px; padding: 3px 9px 3px 3px; margin-left: -3px; }
html[data-season="dannebrog"] .nav { margin-left: 6px; }
html[data-season="dannebrog"] .nav-pill { background: rgba(0,0,0,.28); color: #fff; }
html[data-season="dannebrog"] .nav-pill.active { background: rgba(0,0,0,.45); }
html[data-season="dannebrog"] .brand-logo { background: rgba(0,0,0,.25); border-color: rgba(255,255,255,.5); color: #fff; }
html[data-season="dannebrog"] .brand-name, html[data-season="dannebrog"] .brand-org { text-shadow: 0 1px 2px rgba(0,0,0,.45); }
html[data-season="dannebrog"] .topbar-search input { background: rgba(0,0,0,.3); }
html[data-season="dannebrog"] .topbar .icon-btn { background: rgba(0,0,0,.22); }
html[data-season="dannebrog"] .btn-accent { background: #fff; color: #C60C30; border: 1px solid rgba(0,0,0,.1); }
.season-emoji.sd-flag { font-size: 20px; animation: sd-wave 2.6s ease-in-out infinite; transform-origin: 20% 60%; }
@keyframes sd-wave { 0%, 100% { transform: rotate(-4deg); } 50% { transform: rotate(5deg); } }
@media (prefers-reduced-motion: reduce) { .season-deco * { animation: none !important; } .sd-flag { animation: none !important; } }
@media (max-width: 900px) { .season-emoji { display: none; } }

/* v4.8: HILSNEN midt i det tomme felt mellem fanerne og "+ Ny Deal" (.topbar-spacer).
   Feltet er en container: er det for smalt til hilsnen, skjules den helt i stedet
   for at blive klippet (grænserne pr. tema passer til tekstens bredde). */
.topbar-spacer { display: flex; align-items: center; justify-content: center; min-width: 0; overflow: hidden; container-type: inline-size; }
.season-greeting { display: inline-flex; align-items: center; gap: 9px; white-space: nowrap; line-height: 1.25; padding: 2px 8px;
  font-family: Georgia, 'Times New Roman', serif; font-style: italic; font-weight: 700; font-size: 19px; letter-spacing: .4px;
  pointer-events: none; user-select: none; }
.season-greeting::before, .season-greeting::after { font-style: normal; font-weight: 400; display: inline-block; }
/* Nytår: guldtekst med en lysstribe, der glider hen over; små blinkende stjerner på hver side */
.season-greeting[data-season="nytaar"] { background: linear-gradient(90deg, #D9A21B 0%, #FFD700 34%, #FFF6CC 50%, #FFD700 66%, #D9A21B 100%);
  background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 1px 1px rgba(0,0,0,.45)); animation: sg-shimmer 4.5s linear infinite; }
.season-greeting[data-season="nytaar"]::before, .season-greeting[data-season="nytaar"]::after { content: '\2726'; font-size: 12px; color: #FFD98A; -webkit-text-fill-color: #FFD98A; animation: sd-twinkle 1.3s ease-in-out infinite alternate; }
.season-greeting[data-season="nytaar"]::after { animation-delay: -.65s; }
@keyframes sg-shimmer { from { background-position: 200% 0; } to { background-position: 0% 0; } }
/* Jul: cremegylden tekst med et snefnug på hver side */
.season-greeting[data-season="jul"] { color: #FFE9B0; text-shadow: 0 1px 2px rgba(0,0,0,.4); }
.season-greeting[data-season="jul"]::before, .season-greeting[data-season="jul"]::after { content: '\2744\FE0E'; font-size: 13px; color: #fff; opacity: .85; animation: sg-spin 8s linear infinite; }
@keyframes sg-spin { to { transform: rotate(360deg); } }
/* Halloween: orange, glødende tekst, der flakker en sjælden gang */
.season-greeting[data-season="halloween"] { color: #FF8C1A; text-shadow: 0 0 7px rgba(255,140,26,.55), 0 1px 2px rgba(0,0,0,.6); animation: sg-flicker 5s linear infinite; }
@keyframes sg-flicker { 0%, 86%, 90%, 94%, 100% { opacity: 1; } 88%, 92% { opacity: .55; } }
/* Dannebrog (kun grundlovsdag — 9. april har ingen hilsen): hvid tekst på mørk, gennemskinnelig
   flade som fanerne, så den kan læses oven på det hvide korsben */
.season-greeting[data-season="dannebrog"] { color: #fff; background: rgba(0,0,0,.32); border-radius: 10px; padding: 3px 12px; font-size: 17px; text-shadow: 0 1px 2px rgba(0,0,0,.45); }
@container (max-width: 190px) { .season-greeting[data-season="nytaar"] { display: none; } }
@container (max-width: 210px) { .season-greeting[data-season="jul"] { display: none; } }
@container (max-width: 205px) { .season-greeting[data-season="halloween"] { display: none; } }
@container (max-width: 250px) { .season-greeting[data-season="dannebrog"] { display: none; } }
@media (prefers-reduced-motion: reduce) { .season-greeting, .season-greeting::before, .season-greeting::after { animation: none !important; } }

/* v4.9: Økonomi-fanen med flere targets — vælger (Samlet / hvert selskab) og summeret tabel */
.fin-switch .panel-title { flex-wrap: wrap; gap: 8px; }
.fin-seg { flex-wrap: wrap; max-width: 100%; }
.fin-seg button { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fin-sum tr.fin-sum-partial td:first-child { font-style: italic; }

/* v4.20: ejersignaler (investor/partner, ejer-/generationsskifte, kapitalrejsning/refinansiering, fusion/salg) */
.chip-ejer { display: inline-flex; align-items: center; gap: 4px; background: #E6EEF6; color: var(--c-info); font-weight: 650; }
.gc-ejer + .gc-ejer { margin-top: 10px; }
.gc-ejer-citat { margin: 6px 0 0; padding: 6px 10px; border-left: 3px solid var(--c-info); background: #F3F7FB; color: var(--c-text); font-size: 13px; line-height: 1.45; white-space: pre-wrap; }
.scr-ejer { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; font-weight: 750; padding: 2px 7px; border-radius: 99px; background: #E6EEF6; color: var(--c-info); white-space: nowrap; cursor: help; }
.scr-gcbox.scr-ejerbox { background: #F3F7FB; border-color: #C9D8E8; border-left: 3px solid var(--c-info); color: var(--c-text); }
.scr-ejerbox > b { color: var(--c-info); }
.scr-ejerbox .gc-ejer-citat { background: var(--c-surface); }

/* v4.21: opgavens note under titlen — ikke længere kun et 📝 med tooltip */
.task-note { margin-top: 6px; padding: 5px 9px; border-left: 3px solid var(--c-accent); background: #FBF7EF; border-radius: 0 6px 6px 0; font-size: 12.5px; line-height: 1.45; color: var(--c-text); max-width: 760px; }
.task-note-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 2px; font-size: 11px; color: var(--c-text-dim); }
.task-note-who { font-weight: 600; }
.task-note-text { white-space: pre-wrap; overflow-wrap: anywhere; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.task-note.open .task-note-text { display: block; -webkit-line-clamp: unset; }
.task-note-compact { margin-top: 4px; padding: 3px 7px; font-size: 11.5px; }
.task-note-compact .task-note-text { -webkit-line-clamp: 1; }
.task-note-more { margin-top: 2px; padding: 0; }
.task-note-new { border-left-color: var(--c-danger); background: #FCEFEC; }
.task-note-badge { display: inline-flex; align-items: center; font-size: 10.5px; font-weight: 800; letter-spacing: .2px; padding: 1px 7px; border-radius: 99px; background: var(--c-danger); color: #fff; margin-right: 4px; }
.task-note-seen { padding: 0; font-size: 11px; }
.task-notes-toggle { border: 1px solid var(--c-danger); color: var(--c-danger); background: #FCEFEC; }
.task-notes-toggle.active { background: var(--c-danger); color: #fff; }
.task-note-nav-badge { cursor: pointer; }
.deal-table-task .task-note { max-width: 260px; }

/* ---- v4.26: Dokumenter i mapper (Dokumenter-fanen) ---- */
.doc-cat { padding: 10px 14px 6px; }
.doc-cat-title { display: flex; align-items: center; gap: 8px; width: 100%; border: 0; background: none; padding: 2px 0 6px; cursor: pointer; font-family: inherit; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .6px; color: var(--c-text-dim); text-align: left; }
.doc-cat-title:hover .doc-cat-name { color: var(--c-primary); }
.doc-cat-title .small { text-transform: none; letter-spacing: 0; font-weight: 500; }
.doc-cat-chevron { display: inline-flex; transition: transform .15s; transform: rotate(90deg); }
.doc-cat-chevron-folded { transform: rotate(0deg); }
.doc-row { display: flex; align-items: center; gap: 10px; padding: 7px 4px; border-top: 1px solid #F0EDE7; font-size: 13.5px; min-height: 40px; box-sizing: border-box; }
.doc-cat .doc-row:first-of-type { border-top: 0; }
.doc-type { flex: 0 0 92px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .4px; color: var(--c-text-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.doc-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 8px; }
.doc-dot-on { background: var(--c-positive); }
.doc-dot-off { border: 1.5px solid #C9C4BA; box-sizing: border-box; }
.doc-dot-archived { background: #C9C4BA; }
.doc-dot-none { visibility: hidden; }
.doc-name { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; }
a.doc-name { color: var(--c-text); }
a.doc-name:hover { color: var(--c-primary-dark); }
.doc-row-missing .doc-name { font-weight: 500; }
.doc-row-archived .doc-name, .doc-row-archived .doc-type, .doc-row-archived .doc-meta { color: var(--c-low); font-weight: 500; }
.doc-row-archived { padding-left: 22px; }
.doc-ext { font-size: 10.5px; font-weight: 700; letter-spacing: .3px; padding: 2px 6px; border-radius: 5px; background: #EFEDEA; color: var(--c-text-dim); flex: 0 0 auto; }
.doc-ext-pdf { background: #F7E7E3; color: var(--c-danger); }
.doc-ext-docx { background: #E7EEF5; color: var(--c-info); }
.doc-ext-xlsx { background: #E5F1EB; color: var(--c-positive); }
.doc-ext-pptx { background: #F8EBDD; color: var(--c-warning); }
.doc-meta { flex: 0 0 auto; display: flex; align-items: center; gap: 8px; white-space: nowrap; min-width: 60px; justify-content: flex-end; }
.doc-arch-toggle { display: flex; align-items: center; gap: 6px; width: 100%; border: 0; border-top: 1px solid #F0EDE7; background: none; padding: 8px 4px 4px; cursor: pointer; font-family: inherit; font-size: 12.5px; color: var(--c-text-dim); text-align: left; }
.doc-arch-toggle:hover { color: var(--c-primary); }
.doc-search { width: 200px; padding: 6px 10px; font-size: 13px; }
.doc-hint { margin-top: 4px; min-height: 0; }
.doc-dup { margin-top: 12px; border: 1px solid var(--c-warning); background: #FBF4E6; border-radius: var(--radius-sm); padding: 10px 12px; font-size: 13px; }
.doc-map textarea.input { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 12.5px; min-height: 120px; width: 100%; box-sizing: border-box; }
@media (max-width: 640px) {
  .doc-type { flex-basis: 64px; }
  .doc-row { flex-wrap: wrap; }
  .doc-search { width: 100%; }
}

/* ---------- v4.28: Testmiljøet (DEALFLOW_MILJOE=test) ---------- */
/* Gult bånd øverst på ALLE sider (også login). --test-baand trækkes fra #app's,
   splashens og login-sidens højde, så dokumentet ikke får en lodret rullebjælke.
   z-index over draweren (41) og dialoger, så båndet aldrig kan dækkes. */
body.miljoe-test { --test-baand: 28px; }
.test-baand {
  position: relative; z-index: 60; box-sizing: border-box; height: var(--test-baand, 28px);
  background: var(--c-warning); color: #fff; font-size: 13px; font-weight: 500; line-height: 28px;
  text-align: center; padding: 0 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.test-baand strong { font-weight: 700; letter-spacing: .02em; text-transform: uppercase; }
