/* ============================================================
   stil-personell.css — del 5/12
   Personer-fanen/org-kartet (orgp-/ok-), support (sup- inkl. offentlige
   skjema), bemanning/medarbeider (bem-/mk-)
   Del av styles.css-splitten (2026-08-07). Lastes i FAST rekkefølge —
   kildeorden er kaskade-bærende (primitivene i stil-tema.css vinner ved
   lik spesifisitet fordi de kommer sist). Ny fil? Oppdater Index.html
   (statisk lenke eller DESKTOP_STIL i loaderen) OG alle test-*.html.
   ============================================================ */
/* ══════════════════════════════════════════════════════════════
   PERSONER-FANE — Personellstyringspanel
   ══════════════════════════════════════════════════════════════ */

/* ── Hoved-layout ──────────────────────────────────────────── */
.pers-panel {
  display: flex; gap: 20px; min-height: 500px;
  padding: 4px 0;
}
.pers-venstre {
  flex: 0 0 340px; display: flex; flex-direction: column; gap: 12px;
}
.pers-hoyre {
  flex: 1; display: flex; flex-direction: column; gap: 12px; min-width: 0;
}

/* ── Topbar (søk + ny-knapp) ───────────────────────────────── */
.pers-topbar {
  display: flex; gap: 8px; align-items: center;
}
.pers-topbar-tittel {
  font-size: 13px; font-weight: 700; color: var(--text-secondary);
  text-transform: uppercase; letter-spacing: .06em;
  flex: 1;
}
.pers-sok {
  flex: 1; padding: 8px 12px; border-radius: 10px;
  border: 1.5px solid var(--border); background: var(--card, var(--bg));
  color: var(--text); font-size: 13px; outline: none;
  transition: border-color .15s;
}
.pers-sok:focus { border-color: var(--primary); }
.pers-ny-btn {
  padding: 8px 14px; border-radius: 10px; border: none;
  background: var(--primary); color: #fff; font-size: 13px; font-weight: 600;
  cursor: pointer; white-space: nowrap; transition: opacity .15s;
}
.pers-ny-btn:hover { opacity: .85; }
/* Sekundær-varianten (.pers-ny-btn--sekundaer) bor i primitiv-blokka i
   stil-tema.css — den må vinne over primær-aliaset som lastes sist. */

/* ── Personliste ───────────────────────────────────────────── */
.pers-liste {
  flex: 1; overflow-y: auto; display: flex; flex-direction: column;
  gap: 6px; padding-right: 2px;
}
.pers-liste::-webkit-scrollbar { width: 4px; }
.pers-liste::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }

/* ── Personkort ────────────────────────────────────────────── */
.pers-kort {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; border-radius: 12px;
  background: var(--card, var(--bg)); border: 1.5px solid var(--border);
  cursor: pointer; transition: border-color .15s, box-shadow .15s;
  user-select: none;
}
.pers-kort:hover { border-color: var(--primary); box-shadow: 0 2px 8px rgba(0,0,0,.15); }
.pers-kort-drag { opacity: .5; }
.pers-kort-dropmaal { border-color: var(--primary); background: var(--primary)1a; }

.pers-avatar {
  width: 38px; height: 38px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700; color: #fff; flex-shrink: 0;
  letter-spacing: .02em;
}
.pers-info { flex: 1; min-width: 0; }
.pers-navn {
  font-size: 14px; font-weight: 600; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.pers-rolle {
  font-size: 12px; color: var(--text-secondary);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.pers-team-badge {
  font-size: 11px; font-weight: 600; padding: 2px 7px; border-radius: 20px;
  background: var(--primary)22; color: var(--primary); white-space: nowrap;
  flex-shrink: 0;
}
.pers-handle {
  font-size: 16px; color: var(--text-secondary); cursor: grab; flex-shrink: 0;
  padding: 0 2px; line-height: 1;
}
.pers-handle:active { cursor: grabbing; }

.pers-ingen {
  text-align: center; color: var(--text-secondary); font-size: 13px;
  padding: 32px 0;
}

/* ── Hierarki (høyre kolonne) ──────────────────────────────── */
.pers-hierarki-topbar {
  display: flex; align-items: center; justify-content: space-between;
}
.pers-hierarki-tittel {
  font-size: 13px; font-weight: 700; color: var(--text-secondary);
  text-transform: uppercase; letter-spacing: .06em;
}
.pers-hierarki-rediger {
  font-size: 12px; padding: 5px 12px; border-radius: 8px;
  border: 1.5px solid var(--border); background: none;
  color: var(--text-secondary); cursor: pointer; transition: border-color .15s;
}
.pers-hierarki-rediger:hover { border-color: var(--primary); color: var(--primary); }

.pers-hierarki-liste {
  flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 16px;
}
.pers-hierarki-liste::-webkit-scrollbar { width: 4px; }
.pers-hierarki-liste::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }

.pers-hierarki-ingen {
  text-align: center; color: var(--text-secondary); font-size: 13px; padding: 32px 0;
}

/* ── Sektor-blokk ──────────────────────────────────────────── */
.pers-sektor-blokk { display: flex; flex-direction: column; gap: 8px; }
.pers-sektor-hdr {
  display: flex; align-items: center; gap: 8px; padding: 4px 0;
}
.pers-sektor-dot {
  width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0;
}
.pers-sektor-navn {
  font-size: 13px; font-weight: 700; color: var(--text); flex: 1;
}
.pers-sektor-tall {
  font-size: 12px; color: var(--text-secondary);
  background: var(--bg); padding: 2px 8px; border-radius: 20px;
  border: 1px solid var(--border);
}
.pers-sektor-teams { display: flex; flex-wrap: wrap; gap: 8px; }

/* ── Team-mål (drop target) ────────────────────────────────── */
.pers-team-target {
  flex: 0 1 calc(50% - 4px); min-width: 140px;
  border-radius: 12px; border: 1.5px solid var(--border);
  background: var(--card, var(--bg)); padding: 10px 12px;
  transition: border-color .15s, background .15s; cursor: default;
}
.pers-team-over {
  border-color: var(--primary) !important;
  background: color-mix(in srgb, var(--primary) 8%, var(--bg)) !important;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 20%, transparent);
}
.pers-team-naam {
  font-size: 13px; font-weight: 600; color: var(--text);
  margin-bottom: 6px;
}
.pers-team-bunn { display: flex; align-items: center; gap: 6px; }
.pers-team-avatarer { display: flex; }
.pers-mini-avatar {
  width: 24px; height: 24px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 9px; font-weight: 700; color: #fff;
  border: 2px solid var(--bg); margin-left: -6px; flex-shrink: 0;
}
.pers-mini-avatar:first-child { margin-left: 0; }
.pers-mini-mer {
  width: 24px; height: 24px; border-radius: 50%;
  background: var(--border); color: var(--text-secondary);
  font-size: 9px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  border: 2px solid var(--bg); margin-left: -6px; flex-shrink: 0;
}
.pers-team-tall {
  font-size: 11px; color: var(--text-secondary); margin-left: auto;
}
.pers-team-tom {
  font-size: 11px; color: var(--text-secondary); font-style: italic;
  padding: 4px 0;
}

/* ── "Ikke tildelt team" rad ───────────────────────────────── */
.pers-ingen-team-liste {
  display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 0;
}
.pers-ingen-team-chip {
  font-size: 12px; padding: 3px 10px; border-radius: 20px;
  background: var(--bg); border: 1.5px solid var(--border);
  color: var(--text-secondary); cursor: pointer; transition: border-color .15s;
}
.pers-ingen-team-chip:hover { border-color: var(--primary); color: var(--primary); }

/* ── Rediger-modal ─────────────────────────────────────────── */
.pers-modal-overlay {
  position: fixed; inset: 0; background: rgba(0,0,0,.5);
  display: flex; align-items: center; justify-content: center;
  z-index: 9000; backdrop-filter: blur(2px);
  animation: persOverlayIn .15s ease;
}
@keyframes persOverlayIn { from { opacity: 0; } to { opacity: 1; } }

.pers-modal {
  background: var(--sidebar, var(--bg)); border-radius: 18px;
  width: 440px; max-width: calc(100vw - 32px); max-height: 90vh;
  overflow-y: auto; box-shadow: 0 24px 60px rgba(0,0,0,.4);
  animation: persModalIn .2s ease;
}
@keyframes persModalIn { from { transform: translateY(16px); opacity: 0; } to { transform: none; opacity: 1; } }

