/* Blackhole Intelligence — professional.listings.no */
:root, :root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #050b16;
  --bg-side: #030811;
  --card: #0a1424;
  --card-2: #0d1a2e;
  --card-3: #101f36;
  --border: #16263e;
  --border-2: #1d3050;
  --text: #e9eff8;
  --muted: #8fa3bd;
  --dim: #5b7089;
  --accent: #2dd4bf;
  --accent-2: #3b82f6;
  --accent-dim: rgba(45, 212, 191, .12);
  --accent2-dim: rgba(59, 130, 246, .14);
  --hole: #071018;
  --pos: #34d399;
  --pos-dim: rgba(52, 211, 153, .13);
  --neg: #f87171;
  --neg-dim: rgba(248, 113, 113, .12);
  --warn: #fbbf24;
  --warn-dim: rgba(251, 191, 36, .13);
  --violet: #a78bfa;
  --violet-dim: rgba(167, 139, 250, .14);
  /* validated categorical series (dark surface) */
  --s1: #0d9488; --s2: #3b82f6; --s3: #d97706;
  --chart-line: #2dd4bf;
  --grid-line: rgba(143, 163, 189, .13);
  --shadow: 0 10px 30px rgba(0, 0, 0, .35);
  --ring-track: #17293f;
  --input: #0d1a2e;
  --hover: rgba(143, 163, 189, .07);
}
:root[data-theme="light"] {
  color-scheme: light;
  --bg: #f2f4f9;
  --bg-side: #ffffff;
  --card: #ffffff;
  --card-2: #f6f8fc;
  --card-3: #eef1f8;
  --border: #e3e8f1;
  --border-2: #d4dcea;
  --text: #101c30;
  --muted: #5a6b84;
  --dim: #8794a9;
  --accent: #0d9488;
  --accent-2: #2563eb;
  --accent-dim: rgba(13, 148, 136, .1);
  --accent2-dim: rgba(37, 99, 235, .09);
  --hole: #ffffff;
  --pos: #059669;
  --pos-dim: rgba(5, 150, 105, .1);
  --neg: #dc2626;
  --neg-dim: rgba(220, 38, 38, .08);
  --warn: #b45309;
  --warn-dim: rgba(180, 83, 9, .12);
  --violet: #7c3aed;
  --violet-dim: rgba(124, 58, 237, .09);
  /* validated categorical series (light surface) */
  --s1: #0d9488; --s2: #2563eb; --s3: #b45309;
  --chart-line: #0d9488;
  --grid-line: rgba(90, 107, 132, .16);
  --shadow: 0 8px 24px rgba(23, 43, 77, .08);
  --ring-track: #e6ebf3;
  --input: #f4f6fb;
  --hover: rgba(90, 107, 132, .07);
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: var(--bg); color: var(--text);
  font: 14px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; padding: 0; }
input, select { font: inherit; color: var(--text); }
strong { font-weight: 600; }
.num, td.num, .stat-value, .kpi-value { font-variant-numeric: tabular-nums; }
.ic { flex: none; }

/* ---------- shell ---------- */
.shell { display: flex; min-height: 100vh; }
.sidebar {
  width: 228px; flex: none; background: var(--bg-side);
  border-right: 1px solid var(--border);
  display: flex; flex-direction: column;
  position: sticky; top: 0; height: 100vh; padding: 18px 12px 14px;
}
.brand { display: flex; align-items: center; gap: 10px; padding: 2px 8px 18px; }
.brand-name { font-size: 16.5px; font-weight: 700; letter-spacing: -.01em; line-height: 1.15; }
.brand-name em { display: block; font-style: normal; font-weight: 500; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); }
.nav { display: flex; flex-direction: column; gap: 2px; }
.nav-item {
  display: flex; align-items: center; gap: 11px; padding: 9px 11px;
  border-radius: 9px; color: var(--muted); font-weight: 500; position: relative;
}
.nav-item:hover { background: var(--hover); color: var(--text); }
.nav-item.active { background: var(--accent-dim); color: var(--accent); }
.nav-item.active::before { content: ""; position: absolute; left: -12px; top: 8px; bottom: 8px; width: 3px; border-radius: 0 3px 3px 0; background: var(--accent); }
.nav-badge { margin-left: auto; background: var(--accent); color: var(--hole); font-size: 11px; font-weight: 700; border-radius: 99px; padding: 1px 7px; }
.sidebar-foot { margin-top: auto; display: flex; flex-direction: column; gap: 8px; }
.statuscard { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 9px 11px; font-size: 12.5px; }
.statuscard-row { display: flex; align-items: center; gap: 7px; justify-content: flex-start; }
.statuscard-row .ic { margin-left: auto; color: var(--dim); }
.muted-sm { color: var(--muted); font-size: 11.5px; }
.live-dot { width: 8px; height: 8px; border-radius: 99px; background: var(--pos); box-shadow: 0 0 0 3px var(--pos-dim); }

.main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.topbar {
  display: flex; align-items: center; gap: 14px; padding: 14px 22px;
  position: sticky; top: 0; z-index: 500;
  background: color-mix(in srgb, var(--bg) 82%, transparent);
  backdrop-filter: blur(10px); border-bottom: 1px solid var(--border);
}
.searchbar {
  flex: 1; max-width: 860px; display: flex; align-items: center; gap: 10px;
  background: var(--input); border: 1px solid var(--border); border-radius: 12px;
  padding: 9px 14px; color: var(--dim);
}
.searchbar input { flex: 1; background: none; border: 0; outline: 0; color: var(--text); }
.searchbar input::placeholder { color: var(--dim); }
.searchbar kbd { font: 11px/1 inherit; color: var(--dim); border: 1px solid var(--border-2); border-radius: 5px; padding: 3px 6px; }
.searchbar:focus-within { border-color: var(--accent); }
.topbar-actions { display: flex; align-items: center; gap: 7px; margin-left: auto; }
.iconbtn {
  position: relative; display: grid; place-items: center; width: 38px; height: 38px;
  border-radius: 10px; color: var(--muted); border: 1px solid transparent;
}
.iconbtn:hover { background: var(--hover); color: var(--text); }
.dotbadge {
  position: absolute; top: 3px; right: 3px; background: var(--accent-2); color: #fff;
  font-size: 10px; font-weight: 700; border-radius: 99px; min-width: 15px; height: 15px;
  display: grid; place-items: center; padding: 0 3px;
}
.avatar {
  display: flex; align-items: center; gap: 6px; height: 38px; padding: 4px 8px 4px 4px;
  border-radius: 10px;
}
.avatar:hover { background: var(--hover); }
.avatar-badge {
  width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
  color: #04211d; font-size: 12px; font-weight: 700;
}
.avatar-chev { color: var(--dim); display: grid; }

.content { padding: 20px 22px 40px; max-width: 1560px; width: 100%; margin: 0 auto; }

/* ---------- generic ---------- */
.grid { display: grid; gap: 14px; }
.dash-col, .kpi, .marked-grid > *, .sok-grid > *, .dash-grid > *, .detail-grid > *, .selg-grid > *, .two-col > * { min-width: 0; }
.card { background: var(--card); border: 1px solid var(--border); border-radius: 14px; padding: 16px; min-width: 0; }
.card-h { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.card-title { font-size: 15px; font-weight: 650; display: flex; align-items: center; gap: 7px; }
.card-title .ic { color: var(--dim); }
.card-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12.5px; }
.card-link { color: var(--accent-2); font-weight: 550; font-size: 13px; display: inline-flex; align-items: center; gap: 5px; }
.card-link:hover { text-decoration: underline; }
.muted { color: var(--muted); }
.dim { color: var(--dim); }
.small { font-size: 12.5px; }
.pos { color: var(--pos); } .neg { color: var(--neg); } .warn { color: var(--warn); }
.pagehead { display: flex; align-items: center; gap: 14px; margin: 2px 0 16px; flex-wrap: wrap; }
.pagehead h1 { font-size: 22px; font-weight: 700; letter-spacing: -.015em; margin: 0; }
.pagehead .sub { color: var(--muted); }
.pagehead .actions { margin-left: auto; display: flex; gap: 9px; flex-wrap: wrap; }