.pm-header {
  display: flex; align-items: center; gap: 14px;
  padding: 22px 24px 16px;
  border-bottom: 1px solid var(--border);
}
.pm-avatar {
  width: 52px; height: 52px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; font-weight: 800; color: #fff; flex-shrink: 0;
}
.pm-tittel { flex: 1; }
.pm-tittel h3 { font-size: 16px; font-weight: 700; margin: 0 0 2px; }
.pm-tittel p { font-size: 12px; color: var(--text-secondary); margin: 0; }
.pm-lukk {
  width: 32px; height: 32px; padding: 0; border-radius: 50%; border: none;
  background: var(--border); color: var(--text); cursor: pointer;
  font-size: 16px; display: flex; align-items: center; justify-content: center;
  transition: background .15s; flex-shrink: 0;
}
.pm-lukk:hover { background: var(--primary); color: #fff; }

.pm-body { padding: 20px 24px; display: flex; flex-direction: column; gap: 14px; }
.pm-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.pm-felt { display: flex; flex-direction: column; gap: 5px; }
.pm-felt label { font-size: 12px; font-weight: 600; color: var(--text-secondary); }
.pm-input {
  padding: 9px 12px; border-radius: 9px;
  border: 1.5px solid var(--border); background: var(--card, var(--bg));
  color: var(--text); font-size: 13px; outline: none; width: 100%;
  box-sizing: border-box; transition: border-color .15s;
}
.pm-input:focus { border-color: var(--primary); }
.pm-input[disabled] { opacity: .5; cursor: not-allowed; }

.pm-footer {
  display: flex; align-items: center; gap: 8px;
  padding: 16px 24px; border-top: 1px solid var(--border);
}
.pm-slett {
  padding: 9px 14px; border-radius: 9px; border: 1.5px solid #e74c3c44;
  background: none; color: #e74c3c; cursor: pointer; font-size: 13px;
  font-weight: 600; transition: background .15s;
}
.pm-slett:hover { background: #e74c3c22; }
.pm-avbryt {
  margin-left: auto; padding: 9px 16px; border-radius: 9px;
  border: 1.5px solid var(--border); background: none;
  color: var(--text-secondary); cursor: pointer; font-size: 13px;
  transition: border-color .15s;
}
.pm-avbryt:hover { border-color: var(--primary); color: var(--primary); }
.pm-lagre {
  padding: 9px 20px; border-radius: 9px; border: none;
  background: var(--primary); color: #fff; font-size: 13px; font-weight: 700;
  cursor: pointer; transition: opacity .15s;
}
.pm-lagre:hover { opacity: .85; }

/* ── Angre-toast ───────────────────────────────────────────── */
.pers-undo-toast {
  position: fixed; bottom: 28px; left: 50%; transform: translateX(-50%);
  background: #1e2130; color: #fff; border-radius: 12px;
  padding: 12px 18px; display: flex; align-items: center; gap: 14px;
  font-size: 13px; font-weight: 500; box-shadow: 0 8px 32px rgba(0,0,0,.4);
  z-index: 9999; white-space: nowrap;
  animation: persToastIn .25s cubic-bezier(.34,1.56,.64,1);
}
@keyframes persToastIn { from { transform: translateX(-50%) translateY(20px); opacity: 0; } to { transform: translateX(-50%) translateY(0); opacity: 1; } }

.pers-undo-btn {
  padding: 5px 12px; border-radius: 8px; border: 1.5px solid rgba(255,255,255,.3);
  background: none; color: #fff; cursor: pointer; font-size: 12px; font-weight: 700;
  transition: background .15s;
}
.pers-undo-btn:hover { background: rgba(255,255,255,.15); }

/* ── Responsiv ─────────────────────────────────────────────── */
@media (max-width: 860px) {
  .pers-panel { flex-direction: column; }
  .pers-venstre { flex: none; }
  .pers-team-target { flex: 0 1 100%; }
}

/* ── Hierarki-redigeringsmodus ─────────────────────────────── */
.pers-rediger-wrapper {
  flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 20px;
}
.pers-rediger-seksjon { display: flex; flex-direction: column; gap: 6px; }
.pers-rediger-hdr {
  display: flex; align-items: center; justify-content: space-between;
  padding-bottom: 8px; border-bottom: 1px solid var(--border);
  font-size: 12px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: var(--text-secondary);
}
.pers-rediger-ny {
  padding: 4px 10px; border-radius: 8px; border: 1.5px solid var(--primary);
  background: none; color: var(--primary); font-size: 12px; font-weight: 600;
  cursor: pointer; transition: background .15s;
}
.pers-rediger-ny:hover { background: color-mix(in srgb, var(--primary) 12%, transparent); }
.pers-rediger-rad {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 10px; border-radius: 10px;
  border: 1.5px solid var(--border); background: var(--card, var(--bg));
  transition: border-color .15s;
}
.pers-rediger-rad:hover { border-color: color-mix(in srgb, var(--primary) 40%, transparent); }
.pers-rediger-rad-navn { flex: 1; font-size: 13px; font-weight: 600; color: var(--text); }
.pers-rediger-rad-chip {
  font-size: 11px; font-weight: 600; padding: 2px 7px; border-radius: 20px;
  white-space: nowrap; flex-shrink: 0;
}
.pers-rediger-tom {
  font-size: 12px; color: var(--text-secondary); font-style: italic; padding: 8px 4px;
}
.pers-rediger-ikonbtn {
  width: 28px; height: 28px; border-radius: 8px; border: none;
  background: none; cursor: pointer; font-size: 14px;
  display: flex; align-items: center; justify-content: center;
  color: var(--text-secondary); transition: background .15s, color .15s; flex-shrink: 0;
}
.pers-rediger-ikonbtn:hover { background: var(--border); color: var(--text); }
.pers-rediger-ikonbtn.slett:hover { background: #e74c3c22; color: #e74c3c; }

/* ── Ansvarlig chip-select: gruppe-labels ──────────────────── */
.chip-gruppe-label {
  font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: var(--text-secondary);
  width: 100%; padding: 6px 2px 2px; margin-top: 4px;
  pointer-events: none;
}

/* Klikkbar sektoroverskrift i team-velgeren: trykk velger/fjerner alle team
   i gruppa (toggleSektorGruppe). To-klasse-selektor fordi .modal-content
   button (0,1,1) ellers gir knappen chip-bakgrunn og -ramme. */
.chip-select > .chip-gruppe-velg {
  pointer-events: auto; cursor: pointer;
  display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
  background: none; border: none; font-family: inherit; text-align: left;
}
.chip-select > .chip-gruppe-velg:hover { background: none; border: none; }
.chip-select > .chip-gruppe-velg:hover .chip-gruppe-navn { color: var(--text); }
.chip-gruppe-hint {
  font-size: 10px; font-weight: 600; letter-spacing: 0; text-transform: none;
  color: var(--primary); white-space: nowrap;
}

/* ── Leder-stjerne i personkort ────────────────────────────── */
.pers-leder-stjerne {
  color: var(--primary); font-size: 11px; opacity: .8;
}

/* ── Roller-admin panel (org-innstillinger) ────────────────── */
.rolle-panel {
  max-width: 560px; display: flex; flex-direction: column; gap: 20px;
  padding: 4px 0;
}
.rolle-topbar {
  display: flex; align-items: center; justify-content: space-between;
}
.rolle-tittel {
  font-size: 16px; font-weight: 700; margin: 0; color: var(--text);
}
.rolle-ny-btn {
  padding: 7px 14px; border-radius: 9px; border: 1.5px solid var(--primary);
  background: none; color: var(--primary); font-size: 13px; font-weight: 600;
  cursor: pointer; transition: background .15s;
}
.rolle-ny-btn:hover { background: color-mix(in srgb, var(--primary) 10%, transparent); }
.rolle-liste { display: flex; flex-direction: column; gap: 6px; }
.rolle-ingen {
  font-size: 13px; color: var(--text-secondary); font-style: italic; padding: 8px 0;
}
.rolle-rad {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; border-radius: 10px;
  border: 1.5px solid var(--border); background: var(--card, var(--bg));
  transition: border-color .15s;
}
.rolle-rad:hover { border-color: color-mix(in srgb, var(--primary) 35%, transparent); }
.rolle-rad-navn { flex: 1; font-size: 14px; font-weight: 600; color: var(--text); }
.rolle-leder-toggle {
  display: flex; align-items: center; gap: 6px;
  font-size: 12px; color: var(--text-secondary); cursor: pointer;
  user-select: none;
}
.rolle-leder-toggle input { accent-color: var(--primary); width: 15px; height: 15px; cursor: pointer; }
.rolle-slett-btn {
  width: 26px; height: 26px; border-radius: 7px; border: none;
  background: none; color: var(--text-secondary); cursor: pointer; font-size: 13px;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s, color .15s; flex-shrink: 0;
}
.rolle-slett-btn:hover { background: #e74c3c22; color: #e74c3c; }
/* ── Kjøreplan-kategorier (org-config) ─────────────────────────── */
.kpkat-panel { padding: 22px 22px 26px; max-width: 920px; }
.kpkat-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 20px; }
.kpkat-tittel { display: flex; align-items: center; gap: 10px; margin: 0 0 6px; font-size: 18px; font-weight: 800; letter-spacing: -.01em; color: var(--text); }
.kpkat-tittel-bars { display: inline-flex; gap: 3px; }
.kpkat-tittel-bars i { width: 4px; height: 17px; border-radius: 2px; background: var(--d); }
.kpkat-antall { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 20px; padding: 0 7px; border-radius: 999px; background: var(--bg2); color: var(--text-muted); font-size: 12px; font-weight: 700; }
.kpkat-sub { margin: 0; font-size: 12.5px; color: var(--text-muted); line-height: 1.5; max-width: 52ch; }
.kpkat-ny {
  display: inline-flex; align-items: center; gap: 7px; flex-shrink: 0;
  padding: 9px 15px; border-radius: 10px; cursor: pointer; white-space: nowrap;
  font-size: 13px; font-weight: 700; font-family: inherit;
  color: #fff; background: var(--primary); border: none;
  box-shadow: 0 2px 7px color-mix(in srgb, var(--primary) 28%, transparent);
  transition: transform .14s ease, box-shadow .14s ease, background .14s;
}
.kpkat-ny:hover { transform: translateY(-1px); background: var(--primary-dark); box-shadow: 0 6px 16px color-mix(in srgb, var(--primary) 36%, transparent); }
.kpkat-ny:active { transform: translateY(0); }

.kpkat-liste { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }

.kpkat-kort {
  position: relative; overflow: hidden;
  background: var(--surface); border: 1px solid var(--border); border-radius: 16px;
  padding: 14px 16px 13px 21px;
  box-shadow: 0 1px 2px rgba(60,40,30,.05);
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.kpkat-liste--animer .kpkat-kort { animation: kpkatInn .42s cubic-bezier(.22,1,.36,1) both; animation-delay: calc(var(--i, 0) * 45ms); }
.kpkat-kort:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(60,40,30,.10); border-color: color-mix(in srgb, var(--kat) 45%, var(--border)); }
.kpkat-stripe { position: absolute; left: 0; top: 0; bottom: 0; width: 6px; background: var(--kat); }

.kpkat-kort-topp { display: flex; align-items: center; gap: 8px; }
.kpkat-navn {
  flex: 1; min-width: 0; font-family: inherit; font-size: 16px; font-weight: 700; color: var(--text); letter-spacing: -.01em;
  border: none; background: transparent; padding: 4px 4px; outline: none;
  border-bottom: 2px solid transparent; transition: border-color .14s, background .14s;
}
.kpkat-navn::placeholder { color: color-mix(in srgb, var(--text) 30%, transparent); font-weight: 600; }
.kpkat-navn:hover { background: color-mix(in srgb, var(--text) 3.5%, transparent); border-radius: 6px 6px 0 0; }
.kpkat-navn:focus { border-bottom-color: var(--kat); background: color-mix(in srgb, var(--kat) 7%, transparent); border-radius: 6px 6px 0 0; }
.kpkat-slett {
  flex-shrink: 0; width: 30px; height: 30px; border-radius: 8px; border: none; background: none;
  color: var(--text-muted); cursor: pointer; display: grid; place-items: center; transition: background .14s, color .14s;
}
.kpkat-slett:hover { background: rgb(var(--st-feil-tint))16; color: rgb(var(--st-feil-tint)); }

.kpkat-preview { margin: 11px 0 13px; }
.kpkat-preview-hint { display: block; font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .09em; color: color-mix(in srgb, var(--text) 38%, transparent); margin-bottom: 6px; }
.kpkat-preview-rad {
  display: flex; align-items: center; gap: 9px;
  background: var(--paper); border: 1px solid var(--border); border-radius: 9px;
  padding: 8px 11px; box-shadow: inset 4px 0 0 0 var(--kat);
}
.kpkat-preview-pille {
  flex-shrink: 0; font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  padding: 1.5px 8px; border-radius: 999px; white-space: nowrap; max-width: 120px; overflow: hidden; text-overflow: ellipsis;
  border: 1px solid color-mix(in srgb, var(--kat) 45%, transparent);
  background: color-mix(in srgb, var(--kat) 16%, transparent);
  color: color-mix(in srgb, var(--kat) 66%, var(--text));
}
.kpkat-preview-tittel { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kpkat-preview-tid { flex-shrink: 0; font-size: 11px; font-weight: 600; color: var(--text-muted); font-variant-numeric: tabular-nums; }
/* Brukstall-linje (event-kategorier) — i samme kort-slot som preview-raden */
.kpkat-bruk { display: flex; align-items: center; gap: 7px; margin: 11px 0 13px; font-size: 12px; color: var(--text-muted); line-height: 1.4; }
.kpkat-bruk svg { flex-shrink: 0; opacity: .7; }
.kpkat-bruk strong { color: var(--text); font-weight: 700; }
/* Scope-merke (event-nivå kategorier): delt fra org / egen variant / kun dette eventet */
.kpkat-scope { display: inline-flex; align-items: center; padding: 1.5px 8px; border-radius: 999px; font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; flex-shrink: 0; }
.kpkat-scope--org { background: color-mix(in srgb, var(--accent) 14%, transparent); color: color-mix(in srgb, var(--accent) 72%, var(--text)); }
.kpkat-scope--override { background: var(--amber-soft); color: var(--amber-text); }
.kpkat-scope--event { background: color-mix(in srgb, var(--text) 9%, transparent); color: var(--text-muted); }
.kpkat-bruk-tom { font-style: italic; opacity: .85; }
/* Seksjoner (org-maler vs event-kategorier) */
.kpkat-seksjon-tittel { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; color: color-mix(in srgb, var(--text) 48%, transparent); margin: 24px 0 11px; }
.kpkat-seksjon-tittel--forste { margin-top: 2px; }
.kpkat-seksjon-hd { margin: 28px 0 13px; }
.kpkat-seksjon-hd .kpkat-seksjon-tittel { display: block; margin: 0 0 3px; }
.kpkat-seksjon-sub { display: block; font-size: 12px; color: var(--text-muted); line-height: 1.45; font-weight: 400; text-transform: none; letter-spacing: 0; }
.kpkat-event-gruppe { margin-bottom: 6px; }
.kpkat-event-gruppe-navn { display: flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 700; color: var(--text); margin: 13px 0 9px; }
.kpkat-event-gruppe-navn::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--text-muted); opacity: .5; flex-shrink: 0; }
.kpkat-maler-tom { font-size: 13px; color: var(--text-muted); padding: 14px 16px; background: var(--paper); border: 1px dashed var(--border); border-radius: 12px; line-height: 1.5; }
/* Event-kategori-kort (kun visning + «hent opp») */
.kpkat-kort--event { background: var(--paper); }
.kpkat-navn-static { flex: 1; min-width: 0; font-size: 16px; font-weight: 700; color: var(--text); letter-spacing: -.01em; padding: 4px 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kpkat-hentopp {
  display: inline-flex; align-items: center; gap: 7px; margin-top: 2px; min-height: 0;
  padding: 7px 13px; border-radius: 9px; cursor: pointer; font-family: inherit;
  font-size: 12px; font-weight: 700;
  color: var(--primary); background: color-mix(in srgb, var(--primary) 9%, transparent);
  border: 1px solid color-mix(in srgb, var(--primary) 30%, transparent);
  transition: background .14s, border-color .14s, transform .12s;
}
.kpkat-hentopp:hover { background: color-mix(in srgb, var(--primary) 16%, transparent); border-color: color-mix(in srgb, var(--primary) 45%, transparent); transform: translateY(-1px); }

.kpkat-palett { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.kpkat-dot {
  width: 22px; height: 22px; min-height: 0; flex-shrink: 0; border-radius: 50%; cursor: pointer; padding: 0;
  background: var(--d); border: 2px solid var(--surface);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--d) 45%, transparent);
  transition: transform .12s ease, box-shadow .12s ease;
}
.kpkat-dot:hover { transform: scale(1.18); }
.kpkat-dot--aktiv { box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--d); transform: scale(1.08); }
.kpkat-custom {
  position: relative; width: 22px; height: 22px; border-radius: 50%; cursor: pointer;
  display: grid; place-items: center; color: var(--text-muted);
  border: 1.5px dashed color-mix(in srgb, var(--text) 28%, transparent);
  transition: color .14s, border-color .14s, transform .12s;
}
.kpkat-custom:hover { color: var(--text); border-color: var(--text-muted); transform: scale(1.1); }
.kpkat-custom input[type="color"] { position: absolute; inset: 0; opacity: 0; cursor: pointer; border: none; padding: 0; }

.kpkat-note {
  display: flex; align-items: center; gap: 8px; margin-top: 18px;
  padding: 10px 13px; border-radius: 11px; font-size: 12px; line-height: 1.4;
  background: var(--amber-soft); color: var(--amber-text);
  border: 1px solid color-mix(in srgb, var(--amber) 22%, transparent);
}
.kpkat-note svg { flex-shrink: 0; opacity: .85; }

.kpkat-tom { grid-column: 1 / -1; text-align: center; padding: 46px 20px; }
.kpkat-tom-ikon { display: inline-flex; gap: 5px; margin-bottom: 16px; }
.kpkat-tom-ikon span { width: 9px; height: 34px; border-radius: 4px; background: var(--d); opacity: .9; animation: kpkatInn .5s ease both; }
.kpkat-tom-ikon span:nth-child(2) { animation-delay: .08s; }
.kpkat-tom-ikon span:nth-child(3) { animation-delay: .16s; }
.kpkat-tom-tittel { font-size: 16px; font-weight: 700; color: var(--text); margin-bottom: 6px; }
.kpkat-tom-tekst { font-size: 13px; color: var(--text-muted); margin: 0 auto 18px; max-width: 38ch; line-height: 1.5; }

@keyframes kpkatInn { from { opacity: 0; transform: translateY(9px); } to { opacity: 1; transform: translateY(0); } }
.rolle-info {
  font-size: 12px; color: var(--text-secondary);
  padding: 10px 14px; border-radius: 8px;
  background: var(--bg); border: 1px solid var(--border);
  margin: 0; line-height: 1.6;
}

/* ── Personell: filter chips ─────────────────────────────────── */
.pers-filter-chips {
  display: flex; gap: 6px; padding: 8px 14px 0;
}
.pers-filter-chip {
  font-size: 12px; font-weight: 600; border: 1.5px solid var(--border);
  background: var(--card, var(--bg)); color: var(--text-secondary);
  border-radius: 20px; padding: 3px 12px; cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.pers-filter-chip:hover { border-color: var(--primary); color: var(--primary); }
.pers-filter-chip.aktiv {
  background: var(--primary); color: #fff; border-color: var(--primary);
}

/* ── Personell: multi-select bar ──────────────────────────────── */
.pers-multi-bar {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 14px; background: var(--primary)10;
  border-bottom: 1px solid var(--border);
  font-size: 13px; font-weight: 600; color: var(--primary);
}
.pers-flytt-sel {
  flex: 1; font-size: 12px; border: 1.5px solid var(--border);
  border-radius: 8px; padding: 4px 8px; background: var(--bg); color: var(--text);
  cursor: pointer;
}
.pers-flytt-btn {
  font-size: 12px; font-weight: 700; padding: 4px 14px;
  border-radius: 8px; border: none; background: var(--primary); color: #fff;
  cursor: pointer; transition: opacity .15s;
}
.pers-flytt-btn:hover { opacity: .85; }
.pers-avmarker-btn {
  width: 28px; height: 28px; border-radius: 8px; border: none;
  background: none; color: var(--text-secondary); cursor: pointer; font-size: 14px;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s;
}
.pers-avmarker-btn:hover { background: var(--border); }

/* ── Personell: multi-select checkbox on kort ─────────────────── */
.pers-valg-cb {
  width: 32px; flex-shrink: 0; display: flex; align-items: center; justify-content: center;
  cursor: pointer;
}
.pers-cb {
  width: 16px; height: 16px; border-radius: 5px;
  border: 2px solid var(--border); background: var(--bg);
  transition: border-color .15s, background .15s;
}
.pers-cb.checked {
  background: var(--primary); border-color: var(--primary);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6l3 3 5-5' stroke='white' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-size: 10px; background-repeat: no-repeat; background-position: center;
}
.pers-kort.valgt {
  border-color: var(--primary);
  background: color-mix(in srgb, var(--primary) 6%, var(--card, var(--bg)));
}

/* ── Personell: org person lookup modal ──────────────────────── */
.pers-org-liste {
  max-height: 280px; overflow-y: auto;
  border: 1.5px solid var(--border); border-radius: 10px;
  background: var(--card, var(--bg));
}
.pers-org-rad {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; cursor: pointer;
  border-bottom: 1px solid var(--border);
  transition: background .12s;
}
.pers-org-rad:last-child { border-bottom: none; }
.pers-org-rad:hover { background: color-mix(in srgb, var(--primary) 8%, transparent); }
.pers-org-rad-navn { font-size: 14px; font-weight: 600; color: var(--text); }
.pers-org-rad-epost { font-size: 12px; color: var(--text-secondary); margin-top: 1px; }
.pers-org-ingen {
  padding: 16px; text-align: center;
  font-size: 13px; color: var(--text-secondary); font-style: italic;
}
.pers-org-ny-btn {
  font-size: 13px; font-weight: 600; color: var(--primary); background: none;
  border: 1.5px dashed var(--primary); border-radius: 8px;
  padding: 7px 16px; cursor: pointer; width: 100%;
  transition: background .15s;
}
.pers-org-ny-btn:hover { background: color-mix(in srgb, var(--primary) 8%, transparent); }

/* ── Personell: org søkbar + legg-til-alle ───────────────────── */
.pers-org-sokbar {
  display: flex; gap: 8px; margin-bottom: 10px; align-items: center;
}
.pers-legg-alle-btn {
  flex-shrink: 0; font-size: 12px; font-weight: 700;
  background: var(--primary); color: #fff; border: none;
  border-radius: 8px; padding: 6px 14px; cursor: pointer;
  white-space: nowrap; transition: opacity .15s;
  display: inline-flex; align-items: center;
}
.pers-legg-alle-btn:hover { opacity: .85; }
.pers-org-rolle-chips {
  display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 10px;
}

/* ── Personell: org fler-valg (Legg til deltakere) ───────────── */
.pers-org-check {
  flex-shrink: 0; width: 20px; height: 20px; border-radius: 6px;
  border: 2px solid var(--border); background: var(--bg);
  display: flex; align-items: center; justify-content: center;
  transition: background .12s, border-color .12s;
}
.pers-org-rad.valgt { background: color-mix(in srgb, var(--primary) 10%, transparent); }
.pers-org-rad.valgt .pers-org-check { background: var(--primary); border-color: var(--primary); }
.pers-org-rad.valgt .pers-org-check::after {
  content: ''; width: 5px; height: 9px; box-sizing: border-box;
  border: solid #fff; border-width: 0 2px 2px 0;
  transform: rotate(45deg); margin-top: -2px;
}
.pers-velg-alle-bar { display: none; align-items: center; margin-bottom: 8px; padding: 0 2px; }
.pers-velg-alle {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
  font-size: 13px; font-weight: 600; color: var(--text-secondary); user-select: none;
}
.pers-velg-alle input { width: 16px; height: 16px; accent-color: var(--primary); cursor: pointer; }
.pers-org-footer {
  display: flex; gap: 10px; align-items: center;
  border-top: 1px solid var(--border); margin-top: 12px; padding-top: 12px;
}
.pers-org-legg-btn {
  flex-shrink: 0; font-size: 14px; font-weight: 700;
  background: var(--primary); color: #fff; border: none;
  border-radius: 8px; padding: 10px 20px; cursor: pointer;
  transition: opacity .15s;
}
.pers-org-legg-btn:hover:not(:disabled) { opacity: .9; }
.pers-org-legg-btn:disabled { opacity: .4; cursor: not-allowed; }

/* ── Personell: velg-alle-med-rolle bar ──────────────────────── */
.pers-velg-rolle-bar {
  padding: 6px 14px 0;
}

/* ── Personell: sektor ledere strip ─────────────────────────── */
.pers-sektor-ledere {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding: 6px 14px 2px;
}
.pers-leder-chip {
  display: inline-flex; align-items: center; gap: 5px;
  background: color-mix(in srgb, var(--primary) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--primary) 25%, transparent);
  border-radius: 20px; padding: 3px 10px 3px 4px;
  font-size: 12px; color: var(--text); cursor: pointer;
  transition: background .12s;
}
.pers-leder-chip:hover { background: color-mix(in srgb, var(--primary) 18%, transparent); }
.pers-leder-chip-init {
  width: 20px; height: 20px; border-radius: 50%;
  background: var(--primary); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 700;
}
.pers-leder-chip-navn { font-weight: 600; }
.pers-leder-chip-mer {
  font-size: 12px; color: var(--text-secondary);
  padding: 3px 8px;
}

/* ── Personell: team leder ───────────────────────────────────── */
.pers-team-leder {
  font-size: 11px; color: var(--primary); font-weight: 600;
  padding: 2px 0 4px; line-height: 1.4;
}
.pers-team-leder span { cursor: pointer; }
.pers-team-leder span:hover { text-decoration: underline; }
.pers-team-leder.ingen { color: var(--text-secondary); font-weight: 400; font-style: italic; }

/* ── Ansatte: split-layout ───────────────────────────────────── */
.ans-splitt {
  display: flex; align-items: stretch;
  border: 1px solid var(--border); border-radius: 12px; overflow: hidden;
  background: var(--bg);
}
.ans-liste-kol {
  flex: 0 0 300px; min-width: 220px;
  display: flex; flex-direction: column;
  border-right: 1px solid var(--border);
  overflow: hidden;
  max-height: calc(100vh - 160px); min-height: 420px;
}
.ans-liste-kol-header { padding: 12px 12px 0; flex-shrink: 0; }
.ans-liste-kol-innhold { flex: 1; overflow-y: auto; }
.ans-liste-kol-footer {
  padding: 8px 12px; border-top: 1px solid var(--border);
  flex-shrink: 0;
}
.ans-detalj-kol {
  flex: 1; min-width: 0; display: flex; flex-direction: column;
  overflow: hidden; max-height: calc(100vh - 160px); min-height: 420px;
}
.ans-detalj-innhold {
  flex: 1; display: flex; flex-direction: column; overflow: hidden;
}
.ans-detalj-tom {
  flex: 1; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 10px;
  padding: 32px; text-align: center;
}
.ans-rad.aktiv { background: color-mix(in srgb, var(--primary) 10%, transparent) !important; }

/* ── Ansatte-panel (org-admin fane) ─────────────────────────── */
.ans-panel { display: flex; flex-direction: column; gap: 0; }
.ans-topbar {
  display: flex; gap: 6px; align-items: center; margin-bottom: 8px; flex-wrap: wrap;
}
.ans-sok {
  flex: 1; min-width: 180px; border: 1.5px solid var(--border);
  border-radius: 10px; padding: 8px 12px; font-size: 13px;
  background: var(--bg); color: var(--text);
}
.ans-ny-btn {
  font-size: 13px; font-weight: 700; padding: 8px 16px;
  background: var(--primary); color: #fff; border: none;
  border-radius: 10px; cursor: pointer; white-space: nowrap;
  transition: opacity .15s;
}
.ans-ny-btn:hover { opacity: .85; }
.ans-csv-btn {
  font-size: 13px; font-weight: 600; padding: 8px 14px;
  background: none; color: var(--primary);
  border: 1.5px solid var(--primary); border-radius: 10px;
  cursor: pointer; white-space: nowrap; transition: background .15s;
}
.ans-csv-btn:hover { background: color-mix(in srgb, var(--primary) 8%, transparent); }
.ans-filter-chips { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 14px; }
.ans-filter-chip {
  font-size: 12px; font-weight: 600; padding: 3px 12px;
  border: 1.5px solid var(--border); border-radius: 20px;
  background: var(--card,var(--bg)); color: var(--text-secondary); cursor: pointer;
  transition: background .12s, color .12s, border-color .12s;
}
.ans-filter-chip:hover { border-color: var(--primary); color: var(--primary); }
.ans-filter-chip.aktiv { background: var(--primary); color: #fff; border-color: var(--primary); }
.ans-tabell { width: 100%; border-collapse: collapse; font-size: 13px; }
.ans-th {
  text-align: left; font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .05em; color: var(--text-secondary);
  padding: 6px 10px; border-bottom: 2px solid var(--border);
}
.ans-rad { border-bottom: 1px solid var(--border); transition: background .1s; }
.ans-rad:hover { background: color-mix(in srgb, var(--primary) 4%, transparent); }
.ans-td { padding: 10px 10px; color: var(--text); vertical-align: middle; }
.ans-td-navn { padding: 10px 10px; vertical-align: middle; }
.ans-td-epost { max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ans-td-tlf { white-space: nowrap; }
.ans-td-actions { padding: 6px 10px; text-align: right; white-space: nowrap; }
.ans-rad-klikk { cursor: pointer; }
.ans-td-epost a { color: var(--primary); text-decoration: none; }
.ans-td-epost a:hover { text-decoration: underline; }
.ans-avatar {
  width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700;
}
.ans-ikonbtn {
  width: 28px; height: 28px; border-radius: 7px; border: none;
  background: none; color: var(--text-secondary); cursor: pointer;
  font-size: 13px; display: inline-flex; align-items: center; justify-content: center;
  transition: background .12s, color .12s;
}
.ans-ikonbtn:hover { background: color-mix(in srgb, var(--primary) 10%, transparent); color: var(--primary); }
.ans-ikonbtn.slett:hover { background: #e74c3c22; color: #e74c3c; }
.ans-ingen {
  padding: 32px; text-align: center;
  font-size: 14px; color: var(--text-secondary); font-style: italic;
}
.ans-footer {
  padding: 10px 10px 0; font-size: 12px; color: var(--text-secondary); text-align: right;
}

/* ── Ansatte: bulk-markering ─────────────────────────────────── */
.ans-rad.valgt { background: color-mix(in srgb, var(--primary) 6%, transparent); }
.ans-cb { accent-color: var(--primary); width: 14px; height: 14px; cursor: pointer; flex-shrink: 0; }
.ans-td-cb { padding: 0 2px 0 10px; width: 24px; }
.ans-bulk-bar {
  background: color-mix(in srgb, var(--primary) 8%, var(--bg));
  border-bottom: 1px solid color-mix(in srgb, var(--primary) 20%, var(--border));
  padding: 8px 12px; display: flex; flex-direction: column; gap: 6px;
}
.ans-bulk-rad1 { display: flex; align-items: center; gap: 8px; }
.ans-bulk-teller { font-size: 12px; font-weight: 700; color: var(--primary); }
.ans-bulk-link {
  background: none; border: none; color: var(--text-secondary);
  font-size: 11px; cursor: pointer; text-decoration: underline; padding: 0;
}
.ans-bulk-actions { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ans-bulk-btn {
  font-size: 11px; font-weight: 600; padding: 4px 10px; border-radius: 6px;
  border: 1px solid var(--border); background: var(--bg); color: var(--text); cursor: pointer;
  transition: background .12s;
}
.ans-bulk-btn:hover { background: var(--border); }
.ans-bulk-btn.evt { background: var(--primary); color: #fff; border-color: var(--primary); }
.ans-bulk-btn.evt:hover { opacity: .85; }
.ans-bulk-btn.inv { background: #059669; color: #fff; border-color: #059669; }
.ans-bulk-btn.inv:hover { opacity: .85; }
.ans-bulk-btn.slett { color: rgb(var(--st-feil-tint)); border-color: rgba(var(--st-feil-tint),.3); }
.ans-bulk-btn.slett:hover { background: rgba(var(--st-feil-tint),.1); }
.ans-bulk-rolle {
  font-size: 11px; padding: 4px 8px; border: 1px solid var(--border);
  border-radius: 6px; background: var(--bg); color: var(--text); cursor: pointer;
}

@media (max-width: 680px) {
  .ans-splitt { flex-direction: column; }
  .ans-liste-kol { flex: none; max-height: 50vh; border-right: none; border-bottom: 1px solid var(--border); }
  .ans-detalj-kol { max-height: none; min-height: 360px; }
}

/* ── Ansatte: edit + import modal ────────────────────────────── */
.ans-overlay {
  position: fixed; inset: 0; background: rgba(0,0,0,.45);
  display: flex; align-items: center; justify-content: center;
  z-index: 9999;
}
.ans-modal {
  background: var(--surface); border-radius: 16px;
  width: min(560px, 94vw); max-height: 90vh;
  box-shadow: 0 20px 60px rgba(0,0,0,.45);
  display: flex; flex-direction: column; overflow: hidden;
  color: var(--text);
  --text-secondary: var(--text-muted);
}
.ans-modal .ans-input {
  background: var(--bg);
}
.ans-modal-header {
  display: flex; align-items: center; gap: 10px; padding: 18px 22px;
  border-bottom: 1px solid var(--border);
}
.ans-modal-header h3 { flex: 1; margin: 0; font-size: 16px; font-weight: 700; }
.ans-lukk {
  width: 30px; height: 30px; border-radius: 8px; border: none;
  background: none; cursor: pointer; font-size: 16px; color: var(--text-secondary);
  display: flex; align-items: center; justify-content: center;
}
.ans-lukk:hover { background: var(--border); }
.ans-modal-body { padding: 20px 22px; overflow-y: auto; display: flex; flex-direction: column; gap: 14px; }
.ans-felt { display: flex; flex-direction: column; gap: 5px; }
.ans-felt label { font-size: 12px; font-weight: 700; color: var(--text-secondary); }
.ans-input {
  border: 1.5px solid var(--border); border-radius: 10px;
  padding: 8px 12px; font-size: 14px; background: var(--bg); color: var(--text);
  width: 100%; box-sizing: border-box;
}
.ans-input:focus { outline: none; border-color: var(--primary); }
.ans-modal-footer {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 22px; border-top: 1px solid var(--border);
}
.ans-slett-btn {
  font-size: 13px; padding: 8px 14px; border-radius: 10px; border: none;
  background: #e74c3c18; color: #e74c3c; cursor: pointer; font-weight: 600;
  transition: background .15s;
}
.ans-slett-btn:hover { background: #e74c3c30; }
.ans-avbryt-btn {
  font-size: 13px; padding: 8px 16px; border-radius: 10px;
  border: 1.5px solid var(--border); background: none; color: var(--text);
  cursor: pointer; transition: border-color .15s;
}
.ans-avbryt-btn:hover { border-color: var(--primary); }
.ans-lagre-btn {
  font-size: 13px; font-weight: 700; padding: 8px 20px; border-radius: 10px;
  border: none; background: var(--primary); color: #fff; cursor: pointer;
  transition: opacity .15s;
}
.ans-lagre-btn:hover { opacity: .85; }
.ans-csv-preview {
  width: 100%; border-collapse: collapse; font-size: 12px;
  border: 1px solid var(--border); border-radius: 8px; overflow: hidden;
}
.ans-csv-preview th {
  background: var(--bg); font-weight: 700; text-align: left;
  padding: 6px 8px; border-bottom: 1px solid var(--border);
  font-size: 11px; text-transform: uppercase; color: var(--text-secondary);
}
.ans-csv-preview td { padding: 5px 8px; border-bottom: 1px solid var(--border); background: var(--bg); color: var(--text); }
.ans-csv-preview tr:last-child td { border-bottom: none; }

/* ── Ansatt-modal: eventer-seksjon ──────────────────────────── */
.ans-eventer-seksjon {
  margin-top: 4px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
}
.ans-eventer-tittel {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: var(--text-secondary); margin-bottom: 8px;
}
.ans-eventer-liste { display: flex; flex-direction: column; gap: 4px; }
.ans-event-rad {
  display: flex; align-items: center; gap: 8px;
  padding: 7px 10px; border-radius: 8px;
  background: color-mix(in srgb, var(--primary) 5%, transparent);
  font-size: 13px;
}
.ans-event-navn { flex: 1; font-weight: 500; color: var(--text); }
.ans-event-rolle {
  font-size: 11px; color: var(--text-secondary);
  background: var(--border); padding: 2px 7px; border-radius: 20px;
}
.ans-event-dato { font-size: 11px; color: var(--text-muted); white-space: nowrap; }

/* ── Personer-side (full-page) ───────────────────────────────── */
#personer-screen {
  min-height: 100vh;
  background: var(--bg, #1D1D1D);
  flex-direction: column;
  align-items: center;
  overflow-y: auto;
}
/* Egen sideheader med tilbake-knapp og <h1>Personer</h1> lå her fram til
   2026-08-12. Den ga to titler over hverandre, siden .ansx-topp under
   rendrer sin egen. Tilbake-lenka bor nå i .ansx-topp-tilbake
   (stil-orgflater.css), som ligger der brukeren faktisk ser den. */
.pers-side-wrapper {
  width: 100%;
  max-width: 1600px;
  padding: 22px 20px 60px;
  margin: 0 auto;
  box-sizing: border-box;
}
.pers-side-innhold {
  width: 100%;
}

/* ── Collapsible sektorer (personer-fane) ──────────────────── */
.pers-sektor-hdr--klikk { cursor: pointer; user-select: none; border-radius: 6px; transition: background .12s; }
.pers-sektor-hdr--klikk:hover { background: color-mix(in srgb, var(--primary) 5%, transparent); }
.pers-sektor-chevron {
  font-size: 13px; color: var(--text-muted); flex-shrink: 0;
  transition: transform .2s; margin-left: 4px;
}
.pers-sektor-chevron.kollapset { transform: rotate(-90deg); }
.pers-sektor-innhold {
  overflow: hidden;
  max-height: 2000px;
  transition: max-height .25s ease, opacity .2s;
  opacity: 1;
}
.pers-sektor-innhold.kollapset { max-height: 0; opacity: 0; pointer-events: none; }

/* ── Org-kart-fane ──────────────────────────────────────────── */

/* Full-screen split layout */
/* Verten (fanen org-kartet tegnes i) er en kolonne: banneret over kartet tar
   høyden sin, splitten får resten. Med height:100% på splitten ble bannerets
   høyde talt to ganger, og fanen klippet bort like mange piksler nederst i
   BEGGE skroll-boksene — du kunne ikke skrolle fram siste rad. */
.ok-flate {
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.ok-full-wrapper {
  display: flex;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}
.ok-full-venstre {
  width: 400px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  border-right: 1px solid var(--border);
  overflow-y: auto;
  background: var(--surface);
}
.ok-full-hoyre {
  flex: 1;
  min-width: 0;
  overflow-y: auto;
  background: var(--bg);
}
/* Kjøreplan-modus: org-kartet er droppet, så personlista har hele flata.
   width må nullstilles — 400px er satt på .ok-full-venstre selv, og flex:1
   alene vinner ikke over en eksplisitt bredde. */
.ok-full-wrapper--liste .ok-full-venstre {
  width: auto;
  flex: 1;
  min-width: 0;
  border-right: none;
}
.ok-venstre-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 16px 10px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
  gap: 8px;
}
.ok-venstre-tittel {
  font-size: 14px;
  font-weight: 800;
  color: var(--text);
  letter-spacing: -.02em;
}

.ok-sort-bar {
  display: flex; align-items: center; gap: 7px;
  padding: 4px 12px 6px; flex-shrink: 0;
}
.ok-sort-label {
  font-size: 11px; font-weight: 600; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .05em; white-space: nowrap;
}
.ok-sort-sel {
  flex: 1; font-size: 12px; border: 1px solid var(--border);
  border-radius: 7px; padding: 4px 8px;
  background: var(--surface); color: var(--text); cursor: pointer;
  transition: border-color .12s;
}
.ok-sort-sel:hover, .ok-sort-sel:focus { border-color: var(--primary); outline: none; }

/* Legacy wrapper still used by old ok-wrapper content */
.ok-wrapper { display: flex; flex-direction: column; height: 100%; min-height: 0; overflow-y: auto; }
.ok-topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 24px 14px; border-bottom: 1px solid var(--border); flex-shrink: 0;
}
/* Topbaren ligger på --bg — knapper med --bg-bakgrunn (db-hurtiglenke sin
   standard) forsvant i flaten. --surface gir hvit knapp i light mode. */
.ok-topbar .db-hurtiglenke { background: var(--surface); }
/* Bakgrunnen må gjentas for primærvarianten: regelen over er (0,2,0) og slår
   .db-hurtiglenke-primary (0,1,0) uansett kildeorden — uten dette får «Ny
   sektor» hvit tekst på lys flate. Kun background: farge og kant er ikke i
   konflikt og arver riktig fra primitiven. Hover trenger (0,3,0) av samme grunn. */
.ok-topbar .db-hurtiglenke-primary { background: var(--primary); }
.ok-topbar .db-hurtiglenke-primary:hover { background: var(--primary-dark); }
/* .ok-tittel: typografien eies av .fane-tittel-primitiven i stil-tema.css */

/* Stab-rad */
.ok-stab-seksjon {
  padding: 16px 20px 12px; border-bottom: 1px solid var(--border); flex-shrink: 0;
}
.ok-stab-hdr { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.ok-stab-tittel { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--text-muted); }
.ok-stab-ant {
  font-size: 11px; font-weight: 600; color: var(--text-muted);
  background: var(--border); border-radius: 12px; padding: 2px 8px;
}
.ok-stab-liste { display: flex; flex-wrap: wrap; gap: 8px; }
.ok-stab-kort {
  display: flex; align-items: center; gap: 8px;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 10px; padding: 8px 12px 8px 8px; cursor: pointer;
  transition: box-shadow .15s, transform .15s, border-color .15s;
}
.ok-stab-kort:hover {
  box-shadow: 0 3px 12px rgba(0,0,0,.1); transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--primary) 35%, var(--border));
}
.ok-stab-avatar {
  width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; flex-shrink: 0;
}
.ok-stab-navn { font-size: 13px; font-weight: 600; color: var(--text); white-space: nowrap; }
.ok-stab-rolle { font-size: 11px; color: var(--text-muted); white-space: nowrap; }
.ok-stab-rolle.leder { color: var(--primary); font-weight: 600; }

/* Sektor-grid */
.ok-sektorer-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
  gap: 16px;
  padding: 16px 20px 20px;
  align-content: start;
}
.ok-sektor-kolonne { min-width: 0; }

/* Collapsible sector */
.ok-sektor-hdr--klikk { cursor: pointer; transition: background .12s; border-radius: 6px; }
.ok-sektor-chevron { font-size: 13px; transition: transform .2s; display: inline-block; margin-left: 4px; }
.ok-sektor-chevron.kollapset { transform: rotate(-90deg); }
.ok-sektor-innhold { overflow: hidden; max-height: 4000px; transition: max-height .3s ease, opacity .2s; }
.ok-sektor-innhold.kollapset { max-height: 0; opacity: 0; pointer-events: none; }
.ok-sektor-vis-btn {
  background: color-mix(in srgb, var(--primary) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--primary) 30%, transparent);
  cursor: pointer; color: var(--primary);
  font-size: 11px; font-weight: 600; padding: 5px 12px;
  border-radius: 20px; transition: all .15s; flex-shrink: 0; white-space: nowrap;
  margin-top: 2px;
}
.ok-sektor-vis-btn:hover { background: var(--primary); color: white; border-color: var(--primary); }
.ok-sektor-kort {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 12px; overflow: hidden;
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
  display: flex; flex-direction: column;
}
.ok-sektor-stripe { height: 6px; flex-shrink: 0; }
.ok-sektor-hdr { padding: 14px 16px 8px; }
.ok-sektor-navn { font-size: 16px; font-weight: 800; color: var(--text); letter-spacing: -.02em; }
.ok-sektor-meta { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
.ok-sektor-leder-rad {
  display: flex; flex-direction: column; gap: 3px;
  padding: 0 16px 12px;
  border-bottom: 1px solid var(--border);
}
.ok-leder-label { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--text-muted); }
.ok-sektor-leder-navn, .ok-team-leder-navn {
  font-size: 13px; font-weight: 600; color: var(--text);
}
.ok-sektor-leder-navn span, .ok-team-leder-navn span {
  cursor: pointer; color: var(--primary);
}
.ok-sektor-leder-navn span:hover, .ok-team-leder-navn span:hover { text-decoration: underline; }
.ok-leder-ingen { font-size: 12px; color: var(--text-muted); font-style: italic; font-weight: 400; }

/* Team-kort inni sektor */
.ok-sektor-teams { display: flex; flex-direction: column; gap: 8px; padding: 12px; }
.ok-team-kort {
  background: color-mix(in srgb, var(--bg) 70%, var(--surface) 30%);
  border: 1px solid var(--border);
  border-radius: 8px; padding: 10px 12px;
  transition: box-shadow .15s;
}
.ok-team-kort:hover { box-shadow: 0 2px 10px rgba(0,0,0,.09); }

/* Team-kortet som dragkilde — grepet er ren affordans, hele kortet er
   draggable (samme konstruksjon som .pers-kort/.pers-handle). */
.ok-team-kort--drabar { position: relative; }
.ok-team-grip {
  position: absolute; top: 8px; right: 8px;
  color: var(--text-muted); cursor: grab; line-height: 1;
  opacity: 0; transition: opacity .15s;
}
.ok-team-kort--drabar:hover .ok-team-grip,
.ok-team-kort--drabar:focus-within .ok-team-grip { opacity: .75; }
.ok-team-grip:active { cursor: grabbing; }
.ok-team-kort-drag { opacity: .5; }

/* Sektorkortet mens et team svever over det. Egen klasse — ikke
   .pers-team-over — fordi person-sonene ligger INNI dette kortet og de to
   markeringene ellers ville tent samtidig. */
.ok-sektor-kort.ok-sektor-team-over {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 22%, transparent);
}
.ok-sektor-kort.ok-sektor-team-over .ok-sektor-teams {
  background: color-mix(in srgb, var(--primary) 6%, transparent);
}
.ok-team-navn { font-size: 13px; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.ok-team-leder-rad { display: flex; align-items: baseline; gap: 5px; margin-bottom: 8px; flex-wrap: wrap; }
.ok-team-bunn { display: flex; align-items: center; gap: 4px; }
.ok-mini-avatarer { display: flex; }
.ok-mini-avatar {
  width: 24px; height: 24px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 700;
  margin-left: -5px; flex-shrink: 0;
}
.ok-mini-avatar:first-child { margin-left: 0; }
.ok-mini-mer {
  width: 22px; height: 22px; border-radius: 50%;
  background: var(--border); color: var(--text-secondary);
  font-size: 8px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  margin-left: -5px; flex-shrink: 0;
}
.ok-team-ant { font-size: 11px; color: var(--text-muted); margin-left: auto; font-weight: 600; }
.ok-team-tom { font-size: 12px; color: var(--text-muted); font-style: italic; padding: 6px 0; }

/* Inline redigering i kartet (2026-08-25). Erstatter den separate «Rediger
   struktur»-modusen: opprett og omdøping skjer der gruppa står, så ingen
   handling krever at kartet byttes bort. Sletting ligger med vilje ett klikk
   unna, i modalens footer. Alt gates på kanRed. */
.ok-sektor-hdr-akt { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }
.ok-ikonbtn {
  width: 26px; height: 26px; margin-top: 2px; flex-shrink: 0; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--border); background: var(--surface); border-radius: 7px;
  color: var(--text-muted); cursor: pointer;
  transition: border-color .15s, color .15s, background .15s;
}
.ok-ikonbtn svg { width: 13px; height: 13px; }
.ok-ikonbtn:hover { border-color: var(--primary); color: var(--primary); }
/* Stiplet ramme = «her kan det komme noe» — skiller den fra teamkortene den
   står under, uten å konkurrere med dem om oppmerksomhet. */
.ok-nytt-team-btn {
  background: none; border: 1px dashed var(--border); border-radius: 8px;
  padding: 7px 12px; font-size: 12px; font-weight: 600; color: var(--text-muted);
  cursor: pointer; font-family: inherit; text-align: center;
  transition: border-color .15s, color .15s;
}
.ok-nytt-team-btn:hover { border-color: var(--primary); color: var(--primary); }
.ok-team-maks {
  font-size: 10.5px; font-weight: 600; color: var(--text-muted);
  border: 1px solid var(--border); border-radius: 100px; padding: 1px 7px;
  white-space: nowrap; margin-left: 6px;
}
.ok-ingen {
  padding: 48px 24px; text-align: center;
  font-size: 14px; color: var(--text-muted); line-height: 1.7;
}

/* Overordnet row above sektor grid */
.ok-overordnet-seksjon {
  padding: 0 20px 4px;
}
.ok-overordnet-tittel-rad {
  display: flex; align-items: baseline; gap: 8px; margin-bottom: 10px;
}
.ok-overordnet-tittel {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .07em; color: var(--text-muted);
}
.ok-overordnet-sub { font-size: 11px; color: var(--text-muted); }
.ok-overordnet-grid {
  display: flex; flex-wrap: wrap; gap: 10px;
}
.ok-overordnet-kort {
  display: flex; align-items: center; gap: 10px;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 10px; padding: 10px 14px;
  transition: box-shadow .15s, transform .15s;
  min-width: 180px;
}
.ok-overordnet-kort:hover {
  box-shadow: 0 3px 12px rgba(0,0,0,.1); transform: translateY(-1px);
}
.ok-overordnet-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700; flex-shrink: 0;
}
.ok-overordnet-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ok-overordnet-navn { font-size: 13px; font-weight: 700; color: var(--text); white-space: nowrap; }
.ok-overordnet-rolle { font-size: 11px; color: var(--text-muted); white-space: nowrap; }
.ok-overordnet-badges { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.ok-overordnet-badge {
  font-size: 10px; font-weight: 600;
  background: color-mix(in srgb, var(--primary) 12%, transparent);
  color: var(--primary);
  border: 1px solid color-mix(in srgb, var(--primary) 25%, transparent);
  border-radius: 20px; padding: 1px 7px; white-space: nowrap;
}

/* Multi-select hint in person modal */
.pm-felt-hint { font-size: 11px; color: var(--text-muted); margin-top: 4px; display: block; }
.pm-felt--full { grid-column: 1 / -1; }

/* Clickable areas in org chart */
.ok-klikk { cursor: pointer; }
.ok-sektor-hdr.ok-klikk {
  display: flex; align-items: center; justify-content: space-between;
  border-radius: 6px; padding: 14px 16px 8px;
  transition: background .15s;
}
.ok-sektor-hdr.ok-klikk:hover { background: color-mix(in srgb, var(--primary) 6%, transparent); }
.ok-sektor-hdr:not(.ok-klikk) { padding: 14px 16px 8px; }
.ok-vis-alle-pil {
  font-size: 16px; color: var(--text-muted); opacity: 0;
  transition: opacity .15s, transform .15s;
}
.ok-sektor-hdr.ok-klikk:hover .ok-vis-alle-pil { opacity: 1; transform: translateX(3px); }
.ok-team-kort.ok-klikk { transition: box-shadow .15s, transform .15s, border-color .15s, background .15s; }
.ok-team-kort.ok-klikk:hover {
  box-shadow: 0 3px 14px rgba(0,0,0,.12);
  transform: translateY(-1px);
  background: color-mix(in srgb, var(--primary) 4%, var(--bg));
}

/* Org chart popup modal */
.ok-modal {
  background: var(--surface, #fff);
  border-radius: 14px; width: 100%; max-width: 640px;
  max-height: 85vh; display: flex; flex-direction: column;
  box-shadow: 0 24px 64px rgba(0,0,0,.35); overflow: hidden;
}
.ok-modal-stripe { height: 5px; flex-shrink: 0; }
.ok-modal-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 20px 14px; border-bottom: 1px solid var(--border); flex-shrink: 0;
}
.ok-modal-tittel { font-size: 18px; font-weight: 800; color: var(--text); letter-spacing: -.025em; }
.ok-modal-sub { font-size: 12px; color: var(--text-muted); margin-top: 3px; }
.ok-modal-rediger-btn {
  background: none; border: 1px solid var(--border); cursor: pointer;
  color: var(--text-muted); font-size: 15px; padding: 4px 10px;
  border-radius: 7px; transition: all .15s;
}
.ok-modal-rediger-btn:hover { border-color: var(--primary); color: var(--primary); background: color-mix(in srgb, var(--primary) 8%, transparent); }
.ok-modal-slett-btn {
  background: none; border: 1px solid var(--border); cursor: pointer;
  color: var(--text-muted); font-size: 14px; padding: 4px 10px;
  border-radius: 7px; transition: all .15s;
}
.ok-modal-slett-btn:hover { border-color: rgb(var(--st-feil-tint)); color: rgb(var(--st-feil-tint)); background: rgba(var(--st-feil-tint),0.07); }

/* Toolbar */
.ok-modal-toolbar {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding: 10px 16px; border-bottom: 1px solid var(--border);
  flex-shrink: 0; background: color-mix(in srgb, var(--bg) 70%, var(--surface));
}
.ok-tb-btn {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 6px 12px; border-radius: 8px; font-size: 12px; font-weight: 600;
  border: 1px solid var(--border); background: var(--surface); cursor: pointer;
  color: var(--text); text-decoration: none; white-space: nowrap;
  transition: background .12s, border-color .12s, color .12s;
}
.ok-tb-btn:hover {
  background: color-mix(in srgb, var(--primary) 8%, var(--surface));
  border-color: color-mix(in srgb, var(--primary) 40%, var(--border));
  color: var(--primary);
}

/* Underteam-filter-chips i team-modal */
.ok-utf-rad {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding: 10px 16px;
  border-top: 1px solid var(--border);
  background: var(--bg);
}
.ok-utf-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 11px;
  background: rgba(0,0,0,0.04);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 999px;
  font-size: 12px;
  cursor: pointer;
  transition: background .12s, color .12s, border-color .12s;
}
.ok-utf-chip:hover { background: rgba(0,0,0,0.08); }
.ok-utf-chip.aktiv {
  background: var(--primary, #6366F1);
  color: #fff;
  border-color: var(--primary, #6366F1);
}
.ok-utf-ant {
  font-size: 11px;
  font-weight: 700;
  background: rgba(255,255,255,0.18);
  padding: 1px 6px;
  border-radius: 8px;
}
.ok-utf-chip:not(.aktiv) .ok-utf-ant {
  background: rgba(0,0,0,0.08);
  color: var(--text-muted);
}

/* Underteam-seksjon i team-modal */
.ok-ut-seksjon {
  border-top: 1px solid var(--border);
  padding: 12px 16px 14px;
  background: rgba(0,0,0,0.02);
}
.ok-ut-tittel-rad {
  display: flex; align-items: baseline; justify-content: space-between;
  margin-bottom: 8px;
}
.ok-ut-tittel { font-size: 13px; font-weight: 700; color: var(--text); }
.ok-ut-sub { font-size: 11px; color: var(--text-muted); }
.ok-ut-tom { font-size: 12px; color: var(--text-muted); padding: 6px 0 10px; font-style: italic; }
.ok-ut-chips-rad {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-bottom: 10px;
}
.ok-ut-chip {
  display: inline-flex; align-items: center;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 3px 4px 3px 12px;
  transition: border-color .12s, background .12s, box-shadow .12s;
  position: relative;
}
.ok-ut-chip:hover {
  border-color: var(--primary, #6366F1);
  box-shadow: 0 1px 4px rgba(0,0,0,.04);
}
.ok-ut-chip.redigerer {
  border-color: var(--primary, #6366F1);
  background: var(--bg);
}
.ok-ut-chip-vis, .ok-ut-chip-rediger {
  display: inline-flex; align-items: center; gap: 6px;
}
.ok-ut-chip-navn {
  font-size: 13px; font-weight: 600; color: var(--text);
  white-space: nowrap;
}
.ok-ut-chip-ant {
  font-size: 11px; font-weight: 700;
  background: rgba(0,0,0,0.08);
  color: var(--text-muted);
  padding: 1px 7px;
  border-radius: 10px;
  min-width: 14px; text-align: center;
}
.ok-ut-chip-act {
  background: none; border: none; cursor: pointer;
  width: 22px; height: 22px;
  border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 12px; line-height: 1;
  color: var(--text-muted);
  transition: background .12s, color .12s;
  padding: 0;
}
.ok-ut-chip-act:hover { background: rgba(0,0,0,0.06); color: var(--text); }
.ok-ut-chip-edit:hover { color: var(--primary, #6366F1); }
.ok-ut-chip-slett:hover { color: rgb(var(--st-feil-tint)); background: rgba(var(--st-feil-tint),0.1); }
.ok-ut-chip-ok:hover { color: #22c55e; background: rgba(var(--st-ok-tint),0.1); }
.ok-ut-chip-input {
  border: none; outline: none; background: transparent;
  font-size: 13px; font-weight: 600; color: var(--text);
  padding: 2px 4px;
  min-width: 100px;
  border-bottom: 1px dashed var(--primary, #6366F1);
}
.ok-ut-ny { display: flex; gap: 6px; align-items: center; }
.ok-ut-ny input {
  flex: 1; padding: 6px 10px;
  border: 1px solid var(--border); border-radius: 6px;
  background: var(--bg); color: var(--text); font-size: 13px;
}
.ok-ut-ny-btn {
  padding: 6px 12px; border-radius: 6px;
  background: var(--primary, #6366F1); color: #fff;
  border: none; cursor: pointer; font-size: 12px; font-weight: 600;
}
.ok-ut-ny-btn:hover { filter: brightness(1.1); }

/* List */
.ok-modal-liste { overflow-y: auto; padding: 4px 0; }
.ok-modal-rad {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 16px; border-bottom: 1px solid var(--border);
  transition: background .12s;
}
.ok-modal-rad:last-child { border-bottom: none; }
.ok-modal-rad:hover { background: color-mix(in srgb, var(--primary) 4%, transparent); }
.ok-modal-avatar {
  width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700;
}
.ok-modal-info { flex: 1; min-width: 0; }
.ok-modal-navn { font-size: 14px; font-weight: 700; color: var(--text); }

/* Inline rolle-edit */
.ok-modal-rolle-wrap { display: flex; align-items: center; gap: 5px; margin-top: 1px; flex-wrap: wrap; }
.ok-modal-rolle { font-size: 12px; color: var(--text-muted); }
.ok-modal-rolle.leder { color: var(--primary); font-weight: 700; }
.ok-modal-ingen-rolle { font-style: italic; color: var(--text-muted); }
.ok-modal-rolle-edit-btn {
  background: none; border: none; cursor: pointer; font-size: 11px;
  color: var(--text-muted); padding: 1px 3px; border-radius: 4px;
  opacity: 0; transition: opacity .15s; line-height: 1;
}
.ok-modal-rad:hover .ok-modal-rolle-edit-btn { opacity: 1; }
.ok-modal-rolle-sel {
  font-size: 12px; border: 1px solid var(--border); border-radius: 6px;
  padding: 2px 6px; background: var(--surface); color: var(--text);
  max-width: 160px;
}

.ok-modal-team { font-size: 11px; color: var(--text-muted); margin-top: 2px; }

/* Actions (flytt + kontakt) */
.ok-modal-actions {
  display: flex; flex-direction: column; align-items: flex-end; gap: 5px; flex-shrink: 0;
}
.ok-modal-flytt-sel {
  font-size: 11px; border: 1px solid var(--border); border-radius: 6px;
  padding: 3px 6px; background: var(--surface); color: var(--text-muted);
  cursor: pointer; max-width: 150px;
  transition: border-color .12s, color .12s;
}
.ok-modal-flytt-sel:hover { border-color: var(--primary); color: var(--text); }
.ok-modal-kontakt { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.ok-modal-kontakt-lnk {
  font-size: 11px; color: var(--text-muted); text-decoration: none;
  white-space: nowrap; transition: color .12s;
}
.ok-modal-kontakt-lnk:hover { color: var(--primary); }

/* ── Lokasjoner-fane ────────────────────────────────────────── */
/* Fyll .db-content i høyden slik at .lok-wrapper sin height:100% løses opp.
   Uten dette kollapser kjeden og hele .db-content blir scroller — da får
   ikke hendelseslista (.lok-hend-liste) og kort-panelet egen scrollbar.
   Gjelder begge fanene som bruker .lok-wrapper (Lokasjoner + Koblinger). */
#db-lokasjoner, #db-koblinger { height: 100%; }
.lok-wrapper { display: flex; flex-direction: column; height: 100%; min-height: 0; }

.lok-topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 24px 14px;
  border-bottom: 1px solid var(--border); flex-shrink: 0;
}
/* .lok-tittel: typografien eies av .fane-tittel-primitiven i stil-tema.css */
.lok-topbar-actions { display: flex; gap: 8px; }

/* Flatens ene primærhandling — fylt merkerød etter knapp-primitiven,
   ikke konturknapp (én .btn--primar-uttrykk per flate, DESIGN.md §4) */
.lok-ny-btn {
  font-size: 12.5px; font-weight: 600; color: #fff;
  background: var(--primary); border: none;
  border-radius: 9px; padding: 8px 14px; cursor: pointer;
  box-shadow: 0 2px 12px rgba(247, 27, 0, .28);
  transition: background .15s;
  white-space: nowrap;
}
.lok-ny-btn:hover { background: var(--primary-dark, #CC1500); }

/* Alltid synlige — hover-skjulte knapper er ubrukelige på touch og
   usynlige mot kort-bakgrunnen (lesbarhets-klage juli 2026) */
.lok-icon-btn {
  width: 26px; height: 26px; flex-shrink: 0; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 7px; padding: 0; cursor: pointer;
  color: var(--ink-soft);
  transition: color .12s, border-color .12s, background .12s, box-shadow .12s;
}
.lok-icon-btn:hover {
  color: var(--text);
  border-color: color-mix(in srgb, var(--text) 30%, var(--border));
  box-shadow: 0 1px 4px rgba(0,0,0,.08);
}
.lok-slett-btn:hover {
  color: #DC2626;
  border-color: color-mix(in srgb, #DC2626 45%, var(--border));
  background: rgba(220,38,38,.07);
}

/* Drag handle */
.lok-drag-handle {
  padding: 0 9px; color: var(--text-muted); opacity: .25;
  font-size: 14px; flex-shrink: 0; cursor: grab;
  transition: opacity .15s; user-select: none;
  display: flex; align-items: center; align-self: stretch;
}
.lok-sted-kart-kort:hover .lok-drag-handle { opacity: .65; }
.lok-drag-handle:active { cursor: grabbing; opacity: 1 !important; }

/* ── Rediger/nytt-skjema — deler design-DNA med analyse-fanen
   (Bebas-tittel med rød kvadrat, mono-mikroetiketter, stiplede skiller) ── */
.lok-form {
  padding: 13px 14px 14px;
  background: var(--surface);
  border-top: 1px solid var(--border);
  display: flex; flex-direction: column; gap: 10px;
  animation: anxInn .3s cubic-bezier(.2,.7,.3,1) both;
}
.lok-form--kort {
  border: 1px solid color-mix(in srgb, var(--primary) 35%, var(--border));
  border-radius: 10px;
  box-shadow: 0 4px 18px rgba(0,0,0,.09);
}
.lok-sted-kart-kort > .lok-form { border-top: none; border-radius: 7px; }
.lok-omrade-kolonne .ok-sektor-kort > .lok-form { border-bottom: 1px solid var(--border); }
.lok-form-hode { display: flex; align-items: center; gap: 8px; min-width: 0; }
.lok-form-hode::before {
  content: ''; width: 8px; height: 8px; background: var(--primary);
  border-radius: 2px; flex-shrink: 0;
}
.lok-form-hode b {
  font-family: 'Bebas Neue', sans-serif; font-weight: 400;
  font-size: 17px; letter-spacing: .07em; color: var(--text); line-height: 1;
}
.lok-form-hode-meta {
  margin-left: auto; font-family: 'JetBrains Mono', monospace;
  font-size: 9px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--text-muted); white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; min-width: 0;
}
.lok-felt { display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1; }
.lok-felt-rad { display: flex; gap: 8px; }
.lok-lbl {
  font-family: 'JetBrains Mono', monospace; font-size: 9.5px; font-weight: 500;
  letter-spacing: .15em; text-transform: uppercase; color: var(--text-muted);
}
.lok-lbl b { color: var(--primary); font-weight: 700; }
.lok-input {
  width: 100%; box-sizing: border-box; font-size: 13px; font-family: inherit;
  padding: 8px 10px;
  border: 1px solid var(--border); border-radius: 8px;
  background: var(--bg); color: var(--text);
  outline: none; transition: border-color .15s, box-shadow .15s;
}
.lok-input:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 15%, transparent);
}
select.lok-input { cursor: pointer; }
.lok-hint { font-size: 10.5px; color: var(--text-muted); line-height: 1.5; margin-top: -3px; }
.lok-farge-rad { display: flex; gap: 7px; flex-wrap: wrap; padding: 3px 0 1px; }
.lok-farge-boks {
  width: 22px; height: 22px; border-radius: 50%;
  border: none; padding: 0; cursor: pointer;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.14);
  transition: transform .1s, box-shadow .12s;
}
.lok-farge-boks:hover { transform: scale(1.18); }
.lok-farge-boks.lok-farge-aktiv {
  box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--primary);
  transform: scale(1.04);
}
.lok-form-knapper {
  display: flex; gap: 8px; justify-content: flex-end; align-items: center;
  padding-top: 11px; margin-top: 1px;
  border-top: 1px dashed var(--border);
}
.lok-avbryt-btn {
  font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700;
  letter-spacing: .07em; text-transform: uppercase;
  padding: 8px 13px; border-radius: 8px;
  border: 1px solid var(--border); background: none;
  color: var(--ink-soft); cursor: pointer;
  transition: background .12s, color .12s;
}
.lok-avbryt-btn:hover { background: var(--border); color: var(--text); }
.lok-lagre-btn {
  font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700;
  letter-spacing: .09em; text-transform: uppercase;
  padding: 8px 15px; border-radius: 8px;
  border: none; background: var(--primary); color: #fff;
  cursor: pointer; transition: background .12s, box-shadow .15s, transform .1s;
}
.lok-lagre-btn:hover { background: var(--primary-dark); box-shadow: 0 3px 10px rgba(247,27,0,.28); }
.lok-lagre-btn:active { transform: translateY(1px); }

/* ── Lokasjoner rebuilt layout ──────────────────────────────── */
.lok-ny-layout {
  display: flex;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}
.lok-hend-sidebar {
  width: 340px;
  flex-shrink: 0;
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.lok-hend-sidebar-hdr {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.lok-hend-sidebar-tittel {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
}
.lok-hend-sidebar-ant {
  font-size: 11px;
  background: var(--border);
  color: var(--text-secondary);
  padding: 1px 7px;
  border-radius: 100px;
  font-weight: 600;
}
.lok-hend-liste {
  flex: 1;
  overflow-y: auto;
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-height: 0;
  transition: background .12s;
}
.lok-hend-liste.lok-drop-over {
  background: color-mix(in srgb, var(--primary) 6%, var(--bg));
}
.lok-hend-draggable { cursor: grab; }
.lok-hend-draggable:hover { transform: none !important; }
.lok-hend-draggable.lok-dragging { opacity: .35; }
.lok-hend-tom {
  padding: 20px 10px;
  font-size: 12px;
  color: var(--text-muted);
  text-align: center;
  font-style: italic;
}
.lok-kart-innhold {
  flex: 1;
  overflow-y: auto;
  padding: 16px;
  min-width: 0;
  background: color-mix(in srgb, var(--border) 18%, var(--bg));
}
.lok-omrader-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
  align-items: start;
}
.lok-omrade-kolonne {
  min-width: 0;
  transition: opacity .15s;
}
.lok-omrade-kolonne .ok-sektor-kort {
  box-shadow: 0 3px 14px rgba(0,0,0,.11), 0 1px 4px rgba(0,0,0,.07);
  border-color: color-mix(in srgb, var(--border) 70%, var(--text));
}
.lok-omrade-kolonne.lok-dragging { opacity: .3; }
.lok-omrade-kolonne.lok-drop-before { box-shadow: -3px 0 0 var(--primary); border-radius: 8px; }
.lok-omrade-kolonne.lok-drop-after  { box-shadow:  3px 0 0 var(--primary); border-radius: 8px; }
.lok-sted-kart-grid {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 8px 12px 12px;
}
.lok-sted-kart-kort {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  transition: box-shadow .12s, border-color .12s, background .12s;
  position: relative;
}
.lok-sted-kart-kort:hover {
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
  border-color: color-mix(in srgb, var(--primary) 25%, var(--border));
}
.lok-sted-kart-kort.lok-dragging { opacity: .3; pointer-events: none; }
.lok-sted-kart-kort.lok-drop-before::before,
.lok-sted-kart-kort.lok-drop-after::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  height: 3px;
  background: var(--primary);
  border-radius: 99px;
  z-index: 10;
}
.lok-sted-kart-kort.lok-drop-before::before { top: -4px; }
.lok-sted-kart-kort.lok-drop-after::after  { bottom: -4px; }
.lok-sted-kart-kort.lok-drop-over {
  border-color: var(--primary);
  background: color-mix(in srgb, var(--primary) 6%, var(--bg));
}
.lok-sted-kart-hdr {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 7px 8px 7px 10px;
  background: color-mix(in srgb, var(--border) 25%, var(--bg));
  border-bottom: 1px solid var(--border);
  border-radius: 7px 7px 0 0;
  overflow: hidden;
}
.lok-sted-kart-kort--red {
  border-color: color-mix(in srgb, var(--primary) 45%, var(--border));
  box-shadow: 0 4px 18px rgba(0,0,0,.1);
}
.lok-sted-kart-tekst {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.lok-sted-kart-naam {
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lok-sted-kart-meta {
  font-size: 10px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lok-sted-kart-hdr .lok-drag-handle { padding: 0 2px 0 0; }
.lok-sted-kart-btns {
  display: flex;
  gap: 4px;
  flex-shrink: 0;
}
.lok-sted-hend-liste {
  padding: 6px 8px 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-height: 36px;
  overflow: hidden;
  max-height: 2000px;
  transition: max-height .25s ease, opacity .15s, padding .25s;
}
.lok-sted-hend-liste.kollapset {
  max-height: 0;
  opacity: 0;
  pointer-events: none;
  min-height: 0;
  padding-top: 0;
  padding-bottom: 0;
}
.lok-sted-toggle-btn {
  display: flex; align-items: center; gap: 4px;
  background: none; border: 1px solid var(--border);
  border-radius: 5px; padding: 3px 8px;
  font-size: 13px; font-weight: 600; color: var(--text-muted);
  cursor: pointer; flex-shrink: 0; margin-left: auto;
  transition: background .1s, color .1s; font-family: inherit;
}
.lok-sted-toggle-btn:hover { background: var(--bg); color: var(--text); }
.lok-sted-toggle-btn .ok-sektor-chevron { font-size: 13px; }
.lok-sted-toggle-ant { font-variant-numeric: tabular-nums; }
.lok-sted-dag-hdr {
  font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.06em; color: var(--text-muted);
  padding: 6px 2px 3px; margin-top: 4px;
}
.lok-sted-dag-hdr:first-child { margin-top: 0; padding-top: 2px; }
.lok-drop-hint {
  font-size: 11px;
  color: var(--text-muted);
  text-align: center;
  padding: 5px;
  border: 1.5px dashed var(--border);
  border-radius: 6px;
  opacity: .6;
}
.lok-hend-chip {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 4px 8px;
  border-radius: 6px;
  background: color-mix(in srgb, var(--primary) 10%, var(--bg));
  border: 1px solid color-mix(in srgb, var(--primary) 20%, transparent);
  font-size: 11px;
}
.lok-hend-chip-tid {
  color: var(--text-muted);
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}
.lok-hend-chip-tittel {
  flex: 1;
  font-weight: 600;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.lok-hend-chip-fjern {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--text-muted);
  padding: 0 1px;
  flex-shrink: 0;
  opacity: 0;
  transition: opacity .1s, color .1s;
  line-height: 1;
  display: flex;
  align-items: center;
}
.lok-hend-chip:hover .lok-hend-chip-fjern { opacity: 1; }
.lok-hend-chip-fjern:hover { color: rgb(var(--st-feil-tint)); }
.lok-ny-sted-i-omrade {
  margin-top: 2px;
  width: 100%;
  padding: 7px;
  border: 1.5px dashed var(--border);
  border-radius: 7px;
  background: none;
  color: var(--text-muted);
  font-size: 12px;
  cursor: pointer;
  transition: border-color .12s, color .12s, background .12s;
  box-sizing: border-box;
}
.lok-ny-sted-i-omrade:hover {
  border-color: var(--primary);
  color: var(--primary);
  background: color-mix(in srgb, var(--primary) 5%, var(--bg));
}
.lok-tom-grid {
  padding: 60px 20px;
  text-align: center;
  color: var(--text-muted);
  font-size: 13px;
}

/* ── Koblinger-fane ───────────────────────────────────────────
   Gjenbruker .lok-* og .ok-sektor-* fra lokasjoner og orgkart;
   bare det som er unikt for koblings-tabben er definert her.
   --------------------------------------------------------------- */
.kobl-sektor-chips {
  display: flex; flex-wrap: wrap; gap: 5px;
  padding: 8px 12px 4px;
}
.kobl-sektor-drop-hint {
  margin: 8px 12px 4px;
  font-size: 11px;
  color: var(--text-muted);
  text-align: center;
  padding: 6px;
  border: 1.5px dashed var(--border);
  border-radius: 6px;
  opacity: .55;
}
.kobl-sektor-tom {
  padding: 10px;
  font-size: 11px;
  color: var(--text-muted);
  text-align: center;
  font-style: italic;
  grid-column: 1 / -1;
}
.kobl-hend-chip {
  cursor: grab;
}
.kobl-hend-chip:active { cursor: grabbing; }
.kobl-hend-chip.lok-dragging { opacity: .4; }
.kobl-hend-draggable { cursor: grab; }
.kobl-hend-draggable:active { cursor: grabbing; }

/* ── Koblinger: modus-bytter (velg hva man drar hendelser til) ── */
#db-koblinger .lok-topbar { flex-wrap: wrap; gap: 12px 16px; }
.kobl-modus-bytter {
  display: inline-flex; flex-shrink: 0;
  background: color-mix(in srgb, var(--border) 35%, var(--bg));
  border: 1px solid var(--border);
  border-radius: 999px; padding: 3px; gap: 2px;
}
.kobl-modus-btn {
  font-family: inherit; font-size: 12px; font-weight: 600;
  color: var(--text-muted);
  background: transparent; border: none; border-radius: 999px;
  padding: 7px 16px; cursor: pointer; white-space: nowrap;
  transition: background .15s, color .15s, box-shadow .15s;
}
.kobl-modus-btn:hover { color: var(--text); }
.kobl-modus-btn.aktiv {
  background: var(--surface); color: var(--primary);
  box-shadow: 0 1px 3px rgba(0,0,0,.12);
}

/* Enkeltverdi-kort (kategori / status) gjenbruker .ok-sektor-kort.
   Tydelig drop-feedback — også for sektor-kortene i denne fanen. */
.kobl-enkel-kort .ok-sektor-hdr { padding: 12px 14px 8px; }
.kobl-enkel-kort.lok-drop-over,
#db-koblinger .ok-sektor-kort.lok-drop-over {
  border-color: var(--primary);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--primary) 35%, transparent);
  background: color-mix(in srgb, var(--primary) 5%, var(--surface));
}

/* ── Koblinger: søkefelt (hendelser i sidebar + personer i rutenett) ── */
.kobl-hend-sok, .kobl-grid-sok { position: relative; }
.kobl-hend-sok {
  flex-shrink: 0; padding: 8px 10px;
  border-bottom: 1px solid var(--border); background: var(--surface);
}
/* Person-søket henger sticky øverst i rutenettet — søkt person forblir synlig
   mens kortene scroller under. Negativ marg drar baren ut over panens padding. */
.kobl-grid-sok {
  position: sticky; top: 0; z-index: 6;
  margin: -16px -16px 14px; padding: 12px 16px;
  background: var(--bg); border-bottom: 1px solid var(--border);
  box-shadow: 0 2px 8px rgba(0,0,0,.05);
}
.kobl-hend-sok > svg, .kobl-grid-sok > svg {
  position: absolute; top: 50%; transform: translateY(-50%);
  color: var(--text-muted); pointer-events: none;
}
.kobl-hend-sok > svg { left: 20px; }
.kobl-grid-sok > svg { left: 27px; }
.kobl-sok-input {
  width: 100%; box-sizing: border-box;
  padding: 8px 10px 8px 30px;
  border: 1px solid var(--border); border-radius: 8px;
  background: var(--bg); color: var(--text);
  font-size: 13px; font-family: inherit; outline: none;
  transition: border-color .12s, box-shadow .12s;
}
.kobl-grid-sok .kobl-sok-input { background: var(--surface); }
.kobl-sok-input:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 12%, transparent);
}

/* ── Koblinger: ansvarlig-modus (person-kort gruppert Ledere/Andre) ── */
.kobl-gruppe-hdr {
  grid-column: 1 / -1;
  display: flex; align-items: center; gap: 8px;
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
  color: var(--text-muted); margin: 2px 2px -4px;
}
.kobl-gruppe-hdr:not(:first-child) { margin-top: 16px; }
.kobl-gruppe-ant {
  font-size: 11px; background: var(--border); color: var(--text-secondary);
  padding: 1px 7px; border-radius: 100px; font-weight: 600;
}
.kobl-leder-merke { color: var(--amber); font-size: 11px; margin-left: 5px; }
.kobl-ingen-treff { grid-column: 1 / -1; }

/* ── Event · Booking («bookingpulten») ─────────────────────────
   Samme kommandopult-DNA som Analyse (anx-): mørk hero med mono-
   etiketter og Bebas-tall, status-fliser som filter, kort-grid
   med statuskant og oppfølgingshint. Prefiks: bk-. */

.bk { display: flex; flex-direction: column; gap: 14px; max-width: 1320px; }
.bk button, .bk select, .bk input { font-family: inherit; }
.bk-mono { font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, monospace; }

@keyframes bkInn { from { opacity: 0.55; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@keyframes bkFyll { from { width: 0; } }
.bk > * { animation: bkInn .45s cubic-bezier(.2,.7,.3,1) both; }
.bk > :nth-child(2) { animation-delay: .05s; }
.bk > :nth-child(3) { animation-delay: .09s; }
.bk > :nth-child(4) { animation-delay: .13s; }

/* ── Verktøylinje ── */
.bk-verktoy { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.bk-verktoy-lbl { font-family: 'JetBrains Mono', monospace; font-size: 9.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--text-muted); }
.bk-sel { padding: 8px 11px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); font-size: 12.5px; font-weight: 600; color: var(--text); cursor: pointer; transition: border-color .12s ease; max-width: 180px; }
.bk-sel:hover, .bk-sel:focus { outline: none; border-color: color-mix(in srgb, var(--primary) 45%, var(--border)); }
.bk-sel--aktiv { border-color: color-mix(in srgb, var(--primary) 55%, var(--border)); color: var(--primary); }
.bk-sok-wrap { position: relative; display: flex; align-items: center; }
.bk-sok-wrap > svg { position: absolute; left: 10px; color: var(--text-muted); pointer-events: none; }
.bk-sok { padding: 8px 11px 8px 30px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); font-size: 12.5px; color: var(--text); width: 200px; transition: border-color .12s ease; box-sizing: border-box; }
.bk-sok:focus { outline: none; border-color: color-mix(in srgb, var(--primary) 45%, var(--border)); }
.bk-nullstill { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; padding: 8px 11px; border-radius: 8px; border: 1px dashed color-mix(in srgb, var(--primary) 45%, var(--border)); background: none; color: var(--primary); cursor: pointer; }
.bk-nullstill:hover { background: rgba(247,27,0,.06); }
.bk-antall { margin-left: auto; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); }
.bk-verktoy-strek { width: 1px; height: 24px; background: var(--border); }
.bk-ikonknapp { width: 34px; height: 34px; padding: 0; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text-muted); cursor: pointer; flex-shrink: 0; transition: border-color .12s ease, color .12s ease; }
.bk-ikonknapp:hover { border-color: color-mix(in srgb, var(--primary) 45%, var(--border)); color: var(--text); }
.bk-knapp { display: inline-flex; align-items: center; gap: 6px; padding: 8px 13px; border-radius: 8px; border: 1px solid var(--border); background: var(--surface); font-size: 12.5px; font-weight: 700; color: var(--text); cursor: pointer; flex-shrink: 0; transition: border-color .12s ease, background .15s ease, transform .12s ease; }
.bk-knapp:hover { border-color: color-mix(in srgb, var(--primary) 45%, var(--border)); }
.bk-knapp--primar { background: var(--primary); border-color: var(--primary); color: #fff; box-shadow: 0 2px 10px rgba(247,27,0,.25); }
.bk-knapp--primar:hover { background: var(--primary-dark); border-color: var(--primary-dark); transform: translateY(-1px); }

/* ── Hero: økonomibildet ── */
.bk-hero { position: relative; overflow: hidden; background: #1D1D1D; border: 1px solid #1D1D1D; border-radius: 14px; padding: 22px 22px 18px; color: #FFF4EC; display: flex; flex-wrap: wrap; gap: 24px; justify-content: space-between; align-items: flex-end; }
.bk-hero::before { content: ''; position: absolute; inset: 0 0 auto 0; height: 6px; background: repeating-linear-gradient(-55deg, var(--primary) 0 14px, transparent 14px 28px); }
.bk-hero::after { content: ''; position: absolute; top: -120px; right: -80px; width: 340px; height: 340px; border-radius: 50%; background: radial-gradient(circle, rgba(247,27,0,.22), transparent 65%); pointer-events: none; }
.bk-hero-venstre { min-width: 0; display: flex; flex-direction: column; gap: 8px; position: relative; }
.bk-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,244,236,.5); }
.bk-hero-sum { font-family: 'Bebas Neue', sans-serif; font-size: clamp(44px, 5vw, 72px); line-height: .85; letter-spacing: .01em; }
.bk-hero-sum-lbl { font-size: 13px; color: rgba(255,244,236,.65); }
.bk-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.bk-chip { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; padding: 4px 9px; border-radius: 6px; border: 1px solid rgba(255,244,236,.16); color: rgba(255,244,236,.75); background: rgba(255,244,236,.05); }
.bk-chip--ok { color: #5EEAA0; border-color: rgba(94,234,160,.3); }
.bk-chip--obs { color: #FFC46B; border-color: rgba(255,196,107,.3); }
.bk-chip--knapp { cursor: pointer; transition: background .12s ease; }
.bk-chip--knapp:hover { background: rgba(255,244,236,.12); }
.bk-chip--knapp.aktiv { background: rgba(255,196,107,.16); box-shadow: inset 0 0 0 1px #FFC46B; }

.bk-hero-budsjett { flex: 0 1 340px; min-width: 250px; position: relative; display: flex; flex-direction: column; gap: 8px; }
.bk-hero-mikro { font-family: 'JetBrains Mono', monospace; font-size: 9.5px; letter-spacing: .18em; text-transform: uppercase; color: rgba(255,244,236,.45); }
.bk-budsjettbar { position: relative; height: 12px; border-radius: 6px; background: rgba(255,244,236,.12); overflow: hidden; }
.bk-budsjettbar i { position: absolute; top: 0; bottom: 0; left: 0; border-radius: 6px; animation: bkFyll .7s cubic-bezier(.2,.7,.3,1) both .25s; }
.bk-budsjettbar-avtalt { opacity: .38; }
.bk-budsjettbar--ok i { background: linear-gradient(90deg, #7DE8B4, var(--st-ok-tekst)); }
.bk-budsjettbar--obs i { background: linear-gradient(90deg, #FFD28A, #E08A00); }
.bk-budsjettbar--over i { background: linear-gradient(90deg, #FF7A5C, var(--primary)); }
.bk-budsjettbar-tall { display: flex; justify-content: space-between; gap: 12px; font-family: 'JetBrains Mono', monospace; font-size: 10.5px; color: rgba(255,244,236,.65); }
.bk-rod { color: #FF9A85; font-weight: 700; }
.bk-hero-budsjett--tom { justify-content: flex-end; }
.bk-hero-budsjett-hint { margin: 0; font-size: 12.5px; line-height: 1.5; color: rgba(255,244,236,.55); }
.bk-hero-budsjett-btn { display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; padding: 8px 14px; border-radius: 8px; border: 1px solid rgba(255,244,236,.2); background: rgba(255,244,236,.1); color: #FFF4EC; font-size: 12.5px; font-weight: 600; cursor: pointer; transition: background .15s ease; }
.bk-hero-budsjett-btn:hover { background: rgba(255,244,236,.18); }

/* ── Status-fliser (pipeline som filter) ── */
.bk-pipeline { display: grid; grid-template-columns: repeat(auto-fit, minmax(116px, 1fr)); gap: 8px; }
.bk-flis { display: flex; flex-direction: column; gap: 4px; align-items: flex-start; padding: 10px 12px; border-radius: 11px; border: 1px solid var(--border); background: var(--surface); cursor: pointer; text-align: left; min-width: 0; transition: border-color .12s ease, background .12s ease, transform .08s ease; }
.bk-flis:hover { border-color: color-mix(in srgb, var(--primary) 45%, var(--border)); }
.bk-flis:active { transform: scale(.98); }
.bk-flis.aktiv { border-color: var(--primary); background: rgba(247,27,0,.05); box-shadow: inset 0 0 0 1px var(--primary); }
.bk-flis-lbl { display: inline-flex; align-items: center; gap: 5px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; font-family: 'JetBrains Mono', monospace; font-size: 9.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); white-space: nowrap; }
.bk-flis-lbl i { width: 8px; height: 8px; border-radius: 2px; flex-shrink: 0; }
.bk-flis-tall { font-family: 'Bebas Neue', sans-serif; font-size: 28px; line-height: .9; font-weight: 400; color: var(--text); }
.bk-flis-meta { font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--text-muted); white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }

/* ── Kort-grid ── */
.bk-kort-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 12px; align-items: start; }
.bk-kort { position: relative; overflow: hidden; background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 15px 16px 13px 19px; display: flex; flex-direction: column; gap: 10px; cursor: pointer; box-shadow: 0 1px 2px rgba(66,43,28,.05); animation: bkInn .3s ease both; transition: border-color .12s ease, box-shadow .12s ease; }
.bk-kort::before { content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 4px; background: var(--bk-status, var(--border)); }
.bk-kort:hover { border-color: color-mix(in srgb, var(--bk-status, var(--primary)) 45%, var(--border)); box-shadow: 0 4px 16px rgba(66,43,28,.09); }

.bk-kort-hdr { display: flex; align-items: flex-start; gap: 8px; }
.bk-kort-hdr-left { flex: 1; min-width: 0; }
.bk-kort-navn { font-size: 15.5px; font-weight: 700; color: var(--text); }
.bk-kort-badges { display: flex; align-items: center; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.bk-kort-type-chip { font-family: 'JetBrains Mono', monospace; font-size: 9.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--text-muted); padding: 3px 8px; border: 1px solid var(--border); border-radius: 6px; background: var(--bg); white-space: nowrap; }
.bk-badge { display: inline-flex; align-items: center; gap: 4px; padding: 3px 9px; border: none; border-radius: 999px; font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: .04em; white-space: nowrap; cursor: pointer; transition: filter .12s ease; }
.bk-badge:hover { filter: brightness(.93); }
.bk-badge svg { opacity: .7; }
.bk-kort-knapper { display: flex; gap: 2px; flex-shrink: 0; }

.bk-kort-kontakt { font-size: 12px; color: var(--text-muted); border-top: 1px dashed var(--border); padding-top: 8px; }

/* Info-rader: økonomi, neste opptreden, reise, overnatting, rider */
.bk-kort-info-seksjoner { display: flex; flex-direction: column; gap: 6px; border-top: 1px dashed var(--border); padding-top: 8px; }
.bk-kort-info-rad { display: flex; align-items: flex-start; gap: 8px; font-size: 12.5px; }
.bk-kort-info-ikon { width: 22px; height: 22px; border-radius: 6px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; }
.bk-kort-info-ikon-kr          { background: rgba(var(--st-ok-tint),.12);  color: var(--st-ok-tekst); }
.bk-kort-info-ikon-reise       { background: rgba(59,130,246,.12); color: #3B82F6; }
.bk-kort-info-ikon-overnatting { background: rgba(139,92,246,.12); color: #8B5CF6; }
.bk-kort-info-ikon-rider       { background: rgba(224,138,0,.12);  color: var(--st-obs-tekst); }
.bk-kort-info-ikon-scene       { background: rgba(8,145,178,.12);  color: #0891B2; }
.bk-kort-info-tekst { flex: 1; color: var(--text); line-height: 1.45; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; }
.bk-kort-tid { font-size: 11px; font-weight: 700; color: #0E7490; white-space: nowrap; }
.bk-kort-fler { font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--text-muted); }
.bk-kort-poster { font-size: 11.5px; color: var(--text-muted); }
.bk-betaling { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.bk-betaling--betalt { background: var(--st-ok-bg); color: var(--st-ok-tekst); }
.bk-betaling--fakturert { background: var(--st-obs-bg); color: var(--st-obs-tekst); }
.bk-kort-rider-tekst { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bk-kort-dekkes { font-size: 9.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; padding: 2px 7px; border-radius: 999px; background: rgba(var(--st-ok-tint),.1); color: var(--st-ok-tekst); border: 1px solid rgba(var(--st-ok-tint),.2); white-space: nowrap; flex-shrink: 0; }

/* Oppfølgingshint */
.bk-kort-hints { display: flex; flex-direction: column; gap: 4px; border-top: 1px dashed var(--border); padding-top: 8px; }
.bk-hint { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; color: var(--st-obs-tekst); }
.bk-hint svg { flex-shrink: 0; }

.bk-kort-footer { display: flex; flex-wrap: wrap; gap: 8px; border-top: 1px dashed var(--border); padding-top: 8px; }
.bk-kort-footer-item { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--text-muted); }

.bk-ingen-treff { grid-column: 1 / -1; padding: 32px; text-align: center; color: var(--text-muted); font-size: 13px; }

/* ── Statusmeny (hurtigbytte fra kortet) ── */
.bk-status-meny { position: fixed; z-index: 3000; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 12px 40px rgba(0,0,0,.18); padding: 5px; display: flex; flex-direction: column; min-width: 172px; animation: bkInn .15s ease both; }
.bk-status-meny-valg { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border: none; border-radius: 7px; background: none; font-size: 12.5px; font-weight: 600; color: var(--text); cursor: pointer; text-align: left; transition: background .1s ease; }
.bk-status-meny-valg:hover { background: var(--bg); }
.bk-status-meny-valg.aktiv { background: var(--bg2); }
.bk-status-meny-valg i { width: 9px; height: 9px; border-radius: 2px; flex-shrink: 0; }
.bk-status-meny-hake { margin-left: auto; font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--text-muted); }

/* ── Tom-tilstand ── */
.bk-tom-hero { position: relative; overflow: hidden; background: #1D1D1D; border: 1px solid #1D1D1D; border-radius: 14px; color: #FFF4EC; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 52px 24px; gap: 10px; }
.bk-tom-hero::before { content: ''; position: absolute; inset: 0 0 auto 0; height: 6px; background: repeating-linear-gradient(-55deg, var(--primary) 0 14px, transparent 14px 28px); }
.bk-tom-tittel { font-family: 'Bebas Neue', sans-serif; font-size: clamp(34px, 4vw, 52px); line-height: .95; letter-spacing: .04em; }
.bk-tom-tekst { max-width: 520px; font-size: 13.5px; line-height: 1.6; color: rgba(255,244,236,.65); margin: 0; }
.bk-tom-knapper { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin-top: 8px; }
.bk-tom-btn { display: inline-flex; align-items: center; gap: 7px; padding: 10px 18px; font-size: 13px; font-weight: 700; border: none; border-radius: 9px; background: var(--primary); color: #fff; cursor: pointer; box-shadow: 0 2px 10px rgba(247,27,0,.35); transition: transform .12s ease, background .15s ease; }
.bk-tom-btn:hover { background: var(--primary-dark); transform: translateY(-1px); }
.bk-tom-btn--sek { background: rgba(255,244,236,.12); box-shadow: none; }
.bk-tom-btn--sek:hover { background: rgba(255,244,236,.2); }

.bk-fot { margin: 0 2px; font-size: 12px; color: var(--text-muted); }

/* ── Modal ── */
.bk-modal-overlay {
  position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 2000;
  display: flex; align-items: flex-start; justify-content: center;
  padding: 36px 20px; box-sizing: border-box; overflow-y: auto;
}
.bk-modal {
  background: var(--bg); border-radius: 14px;
  width: 100%; max-width: 680px;
  box-shadow: 0 28px 90px rgba(0,0,0,.38);
  display: flex; flex-direction: column;
}
.bk-modal-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 20px 14px; border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.bk-modal-tittel { font-size: 16px; font-weight: 700; color: var(--text); }
.bk-modal-body {
  padding: 18px 20px; display: flex; flex-direction: column; gap: 14px;
  overflow-y: auto; max-height: calc(100vh - 200px);
}
.bk-modal-footer {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 20px; border-top: 1px solid var(--border); flex-shrink: 0;
}
.bk-modal-rad { display: flex; flex-direction: column; gap: 5px; }
.bk-modal-kolonne-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.bk-modal-kolonne-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; }
.bk-modal-seksjon-tittel {
  font-family: 'JetBrains Mono', monospace; font-size: 9.5px; font-weight: 700;
  letter-spacing: .18em; text-transform: uppercase; color: var(--text-muted);
  padding-bottom: 6px; border-bottom: 1px dashed var(--border); margin-top: 6px;
}
.bk-label { font-size: 12px; font-weight: 600; color: var(--text-muted); }
.bk-input {
  width: 100%; padding: 8px 10px; border: 1px solid var(--border);
  border-radius: 8px; background: var(--bg); color: var(--text);
  font-size: 13px; font-family: inherit; box-sizing: border-box;
  transition: border-color .12s ease, box-shadow .12s ease;
}
.bk-input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(247,27,0,.08); }
.bk-textarea { resize: vertical; min-height: 60px; }
.bk-sjekkboks-rad {
  display: flex; align-items: center; gap: 7px;
  font-size: 12px; color: var(--text-muted); cursor: pointer;
  margin-top: 6px;
}
.bk-sjekkboks-rad input { accent-color: var(--primary); }
.bk-slett-btn {
  display: flex; align-items: center; gap: 5px;
  padding: 6px 12px; border-radius: 8px; border: 1px solid rgb(var(--st-feil-tint));
  background: none; color: rgb(var(--st-feil-tint)); font-size: 13px; cursor: pointer;
}
.bk-slett-btn:hover { background: rgba(var(--st-feil-tint),.08); }

/* Budsjettposter i modalen */
.bk-budsjett-liste { display: flex; flex-direction: column; gap: 4px; margin-bottom: 6px; }
.bk-budsjett-rad {
  display: grid; grid-template-columns: 130px 1fr 110px 32px;
  gap: 8px; align-items: center; font-size: 13px;
  padding: 6px 10px; border-radius: 8px; background: var(--bg);
  border: 1px solid var(--border);
}
.bk-budsjett-kat { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bk-budsjett-besk { color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bk-budsjett-belop { text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.bk-budsjett-tom { font-size: 12px; color: var(--text-muted); font-style: italic; padding: 4px 0; }
.bk-budsjett-sum {
  text-align: right; font-size: 13px; padding: 4px 10px;
  color: var(--text-muted); border-top: 1px solid var(--border); margin-bottom: 8px;
}
.bk-budsjett-ny { display: flex; gap: 6px; align-items: center; margin-top: 8px; }

/* Settings-typer */
.bk-typer-liste { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.bk-type-chip {
  display: flex; align-items: center; gap: 5px;
  padding: 4px 10px; border-radius: 100px;
  background: var(--card-bg, rgba(0,0,0,0.04)); border: 1px solid var(--border);
  font-size: 12px; font-weight: 500;
}
.bk-type-chip button {
  background: none; border: none; cursor: pointer; padding: 0;
  display: flex; align-items: center; color: var(--text-muted);
  opacity: 0.7;
}
.bk-type-chip button:hover { opacity: 1; }

/* Multi-select chips for tilknyttede programhendelser */
.bk-hendelse-sok-rad { margin-bottom: 6px; }
.bk-hendelse-chips {
  display: flex; flex-wrap: wrap; gap: 6px;
  max-height: 180px; overflow-y: auto;
  padding: 8px; border: 1px solid var(--border); border-radius: 8px;
  background: var(--card-bg, rgba(0,0,0,0.02));
}
.bk-hendelse-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px; border-radius: 100px;
  background: var(--card-bg, #fff);
  border: 1px solid var(--border);
  font-size: 12px; cursor: pointer;
  transition: background 0.12s, border-color 0.12s, color 0.12s;
}
.bk-hendelse-chip:hover { border-color: var(--primary); }
.bk-hendelse-chip.selected {
  background: rgba(247,27,0,.07);
  border-color: var(--primary);
  color: var(--primary);
  font-weight: 600;
}
.bk-hendelse-chip-tittel { white-space: nowrap; }
.bk-hendelse-chip-tid {
  font-size: 11px; opacity: 0.7; font-weight: 400;
  padding-left: 4px; border-left: 1px solid currentColor;
  margin-left: 2px;
}
.bk-hendelse-chip-tom {
  color: var(--text-muted); font-size: 12px; font-style: italic;
}

/* Bidragsyter-chip på event-kort i program-tab og tidslinje */
.lv-boks-bidragsyter,
.lv-dv-bidragsyter-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: 100px;
  background: rgba(217, 119, 6, 0.12);
  color: var(--st-obs-tekst);
  font-size: 11px; font-weight: 600;
  border: 1px solid rgba(217, 119, 6, 0.25);
}
.lv-boks-bidragsyter svg,
.lv-dv-bidragsyter-chip svg { flex-shrink: 0; }

/* Tidslinje event-card badge-rad (mikrofon + konfliktikoner samlet øverst
   til høyre — statisk i .event-card-topp så de aldri overlapper tittelen) */
.event-card-badges {
  display: inline-flex; align-items: center; gap: 3px;
  flex-shrink: 0; margin-top: 1px;
  pointer-events: none;
}
.event-card-bidragsyter-badge {
  display: inline-flex; align-items: center; justify-content: center; gap: 2px;
  min-width: 16px; height: 16px; padding: 0 4px;
  background: rgba(255, 255, 255, 0.92);
  color: var(--st-obs-tekst);
  border-radius: 100px; font-size: 10px; font-weight: 700;
  box-shadow: 0 1px 2px rgba(0,0,0,0.18);
}
.event-card-konflikt-badge {
  display: inline-flex; align-items: center; justify-content: center;
  width: 16px; height: 16px; border-radius: 100px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.18);
}
.event-card-konflikt-badge.ekb-tid { background: #FBBF24; color: #633806; }
.event-card-konflikt-badge.ekb-person { background: #C4B5FD; color: #3C2A80; }
/* Bemanningsdekning fra vakter koblet til punktet (vakter.program_id).
   pointer-events reaktiveres: badgen er klikkbar (hopper til vaktlistene)
   selv om badge-raden ellers slipper klikk gjennom til kortet. */
.event-card-vakt-badge {
  display: inline-flex; align-items: center; justify-content: center; gap: 2px;
  min-width: 16px; height: 16px; padding: 0 4px;
  background: rgba(255, 255, 255, 0.92); color: var(--st-ok-tekst);
  border-radius: 100px; font-size: 10px; font-weight: 700;
  box-shadow: 0 1px 2px rgba(0,0,0,0.18);
  pointer-events: auto; cursor: pointer;
}
.event-card-vakt-badge.evb--mangler { background: #FBBF24; color: #633806; }
.card-exp-konflikt-person { color: #C4B5FD; }
.card-exp-bidragsytere {
  display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px;
}
.card-exp-bidragsyter-chip {
  display: inline-flex; align-items: center; gap: 3px;
  padding: 2px 7px; border-radius: 100px;
  background: rgba(255,255,255,0.92); color: var(--st-obs-tekst);
  font-size: 11px; font-weight: 600;
}

/* Booking responsivt */
@media (max-width: 900px) {
  .bk-hero { flex-direction: column; align-items: stretch; }
  .bk-hero-budsjett { flex: 1; }
}
@media (max-width: 768px) {
  .bk-kort-grid { grid-template-columns: 1fr; }
  .bk-modal-kolonne-2,
  .bk-modal-kolonne-3 { grid-template-columns: 1fr; }
  .bk-budsjett-rad { grid-template-columns: 100px 1fr 90px 28px; }
  .bk-hendelse-chips { max-height: 240px; }
  .bk-pipeline { grid-template-columns: repeat(3, 1fr); }
  .bk-antall { display: none; }
  .bk-sok-wrap { flex: 1; }
  .bk-sok { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .bk, .bk * { animation: none !important; transition: none !important; }
}

/* ── Support-innboks ────────────────────────────────────────────────────────── */

.sup-wrapper { display: flex; flex-direction: column; height: 100%; }

.sup-topbar {
  display: flex; align-items: center; gap: 12px;
  padding: 0 0 14px; border-bottom: 1px solid var(--border); margin-bottom: 14px;
}
.sup-subtabs { display: flex; gap: 4px; }
.sup-subtab-btn {
  padding: 5px 14px; border-radius: 6px; border: 1px solid var(--border);
  background: none; color: var(--text-muted); font-size: 13px; cursor: pointer;
}
.sup-subtab-btn.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.sup-topbar-actions { margin-left: auto; }

.sup-ny-btn {
  padding: 5px 14px; border-radius: 6px; font-size: 13px; cursor: pointer;
  background: none; border: 1px solid var(--border); color: var(--text);
}
.sup-ny-btn:hover { background: var(--bg2); }

/* ── Innsikt-fanen: grunnlag, backlog og per-agent ────────────────────────────
   «av N saker» under hvert avledet tall er ikke pynt: en median regnet på tre
   saker er ikke et styringstall, og uten N ser den ut som ett. `.tynn` dempes
   IKKE — den er en advarsel, og en advarsel som ser ut som hjelpetekst er en
   advarsel ingen leser. */
.sup-stat-sub.tynn { color: var(--st-feil-tekst-adaptiv, #DC2626); font-weight: 600; }

.sup-stats-fotnote { margin: -4px 0 0; line-height: 1.5; }
/* Hullet i grunnlaget — saker merket som besvart uten et svar i tråden. Egen
   linje, ikke innbakt i setningen: tallet forklarer hvorfor N er lavere enn
   folk forventer, og da må det være mulig å få øye på. */
.sup-stats-hull { display: block; margin-top: 4px; color: var(--st-feil-tekst-adaptiv, #DC2626); }

/* Backlogen er en beholdning, ikke et volum. Egen farge, så de to
   stolpediagrammene i samme fane ikke leses som samme måling. */
.sup-backlog-bar { background: linear-gradient(180deg, var(--text-muted) 0%, var(--text) 100%); opacity: .75; }

.sup-agent-tabell-wrap { overflow-x: auto; }
.sup-agent-tabell { width: 100%; border-collapse: collapse; font-size: 13px; }
.sup-agent-tabell thead th {
  text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: .05em;
  color: var(--text-muted); font-weight: 600; padding: 0 12px 8px; border-bottom: 1px solid var(--border);
}
.sup-agent-tabell thead th:not(:first-child) { text-align: right; }
.sup-agent-tabell tbody td { padding: 11px 12px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.sup-agent-tabell tbody tr:last-child td { border-bottom: none; }
.sup-agent-navn { color: var(--text); font-weight: 600; }
.sup-agent-tall { text-align: right; color: var(--text); white-space: nowrap; }
.sup-agent-delt {
  display: inline-block; margin-left: 7px; padding: 1px 7px; border-radius: 6px;
  font-size: 10.5px; font-weight: 600; background: var(--bg2); color: var(--text-muted);
}

.sup-filter-rad {
  display: flex; align-items: center; gap: 8px; margin-bottom: 12px; flex-wrap: wrap;
}
.sup-filter-sel {
  padding: 5px 10px; border-radius: 6px; border: 1px solid var(--border);
  background: var(--bg); color: var(--text); font-size: 12px; cursor: pointer;
}
.sup-sak-teller { font-size: 12px; color: var(--text-muted); margin-left: auto; }

.sup-innboks-layout { display: flex; flex-direction: column; flex: 1; overflow: hidden; }

.sup-splitt {
  display: grid; grid-template-columns: 320px 1fr; gap: 0;
  flex: 1; overflow: hidden; border: 1px solid var(--border); border-radius: 10px;
}

.sup-liste-kol {
  overflow-y: auto; border-right: 1px solid var(--border);
  background: color-mix(in srgb, var(--border) 10%, var(--bg));
}

.sup-sak-rad {
  padding: 12px 14px; border-bottom: 1px solid var(--border); cursor: pointer;
  transition: background 0.1s;
}
.sup-sak-rad:hover { background: var(--bg2); }
.sup-sak-rad-aktiv { background: color-mix(in srgb, var(--primary) 10%, var(--bg)) !important; border-left: 3px solid var(--primary); }

.sup-sak-rad-topp { display: flex; align-items: center; gap: 6px; margin-bottom: 5px; }
.sup-sak-emne { font-size: 13px; font-weight: 500; color: var(--text); margin-bottom: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sup-sak-meta { font-size: 11px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sup-sak-dato { font-size: 11px; color: var(--text-muted); margin-left: auto; white-space: nowrap; }

.sup-chip {
  display: inline-flex; align-items: center; padding: 2px 7px; border-radius: 6px;
  font-size: 11px; font-weight: 500; white-space: nowrap;
}
.sup-chip-kat { background: none !important; border: 1px solid; }

.sup-detalj-kol { overflow-y: auto; padding: 20px 24px; }
.sup-velg-sak { color: var(--text-muted); font-size: 14px; padding: 40px 0; text-align: center; }
.sup-epost-link { color: var(--primary); text-decoration: none; font-size: 13px; }
.sup-epost-link:hover { text-decoration: underline; }

/* ── Detail panel shell ──────────────────────────────────────────────────── */

.sup-dp-topbar {
  display: flex; align-items: center;
  padding: 10px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  flex-shrink: 0;
}
.sup-dp-topbar-tittel {
  font-size: 11px; font-weight: 700; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .06em; flex: 1;
}
.sup-dp-lukk {
  width: 28px; height: 28px; border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  background: none; border: 1px solid var(--border);
  color: var(--text-muted); cursor: pointer;
  transition: background .12s, color .12s;
}
.sup-dp-lukk:hover { background: var(--bg2); color: var(--text); }
/* «Merk løst» — ett-klikks-avslutning, alltid synlig i topbaren */
.sup-dp-los-btn {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 12px; margin-right: 10px;
  border: 1px solid rgba(var(--st-ok-tint), .45); border-radius: 9px;
  background: var(--st-ok-bg); color: var(--st-ok-tekst);
  font-size: 12px; font-weight: 600; font-family: inherit; cursor: pointer;
  transition: background .12s, color .12s, border-color .12s, transform .08s;
}
.sup-dp-los-btn:hover { background: var(--st-ok-tekst); border-color: var(--st-ok-tekst); color: #fff; }
.sup-dp-los-btn:active { transform: scale(.97); }
/* «Blokker» — spam/ikke support. Dempet, ikke rød: den skal finnes, ikke
   friste. Bekreftelsen (adressen i klartekst) er der alvoret vises. */
.sup-dp-blokk-btn {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 11px; margin-right: 8px;
  border: 1px solid var(--border); border-radius: 9px;
  background: none; color: var(--text-muted);
  font-size: 12px; font-weight: 600; font-family: inherit; cursor: pointer;
  transition: background .12s, color .12s, border-color .12s, transform .08s;
}
.sup-dp-blokk-btn:hover { background: var(--st-feil-bg); border-color: var(--st-feil-tekst); color: var(--st-feil-tekst); }
.sup-dp-blokk-btn:active { transform: scale(.97); }
/* Tastehintet på knappene: sier hvilken tast som gjør det samme. */
.sup-kbd {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 15px; height: 15px; padding: 0 3px; margin-left: 2px;
  border: 1px solid currentColor; border-radius: 4px; opacity: .6;
  font-family: 'JetBrains Mono', monospace; font-size: 9.5px; font-weight: 700; line-height: 1;
}

.sup-dp-innhold {
  flex: 1; overflow: hidden;
  display: flex; flex-direction: column;
}

/* ── Case detail inner layout ────────────────────────────────────────────── */

.sup-detalj { flex: 1; display: flex; flex-direction: column; overflow: hidden; }

/* Én scroll-flate mellom fast topp og fast svarboks. Før scrollet bare
   meldingstråden, mens kontekstblokkene (AI, mangler, billett, historikk,
   aktivitet) lå som faste søsken over den og spiste panelhøyden — på en sak
   med mye kontekst ble tråden noen få piksler høy og resten uleselig. */
.sup-detalj-scroll {
  /* min-height 90 (var 0): gulvet som gjør at svarboksens dratte høyde aldri
     kan klemme tråden helt bort — samme grense som dra-håndtakets klemvern. */
  flex: 1; min-height: 90px; overflow-y: auto;
  overscroll-behavior: contain;
}

.sup-dh {
  flex-shrink: 0; padding: 16px 20px;
  border-bottom: 1px solid var(--border);
  display: flex; flex-direction: column; gap: 8px;
  background: var(--surface);
}
.sup-dh-rad1 { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.sup-dh-status-chip {
  display: inline-flex; align-items: center; padding: 3px 9px; border-radius: 6px;
  font-size: 11px; font-weight: 600; white-space: nowrap;
}
.sup-dh-kanal { font-size: 14px; margin-left: auto; }
.sup-dh-tittel { font-family: 'Bebas Neue', sans-serif; font-size: 22px; font-weight: 400; letter-spacing: .02em; color: var(--text); margin: 0; line-height: 1.15; }
.sup-dh-kontakt {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  font-size: 13px; color: var(--text-muted);
}
.sup-dh-kontakt strong { color: var(--text); }
.sup-dh-tidspunkt { font-size: 12px; }
.sup-dh-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding-top: 2px; }

.sup-status-sel {
  padding: 6px 10px; border-radius: var(--felt-r, 9px); border: 1px solid var(--border);
  background: var(--bg); color: var(--text); font-size: 12px; cursor: pointer; font-family: inherit;
}

/* Merkede felt: nedtrekkene sto før uten etikett, så «Normal» og
   «— Ingen event —» ga ingen mening før man hovret på dem. */
.sup-dh-felt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.sup-dh-felt-merk {
  font-size: 9.5px; font-weight: 700; letter-spacing: .07em;
  text-transform: uppercase; color: var(--text-muted);
}
.sup-dh-felt .sup-status-sel { width: 100%; }
.sup-dh-actions > .sup-dh-felt { flex: 1 1 140px; }

/* Ligger i scroll-flaten, ikke i den faste toppen — samme innrykk som de
   andre kontekstblokkene der. */
.sup-dh-mer { margin: 10px 20px 0; }
.sup-dh-mer > summary {
  display: flex; align-items: center; gap: 7px;
  cursor: pointer; user-select: none; list-style: none;
  font-size: 11px; font-weight: 600; color: var(--text-muted);
  padding: 4px 0;
}
.sup-dh-mer > summary::-webkit-details-marker { display: none; }
.sup-dh-mer > summary::before {
  content: '▸'; font-size: 10px; transition: transform .12s;
}
.sup-dh-mer[open] > summary::before { transform: rotate(90deg); }
.sup-dh-mer > summary:hover { color: var(--text); }
.sup-dh-mer-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 8px 10px; padding: 6px 0 2px;
}
.sup-tildel-btn {
  padding: 6px 12px; border-radius: 9px; border: 1px solid var(--border);
  background: none; color: var(--text); font-size: 12px; cursor: pointer; white-space: nowrap;
}
.sup-tildel-btn:hover { background: var(--bg2); }

/* AI summary */
.sup-ai-seksjon { flex-shrink: 0; padding: 12px 20px 0; }
.sup-ai-sammendrag {
  background: var(--primary-pill); border: 1px solid var(--border);
  border-radius: 12px; padding: 10px 14px;
  font-size: 13px; display: flex; align-items: flex-start; gap: 9px;
  color: var(--text); line-height: 1.5;
}
.sup-ai-badge {
  background: var(--primary); color: #fff; font-size: 10px; font-weight: 700;
  padding: 2px 7px; border-radius: 6px; flex-shrink: 0; margin-top: 1px;
  letter-spacing: .03em;
}
/* Samme badge, men som knapp: setter inn et utkast som bevisst ikke er
   forhåndsfylt fordi saken er løst/lukket. */
.sup-ai-badge-btn { border: none; cursor: pointer; font-family: inherit; }
.sup-ai-badge-btn:hover { filter: brightness(1.08); }
/* Feilet sending: agenten trykket send, e-posten gikk aldri ut. */
.sup-ikkesendt-badge { background: var(--st-feil-bg); color: var(--st-feil-tekst); }

/* Ticket info */
.sup-billett-seksjon { flex-shrink: 0; padding: 12px 20px 0; }
.sup-billett-info {
  background: #FFFBEB; border: 1px solid #FDE68A; border-radius: 12px; padding: 12px 14px;
}
.sup-seksjon-hdr {
  font-size: 11px; font-weight: 700; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .05em; margin-bottom: 8px;
}
.sup-seksjon-hdr-rad { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.sup-trad-teller {
  font-size: 11px; color: var(--text-muted);
  background: var(--bg2); border: 1px solid var(--border);
  border-radius: 999px; padding: 1px 8px;
}
.sup-kv-rad { display: flex; gap: 8px; font-size: 13px; margin-bottom: 5px; align-items: baseline; }
/* Ingen capitalize her: nøklene får lesbare navn fra _supFeltNavn, og
   «E-post på bestilling» skal ikke bli «E-Post På Bestilling». */
.sup-kv-nokkel { color: var(--text-muted); min-width: 130px; font-size: 12px; flex-shrink: 0; }
.sup-kv-verdi { color: var(--text); font-weight: 500; }

/* Thread — scroller ikke lenger selv; .sup-detalj-scroll eier scrollen */
.sup-trad-seksjon {
  padding: 14px 20px;
  display: flex; flex-direction: column;
}
.sup-trad { display: flex; flex-direction: column; gap: 14px; }
.sup-trad-tom { text-align: center; color: var(--text-muted); font-size: 13px; padding: 24px 0; }

/* Message bubbles */
.sup-meldrad { display: flex; gap: 10px; align-items: flex-start; }
.sup-meldrad-ut { flex-direction: row-reverse; }
.sup-meld-avatar {
  width: 30px; height: 30px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700; flex-shrink: 0; margin-top: 2px;
}
.sup-avatar-inn { background: var(--bg2); color: var(--text); }
.sup-avatar-ut  { background: var(--primary-pill); color: var(--primary-dark-adaptiv); }
.sup-meld-boble { max-width: 82%; display: flex; flex-direction: column; gap: 4px; }
.sup-meld-meta { display: flex; align-items: center; gap: 7px; padding: 0 4px; }
.sup-meldrad-ut .sup-meld-meta { justify-content: flex-end; }
.sup-melding-fra { font-size: 12px; font-weight: 600; color: var(--text); }
.sup-melding-tid { font-size: 11px; color: var(--text-muted); }
.sup-sendt-merke { font-size: 11px; color: var(--st-ok-tekst); font-weight: 500; }
.sup-ikkesendt-merke { font-size: 11px; color: var(--st-feil-tekst); font-weight: 600; }
.sup-melding { border-radius: 12px; padding: 10px 14px; font-size: 13px; line-height: 1.55; }
.sup-melding-inn { background: var(--bg2); color: var(--text); border-radius: 12px 12px 12px 3px; }
.sup-melding-ut  { background: var(--primary-pill); border: 1px solid var(--border); color: var(--text); border-radius: 12px 12px 3px 12px; }

/* Sitatbrettet: e-poster bærer hele den tidligere tråden som sitert hale —
   bobla viser kun egen tekst, halen ligger bak «Tidligere i tråden».
   Tema-tokens, ikke literale farger — boblene skifter flate i mørk modus. */
.sup-sitatbrett { margin-top: 6px; }
.sup-sitatbrett summary {
  list-style: none; cursor: pointer; user-select: none;
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11.5px; font-weight: 600; color: var(--text-muted); padding: 3px 0;
}
.sup-sitatbrett summary::-webkit-details-marker { display: none; }
.sup-sitatbrett summary::before { content: '⋯'; letter-spacing: .04em; }
.sup-sitat-tekst {
  font-size: 12px; line-height: 1.5; color: var(--text-muted);
  border-left: 2px solid var(--border); padding-left: 9px; margin-top: 2px;
}

/* ── Automatikk: regler og makroer ───────────────────────────────────────────
   Ingen literale farger. Flate- og tekstfargene er tema-tokens (--surface,
   --bg2, --text, --text-muted, --border) som byttes i mørk modus.
   Statusfargene brukes i PAR — --st-ok-bg sammen med --st-ok-tekst, aldri hver
   for seg. Grunnen står i stil-base.css: de tre --st-*-bg-tokenene er definert
   kun i den lyse paletten, så et par holder seg lesbart i begge temaer mens en
   enslig --st-*-tekst på en tema-flate ikke gjør det. Samme felle som
   --st-obs-bg er dokumentert for i DESIGN.md §2. */

/* Menyen posisjoneres mot verktøyraden. Regelen bor her og ikke i stil-livx
   (der raden defineres) fordi den fila ikke er min i denne runden — og fordi
   `position` ikke settes der, så det er et rent tillegg og ingen overstyring. */
.sup-svar-verktoy { position: relative; }

/* Skjemaet: MAKS TO FELT PER RAD på telefon, og ett når det ikke er plass.
   Et regelskjema med fire kolonner blir en horisontal scroll ingen finner
   knappene i — og en regel man ikke får lagret, blir ikke laget. */
.sup-regel-form {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
  margin: 10px 0 4px;
}
.sup-regel-bred { grid-column: 1 / -1; }
.sup-regel-tittel {
  font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-muted); margin-top: 6px;
}
/* Handlingsraden: type til venstre, verdi til høyre. Verdien får mest plass —
   det er der en e-postadresse eller en notattekst skal stå. */
.sup-regel-h-rad {
  grid-column: 1 / -1;
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 8px; align-items: start;
}
.sup-regel-h-verdi { min-width: 0; }
.sup-regel-h-verdi > * { width: 100%; box-sizing: border-box; }
.sup-regel-knapper { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 4px; }

@media (max-width: 520px) {
  .sup-regel-form { grid-template-columns: 1fr; }
  .sup-regel-h-rad { grid-template-columns: 1fr; }
}

/* Av/på-merket i lista. «Av» er standardtilstanden for en ny regel, så den
   skal se rolig ut — ikke som en feil. «På» er den som endrer saker, og det er
   den som skal være lett å få øye på når man skanner lista. */
.sup-regel-merke {
  font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  padding: 1px 6px; border-radius: 999px; margin-left: 6px; vertical-align: middle;
}
.sup-regel-merke.paa { color: var(--st-ok-tekst); background: var(--st-ok-bg); }
.sup-regel-merke.av  { color: var(--text-muted); background: var(--bg2); }

/* Tørrkjøringen. Den er svaret på «tør jeg skru på denne?», så den skal være
   lesbar som en setning — ikke en tabell. */
.sup-regel-torr {
  margin-top: 10px; padding: 10px 12px; border-radius: 10px;
  background: var(--bg2); border: 1px solid var(--border);
  font-size: 13px; line-height: 1.55; color: var(--text);
}
.sup-regel-torr-feil { background: var(--st-feil-bg); border-color: var(--st-feil-tekst); color: var(--st-feil-tekst); }
.sup-regel-torr-liste { margin: 8px 0 0; padding-left: 18px; max-height: 190px; overflow-y: auto; }
.sup-regel-torr-liste li { margin-bottom: 3px; }

/* Makro-menyen i svarkonsollen. Absolutt posisjonert over verktøyraden framfor
   å skyve den: raden ligger nederst i panelet, og en meny som dytter innholdet
   ville flyttet «Send svar» under fingeren idet lista åpnet seg. */
.sup-makro-meny {
  position: absolute; bottom: calc(100% + 6px); left: 0; z-index: 6;
  min-width: min(280px, 88vw); max-width: 92vw; max-height: 260px; overflow-y: auto;
  padding: 6px; border-radius: 12px;
  background: var(--surface); border: 1px solid var(--border);
  box-shadow: 0 8px 24px rgba(0, 0, 0, .18);
}
.sup-makro-valg {
  display: flex; flex-direction: column; gap: 2px; width: 100%; text-align: left;
  padding: 8px 10px; border: 0; border-radius: 8px; background: transparent;
  cursor: pointer; color: var(--text);
}
.sup-makro-valg:hover { background: var(--bg2); }
.sup-makro-navn { font-size: 13px; font-weight: 600; }
/* Sammendraget er bekreftelsessteget: en makro endrer saken uten angreknapp,
   så agenten skal se HVA som skjer før hen trykker — ikke bare et navn. Derfor
   brytes teksten i stedet for å klippes med ellipse. */
.sup-makro-hva { font-size: 11px; color: var(--text-muted); line-height: 1.4; }

/* Compose */
.sup-svar-panel {
  /* shrink:1 (var 0): en husket dratt høyde fra en stor skjerm kan overstige
     plassen på en liten — da viker boksen for trådens minstehøyde i stedet
     for å skyve den ut av panelet. Uten eksplisitt høyde krymper ingenting,
     for scroll-flatas flex-basis er 0. */
  flex-shrink: 1; padding: 12px 16px 16px;
  border-top: 2px solid var(--border);
  background: var(--surface);
  /* Dra-håndtaket setter eksplisitt height; flex-kolonna lar textarea fylle
     den. Taket sikrer at tråden over aldri klemmes helt bort. border-box så
     JS-høyden (målt med getBoundingClientRect) betyr det samme som height. */
  position: relative; box-sizing: border-box;
  display: flex; flex-direction: column;
  max-height: calc(100% - 150px);
}
.sup-svar-panel .sup-svar-mode-velger,
.sup-svar-panel .sup-svar-hdr,
.sup-svar-panel .sup-svar-footer { flex-shrink: 0; }
.sup-svar-panel .sup-svar-grip {
  position: absolute; top: 0; left: 0; right: 0; height: 14px;
  display: flex; align-items: center; justify-content: center;
  cursor: ns-resize; touch-action: none; z-index: 3;
}
.sup-svar-grip-pill {
  width: 44px; height: 4px; border-radius: 999px;
  background: var(--border);
  transition: background .12s, transform .12s;
}
.sup-svar-grip:hover .sup-svar-grip-pill,
body.sup-svar-drar .sup-svar-grip-pill { background: var(--text-muted); transform: scaleX(1.3); }
body.sup-svar-drar { cursor: ns-resize; user-select: none; }
.sup-svar-hdr {
  font-size: 12px; font-weight: 600; color: var(--text-muted);
  margin-bottom: 8px; display: flex; align-items: center; gap: 5px;
  /* nowrap: den løse teksten «Svar til» er et anonymt flex-barn som ellers
     bryter til to linjer før signaturen (min-width:0) får krympe. */
  white-space: nowrap;
}
.sup-svar-hdr strong { color: var(--text); }
.sup-svar-tekst {
  width: 100%; box-sizing: border-box; padding: 10px 12px;
  border: 1px solid var(--border); border-radius: 10px;
  background: var(--bg); color: var(--text); font-size: 13px;
  resize: vertical; font-family: inherit; line-height: 1.5;
  transition: border-color .15s, box-shadow .15s;
  /* Taket gjør at et manuelt dratt felt ikke kan spise hele panelet —
     svarboksen er fast, så alt den tar går rett fra lesehøyden. */
  max-height: 32vh;
}
.sup-svar-tekst:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-pill); }
/* I detaljpanelets svarboks styrer dra-håndtaket høyden — feltet fyller
   boksen, og hjørne-resize + 32vh-taket fra basisregelen over er avløst. */
.sup-svar-panel .sup-svar-tekst {
  flex: 1; min-height: 60px;
  max-height: none; resize: none;
}
.sup-svar-footer { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
.sup-send-btn {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 18px; border-radius: 10px; font-size: 13px; font-weight: 600; cursor: pointer;
  background: var(--primary); color: #fff; border: none;
  transition: background .12s, transform .08s;
  margin-left: auto;
}
.sup-send-btn:hover { background: var(--primary-dark); }
.sup-send-btn:active { transform: scale(0.98); }
.sup-send-btn:disabled { opacity: 0.5; cursor: not-allowed; }

.sup-laster, .sup-feil, .sup-tom {
  padding: 32px; text-align: center; color: var(--text-muted); font-size: 14px;
}
.sup-feil { color: #dc2626; }

#sup-innstillinger-innhold { flex: 1; overflow-y: auto; padding-bottom: 24px; }
/* Bredden styres av seksjonskolonnene i stil-livx.css (.inst-kolonner) — et tak
   her ville låst flaten til én smal spalte uansett skjerm. */
.sup-innst-wrapper { display: flex; flex-direction: column; gap: 16px; }
.sup-form-gruppe { display: flex; flex-direction: column; gap: 6px; }
/* display:flex over vinner alltid over nettleserens standard [hidden]{display:none}
   (samme opphav, og author slår UA) — uten denne blir _mkOppdaterFeltScope sin
   el.hidden=true et no-op i skjermbildet, selv om attributtet står riktig i DOM-en. */
.sup-form-gruppe[hidden] { display: none; }
.sup-form-gruppe label { font-size: 12px; font-weight: 500; color: var(--text-muted); }
.sup-input {
  padding: 8px 12px; border: 1px solid var(--border); border-radius: 8px;
  background: var(--bg); color: var(--text); font-size: 13px; font-family: inherit;
}
.sup-input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-pill); }
.sup-hjelp-tekst { font-size: 12px; color: var(--text-muted); margin: 0; line-height: 1.5; }
.mk-sjekk { display: flex; gap: 8px; align-items: flex-start; margin: 10px 0; font-size: 13px; color: var(--text); line-height: 1.45; cursor: pointer; }
.mk-sjekk input { margin-top: 2px; flex-shrink: 0; }
/* Samtykkeboksene i det OFFENTLIGE skjemaet målte 13 × 13 px i prod
   17.08.2026 — under halvparten av WCAG 2.5.8 (AA) sitt minstemål på 24 × 24,
   på den ene avkrysningen som må treffes for at påmeldingen skal kunne sendes.
   Scoped til .sup-public-card: inne i admin-flatene sitter de samme boksene i
   tette lister med musepeker, der 24 px ville sprengt radhøyden. */
.sup-public-card .mk-sjekk { gap: 10px; align-items: center; font-size: 14px; }
.sup-public-card .mk-sjekk input { width: 24px; height: 24px; margin-top: 0; accent-color: var(--primary); }

/* Medarbeiderens «min side»: program (teamets hendelser + eget ansvar) */
.mk-prog-dag { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: var(--text-muted); margin: 10px 0 4px; }
.mk-prog-dag:first-of-type { margin-top: 2px; }
.mk-prog-rad { display: flex; gap: 10px; align-items: flex-start; padding: 6px 0; border-bottom: 1px solid var(--border); }
.mk-prog-rad:last-child { border-bottom: none; }
.mk-prog-tid { font-variant-numeric: tabular-nums; font-size: 12px; color: var(--text-muted); white-space: nowrap; padding-top: 1px; min-width: 84px; }
.mk-prog-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.mk-prog-info strong { font-size: 13.5px; line-height: 1.35; }
.mk-prog-merke { flex-shrink: 0; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); background: var(--primary-pill); border-radius: 5px; padding: 2px 6px; margin-top: 1px; }
.mk-prog-merke--ansvar { color: #6D28D9; background: #EDE7FB; }
.mk-hjemtips { margin-top: 16px; border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; display: flex; flex-direction: column; gap: 4px; background: var(--surface); }
.mk-hjemtips strong { font-size: 13px; }

/* «Min side» i standalone: hoderad med oppdater-knapp (eyebrow-margen flyttes
   til raden så knappen sentreres mot teksten, ikke mot tekst + luft) */
.mk-hode { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.mk-hode .sup-public-eyebrow { margin-bottom: 0; }
.mk-oppdater { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--border); background: var(--surface); color: var(--text); font-size: 12.5px; font-weight: 600; border-radius: 8px; padding: 6px 12px; cursor: pointer; flex-shrink: 0; }
.mk-oppdater:active { transform: scale(0.97); }

/* Status + sektor + team på én brytbar linje under tittelen */
.mk-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 5px 14px; margin: 0 0 16px; font-size: 13px; color: var(--text-muted); }
.mk-meta strong { color: var(--text); font-weight: 600; }

/* Kollapset fortid (vakter og programdager) */
.mk-tidligere { margin: 0 0 4px; }
.mk-tidligere summary { cursor: pointer; font-size: 12.5px; font-weight: 600; color: var(--text-muted); padding: 4px 0; list-style: none; display: inline-flex; align-items: center; gap: 5px; }
.mk-tidligere summary::-webkit-details-marker { display: none; }
.mk-tidligere summary::before { content: '▸'; font-size: 10px; transition: transform .12s; }
.mk-tidligere[open] summary::before { transform: rotate(90deg); }
.mk-tidligere[open] { border-bottom: 1px dashed var(--border); padding-bottom: 6px; margin-bottom: 8px; }

/* «Hele programmet» — de publikumsvendte punktene, lukket som standard.
   Summary-en er en ekte knapp og ikke en dempet lenke som .mk-tidligere:
   dette er noe medarbeideren skal FINNE, mens «vis tidligere» er noe hun
   stort sett skal la ligge. Egen klasse og ikke en .mk-tidligere-variant
   nettopp fordi de to skal se forskjellige ut — og fordi seksjonen har en
   .mk-tidligere NØSTET inni seg (passerte dager i det fulle programmet).
   Derfor er alle reglene her direkte barn (>): uten det ville knappestilen
   truffet den nøstede summary-en også. */
.mk-heleprog { margin: 4px 0 16px; }
.mk-heleprog > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 600; color: var(--text); border: 1px solid var(--border); background: var(--surface); border-radius: 10px; padding: 11px 14px; }
.mk-heleprog > summary::-webkit-details-marker { display: none; }
.mk-heleprog > summary:active { transform: scale(0.99); }
.mk-heleprog > summary svg { flex-shrink: 0; color: var(--text-muted); }
.mk-heleprog > summary > span:first-of-type { flex: 1; min-width: 0; }
.mk-heleprog-antall { flex-shrink: 0; font-size: 11.5px; font-weight: 700; color: var(--text-muted); background: var(--primary-pill); border-radius: 999px; padding: 2px 8px; }
/* Chevron til slutt, som snur når seksjonen åpnes */
.mk-heleprog > summary::after { content: '▸'; flex-shrink: 0; font-size: 11px; color: var(--text-muted); transition: transform .12s; }
.mk-heleprog[open] > summary::after { transform: rotate(90deg); }
.mk-heleprog[open] > summary { border-radius: 10px 10px 0 0; border-bottom-color: transparent; }
.mk-heleprog-innhold { border: 1px solid var(--border); border-top: none; border-radius: 0 0 10px 10px; padding: 4px 14px 12px; }
.mk-heleprog-innhold > .sup-hjelp-tekst { margin: 0 0 6px; }

/* Push-opt-in: CTA-en skal være det mest synlige på siden (aksent-ramme +
   fylt knapp); på-tilstanden er en stille kvitteringsrad */
.mk-push { margin: 0 0 16px; border-radius: 12px; padding: 14px 16px; display: flex; flex-direction: column; gap: 6px; }
.mk-push--cta { background: color-mix(in srgb, var(--primary) 8%, var(--surface)); border: 1.5px solid var(--primary); }
.mk-push--cta strong { font-size: 14.5px; }
.mk-push--cta span { font-size: 13px; color: var(--text-muted); line-height: 1.45; }
.mk-push-knapp { margin-top: 4px; border: none; border-radius: 10px; background: var(--primary); color: #fff; font-size: 14.5px; font-weight: 700; padding: 12px 16px; cursor: pointer; width: 100%; }
.mk-push-knapp:hover { background: var(--primary-dark); }
.mk-push-knapp:active { transform: scale(0.99); }
.mk-push-knapp:disabled { opacity: .6; cursor: default; }
.mk-push--paa { flex-direction: row; align-items: center; justify-content: space-between; gap: 10px; border: 1px solid var(--border); background: var(--bg2); font-size: 13px; }
.mk-push--av { border: 1px dashed var(--border); background: var(--bg2); }
.mk-push-av { flex-shrink: 0; border: none; background: none; color: var(--text-muted); font-size: 12.5px; font-weight: 600; text-decoration: underline; cursor: pointer; padding: 4px; }
/* Vises i stedet for sektor/team/vakter/program når INGEN av dem er satt ennå
   — se venterPaaTildeling i app-bemanning.js. Samme kortform som hjemtipset,
   men på bg2 så den leser som et svar og ikke som enda et tomt felt. */
.mk-venter { margin: 2px 0 4px; border: 1px solid var(--border); border-radius: 10px; padding: 13px 15px; display: flex; flex-direction: column; gap: 4px; background: var(--bg2); }
.mk-venter strong { font-size: 14px; }

/* Infoskriv-boksen på påmeldingsskjemaet og «min side». Rad, ikke kolonne:
   dokumentnavnet og Åpne-knappen hører sammen, og avkryssingen står som en
   egen .mk-sjekk under — den skal lese som et eget spørsmål, ikke som en del
   av kortet. Wrapper på smal skjerm så knappen ikke presser navnet bort. */
.mk-infoskriv { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 10px 0 2px; border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; background: var(--bg2); }
.mk-infoskriv-tekst { flex: 1; min-width: 140px; display: flex; flex-direction: column; gap: 2px; }
.mk-infoskriv-tekst strong { font-size: 13.5px; }
.mk-infoskriv-apne { flex-shrink: 0; text-decoration: none; font-size: 13px; font-weight: 700; color: var(--primary); border: 1px solid var(--primary); border-radius: 8px; padding: 7px 14px; background: var(--surface); }
.mk-infoskriv-apne:hover { background: var(--primary-pill); }

/* ── Medarbeider/Bemanning-arbeidsflate ── */
.bem-subnav { display: inline-flex; gap: 4px; padding: 5px; margin: 14px 16px 8px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; flex-wrap: wrap; z-index: 2; box-shadow: 0 1px 2px rgba(0,0,0,0.04); }
#bem-sub { flex: 1; min-height: 0; overflow-y: auto; padding: 16px 24px 28px; }
#bem-sub.bem-sub--full { padding: 0; overflow: hidden; }
.bem-subnav-btn { background: none; border: none; border-radius: 8px; padding: 9px 16px; font-size: 13.5px; font-weight: 600; color: var(--text-muted); cursor: pointer; display: inline-flex; align-items: center; gap: 7px; transition: background .12s ease, color .12s ease; }
.bem-subnav-btn:hover { background: var(--primary-pill); color: var(--text); }
.bem-subnav-btn.aktiv { background: var(--primary); color: #fff; }
.bem-subnav-btn.aktiv .bem-badge { background: #fff; color: var(--primary); }
.bem-badge { background: #F71B00; color: #fff; font-size: 11px; font-weight: 700; border-radius: 10px; padding: 1px 7px; }
.bem-tom { text-align: center; padding: 40px 20px; color: var(--text-muted); font-size: 14px; line-height: 1.6; }
.bem-vp-hode { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.bem-vp-hode h3 { margin: 0; font-size: 16px; color: var(--text); }
.bem-verktoy { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
/* Felles kontrollhøyde i hele bemanning-flaten: knapper, nedtrekk og
   inputfelt på samme linje skal stå i samme høyde (36 px). */
#bem-sub .ok-last-banner-btn,
#bem-sub .bem-ml-fjern,
#bem-sub .sup-filter-sel,
#bem-sub input.sup-input { height: 36px; box-sizing: border-box; }
#bem-sub .ok-last-banner-btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 0 15px; }
#bem-sub .bem-ml-fjern { display: inline-flex; align-items: center; padding: 0 14px; }
#bem-sub .sup-filter-sel { padding: 0 10px; border-radius: 8px; font-size: 13px; }
#bem-sub .bem-felt-scope { height: 30px; padding: 0 10px; font-size: 12px; font-weight: 600; }
/* Poppy knapper i bemanning: lite løft på hover, trykk-ned på klikk */
#bem-sub .ok-last-banner-btn, #bem-sub .bem-ml-fjern { transition: transform .15s ease, box-shadow .15s ease, background .12s ease, border-color .12s ease; }
#bem-sub .ok-last-banner-btn:not(:disabled):hover, #bem-sub .bem-ml-fjern:hover { transform: translateY(-1px); }
#bem-sub .ok-last-banner-btn:not(:disabled):active, #bem-sub .bem-ml-fjern:active { transform: translateY(0) scale(.97); }
.bem-chip { font-size: 11px; padding: 1px 8px; border-radius: 10px; background: var(--primary-pill); color: var(--text-muted); }
.bem-chip-advarsel { background: var(--st-obs-bg); color: var(--st-obs-tekst); }

/* ── Innboks: master-detalj — påmeldt-liste til venstre, valgt person i panel
   til høyre. Kolonnene ruller hver for seg; på smal skjerm vises én om gangen. ── */
#bem-sub.bem-sub--innboks { display: flex; flex-direction: column; overflow: hidden; }
.bem-inn { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(260px, 330px) minmax(0, 1fr); border: 1px solid var(--border); border-radius: 12px; background: var(--surface); overflow: hidden; }
.bem-inn-liste { overflow-y: auto; border-right: 1px solid var(--border); background: color-mix(in srgb, var(--bg) 55%, var(--surface)); }
.bem-inn-rad { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; border: none; background: none; padding: 11px 14px; cursor: pointer; font: inherit; color: var(--text); border-bottom: 1px solid var(--border); border-left: 3px solid transparent; transition: background .1s ease; }
.bem-inn-rad:hover { background: var(--surface); }
.bem-inn-rad.aktiv { background: var(--surface); border-left-color: var(--primary); }
.bem-inn-rad-tekst { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.bem-inn-rad-tekst b { font-size: 13.5px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bem-inn-rad-tekst small { font-size: 11.5px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bem-inn-rad-tid { font-size: 11px; color: var(--text-muted); white-space: nowrap; align-self: flex-start; margin-top: 3px; }
.bem-inn-panel { overflow-y: auto; min-width: 0; }
.bem-inn-kort { padding: 18px 22px 22px; display: flex; flex-direction: column; gap: 16px; }
.bem-inn-tilbake { display: none; }
.bem-inn-hode { display: flex; align-items: center; gap: 12px; }
.bem-inn-avatar { width: 44px; height: 44px; font-size: 14px; }
.bem-inn-hode-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.bem-inn-hode-info h4 { margin: 0; font-size: 17px; font-weight: 800; color: var(--text); }
/* Feltbokser er standard i .bem-ml-felt (delt med medarbeiderlista) —
   her ligger panelet på --surface, så boksene får --bg for kontrast */
.bem-inn-kort .bem-ml-felt { background: var(--bg); }
.bem-inn-tildel { border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; background: var(--bg); display: flex; flex-direction: column; gap: 8px; }
.bem-inn-tildel .bemo-mikro-lbl b { color: var(--text); }
.bem-inn-tildel-rad { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.bem-inn-tildel-rad .sup-filter-sel { flex: 1 1 180px; min-width: 0; }
@media (max-width: 820px) {
  .bem-inn { grid-template-columns: 1fr; }
  .bem-inn-panel { display: none; }
  .bem-inn--detalj .bem-inn-liste { display: none; }
  .bem-inn--detalj .bem-inn-panel { display: block; }
  .bem-inn-kort { padding: 14px 16px 18px; }
  .bem-inn-tilbake { display: inline-flex; align-items: center; gap: 5px; align-self: flex-start; border: none; background: none; color: var(--primary); font: 600 13px/1 Inter, sans-serif; padding: 0; cursor: pointer; }
}
.bem-feil { color: var(--st-feil-tekst); font-size: 12px; }
.bem-tabell { width: 100%; border-collapse: collapse; font-size: 13px; }
.bem-tabell th, .bem-tabell td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.bem-tabell th { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); }
.bem-vakt-liste { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
.bem-vakt-kort { border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; background: var(--surface); display: flex; flex-direction: column; gap: 8px; }
.bem-vakt-hode { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.bem-vakt-folk { display: flex; flex-wrap: wrap; gap: 6px; }
.bem-person-chip { display: inline-flex; align-items: center; gap: 4px; background: var(--primary-pill); border-radius: 12px; padding: 2px 6px 2px 10px; font-size: 12px; }
.bem-person-chip button { border: none; background: none; cursor: pointer; font-size: 14px; line-height: 1; color: var(--text-muted); }
.bem-vakt-tildel { display: flex; gap: 6px; align-items: center; }
/* Fyllingslinje på vaktkortet: hvor mange av maks, og dobbeltbooking-varsel */
.bem-fylling { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12px; }
.bem-fylling-spor { flex: 0 0 72px; height: 5px; border-radius: 3px; background: var(--border); overflow: hidden; }
.bem-fylling-fyll { display: block; height: 100%; background: var(--primary); border-radius: 3px; transition: width .18s; }
.bem-fylling-fyll.er-full { background: #16A34A; }
.bem-fylling-tall { color: var(--text-muted); }
.bem-fylling-tall.er-full { color: #16A34A; font-weight: 600; }
.bem-fylling-krasj { padding: 1px 8px; border-radius: 10px; background: var(--st-obs-bg); color: var(--st-obs-tekst); font-weight: 600; font-size: 11px; }

/* ── Bemanningsmodal (app-bemanning.js: _bemAapneBemanning) ──
   Egne klassenavn med vilje: «.modal button» i stil-base.css (0,1,1) vasker
   knappefarger, og primærknappen her skal beholde sin. */
.bem-bemann-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.45); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 20px; }
.bem-bemann-dialog { background: var(--surface); border-radius: 14px; width: min(760px, 100%); max-height: min(86vh, 760px); display: flex; flex-direction: column; box-shadow: 0 18px 48px rgba(0,0,0,.28); overflow: hidden; }
.bem-bemann-hode { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 16px 18px 12px; border-bottom: 1px solid var(--border); }
.bem-bemann-tittel { font-size: 16px; font-weight: 700; }
.bem-bemann-lukk { border: none; background: none; font-size: 18px; line-height: 1; color: var(--text-muted); cursor: pointer; padding: 2px 4px; }
.bem-bemann-lukk:hover { color: var(--text); }

.bem-bemann-verktoy { display: flex; flex-direction: column; gap: 8px; padding: 12px 18px; border-bottom: 1px solid var(--border); }
.bem-bemann-filtre { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.bem-bemann-etikett { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); margin-right: 2px; }
.bem-bemann-filter { display: inline-flex; align-items: center; gap: 6px; border: 1.5px solid var(--border); background: transparent; color: var(--text); font-family: inherit; font-size: 12px; font-weight: 500; padding: 4px 12px; border-radius: 100px; cursor: pointer; }
.bem-bemann-filter:hover { border-color: var(--primary); color: var(--primary); }
.bem-bemann-filter.aktiv { background: var(--primary); border-color: var(--primary); color: #fff; font-weight: 600; }
.bem-bemann-sok { width: 100%; }

.bem-bemann-kropp { flex: 1; overflow-y: auto; padding: 4px 18px 12px; }
.bem-bemann-bolk { padding: 12px 0; border-bottom: 1px solid var(--border); }
.bem-bemann-bolk:last-child { border-bottom: none; }
.bem-bemann-bolk-hode { display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); margin-bottom: 8px; }
.bem-bemann-vipp { width: 100%; border: none; background: none; font-family: inherit; cursor: pointer; padding: 0; margin-bottom: 0; }
.bem-bemann-vipp[aria-expanded="true"] { margin-bottom: 8px; }
.bem-bemann-pil { font-size: 10px; }
.bem-bemann-ant { background: var(--primary-pill); color: var(--text-muted); border-radius: 10px; padding: 1px 7px; font-size: 11px; letter-spacing: 0; }
.bem-bemann-sort { margin-left: auto; font-weight: 400; text-transform: none; letter-spacing: 0; font-size: 11px; }
.bem-kand-rad { display: flex; flex-wrap: wrap; gap: 6px; }
.bem-kand { display: inline-flex; align-items: center; gap: 6px; }
/* Belastningstallet skal lese som sekundært — det rangerer, det roper ikke */
.bem-kand-ant { font-size: 10px; font-weight: 600; opacity: .62; }
.bem-kand.selected .bem-kand-ant { opacity: .85; }
.bem-kand.er-opptatt { border-color: var(--st-obs-tekst); color: var(--st-obs-tekst); }
.bem-kand.er-opptatt:hover { background: var(--st-obs-bg); }
.bem-kand.er-opptatt.selected { background: var(--st-obs-tekst); border-color: var(--st-obs-tekst); color: #fff; }
.bem-kand.er-nei { border-style: dashed; color: var(--text-muted); }
.bem-kand.er-nei:hover { background: var(--bg2); }
/* Valgt = bevisst overstyrt. Den skal fortsatt se overstyrt ut, ikke normal. */
.bem-kand.er-nei.selected { background: var(--bg2); border-color: var(--text-muted); color: var(--text); }
/* Ønskemerket. currentColor med vilje, og INGEN egen kant: brikka har alt fire
   fargetilstander (normal, selected, er-opptatt, er-opptatt.selected), og en
   fast farge ville forsvunnet i minst én — --primary blir usynlig på .selected,
   som selv ER --primary. Stjerna bærer form; betydningen står i title og
   aria-label. En kantfarge her ville dessuten overstyrt obs-kanten på den som
   både har ønsket seg vakta og er opptatt, og konfliktsignalet skal vinne. */
.bem-kand-onske { font-size: 11px; line-height: 1; opacity: .8; }

/* ── Ønsker-visningen (2026-08-26) ──
   Køa av vaktønsker. Fargebruken er bevisst mager: statustokenene
   --st-*-tekst finnes KUN i lys utgave, så merkene bygges på de adaptive
   variantene der de finnes, og ellers på currentColor + form. */
.bem-onske-styring { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.bem-onske-segment { flex: 0 0 auto; }
.bem-onske-teller { font-size: 12px; font-weight: 600; color: var(--text-muted); }
.bem-onske-varsle { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-muted); cursor: pointer; }
.bem-seg-teller { margin-left: 6px; background: var(--primary-pill); color: var(--text-muted); border-radius: 10px; padding: 1px 6px; font-size: 11px; font-weight: 700; }
.bem-seg-btn.aktiv .bem-seg-teller { background: rgba(255,255,255,0.28); color: #fff; }

.bem-onske-liste { display: flex; flex-direction: column; gap: 10px; }
.bem-onske-kort { border: 1px solid var(--border); border-radius: 10px; background: var(--surface); padding: 10px 12px; }
.bem-onske-hode { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.bem-onske-hode strong { font-size: 14px; }
.bem-onske-dekning { margin-left: auto; font-size: 11px; font-weight: 700; color: var(--text-muted); }
.bem-onske-dekning.er-full { color: var(--st-obs-tekst-adaptiv); }

.bem-onske-rad { display: flex; align-items: center; gap: 8px; padding: 5px 0; border-top: 1px solid var(--border); }
.bem-onske-rad:first-of-type { border-top: none; }
.bem-onske-navn { font-size: 13px; }
.bem-onske-merke { font-size: 10px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; }
/* «Satt på» er ferdig, ikke feiret — dempet, ikke grønt. Grønnen finnes
   uansett bare i lys utgave (--st-ok-tekst), så en tone her ville krevd en
   egen mørk regel ved siden av. */
.bem-onske-merke.er-godtatt { color: var(--text-muted); opacity: .75; }
.bem-onske-merke.er-opptatt { color: var(--st-obs-tekst-adaptiv); }

.bem-onske-godta, .bem-onske-apne {
  margin-left: auto; border-radius: 8px; padding: 3px 10px; font-family: inherit;
  font-size: 12px; font-weight: 600; cursor: pointer; border: 1px solid var(--border);
}
.bem-onske-godta { background: var(--primary); border-color: var(--primary); color: #fff; }
.bem-onske-godta:hover { filter: brightness(1.08); }
.bem-onske-godta-alle { margin-left: 0; }
/* «Åpne vakta» står der Godta ville stått for en opptatt person: veien videre
   finnes, men den går gjennom modalen der dobbeltbookingen sies eksplisitt. */
.bem-onske-apne { background: var(--surface); color: var(--text); }
.bem-onske-apne:hover { border-color: var(--primary); color: var(--primary); }
/* Avslå er dempet i ro og rød først på hover: den skal finnes, ikke friste.
   Står den foran Godta/Åpne vakta, tar den auto-margen og primærknappen
   legger seg inntil — samme høyrekant som når den står alene. */
.bem-onske-avslaa {
  margin-left: auto; border-radius: 8px; padding: 3px 10px; font-family: inherit;
  font-size: 12px; font-weight: 600; cursor: pointer;
  border: 1px solid var(--border); background: var(--surface); color: var(--text-muted);
}
.bem-onske-avslaa:hover { border-color: rgb(var(--st-feil-tint)); color: rgb(var(--st-feil-tint)); }
.bem-onske-avslaa + .bem-onske-godta, .bem-onske-avslaa + .bem-onske-apne { margin-left: 0; }

.bem-bemann-varsle { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-muted); cursor: pointer; margin-right: auto; }

@media (max-width: 640px) {
  .bem-onske-varsle { margin-left: 0; width: 100%; }
  .bem-onske-dekning { margin-left: 0; }
}
.bem-bemann-mer { margin-top: 8px; border: 1px solid var(--border); background: var(--surface); color: var(--text); font-family: inherit; font-size: 12px; font-weight: 600; padding: 4px 12px; border-radius: 8px; cursor: pointer; }
.bem-bemann-mer:hover { border-color: var(--primary); color: var(--primary); }

.bem-bemann-fot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 18px; border-top: 1px solid var(--border); background: var(--bg); flex-wrap: wrap; }
.bem-bemann-status { font-size: 12px; color: var(--text-muted); }
.bem-bemann-status.er-over { color: var(--st-obs-tekst); font-weight: 600; }
.bem-bemann-knapper { display: flex; gap: 8px; margin-left: auto; }
.bem-bemann-btn { border: 1px solid var(--border); background: var(--surface); color: var(--text); font-family: inherit; font-size: 13px; font-weight: 600; padding: 7px 14px; border-radius: 8px; cursor: pointer; }
.bem-bemann-btn:hover { border-color: var(--primary); color: var(--primary); }
.bem-bemann-btn--primar, .bem-bemann-btn--primar:hover { background: var(--primary); border-color: var(--primary); color: #fff; }
.bem-bemann-btn--primar:hover { background: var(--primary-dark); border-color: var(--primary-dark); }
.bem-bemann-btn[disabled] { opacity: .6; cursor: default; }
.bem-vakt-tider { display: flex; gap: 10px; flex-wrap: wrap; }
.bem-vakt-tider .sup-form-gruppe { flex: 1; min-width: 140px; }
/* Kobling vakt ↔ programpunkt («Bemann punktet») + drift-varsel på vaktkortet */
.bem-vakt-prog { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.bem-vakt-prog-chip { font-size: 11px; padding: 1px 8px; border-radius: 10px; background: var(--primary-pill); color: var(--text-muted); }
.bem-vakt-drift { font-size: 11px; padding: 1px 8px; border-radius: 10px; background: var(--st-obs-bg); color: var(--st-obs-tekst); font-weight: 600; }
.bem-vakt-folg { border: 1px solid var(--border); background: var(--surface); color: var(--text); font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 8px; cursor: pointer; font-family: inherit; }
.bem-vakt-folg:hover { border-color: var(--primary); color: var(--primary); }
/* «Bemann punktet» i hendelsesmodalen (app-event.js: visInfoVakter) */
.iv-vakt-rad { display: flex; align-items: baseline; gap: 8px; font-size: 13px; padding: 2px 0; }
.iv-vakt-navn { font-weight: 600; }
.iv-vakt-tid { color: var(--text-muted); font-size: 12px; }
.iv-vakt-ant { margin-left: auto; font-weight: 700; font-size: 12px; color: var(--st-ok-tekst); }
.iv-vakt-ant--mangler { color: var(--st-obs-tekst); }
.iv-vakt-tom { color: var(--text-muted); font-size: 12px; }
.iv-vakt-handlinger { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.iv-vakt-btn { border: 1px solid var(--border); background: var(--surface); color: var(--text); font-size: 12px; font-weight: 600; padding: 4px 10px; border-radius: 8px; cursor: pointer; font-family: inherit; }
.iv-vakt-btn:hover { border-color: var(--primary); color: var(--primary); }
.iv-vakt-btn--lenke { border-color: transparent; background: none; color: var(--text-muted); }
.iv-vakt-skjema { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; padding: 10px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg); }
.iv-vakt-skjema-rad { display: flex; gap: 6px; }
.iv-vakt-input { flex: 1; min-width: 0; font: inherit; font-size: 13px; padding: 6px 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text); }
.iv-vakt-input--smal { flex: 0 0 110px; }
.iv-vakt-hint { font-size: 11px; color: var(--text-muted); }
.iv-vakt-feil { font-size: 12px; color: var(--st-feil-tekst); }
/* ── Bemanning · Oversikt («produksjonspulten») ──────────────────────────── */
.bemo { max-width: 1320px; }
.bemo button { font-family: inherit; }
.bemo-mono { font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, monospace; }
.bemo-mikro-lbl { font-family: 'JetBrains Mono', monospace; font-size: 9.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--text-muted); }

/* Varsel-stripe */
.bemo-varsel { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; background: #FCE4DC; border: 1px solid #F7B3A5; border-left: 4px solid var(--primary); border-radius: 10px; padding: 11px 16px; margin-bottom: 14px; font-size: 13.5px; color: #8A2A18; cursor: pointer; transition: transform .12s ease, box-shadow .12s ease; }
.bemo-varsel:hover { transform: translateY(-1px); box-shadow: 0 4px 14px rgba(247,27,0,.14); }
.bemo-varsel b { color: var(--st-feil-tekst); }
.bemo-varsel-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--primary); flex-shrink: 0; animation: bemoPuls 1.6s ease-in-out infinite; }
.bemo-varsel-pil { margin-left: auto; font-weight: 700; color: var(--st-feil-tekst); white-space: nowrap; }
@keyframes bemoPuls { 0%, 100% { box-shadow: 0 0 0 0 rgba(247,27,0,.45); } 55% { box-shadow: 0 0 0 7px rgba(247,27,0,0); } }

/* Rutenett + kort */
.bemo-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 14px; }
.bemo-kort { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 18px 20px; min-width: 0; display: flex; flex-direction: column; box-shadow: 0 1px 2px rgba(66,43,28,.05); animation: bemoInn .45s cubic-bezier(.2,.7,.3,1) both; }
.bemo-grid > :nth-child(2) { animation-delay: .05s; }
.bemo-grid > :nth-child(3) { animation-delay: .09s; }
.bemo-grid > :nth-child(4) { animation-delay: .13s; }
.bemo-grid > :nth-child(5) { animation-delay: .17s; }
@keyframes bemoInn { from { opacity: 0.55; transform: translateY(4px); } }

/* Hero: mørk kommandopult */
.bemo-hero { grid-column: span 8; position: relative; overflow: hidden; background: #1D1D1D; border-color: #1D1D1D; color: #FFF4EC; gap: 20px; }
.bemo-hero--full { grid-column: span 12; }
.bemo-hero::before { content: ''; position: absolute; inset: 0 0 auto 0; height: 6px; background: repeating-linear-gradient(-55deg, var(--primary) 0 14px, transparent 14px 28px); }
.bemo-hero::after { content: ''; position: absolute; top: -120px; right: -80px; width: 340px; height: 340px; border-radius: 50%; background: radial-gradient(circle, rgba(247,27,0,.22), transparent 65%); pointer-events: none; }
.bemo-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,244,236,.5); position: relative; }
.bemo-hero-topp { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; position: relative; }
.bemo-tall { font-family: 'Bebas Neue', sans-serif; font-size: clamp(58px, 7vw, 92px); line-height: .85; letter-spacing: .01em; }
.bemo-tall-lbl { font-size: 13px; color: rgba(255,244,236,.65); margin-top: 6px; }
.bemo-chips { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; }
.bemo-chip { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; padding: 4px 9px; border-radius: 6px; border: 1px solid rgba(255,244,236,.16); color: rgba(255,244,236,.75); background: rgba(255,244,236,.05); }
button.bemo-chip { cursor: pointer; }
button.bemo-chip:hover { border-color: rgba(255,244,236,.45); color: #fff; }
.bemo-chip--ok { color: #5EEAA0; border-color: rgba(94,234,160,.3); }
.bemo-chip--obs { color: #FFC46B; border-color: rgba(255,196,107,.3); }

/* Påmeldingspuls */
.bemo-puls { min-width: 220px; flex: 1; max-width: 340px; position: relative; }
.bemo-puls .bemo-mikro-lbl { color: rgba(255,244,236,.45); }
.bemo-puls-barer { display: flex; align-items: flex-end; gap: 4px; height: 58px; margin-top: 8px; }
.bemo-puls-bar { flex: 1; min-height: 3px; border-radius: 2px 2px 0 0; background: linear-gradient(180deg, #FF7A5C, var(--primary)); transform-origin: bottom; animation: bemoGro .5s ease both; }
@keyframes bemoGro { from { transform: scaleY(0); } }
.bemo-puls-akse { display: flex; justify-content: space-between; font-family: 'JetBrains Mono', monospace; font-size: 9.5px; color: rgba(255,244,236,.4); border-top: 1px solid rgba(255,244,236,.12); padding-top: 5px; margin-top: 6px; }

/* Påmeldingsflyt */
.bemo-flyt { position: relative; }
.bemo-flyt .bemo-mikro-lbl { color: rgba(255,244,236,.45); }
.bemo-pipe { display: flex; gap: 3px; height: 34px; margin-top: 8px; border-radius: 8px; overflow: hidden; }
.bemo-pipe-seg { border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; min-width: 52px; color: #141210; transition: filter .12s ease; }
.bemo-pipe-seg b { font-family: 'JetBrains Mono', monospace; font-size: 13px; }
.bemo-pipe-seg:hover { filter: brightness(1.12); }
.bemo-pipe--inn { background: #F5A83C; }
.bemo-pipe--bek { background: #7FB2FF; }
.bemo-pipe--team { background: #43D98F; }
.bemo-pipe--tom { border: 1.5px dashed rgba(255,244,236,.25); border-radius: 8px; align-items: center; padding: 0 14px; color: rgba(255,244,236,.55); font-size: 13px; overflow: visible; }
.bemo-lgds { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 9px; }
.bemo-lgd { display: inline-flex; align-items: center; gap: 6px; background: none; border: none; padding: 0; font-size: 12px; color: rgba(255,244,236,.7); cursor: pointer; }
.bemo-lgd:hover { color: #fff; }
.bemo-lgd b { font-family: 'JetBrains Mono', monospace; }
.bemo-lgd i { width: 8px; height: 8px; border-radius: 2px; }
.bemo-dot--inn { background: #F5A83C; }
.bemo-dot--bek { background: #7FB2FF; }
.bemo-dot--team { background: #43D98F; }

/* Kort-hoder med rød hake */
.bemo-h { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.bemo-h::before { content: ''; width: 9px; height: 9px; background: var(--primary); border-radius: 2px; flex-shrink: 0; }
.bemo-h b { font-family: 'Bebas Neue', sans-serif; font-weight: 400; font-size: 19px; letter-spacing: .07em; color: var(--text); }
.bemo-h-meta { margin-left: auto; font-size: 10px; color: var(--text-muted); letter-spacing: .06em; text-transform: uppercase; }

/* Rekruttering + snarveier */
.bemo-rekrutt { grid-column: span 4; }
.bemo-hint { margin: 0 0 10px; font-size: 12.5px; color: var(--text-muted); line-height: 1.5; }
.bemo-lenke { display: flex; gap: 6px; }
.bemo-lenke-inp { flex: 1; min-width: 0; font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--text-muted); background: var(--bg); border: 1px solid var(--border); border-radius: 8px; padding: 9px 10px; }
.bemo-kopier { background: var(--primary); color: #fff; border: none; border-radius: 8px; padding: 0 14px; font-size: 12.5px; font-weight: 700; cursor: pointer; transition: background .12s ease; }
.bemo-kopier:hover { background: var(--primary-dark); }
.bemo-lenke-knapper { display: flex; gap: 6px; margin-top: 8px; }
.bemo-mini-btn { flex: 1; text-align: center; text-decoration: none; font-size: 12px; font-weight: 600; color: var(--text); background: var(--bg); border: 1px solid var(--border); border-radius: 8px; padding: 7px 8px; cursor: pointer; transition: border-color .12s ease, color .12s ease; }
.bemo-mini-btn:hover { border-color: var(--primary); color: var(--primary); }
.bemo-skille { border-top: 1px dashed var(--border); margin: 14px 0 8px; }
.bemo-rekrutt .bemo-skille { margin-top: auto; padding-top: 6px; }
.bemo-snarvei { display: flex; align-items: center; gap: 9px; width: 100%; background: none; border: none; border-radius: 8px; padding: 8px 6px; font-size: 13px; font-weight: 600; color: var(--text); cursor: pointer; text-align: left; }
.bemo-snarvei:hover { background: var(--primary-pill); }
.bemo-snarvei svg { flex-shrink: 0; color: var(--text-muted); }
.bemo-snarvei i { margin-left: auto; font-style: normal; color: var(--text-muted); }
.bemo-snarvei-badge { font-style: normal; font-family: 'JetBrains Mono', monospace; font-size: 11px; background: var(--primary); color: #fff; border-radius: 9px; padding: 1px 7px; }

/* Lagkart */
.bemo-lag { grid-column: span 5; }
.bemo-lag-gruppe { margin-bottom: 10px; }
.bemo-lag-sektor { display: flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--ink-soft); padding: 5px 4px 3px; }
.bemo-lag-sektor i { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.bemo-lag-sektor span { margin-left: auto; font-size: 11px; color: var(--text-muted); }
.bemo-lag-rad { display: grid; grid-template-columns: minmax(90px, 150px) 1fr 34px; align-items: center; gap: 10px; width: 100%; background: none; border: none; padding: 5px 4px; border-radius: 7px; cursor: pointer; text-align: left; }
.bemo-lag-rad:hover { background: var(--bg); }
.bemo-lag-rad--uten { border-top: 1px dashed var(--border); border-radius: 0 0 7px 7px; margin-top: 4px; padding-top: 8px; }
.bemo-lag-navn { font-size: 13px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bemo-lagbar { height: 6px; background: var(--bg2); border-radius: 3px; overflow: hidden; }
.bemo-lagbar i { display: block; height: 100%; border-radius: 3px; width: var(--w, 0%); animation: bemoFyll .7s cubic-bezier(.2,.7,.3,1) both; animation-delay: .25s; }
@keyframes bemoFyll { from { width: 0; } }
.bemo-lag-ant { font-size: 12px; text-align: right; color: var(--text); }
/* «0» på et team = ingen påmeldte ennå, ikke en alarm. Nøytral grå — rød er
   forbeholdt reell underdekning mot behov (vaktdekning, .bemo-vakt-ant--mangler). */
.bemo-ubemannet { font-style: normal; color: var(--text-muted); font-weight: 600; opacity: 0.65; }
.bemo-tomtekst { font-size: 13px; color: var(--text-muted); line-height: 1.55; margin: 4px 0 8px; }
.bemo-fotlenke { margin-top: auto; padding: 10px 4px 0; background: none; border: none; text-align: left; font-size: 12.5px; font-weight: 700; color: var(--primary); cursor: pointer; }
.bemo-fotlenke:hover { text-decoration: underline; }

/* Vaktdekning */
.bemo-vaktkort { grid-column: span 4; }
.bemo-ring-rad { display: flex; gap: 14px; align-items: center; margin-bottom: 12px; }
.bemo-ring-wrap { position: relative; width: 76px; height: 76px; flex-shrink: 0; }
.bemo-ring { transform: rotate(-90deg); display: block; }
.bemo-ring-spor { fill: none; stroke: var(--bg2); stroke-width: 7; }
.bemo-ring-fyll { fill: none; stroke: var(--primary); stroke-width: 7; stroke-linecap: round; stroke-dashoffset: var(--off, 0); animation: bemoRing 1s cubic-bezier(.2,.7,.3,1) both .2s; }
@keyframes bemoRing { from { stroke-dashoffset: var(--omk, 189); } }
.bemo-ring-pct { position: absolute; inset: 0; display: grid; place-items: center; font-size: 13.5px; font-weight: 700; color: var(--text); }
.bemo-ring-sub { font-size: 12.5px; color: var(--text-muted); line-height: 1.45; }
.bemo-ring-obs { font-size: 12px; font-weight: 700; color: var(--st-feil-tekst); margin-top: 3px; }
.bemo-ring-ok { font-size: 12px; font-weight: 600; color: var(--st-ok-tekst); margin-top: 3px; }
.bemo-vakt-rad { display: flex; gap: 10px; align-items: center; width: 100%; background: none; border: none; border-top: 1px dashed var(--border); padding: 8px 2px; cursor: pointer; text-align: left; }
.bemo-vakt-rad:hover { background: var(--bg); }
.bemo-vakt-rad--ferdig { opacity: .55; }
.bemo-vakt-tid { font-size: 10px; color: var(--text-muted); line-height: 1.5; min-width: 78px; text-transform: uppercase; letter-spacing: .03em; }
.bemo-vakt-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.bemo-vakt-info b { font-size: 13px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bemo-vakt-info small { font-size: 11.5px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bemo-vakt-ant { font-size: 12.5px; font-weight: 700; color: var(--text); white-space: nowrap; }
.bemo-vakt-ant--mangler { color: var(--st-feil-tekst); }

/* Siste påmeldte */
.bemo-siste { grid-column: span 3; }
.bemo-feed-rad { display: flex; gap: 9px; align-items: center; width: 100%; background: none; border: none; border-bottom: 1px dashed var(--border); padding: 8px 2px; cursor: pointer; text-align: left; }
.bemo-feed-rad:hover { background: var(--bg); }
.bemo-avatar { width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; font-size: 10.5px; font-weight: 800; color: #fff; flex-shrink: 0; letter-spacing: .02em; }
.bemo-feed-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.bemo-feed-info b { font-size: 12.5px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bemo-feed-info small { font-size: 11px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bemo-u18 { font-style: normal; font-size: 9px; font-weight: 800; color: var(--st-obs-tekst); background: var(--st-obs-bg); border-radius: 4px; padding: 1px 4px; vertical-align: 1px; margin-left: 2px; }
.bemo-feed-tid { display: flex; align-items: center; gap: 5px; font-size: 10px; color: var(--text-muted); white-space: nowrap; }
.bemo-feed-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }

.bemo-fot { margin: 14px 2px 0; font-size: 12px; color: var(--text-muted); }
/* Vises kun når en delliste faktisk feilet — se `glapp` i _bemRenderDashboard.
   Obs-semantikk, ikke feil-rød: oversikten VIRKER, den er bare ufullstendig.
   TINT + -adaptiv, ikke --st-obs-bg/-tekst: de er literaler som ikke flipper i
   mørk modus, og dette er en FLATE i full bredde, ikke en badge — samme grunn
   som er skrevet ut på .ansx-tilgang-stripe--mangler i stil-orgflater.css. */
.bemo-glapp {
  margin: 0 2px 12px; padding: 10px 12px; border-radius: 8px;
  font-size: 13px; line-height: 1.5;
  color: var(--st-obs-tekst-adaptiv);
  background: rgba(var(--st-obs-tint), .14);
  border: 1px solid color-mix(in srgb, var(--st-obs-tekst-adaptiv) 26%, transparent);
}

/* Responsivt */
@media (max-width: 1180px) {
  .bemo-hero, .bemo-rekrutt, .bemo-siste { grid-column: span 12; }
  .bemo-lag, .bemo-vaktkort { grid-column: span 6; }
}
@media (max-width: 760px) {
  .bemo-grid { gap: 10px; }
  .bemo-grid > * { grid-column: span 12 !important; }
  .bemo-kort { padding: 16px; }
  .bemo-hero-topp { gap: 16px; }
  .bemo-puls { min-width: 100%; max-width: none; }
}
@media (prefers-reduced-motion: reduce) {
  .bemo, .bemo * { animation: none !important; transition: none !important; }
}
/* ── Innstillinger: to kolonner (lenke+intro | felt), team-seksjonen i full
   bredde under. Én kolonne på smal skjerm. ── */
.bem-innst { display: grid; grid-template-columns: minmax(300px, 380px) minmax(320px, 1fr); gap: 16px; max-width: 1100px; align-items: start; }
.bem-innst-kol { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.bem-innst-seksjon--full { grid-column: 1 / -1; }
.bem-innst-seksjon { border: 1px solid var(--border); border-radius: 12px; padding: 18px; background: var(--surface); min-width: 0; }
.bem-innst-seksjon h4 { margin: 0 0 4px; font-size: 14px; font-weight: 800; color: var(--text); }
.bem-innst-seksjon > .sup-hjelp-tekst { margin-bottom: 12px; }
.bem-innst-seksjon .sup-svar-tekst { width: 100%; box-sizing: border-box; }
/* Lagre-knappen står alltid nederst til høyre i seksjonen */
.bem-innst-fot { display: flex; justify-content: flex-end; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border); }
/* Opplastet infoskriv i Innstillinger. Filnavnet får plassen som blir til
   overs, og kan brytes — et opplastet dokument kan hete hva som helst. */
.bem-infoskriv-fil { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; background: var(--bg2); }
.bem-infoskriv-navn { flex: 1; min-width: 120px; font-size: 13px; font-weight: 600; overflow-wrap: anywhere; }
.bem-lenke-rad { display: flex; gap: 8px; align-items: center; margin-top: 8px; }
.bem-lenke-rad input { flex: 1; min-width: 0; }
.bem-qr { margin-top: 14px; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 12px 0 4px; border-top: 1px dashed var(--border); }
/* Felt-lista: justerte kolonner med felles overskriftsrad. Sjekkboks-tekstene
   («Vis»/«Påkrevd») vises bare på smal skjerm — på bred forklarer overskriften. */
.bem-felt-hode, .bem-felt-rad { display: grid; grid-template-columns: minmax(0, 1fr) 44px 64px minmax(104px, 128px); gap: 10px; align-items: center; }
.bem-felt-hode { padding: 0 0 7px; border-bottom: 1px solid var(--border); font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-muted); }
.bem-felt-hode span:not(:first-child) { text-align: center; }
.bem-felt-rad { padding: 8px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
.bem-felt-rad:last-child { border-bottom: none; }
.bem-felt-navn { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bem-felt-cb { margin: 0; justify-content: center; }
.bem-felt-cb input { margin: 0; width: 16px; height: 16px; accent-color: var(--primary); cursor: pointer; }
.bem-felt-cb span { display: none; }
.bem-felt-scope { white-space: nowrap; width: 100%; }
.bem-scope-gruppe { margin-bottom: 14px; }
.bem-scope-gruppe h4 { margin: 0 0 6px; font-size: 12px; text-transform: uppercase;
  letter-spacing: .04em; color: var(--text-muted); }
.bem-innst-rad { display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 0 0 12px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.bem-innst-rad label { font-size: 13px; font-weight: 600; }
/* Team-lista: justerte kolonner med felles overskriftsrad, gruppert per sektor */
.bem-besk-liste { display: flex; flex-direction: column; gap: 8px; }
.bem-besk-hode, .bem-besk-rad { display: grid; grid-template-columns: minmax(110px, 170px) minmax(160px, 1fr) 74px 64px 64px 52px; gap: 10px; align-items: center; }
.bem-besk-hode { padding-bottom: 7px; border-bottom: 1px solid var(--border); font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-muted); }
.bem-besk-hode span:nth-child(n+3) { text-align: center; }
.bem-besk-hode span:last-child { text-align: right; }
.bem-besk-rad label { font-size: 13px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bem-besk-rad input { min-width: 0; }
.bem-besk-rad .bem-besk-vis { margin: 0; justify-content: center; }
.bem-besk-rad .bem-besk-vis input { margin: 0; width: 16px; height: 16px; accent-color: var(--primary); cursor: pointer; }
.bem-besk-rad .bem-besk-vis span { display: none; }
.bem-besk-rad .bem-besk-maks, .bem-besk-rad .bem-besk-alder { text-align: center; }
.bem-besk-antall { font-size: 12px; color: var(--text-muted); text-align: right; font-variant-numeric: tabular-nums; }
.bem-besk-gruppe { display: flex; flex-direction: column; gap: 8px; }
.bem-besk-gruppe + .bem-besk-gruppe { margin-top: 10px; }
.bem-besk-sektor { display: flex; align-items: baseline; gap: 8px; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; color: var(--text-muted); padding-bottom: 2px; }
.bem-besk-sektor span { font-weight: 600; text-transform: none; letter-spacing: 0; font-size: 11px; opacity: .75; }
/* Advarsel når ALLE team i sektoren er av eller fulle — da forsvinner (eller
   sperres) hele området i påmeldingsskjemaet, og det ser ut som en endring på
   ett team. --amber-*, ikke --st-obs-*: de to første er definert i BEGGE temaer,
   så raden trenger ingen egen body.dark-mode-regel ved siden av seg. */
.bem-besk-advarsel { margin: 0; padding: 7px 10px; border-radius: 8px;
  background: var(--amber-soft); color: var(--amber-text);
  font-size: 12px; font-weight: 600; line-height: 1.45;
  border: 1px solid color-mix(in srgb, var(--amber) 35%, transparent); }
@media (max-width: 820px) {
  .bem-innst { grid-template-columns: 1fr; }
  /* Feltrad: navn øverst, valgene på egen rad under — sjekkboks-tekstene tilbake */
  .bem-felt-hode { display: none; }
  .bem-felt-rad { grid-template-columns: auto auto 1fr; }
  .bem-felt-navn { grid-column: 1 / -1; font-weight: 600; }
  .bem-felt-cb { justify-content: flex-start; }
  .bem-felt-cb span { display: inline; }
  .bem-felt-scope { width: auto; justify-self: end; }
  /* Teamrad: navn + opptatt øverst, beskrivelse under, så valgene */
  .bem-besk-hode { display: none; }
  .bem-besk-rad { grid-template-columns: auto auto 1fr; row-gap: 8px; padding-bottom: 10px; border-bottom: 1px solid var(--border); }
  .bem-besk-rad label { grid-column: 1 / 3; font-weight: 600; }
  .bem-besk-antall { grid-column: 3; }
  .bem-besk-rad input[data-team] { grid-column: 1 / -1; }
  .bem-besk-rad .bem-besk-vis { justify-content: flex-start; }
  .bem-besk-rad .bem-besk-vis span { display: inline; white-space: nowrap; }
  .bem-besk-rad .bem-besk-maks, .bem-besk-rad .bem-besk-alder { width: 64px; justify-self: start; }
}
.bem-segment { display: inline-flex; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; background: var(--surface); }

/* Bemanning: medarbeider-lista (bem-ml) — rader m/avatar + utvidbar detalj */
.bem-ml-antall { font-size: 12px; font-weight: 700; color: var(--text-muted); background: var(--primary-pill); border-radius: 10px; padding: 1px 8px; vertical-align: 2px; }
.bem-ml { border: 1px solid var(--border); border-radius: 12px; background: var(--surface); overflow: hidden; }
.bem-ml-kolonner, .bem-ml-hode { display: grid; grid-template-columns: minmax(180px, 1.4fr) 110px minmax(120px, 1fr) minmax(160px, 1.2fr) 26px; gap: 12px; align-items: center; }
.bem-ml-kolonner { padding: 9px 14px 9px 56px; font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-muted); border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--surface) 60%, var(--bg)); }
.bem-ml-rad { border-bottom: 1px solid var(--border); }
.bem-ml-rad:last-child { border-bottom: none; }
.bem-ml-hode { position: relative; width: 100%; text-align: left; border: none; background: none; padding: 10px 14px 10px 56px; cursor: pointer; font: inherit; color: var(--text); transition: background .1s ease; }
.bem-ml-hode:hover { background: color-mix(in srgb, var(--primary) 4%, var(--surface)); }
.bem-ml-rad--aapen > .bem-ml-hode { background: color-mix(in srgb, var(--primary) 6%, var(--surface)); }
.bem-ml-hode > .bemo-avatar { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); transition: transform .18s cubic-bezier(.22,1,.36,1); }
.bem-ml-hode:hover > .bemo-avatar { transform: translateY(-50%) scale(1.08); }
.bem-ml-navn { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.bem-ml-navn b { font-size: 13.5px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bem-ml-navn small, .bem-ml-team small, .bem-ml-kontakt small { display: block; font-size: 11px; color: var(--text-muted); font-weight: 500; }
.bem-ml-status .sup-chip { font-size: 11px; }
.bem-ml-team { font-size: 12.5px; min-width: 0; }
.bem-ml-team b { font-weight: 700; }
.bem-ml-onsker { color: var(--text-muted); font-style: italic; }
.bem-ml-kontakt { font-size: 12px; color: var(--text-muted); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bem-ml-pil { color: var(--text-muted); transition: transform .15s ease; justify-self: end; }
.bem-ml-rad--aapen .bem-ml-pil { transform: rotate(180deg); }
.bem-ml-detalj { padding: 4px 16px 16px 56px; display: flex; flex-direction: column; gap: 12px; background: color-mix(in srgb, var(--primary) 3%, var(--surface)); }
.bem-ml-felter { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; margin: 0; }
/* Hvert felt er en liten boks — samme uttrykk som innboks-panelet */
.bem-ml-felt { border: 1px solid var(--border); border-radius: 10px; background: var(--surface); padding: 9px 12px; min-width: 0; box-shadow: 0 1px 2px rgba(31,26,23,.04); }
.bem-ml-felt dt { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-muted); margin: 0 0 3px; }
.bem-ml-felt dd { font-size: 13px; color: var(--text); margin: 0; line-height: 1.4; overflow-wrap: break-word; }
.bem-ml-lenkeboks { display: flex; flex-direction: column; gap: 6px; border: 1px dashed var(--border); border-radius: 10px; background: var(--surface); padding: 10px 12px; }
.bem-ml-lenkerad { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.bem-ml-lenkerad .sup-input { flex: 1; min-width: 200px; font-size: 12px; }
.bem-ml-handling { display: flex; justify-content: flex-end; }
.bem-ml-fjern { border: 1px solid #F0B9AE; background: none; color: var(--st-feil-tekst); font: 600 12px/1 Inter, sans-serif; border-radius: 8px; padding: 8px 12px; cursor: pointer; transition: background .12s ease; }
.bem-ml-fjern:hover { background: #FCE4DC; }
@media (max-width: 820px) {
  .bem-ml-kolonner { display: none; }
  .bem-ml-hode { grid-template-columns: 1fr auto; grid-auto-rows: auto; row-gap: 4px; }
  .bem-ml-navn { grid-column: 1; }
  .bem-ml-status { grid-column: 2; grid-row: 1; justify-self: end; }
  .bem-ml-team { grid-column: 1; }
  .bem-ml-kontakt { grid-column: 1 / -1; white-space: normal; }
  .bem-ml-pil { grid-column: 2; grid-row: 2; }
  .bem-ml-detalj { padding-left: 16px; }
}

/* Redigering i den utvidede raden. To kolonner på desktop, én på telefon —
   «maks to felt per rad på mobil» gjelder her som i resten av appen. */
.bem-ml-rediger { padding: 12px 16px 16px; border-top: 1px solid var(--border); }
.bem-ml-rediger-rutenett { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 12px; }
@media (max-width: 640px) { .bem-ml-rediger-rutenett { grid-template-columns: 1fr; } }
.bem-ml-rediger .sup-form-gruppe { margin-bottom: 10px; }

.bem-segment { height: 36px; box-sizing: border-box; align-items: stretch; }
.bem-seg-btn { background: none; border: none; padding: 0 14px; font-size: 12.5px; font-weight: 600; color: var(--text-muted); cursor: pointer; font-family: inherit; }
.bem-seg-btn.aktiv { background: var(--primary); color: #fff; }

/* Bemanning: modal (ny medarbeider + import) — samme skjelett som bud-modal */
.bem-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 2600; display: flex; align-items: flex-start; justify-content: center; padding: 36px 20px; box-sizing: border-box; overflow-y: auto; }
.bem-modal { background: var(--bg); border-radius: 14px; width: 100%; max-width: 560px; box-shadow: 0 28px 90px rgba(0,0,0,.38); display: flex; flex-direction: column; }
.bem-modal--bred { max-width: 820px; }
.bem-modal-hode { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 18px 20px 12px; border-bottom: 1px solid var(--border); }
.bem-modal-hode h3 { margin: 0; font-size: 16px; font-weight: 800; color: var(--text); }
.bem-modal-lukk { border: none; background: none; color: var(--text-muted); width: 28px; height: 28px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; font-size: 14px; }
.bem-modal-lukk:hover { background: var(--surface); color: var(--text); }
.bem-modal-kropp { padding: 16px 20px; display: flex; flex-direction: column; gap: 12px; }
.bem-modal-desc { margin: 0; font-size: 12.5px; line-height: 1.55; color: var(--text-muted); }
.bem-modal-fot { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 20px 18px; border-top: 1px solid var(--border); }
.bem-modal-fot-hoyre { display: flex; gap: 8px; }
.bem-modal-todelt { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; }
.bem-import-kort { display: flex; align-items: flex-start; gap: 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 13px 14px; }
.bem-import-kort--klikk { cursor: pointer; transition: border-color .12s ease, box-shadow .12s ease; }
.bem-import-kort--klikk:hover { border-color: color-mix(in srgb, var(--primary) 45%, var(--border)); box-shadow: 0 4px 14px rgba(66,43,28,.08); }
.bem-import-kort b { display: block; font-size: 13.5px; color: var(--text); }
.bem-import-kort > div > span { display: block; font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.bem-import-kort-ikon { color: var(--text-muted); margin-top: 2px; display: inline-flex; }
.bem-import-kort textarea { margin-top: 8px; width: 100%; box-sizing: border-box; }
.bem-import-oppsett { display: grid; grid-template-columns: 1.5fr 1fr; gap: 16px; align-items: start; }
.bem-import-lbl { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-muted); margin-bottom: 6px; }
.bem-import-mapping { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 10px; }
.bem-import-map { display: flex; flex-direction: column; gap: 3px; font-size: 11.5px; color: var(--text-muted); font-weight: 600; }
.bem-import-map .sup-filter-sel { width: 100%; }
.bem-import-valg { display: flex; flex-direction: column; gap: 9px; }
.bem-import-check { display: flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--text); cursor: pointer; }
.bem-import-chips { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.bem-import-forh { max-height: 300px; overflow: auto; border: 1px solid var(--border); border-radius: 10px; }
.bem-import-forh .bem-tabell th { position: sticky; top: 0; background: var(--bg); z-index: 1; }
.bem-chip-ok { background: var(--st-ok-bg); color: var(--st-ok-tekst); }
.bem-imp-rad--feil td { opacity: .55; }
.bem-imp-rad--dup td { opacity: .7; }
@media (max-width: 760px) {
  .bem-import-oppsett { grid-template-columns: 1fr; }
  .bem-modal-todelt { grid-template-columns: 1fr; }
}
/* ── Skjelett og bakgrunnsoppdatering (2026-08-27) ──
   Vaktflata tegner fra cache og henter friskt i bakgrunnen. Skjelettet vises
   kun ved aller første henting (samme grunngeometri som tidslinja, så
   innholdet ikke hopper når det lander); «Oppdaterer…» dukker opp først når
   en bakgrunnshenting drøyer over 400 ms. */
.bem-vakt-oppdaterer { margin-right: auto; font-size: 11.5px; font-weight: 600; color: var(--text-muted); }
.bem-skjelett { border: 1px solid var(--border); border-radius: 12px; background: var(--surface); padding: 16px 14px; display: flex; flex-direction: column; gap: 14px; }
.bem-skjelett-linje { height: 14px; width: 190px; border-radius: 6px; }
.bem-skjelett-rad { display: flex; align-items: center; gap: 12px; }
.bem-skjelett-celle { height: 12px; border-radius: 6px; flex-shrink: 0; }
.bem-skjelett-spor { position: relative; flex: 1; height: 26px; }
.bem-skjelett-blokk { position: absolute; top: 0; height: 26px; border-radius: 7px; }
.bem-skjelett-linje, .bem-skjelett-celle, .bem-skjelett-blokk {
  background: color-mix(in srgb, var(--text-muted) 14%, transparent);
  animation: bem-skjelett-puls 1.2s ease-in-out infinite;
}
@keyframes bem-skjelett-puls { 0%, 100% { opacity: .55; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .bem-skjelett-linje, .bem-skjelett-celle, .bem-skjelett-blokk { animation: none; }
}

.bem-gantt { display: flex; flex-direction: column; gap: 20px;
  /* Shift-klikk markerer vakter. Uten dette utvider nettleseren i tillegg
     tekstmarkeringen fra forrige klikkpunkt, og halve tidslinja blir blå.
     preventDefault i _bemVaktKlikk hjelper ikke — markeringen skjer på
     mousedown, før click. */
  user-select: none; -webkit-user-select: none; }
.bem-gantt-dato { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.bem-gantt-dato::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: var(--primary); flex-shrink: 0; }
.bem-gantt-dato-ant { font-size: 11.5px; font-weight: 600; color: var(--text-muted); text-transform: none; background: var(--primary-pill); border-radius: 999px; padding: 2px 9px; }
.bem-gantt-scroll { overflow-x: auto; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); box-shadow: 0 1px 3px rgba(31,26,23,.05); }
.bem-gantt-inner { display: inline-block; min-width: 100%; }
.bem-gantt-rad { display: flex; align-items: stretch; border-bottom: 1px solid var(--border); }
.bem-gantt-rad:last-child { border-bottom: none; }
.bem-gantt-rad:not(.bem-gantt-akse):hover .bem-gantt-spor { background: color-mix(in srgb, var(--primary) 3%, transparent); }
.bem-gantt-team { width: 120px; flex-shrink: 0; padding: 10px 10px; font-size: 12px; font-weight: 600; color: var(--text); border-right: 1px solid var(--border); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; background: var(--bg); position: sticky; left: 0; z-index: 1; }
.bem-gantt-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 7px; }
.bem-gantt-spor { position: relative; min-height: 38px; flex-shrink: 0; transition: background .12s ease; }
.bem-gantt-akse { background: var(--surface); }
.bem-gantt-akse .bem-gantt-spor { min-height: 22px; }
.bem-gantt-time { flex-shrink: 0; font-size: 10px; color: var(--text-muted); padding: 4px 0 0 4px; border-right: 1px dashed var(--border); box-sizing: border-box; }
/* Vaktblokk (omskrevet 2026-08-26). Tre bærende valg:

   FARGEN ER TEAMET, ikke sektoren. Kommer inn som --bem-vf fra
   _bemVaktFarge (app-bemanning.js), ikke som background-color, slik at
   CSS-en kan bruke fargen flere steder enn bakgrunnen.

   DEKNINGEN LIGGER LANGS BUNNEN, ikke som en vannrett fylling. x-aksen
   betyr allerede tid: en fylling som vokser fra venstre leses som
   «vakta er halvveis gjennomført», ikke «halvparten er bemannet» — og
   den la seg oppå vaktnavnet.

   TOM VAKT ER KATEGORISK ANNERLEDES, ikke bare lite fylt. «Ingen satt
   på» er tilstanden koordinatoren leter etter; den skal ikke være en
   gradsforskjell man må måle med øyet. */
.bem-gantt-blokk { position: absolute; top: 4px; bottom: 4px; border-radius: 8px; padding: 0 8px; display: flex; align-items: center; gap: 6px; overflow: hidden; cursor: pointer; min-width: 8px;
  background: var(--bem-vf, #6B7280); border: 1.5px solid var(--bem-vf, #6B7280);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.15), 0 1px 2px rgba(31,26,23,.15);
  transition: transform .16s cubic-bezier(.22,1,.36,1), box-shadow .16s ease, filter .16s ease; }
.bem-gantt-blokk::after  { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 4px; background: rgba(255,255,255,.3); }
.bem-gantt-blokk::before { content: ''; position: absolute; left: 0; bottom: 0; height: 4px; width: var(--bem-dekning, 0%); background: #fff; z-index: 1; transition: width .3s cubic-bezier(.22,1,.36,1); }
.bem-gantt-blokk.er-tom { background: var(--surface); border-style: dashed; box-shadow: none;
  background-image: repeating-linear-gradient(135deg, transparent 0 5px, color-mix(in srgb, var(--bem-vf) 15%, transparent) 5px 10px); }
.bem-gantt-blokk.er-tom::after, .bem-gantt-blokk.er-tom::before { display: none; }
.bem-gantt-blokk.er-tom .bem-gantt-blokk-tekst { color: var(--bem-vf); text-shadow: none; }
.bem-gantt-blokk.er-tom .bem-gantt-ant { background: color-mix(in srgb, var(--bem-vf) 14%, var(--surface)); color: var(--bem-vf); }
.bem-gantt-blokk:hover { transform: translateY(-1px); box-shadow: inset 0 0 0 1px rgba(255,255,255,.22), 0 5px 14px rgba(31,26,23,.26); filter: saturate(1.12); z-index: 2; }
.bem-gantt-blokk:focus-visible { outline: 2px solid var(--text); outline-offset: 2px; z-index: 3; }
.bem-gantt-blokk.er-valgt { box-shadow: 0 0 0 2.5px var(--text), 0 6px 16px rgba(31,26,23,.3); z-index: 4; }
.bem-gantt-blokk.er-slipp { box-shadow: 0 0 0 3px var(--st-ok-tekst), 0 6px 16px rgba(31,26,23,.3); transform: translateY(-2px); z-index: 5; }
.bem-gantt-blokk.er-laast { cursor: default; opacity: .78; }
.bem-gantt-blokk-tekst { color: #fff; font-size: 11.5px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-shadow: 0 1px 1px rgba(0,0,0,.22); position: relative; z-index: 2; }
.bem-gantt-ant { margin-left: auto; flex-shrink: 0; background: rgba(255,255,255,.3); color: #fff; font-size: 10px; font-weight: 800; border-radius: 999px; padding: 2px 7px; line-height: 1; position: relative; z-index: 2; font-variant-numeric: tabular-nums; }
/* MÅLT 26.08.2026: sju av de ti teamfargene gir under 3:1 mot --surface i mørk
   modus (#212329) — indigo helt nede på 1,87. Blokka ville flytt ut i flata.
   Den lyse innerkanten er separasjonen; fjernes den, må paletten byttes. */
body.dark-mode .bem-gantt-blokk { box-shadow: inset 0 0 0 1px rgba(255,255,255,.42), 0 1px 2px rgba(0,0,0,.4); }
body.dark-mode .bem-gantt-blokk:hover { box-shadow: inset 0 0 0 1px rgba(255,255,255,.55), 0 5px 14px rgba(0,0,0,.5); }
body.dark-mode .bem-gantt-blokk.er-tom { box-shadow: none; }

.bem-gantt-mangler { font-size: 11.5px; font-weight: 700; color: #fff; background: var(--st-feil-tekst); border-radius: 999px; padding: 2px 9px; text-transform: none; }
.bem-gantt-dekket { font-size: 11.5px; font-weight: 600; color: var(--st-ok-tekst); background: var(--st-ok-bg); border-radius: 999px; padding: 2px 9px; text-transform: none; }

.bem-gantt-tf { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; font-size: 11.5px; color: var(--text-muted); margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
.bem-tf { display: flex; align-items: center; gap: 6px; }
.bem-tf-hoyre { margin-left: auto; }
.bem-tf-prove { width: 30px; height: 15px; border-radius: 5px; flex-shrink: 0; position: relative; overflow: hidden;
  background: var(--text-muted); border: 1.5px solid var(--text-muted); }
.bem-tf-prove::after  { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 5px; background: rgba(255,255,255,.28); }
.bem-tf-prove::before { content: ''; position: absolute; left: 0; bottom: 0; height: 5px; width: var(--bem-dekning, 0%); background: #fff; z-index: 1; }
.bem-tf-prove.er-tom { background: var(--surface); border-style: dashed;
  background-image: repeating-linear-gradient(135deg, transparent 0 4px, color-mix(in srgb, var(--text-muted) 22%, transparent) 4px 8px); }
.bem-tf-prove.er-tom::after, .bem-tf-prove.er-tom::before { display: none; }

/* ── Arbeidsflata: tidslinje + benk ── */
.bem-vaktflate { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; align-items: start; }
/* minmax(0,1fr) og IKKE 1fr: 1fr har min-width:auto og kan ikke krympe under
   sporbredden, så tidslinja dytter benken ut av skjermen i stedet for å
   scrolle inni seg selv. */
@media (min-width: 1100px) {
  .bem-vaktflate.med-benk { grid-template-columns: minmax(0, 1fr) 264px; }
}
.bem-vaktflate-hoved { min-width: 0; }

/* Team-filteret over flata. Gjenbruker pillene fra bemanningsmodalen, så det er
   samme filterspråk to steder — ikke to som ligner. */
.bem-vakt-filtre { margin: 0 0 12px; }

/* Tidslinjevisningen ruller SELV: vaktflata og benken hver for seg, slik at
   benken står stille mens du blar i vaktene, og får hele høyden i stedet for
   620px-taket. Samme grep som innboksen (.bem-sub--innboks).
   KUN side om side: under 1100px ligger benken UNDER tidslinja, og en delt
   høyde ville gjort begge halvdelene for lave til å jobbe i. */
@media (min-width: 1100px) {
  #bem-sub.bem-sub--vakter { display: flex; flex-direction: column; overflow: hidden; }
  .bem-sub--vakter .bem-vaktflate { flex: 1; min-height: 0; align-items: stretch; }
  .bem-sub--vakter .bem-vaktflate-hoved { overflow-y: auto; }
  .bem-sub--vakter .bem-benk { max-height: none; }
}

.bem-benk { border: 1px solid var(--border); border-radius: 12px; background: var(--surface); overflow: hidden; display: flex; flex-direction: column; max-height: 620px; }
.bem-benk-hode { padding: 12px 14px; border-bottom: 1px solid var(--border); background: var(--bg); display: flex; flex-direction: column; gap: 8px; }
.bem-benk-tittel { font-size: 13px; font-weight: 800; color: var(--text); display: flex; align-items: center; gap: 7px; }
.bem-benk-under { font-size: 11.5px; color: var(--text-muted); }
.bem-benk-ant { font-size: 10.5px; font-weight: 800; color: var(--text-muted); background: var(--primary-pill); border-radius: 999px; padding: 1px 7px; font-variant-numeric: tabular-nums; }
.bem-benk-sok { font-size: 13px; }
.bem-benk-filter { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--text-muted); cursor: pointer; }
.bem-benk-kropp { overflow-y: auto; padding: 10px 12px; display: flex; flex-direction: column; gap: 14px; }
.bem-benk-bolk-hode { display: flex; align-items: center; gap: 7px; font-size: 10.5px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--text-muted); margin-bottom: 7px; }
.bem-benk-rad { display: flex; align-items: center; gap: 8px; padding: 5px 8px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); font-size: 12.5px; font-weight: 600; color: var(--text); cursor: grab; user-select: none; margin-bottom: 5px; transition: border-color .14s ease, transform .14s ease, background .14s ease; }
.bem-benk-rad:hover { border-color: var(--line-soft); transform: translateX(2px); }
.bem-benk-rad:active { cursor: grabbing; }
.bem-benk-rad.er-huket { background: var(--st-ok-bg); border-color: var(--st-ok-tekst); color: var(--st-ok-tekst); }
.bem-benk-rad.er-opptatt { border-style: dashed; color: var(--text-muted); }
.bem-benk-rad.er-drag { opacity: .4; }
.bem-benk-huk { display: flex; align-items: center; flex-shrink: 0; }
.bem-benk-huk input { width: 15px; height: 15px; accent-color: var(--primary); cursor: pointer; margin: 0; }
.bem-benk-avatar { width: 22px; height: 22px; border-radius: 50%; flex-shrink: 0; display: grid; place-items: center; color: #fff; font-size: 9.5px; font-weight: 800; }
.bem-benk-navn { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bem-benk-merke { margin-left: auto; flex-shrink: 0; font-size: 10px; font-weight: 800; color: var(--text-muted); background: var(--bg); border-radius: 999px; padding: 1px 6px; font-variant-numeric: tabular-nums; }
.bem-benk-merke.er-opptatt { background: var(--st-obs-bg); color: var(--st-obs-tekst); }
.bem-benk-tom { font-size: 12px; color: var(--text-muted); padding: 10px 4px; line-height: 1.5; }
/* ── Filter og sortering i benken (2026-08-26) ── */
/* Chipene gjenbruker .bem-bemann-filter fra modalen — samme brikke, samme
   oppførsel. Her trenger de bare lov til å brekke: 264 px tar ikke
   «Sikkerhet 3» og «Alle 59» på én rad. */
.bem-benk-filtre { display: flex; flex-wrap: wrap; gap: 6px; }
.bem-benk-styring { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.bem-benk-sortvalg { display: flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--text-muted); }
.bem-benk-sortvalg select { font-size: 12px; padding: 3px 6px; width: auto; }
/* «ikke påmeldt» er en OPPLYSNING, ikke en advarsel: personen kan settes på
   vakt — ingen INSERT-policy på vakt_tildeling krever en påmelding — hun har
   bare ikke registrert seg selv. Derfor dempet, ikke rød. */
/* Merket får EGEN LINJE i stedet for å spise navnet: i 264 px ble «Bente Ravn»
   til «Bent…» for å gi plass til det. Navnet er det man leter etter. Lot vi det
   bare bryte fritt, var det vakttallet som havnet på linje to i stedet.
   Innrykket (53 px = avhuking + avatar + mellomrom) stiller det under navnet. */
.bem-benk-rad { flex-wrap: wrap; }
.bem-benk-navn { flex: 1 1 auto; min-width: 5.5em; }
.bem-benk-upaameldt { order: 9; flex-basis: 100%; margin: 3px 0 0 53px; align-self: flex-start; width: fit-content; font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); background: var(--bg); border: 1px solid var(--border); border-radius: 999px; padding: 0 5px; }
/* «Takket nei» arver formen fra «ikke påmeldt» — samme pille, samme linje under
   navnet — men ikke dempingen: «ikke påmeldt» er en opplysning, «takket nei» er
   et svar man ikke skal skumme forbi. Derfor --text og en synlig kant, ikke
   --text-muted. Dempet og ikke rødt for øvrig, som _MK_STATUS.takket_nei:
   personen er ute av spill, ikke en feil. De to kan aldri stå samtidig — uten
   påmelding finnes det ikke noe nei å merke. */
.bem-benk-nei { order: 8; flex-basis: 100%; margin: 3px 0 0 53px; align-self: flex-start; width: fit-content; font-size: 9.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: var(--text); background: var(--bg2); border: 1px solid var(--text-muted); border-radius: 999px; padding: 0 5px; }
.bem-benk-tom-btn { display: block; margin-top: 8px; border: 1px solid var(--border); background: var(--surface); color: var(--text); font: inherit; font-size: 12px; font-weight: 600; padding: 4px 10px; border-radius: 8px; cursor: pointer; }
.bem-benk-tom-btn:hover { border-color: var(--primary); color: var(--primary); }
.bem-benk-fotnote { padding: 10px 14px; border-top: 1px solid var(--border); background: var(--amber-soft); color: var(--amber-text); font-size: 11.5px; line-height: 1.45; }
.bem-benk-fot { padding: 10px 14px; border-top: 1px solid var(--border); background: var(--bg); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.bem-benk-fot-tall { font-size: 12.5px; font-weight: 800; color: var(--text); }
.bem-benk-fot-hint { font-size: 11.5px; color: var(--text-muted); }
.bem-benk-fot-btn { margin-left: auto; border: 1px solid var(--border); background: var(--surface); color: var(--text); font: inherit; font-size: 12px; font-weight: 600; padding: 4px 10px; border-radius: 8px; cursor: pointer; }
/* ── Vaktmodalens faner + detaljskjema (2026-08-26) ── */
.bem-bemann-faner { display: flex; gap: 2px; padding: 0 20px; background: var(--bg); border-bottom: 1px solid var(--border); }
.bem-bemann-fane { border: 0; background: none; font: inherit; font-size: 13px; font-weight: 700; color: var(--text-muted); padding: 11px 14px; cursor: pointer; border-bottom: 2.5px solid transparent; margin-bottom: -1px; }
.bem-bemann-fane:hover { color: var(--text); }
.bem-bemann-fane.aktiv { color: var(--text); border-bottom-color: var(--primary); }
.bem-bemann-fane:focus-visible { outline: 2px solid var(--primary); outline-offset: -2px; border-radius: 6px 6px 0 0; }
.bem-detalj-skjema { padding: 18px 20px; overflow-y: auto; flex: 1; min-height: 0; }
.bem-detalj-varsel { display: flex; gap: 9px; align-items: flex-start; border-radius: 10px; padding: 11px 13px; font-size: 12.5px; line-height: 1.5; margin-top: 12px; }
.bem-detalj-varsel b { display: block; margin-bottom: 2px; }
.bem-detalj-varsel ul { margin: 6px 0 4px; padding-left: 17px; }
.bem-detalj-varsel li { margin-bottom: 2px; }
.bem-dv-ikon { flex-shrink: 0; font-weight: 800; }
/* --st-obs-*/--st-feil-* er definert kun i lys utgave (se token-blokka), så
   parene byttes samlet i mørk modus i stedet for å arve halve settet. */
.bem-detalj-varsel.er-obs { background: var(--st-obs-bg); color: var(--st-obs-tekst); border: 1px solid color-mix(in srgb, var(--st-obs-tekst) 32%, transparent); }
.bem-detalj-varsel.er-feil { background: var(--st-feil-bg); color: var(--st-feil-tekst); border: 1px solid color-mix(in srgb, var(--st-feil-tekst) 32%, transparent); }
.bem-detalj-varsel.er-info { background: var(--bg); color: var(--text-muted); border: 1px solid var(--border); }
.bem-detalj-varsel.er-info b { color: var(--text); }
body.dark-mode .bem-detalj-varsel.er-obs { background: var(--amber-soft); color: var(--amber-text); }
body.dark-mode .bem-detalj-varsel.er-feil { background: rgba(239,68,68,.15); color: var(--st-feil-tekst-adaptiv); }
.bem-bemann-btn--fare { color: var(--st-feil-tekst-adaptiv); border-color: color-mix(in srgb, var(--st-feil-tekst-adaptiv) 42%, transparent); }
.bem-bemann-btn--fare:hover { background: var(--st-feil-bg); }
body.dark-mode .bem-bemann-btn--fare:hover { background: rgba(239,68,68,.14); }

.bem-flervalg-btn { border: 1px solid var(--border); background: var(--surface); color: var(--text); font: inherit; font-size: 12.5px; font-weight: 600; padding: 6px 12px; border-radius: 9px; cursor: pointer; white-space: nowrap; }
.bem-flervalg-btn:hover { border-color: var(--line-soft); }
.bem-flervalg-btn.aktiv { background: var(--text); border-color: var(--text); color: var(--surface); }
/* I markeringsmodus skal blokka SE markerbar ut — ellers er «Velg flere» en
   knapp som tilsynelatende ikke gjorde noe før du treffer riktig blokk. */
.bem-gantt-blokk.er-markerbar { cursor: copy; }
.bem-gantt-blokk.er-markerbar:not(.er-valgt) { box-shadow: inset 0 0 0 1px rgba(255,255,255,.15), 0 0 0 1px var(--line-soft), 0 1px 2px rgba(31,26,23,.15); }
.bem-vakt-utvalgslinje.er-tom { background: var(--bg2); color: var(--text); box-shadow: none; border: 1px dashed var(--line-soft); }
.bem-vakt-utvalgslinje.er-tom .bem-utvalg-navn { color: var(--text-muted); }
.bem-vakt-utvalgslinje.er-tom .bem-utvalg-btn { border-color: var(--border); color: var(--text); }
.bem-benk-vipp { border: 1px solid var(--border); background: var(--surface); color: var(--text); font: inherit; font-size: 12.5px; font-weight: 600; padding: 6px 12px; border-radius: 9px; cursor: pointer; white-space: nowrap; }
.bem-benk-vipp:hover { border-color: var(--line-soft); }

/* ── Utvalgslinja for flerbemanning ── */
.bem-vakt-utvalgslinje { position: sticky; bottom: 0; z-index: 20; margin-top: 12px; padding: 12px 16px; border-radius: 12px; background: var(--pult-bg); color: #fff; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; box-shadow: 0 -2px 20px rgba(31,26,23,.18); }
.bem-utvalg-tall { font-size: 13.5px; font-weight: 800; white-space: nowrap; }
.bem-utvalg-navn { font-size: 12.5px; color: rgba(255,255,255,.66); margin-right: auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.bem-utvalg-btn { border: 1px solid rgba(255,255,255,.3); background: transparent; color: #fff; font: inherit; font-size: 12.5px; font-weight: 600; padding: 6px 13px; border-radius: 9px; cursor: pointer; white-space: nowrap; }
.bem-utvalg-btn:hover { background: rgba(255,255,255,.1); }
.bem-utvalg-btn--primar { background: var(--primary); border-color: var(--primary); }
.bem-utvalg-btn--primar:hover { background: var(--primary-dark); border-color: var(--primary-dark); }

/* ── Vaktlista i flerbemanningsmodalen ── */
.bem-bemann-vaktliste { padding: 12px 20px 0; display: flex; flex-direction: column; gap: 6px; max-height: 148px; overflow-y: auto; }
.bem-bemann-vaktrad { display: flex; align-items: center; gap: 9px; padding: 7px 10px; border: 1px solid var(--border); border-radius: 9px; background: var(--bg); font-size: 12.5px; }
.bem-bemann-vaktstrek { width: 4px; align-self: stretch; border-radius: 2px; flex-shrink: 0; min-height: 18px; }
.bem-bemann-vaktnavn { font-weight: 700; color: var(--text); white-space: nowrap; }
.bem-bemann-vakttid { color: var(--text-muted); margin-left: auto; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bem-bemann-vaktbehov { flex-shrink: 0; font-size: 10.5px; font-weight: 800; border-radius: 999px; padding: 2px 8px; background: var(--st-obs-bg); color: var(--st-obs-tekst); white-space: nowrap; }
.bem-bemann-vaktbehov.er-full { background: var(--st-ok-bg); color: var(--st-ok-tekst); }
/* Innslidingsanimasjoner: dagene faller inn, blokkene vokser fra venstre,
   feltboksene i detaljpaneler poppes i kaskade. Kun uten reduced motion. */
@media (prefers-reduced-motion: no-preference) {
  .bem-gantt-dag { animation: bemGliInn .32s cubic-bezier(.22,1,.36,1) backwards; }
  .bem-gantt-dag:nth-child(2) { animation-delay: .06s; }
  .bem-gantt-dag:nth-child(3) { animation-delay: .12s; }
  .bem-gantt-dag:nth-child(n+4) { animation-delay: .18s; }
  .bem-gantt-blokk { transform-origin: left center; animation: bemBlokkInn .38s cubic-bezier(.22,1,.36,1) .1s backwards; }
  .bem-ml-detalj, .bem-ml-rediger, .bem-inn-kort { animation: bemGliInn .26s cubic-bezier(.22,1,.36,1); }
  .bem-ml-felter .bem-ml-felt { animation: bemFeltInn .3s cubic-bezier(.22,1,.36,1) backwards; }
  .bem-ml-felter .bem-ml-felt:nth-child(2) { animation-delay: .03s; }
  .bem-ml-felter .bem-ml-felt:nth-child(3) { animation-delay: .06s; }
  .bem-ml-felter .bem-ml-felt:nth-child(4) { animation-delay: .09s; }
  .bem-ml-felter .bem-ml-felt:nth-child(5) { animation-delay: .12s; }
  .bem-ml-felter .bem-ml-felt:nth-child(6) { animation-delay: .15s; }
  .bem-ml-felter .bem-ml-felt:nth-child(n+7) { animation-delay: .18s; }
}
@keyframes bemGliInn { from { opacity: 0; transform: translateY(-6px); } }
@keyframes bemBlokkInn { from { opacity: 0; transform: scaleX(.55); } }
@keyframes bemFeltInn { from { opacity: 0; transform: translateY(5px) scale(.98); } }
.bem-visalle { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: var(--text-muted); white-space: nowrap; cursor: pointer; }

.sup-toggle { display: inline-flex; align-items: center; cursor: pointer; }
.sup-toggle input { display: none; }
.sup-toggle-knapp {
  width: 36px; height: 20px; border-radius: 10px; background: var(--border);
  position: relative; transition: background 0.2s;
}
.sup-toggle-knapp::after {
  content: ''; position: absolute; width: 14px; height: 14px; border-radius: 50%;
  background: #fff; top: 3px; left: 3px; transition: transform 0.2s;
}
.sup-toggle input:checked + .sup-toggle-knapp { background: var(--primary); }
.sup-toggle input:checked + .sup-toggle-knapp::after { transform: translateX(16px); }

/* ── Innboks: Brett/Liste ─────────────────────────────────────────────────── */
/* Innholdsflaten bytter mellom kanban og sakliste; filterraden over og
   detaljpanelet over den står urørt ved bytte. */
.sup-innboks-visning {
  flex: 1; min-height: 0;
  display: flex; flex-direction: column;
}

.sup-visningsbryter {
  display: inline-flex; flex: 0 0 auto;
  background: var(--bg2); border: 1px solid var(--border);
  border-radius: 999px; padding: 2px;
}
.sup-visn-btn {
  padding: 4px 13px; border-radius: 999px; border: none;
  background: none; color: var(--text-muted);
  font-family: inherit; font-size: 12px; font-weight: 600;
  cursor: pointer; transition: background .12s, color .12s;
}
.sup-visn-btn:hover { color: var(--text); }
.sup-visn-btn.aktiv { background: var(--surface); color: var(--text); box-shadow: 0 1px 2px rgba(0,0,0,.08); }

/* ── Innboks: listevisning (alle saker, også lukkede) ─────────────────────── */
.sup-liste-tabell {
  --sup-liste-kol: 148px minmax(220px, 2.4fr) minmax(150px, 1fr) 128px 68px 100px;
  flex: 1; min-height: 0;
  display: flex; flex-direction: column;
}
.sup-liste-hode {
  display: grid; grid-template-columns: var(--sup-liste-kol);
  gap: 12px; align-items: center;
  padding: 0 12px 8px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.sup-liste-hodecelle {
  font-size: 10px; font-weight: 700; letter-spacing: .07em;
  text-transform: uppercase; color: var(--text-muted);
  text-align: left; padding: 0;
}
.sup-liste-sortknapp {
  background: none; border: none; cursor: pointer; font-family: inherit;
  transition: color .12s;
}
.sup-liste-sortknapp:hover { color: var(--text); }
.sup-liste-sortknapp.aktiv { color: var(--primary); }

.sup-liste-kropp { flex: 1; min-height: 0; overflow-y: auto; padding-top: 4px; }
.sup-liste-rad {
  display: grid; grid-template-columns: var(--sup-liste-kol);
  gap: 12px; align-items: start;
  padding: 10px 12px; cursor: pointer;
  border-radius: 9px; border: 1px solid transparent;
  transition: background .12s, border-color .12s;
}
.sup-liste-rad:hover { background: var(--bg2); border-color: var(--border); }
.sup-liste-rad.sup-kb-kort-aktiv { background: var(--primary-pill); border-color: var(--primary); }
.sup-liste-celle { min-width: 0; display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.sup-liste-sak, .sup-liste-avsender { flex-direction: column; align-items: flex-start; gap: 2px; }
.sup-liste-emne {
  font-size: 13px; font-weight: 600; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%;
}
.sup-liste-sammendrag {
  font-size: 11.5px; color: var(--text-muted); line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
}
.sup-liste-merker { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 3px; }
.sup-liste-navn { font-size: 12.5px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.sup-liste-epost { font-size: 11px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.sup-liste-dato { font-size: 11.5px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.sup-liste-tomcelle { color: var(--text-muted); font-size: 12px; }
.sup-liste-tom { padding: 40px 0; text-align: center; color: var(--text-muted); font-size: 13.5px; }

/* ── Support Kanban-brett ─────────────────────────────────────────────────── */

.sup-kb-brett {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  flex: 1;
  overflow: hidden;
  min-height: 0;
}

.sup-kb-kolonne {
  display: flex;
  flex-direction: column;
  background: color-mix(in srgb, var(--border) 18%, var(--bg));
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
  min-height: 0;
}

.sup-kb-kol-hdr {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 14px 10px;
  border-bottom: 2px solid var(--kb-farge, var(--border));
  background: color-mix(in srgb, var(--kb-farge, var(--border)) 8%, var(--bg));
  flex-shrink: 0;
}
.sup-kb-kol-dot {
  width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
}
.sup-kb-kol-tittel {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 16px; font-weight: 400; color: var(--text); flex: 1;
  text-transform: uppercase; letter-spacing: .06em; line-height: 1;
}
.sup-kb-kol-teller {
  font-size: 11px; font-weight: 600; color: var(--text-muted);
  background: var(--bg); border: 1px solid var(--border);
  border-radius: 999px; padding: 1px 7px;
}

.sup-kb-kort-liste {
  flex: 1; overflow-y: auto; padding: 10px 10px 14px; display: flex; flex-direction: column; gap: 8px;
}

.sup-kb-tom {
  text-align: center; color: var(--text-muted); font-size: 12px; padding: 20px 0;
}

/* ── Saksmodellen: etiketter, lagrede visninger, relasjoner, egne felter (P2) ──
   FARGEREGELEN, og hvorfor den ser ut som den gjør: etikettfargen bærer
   IDENTITET, ikke tekstkontrast. Derfor er flaten en tint komponert over
   underlaget (`rgba(...)`, ikke en literal), prikken er den eneste mettede
   fargen, og teksten er alltid `--text`. Det er den ene formen som holder
   kontrasten i BEGGE temaer — `--st-obs-bg` og `--st-feil-tekst` flipper ikke i
   mørk modus, og en fritt valgt etikettfarge med farget tekst målte 1,9:1 der.
   Paletten er fast (åtte nøkler, se _SUP_ETIKETT_FARGER) nettopp for at ingen
   skal kunne velge seg til uleselig.                                          */
.sup-etikett {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 1px 7px 1px 5px; border-radius: 6px;
  background: rgba(var(--etikett-tint, 107, 93, 84), .15); color: var(--text);
  font-size: 10.5px; font-weight: 600; line-height: 1.6;
  max-width: 140px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.sup-etikett::before {
  content: ''; flex-shrink: 0;
  width: 6px; height: 6px; border-radius: 50%;
  background: rgb(var(--etikett-tint, 107, 93, 84));
}
.sup-etikett[data-farge="rod"]     { --etikett-tint: 220,  38,  38; }
.sup-etikett[data-farge="oransje"] { --etikett-tint: 217, 119,   6; }
.sup-etikett[data-farge="gul"]     { --etikett-tint: 202, 138,   4; }
.sup-etikett[data-farge="gronn"]   { --etikett-tint:   4, 120,  87; }
.sup-etikett[data-farge="turkis"]  { --etikett-tint:  13, 148, 136; }
.sup-etikett[data-farge="bla"]     { --etikett-tint:  29,  78, 216; }
.sup-etikett[data-farge="lilla"]   { --etikett-tint: 124,  58, 237; }
.sup-etikett[data-farge="rosa"]    { --etikett-tint: 219,  39, 119; }

.sup-etikett-liste { display: flex; flex-wrap: wrap; gap: 4px; }
.sup-etikett-felt { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; }
.sup-etikett-legg {
  background: none; border: 1px dashed var(--border); cursor: pointer;
  padding: 1px 8px; border-radius: 4px;
  font: 600 10.5px/1.6 Inter, sans-serif; color: var(--text-muted);
}
.sup-etikett-legg:hover { border-color: var(--text-muted); color: var(--text); }
.sup-etikett-teller {
  display: inline-block; min-width: 15px; padding: 0 4px; border-radius: 999px;
  background: var(--accent); color: #fff;
  font-size: 10px; font-weight: 700; text-align: center;
}
.sup-etikett-valg-rad {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 4px; cursor: pointer; border-radius: 6px;
}
.sup-etikett-valg-rad:hover { background: var(--bg2); }
.sup-etikett-valg-rad input { flex-shrink: 0; }
.sup-etikett-admin { display: flex; flex-direction: column; gap: 4px; }
.sup-etikett-admin-rad {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 8px; background: var(--bg2);
  border: 1px solid var(--border); border-radius: 6px;
}
.sup-etikett-navn { flex: 1; min-width: 0; font-size: 12.5px; color: var(--text); }
.sup-etikett-admin-ny { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.sup-etikett-admin-ny input { flex: 1; min-width: 140px; }
/* Fargevelgeren er åtte prikker, ikke en <select> med fargenavn: navnet «Turkis»
   sier ingenting om hvordan chipen ser ut ved siden av de sju andre. */
.sup-etikett-farge {
  width: 22px; height: 22px; border-radius: 50%; cursor: pointer;
  border: 2px solid transparent; padding: 0;
  background: rgb(var(--etikett-tint, 107, 93, 84));
}
.sup-etikett-farge[aria-pressed="true"] { border-color: var(--text); }

/* Lagrede visninger ligger OVER filterraden, ikke i en meny: en visning man må
   lete etter, blir ikke brukt — og da er hele funksjonen borte. */
.sup-visning-rad {
  display: flex; flex-wrap: wrap; align-items: center; gap: 5px;
  padding: 0 0 8px;
}
.sup-visn-chip {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 10px; border-radius: 999px; cursor: pointer;
  background: var(--bg2); border: 1px solid var(--border); color: var(--text-muted);
  font: 600 11.5px/1.5 Inter, sans-serif;
}
.sup-visn-chip:hover { border-color: var(--text-muted); color: var(--text); }
.sup-visn-chip.aktiv { background: var(--accent); border-color: var(--accent); color: #fff; }
.sup-visn-delt { font-size: 10px; opacity: .8; }
.sup-visn-lagre, .sup-visn-nullstill {
  background: none; border: none; cursor: pointer;
  padding: 3px 8px; border-radius: 6px;
  font: 600 11.5px/1.5 Inter, sans-serif; color: var(--text-muted);
}
.sup-visn-lagre:hover, .sup-visn-nullstill:hover { background: var(--bg2); color: var(--text); }

/* Relasjoner: sammenslått, delt fra, koblet. Banneret står øverst i
   detaljpanelet fordi en sak som ER slått sammen ikke skal kunne besvares uten
   at agenten vet det — svaret ville gått i en tråd kunden har forlatt. */
.sup-rel-banner {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  padding: 8px 10px; margin-bottom: 10px; border-radius: 8px;
  background: rgba(var(--st-obs-tint, 180, 83, 9), .14);
  font-size: 12.5px; color: var(--text);
}
.sup-rel-laast-merke { font-weight: 700; }
.sup-rel-seksjon { margin-top: 10px; }
.sup-rel-liste { display: flex; flex-direction: column; gap: 3px; margin-top: 4px; }
.sup-rel-rad {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 8px; font-size: 12px;
  background: var(--bg2); border: 1px solid var(--border); border-radius: 6px;
}
.sup-rel-lenke {
  flex: 1; min-width: 0; cursor: pointer; text-align: left;
  background: none; border: none; padding: 0;
  color: var(--text); font: 500 12px/1.5 Inter, sans-serif;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  text-decoration: underline; text-underline-offset: 2px;
}
.sup-rel-knapper { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.sup-saksmodell-hjelp { font-size: 11.5px; color: var(--text-muted); margin: 4px 0 0; }

.sup-egetfelt { display: flex; flex-direction: column; gap: 3px; }
.sup-egetfelt label { font-size: 11px; font-weight: 600; color: var(--text-muted); }
.sup-dh-felt-bred { grid-column: 1 / -1; }

@media (max-width: 768px) {
  .sup-etikett { max-width: 100px; }
  .sup-etikett-admin-ny input { min-width: 100%; }
}

.sup-kb-kort {
  display: flex;
  /* shrink:0 ER SELVE SCROLLEN. Kortet er et flex-barn med overflow:hidden,
     og det gjør at min-height:auto løses til 0 — så når kolonnen fikk flere
     kort enn den hadde høyde til, KRYMPET hvert kort i stedet for at lista
     scrollet: tittelen ble klippet, sammendraget forsvant, og elleve saker
     så ut som en stabel avrevne lapper (rapportert med skjermbilde
     03.09.2026). Med shrink:0 beholder kortet innholdshøyden sin, og
     .sup-kb-kort-liste (overflow-y:auto) gjør jobben den alltid skulle. */
  flex-shrink: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
  cursor: pointer;
  transition: box-shadow 0.15s, transform 0.1s;
  box-shadow: 0 1px 2px rgba(74,48,26,.05), 0 6px 16px -10px rgba(74,48,26,.14);
}
.sup-kb-kort:hover {
  box-shadow: 0 2px 4px rgba(74,48,26,.07), 0 12px 26px -12px rgba(74,48,26,.2);
  transform: translateY(-1px);
}
.sup-kb-kort-aktiv {
  box-shadow: 0 0 0 2px var(--primary) !important;
}

/* Dra og slipp mellom kolonnene. Kortet som dras blekner der det sto (native
   DnD tegner sitt eget spøkelse under pekeren), og kolonnen under pekeren
   sier tydelig «slipp her» med statusfargen sin. Mens noe dras skrus
   hover-løftet på de andre kortene av, så brettet ligger stille. */
.sup-kb-kort-dras { opacity: .35; }
.sup-kb-drar .sup-kb-kort:hover { transform: none; }
.sup-kb-kolonne { transition: box-shadow .12s, background .12s; }
.sup-kb-kolonne-mal {
  box-shadow: inset 0 0 0 2px var(--kb-farge, var(--primary));
  background: color-mix(in srgb, var(--kb-farge, var(--primary)) 9%, var(--bg));
}

.sup-kb-stripe {
  width: 4px; flex-shrink: 0;
}
.sup-kb-kort-body {
  padding: 10px 12px; flex: 1; min-width: 0;
}
.sup-kb-kort-topp {
  display: flex; align-items: center; gap: 6px; margin-bottom: 5px;
}
.sup-kb-kort-emne {
  font-size: 13px; font-weight: 600; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-bottom: 3px;
}
.sup-kb-kort-sammendrag {
  font-size: 11px; color: var(--text-muted); line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; margin-bottom: 4px;
}
.sup-kb-kort-meta {
  font-size: 11px; color: var(--text-muted);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* Detalj-panel (slide-in overlay på høyre side) */
.sup-detalj-panel {
  position: absolute; top: 0; right: 0; bottom: 0;
  /* Halve flaten, som Gmails lesevindu: 520 px ga en meldingstråd på
     ~470 px linjebredde, og svarknappene måtte dele bunnraden med feltet.
     Gulvet er for smale vinduer der 50 % hadde blitt uleselig. */
  width: 50%; min-width: 560px; max-width: 100%;
  background: var(--surface);
  border-left: 1px solid var(--border);
  border-radius: 18px 0 0 18px;
  box-shadow: -10px 0 40px -12px rgba(74,48,26,.28);
  z-index: 10;
  display: flex; flex-direction: column;
  overflow: hidden;
}

/* Innboks-layout trenger position:relative for panelet */
.sup-innboks-layout { position: relative; display: flex; flex-direction: column; flex: 1; overflow: hidden; }

/* Support-tilgang: brukerliste */
.sup-bruker-rad {
  display: flex; align-items: center; justify-content: space-between;
  padding: 7px 10px; border: 1px solid var(--border); border-radius: 7px;
  margin-bottom: 6px; background: var(--surface);
}
.sup-bruker-epost { font-size: 13px; color: var(--text); }
.sup-fjern-bruker-btn {
  background: none; border: none; cursor: pointer;
  color: var(--text-muted); font-size: 18px; line-height: 1;
  padding: 0 4px; border-radius: 4px; transition: color .15s;
}
.sup-fjern-bruker-btn:hover { color: #dc2626; }

/* Gmail OAuth: connect button and status */
.sup-koble-gmail-btn {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 9px 16px; background: var(--bg); border: 1px solid var(--border);
  border-radius: 8px; font-size: 13px; font-weight: 500; cursor: pointer;
  color: var(--text); transition: background .15s, border-color .15s;
}
.sup-koble-gmail-btn:hover { background: var(--surface); border-color: var(--primary); color: var(--primary); }
.sup-koble-gmail-btn:disabled { opacity: .6; cursor: default; }
.sup-gmail-status {
  display: flex; align-items: center; gap: 8px;
  font-size: 13px; color: var(--text); margin-bottom: 10px;
}
.sup-gmail-status-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--st-ok-tekst); flex-shrink: 0;
}
.sup-gmail-ok {
  padding: 8px 12px; background: #f0fdf4; border: 1px solid #bbf7d0;
  border-radius: 8px; font-size: 13px; color: var(--st-ok-tekst);
  margin-bottom: 12px;
}

/* Gmail-kobling: collapsible steg-guide */
.sup-hjelp-detaljer {
  margin-top: 12px; border: 1px solid var(--border); border-radius: 8px;
  background: var(--bg); overflow: hidden;
}
.sup-hjelp-detaljer summary {
  padding: 10px 14px; font-size: 13px; font-weight: 500;
  cursor: pointer; user-select: none; color: var(--text);
  list-style: none;
}
.sup-hjelp-detaljer summary::-webkit-details-marker { display: none; }
.sup-hjelp-detaljer[open] summary { border-bottom: 1px solid var(--border); }
.sup-steg-liste {
  margin: 0; padding: 14px 14px 14px 30px;
  font-size: 13px; line-height: 1.7; color: var(--text);
}
.sup-steg-liste li { margin-bottom: 10px; }
.sup-steg-liste code {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 4px; padding: 1px 5px; font-size: 12px;
  font-family: ui-monospace, monospace;
}

/* ── Support: forbedringer (mai 2026) ──────────────────────────────────── */
.sup-sok-input {
  flex: 1; min-width: 200px; max-width: 360px;
  padding: 6px 10px; font-size: 13px;
}

/* SLA-aldring */
.sup-alder {
  display: inline-flex; align-items: center; gap: 3px;
  padding: 1px 6px; border-radius: 6px;
  font-size: 10px; font-weight: 600; line-height: 1.4;
  border: 1px solid transparent;
}
.sup-alder-ok        { color: var(--st-ok-tekst); background: #f0fdf4; border-color: #bbf7d0; }
.sup-alder-advarsel  { color: #d97706; background: #fffbeb; border-color: #fed7aa; }
.sup-alder-kritisk   { color: #dc2626; background: #fef2f2; border-color: #fecaca; }
.sup-kb-kort-advarsel { box-shadow: inset 3px 0 0 var(--amber); }
.sup-kb-kort-kritisk  { box-shadow: inset 3px 0 0 #dc2626; }

/* Manglende-felt-merke */
.sup-mangler-merke {
  display: inline-flex; align-items: center; gap: 3px;
  padding: 2px 7px; border-radius: 6px;
  font-size: 10px; font-weight: 600;
  color: var(--st-obs-tekst); background: var(--st-obs-bg); border: 1px solid #fde68a;
}
.sup-kb-kort-merker { margin-top: 6px; display: flex; gap: 4px; flex-wrap: wrap; }

.sup-mangler-seksjon {
  margin: 12px 20px; padding: 10px 14px;
  background: var(--st-obs-bg); border: 1px solid #fde68a; border-radius: 12px;
}
.sup-mangler-liste {
  margin: 6px 0 0; padding-left: 20px; font-size: 13px; color: var(--st-obs-tekst);
}
.sup-mangler-liste li { margin-bottom: 2px; }

/* Kundehistorikk — kontaktkortet i detaljpanelet */
.sup-historikk-seksjon {
  margin: 12px 20px; padding: 11px 14px;
  background: var(--bg2); border: 1px solid var(--border); border-radius: 12px;
}
.sup-historikk-forste {
  font-size: 12.5px; color: var(--text-muted);
}
.sup-kontaktkort-hdr {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
  margin-bottom: 8px;
}
.sup-kontaktkort-tittel {
  font-size: 11px; font-weight: 700; color: var(--text);
  text-transform: uppercase; letter-spacing: .05em;
}
.sup-kontaktkort-spenn { font-size: 11.5px; color: var(--text-muted); }

.sup-historikk-liste { display: flex; flex-direction: column; gap: 3px; }
.sup-historikk-rad {
  display: flex; flex-direction: column; gap: 3px;
  padding: 7px 9px; border-radius: 9px; cursor: pointer;
  border: 1px solid transparent;
  transition: background .12s, border-color .12s;
}
.sup-historikk-rad:hover { background: var(--surface); border-color: var(--border); }
.sup-historikk-rad-topp { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.sup-historikk-emne {
  font-size: 13px; font-weight: 600; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* Sammendraget er det som faktisk sier hva kunden spurte om — to linjer,
   så en lang tekst ikke skyver resten av historikken nedover. */
.sup-historikk-sammendrag {
  font-size: 12px; color: var(--text-muted); line-height: 1.45;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.sup-historikk-dato {
  font-size: 11px; color: var(--text-muted); white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.sup-historikk-mer { margin-top: 4px; }
.sup-historikk-mer > summary {
  cursor: pointer; user-select: none; list-style: none;
  font-size: 11.5px; font-weight: 600; color: var(--primary);
  padding: 5px 2px;
}
.sup-historikk-mer > summary::-webkit-details-marker { display: none; }
.sup-historikk-mer > summary:hover { text-decoration: underline; }

/* Vedlegg */
/* ── Svarkonsollen: vedlegg, kopi, signatur, språk (P1) ────────────────────────
   Alt her henger på ett målt tall: 20 av 25 lukkede saker fikk aldri et svar
   sendt via Eventlab (24.08.2026). Agentene gikk til Gmail fordi konsollen ikke
   kunne det Gmail kan. Radene under er derfor bevisst LAVE — de skal få plass
   under skrivefeltet uten å spise av tråden, som allerede er det trangeste
   arealet i panelet.                                                          */

/* «+ Kopi» og «+ Vedlegg» ligger som dempede tekstknapper, ikke fylte knapper:
   de brukes sjelden, og to fylte knapper til ville konkurrert visuelt med
   Send — den eneste knappen som skal trekke blikket. */
.sup-svar-tillegg-btn {
  background: none; border: none; cursor: pointer;
  padding: 4px 6px; border-radius: 8px;
  font: 600 11.5px/1 Inter, sans-serif; color: var(--text-muted);
}
.sup-svar-tillegg-btn:hover { background: var(--bg2); color: var(--text); }
.sup-svar-tillegg-btn[aria-expanded="true"] { color: var(--accent); }

/* Bunnraden: SEND-KNAPPEN KRYMPER ALDRI, verktøyraden gjør det.
   Verktøyraden fikk tre nye elementer denne runden (⚡ Makro, + Kopi/+ Vedlegg,
   signatur-forhåndsvisningen). Uten disse to reglene ble «Send svar» presset fra
   118 til 87 px bredde, teksten brøt til to linjer, og knappen vokste 32 → 48 px.
   De 16 pikslene ble tatt rett fra meldingstråden — den er det eneste elastiske
   i panelet — som dermed sto på minstehøyden sin (90 px) og gjorde
   dra-håndtaket virkningsløst. Én knapp som brøt teksten sin kostet altså hele
   dra-funksjonen; `test-support.html?panel` er det som fanget det.
   Riktig prioritering er uansett denne: en avkortet malvelger er en ulempe, en
   Send-knapp som tar to linjer er en feil. */
.sup-svar-footer .sup-send-btn { flex-shrink: 0; white-space: nowrap; }
.sup-svar-verktoy { min-width: 0; }

/* ── Kroppen: skrivefelt til venstre, verktøyene i en stolpe til høyre ──
   Bunnraden (Mal · Makro · Kopi · Vedlegg · AI · Send) kostet 32–48 px av
   panelhøyden og lå oppå det trangeste arealet. Med panelet på halve skjermen
   er det BREDDE til overs, ikke høyde — så raden ble en stolpe: Send øverst,
   nærmest teksten, verktøyene under. Skrivefeltet får hele kroppens høyde. */
.sup-svar-kropp {
  flex: 1; min-height: 0;
  display: flex; align-items: stretch; gap: 10px;
}
.sup-svar-kropp .sup-svar-tekst { flex: 1; min-width: 0; }
/* Stolpen er TETT med vilje: seks knapper i normal høyde ble 182 px, og
   det er stolpen — ikke skrivefeltet — som da setter kroppens høyde. Målt
   03.09.2026 i 720 px-viewporten: svarboksen 274 → 300 px, og dra-håndtaket
   hadde bare 26 px å vokse i (`test-support.html?panel` krever 40). Med
   radene under er stolpen ≈ 150 px, samme som feltets seks linjer. */
.sup-svar-kropp .sup-svar-footer {
  flex: 0 0 auto; width: 104px; margin-top: 0;
  flex-direction: column; align-items: stretch; gap: 3px;
  position: relative; /* makro-menyens ankerpunkt */
}
.sup-svar-kropp .sup-send-btn { order: -1; margin-left: 0; justify-content: center; padding: 6px 8px; font-size: 12.5px; }
.sup-svar-kropp .sup-svar-verktoy { flex-direction: column; align-items: stretch; gap: 2px; min-width: 0; }
.sup-svar-kropp .sup-svar-tillegg-btn { text-align: left; padding: 4px 8px; white-space: nowrap; }
.sup-svar-kropp .sup-mal-sel { max-width: none; width: 100%; padding: 3px 6px; font-size: 11.5px; }
.sup-svar-kropp .sup-ai-btn { text-align: center; padding: 5px 8px; }
/* Makro-menyen åpner mot venstre, over skrivefeltet — stolpen står ved
   høyrekanten, så «over raden» hadde havnet utenfor panelet. */
.sup-svar-kropp .sup-makro-meny { left: auto; right: calc(100% + 8px); bottom: 0; }
/* Signaturen deler rad med «Svar til …» og tar farge derfra (raden er lys
   på det mørke konsollet). Krymper med ellipse før noe annet i raden gjør det. */
.sup-svar-hdr .sup-svar-signatur { flex: 0 1 auto; min-width: 0; margin-left: 4px; color: inherit; opacity: .85; }

@media (max-width: 768px) {
  /* Telefon: panelet er i full bredde, men 104 px stolpe av 375 gir et
     skrivefelt på 250 — der er høyden billigere enn bredden, så kroppen
     legges under hverandre igjen og verktøyene blir en rad. */
  .sup-svar-kropp { flex-direction: column; gap: 8px; }
  .sup-svar-kropp .sup-svar-footer { width: auto; flex-direction: row; align-items: center; }
  .sup-svar-kropp .sup-send-btn { order: 0; margin-left: auto; }
  .sup-svar-kropp .sup-svar-verktoy { flex-direction: row; align-items: center; gap: 8px; flex-wrap: wrap; }
  .sup-svar-kropp .sup-mal-sel { width: auto; max-width: 130px; }
  .sup-svar-kropp .sup-makro-meny { left: 0; right: auto; bottom: calc(100% + 6px); }
}

.sup-svar-kopi { display: flex; flex-direction: column; gap: 5px; margin: 6px 0; }
/* `[hidden]` MÅ vinne over `display: flex`. Nettleserens egen regel er
   `[hidden] { display: none }` i UA-arket, og en klasseregel med `display`
   slår den på spesifisitet — så en boks JS-en har merket skjult blir stående og
   ta plass, usynlig for den som leser markupen.
   Målt konsekvens 25.08.2026: kopi-boksen tok 62 px mens den var `hidden`.
   Svarpanelet vokste 274 → 323 px, tråden ble presset ned på gulvet sitt
   (90 px, `.sup-detalj-scroll`), skrivefeltet krympet 139 → 60 px, og
   dra-håndtaket kunne ikke lenger vokse panelet i det hele tatt —
   `test-support.html?panel` felte på «endret ikke høyden (325 → 325)».
   Gjelder hver klasse her som både settes med `display` OG toggles med
   `hidden`. */
.sup-svar-kopi[hidden],
.sup-svar-vedlegg[hidden],
.sup-svar-signatur[hidden] { display: none; }
.sup-svar-kopi-felt {
  display: flex; align-items: center; gap: 6px;
  font-size: 12px; color: var(--text-muted);
}
.sup-svar-kopi-felt label { flex: 0 0 62px; font-weight: 600; }
.sup-svar-kopi-felt input {
  flex: 1; min-width: 0;
  padding: 5px 8px; font-size: 12.5px;
  background: var(--bg); color: var(--text);
  border: 1px solid var(--border); border-radius: 6px;
}
.sup-svar-kopi-felt input:focus { outline: none; border-color: var(--accent); }
/* Feil på adressen stopper sendingen FØR den starter — en e-post som feiler
   halvveis er verre enn en som ikke ble forsøkt. Derfor skal feilen stå ved
   feltet, ikke i en varsle()-boks som forsvinner. */
.sup-svar-kopi-feil {
  font-size: 11.5px; color: #B91C1C; padding-left: 68px;
}
.sup-svar-kopi-felt input.feil { border-color: #B91C1C; }

.sup-svar-vedlegg { display: flex; flex-direction: column; gap: 3px; margin: 6px 0; }
.sup-svar-vedlegg-rad {
  display: flex; align-items: center; gap: 6px;
  padding: 4px 8px; font-size: 12px;
  background: var(--bg2); border: 1px solid var(--border); border-radius: 6px;
}
.sup-svar-vedlegg-ikon { font-size: 13px; flex-shrink: 0; }
.sup-svar-vedlegg-navn {
  font-weight: 500; color: var(--text); flex: 1; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.sup-svar-vedlegg-storrelse { color: var(--text-muted); font-size: 11px; flex-shrink: 0; }
.sup-svar-vedlegg-fjern {
  background: none; border: none; cursor: pointer; flex-shrink: 0;
  color: var(--text-muted); font-size: 15px; line-height: 1;
  padding: 0 2px; border-radius: 4px;
}
.sup-svar-vedlegg-fjern:hover { color: #B91C1C; }
/* Summen står alltid, ikke bare når taket nærmer seg: en agent som ser «3,2 av
   20 MB» vet at grensen finnes før hen treffer den. */
.sup-svar-vedlegg-sum { font-size: 11px; color: var(--text-muted); padding-left: 2px; }
.sup-svar-vedlegg-sum.over { color: #B91C1C; font-weight: 600; }

/* Signaturen legges på server-side ved sending. Forhåndsvisningen finnes fordi
   et tillegg agenten ikke kan se, er et tillegg agenten ikke stoler på. */
/* Ligger INNE i verktøyraden (`.sup-svar-verktoy`), ikke som egen rad i
   panelkolonnen — se begrunnelsen ved markupen. Derfor inline og krympbar:
   den skal gi fra seg plass til knappene, ikke omvendt. */
.sup-svar-signatur {
  /* Bor i «Svar til»-raden (`.sup-svar-hdr`), ikke som egen rad i
     panelkolonnen. Lå til 03.09.2026 i verktøyraden under feltet, som nå er
     en stolpe ved siden av det (`.sup-svar-kropp`). Agenten må kunne se hva
     som legges på — usikkerheten om nettopp det var en av grunnene til at
     folk gikk tilbake til Gmail — men en egen rad kostet 29 px pluss et
     flex-gap, og svarpanelet har ikke den høyden å gi: den tas rett fra
     meldingstråden.

     `min-width: 0` ER IKKE PYNT, og er den samme fella som `min-height: 0` én
     akse unna: implisitt `min-width: auto` gjør at et flex-barn nekter å krympe
     under sin egen innholdsbredde. Signaturen presset da knappene til ny linje,
     bunnraden ble 48 px i stedet for 32, og de 16 pikslene ble tatt fra tråden
     — som allerede sto på minstehøyden sin. Målt mot basiscommiten:
     panel 274 → 290, tråd 139 → 123, og `test-support.html?panel` felte fordi
     dra-håndtaket ikke lenger hadde 40 px å vokse i.

     Én linje, aldri to: forhåndsvisningen skal svare på ett spørsmål — «blir
     det lagt på en signatur?» — ikke gjengi den. Hele teksten ligger i
     `title`. */
  /* `0 1 auto`, ALDRI `1 1 auto`: en forhåndsvisning skal ta plassen den
     trenger og gi fra seg resten. Med grow-faktor 1 vokste den i stedet inn i
     bunnraden, klemte «Send svar» til teksten brøt til to linjer, og knappen
     ble 48 px i stedet for 32 — de 16 pikslene ble tatt rett fra
     meldingstråden, som allerede sto på minstehøyden sin. Målt mot
     basiscommiten: panel 274 → 290, tråd 139 → 123. */
  flex: 0 1 auto;
  min-width: 0;
  padding: 0 4px;
  font-size: 11.5px; line-height: 1.5; color: var(--text-muted);
  white-space: pre;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sup-svar-signatur-merke {
  font-size: 10px; font-weight: 700; letter-spacing: .05em;
  text-transform: uppercase; color: var(--text-muted); opacity: .75; margin-right: 6px;
}

/* Språk-chipen vises KUN når svaret ikke skal være norsk — se sprak.mjs. En
   chip på hver eneste sak hadde vært støy på 29 av 31 saker. */
.sup-sprak-chip {
  display: inline-flex; align-items: center; gap: 3px;
  padding: 1px 7px; border-radius: 6px;
  background: rgba(var(--st-info-tint, 29, 78, 216), .13); color: var(--text);
  font-family: 'JetBrains Mono', monospace;
  font-size: 9.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
}

@media (max-width: 768px) {
  /* Maks to felt per rad på telefon — husregel. Kopi og blindkopi stables. */
  .sup-svar-kopi-felt { flex-wrap: wrap; }
  .sup-svar-kopi-felt label { flex-basis: 100%; }
  .sup-svar-kopi-feil { padding-left: 0; }
}

.sup-vedlegg-liste {
  margin-top: 6px; display: flex; flex-direction: column; gap: 3px;
}
.sup-vedlegg-rad {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 8px; font-size: 12px;
  background: var(--bg2); border: 1px solid var(--border); border-radius: 6px;
  width: fit-content; max-width: 100%;
}
.sup-vedlegg-ikon { font-size: 14px; }
.sup-vedlegg-navn { font-weight: 500; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 220px; }
.sup-vedlegg-storrelse { color: var(--text-muted); font-size: 11px; }

/* Internt notat */
.sup-meldrad-notat { display: flex; gap: 10px; margin-bottom: 12px; }
.sup-avatar-notat {
  width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--st-obs-bg); border: 1px solid #fde68a; font-size: 14px; flex-shrink: 0;
}
.sup-melding-notat {
  background: #fffbeb; border: 1px dashed var(--amber); border-radius: 10px;
  padding: 8px 12px; font-size: 13px; color: #78350f;
  white-space: pre-wrap; word-wrap: break-word;
}

/* Svar/notat-mode-velger */
.sup-svar-mode-velger {
  display: flex; gap: 4px; margin-bottom: 8px;
  border-bottom: 1px solid var(--border); padding-bottom: 6px;
}
.sup-svar-mode-btn {
  padding: 4px 12px; font-size: 12px; font-weight: 500;
  background: transparent; border: 1px solid transparent; border-radius: 8px;
  color: var(--text-muted); cursor: pointer;
}
.sup-svar-mode-btn:hover { background: var(--bg2); color: var(--text); }
.sup-svar-mode-btn.aktiv { background: var(--bg2); color: var(--text); border-color: var(--border); }

/* Statistikk-dashboard */
/* ── Tid og oppfølging: åpningstider, svarfrister, vaktplan (P3) ───────────────
   Åpningstidene er sju rader som leses som en TABELL, ikke som sju skjemafelt:
   den som fyller dem ut sammenligner dagene mot hverandre («stenger vi
   tidligere på fredag?»), og da må kolonnene ligge på linje. Uten grid trappet
   radene seg nedover — målt i harnessen 25.08.2026.                           */
.sup-ap-grid {
  display: grid; gap: 4px 10px;
  grid-template-columns: 1fr;
  margin-bottom: 12px;
}
.sup-ap-rad {
  display: grid; align-items: center; gap: 8px;
  grid-template-columns: 72px 1fr auto 1fr;
}
.sup-ap-rad label { font-size: 12.5px; font-weight: 600; color: var(--text-muted); }
.sup-ap-rad input { width: 100%; min-width: 0; }
.sup-ap-til { color: var(--text-muted); font-size: 12px; text-align: center; }

.sup-sla-rader { display: flex; flex-direction: column; gap: 4px; }
.sup-sla-rad {
  display: flex; align-items: center; gap: 8px;
  padding: 7px 10px;
  background: var(--bg2); border: 1px solid var(--border); border-radius: 7px;
}
/* En avslått policy skal fortsatt være lesbar — den er dokumentasjon på hva
   som en gang gjaldt, ikke søppel. Derfor dempet, ikke gjennomstreket. */
.sup-sla-rad-av { opacity: .55; }
.sup-sla-rad-tekst { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
/* Vakthavende akkurat nå får aksentkant i stedet for farget flate: raden står i
   en liste der de andre radene også skal kunne leses, og en fylt flate ville
   tatt oppmerksomheten fra selve vakttiden. */
.sup-vakt-rad-paa { border-color: var(--accent); }
.sup-vakt-naa {
  display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 999px;
  background: var(--accent); color: #fff;
  font-size: 9.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
}

/* Skjemaene ligger bak <details> — progressiv avdekking. «Ny svarfrist» er noe
   man gjør én gang i sesongen, og et alltid utfoldet skjema med seks felt ville
   dominert et kort som ellers er en kort liste. */
.sup-sla-ny { margin-top: 10px; }
.sup-sla-ny > summary {
  cursor: pointer; padding: 5px 0;
  font: 600 12.5px/1.4 Inter, sans-serif; color: var(--text-muted);
}
.sup-sla-ny > summary:hover { color: var(--text); }
.sup-sla-form, .sup-vakt-form {
  display: grid; gap: 8px; padding-top: 8px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sup-sla-form input, .sup-sla-form select,
.sup-vakt-form input, .sup-vakt-form select { width: 100%; min-width: 0; }
.sup-sla-form button, .sup-vakt-form button { grid-column: 1 / -1; justify-self: start; }

.sup-sjekk-rad {
  display: flex; align-items: flex-start; gap: 8px;
  margin: 10px 0 6px; cursor: pointer;
  font-size: 13px; color: var(--text); line-height: 1.5;
}
.sup-sjekk-rad input { margin-top: 2px; flex-shrink: 0; }

@media (max-width: 768px) {
  /* Husregel: maks to felt per rad på telefon. Dagraden stables til
     etikett over, så de to tidsfeltene beholder full bredde hver. */
  .sup-ap-rad { grid-template-columns: 1fr auto 1fr; }
  .sup-ap-rad label { grid-column: 1 / -1; }
  .sup-sla-form, .sup-vakt-form { grid-template-columns: 1fr; }
}

.sup-stats-wrapper { padding: 16px; display: flex; flex-direction: column; gap: 16px; overflow-y: auto; }
.sup-stats-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px;
}
.sup-stat-kort {
  display: flex; flex-direction: column; gap: 4px;
  padding: 16px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px;
  box-shadow: 0 1px 2px rgba(74,48,26,.05), 0 10px 26px -16px rgba(74,48,26,.16);
}
.sup-stat-label { font-size: 12px; color: var(--text-muted); font-weight: 500; }
.sup-stat-tall  { font-family: 'Bebas Neue', sans-serif; font-size: 36px; font-weight: 400; letter-spacing: .01em; color: var(--text); line-height: 1; }
.sup-stat-sub   { font-size: 11px; color: var(--text-muted); }

.sup-stats-rad { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.sup-stats-kort .oset-card-body { padding: 12px 16px 16px; }
@media (max-width: 720px) { .sup-stats-rad { grid-template-columns: 1fr; } }

.sup-stats-bar-rad {
  display: flex; align-items: flex-end; gap: 6px;
  height: 140px; padding-top: 12px;
}
.sup-stats-bar-celle {
  flex: 1; display: flex; flex-direction: column; align-items: center;
  height: 100%; position: relative;
}
.sup-stats-bar {
  width: 100%; min-height: 2px; max-width: 32px;
  background: linear-gradient(180deg, var(--primary) 0%, var(--primary-dark) 100%);
  border-radius: 3px 3px 0 0; margin-top: auto;
}
.sup-stats-bar-label { font-size: 10px; color: var(--text-muted); margin-top: 4px; }
.sup-stats-bar-tall {
  position: absolute; top: 0; font-size: 10px; font-weight: 600; color: var(--text);
}

.sup-stats-rad-rad {
  display: grid; grid-template-columns: 120px 1fr 32px;
  gap: 8px; align-items: center; margin-bottom: 6px; font-size: 13px;
}
.sup-stats-rad-label { color: var(--text); text-transform: capitalize; }
.sup-stats-rad-spor { background: var(--bg2); border-radius: 4px; height: 12px; overflow: hidden; }
.sup-stats-rad-fyll { background: var(--primary); height: 100%; border-radius: 4px; }
.sup-stats-rad-tall { font-weight: 600; color: var(--text); text-align: right; }

.sup-kanal-rad { display: flex; gap: 12px; flex-wrap: wrap; }
.sup-kanal-celle {
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  padding: 12px 18px; background: var(--bg2); border: 1px solid var(--border); border-radius: 10px;
  min-width: 80px;
}
.sup-kanal-tall  { font-family: 'Bebas Neue', sans-serif; font-size: 28px; font-weight: 400; letter-spacing: .01em; color: var(--text); }
.sup-kanal-label { font-size: 11px; color: var(--text-muted); text-transform: capitalize; }

/* Event-pille på sak-kort (per arrangement) */
.sup-event-pille {
  display: inline-flex; align-items: center;
  padding: 1px 7px; border-radius: 9px;
  font-size: 10px; font-weight: 600; line-height: 1.5;
  color: #fff;
  max-width: 140px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  letter-spacing: .01em;
}

/* AI-kontekst: kildevalg (org-innstillinger og per-event-overstyring).
   Mobil først: navn over valg, maks to felt i bredden. */
.sup-aikilde-rader { display: flex; flex-direction: column; gap: 2px; }
.sup-aikilde-rad {
  display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-start;
  padding: 10px 0; border-bottom: 1px solid var(--border, #e5e7eb);
}
.sup-aikilde-rad:last-child { border-bottom: 0; }
.sup-aikilde-navn { flex: 1 1 220px; min-width: 0; font-size: 13px; }
.sup-aikilde-merke {
  display: inline-block; margin-left: 6px;
  font-size: 10px; font-weight: 600; letter-spacing: .02em;
  color: var(--text-muted); text-transform: uppercase;
}
.sup-aikilde-valg { display: flex; gap: 8px; align-items: center; flex: 0 0 auto; }
.sup-aikilde-bryter { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; cursor: pointer; }
.sup-aikilde-budsjett { width: 92px; }
@media (max-width: 640px) {
  .sup-aikilde-navn { flex-basis: 100%; }
  .sup-aikilde-valg { width: 100%; justify-content: space-between; }
}

/* AI-kontekst: korrekturlesing av tekstene (skrivebeskyttet kort).
   Dette er en LESEFLATE, ikke en tabell — derfor pre-wrap og 1.6 i linjeavstand
   på selve teksten, og ingen max-height med scroll: en tekst man bare ser
   halvparten av, er nøyaktig problemet kortet finnes for å løse. */
.sup-korrektur-topp {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  flex-wrap: wrap; padding-bottom: 10px; border-bottom: 1px solid var(--border, #e5e7eb);
}
.sup-korrektur-sum { font-size: 13px; font-weight: 600; color: var(--text); }
.sup-korrektur-topp .sup-spm-btn { margin-left: 0; }

.sup-korrektur-bolk { margin-top: 16px; }
.sup-korrektur-bolk-hdr { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.sup-korrektur-bolk-navn {
  font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-muted);
}
.sup-korrektur-bolk-tall {
  font-size: 11px; font-weight: 600; color: var(--text-muted);
  background: var(--bg); border-radius: 6px; padding: 1px 7px;
}

.sup-korrektur-post { border-bottom: 1px solid var(--border, #e5e7eb); }
.sup-korrektur-post:last-of-type { border-bottom: 0; }
/* display:flex på <summary> fjerner nettleserens egen utfoldingstrekant, og
   uten noe i stedet ser radene ut som ren tekst — ingenting sier at det ligger
   et dokument bak. Derfor en egen chevron som roterer på [open]. */
.sup-korrektur-post > summary {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
  padding: 9px 0; cursor: pointer; list-style: none;
}
.sup-korrektur-post > summary::-webkit-details-marker { display: none; }
.sup-korrektur-post > summary::before {
  content: '›'; flex: 0 0 auto; align-self: center;
  font-size: 15px; line-height: 1; color: var(--text-muted);
  transition: transform .14s ease;
}
.sup-korrektur-post[open] > summary::before { transform: rotate(90deg); }
.sup-korrektur-post > summary:hover .sup-korrektur-tittel { color: var(--primary); }
.sup-korrektur-post > summary:hover::before { color: var(--primary); }
.sup-korrektur-tittel { font-size: 13.5px; font-weight: 600; color: var(--text); flex: 1 1 auto; min-width: 0; }
/* Ikke --primary: merkene er 10 px halvfet, altså «normal tekst» i
   WCAG-forstand uansett hvor små de ser ut, og --primary på pillen måler
   3,47:1. Ikke --primary-dark heller — den er definert kun i lys utgave, og i
   mørk modus står #CC1500 på en nesten sort pill (2,2:1). --primary-dark-adaptiv
   er tokenet for merkerødt SOM TEKST og måler 4,8:1 i lys, 5,5-7,8:1 i mørk.
   verktoy/test-kontrast-primar.mjs er vakten. Se docs/DESIGN.md. */
.sup-korrektur-merke {
  font-size: 10px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase;
  color: var(--primary-dark-adaptiv); background: var(--primary-pill); border-radius: 5px; padding: 1px 6px;
  white-space: nowrap;
}
.sup-korrektur-tegn { font-size: 11.5px; color: var(--text-muted); white-space: nowrap; }
/* Smal skjerm: min-width holder chevron og tittel sammen på rad 1 og brekker
   merker + tegntall ned på rad 2. En flex-basis på 100 % (som sto her først)
   dyttet tittelen ned og lot chevronen stå igjen alene øverst. */
@media (max-width: 640px) {
  .sup-korrektur-tittel { min-width: 55%; }
}
.sup-korrektur-tekst {
  /* pre-wrap holder avsnittene slik de er skrevet — teksten AI-en får er den
     samme strengen, og et sammenklappet linjeskift er en forskjell mellom det
     kollegaen leser og det modellen ser. */
  white-space: pre-wrap; overflow-wrap: anywhere;
  font-size: 13.5px; line-height: 1.6; color: var(--text);
  background: var(--bg); border: 1px solid var(--border, #e5e7eb); border-radius: 8px;
  padding: 12px 14px; margin: 0 0 12px;
}

/* Per-event konfig-form */
.sup-eventkonfig-form { margin-top: 12px; display: flex; flex-direction: column; gap: 12px; }
.sup-eventkonfig-knapper { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.sup-eventkonf-slett { background: #fef2f2 !important; color: #dc2626 !important; border-color: #fecaca !important; }
.sup-eventkonf-slett:hover { background: #fee2e2 !important; }
.sup-radio-rad {
  display: flex; gap: 14px; flex-wrap: wrap;
  font-size: 13px;
}
.sup-radio-rad label {
  display: inline-flex; align-items: center; gap: 5px;
  cursor: pointer; color: var(--text);
}

/* Hurtig-godkjenn: lyn-knapp på sak-kort */
.sup-kb-hurtig-btn {
  margin-left: auto;
  display: inline-flex; align-items: center; justify-content: center; gap: 3px;
  height: 24px; padding: 0 8px;
  border: 1px solid #fde68a; background: var(--st-obs-bg); border-radius: 8px;
  font-size: 11px; font-weight: 700; white-space: nowrap; cursor: pointer;
  transition: transform 0.1s, background 0.15s;
}
.sup-kb-hurtig-btn:hover {
  background: #fcd34d; transform: scale(1.05);
}
.sup-kb-hurtig-btn:active { transform: scale(0.95); }

/* Feilet sending: godkjent svar som aldri gikk ut — arbeid, ikke «Svar klart» */
.sup-ikkesendt-chip {
  margin-left: auto;
  display: inline-flex; align-items: center; gap: 3px;
  height: 24px; padding: 0 8px;
  border: 1px solid #F5B5AC; background: var(--st-feil-bg); color: var(--st-feil-tekst);
  border-radius: 8px; font-size: 11px; font-weight: 700; white-space: nowrap;
}

/* AI-forslag «kan løses» — chip på kanban-kortet + banner i detaljen */
.sup-forslag-chip {
  display: inline-flex; align-items: center; gap: 3px;
  height: 24px; padding: 0 8px;
  border: 1px solid #A9DEC8; background: var(--st-ok-bg); color: var(--st-ok-tekst);
  border-radius: 8px; font-size: 11px; font-weight: 700; white-space: nowrap;
  cursor: pointer; transition: transform 0.1s, background 0.15s;
}
.sup-forslag-chip:hover { background: #A9DEC8; transform: scale(1.05); }
.sup-forslag-chip:active { transform: scale(0.95); }
.sup-forslag-banner {
  margin: 12px 20px 0; padding: 10px 14px;
  background: var(--st-ok-bg); border: 1px solid #A9DEC8; border-radius: 12px;
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  font-size: 13px; color: var(--st-ok-tekst); line-height: 1.5;
}
.sup-forslag-tekst { flex: 1 1 200px; }
.sup-forslag-los-btn {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 7px 14px; border: none; border-radius: 9px;
  background: var(--st-ok-tekst); color: #fff;
  font-size: 12.5px; font-weight: 700; cursor: pointer;
  transition: filter 0.15s;
}
.sup-forslag-los-btn:hover { filter: brightness(1.12); }

/* Hurtig-godkjenn bottom-sheet */
.sup-hurtig-overlay {
  position: fixed; inset: 0; z-index: 5000;
  background: rgba(0, 0, 0, 0); backdrop-filter: blur(0);
  display: flex; align-items: flex-end; justify-content: center;
  transition: background 0.18s;
}
.sup-hurtig-overlay.aapen {
  background: rgba(0, 0, 0, 0.45);
  backdrop-filter: blur(2px);
}
.sup-hurtig-sheet {
  width: 100%; max-width: 560px;
  background: var(--bg); border-radius: 16px 16px 0 0;
  padding: 20px 18px 22px;
  box-shadow: 0 -8px 32px rgba(0, 0, 0, 0.18);
  transform: translateY(100%);
  transition: transform 0.2s cubic-bezier(.2,.7,.3,1);
}
.sup-hurtig-overlay.aapen .sup-hurtig-sheet { transform: translateY(0); }
@media (min-width: 600px) {
  .sup-hurtig-overlay { align-items: center; }
  .sup-hurtig-sheet { border-radius: 16px; }
}
.sup-hurtig-hdr {
  display: flex; align-items: center; gap: 8px;
  font-family: 'Bebas Neue', sans-serif; font-size: 22px; font-weight: 400; letter-spacing: .02em;
  color: var(--text);
  margin-bottom: 10px;
}
.sup-hurtig-meta { font-size: 12px; color: var(--text-muted); margin-bottom: 6px; }
.sup-hurtig-emne { font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 12px; }
.sup-hurtig-utkast {
  background: var(--bg2); border: 1px solid var(--border); border-radius: 10px;
  padding: 12px 14px; font-size: 14px; line-height: 1.5;
  color: var(--text); white-space: pre-wrap;
  max-height: 50vh; overflow-y: auto; margin-bottom: 14px;
}
.sup-hurtig-laster { padding: 32px; text-align: center; color: var(--text-muted); }
.sup-hurtig-knapper {
  display: flex; gap: 8px; flex-wrap: wrap;
}
.sup-hurtig-btn-pri, .sup-hurtig-btn-sek {
  padding: 12px 16px; border-radius: 8px; font-size: 14px; font-weight: 600;
  cursor: pointer; flex: 1; min-width: 100px; border: none;
}
.sup-hurtig-btn-pri {
  background: var(--st-ok-tekst); color: #fff;
}
.sup-hurtig-btn-pri:hover { background: var(--st-ok-tekst); }
.sup-hurtig-btn-pri:disabled { background: #9ca3af; cursor: default; }
.sup-hurtig-btn-sek {
  background: var(--bg2); color: var(--text); border: 1px solid var(--border);
}
.sup-hurtig-btn-sek:hover { background: var(--surface); }

/* Mobil-tilpasninger for support-modulen */
@media (max-width: 768px) {
  .sup-kb-brett {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: minmax(82vw, 320px);
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 6px;
  }
  .sup-kb-kolonne { scroll-snap-align: start; }
  /* Sakslista: seks kolonner får ikke plass — hver rad blir et kort i stedet,
     og kolonneoverskriftene (som også er sorteringen) faller bort. */
  .sup-liste-hode { display: none; }
  .sup-liste-rad {
    grid-template-columns: 1fr; gap: 5px;
    border-color: var(--border); background: var(--surface);
    margin-bottom: 8px;
  }
  .sup-liste-celle { flex-direction: row; align-items: center; }
  .sup-liste-sak, .sup-liste-avsender { flex-direction: column; align-items: flex-start; }
  /* Uten kolonneoverskrift er en løs «—» bare støy — tom tildeling vises
     ved at avataren mangler. */
  .sup-liste-tomcelle { display: none; }
  .sup-filter-rad {
    flex-wrap: wrap;
    gap: 6px;
  }
  .sup-sok-input {
    flex: 1 1 100%;
    max-width: none;
    min-width: 0;
  }
  .sup-filter-sel {
    flex: 1;
    min-width: 0;
  }
  .sup-sak-teller { flex: 0 0 auto; }
  .sup-topbar {
    flex-wrap: wrap;
    gap: 6px;
  }
  .sup-subtabs { flex: 1; min-width: 0; }
  .sup-subtab-btn {
    padding: 6px 10px; font-size: 12px;
  }
  .sup-topbar-actions { margin-left: 0; }
  .sup-detalj-panel {
    width: 100%;
    border-left: none;
  }
  .sup-stats-wrapper { padding: 12px; }
  .sup-stats-grid { grid-template-columns: 1fr 1fr; }
}

/* ── Offentlig kontaktskjema (cream) ─────────────────────────── */
.sup-public-card {
  /* border-box så width:100% inkluderer padding — med content-box stakk
     kortet utenfor skjermen på mobil. 592 = 520 innhold + 2×36 padding,
     så desktop-bredden er uendret. */
  box-sizing: border-box;
  max-width: 592px; width: 100%;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 40px 36px;
  /* Luft under kortet i scroll-lerretet — padding-bottom på selve
     scroll-containeren regnes ikke med i scrollhøyden i alle nettlesere. */
  margin-bottom: 40px;
  box-shadow: 0 1px 2px rgba(74,48,26,0.05), 0 18px 44px -22px rgba(74,48,26,0.24);
}
@media (max-width: 640px) {
  .sup-public-card { padding: 26px 18px; border-radius: 14px; margin-bottom: 24px; }
  .sup-public-tittel { font-size: 30px; }
}
.sup-public-eyebrow {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 13px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--primary); margin-bottom: 8px;
}
.sup-public-tittel {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 36px; font-weight: 400; letter-spacing: .015em; line-height: 1.02;
  color: var(--text); margin: 0 0 12px;
}
.sup-public-tittel-event {
  display: block; color: var(--primary); font-size: 0.78em;
}
.sup-public-ingress {
  color: var(--text-muted); font-size: 14px; line-height: 1.6; margin: 0 0 26px;
}
.sup-public-card .sup-form-gruppe { margin-bottom: 16px; }
.sup-public-card .sup-form-gruppe label {
  font-size: 12px; font-weight: 600; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .04em;
}
.sup-pakrevd { color: var(--primary); }
.sup-public-card .sup-input,
.sup-public-card .sup-filter-sel,
.sup-public-card .sup-svar-tekst {
  width: 100%; box-sizing: border-box;
  padding: 11px 13px; font-size: 14px; border-radius: 10px;
  background: var(--bg); border: 1px solid var(--border); color: var(--text);
  font-family: inherit; line-height: 1.5;
}
.sup-public-card .sup-input:focus,
.sup-public-card .sup-filter-sel:focus,
.sup-public-card .sup-svar-tekst:focus {
  outline: none; border-color: var(--primary);
  box-shadow: 0 0 0 3px var(--primary-pill);
}
/* Etter basisreglene over (samme spesifisitet — rekkefølgen avgjør):
   16px hindrer at iOS auto-zoomer inn ved fokus i feltene på mobil. */
@media (max-width: 640px) {
  .sup-public-card .sup-input,
  .sup-public-card .sup-filter-sel,
  .sup-public-card .sup-svar-tekst { font-size: 16px; }
}

/* ── Seksjoner i påmeldingsskjemaet (<details>) ──────────────────────────────
   Skjemaet var 16 felt i én kolonne — 2 skjermhøyder, 1 255 px fra første felt
   til send-knappen. Tre trekkspill, første åpen. Summary er hele treffflaten,
   så den er høy nok til en tommel (48 px) uten et eget touch-target-triks. */
.mk-seksjon {
  border: 1px solid var(--border); border-radius: 12px;
  margin-bottom: 12px; background: var(--bg);
}
.mk-seksjon-tittel {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 16px; min-height: 48px; box-sizing: border-box;
  font-size: 15px; font-weight: 600; color: var(--text);
  cursor: pointer; list-style: none; border-radius: 12px;
}
/* Safari tegner sin egen trekant utenom ::marker */
.mk-seksjon-tittel::-webkit-details-marker { display: none; }
.mk-seksjon-tittel::after {
  content: ''; margin-left: auto;
  width: 8px; height: 8px; border-right: 2px solid var(--text-muted); border-bottom: 2px solid var(--text-muted);
  transform: rotate(45deg) translateY(-2px); transition: transform .18s ease;
}
.mk-seksjon[open] > .mk-seksjon-tittel::after { transform: rotate(-135deg) translateY(-2px); }
.mk-seksjon[open] > .mk-seksjon-tittel { border-bottom: 1px solid var(--border); border-radius: 12px 12px 0 0; }
.mk-seksjon-tittel:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.mk-seksjon-innhold { padding: 16px 16px 4px; }
/* Siste feltgruppe i en seksjon skal ikke doble luften mot kanten */
.mk-seksjon-innhold .sup-form-gruppe:last-child { margin-bottom: 12px; }
@media (prefers-reduced-motion: reduce) {
  .mk-seksjon-tittel::after { transition: none; }
}

/* Vaktvelgeren i det offentlige skjemaet. Dag for dag, første åpen — 40–50
   avkryssingsbokser i én kolonne er en vegg på telefon. */
.mk-vaktvelger { display: flex; flex-direction: column; gap: 6px; }
.mk-vaktdag { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.mk-vaktdag > summary { cursor: pointer; padding: 10px 12px; font-weight: 600;
  font-size: 14px; display: flex; justify-content: space-between; align-items: center; }
.mk-vaktdag > summary span { font-weight: 500; font-size: 12px; color: var(--text-muted); }
.mk-vaktdag-innhold { padding: 4px 12px 10px; display: flex; flex-direction: column; gap: 8px; }
.mk-vakt { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; }
.mk-vakt input { margin-top: 3px; flex: 0 0 auto; }
.mk-vakt-tekst { display: flex; flex-direction: column; gap: 2px; }
.mk-vakt-tekst small { font-size: 12px; color: var(--text-muted); }
.mk-vakt-prog { font-style: italic; }

/* Områdelista i vaktvelgeren: vaktønsker kan spenne flere vaktområder, og de
   andre områdene ligger kollapset under hovedområdet — «mobil først,
   progressiv avdekking». */
.mk-andre-omraader { margin-top: 12px; border-top: 1px solid var(--border); padding-top: 12px; }
.mk-andre-tittel { font-size: 13px; font-weight: 600; color: var(--text-muted); margin-bottom: 8px; }
.mk-omraade { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; margin-bottom: 6px; }
.mk-omraade > summary { cursor: pointer; padding: 10px 12px; font-weight: 600; font-size: 14px;
  display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.mk-omraade > summary::-webkit-details-marker { display: none; }
.mk-omraade > summary span { font-weight: 500; font-size: 12px; color: var(--text-muted); }
.mk-omraade > summary:focus-visible { outline: 2px solid var(--primary); outline-offset: -2px; }
.mk-omraade-innhold { padding: 4px 12px 10px; }
.mk-omraade--sperret { padding: 10px 12px; font-size: 14px; color: var(--text-muted); }
.mk-omraade--sperret small { font-size: 12px; }

/* Låst vaktområde (dyplenke ?team=). Ligger ØVERST i skjemaet, utenfor
   <details>-seksjonene — se _mkLaasOmraade for hvorfor. */
.mk-laast { border: 1px solid var(--border); border-radius: 8px; padding: 12px; margin-bottom: 12px; }
.mk-laast-tekst { display: flex; flex-direction: column; gap: 2px; }
.mk-laast-lbl { font-size: 12px; color: var(--text-muted); }
.mk-laast-tekst strong { font-size: 16px; }
.mk-laast-besk, .mk-laast-merknad { font-size: 13px; color: var(--text-muted); margin-top: 6px; }
.mk-laast-bytt { margin-top: 10px; background: none; border: none; padding: 0;
  font-size: 13px; color: var(--primary); text-decoration: underline; cursor: pointer; }
.mk-vakt--full .mk-vakt-tekst b { opacity: .75; }

.sup-public-feil {
  color: var(--primary-dark-adaptiv); font-size: 13px; margin-bottom: 12px;
  background: var(--primary-pill); border: 1px solid var(--border);
  border-radius: 9px; padding: 9px 12px;
}
.sup-public-send {
  width: 100%; padding: 13px; margin-top: 4px;
  background: var(--primary); color: #fff; border: none; border-radius: 11px;
  font-family: 'Bebas Neue', sans-serif; font-size: 19px; letter-spacing: .06em;
  cursor: pointer; transition: background .15s, transform .08s;
}
.sup-public-send:hover { background: var(--primary-dark); }
.sup-public-send:active { transform: scale(.99); }
.sup-public-send:disabled { opacity: .55; cursor: default; }
.sup-public-ok { text-align: center; padding: 12px 0 6px; }
.sup-public-ok-ikon {
  width: 64px; height: 64px; border-radius: 50%; margin: 0 auto 18px;
  display: flex; align-items: center; justify-content: center;
  background: var(--primary-pill); color: var(--primary);
}
.sup-public-ok-tittel {
  font-family: 'Bebas Neue', sans-serif; font-size: 30px; font-weight: 400;
  letter-spacing: .02em; color: var(--text); margin: 0 0 8px;
}
.sup-public-ok-tekst { color: var(--text-muted); font-size: 15px; margin: 0; line-height: 1.6; }
.sup-lenke { color: var(--accent); text-decoration: underline; }