.btn {
  display: inline-flex; align-items: center; gap: 7px; padding: 9px 15px;
  border-radius: 10px; font-weight: 600; font-size: 13.5px;
  border: 1px solid var(--border-2); color: var(--text); background: var(--card);
}
.btn:hover { border-color: var(--accent); }
.btn-primary { background: linear-gradient(120deg, var(--accent-2), color-mix(in srgb, var(--accent-2) 60%, var(--accent))); border: 0; color: #fff; }
.btn-primary:hover { filter: brightness(1.08); }
.btn-accent { background: var(--accent); color: #04211d; border: 0; }
.btn-sm { padding: 6px 11px; font-size: 12.5px; border-radius: 8px; }

.badge {
  display: inline-flex; align-items: center; gap: 5px; padding: 3px 9px;
  font-size: 11.5px; font-weight: 650; border-radius: 99px; letter-spacing: .02em;
}
.badge-pos { background: var(--pos-dim); color: var(--pos); }
.badge-neg { background: var(--neg-dim); color: var(--neg); }
.badge-warn { background: var(--warn-dim); color: var(--warn); }
.badge-accent { background: var(--accent-dim); color: var(--accent); }
.badge-blue { background: var(--accent2-dim); color: var(--accent-2); }
.badge-violet { background: var(--violet-dim); color: var(--violet); }
.badge-muted { background: var(--hover); color: var(--muted); }

.chip {
  display: inline-flex; align-items: center; gap: 6px; padding: 7px 13px;
  border: 1px solid var(--border-2); border-radius: 99px; font-size: 12.5px;
  color: var(--muted); font-weight: 550; background: var(--card);
}
.chip:hover, .chip.active { border-color: var(--accent); color: var(--accent); background: var(--accent-dim); }

/* ---------- stat tiles ---------- */
.stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.stat { background: var(--card-2); border: 1px solid var(--border); border-radius: 12px; padding: 13px 14px; }
.stat-top { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12.5px; font-weight: 550; }
.stat-ico { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 8px; background: var(--accent-dim); color: var(--accent); }
.stat-ico.blue { background: var(--accent2-dim); color: var(--accent-2); }
.stat-ico.violet { background: var(--violet-dim); color: var(--violet); }
.stat-ico.warn { background: var(--warn-dim); color: var(--warn); }
.stat-value { font-size: 25px; font-weight: 700; letter-spacing: -.02em; margin: 7px 0 3px; }
.stat-value .unit { font-size: 14px; font-weight: 550; color: var(--muted); margin-left: 4px; }
.stat-delta { font-size: 12.5px; font-weight: 550; display: flex; align-items: center; gap: 5px; }

/* ---------- KPI row (marked) ---------- */
.kpis { display: grid; grid-template-columns: repeat(6, 1fr); gap: 12px; }
.kpi { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 13px 14px; }
.kpi-label { display: flex; gap: 7px; align-items: center; color: var(--muted); font-size: 11px; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; }
.kpi-label .ic { color: var(--accent); }
.kpi-value { font-size: 21px; font-weight: 700; margin: 6px 0 1px; letter-spacing: -.01em; }
.kpi-sub { color: var(--dim); font-size: 12px; display: flex; align-items: center; gap: 8px; }
.kpi-sub svg.spark { margin-left: auto; }

/* ---------- tables ---------- */
.tbl { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.tbl th {
  text-align: left; font-size: 11px; font-weight: 650; letter-spacing: .07em;
  text-transform: uppercase; color: var(--dim); padding: 8px 10px; border-bottom: 1px solid var(--border);
  white-space: nowrap;
}
.tbl td { padding: 11px 10px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.tbl tr:last-child td { border-bottom: 0; }
.tbl tbody tr { transition: background .12s; }
.tbl tbody tr:hover { background: var(--hover); }
.tbl .num { text-align: right; white-space: nowrap; }
.tbl-scroll { overflow-x: auto; }
.prop-cell { display: flex; align-items: center; gap: 11px; min-width: 210px; }
.prop-thumb { width: 52px; height: 40px; border-radius: 8px; object-fit: cover; flex: none; border: 1px solid var(--border-2); }
.prop-cell .adr { font-weight: 600; white-space: nowrap; }
.prop-cell .sted { color: var(--dim); font-size: 12px; }
.rowlink { color: var(--dim); }
tr:hover .rowlink { color: var(--accent-2); }

/* score ring */
.ring { position: relative; width: 42px; height: 42px; flex: none; }
.ring svg { transform: rotate(-90deg); }
.ring .track { stroke: var(--ring-track); }
.ring .val { stroke: var(--pos); stroke-linecap: round; }
.ring.mid .val { stroke: var(--warn); }
.ring.lo .val { stroke: var(--dim); }
.ring b { position: absolute; inset: 0; display: grid; place-items: center; font-size: 12.5px; font-weight: 700; }
.ring.lg { width: 56px; height: 56px; } .ring.lg b { font-size: 15px; }

/* potensial dots */
.dots5 { display: inline-flex; gap: 3px; }
.dots5 i { width: 9px; height: 9px; border-radius: 2.5px; background: var(--ring-track); }
.dots5 i.on { background: var(--pos); }

/* ---------- map ---------- */
.mapcard { padding: 0; overflow: hidden; position: relative; }
.map { width: 100%; height: 100%; min-height: 380px; background: var(--card-2); z-index: 1; }
.map-topleft { position: absolute; z-index: 400; top: 12px; left: 12px; display: flex; gap: 6px; }
.map-topright { position: absolute; z-index: 400; top: 12px; right: 12px; display: flex; gap: 6px; }
.seg { display: inline-flex; background: color-mix(in srgb, var(--card) 88%, transparent); backdrop-filter: blur(6px); border: 1px solid var(--border-2); border-radius: 9px; padding: 3px; }
.seg button { padding: 5px 12px; border-radius: 7px; font-size: 12.5px; font-weight: 600; color: var(--muted); }
.seg button.active { background: var(--accent-2); color: #fff; }
.leaflet-container { font: inherit; }
.leaflet-control-attribution { background: color-mix(in srgb, var(--card) 75%, transparent) !important; color: var(--dim) !important; font-size: 9.5px !important; }
.leaflet-control-attribution a { color: var(--muted) !important; }
.price-pin {
  background: var(--card); border: 1px solid var(--border-2); color: var(--text);
  border-radius: 99px; padding: 4px 10px 4px 6px; font-size: 12px; font-weight: 700;
  display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
  box-shadow: 0 4px 14px rgba(0,0,0,.35); transform: translate(-50%, -100%);
}
.price-pin::after { content: ""; position: absolute; left: 50%; bottom: -5px; transform: translateX(-50%); border: 5px solid transparent; border-top-color: var(--border-2); border-bottom: 0; }
.price-pin .dot { width: 17px; height: 17px; border-radius: 99px; background: var(--pos); color: #04211d; display: grid; place-items: center; }
.price-pin .dot svg { width: 11px; height: 11px; }
.price-pin.neg .dot { background: var(--neg); }
.num-pin {
  width: 30px; height: 30px; border-radius: 99px; display: grid; place-items: center;
  background: var(--pos); color: #04211d; font-weight: 800; font-size: 12.5px;
  border: 2px solid color-mix(in srgb, #fff 75%, var(--pos)); box-shadow: 0 3px 10px rgba(0,0,0,.35);
  transform: translate(-50%, -50%);
}
.num-pin.mid { background: var(--warn); border-color: color-mix(in srgb, #fff 75%, var(--warn)); }
.num-pin.lo { background: var(--dim); border-color: color-mix(in srgb, #fff 70%, var(--dim)); color: #fff; }

/* ---------- charts ---------- */
.chart { position: relative; width: 100%; }
.chart svg { display: block; width: 100%; height: auto; }
.chart-tip {
  position: absolute; pointer-events: none; z-index: 50; display: none;
  background: var(--card-3); border: 1px solid var(--border-2); border-radius: 9px;
  padding: 8px 11px; font-size: 12px; box-shadow: var(--shadow); min-width: 120px;
}
.chart-tip .t { color: var(--muted); margin-bottom: 4px; font-size: 11px; }
.chart-tip .row { display: flex; align-items: center; gap: 7px; font-weight: 600; }
.chart-tip .sw { width: 8px; height: 8px; border-radius: 3px; }
.legend { display: flex; gap: 14px; align-items: center; font-size: 12.5px; color: var(--muted); flex-wrap: wrap; }
.legend .li { display: inline-flex; align-items: center; gap: 6px; font-weight: 550; cursor: pointer; }
.legend .li .sw { width: 9px; height: 9px; border-radius: 3px; }
.legend .li.off { opacity: .38; }
.ranges { display: inline-flex; gap: 4px; }
.ranges button { padding: 5px 11px; border-radius: 8px; font-size: 12px; font-weight: 600; color: var(--muted); border: 1px solid transparent; }
.ranges button:hover { color: var(--text); }
.ranges button.active { background: var(--accent-dim); color: var(--accent); border-color: color-mix(in srgb, var(--accent) 35%, transparent); }

/* waterfall */
.wf-row { display: grid; grid-template-columns: 130px 1fr; align-items: center; gap: 10px; padding: 4px 0; font-size: 13px; }
.wf-name { color: var(--muted); }
.wf-meta { display: flex; gap: 10px; font-variant-numeric: tabular-nums; font-weight: 600; }

/* ---------- alerts ---------- */
.alist { display: flex; flex-direction: column; }
.aitem { display: flex; gap: 11px; padding: 12px 4px; border-bottom: 1px solid var(--border); align-items: flex-start; }
.aitem:last-child { border-bottom: 0; }
.aitem:hover { background: var(--hover); border-radius: 10px; }
.aico { width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center; flex: none; }
.aico.bolig { background: var(--accent2-dim); color: var(--accent-2); }
.aico.handel { background: var(--accent-dim); color: var(--accent); }
.aico.prisfall { background: var(--warn-dim); color: var(--warn); }
.aico.utvikling { background: var(--violet-dim); color: var(--violet); }
.aico.kjoper { background: var(--pos-dim); color: var(--pos); }
.aico.rente { background: var(--neg-dim); color: var(--neg); }
.aico.dokument { background: var(--accent2-dim); color: var(--accent-2); }
.aico.visning { background: var(--accent-dim); color: var(--accent); }
.abody { flex: 1; min-width: 0; }
.atitle { font-weight: 600; font-size: 13.5px; display: flex; align-items: center; gap: 7px; }
.atitle .unread { width: 7px; height: 7px; border-radius: 99px; background: var(--accent-2); flex: none; margin-left: auto; }
.atime { color: var(--dim); font-size: 11.5px; margin: 1px 0 3px; }
.adetail { color: var(--muted); font-size: 12.5px; }
.aitem .chev { color: var(--dim); align-self: center; }

/* ---------- insight ---------- */
.insight { display: flex; gap: 11px; padding: 10px 0; border-bottom: 1px solid var(--border); align-items: flex-start; }
.insight:last-child { border-bottom: 0; padding-bottom: 2px; }
.insight .aico { width: 32px; height: 32px; }
.insight b { display: block; font-size: 13.5px; }
.insight span { color: var(--muted); font-size: 12.5px; }
.ai-banner {
  display: flex; align-items: center; gap: 13px; padding: 14px 16px;
  border: 1px solid color-mix(in srgb, var(--accent-2) 35%, var(--border));
  background: linear-gradient(100deg, var(--accent2-dim), transparent 55%), var(--card);
  border-radius: 14px; margin-bottom: 14px;
}
.ai-banner .aico { background: var(--accent2-dim); color: var(--accent-2); }
.ai-banner b { font-size: 14px; }
.ai-banner p { margin: 1px 0 0; color: var(--muted); font-size: 12.5px; }
.ai-banner .btn { margin-left: auto; flex: none; }

/* ---------- filters (sok) ---------- */
.filters { display: flex; flex-direction: column; gap: 15px; }
.f-group label { display: flex; justify-content: space-between; font-size: 12.5px; font-weight: 600; color: var(--muted); margin-bottom: 7px; }
.f-group label output { color: var(--text); font-variant-numeric: tabular-nums; }
.f-group input[type=range] { width: 100%; accent-color: var(--accent-2); }
.f-group select {
  width: 100%; background: var(--input); border: 1px solid var(--border-2); border-radius: 9px;
  padding: 8px 10px; outline: none;
}
.f-ends { display: flex; justify-content: space-between; color: var(--dim); font-size: 11px; margin-top: 3px; }

/* heat legend */
.heatbar { height: 10px; border-radius: 99px; background: linear-gradient(90deg, #16324c, #0d9488, #d9a406, #e05c3a); }
.heatmini { border-radius: 12px; overflow: hidden; position: relative; height: 150px; background: radial-gradient(60px 44px at 68% 34%, rgba(224, 122, 58, .75), transparent 70%), radial-gradient(50px 40px at 42% 55%, rgba(217, 164, 6, .6), transparent 70%), radial-gradient(70px 54px at 78% 66%, rgba(224, 92, 58, .55), transparent 70%), radial-gradient(90px 70px at 30% 30%, rgba(13, 148, 136, .35), transparent 70%), var(--card-3); border: 1px solid var(--border); }
.heatmini span { position: absolute; font-size: 10.5px; color: color-mix(in srgb, var(--text) 80%, transparent); font-weight: 600; text-shadow: 0 1px 4px rgba(0,0,0,.4); }

/* ---------- action list (handlingsforslag) ---------- */
.actlist { display: flex; flex-direction: column; }
.actitem { display: flex; gap: 11px; align-items: flex-start; padding: 11px 2px; border-bottom: 1px solid var(--border); }
.actitem:last-child { border-bottom: 0; }
.actitem .aico { background: var(--accent2-dim); color: var(--accent-2); }
.actitem b { font-size: 13.5px; display: flex; align-items: center; gap: 7px; }
.actitem span { color: var(--muted); font-size: 12.3px; }
.gr-dot { width: 7px; height: 7px; border-radius: 99px; background: var(--pos); }

/* ---------- summary rows ---------- */
.kv { display: flex; justify-content: space-between; gap: 10px; padding: 7px 0; font-size: 13px; border-bottom: 1px dashed var(--border); }
.kv:last-child { border-bottom: 0; }
.kv span { color: var(--muted); } .kv b { font-variant-numeric: tabular-nums; text-align: right; }

/* ---------- property detail ---------- */
.hero-img { width: 100%; aspect-ratio: 3/2; object-fit: cover; border-radius: 12px; border: 1px solid var(--border-2); display: block; }
.imgtag { position: absolute; top: 10px; left: 10px; background: rgba(5, 12, 22, .72); color: #dfe8f4; font-size: 11.5px; font-weight: 600; border-radius: 7px; padding: 3px 9px; backdrop-filter: blur(4px); }
.facts { display: grid; gap: 13px; }
.fact { display: flex; gap: 11px; align-items: center; }
.fact .aico { background: var(--accent-dim); color: var(--accent); width: 38px; height: 38px; }
.fact b { font-size: 16px; display: block; line-height: 1.2; }
.fact span { color: var(--muted); font-size: 12px; }
.valuebig { font-size: 31px; font-weight: 750; letter-spacing: -.02em; background: linear-gradient(100deg, var(--accent), var(--accent-2)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.conf-dot { width: 9px; height: 9px; border-radius: 99px; background: var(--warn); display: inline-block; margin-right: 5px; }
.ai-conclusion { border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--border)); background: linear-gradient(160deg, var(--accent-dim), transparent 60%), var(--card); }
.ai-conclusion .big { font-size: 23px; font-weight: 750; color: var(--accent); letter-spacing: -.01em; margin: 4px 0 8px; }
.risk { display: flex; gap: 11px; padding: 10px 0; border-bottom: 1px solid var(--border); }
.risk:last-child { border-bottom: 0; }
.risk .aico.middels { background: var(--warn-dim); color: var(--warn); }
.risk .aico.lav { background: var(--pos-dim); color: var(--pos); }
.risk .aico.info { background: var(--violet-dim); color: var(--violet); }
.risk b { font-size: 13.5px; display: block; }
.risk span { color: var(--muted); font-size: 12.5px; }
.doc { display: flex; align-items: center; gap: 11px; padding: 10px 2px; border-bottom: 1px solid var(--border); font-size: 13.5px; }
.doc:last-child { border-bottom: 0; }
.doc .aico { background: var(--accent2-dim); color: var(--accent-2); width: 32px; height: 32px; }
.doc .meta { color: var(--dim); font-size: 12px; }
.doc .right { margin-left: auto; display: flex; gap: 4px; color: var(--dim); }
.doc .right button:hover { color: var(--text); }
.timeline { position: relative; padding-left: 20px; }
.timeline::before { content: ""; position: absolute; left: 6px; top: 8px; bottom: 8px; width: 2px; background: var(--border-2); border-radius: 2px; }
.tl-item { position: relative; padding: 8px 0 8px 6px; }
.tl-item::before { content: ""; position: absolute; left: -18.5px; top: 14px; width: 9px; height: 9px; border-radius: 99px; background: var(--accent); box-shadow: 0 0 0 3px var(--accent-dim); }
.tl-item b { font-size: 13px; display: block; }
.tl-item span { color: var(--dim); font-size: 12px; }
.tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--border); margin-bottom: 10px; }
.tabs button { padding: 9px 13px; color: var(--muted); font-weight: 600; font-size: 13px; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.tabs button.active { color: var(--accent); border-color: var(--accent); }

/* ---------- selg (wizard) ---------- */
.stepper { display: flex; align-items: center; gap: 0; margin: 4px 0 18px; flex-wrap: wrap; row-gap: 10px; }
.step { display: flex; align-items: center; gap: 9px; color: var(--dim); font-size: 13px; font-weight: 550; }
.step .n { width: 26px; height: 26px; border-radius: 99px; border: 1.5px solid var(--border-2); display: grid; place-items: center; font-size: 12px; font-weight: 700; flex: none; }
.step.done .n { background: var(--pos-dim); border-color: var(--pos); color: var(--pos); }
.step.done { color: var(--muted); }
.step.current { color: var(--text); }
.step.current .n { background: var(--accent-2); border-color: var(--accent-2); color: #fff; box-shadow: 0 0 0 4px var(--accent2-dim); }
.step-line { flex: 1; min-width: 18px; height: 1.5px; background: var(--border-2); margin: 0 8px; }
.task { display: flex; gap: 11px; align-items: flex-start; padding: 11px; border: 1px solid var(--border); border-radius: 11px; margin-bottom: 9px; background: var(--card-2); }
.task.aktiv { border-color: var(--accent-2); box-shadow: 0 0 0 3px var(--accent2-dim); }
.task .st { width: 22px; height: 22px; border-radius: 99px; flex: none; display: grid; place-items: center; margin-top: 1px; }
.task .st.ferdig { background: var(--pos); color: #04211d; }
.task .st.aktiv { border: 6px solid var(--accent-2); background: var(--card); }
.task .st.venter { border: 1.5px solid var(--border-2); color: var(--dim); font-size: 11px; font-weight: 700; }
.task b { font-size: 13.5px; display: block; }
.task span { color: var(--muted); font-size: 12.3px; }
.task .btn { margin-left: auto; flex: none; }
.progress { height: 7px; border-radius: 99px; background: var(--ring-track); overflow: hidden; flex: 1; }
.progress i { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--accent), var(--accent-2)); }
.docstat { display: flex; align-items: center; gap: 9px; padding: 7px 0; font-size: 13px; border-bottom: 1px dashed var(--border); }
.docstat:last-child { border-bottom: 0; }
.docstat .lbl { flex: 1; }
.docstat .val { color: var(--muted); font-size: 12px; }
.st-ok { color: var(--pos); } .st-wait { color: var(--dim); } .st-mid { color: var(--warn); }
.buyercard { display: flex; align-items: center; gap: 11px; padding: 10px 0; border-bottom: 1px solid var(--border); }
.buyercard:last-child { border-bottom: 0; }
.pavatar { width: 38px; height: 38px; border-radius: 99px; flex: none; display: grid; place-items: center; font-weight: 700; font-size: 13px; color: #fff; }
.buyercard b { display: block; font-size: 13.5px; }
.buyercard span { color: var(--muted); font-size: 12px; }
.buyercard .ring { margin-left: auto; }
.qitem { padding: 9px 0; border-bottom: 1px dashed var(--border); font-size: 13px; display: flex; gap: 8px; align-items: baseline; }
.qitem:last-child { border-bottom: 0; }
.qitem .t { margin-left: auto; color: var(--dim); font-size: 11.5px; white-space: nowrap; }
.assist { border: 1px solid color-mix(in srgb, var(--violet) 35%, var(--border)); background: linear-gradient(160deg, var(--violet-dim), transparent 55%), var(--card); }
.assist .card-title .ic { color: var(--violet); }
.assist-step { display: flex; gap: 10px; padding: 9px 0; border-bottom: 1px dashed var(--border); font-size: 13px; }
.assist-step:last-child { border-bottom: 0; }
.assist-step .n { width: 21px; height: 21px; border-radius: 99px; background: var(--violet-dim); color: var(--violet); font-size: 11.5px; font-weight: 700; display: grid; place-items: center; flex: none; margin-top: 1px; }
.assist-step a { color: var(--accent-2); font-weight: 600; font-size: 12.5px; }
.askbox { display: flex; gap: 8px; margin-top: 11px; }
.askbox input { flex: 1; background: var(--input); border: 1px solid var(--border-2); border-radius: 9px; padding: 9px 12px; outline: none; }
.askbox input:focus { border-color: var(--violet); }
.askbox button { width: 40px; border-radius: 9px; background: var(--violet); color: #fff; display: grid; place-items: center; }

/* annonse preview */
.ad-preview img, .ad-hero { width: 100%; aspect-ratio: 16/9.5; object-fit: cover; border-radius: 11px; border: 1px solid var(--border-2); }
.ad-title { font-size: 17px; font-weight: 700; margin: 12px 0 2px; }
.ad-facts { display: flex; gap: 20px; margin: 10px 0 4px; flex-wrap: wrap; }
.ad-facts b { font-size: 16px; display: block; }
.ad-facts span { color: var(--dim); font-size: 11.5px; }
.tagrow { display: flex; gap: 7px; flex-wrap: wrap; margin-top: 10px; }
.tagrow .badge { background: var(--hover); color: var(--muted); font-weight: 550; }

/* ---------- eiendommer grid ---------- */
.propgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(255px, 1fr)); gap: 14px; }
.propcard { background: var(--card); border: 1px solid var(--border); border-radius: 14px; overflow: hidden; transition: transform .14s, border-color .14s; position: relative; display: block; }
.propcard:hover { transform: translateY(-2px); border-color: var(--border-2); }
.propcard img { width: 100%; aspect-ratio: 16/9.6; object-fit: cover; display: block; }
.propcard .pc-body { padding: 12px 13px 13px; }
.propcard .pc-price { font-size: 16.5px; font-weight: 700; }
.propcard .pc-adr { font-weight: 600; font-size: 13.5px; margin-top: 6px; }
.propcard .pc-meta { color: var(--dim); font-size: 12px; margin-top: 1px; }
.propcard .pc-badges { position: absolute; top: 10px; left: 10px; display: flex; gap: 6px; }
.propcard .pc-score { position: absolute; top: 10px; right: 10px; }
.pc-row { display: flex; align-items: center; justify-content: space-between; margin-top: 9px; padding-top: 9px; border-top: 1px dashed var(--border); font-size: 12.3px; color: var(--muted); }
/* AVM valuation card header (no fake photo — real SSB kr/m²) */
.propcard.avm .pc-avm-head { display: flex; align-items: flex-end; justify-content: space-between; padding: 14px 14px 12px; background: linear-gradient(135deg, var(--accent-dim), transparent), var(--card-2, rgba(127,127,127,.05)); border-bottom: 1px solid var(--border); }
.pc-avm-kvm { font-size: 21px; font-weight: 800; letter-spacing: -.01em; }
.pc-avm-kvm span { font-size: 12px; font-weight: 600; color: var(--muted); }
.pc-avm-src { font-size: 10.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--accent); background: var(--accent-dim); padding: 3px 8px; border-radius: 99px; }

/* ---------- nav sections ---------- */
.nav-sec {
  font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--dim); padding: 13px 11px 4px;
}
.nav { overflow-y: auto; scrollbar-width: thin; }

/* ---------- ticker ---------- */
.ticker {
  overflow: hidden; border-bottom: 1px solid var(--border); background: var(--bg-side);
  font-size: 11.5px; font-weight: 650; letter-spacing: .04em; white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.ticker-track { display: inline-flex; gap: 34px; padding: 6px 0; animation: tickmove 40s linear infinite; will-change: transform; }
.ticker:hover .ticker-track { animation-play-state: paused; }
@keyframes tickmove { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.tick { display: inline-flex; gap: 8px; align-items: baseline; }
.tick-name { color: var(--dim); }

/* ---------- command palette ---------- */
.palette { position: fixed; inset: 0; z-index: 2000; }
.palette-back { position: absolute; inset: 0; background: rgba(2, 8, 18, .62); backdrop-filter: blur(3px); }
.palette-box {
  position: relative; width: min(640px, 92vw); margin: 12vh auto 0;
  background: var(--card); border: 1px solid var(--border-2); border-radius: 16px;
  box-shadow: 0 24px 70px rgba(0,0,0,.5); overflow: hidden;
}
.palette-input { display: flex; align-items: center; gap: 11px; padding: 15px 17px; border-bottom: 1px solid var(--border); color: var(--dim); }
.palette-input input { flex: 1; background: none; border: 0; outline: 0; color: var(--text); font-size: 15.5px; }
.palette-input kbd { font: 10.5px/1 inherit; color: var(--dim); border: 1px solid var(--border-2); border-radius: 5px; padding: 3px 6px; }
.palette-results { max-height: 46vh; overflow-y: auto; padding: 7px; }
.palette-sec { font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--dim); padding: 9px 11px 4px; }
.palette-item {
  display: flex; align-items: center; gap: 11px; padding: 9px 11px; border-radius: 9px;
  color: var(--text); font-size: 14px; cursor: pointer;
}
.palette-item .ic { color: var(--dim); }
.palette-item .meta { margin-left: auto; color: var(--dim); font-size: 12px; font-variant-numeric: tabular-nums; }
.palette-item.sel, .palette-item:hover { background: var(--accent-dim); }
.palette-item.sel .ic { color: var(--accent); }
.palette-empty { padding: 22px; text-align: center; color: var(--dim); font-size: 13.5px; }
.cmd-kode {
  display: inline-block; min-width: 52px; text-align: center;
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 11.5px; font-weight: 700; letter-spacing: .06em;
  background: var(--warn-dim); color: var(--warn);
  border: 1px solid color-mix(in srgb, var(--warn) 30%, transparent);
  border-radius: 6px; padding: 3px 8px;
}

/* ---------- chat ---------- */
.chat-grid { display: grid; grid-template-columns: 290px 1fr 270px; gap: 14px; align-items: start; }
.chat-grid > * { min-width: 0; }
.chat-list { padding: 8px; display: flex; flex-direction: column; gap: 2px; }
.chat-item { display: flex; align-items: center; gap: 11px; padding: 11px; border-radius: 11px; }
.chat-item:hover { background: var(--hover); }
.chat-item.active { background: var(--accent-dim); }
.chat-item-body { flex: 1; min-width: 0; }
.chat-item-body b { display: block; font-size: 13.5px; }
.chat-item-body .small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-win { display: flex; flex-direction: column; min-height: 560px; padding: 0; }
.chat-head { display: flex; align-items: center; gap: 11px; padding: 14px 16px; border-bottom: 1px solid var(--border); }
.chat-msgs { flex: 1; overflow-y: auto; padding: 18px 16px; display: flex; flex-direction: column; gap: 13px; }
.msg { max-width: 78%; }
.msg.me { align-self: flex-end; text-align: right; }
.msg-bubble {
  display: inline-block; text-align: left; background: var(--card-3); border: 1px solid var(--border);
  padding: 9px 13px; border-radius: 13px 13px 13px 4px; font-size: 13.5px; line-height: 1.45;
}
.msg.me .msg-bubble { background: var(--accent2-dim); border-color: color-mix(in srgb, var(--accent-2) 30%, var(--border)); border-radius: 13px 13px 4px 13px; }
.msg-time { color: var(--dim); font-size: 10.5px; margin-top: 3px; }
.chat-send { display: flex; gap: 9px; padding: 13px 14px; border-top: 1px solid var(--border); }
.chat-send input[type=text] { flex: 1; background: var(--input); border: 1px solid var(--border-2); border-radius: 11px; padding: 11px 13px; outline: 0; }
.chat-send input[type=text]:focus { border-color: var(--accent); }
.chat-send button { width: 46px; border-radius: 11px; background: var(--accent-2); color: #fff; display: grid; place-items: center; }
.chat-side { position: sticky; top: 110px; }
.modelpick { display: inline-flex; gap: 5px; flex-wrap: wrap; }
.modelchip {
  display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px;
  border: 1px solid var(--border-2); border-radius: 99px; font-size: 12px; font-weight: 600;
  color: var(--muted); background: var(--card);
}
.modelchip:hover:not(.off) { border-color: var(--accent); color: var(--text); }
.modelchip.active { background: var(--accent-dim); color: var(--accent); border-color: color-mix(in srgb, var(--accent) 40%, transparent); }
.modelchip.off { opacity: .45; cursor: not-allowed; }
.modeldot { width: 8px; height: 8px; border-radius: 99px; flex: none; }
.modelcaret { display: inline-grid; color: var(--dim); margin-left: 1px; }
.modelwrap { position: relative; display: inline-flex; }
.modelwrap.off { opacity: .45; }
.modelwrap.off .modelchip { cursor: not-allowed; }
.modelmenu {
  position: absolute; top: calc(100% + 6px); right: 0; z-index: 60;
  min-width: 190px; background: var(--card); border: 1px solid var(--border-2);
  border-radius: 11px; box-shadow: var(--shadow); padding: 6px; display: none;
}
.modelwrap.show .modelmenu { display: block; }
.modelmenu-hd { font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--dim); padding: 5px 9px 3px; }
.modelopt {
  display: flex; align-items: center; gap: 7px; width: 100%; padding: 8px 9px;
  border-radius: 8px; font-size: 13px; font-weight: 550; color: var(--text); text-align: left;
}
.modelopt:hover { background: var(--hover); }
.modelopt.active { background: var(--accent-dim); color: var(--accent); }
.modelopt .modelcheck { margin-left: auto; opacity: 0; color: var(--accent); display: grid; }
.modelopt.active .modelcheck { opacity: 1; }
.modelnew { font-size: 9.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--pos); background: var(--pos-dim); border-radius: 5px; padding: 1px 5px; }
@media (max-width: 780px) { .modelpick .modelchip span.modeltxt, .modelpick .modelchip { } .modelmenu { right: auto; left: 0; } }

/* ---------- New Chat + chat list ---------- */
.chat-newbtn {
  display: flex; align-items: center; gap: 8px; justify-content: center;
  margin-bottom: 8px; padding: 10px; border-radius: 11px; font-weight: 650; font-size: 13.5px;
  border: 1px dashed var(--border-2); color: var(--text);
}
.chat-newbtn:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-dim); }
.chat-listsec { font-size: 10px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--dim); padding: 10px 11px 4px; }

/* ---------- sidebar: Ny chat + Nylige ---------- */
.newchat-btn {
  display: flex; align-items: center; gap: 10px; margin: 0 0 4px; padding: 10px 12px;
  border-radius: 10px; font-weight: 650; font-size: 14px; color: var(--text);
  border: 1px solid var(--border-2); background: var(--card);
}
.newchat-btn:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-dim); }
.newchat-btn .ic { color: var(--accent); }
.nylige { margin-bottom: 8px; }
.nylige-head {
  display: flex; align-items: center; gap: 9px; width: 100%; padding: 8px 10px;
  border-radius: 9px; color: var(--muted); font-weight: 600; font-size: 12.5px;
}
.nylige-head:hover { background: var(--hover); color: var(--text); }
.nylige-head .ic { color: var(--dim); }
.nylige-count { background: var(--card-3); color: var(--muted); font-size: 10.5px; font-weight: 700; border-radius: 99px; padding: 1px 7px; }
.nylige-chev { margin-left: auto; color: var(--dim); display: grid; transition: transform .15s; }
.nylige.open .nylige-chev { transform: rotate(180deg); }
.nylige-list { display: none; max-height: 236px; overflow-y: auto; margin-top: 2px; scrollbar-width: thin; }
.nylige.open .nylige-list { display: block; }
.nylige-row { position: relative; display: flex; align-items: center; border-radius: 8px; }
.nylige-row:hover { background: var(--hover); }
.nylige-row.active { background: var(--accent-dim); }
.nylige-item {
  display: flex; align-items: center; gap: 8px; padding: 7px 8px 7px 12px; border-radius: 8px;
  color: var(--muted); font-size: 12.5px; flex: 1; min-width: 0;
}
.nylige-row:hover .nylige-item { color: var(--text); }
.nylige-row.active .nylige-item { color: var(--accent); }
.nylige-dot { width: 7px; height: 7px; border-radius: 99px; flex: none; }
.nylige-navn { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nylige-del {
  flex: none; width: 26px; height: 26px; margin-right: 4px; border-radius: 7px; display: grid; place-items: center;
  color: var(--dim); opacity: 0; transition: opacity .12s;
}
.nylige-row:hover .nylige-del { opacity: 1; }
.nylige-del:hover { background: var(--neg-dim); color: var(--neg); }
.nylige-tom { color: var(--dim); font-size: 12px; padding: 8px 11px; }
@media (max-width: 980px) {
  .newchat-btn span, .nylige { display: none; }
  .newchat-btn { justify-content: center; padding: 10px; }
}

/* ========== ChatGPT-lignende AI-chat (/chat) ========== */
body.chatpage { overflow: hidden; }
body.chatpage .shell { height: 100vh; }
body.chatpage .sidebar { overflow-y: auto; }
body.chatpage .main { height: 100vh; min-height: 0; overflow: hidden; }
body.chatpage .content { padding: 0; max-width: none; flex: 1; min-height: 0; display: flex; }

.cgpt { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; background: var(--bg); }
.cgpt-top { display: flex; align-items: center; gap: 10px; padding: 11px 16px; border-bottom: 1px solid var(--border); flex: none; }

.cgpt-modelpick { position: relative; }
.cgpt-modelbtn { display: inline-flex; align-items: center; gap: 9px; padding: 8px 12px; border-radius: 10px; font-weight: 650; font-size: 14px; color: var(--text); border: 1px solid transparent; }
.cgpt-modelbtn:hover { background: var(--hover); }
.cgpt-modeldot { width: 9px; height: 9px; border-radius: 99px; flex: none; }
.cgpt-caret { color: var(--dim); display: grid; transition: transform .15s; }
.cgpt-modelpick.open .cgpt-caret { transform: rotate(180deg); }
.cgpt-newlink { margin-left: auto; display: inline-flex; align-items: center; gap: 7px; padding: 7px 12px; border-radius: 9px; color: var(--muted); font-size: 13px; font-weight: 600; border: 1px solid var(--border); }
.cgpt-newlink:hover { border-color: var(--accent); color: var(--accent); }

.cgpt-modelpanel { position: absolute; top: calc(100% + 6px); left: 0; z-index: 600; min-width: 268px; background: var(--card); border: 1px solid var(--border-2); border-radius: 13px; box-shadow: var(--shadow); padding: 6px; display: none; }
.cgpt-modelpick.open .cgpt-modelpanel { display: block; }
.cgpt-modelpanel-hd { font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--dim); padding: 6px 10px 5px; }
.cgpt-prov { position: relative; border-radius: 9px; }
.cgpt-prov.off { opacity: .5; }
.cgpt-provrow { display: flex; align-items: center; gap: 9px; padding: 9px 10px; border-radius: 9px; cursor: pointer; }
.cgpt-prov.off .cgpt-provrow { cursor: not-allowed; }
.cgpt-prov:not(.off) .cgpt-provrow:hover, .cgpt-prov.show .cgpt-provrow { background: var(--hover); }
.cgpt-prov.active > .cgpt-provrow { background: var(--accent-dim); }
.cgpt-provname { font-weight: 600; font-size: 13.5px; color: var(--text); }
.cgpt-provsub { color: var(--dim); font-size: 11.5px; }
.cgpt-provcaret { margin-left: auto; color: var(--dim); display: grid; }
.cgpt-provmenu { display: none; position: absolute; left: calc(100% + 6px); top: -6px; z-index: 601; min-width: 194px; background: var(--card); border: 1px solid var(--border-2); border-radius: 13px; box-shadow: var(--shadow); padding: 6px; }
.cgpt-prov.show .cgpt-provmenu { display: block; }
.cgpt-modelopt { display: flex; align-items: center; gap: 8px; width: 100%; padding: 9px 10px; border-radius: 8px; font-size: 13.5px; color: var(--text); }
.cgpt-modelopt:hover { background: var(--hover); }
.cgpt-modelopt.active { background: var(--accent-dim); color: var(--accent); }
.cgpt-optnew { font-size: 9.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--pos); background: var(--pos-dim); border-radius: 5px; padding: 1px 5px; }
.cgpt-optcheck { margin-left: auto; color: var(--accent); display: grid; opacity: 0; }
.cgpt-modelopt.active .cgpt-optcheck { opacity: 1; }

.cgpt-scroll { flex: 1; min-height: 0; overflow-y: auto; }
.cgpt-thread { max-width: 768px; margin: 0 auto; padding: 26px 20px 40px; display: flex; flex-direction: column; gap: 22px; }
.cgpt-msg { display: flex; gap: 13px; }
.cgpt-msg.user { justify-content: flex-end; }
.cgpt-msg.user .cgpt-bubble { background: var(--card-3); border: 1px solid var(--border); border-radius: 20px; padding: 11px 17px; max-width: 80%; font-size: 14.5px; line-height: 1.6; color: var(--text); }
.cgpt-msgava { flex: none; width: 30px; height: 30px; border-radius: 99px; display: grid; place-items: center; background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: #04211d; font-size: 15px; margin-top: 1px; }
.cgpt-msg.bot .cgpt-bubble { padding-top: 3px; font-size: 14.5px; line-height: 1.7; color: var(--text); min-width: 0; }

.cgpt-empty { max-width: 720px; margin: 0 auto; min-height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 22px; padding: 24px 20px 60px; text-align: center; }
.cgpt-hero { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.cgpt-heroic { width: 52px; height: 52px; border-radius: 99px; display: grid; place-items: center; background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: #04211d; font-size: 26px; }
.cgpt-hero h2 { font-size: 26px; font-weight: 650; letter-spacing: -.02em; margin: 0; }
.cgpt-empty .cgpt-composer { width: 100%; }
.cgpt-suggests { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.cgpt-sugg { padding: 10px 15px; border-radius: 12px; border: 1px solid var(--border); background: var(--card); color: var(--muted); font-size: 13px; }
.cgpt-sugg:hover { border-color: var(--accent); color: var(--text); background: var(--card-2); }

.cgpt-composer-wrap { flex: none; padding: 6px 20px 16px; }
.cgpt-composer { max-width: 768px; margin: 0 auto; }
.cgpt-inputbox { display: flex; align-items: flex-end; gap: 6px; background: var(--input); border: 1px solid var(--border-2); border-radius: 24px; padding: 7px; box-shadow: var(--shadow); }
.cgpt-inputbox:focus-within { border-color: var(--accent); }
.cgpt-inputbox textarea { flex: 1; background: none; border: 0; outline: 0; resize: none; color: var(--text); font: inherit; font-size: 15px; line-height: 1.5; max-height: 220px; padding: 9px 4px; }
.cgpt-inputbox textarea::placeholder { color: var(--dim); }
.cgpt-sendbtn { flex: none; width: 38px; height: 38px; border-radius: 99px; display: grid; place-items: center; background: var(--accent); color: #04211d; }
.cgpt-sendbtn:hover { filter: brightness(1.07); }
.cgpt-fine { text-align: center; color: var(--dim); font-size: 11px; margin-top: 8px; }

/* round icon buttons in composer (+ og mic) */
.cgpt-iconround { flex: none; width: 38px; height: 38px; border-radius: 99px; display: grid; place-items: center; color: var(--muted); border: 1px solid transparent; }
.cgpt-iconround:hover { background: var(--hover); color: var(--text); }
.cgpt-mic.rec { color: var(--neg); background: var(--neg-dim); animation: micpulse 1.1s ease-in-out infinite; }
@keyframes micpulse { 0%,100% { box-shadow: 0 0 0 0 var(--neg-dim); } 50% { box-shadow: 0 0 0 5px transparent; } }
.cgpt-plus-wrap { position: relative; }
.cgpt-plusmenu { display: none; position: absolute; bottom: calc(100% + 8px); left: 0; z-index: 40; min-width: 190px; background: var(--card); border: 1px solid var(--border-2); border-radius: 13px; box-shadow: var(--shadow); padding: 6px; }
.cgpt-plusmenu.open { display: block; }
.cgpt-plusmenu button { display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 11px; border-radius: 8px; font-size: 13.5px; color: var(--text); }
.cgpt-plusmenu button:hover { background: var(--hover); }
.cgpt-plusmenu .ic { color: var(--muted); }

/* pending vedlegg-forhåndsvisning over inputfeltet */
.cgpt-attachrow { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 4px 8px; }
.cgpt-attachchip { display: flex; align-items: center; gap: 8px; max-width: 240px; padding: 6px 8px 6px 6px; border: 1px solid var(--border-2); border-radius: 12px; background: var(--card); font-size: 12.5px; }
.cgpt-attachchip img { width: 34px; height: 34px; border-radius: 8px; object-fit: cover; flex: none; }
.cgpt-attachic { width: 30px; height: 30px; display: grid; place-items: center; font-size: 15px; flex: none; }
.cgpt-attachnavn { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); }
.cgpt-attachchip.laster { opacity: .7; }
.cgpt-attachdel { flex: none; width: 20px; height: 20px; border-radius: 99px; display: grid; place-items: center; color: var(--dim); font-size: 12px; }
.cgpt-attachdel:hover { background: var(--neg-dim); color: var(--neg); }

/* topp-høyre meny: Del + kebab */
.cgpt-topright { margin-left: auto; display: flex; align-items: center; gap: 6px; }
.cgpt-topbtn { display: inline-flex; align-items: center; gap: 7px; padding: 7px 12px; border-radius: 9px; color: var(--muted); font-size: 13px; font-weight: 600; border: 1px solid var(--border); }
.cgpt-topbtn:hover { border-color: var(--accent); color: var(--accent); }
.cgpt-topbtn.cgpt-iconbtn { padding: 7px; }
.cgpt-kebab { position: relative; }
.cgpt-kebabmenu { display: none; position: absolute; top: calc(100% + 6px); right: 0; z-index: 600; min-width: 200px; background: var(--card); border: 1px solid var(--border-2); border-radius: 13px; box-shadow: var(--shadow); padding: 6px; }
.cgpt-kebab.open .cgpt-kebabmenu { display: block; }
.cgpt-kebabmenu button { display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 11px; border-radius: 8px; font-size: 13.5px; color: var(--text); }
.cgpt-kebabmenu button:hover { background: var(--hover); }
.cgpt-kebabmenu .ic { color: var(--muted); }
.cgpt-kebabmenu button.danger { color: var(--neg); }
.cgpt-kebabmenu button.danger:hover { background: var(--neg-dim); }
.cgpt-kebabmenu button.danger .ic { color: var(--neg); }

/* meldingsvedlegg + handlinger */
.cgpt-col { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.cgpt-msg.user .cgpt-col { align-items: flex-end; }
.cgpt-atts { display: flex; flex-wrap: wrap; gap: 8px; }
.cgpt-atts.end { justify-content: flex-end; }
.cgpt-att-img img { max-width: 260px; max-height: 260px; border-radius: 14px; border: 1px solid var(--border); display: block; }
.cgpt-att-file { display: inline-flex; align-items: center; gap: 8px; padding: 9px 13px; border: 1px solid var(--border); border-radius: 12px; background: var(--card); color: var(--text); font-size: 13px; max-width: 260px; }
.cgpt-att-file span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cgpt-att-file:hover { border-color: var(--accent); }
.cgpt-att-file .ic { color: var(--muted); flex: none; }
.cgpt-msgacts { display: flex; gap: 2px; margin-top: 2px; opacity: 0; transition: opacity .12s; }
.cgpt-msg.bot:hover .cgpt-msgacts, .cgpt-msg.bot:last-child .cgpt-msgacts { opacity: 1; }
.cgpt-regenform { display: inline; }
.cgpt-msgact { width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; color: var(--dim); }
.cgpt-msgact:hover { background: var(--hover); color: var(--text); }

/* markdown i AI-svar */
.cgpt-msg.bot .cgpt-bubble > *:first-child { margin-top: 0; }
.cgpt-msg.bot .cgpt-bubble > *:last-child { margin-bottom: 0; }
.cgpt-msg.bot .cgpt-bubble p { margin: 0 0 10px; }
.cgpt-msg.bot .cgpt-bubble h3 { font-size: 15.5px; font-weight: 700; margin: 14px 0 8px; letter-spacing: -.01em; }
.cgpt-msg.bot .cgpt-bubble h4 { font-size: 14px; font-weight: 700; margin: 12px 0 6px; }
.cgpt-msg.bot .cgpt-bubble ul, .cgpt-msg.bot .cgpt-bubble ol { margin: 0 0 10px; padding-left: 20px; }
.cgpt-msg.bot .cgpt-bubble li { margin: 3px 0; }
.cgpt-msg.bot .cgpt-bubble a { color: var(--accent); text-decoration: none; border-bottom: 1px solid color-mix(in srgb, var(--accent) 35%, transparent); }
.cgpt-msg.bot .cgpt-bubble a:hover { border-bottom-color: var(--accent); }
.cgpt-msg.bot .cgpt-bubble code { background: var(--card-3); padding: 1px 6px; border-radius: 6px; font-size: 12.5px; font-family: ui-monospace, Menlo, monospace; }
.cgpt-msg.bot .cgpt-bubble blockquote { margin: 0 0 10px; padding: 4px 0 4px 13px; border-left: 3px solid var(--border-2); color: var(--muted); }
.cgpt-msg.bot .cgpt-bubble hr { border: 0; border-top: 1px solid var(--border); margin: 12px 0; }
.cgpt-msg.bot .cgpt-bubble strong { font-weight: 700; color: var(--text); }

/* toast */
.cgpt-toast { position: fixed; bottom: 26px; left: 50%; transform: translateX(-50%) translateY(12px); z-index: 2000; background: var(--text); color: var(--bg); padding: 9px 16px; border-radius: 10px; font-size: 13px; font-weight: 600; opacity: 0; transition: opacity .2s, transform .2s; box-shadow: var(--shadow); max-width: 80vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cgpt-toast.vis { opacity: 1; transform: translateX(-50%) translateY(0); }

/* tom tråd sentrert + hero-blokk */
.cgpt-thread.empty { min-height: 100%; justify-content: center; }
.cgpt-heroblock { display: flex; flex-direction: column; align-items: center; gap: 22px; margin: auto; text-align: center; max-width: 720px; }

/* "tenker"-indikator */
.cgpt-thinking .cgpt-bubble { display: inline-flex; align-items: center; gap: 4px; color: var(--dim); }
.cgpt-typing { display: inline-flex; gap: 4px; align-items: center; }
.cgpt-typing i { width: 7px; height: 7px; border-radius: 99px; background: var(--muted); display: inline-block; animation: cgptdot 1.1s infinite ease-in-out; }
.cgpt-typing i:nth-child(2) { animation-delay: .16s; }
.cgpt-typing i:nth-child(3) { animation-delay: .32s; }
@keyframes cgptdot { 0%, 65%, 100% { opacity: .3; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-4px); } }
.cgpt-thinktext { color: var(--dim); font-size: 13px; margin-left: 8px; }

@media (max-width: 820px) {
  .cgpt-provmenu { position: static; left: auto; top: auto; min-width: 0; border: 0; box-shadow: none; padding: 2px 0 6px 26px; }
  .cgpt-newlink span, .cgpt-topbtn span { display: none; }
  .cgpt-att-img img { max-width: 200px; }
}

/* ---------- news ---------- */
.newsitem { padding: 15px 2px; border-bottom: 1px solid var(--border); }
.newsitem:last-child { border-bottom: 0; }
.newsitem h2 { font-size: 16.5px; margin: 7px 0 4px; letter-spacing: -.01em; }
.newsitem.first h2 { font-size: 19px; }
.newsitem p { margin: 0; font-size: 13.5px; }
.news-meta { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

/* ---------- faq / support ---------- */
.faq-item { border-bottom: 1px solid var(--border); }
.faq-item summary {
  display: flex; align-items: center; gap: 8px; padding: 12px 2px; cursor: pointer;
  font-weight: 600; font-size: 13.5px; list-style: none;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary .chev { margin-left: auto; color: var(--dim); transition: transform .15s; }
.faq-item[open] summary .chev { transform: rotate(180deg); }
.faq-item p { margin: 0 0 13px; color: var(--muted); font-size: 13px; }
textarea.login-input { width: 100%; }

/* ---------- settings ---------- */
.toggle-row { display: flex; gap: 11px; align-items: flex-start; padding: 10px 0; border-bottom: 1px dashed var(--border); cursor: pointer; font-size: 13.5px; }
.toggle-row:last-of-type { border-bottom: 0; }
.toggle-row input { accent-color: var(--accent); width: 17px; height: 17px; margin-top: 2px; flex: none; }

/* ---------- compare ---------- */
.cmp-pickers { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.cmp-pickers select, .mini-select { background: var(--input); border: 1px solid var(--border-2); border-radius: 9px; padding: 9px 11px; outline: 0; min-width: 0; }
.mini-select { padding: 6px 9px; font-size: 12.5px; }
.cmp-tbl th { vertical-align: top; }
.cmp-tbl td { font-size: 13.5px; }

/* ---------- report / print ---------- */
.report { max-width: 980px; }
.report-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 4px 4px 14px; }
@media print {
  .sidebar, .topbar, .ticker, .no-print, .palette { display: none !important; }
  .content { padding: 0; max-width: none; }
  body { background: #fff; }
  .card { break-inside: avoid; box-shadow: none; }
  :root, :root[data-theme="dark"] { color-scheme: light; }
}

@media (max-width: 1280px) {
  .chat-grid { grid-template-columns: 250px 1fr; }
  .chat-grid .chat-side { display: none; }
}
@media (max-width: 980px) {
  .nav-sec { display: none; }
  .cmp-pickers { grid-template-columns: 1fr; }
  .chat-grid { grid-template-columns: 1fr; }
  .chat-list { flex-direction: row; overflow-x: auto; }
  .chat-item { flex: none; }
  .chat-item-body .small { display: none; }
  .ticker { font-size: 10.5px; }
}

/* ---------- login ---------- */
.login-body { min-height: 100vh; }
.login-wrap {
  min-height: 100vh; display: grid; place-items: center; padding: 24px;
  background:
    radial-gradient(600px 400px at 70% 20%, var(--accent2-dim), transparent 70%),
    radial-gradient(500px 380px at 25% 80%, var(--accent-dim), transparent 70%),
    var(--bg);
}
.login-card {
  width: min(420px, 94vw); background: var(--card); border: 1px solid var(--border);
  border-radius: 18px; padding: 30px 30px 24px; box-shadow: var(--shadow);
}
.login-brand { display: flex; align-items: center; gap: 13px; margin-bottom: 22px; }
.login-name { font-size: 19px; font-weight: 750; letter-spacing: -.01em; }
.login-name em { font-style: normal; font-weight: 500; color: var(--accent); }
.login-card h1 { font-size: 21px; margin: 0; letter-spacing: -.015em; }
.login-label { display: block; font-size: 12.5px; font-weight: 600; color: var(--muted); margin: 13px 0 6px; }
.login-input {
  width: 100%; background: var(--input); border: 1px solid var(--border-2); border-radius: 10px;
  padding: 11px 13px; outline: none; font-size: 14.5px;
}
.login-input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-dim); }
.login-btn { width: 100%; justify-content: center; margin-top: 20px; padding: 11px; font-size: 14.5px; }
.login-error {
  display: flex; align-items: center; gap: 8px; background: var(--neg-dim); color: var(--neg);
  border: 1px solid color-mix(in srgb, var(--neg) 35%, transparent);
  border-radius: 10px; padding: 9px 12px; font-size: 13px; font-weight: 600; margin-bottom: 4px;
}

/* theme toggle icons */
:root[data-theme="dark"] .only-light { display: none; }
:root[data-theme="light"] .only-dark { display: none; }
.only-dark, .only-light { display: grid; }

/* ---------- page layout grids ---------- */
.dash-grid { display: grid; grid-template-columns: minmax(320px, 360px) 1fr minmax(300px, 340px); gap: 14px; align-items: start; }
.dash-col { display: grid; gap: 14px; align-content: start; }
.sok-grid { display: grid; grid-template-columns: 250px 1fr minmax(280px, 310px); gap: 14px; align-items: start; }
.detail-grid { display: grid; grid-template-columns: 1fr 1fr minmax(300px, 330px); gap: 14px; align-items: start; }
.marked-grid { display: grid; grid-template-columns: 1fr minmax(300px, 330px); gap: 14px; align-items: start; }
.selg-grid { display: grid; grid-template-columns: minmax(250px, 290px) 1fr minmax(260px, 300px) minmax(260px, 300px); gap: 14px; align-items: start; }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }

@media (max-width: 1420px) {
  .selg-grid { grid-template-columns: minmax(240px, 280px) 1fr minmax(260px, 300px); }
  .selg-grid .selg-col4 { grid-column: 2 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-content: start; }
}
@media (max-width: 1280px) {
  .dash-grid { grid-template-columns: 1fr 1fr; }
  .dash-grid .dash-col3 { grid-column: 1 / -1; }
  .detail-grid { grid-template-columns: 1fr 1fr; }
  .kpis { grid-template-columns: repeat(3, 1fr); }
  .sok-grid { grid-template-columns: 230px 1fr; }
  .sok-grid .sok-col3 { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
}
@media (max-width: 980px) {
  .sidebar { width: 64px; padding: 14px 8px; }
  .brand-name, .nav-item span, .sidebar-foot { display: none; }
  .nav-item { justify-content: center; padding: 11px; }
  .nav-badge { position: absolute; top: 4px; right: 4px; padding: 0 5px; }
  .dash-grid, .detail-grid, .two-col, .selg-grid { grid-template-columns: 1fr; }
  .selg-grid .selg-col4 { grid-column: auto; grid-template-columns: 1fr; }
  .sok-grid { grid-template-columns: 1fr; }
  .sok-grid .sok-col3 { grid-template-columns: 1fr; }
  .kpis { grid-template-columns: repeat(2, 1fr); }
  .searchbar input { font-size: 13px; }
  .content { padding: 14px 12px 32px; }
}

/* ========== Instant Bloomberg (IB) — /meldinger ========== */
.ib {
  flex: 1; min-height: 0; display: flex; flex-direction: column;
  --ib-bg: #0a0e14; --ib-panel: #0e131b; --ib-panel2: #131b27; --ib-line: #1e2733;
  --ib-amber: #ff9e1b; --ib-amber2: #ffbd52; --ib-text: #e7e2d7; --ib-muted: #8b8677; --ib-dim: #5f6b79;
  --ib-teal: #2dd4bf; --ib-green: #22c55e;
  background: var(--ib-bg); color: var(--ib-text);
}
.ib-head { display: flex; align-items: center; gap: 14px; padding: 10px 16px; border-bottom: 1px solid var(--ib-line); background: var(--ib-panel); }
.ib-logo { width: 34px; height: 34px; display: grid; place-items: center; background: var(--ib-amber); color: #0a0e14; font-weight: 800; border-radius: 5px; font-size: 15px; }
.ib-title { color: var(--ib-amber); font-weight: 800; letter-spacing: .14em; font-size: 14px; }
.ib-subtitle { color: var(--ib-muted); font-size: 11px; letter-spacing: .05em; }
.ib-funcs { display: flex; gap: 6px; margin-left: 8px; font-family: ui-monospace, Menlo, Consolas, monospace; }
.ib-func { padding: 4px 10px; border: 1px solid var(--ib-line); border-radius: 4px; color: var(--ib-muted); font-size: 11.5px; font-weight: 700; letter-spacing: .08em; }
.ib-func.active, .ib-func:hover { color: #0a0e14; background: var(--ib-amber); border-color: var(--ib-amber); }
.ib-me { margin-left: auto; color: var(--ib-muted); font-size: 11.5px; letter-spacing: .03em; font-family: ui-monospace, Menlo, Consolas, monospace; }
.ib-me b { color: var(--ib-text); }
.ib-dot { width: 8px; height: 8px; border-radius: 99px; display: inline-block; flex: none; }
.ib-compliance { display: flex; align-items: center; gap: 8px; padding: 6px 16px; background: rgba(255, 158, 27, .09); border-bottom: 1px solid var(--ib-line); color: var(--ib-amber2); font-size: 10.5px; font-weight: 700; letter-spacing: .05em; }
.ib-compliance .ic { color: var(--ib-amber); }
.ib-body { flex: 1; min-height: 0; display: grid; grid-template-columns: 290px 1fr 252px; }
.ib-body > * { min-width: 0; }
.ib-list { border-right: 1px solid var(--ib-line); overflow-y: auto; background: var(--ib-panel); }
.ib-search { display: flex; align-items: center; gap: 8px; padding: 9px 12px; border-bottom: 1px solid var(--ib-line); color: var(--ib-dim); }
.ib-search input { flex: 1; background: none; border: 0; outline: 0; color: var(--ib-text); font: inherit; font-size: 12.5px; }
.ib-sec { display: flex; justify-content: space-between; padding: 10px 12px 5px; color: var(--ib-dim); font-size: 10px; font-weight: 800; letter-spacing: .12em; }
.ib-secn { color: var(--ib-muted); }
.ib-row, .ib-room { display: flex; gap: 9px; align-items: flex-start; padding: 9px 12px; border-bottom: 1px solid rgba(30, 39, 51, .5); }
.ib-row:hover, .ib-room:hover { background: var(--ib-panel2); }
.ib-row.active { background: rgba(255, 158, 27, .1); box-shadow: inset 3px 0 0 var(--ib-amber); }
.ib-row .ib-dot { margin-top: 4px; }
.ib-rowbody { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.ib-rowtop { display: flex; justify-content: space-between; gap: 6px; }
.ib-rowtop b { color: var(--ib-amber2); font-size: 12px; font-weight: 700; letter-spacing: .03em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ib-rowtime { color: var(--ib-dim); font-size: 10.5px; flex: none; font-family: ui-monospace, Menlo, Consolas, monospace; }
.ib-rowrole { color: var(--ib-muted); font-size: 10.5px; }
.ib-rowmsg { color: var(--ib-dim); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ib-unread { flex: none; align-self: center; background: var(--ib-amber); color: #0a0e14; font-size: 10px; font-weight: 800; border-radius: 99px; padding: 1px 6px; }
.ib-room .ib-roomhash { color: var(--ib-dim); font-weight: 800; margin-top: 1px; }
.ib-roommem { color: var(--ib-dim); font-size: 10.5px; align-self: center; }
.ib-tom, .ib-empty { padding: 16px; color: var(--ib-dim); font-size: 12px; }
.ib-empty a, .ib-tom a { color: var(--ib-amber); }
.ib-main { display: flex; flex-direction: column; min-height: 0; background: var(--ib-bg); }
.ib-threadhead { display: flex; align-items: center; gap: 10px; padding: 11px 16px; border-bottom: 1px solid var(--ib-line); background: var(--ib-panel); }
.ib-thbody { display: flex; flex-direction: column; min-width: 0; }
.ib-thbody b { color: var(--ib-amber2); font-size: 13px; letter-spacing: .03em; }
.ib-throle { color: var(--ib-muted); font-size: 11px; }
.ib-thstatus { margin-left: auto; color: var(--ib-green); font-size: 10.5px; font-weight: 800; letter-spacing: .07em; }
.ib-thread { flex: 1; min-height: 0; overflow-y: auto; padding: 14px 16px; font-size: 12.5px; line-height: 1.75; font-family: ui-monospace, Menlo, Consolas, monospace; }
.ib-daysep { text-align: center; color: var(--ib-dim); font-size: 10px; letter-spacing: .1em; margin: 12px 0; }
.ib-msg { margin: 2px 0; overflow-wrap: anywhere; }
.ib-ts { color: var(--ib-dim); }
.ib-from { color: var(--ib-amber); font-weight: 700; margin: 0 6px 0 4px; }
.ib-msg.me .ib-from { color: var(--ib-teal); }
.ib-text { color: var(--ib-text); }
.ib-compose { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-top: 1px solid var(--ib-line); background: var(--ib-panel); }
.ib-prompt { color: var(--ib-amber); font-weight: 800; font-family: ui-monospace, Menlo, monospace; }
.ib-compose input { flex: 1; background: var(--ib-bg); border: 1px solid var(--ib-line); border-radius: 5px; padding: 10px 12px; color: var(--ib-text); outline: 0; font: inherit; font-size: 12.5px; }
.ib-compose input:focus { border-color: var(--ib-amber); }
.ib-send { display: inline-flex; align-items: center; gap: 7px; padding: 10px 14px; background: var(--ib-amber); color: #0a0e14; font-weight: 800; border-radius: 5px; font-size: 12px; letter-spacing: .05em; }
.ib-send:hover { background: var(--ib-amber2); }
.ib-send kbd { background: rgba(10, 14, 20, .22); border-radius: 3px; padding: 1px 5px; font-size: 10px; }
.ib-statusbar { display: flex; align-items: center; gap: 8px; padding: 6px 16px; border-top: 1px solid var(--ib-line); background: var(--ib-panel); color: var(--ib-muted); font-size: 10.5px; letter-spacing: .05em; font-family: ui-monospace, Menlo, Consolas, monospace; }
.ib-card { border-left: 1px solid var(--ib-line); overflow-y: auto; background: var(--ib-panel); padding: 16px 14px; }
.ib-cardhead { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 6px; padding-bottom: 14px; border-bottom: 1px solid var(--ib-line); }
.ib-avatar { width: 56px; height: 56px; border-radius: 10px; display: grid; place-items: center; color: #fff; font-weight: 800; font-size: 22px; }
.ib-cardname { color: var(--ib-amber2); font-weight: 800; font-size: 13px; letter-spacing: .04em; }
.ib-cardrole { color: var(--ib-muted); font-size: 11px; }
.ib-cardpres { color: var(--ib-text); font-size: 11px; display: flex; align-items: center; gap: 6px; }
.ib-field { display: flex; justify-content: space-between; gap: 10px; padding: 9px 2px; border-bottom: 1px solid rgba(30, 39, 51, .6); font-size: 11px; }
.ib-field span { color: var(--ib-dim); letter-spacing: .05em; }
.ib-field b { color: var(--ib-text); text-align: right; }
.ib-cardacts { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }
.ib-cardbtn { display: flex; align-items: center; gap: 8px; justify-content: center; padding: 9px; border: 1px solid var(--ib-line); border-radius: 5px; color: var(--ib-amber2); font-size: 12px; font-weight: 700; }
.ib-cardbtn:hover { border-color: var(--ib-amber); background: var(--ib-panel2); }
.ib-cardbtn .ic { color: var(--ib-amber); }
@media (max-width: 1100px) { .ib-body { grid-template-columns: 250px 1fr; } .ib-card { display: none; } }
@media (max-width: 720px) { .ib-body { grid-template-columns: 1fr; } .ib-list, .ib-funcs { display: none; } }

/* ===== IB v2 — katalog, rom, deling, reaksjoner, forhandling, modaler ===== */
.ib-listacts { display: flex; gap: 6px; padding: 8px 10px; border-bottom: 1px solid var(--ib-line); }
.ib-newbtn { flex: 1; display: flex; align-items: center; justify-content: center; gap: 6px; padding: 8px; border: 1px solid var(--ib-line); border-radius: 6px; color: var(--ib-amber2); font-size: 11.5px; font-weight: 700; }
.ib-newbtn:hover { border-color: var(--ib-amber); background: var(--ib-panel2); }
.ib-tabs { display: flex; gap: 4px; padding: 8px 10px; border-bottom: 1px solid var(--ib-line); }
.ib-tab { flex: 1; padding: 6px; border-radius: 5px; color: var(--ib-muted); font-size: 11px; font-weight: 700; letter-spacing: .03em; }
.ib-tab.active { background: var(--ib-amber); color: #0a0e14; }
.ib-rowic { width: 12px; text-align: center; color: var(--ib-dim); font-weight: 800; flex: none; margin-top: 3px; }
.ib-searchres { border-top: 1px solid var(--ib-line); }
.ib-thactions { margin-left: auto; display: flex; align-items: center; gap: 12px; }
.ib-thbtn { color: var(--ib-dim); font-size: 15px; }
.ib-thbtn:hover { color: var(--ib-amber2); }
.ib-thbtn.on { color: var(--ib-amber); }
/* meldingslinje + verktøy */
.ib-msgtools { position: relative; display: inline-flex; opacity: 0; transition: opacity .1s; }
.ib-msg:hover .ib-msgtools { opacity: 1; }
.ib-react-btn { color: var(--ib-dim); font-size: 12px; padding: 0 6px; }
.ib-react-btn:hover { color: var(--ib-amber2); }
.ib-reactpick { display: none; position: absolute; bottom: calc(100% + 2px); left: 0; z-index: 20; background: var(--ib-panel2); border: 1px solid var(--ib-line); border-radius: 6px; padding: 3px; gap: 2px; }
.ib-msgtools:hover .ib-reactpick, .ib-reactpick:hover { display: inline-flex; }
.ib-reactopt { padding: 2px 5px; font-size: 15px; border-radius: 4px; }
.ib-reactopt:hover { background: var(--ib-line); }
.ib-reaction { display: inline-block; margin: 2px 0 0 60px; font-size: 14px; background: var(--ib-panel2); border: 1px solid var(--ib-line); border-radius: 99px; padding: 0 7px; line-height: 1.5; }
.ib-reaction.tom { display: none; }
/* objekt-kort (security/objekt-deling) */
.ib-objwrap { margin: 5px 0 3px 60px; }
.ib-obj { display: flex; align-items: center; gap: 11px; max-width: 540px; padding: 10px 12px; border: 1px solid var(--ib-line); border-left: 3px solid var(--ib-amber); border-radius: 6px; background: var(--ib-panel2); }
.ib-obj:hover { border-color: var(--ib-amber); }
.ib-obj-ic { width: 30px; height: 30px; flex: none; display: grid; place-items: center; background: var(--ib-amber); color: #0a0e14; font-weight: 800; border-radius: 5px; font-size: 12px; }
.ib-obj-ic.sm { width: 22px; height: 22px; font-size: 9.5px; border-radius: 4px; }
.ib-obj-b { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.ib-obj-b b { color: var(--ib-amber2); font-size: 12.5px; }
.ib-obj-b span, .ib-obj-meta { color: var(--ib-muted); font-size: 10.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ib-obj-fields { display: none; flex-direction: column; gap: 2px; text-align: right; flex: none; }
.ib-obj-sec .ib-obj-fields { display: flex; }
.ib-obj-fields span { color: var(--ib-text); font-size: 10px; font-family: ui-monospace, Menlo, monospace; }
.ib-obj-open { color: var(--ib-amber); font-size: 10.5px; font-weight: 800; flex: none; }
/* forhandlings-chips */
.ib-neg { display: flex; gap: 6px; flex-wrap: wrap; padding: 9px 14px 0; }
.ib-negchip { padding: 5px 11px; border: 1px solid var(--ib-line); border-radius: 99px; color: var(--ib-amber2); font-size: 11px; font-weight: 700; background: var(--ib-panel); }
.ib-negchip:hover { border-color: var(--ib-amber); background: var(--ib-panel2); }
/* del-meny i composer */
.ib-del-wrap { position: relative; }
.ib-delbtn { width: 38px; height: 38px; border-radius: 6px; display: grid; place-items: center; color: var(--ib-amber2); border: 1px solid var(--ib-line); }
.ib-delbtn:hover { border-color: var(--ib-amber); }
.ib-delmenu { display: none; position: absolute; bottom: calc(100% + 8px); left: 0; z-index: 40; min-width: 190px; background: var(--ib-panel2); border: 1px solid var(--ib-line); border-radius: 8px; padding: 5px; }
.ib-delmenu.open { display: block; }
.ib-delmenu button { display: flex; align-items: center; gap: 9px; width: 100%; padding: 8px 10px; border-radius: 5px; color: var(--ib-text); font-size: 12.5px; }
.ib-delmenu button:hover { background: var(--ib-line); }
/* IB-modaler (frittstående — hardkodet amber/mørk) */
.ib-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.ib-modal[hidden] { display: none; }
.ib-modal-back { position: absolute; inset: 0; background: rgba(0, 0, 0, .62); backdrop-filter: blur(2px); }
.ib-modal-box { position: relative; width: min(580px, 93vw); max-height: 84vh; display: flex; flex-direction: column; background: #0e131b; border: 1px solid #26313f; border-radius: 10px; box-shadow: 0 24px 70px rgba(0, 0, 0, .55); color: #e7e2d7; overflow: hidden; }
.ib-modal-head { position: relative; padding: 15px 16px; border-bottom: 1px solid #1e2733; }
.ib-modal-head b { color: #ff9e1b; font-size: 13.5px; letter-spacing: .08em; display: flex; align-items: center; gap: 8px; }
.ib-modal-head > span { display: block; color: #8b8677; font-size: 11px; margin-top: 4px; }
.ib-modal-head .ic { color: #ff9e1b; }
.ib-modal-x { position: absolute; top: 13px; right: 15px; color: #8b8677; font-size: 15px; }
.ib-modal-x:hover { color: #e7e2d7; }
.ib-modal-search { display: flex; align-items: center; gap: 8px; margin: 12px 16px 8px; padding: 9px 12px; background: #0a0e14; border: 1px solid #1e2733; border-radius: 6px; color: #8b8677; }
.ib-modal-search .ic { color: #8b8677; }
.ib-modal-search input { flex: 1; background: none; border: 0; outline: 0; color: #e7e2d7; font: inherit; font-size: 13px; }
.ib-modal-search input:focus { outline: 0; }
.ib-katcats { display: flex; flex-wrap: wrap; gap: 5px; padding: 0 16px 8px; }
.ib-katcat { padding: 4px 10px; border: 1px solid #1e2733; border-radius: 99px; color: #8b8677; font-size: 11px; font-weight: 700; }
.ib-katcat.active { background: #ff9e1b; color: #0a0e14; border-color: #ff9e1b; }
.ib-katres { flex: 1; overflow-y: auto; padding: 2px 10px 10px; min-height: 120px; }
.ib-katrow { display: flex; align-items: center; gap: 10px; padding: 9px 8px; border-bottom: 1px solid rgba(30, 39, 51, .5); }
.ib-katrow.pick { cursor: pointer; border-radius: 6px; }
.ib-katrow.pick:hover { background: rgba(255, 158, 27, .06); }
.ib-katrow.pick.on { background: rgba(255, 158, 27, .12); }
.ib-katava { width: 32px; height: 32px; flex: none; border-radius: 6px; display: grid; place-items: center; background: #1e2733; color: #ffbd52; font-weight: 800; font-size: 12px; }
.ib-katbody { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.ib-katbody b { color: #ffbd52; font-size: 12.5px; }
.ib-katbody span { color: #8b8677; font-size: 10.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ib-katcheck { width: 24px; height: 24px; flex: none; display: grid; place-items: center; border: 1px solid #26313f; border-radius: 99px; color: #ffbd52; font-weight: 800; font-size: 13px; }
.ib-katchat { padding: 6px 13px; background: #ff9e1b; color: #0a0e14; font-weight: 800; border-radius: 5px; font-size: 11px; letter-spacing: .04em; }
.ib-katchat:hover { background: #ffbd52; }
.ib-modal-foot { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-top: 1px solid #1e2733; color: #8b8677; font-size: 12px; }
.ib-modal-foot .ib-send { background: #ff9e1b; color: #0a0e14; }
.ib-modal-foot .ib-send:disabled { opacity: .4; cursor: not-allowed; }
@media (max-width: 720px) { .ib-neg { display: none; } .ib-reaction, .ib-objwrap { margin-left: 20px; } }
.ib-katsel { cursor: pointer; }
.ib-katsel.on { background: #ff9e1b; color: #0a0e14; border-color: #ff9e1b; }
.ib-katrow form { flex: none; margin: 0; }

/* IB: mobil-skuff for samtaleliste + autofeed read-only */
.ib-mobtoggle, .ib-mobback { display: none; }
.ib-readonly { display: flex; align-items: center; gap: 8px; padding: 12px 16px; border-top: 1px solid var(--ib-line); color: var(--ib-muted); font-size: 11.5px; background: var(--ib-panel); }
.ib-readonly .ic { color: var(--ib-amber); }
@media (max-width: 720px) {
  .ib-list { display: block; position: fixed; top: 0; left: 0; bottom: 0; width: 84vw; max-width: 330px; z-index: 950; transform: translateX(-102%); transition: transform .22s ease; box-shadow: 4px 0 26px rgba(0, 0, 0, .55); }
  .ib.listopen .ib-list { transform: translateX(0); }
  .ib-mobback { position: fixed; inset: 0; z-index: 940; background: rgba(0, 0, 0, .5); }
  .ib.listopen .ib-mobback { display: block; }
  .ib-mobtoggle { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 6px; color: var(--ib-amber2); border: 1px solid var(--ib-line); flex: none; }
}

/* ===== Nye moduler: Monitor, Kalender, Renter, Research (BI), API ===== */
/* utilities */
.tbl-wrap { overflow-x: auto; }
.tbl th.r, .tbl td.r { text-align: right; }
.nums { font-variant-numeric: tabular-nums; white-space: nowrap; }
.badge-neutral { background: var(--hover); color: var(--muted); }
.md-body h3 { font-size: 15.5px; font-weight: 700; margin: 16px 0 8px; }
.md-body h4 { font-size: 14px; font-weight: 700; margin: 13px 0 6px; }
.md-body p { margin: 0 0 11px; line-height: 1.65; }
.md-body ul, .md-body ol { margin: 0 0 11px; padding-left: 20px; }
.md-body li { margin: 4px 0; }
.md-body strong { font-weight: 700; color: var(--text); }
.md-body a { color: var(--accent); text-decoration: none; border-bottom: 1px solid color-mix(in srgb, var(--accent) 35%, transparent); }
.md-body code { background: var(--card-3); padding: 1px 6px; border-radius: 6px; font-size: 12.5px; font-family: ui-monospace, Menlo, monospace; }
.md-body blockquote { margin: 0 0 11px; padding: 4px 0 4px 13px; border-left: 3px solid var(--border-2); color: var(--muted); }
.md-body hr { border: 0; border-top: 1px solid var(--border); margin: 14px 0; }

/* stat-tiles + monitor */
.mon-live { display: inline-flex; align-items: center; gap: 7px; color: var(--muted); font-size: 12px; font-weight: 650; letter-spacing: .04em; font-variant-numeric: tabular-nums; }
.mon-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin-bottom: 16px; }
.mon-tile { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 13px 15px; display: flex; flex-direction: column; gap: 3px; }
.mon-tk { color: var(--dim); font-size: 10.5px; font-weight: 700; letter-spacing: .07em; }
.mon-tile b { font-size: 22px; font-weight: 700; letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.mon-ts { font-size: 11.5px; }
.mon-card { padding: 0; }
.mon-card .card-h { padding: 13px 15px 0; margin-bottom: 10px; }
.mon-card .tbl-wrap { padding: 0 6px 6px; }
.mon-tbl td, .mon-tbl th { padding: 9px 10px; }
.mon-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.mon-bydel { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; padding: 0 13px 14px; }
.mon-bcell { background: var(--card-2); border: 1px solid var(--border); border-radius: 10px; padding: 9px 11px; }
.mon-btop { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 5px; }
.mon-btop b { font-size: 13px; }
.mon-bn { color: var(--dim); font-size: 10.5px; }
.mon-brow { display: flex; justify-content: space-between; font-size: 11.5px; color: var(--muted); padding: 1.5px 0; }
.mon-brow b { color: var(--text); font-variant-numeric: tabular-nums; }
.mon-mv-sec { padding: 10px 15px 4px; font-size: 10.5px; font-weight: 700; letter-spacing: .06em; color: var(--dim); }
.mon-mv { display: flex; align-items: center; gap: 10px; padding: 8px 15px; border-top: 1px solid var(--border); }
.mon-mv:hover { background: var(--hover); }
.mon-mv-n { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.mon-mv-p { color: var(--muted); font-size: 12px; font-variant-numeric: tabular-nums; }

/* kalender */
.kal-next { display: flex; flex-wrap: wrap; gap: 16px; justify-content: space-between; align-items: center; border-left: 3px solid var(--accent); }
.kal-next-l { display: flex; flex-direction: column; gap: 2px; }
.kal-next-k { color: var(--accent); font-size: 10.5px; font-weight: 700; letter-spacing: .08em; }
.kal-next-l b { font-size: 17px; }
.kal-next-r { display: flex; gap: 22px; }
.kal-kv { display: flex; flex-direction: column; }
.kal-kv span { color: var(--dim); font-size: 10.5px; letter-spacing: .05em; }
.kal-kv b { font-size: 15px; font-variant-numeric: tabular-nums; }
.kal-tbl td { padding: 9px 10px; }
.kal-past { opacity: .5; }
.kal-hl { background: var(--accent-dim); }
.kal-dot { display: inline-block; width: 8px; height: 8px; border-radius: 99px; margin-right: 4px; }
.kal-neg { background: var(--neg); } .kal-warn { background: var(--warn); } .kal-muted { background: var(--dim); }

/* renter / yield curve */
.crv-chart { padding: 8px 12px 0; }
.crv-note { margin: 6px 12px; padding: 11px 13px; background: var(--card-2); border: 1px solid var(--border); border-radius: 10px; font-size: 13px; line-height: 1.6; color: var(--muted); }
.crv-note b { color: var(--text); }

/* research / BI */
.bi-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
.bi-card { display: flex; flex-direction: column; gap: 7px; }
.bi-tag { align-self: flex-start; background: var(--violet-dim); color: var(--violet); font-size: 10px; font-weight: 800; letter-spacing: .08em; border-radius: 5px; padding: 2px 7px; }
.bi-card h3 { font-size: 15px; margin: 2px 0 0; }
.bi-card-foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: 8px; }
.bi-note-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; border-bottom: 1px solid var(--border); padding-bottom: 14px; margin-bottom: 14px; }
.bi-note-head h2 { font-size: 20px; margin: 5px 0 3px; }
.bi-body { font-size: 14px; }
.bi-foot { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--border); display: flex; align-items: center; gap: 7px; }

/* api */
.api-key .card-h { justify-content: space-between; }
.api-keybox { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 6px 0 10px; }
.api-keybox code { flex: 1; min-width: 220px; background: var(--card-3); border: 1px solid var(--border-2); border-radius: 8px; padding: 11px 13px; font-family: ui-monospace, Menlo, monospace; font-size: 13px; color: var(--accent); }
.api-tbl code { font-family: ui-monospace, Menlo, monospace; font-size: 12.5px; color: var(--text); }
.api-m { display: inline-block; font-size: 10.5px; font-weight: 800; border-radius: 5px; padding: 2px 8px; letter-spacing: .04em; }
.api-get { background: var(--pos-dim); color: var(--pos); }
.api-post { background: var(--accent2-dim); color: var(--accent-2); }
.api-ex { font-family: ui-monospace, Menlo, monospace; font-size: 11px; color: var(--dim); }
.api-exp { display: flex; align-items: center; gap: 12px; padding: 11px 14px; border-top: 1px solid var(--border); }
.api-exp:hover { background: var(--hover); }
.api-exp code { font-family: ui-monospace, Menlo, monospace; font-size: 12.5px; color: var(--accent); }
.api-exp .dim { flex: 1; }
.api-exp .ic { color: var(--muted); }
.api-code { margin: 0 12px 12px; padding: 13px 15px; background: var(--card-3); border: 1px solid var(--border); border-radius: 10px; overflow-x: auto; }
.api-code code { font-family: ui-monospace, Menlo, monospace; font-size: 12.5px; color: var(--text); white-space: pre; }
@media (max-width: 900px) { .mon-grid { grid-template-columns: 1fr; } }

/* ===== Global økonomi + Valuta ===== */
.glob-picker { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }
.glob-flag { display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border: 1px solid var(--border); border-radius: 99px; font-size: 12.5px; color: var(--muted); background: var(--card); }
.glob-flag:hover { border-color: var(--accent); color: var(--text); }
.glob-flag.active { background: var(--accent-dim); border-color: color-mix(in srgb, var(--accent) 40%, transparent); color: var(--accent); font-weight: 650; }
.glob-fl { font-size: 15px; }
.glob-head { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.glob-bigflag { font-size: 40px; line-height: 1; }
.glob-head h2 { font-size: 22px; margin: 0; }
.glob-fx { display: flex; align-items: baseline; gap: 10px; padding: 9px 14px; border-top: 1px solid var(--border); }
.glob-fx b { width: 46px; }
.glob-fx span:nth-child(2) { flex: 1; color: var(--muted); font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.glob-fx .nums { color: var(--text); font-weight: 600; }
/* FX-kalkulator */
.fx-calc { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 4px 12px 8px; }
.fx-amount { width: 150px; background: var(--input); border: 1px solid var(--border-2); border-radius: 9px; padding: 10px 12px; color: var(--text); font: inherit; font-size: 15px; outline: 0; }
.fx-amount:focus, .fx-sel:focus { border-color: var(--accent); }
.fx-sel { background: var(--input); border: 1px solid var(--border-2); border-radius: 9px; padding: 10px 12px; color: var(--text); font: inherit; font-size: 14px; outline: 0; }
.fx-eq { color: var(--dim); font-size: 18px; }
.fx-result { font-size: 20px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--accent); margin-left: 4px; }
/* monitor FX-stripe */
.mon-fxstrip { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 11px 16px; margin-bottom: 16px; }
.mon-fxstrip:hover { border-color: var(--accent); }
.mon-fxk { color: var(--dim); font-size: 10.5px; font-weight: 700; letter-spacing: .07em; }
.mon-fxi { font-size: 13px; color: var(--muted); }
.mon-fxi b { color: var(--text); margin-right: 5px; }
.mon-fxi .nums { color: var(--accent); font-weight: 600; }
.mon-fxd { margin-left: auto; color: var(--dim); font-size: 11px; }
@media (max-width: 700px) { .glob-bigflag { font-size: 30px; } .mon-fxd { display: none; } }

/* ===== Terminalmoduler II ===== */
/* screener + handel-form */
.scr-filter { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.scr-field { display: flex; flex-direction: column; gap: 4px; }
.scr-field label { color: var(--dim); font-size: 11px; font-weight: 600; letter-spacing: .03em; }
.scr-field input, .scr-field select, .handel-form input, .handel-form select { background: var(--input); border: 1px solid var(--border-2); border-radius: 8px; padding: 8px 10px; color: var(--text); font: inherit; font-size: 13px; outline: 0; min-width: 110px; }
.scr-field input:focus, .scr-field select:focus, .handel-form input:focus, .handel-form select:focus { border-color: var(--accent); }
.scr-check { justify-content: center; }
.scr-check label { display: flex; align-items: center; gap: 7px; color: var(--text); font-size: 13px; }
.scr-actions { display: flex; gap: 8px; align-items: flex-end; margin-left: auto; }
.handel-form { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.handel-form .scr-field { flex: 1; min-width: 150px; }
/* hendelser */
.hend-list { display: flex; flex-direction: column; }
.hend-row { display: flex; align-items: center; gap: 12px; padding: 10px 15px; border-top: 1px solid var(--border); }
.hend-row:hover { background: var(--hover); }
.hend-tid { color: var(--dim); font-size: 11.5px; width: 82px; flex: none; }
.hend-tekst { flex: 1; min-width: 0; font-size: 13.5px; }
.hend-link { color: var(--muted); flex: none; }
.hend-link:hover { color: var(--accent); }
/* verdikjede */
.vk-flow { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; padding: 8px 14px 18px; }
.vk-node { flex: 1; min-width: 130px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; padding: 16px 12px; background: var(--card-2); border: 1px solid var(--border); border-radius: 12px; }
.vk-node b { font-size: 14px; }
.vk-n { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 99px; background: var(--accent-dim); color: var(--accent); font-weight: 800; font-size: 15px; }
.vk-arrow { color: var(--dim); flex: none; }
/* alt-bars (altdata, datakvalitet, portefølje) */
.alt-bars { display: flex; flex-direction: column; gap: 9px; padding: 6px 15px 15px; }
.alt-bar { display: flex; align-items: center; gap: 10px; }
.alt-bl { width: 180px; flex: none; font-size: 12.5px; color: var(--muted); }
.alt-track { flex: 1; height: 9px; background: var(--card-3); border-radius: 99px; overflow: hidden; }
.alt-fill { display: block; height: 100%; background: var(--accent); border-radius: 99px; }
.alt-bn { width: 48px; text-align: right; flex: none; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--text); }
/* graf */
.graf-controls { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; padding: 13px 15px 4px; }
.graf-series { display: flex; gap: 6px; flex-wrap: wrap; }
.graf-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border: 1px solid var(--border); border-radius: 99px; font-size: 12.5px; color: var(--muted); cursor: pointer; }
.graf-chip input { display: none; }
.graf-chip:has(input:checked) { border-color: var(--accent); color: var(--text); background: var(--accent-dim); }
.graf-opts { margin-left: auto; display: flex; gap: 8px; }
.graf-opts select { background: var(--input); border: 1px solid var(--border-2); border-radius: 8px; padding: 7px 10px; color: var(--text); font: inherit; font-size: 12.5px; outline: 0; }
/* TV */
.tv-screen { padding: 0; overflow: hidden; }
.tv-topbar { display: flex; align-items: center; gap: 10px; padding: 11px 15px; background: #0b0f16; color: #e7e2d7; font-size: 12px; font-weight: 700; letter-spacing: .06em; font-family: ui-monospace, Menlo, monospace; }
.tv-badge { color: #f87171; }
.tv-clock { margin-left: auto; color: #8b8677; }
.tv-body { padding: 18px 18px 8px; min-height: 220px; }
.tv-hero { text-align: center; padding: 40px 10px; }
.tv-play { display: inline-grid; place-items: center; width: 54px; height: 54px; border-radius: 99px; background: var(--accent-dim); color: var(--accent); font-size: 20px; margin-bottom: 12px; }
.tv-ticker { display: flex; gap: 26px; padding: 9px 15px; background: #0b0f16; color: #e7e2d7; font-size: 11.5px; font-weight: 650; letter-spacing: .04em; overflow-x: auto; white-space: nowrap; font-family: ui-monospace, Menlo, monospace; }
.tv-liveblink { width: 9px; height: 9px; border-radius: 99px; background: var(--neg); display: inline-block; animation: tvblink 1.2s infinite; }
@keyframes tvblink { 0%, 100% { opacity: 1; } 50% { opacity: .3; } }
.tv-seg { display: flex; align-items: center; gap: 12px; padding: 10px 15px; border-top: 1px solid var(--border); }
.tv-segtid { color: var(--accent); font-weight: 700; width: 48px; flex: none; }
.tv-segbody { flex: 1; display: flex; flex-direction: column; }
/* launchpad */
.lp-settings { margin-bottom: 14px; }
.lp-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.lp-chip { display: inline-flex; align-items: center; gap: 7px; padding: 7px 12px; border: 1px solid var(--border); border-radius: 99px; font-size: 13px; color: var(--muted); cursor: pointer; }
.lp-chip input { accent-color: var(--accent); }
.lp-chip.on { border-color: var(--accent); color: var(--text); background: var(--accent-dim); }
.lp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 14px; }
.lp-w { padding: 0; }
.lp-w .card-h { padding: 13px 15px 4px; }
.lp-stat { display: flex; justify-content: space-between; padding: 7px 15px; font-size: 13px; color: var(--muted); border-top: 1px solid var(--border); }
.lp-stat b { color: var(--text); font-variant-numeric: tabular-nums; }
.lp-row { display: flex; justify-content: space-between; gap: 8px; padding: 8px 15px; border-top: 1px solid var(--border); font-size: 13px; }
.lp-row:hover { background: var(--hover); }
/* etterlevelse */
.etl-row { display: flex; align-items: center; gap: 12px; padding: 11px 15px; border-top: 1px solid var(--border); }
.etl-ok { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 99px; background: var(--pos-dim); color: var(--pos); flex: none; }
.etl-body { flex: 1; display: flex; flex-direction: column; }

/* ---------- Eiendomsdossier / cockpit ---------- */
.dossier-strip { display: flex; gap: 10px; overflow-x: auto; padding: 2px 0 4px; margin: 0 0 14px; }
.dchip { flex: 0 0 auto; display: flex; flex-direction: column; gap: 1px; padding: 8px 13px; border: 1px solid var(--border); border-radius: 11px; background: var(--card-2, var(--card)); min-width: 120px; }
.dchip-k { font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.dchip b { font-size: 13.5px; display: flex; align-items: center; gap: 5px; }
.dchip-t { font-size: 11px; color: var(--muted); }
.dossier-h { font-weight: 700; letter-spacing: .06em; text-transform: uppercase; font-size: 10.5px; margin-bottom: 7px; }
.energi-karakter { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 5px; color: #fff; font-weight: 800; font-size: 12px; }
/* ---------- Deal pipeline (Kanban) ---------- */
.kanban { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 10px; align-items: flex-start; }
.kan-col { flex: 0 0 264px; background: var(--card-2, rgba(127,127,127,.05)); border: 1px solid var(--border); border-radius: 12px; padding: 10px; }
.kan-h { display: flex; align-items: center; justify-content: space-between; font-weight: 700; font-size: 12.5px; margin-bottom: 9px; padding: 0 3px; }
.kan-h .kan-n { background: var(--accent-dim); color: var(--accent); border-radius: 99px; padding: 1px 8px; font-size: 11px; }
.kan-card { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 10px 11px; margin-bottom: 9px; cursor: grab; transition: box-shadow .12s, transform .12s; }
.kan-card:hover { box-shadow: 0 3px 12px rgba(0,0,0,.12); }
.kan-card.dragging { opacity: .5; }
.kan-col.dragover { outline: 2px dashed var(--accent); outline-offset: -2px; }
.kan-title { font-weight: 650; font-size: 13px; margin-bottom: 4px; line-height: 1.25; }
.kan-meta { font-size: 11.5px; color: var(--muted); display: flex; flex-direction: column; gap: 2px; }
.kan-prob { height: 4px; border-radius: 3px; background: var(--border); margin-top: 7px; overflow: hidden; }
.kan-prob > span { display: block; height: 100%; background: var(--accent); }
