:root {
  color-scheme: dark;
  --bg-0:#0a0d12; --bg-1:#11161d; --bg-2:#161b22; --bg-3:#1c2530;
  --border:#21262d; --border-2:#30363d;
  --text-0:#f0f6fc; --text-1:#e0e6ed; --text-2:#8b95a3; --text-3:#7d8694;
  --green:#3fb27f; --green-soft:rgba(63,178,127,.15);
  --red:#f85149; --red-soft:rgba(248,81,73,.15);
  --orange:#e0a060; --orange-soft:rgba(224,160,96,.15);
  --blue:#1f6feb; --blue-soft:rgba(31,111,235,.15);
  --purple:#9d6cf0; --purple-soft:rgba(157,108,240,.15);
}
* { box-sizing:border-box; margin:0; padding:0; forced-color-adjust:none; }
html,body { background:var(--bg-0); }
body { font-family:'IBM Plex Sans',-apple-system,sans-serif; color:var(--text-1);
  font-size:14px; line-height:1.5; min-height:100vh; -webkit-font-smoothing:antialiased; }
.mono { font-family:'JetBrains Mono',monospace; font-variant-numeric:tabular-nums; }
.pos { color:var(--green); } .neg { color:var(--red); } .warn { color:var(--orange); }

.topnav { display:flex; align-items:center; justify-content:space-between; padding:13px 24px;
  background:var(--bg-1); border-bottom:1px solid var(--border); position:sticky; top:0; z-index:100; }
.brand { display:flex; align-items:center; gap:10px; font-weight:700; font-size:16px; letter-spacing:-.01em; }
.brand-logo { width:28px; height:28px; background:linear-gradient(135deg,var(--green),#2e8a60);
  border-radius:6px; display:flex; align-items:center; justify-content:center; color:#fff;
  font-weight:700; font-size:13px; font-family:'JetBrains Mono',monospace; }
.brand small { color:var(--text-3); font-weight:400; font-size:12px; margin-left:6px; }
.tabs { display:flex; gap:2px; }
.tab { padding:8px 14px; background:transparent; color:var(--text-2); border:none; border-radius:6px;
  font-size:13px; font-weight:500; font-family:inherit; cursor:pointer; display:flex; align-items:center; gap:6px; transition:all .12s; }
.tab:hover { background:var(--bg-3); color:var(--text-1); }
.tab.active { background:var(--bg-3); color:var(--green); }
.tab .badge { background:var(--red); color:#fff; font-size:10px; padding:1px 6px; border-radius:8px; font-weight:700; }
.topnav-right { display:flex; align-items:center; gap:12px; }
.search { display:flex; align-items:center; gap:8px; background:var(--bg-3); border:1px solid var(--border-2);
  padding:6px 12px; border-radius:6px; font-size:13px; color:var(--text-2); min-width:200px; }
.search input { background:transparent; border:none; color:var(--text-1); font-family:inherit; font-size:13px; outline:none; flex:1; }
.refresh-btn { background:var(--blue); color:#fff; border:none; padding:7px 14px; border-radius:6px;
  font-size:13px; font-weight:500; cursor:pointer; font-family:inherit; display:flex; align-items:center; gap:6px; }

/* MODUS BAR */
.modus-bar { display:flex; align-items:center; gap:10px; padding:9px 24px; background:var(--bg-1);
  border-bottom:1px solid var(--border); flex-wrap:wrap; }
.modus-bar .mlbl { font-size:10px; text-transform:uppercase; letter-spacing:.8px; color:var(--text-3); font-weight:600; }
.mb { background:var(--bg-2); border:1px solid var(--border-2); color:var(--text-2); padding:6px 13px;
  border-radius:7px; font-size:12px; cursor:pointer; font-family:inherit; }
.mframe { margin-left:auto; font-size:12px; color:var(--blue); }

/* MACRO BAR */
.macro-bar { display:flex; gap:0; background:var(--bg-1); border-bottom:1px solid var(--border);
  padding:10px 24px; font-size:13px; overflow-x:auto; }
.macro-item { display:flex; align-items:baseline; gap:8px; padding:0 16px; border-right:1px solid var(--border); white-space:nowrap; }
.macro-item:last-child { border-right:none; } .macro-item:first-child { padding-left:0; }
.macro-label { color:var(--text-3); font-size:11px; text-transform:uppercase; letter-spacing:.5px; font-weight:600; }
.macro-value { color:var(--text-0); font-weight:600; } .macro-chg { font-size:12px; font-weight:500; }

/* v32.1: mykt tak 2000px (full bredde ga rot ved browser-zoom) — litt bredere enn gamle 1800.
   v32.2: minmax(0,1fr) + min-width:0 — uten dette kan venstrekolonnen aldri bli SMALERE enn
   chart-canvasens faste pikselbredde (grid min-width:auto-fella) → zoom inn blåste layouten
   ut til høyre med horisontal scroll. minmax(0,…) lar kolonnen krympe; chartene følger etter
   via ResizeObserver i detaljer.js. */
.main { display:grid; grid-template-columns:minmax(0,1fr) 360px; gap:16px; padding:16px 20px; max-width:2000px; margin:0 auto; }
@media (max-width:1200px) { .main { grid-template-columns:1fr; } }
.col-left,.col-right { display:flex; flex-direction:column; gap:16px; min-width:0; }

.hero { background:var(--bg-2); border:1px solid var(--border); border-radius:10px; padding:18px 22px;
  display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:16px; }
.hero-left { flex:1; }
.hero-ticker { display:flex; align-items:center; gap:12px; margin-bottom:6px; }
.hero-ticker h1 { font-size:28px; font-weight:700; letter-spacing:-.02em; color:var(--text-0); }
.hero-ticker .full-name { color:var(--text-3); font-size:14px; border-left:1px solid var(--border-2); padding-left:12px; }
.hero-ticker .exchange-tag { background:var(--bg-3); color:var(--text-2); padding:3px 8px; border-radius:4px; font-size:11px; font-weight:600; letter-spacing:.5px; }
.hero-ticker .mode-tag { background:var(--blue-soft); color:var(--blue); padding:3px 8px; border-radius:4px; font-size:11px; font-weight:600; letter-spacing:.5px; }
.price-row { display:flex; align-items:baseline; gap:14px; margin-top:4px; }
.price { font-size:42px; font-weight:600; color:var(--text-0); font-family:'JetBrains Mono',monospace; letter-spacing:-.02em; }
.currency { color:var(--text-2); font-size:16px; font-weight:500; }
.change-pill { display:flex; align-items:center; gap:6px; padding:4px 10px; border-radius:20px; font-size:13px; font-weight:600; background:var(--bg-3); color:var(--text-2); }
.change-pill.pos { background:var(--green-soft); color:var(--green); }
.change-pill.neg { background:var(--red-soft); color:var(--red); }
.live-dot { width:6px; height:6px; border-radius:50%; animation:pulse 1.6s infinite; }
.change-pill.pos .live-dot { background:var(--green); }
.change-pill.neg .live-dot { background:var(--red); }
@keyframes pulse { 0%,100%{opacity:1;} 50%{opacity:.3;} }
.hero-meta { color:var(--text-3); font-size:13px; margin-top:6px; display:flex; gap:14px; flex-wrap:wrap; }
.hero-meta .dot { color:var(--border-2); }
.hero-right { text-align:right; }
.last-update { font-size:11px; color:var(--text-3); text-transform:uppercase; letter-spacing:.5px; font-weight:600; }
.last-update-time { font-size:14px; color:var(--text-1); margin-top:4px; font-family:'JetBrains Mono',monospace; }
.edge-badge { margin-top:10px; background:var(--bg-1); border:1px solid var(--border-2); border-radius:8px; padding:8px 12px; }
.edge-badge .el { font-size:10px; text-transform:uppercase; letter-spacing:.8px; color:var(--text-3); font-weight:600; }
.edge-badge .ev { font-size:26px; font-weight:700; color:var(--green); font-family:'JetBrains Mono',monospace; }
.edge-badge .ev small { font-size:13px; color:var(--text-3); font-weight:400; }

/* Ikke-equity referansepapirer: badge i hero + kontekst-note over KPIene */
.ref-badge { margin-top:10px; display:inline-block; background:var(--blue-soft);
  border:1px solid var(--blue); color:var(--blue); border-radius:8px;
  padding:6px 12px; font-size:11px; font-weight:600; text-transform:uppercase;
  letter-spacing:.8px; }
.ref-view-note { display:flex; gap:12px; align-items:flex-start;
  background:var(--bg-2); border:1px solid var(--border); border-left:3px solid var(--blue);
  border-radius:10px; padding:14px 18px; margin-bottom:16px;
  color:var(--text-2); font-size:13px; line-height:1.6; }
.ref-view-note strong { color:var(--text-1); }
.ref-view-icon { color:var(--blue); font-size:16px; line-height:1.4; flex-shrink:0; }

.kpi-section { background:var(--bg-2); border:1px solid var(--border); border-radius:10px; padding:16px; }
.kpi-section-title { font-size:11px; text-transform:uppercase; letter-spacing:1px; color:var(--text-3); font-weight:600; margin-bottom:12px; display:flex; align-items:center; gap:8px; }
.kpi-section-title::after { content:''; flex:1; height:1px; background:var(--border); }
.kpi-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:10px; }
@media (max-width:1100px){ .kpi-grid{ grid-template-columns:repeat(3,1fr);} }
@media (max-width:600px){ .kpi-grid{ grid-template-columns:repeat(2,1fr);} }
.kpi { background:var(--bg-1); border:1px solid var(--border); border-radius:8px; padding:12px 14px; position:relative; overflow:hidden; }
.kpi::before { content:''; position:absolute; left:0; top:0; bottom:0; width:2px; background:var(--border-2); }
.kpi.k-pos::before{background:var(--green);} .kpi.k-neg::before{background:var(--red);}
.kpi.k-warn::before{background:var(--orange);} .kpi.k-info::before{background:var(--blue);}
.kpi-label { font-size:10px; text-transform:uppercase; letter-spacing:.8px; color:var(--text-3); font-weight:600; margin-bottom:4px; }
.kpi-value { font-size:20px; font-weight:600; font-family:'JetBrains Mono',monospace; color:var(--text-0); }
.kpi-value small { font-size:11px; color:var(--text-3); font-weight:400; }
.kpi-sub { font-size:11px; color:var(--text-3); margin-top:2px; }

.card { background:var(--bg-2); border:1px solid var(--border); border-radius:10px; padding:18px; }
.card-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; }
.card-title { font-size:12px; text-transform:uppercase; letter-spacing:1px; color:var(--text-3); font-weight:600; }
.card-title-row { display:flex; align-items:baseline; gap:12px; }
.card-title-row h3 { font-size:15px; color:var(--text-0); font-weight:600; }
.chart-controls { display:flex; gap:4px; }
.chart-tab { padding:4px 10px; font-size:12px; background:transparent; border:1px solid var(--border-2); color:var(--text-2); border-radius:4px; cursor:pointer; font-family:inherit; }
.chart-tab.active { background:var(--bg-3); color:var(--text-0); }
.chart-svg { width:100%; height:auto; display:block; }
.chart-legend { display:flex; gap:18px; margin-top:10px; font-size:12px; color:var(--text-2); flex-wrap:wrap; }
.legend-swatch { display:inline-block; width:14px; height:3px; margin-right:6px; vertical-align:middle; border-radius:1px; }
.legend-swatch.dashed { background-image:linear-gradient(to right,currentColor 50%,transparent 50%); background-size:6px 100%; }

/* CONVICTION (Edge Score lag) */
.conv-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:700px){ .conv-grid{ grid-template-columns:1fr; } }
.conv-row { display:flex; align-items:center; gap:10px; margin-bottom:9px; }
.conv-row .k { width:92px; font-size:12px; color:var(--text-2); }
.conv-track { flex:1; height:7px; background:var(--bg-1); border-radius:4px; overflow:hidden; }
.conv-fill { height:100%; border-radius:4px; }
.conv-note { font-size:11px; color:var(--text-3); width:128px; }

/* CLAUDE PANEL */
.claude-panel { background:linear-gradient(135deg,rgba(157,108,240,.06),rgba(31,111,235,.04));
  border:1px solid var(--purple-soft); border-radius:10px; padding:18px; position:relative; overflow:hidden; }
.claude-panel::before { content:''; position:absolute; top:0; right:0; bottom:0; width:3px; background:linear-gradient(180deg,var(--purple),var(--blue)); }
.claude-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; flex-wrap:wrap; gap:8px; }
.claude-badge { display:flex; align-items:center; gap:8px; font-size:12px; font-weight:600; color:var(--purple); text-transform:uppercase; letter-spacing:1px; }
.claude-icon { width:18px; height:18px; background:linear-gradient(135deg,var(--purple),var(--blue)); border-radius:4px; display:flex; align-items:center; justify-content:center; color:#fff; font-size:11px; font-weight:700; }
.claude-meta { font-size:11px; color:var(--text-3); }
.claude-summary-row { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-bottom:14px; }
.claude-stat { background:var(--bg-1); border:1px solid var(--border); border-radius:6px; padding:10px 12px; }
.claude-stat-label { font-size:10px; text-transform:uppercase; letter-spacing:.8px; color:var(--text-3); margin-bottom:4px; font-weight:600; }
.claude-stat-value { font-size:16px; font-weight:600; color:var(--text-0); }
.claude-stat-value.neutral { color:var(--orange); }
.claude-text { font-size:14px; line-height:1.6; color:var(--text-1); }
.claude-text p { margin-bottom:10px; } .claude-text p:last-child { margin-bottom:0; }
.claude-text strong { color:var(--text-0); font-weight:600; }
.claude-text .highlight { background:rgba(157,108,240,.12); padding:1px 5px; border-radius:3px; }
.claude-tags { display:flex; gap:6px; margin-top:14px; flex-wrap:wrap; }
.claude-tag { font-size:11px; background:var(--bg-1); border:1px solid var(--border-2); color:var(--text-2); padding:3px 8px; border-radius:4px; }
.claude-actions { display:flex; gap:8px; margin-top:14px; flex-wrap:wrap; }
.claude-btn { font-size:12px; padding:6px 12px; background:transparent; border:1px solid var(--border-2); color:var(--text-1); border-radius:5px; cursor:pointer; font-family:inherit; }
.claude-btn.primary { background:var(--purple); border-color:var(--purple); color:#fff; }

table { width:100%; border-collapse:collapse; }
.fund-table td { padding:8px 0; border-bottom:1px solid var(--border); font-size:13px; }
.fund-table td:first-child { color:var(--text-2); }
.fund-table td:last-child { text-align:right; font-weight:600; color:var(--text-0); font-family:'JetBrains Mono',monospace; }
.fund-table tr:last-child td { border-bottom:none; }

.signals-row { display:flex; justify-content:space-between; align-items:center; padding:8px 0; border-bottom:1px solid var(--border); font-size:13px; }
.signals-row:last-child { border-bottom:none; }
.signals-label { color:var(--text-2); }
.chip { display:inline-block; padding:3px 9px; border-radius:5px; font-size:12px; font-weight:600; }
.chip-pos{background:var(--green-soft);color:var(--green);} .chip-neg{background:var(--red-soft);color:var(--red);}
.chip-warn{background:var(--orange-soft);color:var(--orange);} .chip-neutral{background:var(--bg-3);color:var(--text-2);}

/* POSITIONS TABLE */
.pos-table { font-size:13px; }
.pos-table thead th { text-align:left; font-size:11px; color:var(--text-3); text-transform:uppercase; letter-spacing:.5px; font-weight:600; padding:8px 10px; }
.pos-table thead th.r { text-align:right; }
.pos-table tbody td { padding:9px 10px; border-top:1px solid var(--border); }
.pos-table tbody td.r { text-align:right; font-family:'JetBrains Mono',monospace; }
.tag { padding:2px 7px; border-radius:5px; font-size:11px; }
.tag-cfd{background:var(--blue-soft);color:#6ea8fb;} .tag-cash{background:var(--green-soft);color:var(--green);}

.exp-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
@media (max-width:700px){ .exp-grid{ grid-template-columns:repeat(2,1fr);} }

.sect-bar { display:flex; height:10px; border-radius:5px; overflow:hidden; }
.legend { display:flex; gap:16px; margin-top:8px; font-size:12px; color:var(--text-2); flex-wrap:wrap; }
.sw { display:inline-block; width:10px; height:10px; border-radius:2px; vertical-align:middle; margin-right:5px; }

/* ALERTS / NEWS / RIGHT */
.alerts-list { display:flex; flex-direction:column; gap:8px; }
.alert-item { display:flex; gap:10px; padding:10px; background:var(--bg-1); border:1px solid var(--border); border-radius:6px; border-left:3px solid var(--orange); }
.alert-item.alert-pos{border-left-color:var(--green);} .alert-item.alert-neg{border-left-color:var(--red);} .alert-item.alert-info{border-left-color:var(--blue);}
.alert-icon { width:28px; height:28px; background:var(--bg-3); border-radius:6px; display:flex; align-items:center; justify-content:center; font-size:14px; flex-shrink:0; }
.alert-content { flex:1; min-width:0; }
.alert-row { display:flex; justify-content:space-between; align-items:baseline; gap:8px; }
.alert-ticker { font-weight:600; font-size:13px; color:var(--text-0); }
.alert-time { font-size:11px; color:var(--text-3); white-space:nowrap; }
.alert-msg { font-size:12px; color:var(--text-2); margin-top:2px; }
.news-list { display:flex; flex-direction:column; gap:10px; }
.news-item { padding:10px 0; border-bottom:1px solid var(--border); }
.news-item:last-child { border-bottom:none; }
.news-source { font-size:10px; text-transform:uppercase; letter-spacing:.8px; color:var(--text-3); font-weight:600; display:flex; gap:6px; align-items:center; margin-bottom:4px; }
.news-source .source-tag { background:var(--bg-3); padding:1px 6px; border-radius:3px; color:var(--text-2); }
.news-title { font-size:13px; color:var(--text-1); font-weight:500; line-height:1.4; }
.news-claude { font-size:12px; color:var(--text-2); margin-top:5px; border-left:2px solid var(--purple); padding-left:9px; line-height:1.5; }
.news-sentiment { display:inline-block; font-size:10px; padding:1px 6px; border-radius:3px; font-weight:600; text-transform:uppercase; letter-spacing:.5px; margin-top:5px; }
.news-sentiment.pos{background:var(--green-soft);color:var(--green);} .news-sentiment.neg{background:var(--red-soft);color:var(--red);} .news-sentiment.neu{background:var(--bg-3);color:var(--text-2);}
.corr-grid { display:grid; grid-template-columns:64px repeat(6,1fr); gap:2px; font-family:'JetBrains Mono',monospace; font-size:11px; }
.corr-cell { padding:8px 4px; text-align:center; border-radius:3px; color:var(--text-1); background:var(--bg-3); }
.corr-header { font-size:10px; color:var(--text-3); font-weight:600; }
.corr-row-label { font-size:11px; color:var(--text-2); padding:8px 6px; text-align:right; font-weight:600; }
.footer { padding:18px 24px; text-align:center; font-size:11px; color:var(--text-3); border-top:1px solid var(--border); margin-top:16px; }
.cluster-note { display:flex; gap:8px; align-items:flex-start; background:var(--orange-soft); border:1px solid rgba(200,130,50,.3); border-radius:6px; padding:9px 12px; margin-top:10px; font-size:12px; color:var(--orange); }

/* ===== Flask-tillegg: lenke-faner + Oversikt-side ===== */
a.tab { text-decoration:none; }
.ov-wrap { max-width:2000px; margin:0 auto; padding:16px 20px; display:flex; flex-direction:column; gap:16px; }
.ov-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; }
.ov-table { width:100%; border-collapse:collapse; font-size:13px; }
.ov-table thead th { text-align:left; font-size:11px; color:var(--text-3); text-transform:uppercase;
  letter-spacing:.5px; font-weight:600; padding:9px 10px; border-bottom:1px solid var(--border-2);
  cursor:pointer; user-select:none; white-space:nowrap; }
.ov-table thead th.r { text-align:right; }
.ov-table thead th:hover { color:var(--text-1); }
.ov-table th.sorted-asc::after { content:' \2191'; color:var(--green); }
.ov-table th.sorted-desc::after { content:' \2193'; color:var(--green); }
.ov-table tbody td { padding:10px; border-bottom:1px solid var(--border); }
.ov-table tbody tr { cursor:pointer; transition:background .1s; }
.ov-table tbody tr:hover { background:var(--bg-3); }
.ov-table tbody tr:last-child td { border-bottom:none; }
.ov-table td.r { text-align:right; font-variant-numeric:tabular-nums; }
.ov-table .tk { font-weight:600; color:var(--text-0); }
.ov-table .nm { color:var(--text-3); font-size:12px; }
.ov-ccy { color:var(--text-3); font-size:11px; }
.ov-empty { padding:40px 20px; text-align:center; color:var(--text-3); font-size:13px; line-height:1.8; }

/* ── Watchlist fase 1: filterbar + favorittstjerne + sparkline ── */
.ov-filters { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:4px 2px 14px; }
.ov-filters .filt-group { display:flex; gap:6px; flex-wrap:wrap; }
.ov-filters .filt-sep { width:1px; height:20px; background:var(--border-2); margin:0 4px; }
.filt { background:var(--bg-2); border:1px solid var(--border-2); color:var(--text-2);
  padding:5px 11px; border-radius:6px; font-size:12px; font-weight:600; cursor:pointer;
  font-family:inherit; white-space:nowrap; transition:background .12s,color .12s,border-color .12s; }
.filt:hover { background:var(--bg-3); color:var(--text-1); }
.filt.active { background:var(--blue-soft); color:var(--blue); border-color:var(--blue); }
.filt-star.active { background:var(--orange-soft); color:var(--orange); border-color:var(--orange); }
.filt-count { margin-left:auto; font-size:11px; color:var(--text-3); font-family:'JetBrains Mono',monospace;
  white-space:nowrap; align-self:center; }
.ov-noresult { padding:28px 20px; text-align:center; color:var(--text-3); font-size:13px; }

.ov-table th.c-star, .ov-table td.c-star { width:34px; text-align:center; padding-left:6px; padding-right:6px; cursor:default; }
.ov-table th.c-star:hover { color:var(--text-3); }
.ov-table th.sortable { cursor:pointer; }
.ov-table th:not(.sortable):hover { color:var(--text-3); }
.star { background:none; border:none; cursor:pointer; font-size:15px; line-height:1; padding:2px 4px;
  color:var(--text-3); transition:color .12s,transform .08s; }
.star:hover { color:var(--orange); transform:scale(1.15); }
.star.on { color:var(--orange); }
.star:disabled { opacity:.5; cursor:default; }

.ov-table th.c-spark, .ov-table td.c-spark { width:90px; text-align:center; cursor:default; padding:6px 8px; }
.ov-table th.c-spark:hover { color:var(--text-3); }
svg.spark { width:84px; height:24px; display:inline-block; vertical-align:middle; }

/* ===== Sammenligning ===== */
.cmp-wrap { max-width:2000px; margin:0 auto; padding:16px 20px; display:flex; flex-direction:column; gap:16px; }
.cmp-hint { color:var(--text-3); font-size:12px; margin:6px 0 0; }
.cmp-actions { display:flex; gap:8px; flex-wrap:wrap; }
.btn-link { padding:6px 12px; background:transparent; color:var(--text-3); border:1px solid var(--border-2);
  border-radius:6px; cursor:pointer; font-size:12px; font-family:inherit; }
.btn-link:hover { color:var(--text-1); background:var(--bg-3); }
.cmp-chart-head { display:flex; align-items:center; justify-content:space-between; gap:16px;
  flex-wrap:wrap; margin-bottom:12px; }
.cmp-chart { width:100%; min-height:200px; }
.cmp-empty { padding:50px 20px; text-align:center; color:var(--text-3); font-size:13px; line-height:1.8; }
.cmp-legend { display:flex; gap:16px; flex-wrap:wrap; }
.cmp-legend-item { display:inline-flex; align-items:center; gap:6px; font-size:12px; }
.cmp-legend-sw { display:inline-block; width:14px; height:3px; border-radius:1px; }
.cmp-legend-lbl { color:var(--text-1); font-weight:600; }
.cmp-legend-pct { font-variant-numeric:tabular-nums; }
.cmp-legend-pct.pos { color:var(--green); }
.cmp-legend-pct.neg { color:var(--red); }

/* ===== Søkbar multi-select (gjenbrukbar: .ms-root) ===== */
.ms-root { position:relative; margin:14px 0; }
.ms-control { display:flex; flex-wrap:wrap; align-items:center; gap:6px; min-height:42px;
  padding:6px 8px; background:var(--bg-1); border:1px solid var(--border-2); border-radius:8px;
  cursor:text; }
.ms-control:focus-within { border-color:var(--blue); }
.ms-chips { display:flex; flex-wrap:wrap; gap:6px; }
.ms-chip { display:inline-flex; align-items:center; gap:6px; padding:4px 6px 4px 8px;
  background:var(--bg-3); border:1px solid var(--border-2); border-radius:6px; font-size:12px;
  font-family:'JetBrains Mono',monospace; }
.ms-chip-sw { width:10px; height:3px; border-radius:1px; }
.ms-chip-lbl { color:var(--text-1); }
.ms-chip-x { background:none; border:none; color:var(--text-3); cursor:pointer; font-size:15px;
  line-height:1; padding:0 2px; }
.ms-chip-x:hover { color:var(--red); }
.ms-input { flex:1; min-width:140px; border:none; background:transparent; color:var(--text-1);
  font-size:13px; font-family:inherit; outline:none; padding:4px; }
.ms-input::placeholder { color:var(--text-3); }
.ms-dropdown { position:absolute; left:0; right:0; top:calc(100% + 4px); z-index:40;
  max-height:340px; overflow-y:auto; background:var(--bg-2); border:1px solid var(--border-2);
  border-radius:8px; box-shadow:0 12px 32px rgba(0,0,0,.45); }
.ms-group { padding:8px 12px 4px; font-size:10px; text-transform:uppercase; letter-spacing:.6px;
  color:var(--text-3); font-weight:600; position:sticky; top:0; background:var(--bg-2); }
.ms-option { display:flex; align-items:center; gap:10px; padding:8px 12px; cursor:pointer;
  font-size:13px; font-family:'JetBrains Mono',monospace; }
.ms-option:hover, .ms-option.active { background:var(--bg-3); }
.ms-option.selected { color:var(--text-0); }
.ms-sw { width:12px; height:3px; border-radius:1px; flex:none; }
.ms-opt-lbl { flex:1; }
.ms-opt-badge { font-size:10px; color:var(--text-3); border:1px solid var(--border-2);
  border-radius:4px; padding:1px 5px; }
.ms-opt-check { color:var(--green); width:14px; text-align:center; }
.ms-noresult { padding:14px 12px; color:var(--text-3); font-size:13px; text-align:center; }

/* ===== Detaljer: switcher, graf, plassholdere ===== */
.det-switch { background:var(--bg-1); color:var(--text-1); border:1px solid var(--border-2);
  border-radius:6px; padding:4px 8px; font-size:12px; font-family:'JetBrains Mono',monospace;
  cursor:pointer; margin-left:8px; }
.det-switch:hover { border-color:var(--blue); }
.det-chart { width:100%; min-height:200px; }
/* v55: kontrollgruppe i graf-headeren (iv-velger + perioder + ⛶/↗).
   Flex med gap — ingen item-marginer (flexbox-fella). */
.chart-ctl-group { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.chart-icon-btn { display:inline-flex; align-items:center; justify-content:center;
  min-width:26px; padding:3px 8px; border:1px solid var(--border-2); border-radius:5px;
  background:transparent; color:var(--text-2); font-size:13px; line-height:1;
  cursor:pointer; text-decoration:none; font-family:'JetBrains Mono',monospace; }
.chart-icon-btn:hover { color:var(--text-1); border-color:var(--text-3); }
/* v55: stor skjerm — graf-kortet legges over dashbordet. box-shadow-spread
   dimmer alt bak uten ekstra backdrop-element. */
#detChartCard.chart-max { position:fixed; inset:12px; z-index:1200; margin:0;
  overflow:auto; background:var(--bg-1); border:1px solid var(--border-2);
  border-radius:10px; box-shadow:0 0 0 100vmax rgba(4,6,9,.66); }
body.chart-max-open { overflow:hidden; }
/* v55: intradag-oppløsning aktiv — daglige legend-poster + overlay-chips dimmes
   (MA/fib/formasjoner/S/R/VP/pivoter er avledet av DAGLIGE data). */
.chart-legend.iv-dim .lg-daily, .chart-legend.iv-dim .ov-chip { opacity:.32; pointer-events:none; }
.iv-note { font-size:11px; color:var(--orange); }
/* v55: dedikert /graf/-side (egen fane / egen skjerm) */
body.graf-page { margin:0; background:var(--bg-0); }
.graf-wrap { padding:12px; }
.graf-wrap .card { margin:0; }
.graf-sym { color:var(--green); }
body.graf-page #chartMaxBtn { display:none; }
/* v54: crosshair-readout over hovedgrafen (OHLC · ±% · vol · MA). Egen flex-rad
   med gap (ALDRI margin på items — flexbox-fella). min-height hindrer layout-hopp. */
.chart-readout { display:flex; flex-wrap:wrap; gap:4px 14px; margin:2px 0 6px;
  font-size:11px; line-height:16px; min-height:16px; color:var(--text-3); letter-spacing:.2px; }
.chart-readout b { font-weight:600; color:var(--text-1); }
.chart-readout .ro-d { color:var(--text-2); }
.chart-readout .ro-live { color:var(--orange); }
.chart-readout .pos { color:var(--green); }
.chart-readout .neg { color:var(--red); }
.rsi-sub-head { display:flex; align-items:baseline; justify-content:space-between;
  margin-top:14px; padding-top:12px; border-top:1px solid var(--border);
  font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.8px; color:var(--purple); }
.rsi-sub-head .rsi-sub-note { color:var(--text-3); font-weight:400; text-transform:none; letter-spacing:0; }
/* v54: live indikator-verdi i sub-head (RSI / MACD under crosshair) */
.rsi-sub-head .sub-val { margin-left:8px; color:var(--text-1); font-weight:600;
  text-transform:none; letter-spacing:0; }
.det-rsi { width:100%; min-height:120px; margin-top:4px; }

/* Ærlige plassholdere */
.ph-body { padding:20px 18px; color:var(--text-3); font-size:13px; line-height:1.7;
  background:repeating-linear-gradient(45deg, transparent, transparent 9px, rgba(125,134,148,.04) 9px, rgba(125,134,148,.04) 18px);
  border:1px dashed var(--border-2); border-radius:8px; }
.ph-tag { font-size:10px; letter-spacing:.6px; color:var(--text-3); border:1px solid var(--border-2);
  border-radius:4px; padding:2px 7px; text-transform:uppercase; font-weight:600; }
.ph-inline { opacity:.55; }
.ph-claude { opacity:.92; }
.ph-claude .ph-body { background:repeating-linear-gradient(45deg, transparent, transparent 9px, rgba(157,108,240,.06) 9px, rgba(157,108,240,.06) 18px);
  border-color:rgba(157,108,240,.3); }

/* ===== Detaljer: conviction-lag + sizing-noter ===== */
.conv-grid { display:flex; flex-direction:column; gap:14px; }
.conv-row { display:flex; flex-direction:column; gap:5px; }
.conv-head { display:flex; justify-content:space-between; align-items:baseline; gap:12px; flex-wrap:wrap; }
.conv-name { font-size:13px; color:var(--text-1); display:inline-flex; align-items:center; gap:7px; }
.conv-dot { width:9px; height:9px; border-radius:2px; display:inline-block; }
.conv-prov { font-size:9px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-3);
  border:1px solid var(--border-2); border-radius:3px; padding:1px 5px; }
.conv-prov.auto { color:var(--green); border-color:rgba(63,178,127,.4); }
.conv-num { font-size:11px; color:var(--text-2); }
.conv-num .conv-w { color:var(--text-3); }
.conv-track { height:6px; background:var(--bg-3); border-radius:3px; overflow:hidden; }
.conv-fill { height:100%; border-radius:3px; transition:width .3s; }
.conv-sub { font-size:10px; color:var(--text-3); line-height:1.5; margin-top:1px; }
.joblog { background:var(--bg-1); border:1px solid var(--border); border-radius:8px; max-height:260px; overflow:auto; }
.jl-row { display:flex; gap:10px; align-items:baseline; padding:5px 11px; border-bottom:1px solid var(--border); font-size:11.5px; }
.jl-row:last-child { border-bottom:none; }
.jl-dot { width:7px; height:7px; border-radius:50%; flex:0 0 auto; background:var(--text-3); }
.jl-dot.ok { background:var(--green); } .jl-dot.feil { background:var(--red); } .jl-dot.timeout { background:var(--orange); }
.jl-ts { color:var(--text-3); white-space:nowrap; }
.jl-job { color:var(--blue); white-space:nowrap; min-width:118px; }
.jl-tail { color:var(--text-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.short-metrics { display:flex; gap:18px; margin-bottom:10px; }
.short-metrics .sm { display:flex; flex-direction:column; gap:2px; }
.sm-k { font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-3); font-weight:600; }
.sm-v { font-size:16px; font-weight:600; color:var(--text-0); }
.short-chart { margin:4px 0 10px; }
.short-chart .short-spark { width:100%; height:84px; display:block; }
.short-holders { width:100%; border-collapse:collapse; font-size:11px; }
.short-holders td { padding:3px 0; border-bottom:1px solid var(--border); color:var(--text-2); }
.short-holders td.r { text-align:right; color:var(--text-1); }
.short-holders tr:last-child td { border-bottom:none; }
.pill-auto { font-size:9px; text-transform:uppercase; letter-spacing:.5px; color:var(--purple); border:1px solid rgba(157,108,240,.4); background:rgba(157,108,240,.1); border-radius:4px; padding:0 5px; }
.wl-admin td .mut, td.mut { color:var(--text-3); }
.conv-score { font-size:14px; font-family:'JetBrains Mono',monospace; }
.conv-score.pos { color:var(--green); } .conv-score.warn { color:var(--orange); } .conv-score.neg { color:var(--red); }
.ev.pos { color:var(--green); } .ev.warn { color:var(--orange); } .ev.neg { color:var(--red); }
.ph-note { margin-top:12px; padding:9px 12px; font-size:11px; line-height:1.6; color:var(--text-3);
  border-left:2px solid var(--border-2); background:var(--bg-1); border-radius:0 6px 6px 0; }

/* ===== Innstillinger ===== */
.gear-btn { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px;
  border-radius:8px; border:1px solid var(--border-2); background:var(--bg-2); color:var(--text-2);
  text-decoration:none; font-size:16px; }
.gear-btn:hover, .gear-btn.active { color:var(--text-0); border-color:var(--blue); background:var(--bg-3); }
.set-wrap { max-width:1100px; margin:0 auto; padding:16px 24px; display:flex; flex-direction:column; gap:16px; }
.set-banner { padding:12px 16px; border-radius:8px; font-size:13px; }
.set-banner.ok { background:rgba(63,178,127,.12); border:1px solid rgba(63,178,127,.4); color:var(--green); }
.set-banner.err { background:rgba(248,81,73,.1); border:1px solid rgba(248,81,73,.4); color:var(--red); }
.set-banner.err ul { margin:6px 0 0; padding-left:18px; }
.set-grid { display:flex; flex-wrap:wrap; gap:18px; align-items:flex-end; }
.set-field { display:flex; flex-direction:column; gap:5px; font-size:12px; color:var(--text-2); }
.set-field input { width:160px; padding:8px 10px; background:var(--bg-1); border:1px solid var(--border-2);
  border-radius:6px; color:var(--text-0); font-family:'JetBrains Mono',monospace; font-size:14px; }
.set-field input:focus { outline:none; border-color:var(--blue); }
.set-derived { font-size:13px; color:var(--text-2); display:flex; flex-direction:column; gap:4px; padding-bottom:4px; }
.set-derived strong { color:var(--text-0); font-family:'JetBrains Mono',monospace; }
.set-note { font-size:11px; color:var(--text-3); }
.set-cols { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.set-col-h { font-size:12px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-3);
  font-weight:600; margin-bottom:10px; }
.set-col .set-field { margin-bottom:10px; }
.set-weights { width:100%; border-collapse:collapse; font-size:13px; }
.set-weights th { text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.5px;
  color:var(--text-3); padding:8px 10px; border-bottom:1px solid var(--border-2); }
.set-weights td { padding:8px 10px; border-bottom:1px solid var(--border); }
.set-mode { text-transform:capitalize; color:var(--text-1); }
.set-w { width:64px; padding:6px 8px; background:var(--bg-1); border:1px solid var(--border-2);
  border-radius:5px; color:var(--text-0); font-family:'JetBrains Mono',monospace; text-align:right; }
.set-w:focus { outline:none; border-color:var(--blue); }
.set-sum.good { color:var(--green); } .set-sum.bad { color:var(--red); font-weight:700; }
.set-actions { display:flex; align-items:center; gap:16px; }
.set-save { padding:11px 22px; background:var(--blue); color:#fff; border:none; border-radius:8px;
  font-size:14px; font-weight:600; cursor:pointer; font-family:inherit; }
.set-save:hover { filter:brightness(1.1); }
@media(max-width:760px){ .set-cols{grid-template-columns:1fr} }

/* ── TEKNISKE FORMASJONER ─────────────────────────────────────────────── */
#patternList { display:grid; grid-template-columns:1fr 1fr; gap:12px; padding-top:2px; }
@media (max-width:980px) { #patternList { grid-template-columns:1fr; } }
.pat-card { position:relative; background:var(--bg-1); border:1px solid var(--border);
            border-left:3px solid var(--border-2); border-radius:8px; padding:12px 14px;
            cursor:pointer; transition:opacity .12s, border-color .12s, background .12s; }
.pat-card:hover { background:var(--bg-2); }
.pat-card.on.bullish { border-left-color:var(--green); }
.pat-card.on.bearish { border-left-color:var(--red); }
.pat-card.on.neutral { border-left-color:var(--orange); }
.pat-card.off { opacity:.5; border-left-color:var(--border-2); }
.pat-card.off:hover { opacity:.78; }
.pat-eye { display:inline-flex; align-items:center; color:var(--text-3); flex-shrink:0; }
.pat-card.on.bullish .pat-eye { color:var(--green); }
.pat-card.on.bearish .pat-eye { color:var(--red); }
.pat-card.on.neutral .pat-eye { color:var(--orange); }
.pat-allbtn { background:var(--bg-3); border:1px solid var(--border-2); color:var(--text-2);
              font-size:11px; padding:4px 11px; border-radius:5px; cursor:pointer;
              font-family:inherit; margin-left:10px; }
.pat-allbtn:hover { background:var(--bg-2); color:var(--text-1); }
.pat-h { display:flex; align-items:center; gap:8px; margin-bottom:9px; }
.pat-h .pat-name { font-size:13px; font-weight:600; color:var(--text-0); flex:1;
                   white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pat-conf { font-family:'JetBrains Mono',monospace; font-size:19px; font-weight:700; line-height:1; }
.pat-conf.bullish { color:var(--green); } .pat-conf.bearish { color:var(--red); } .pat-conf.neutral { color:var(--orange); }
.pat-conf small { font-size:11px; color:var(--text-3); font-weight:500; }
.pat-bar { height:4px; background:var(--bg-3); border-radius:2px; overflow:hidden; margin-bottom:11px; }
.pat-bar > i { display:block; height:100%; border-radius:2px; }
.pat-trade { display:flex; align-items:center; gap:9px; font-family:'JetBrains Mono',monospace;
             font-size:13px; margin-bottom:7px; flex-wrap:wrap; }
.pat-trade .lvl { color:var(--text-1); font-weight:600; }
.pat-trade .arr { color:var(--text-3); }
.pat-trade .tgt-up { color:var(--green); font-weight:600; }
.pat-trade .tgt-dn { color:var(--red); font-weight:600; }
.pat-trade .pat-st { margin-left:auto; }
.pat-st-ok { color:var(--green); font-size:11px; font-weight:600; }
.pat-st-wait { color:var(--text-3); font-size:11px; font-weight:600; }
.pat-rat { font-size:10px; color:var(--text-3); margin-bottom:9px; font-family:'JetBrains Mono',monospace; }
.pat-subs { display:flex; gap:4px 12px; flex-wrap:wrap; font-family:'JetBrains Mono',monospace;
            font-size:10.5px; color:var(--text-3); border-top:1px solid var(--border); padding-top:8px; }
.pat-subs span b { color:var(--text-2); font-weight:600; }
.pat-tent { font-size:9px; text-transform:uppercase; letter-spacing:.5px; color:var(--orange);
            border:1px solid var(--orange-soft); padding:1px 6px; border-radius:4px; }

/* ── Intradag-ferskhet (steg: price_intraday inn i Flask) ── */
/* Dempet, ærlig markør. Aldri presentert som sanntid: ~15–20 min forsinket. */
.px-delay { margin-top:6px; font-size:11px; color:var(--text-3); letter-spacing:.2px; }
.px-delay::first-letter { color:var(--orange); }
.itd-dot { color:var(--orange); font-size:8px; vertical-align:middle; margin-right:5px; opacity:.85; cursor:help; }
.macro-value .itd-dot { font-size:7px; margin-right:4px; }

/* ── Høyrekolonne: posisjoner / sektor / varsler / datakilder ── */
.rail-list { padding:6px 0; }
.rail-row { display:flex; align-items:center; gap:9px; padding:9px 16px; border-top:1px solid var(--border); font-size:13px; }
.rail-row:first-child { border-top:none; }
.rail-empty { padding:16px; color:var(--text-3); font-size:12.5px; line-height:1.6; }

/* Posisjoner */
.pos-row { justify-content:space-between; align-items:flex-start; }
.pos-l { display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.pos-sym { font-weight:600; color:var(--text-0); }
.pos-mode { font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-3); }
.pos-r { text-align:right; display:flex; flex-direction:column; gap:2px; }
.pos-r .pos-sub { font-size:11px; color:var(--text-3); font-weight:400; }

/* Sektoreksponering */
.expo-row { padding:8px 16px; border-top:1px solid var(--border); }
.expo-row:first-child { border-top:none; }
.expo-top { display:flex; justify-content:space-between; font-size:13px; color:var(--text-1); margin-bottom:5px; }
.expo-bar { height:5px; background:var(--bg-3); border-radius:3px; overflow:hidden; }
.expo-bar > i { display:block; height:100%; background:var(--blue); border-radius:3px; }

/* Varsler */
.alert-dot { width:7px; height:7px; border-radius:50%; flex-shrink:0; }
.alert-dot.warn { background:var(--orange); } .alert-dot.info { background:var(--blue); }
.alert-sym { font-weight:600; color:var(--text-0); min-width:54px; }
.alert-txt { color:var(--text-2); }

/* Datakilder */
.src-dot { width:7px; height:7px; border-radius:50%; flex-shrink:0; }
.src-dot.ok { background:var(--green); } .src-dot.err { background:var(--red); } .src-dot.run { background:var(--orange); }
.src-job { color:var(--text-1); font-weight:600; }
.src-meta { color:var(--text-3); font-size:11.5px; flex:1; }
.src-when { color:var(--text-3); font-size:11px; }

/* Nyheter */
.news-row { padding:10px 16px; border-top:1px solid var(--border); }
.news-row:first-child { border-top:none; }
.news-row.material { border-left:2px solid var(--orange); }
.news-row.news-flash { animation:newsFlash 2s ease-out 1; }
@keyframes newsFlash {
  0% { background:var(--orange-soft); } 100% { background:transparent; }
}
.news-top { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.news-title { color:var(--text-1); font-size:13px; line-height:1.4; text-decoration:none; }
a.news-title:hover { color:var(--blue); text-decoration:underline; }
.news-meta { color:var(--text-3); font-size:11px; margin-top:4px; }
.news-fakta { color:var(--text-2); font-size:12px; line-height:1.5; margin-top:5px; border-left:2px solid var(--purple); padding-left:9px; }
.mat-pill { display:inline-block; padding:1px 7px; border-radius:5px; font-size:11px; font-weight:600; letter-spacing:.2px; }
.mat-high { background:rgba(224,160,96,.18); color:var(--orange); }
.mat-medium { background:var(--blue-soft); color:#6ea8fb; }
.mat-low { color:var(--text-3); border:1px solid var(--border-2); }

/* Claude-panel: ekte syntese-innhold (Sonnet) */
.claude-body { padding-top:2px; }
.claude-assessment { margin:0 0 14px; color:var(--text-1); font-size:13.5px; line-height:1.65; }
.claude-foot { display:flex; align-items:center; gap:16px; flex-wrap:wrap; font-size:11px;
  color:var(--text-3); text-transform:uppercase; letter-spacing:.4px; }
.claude-foot .synth-kv { display:flex; align-items:center; gap:6px; }
.claude-foot .synth-based { margin-left:auto; text-transform:none; letter-spacing:0;
  font-size:11px; color:var(--text-3); }

/* Tidligere analyser — kollapset historikk under nyeste syntese (native details) */
.claude-history { margin-top:14px; border-top:1px solid var(--border); padding-top:12px; }
.claude-history-summary { cursor:pointer; user-select:none; list-style:none;
  display:flex; align-items:center; gap:8px; font-size:11px; font-weight:600;
  text-transform:uppercase; letter-spacing:.8px; color:var(--text-3); }
.claude-history-summary:hover { color:var(--text-1); }
.claude-history-summary::-webkit-details-marker { display:none; }
.claude-history-summary .ch-chevron { font-size:10px; color:var(--text-3);
  transition:transform .15s ease; display:inline-block; }
.claude-history[open] .claude-history-summary .ch-chevron { transform:rotate(90deg); }
.claude-history-summary .ch-count { background:var(--bg-3); color:var(--text-2);
  border-radius:5px; padding:1px 7px; font-size:11px; letter-spacing:0; }
.claude-history-list { margin-top:10px; max-height:300px; }
.claude-history-item { padding:10px 0; border-bottom:1px solid var(--border); }
.claude-history-item:last-child { border-bottom:none; }
.chi-head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:6px;
  font-size:11px; color:var(--text-3); }
.chi-date { color:var(--text-2); font-size:11px; }
.chi-horizon { text-transform:none; }
.chi-based { margin-left:auto; }
.chi-excerpt { margin:0; font-size:12.5px; line-height:1.55; color:var(--text-1); }

/* Nyhets-kort: laast hoyde (~5 rader) med scroll naar det blir mange meldinger */
.news-scroll { max-height:440px; overflow-y:auto; overflow-x:hidden; padding-right:6px;
  scrollbar-width:thin; scrollbar-color:var(--border-2) transparent; }
.news-scroll::-webkit-scrollbar { width:8px; }
.news-scroll::-webkit-scrollbar-track { background:transparent; }
.news-scroll::-webkit-scrollbar-thumb { background:var(--border-2); border-radius:4px; }
.news-scroll::-webkit-scrollbar-thumb:hover { background:var(--text-3); }

/* Minimerbare paneler */
.collapsible-header { cursor:pointer; user-select:none; }
.collapse-chevron { display:inline-block; margin-right:8px; font-size:10px; color:var(--text-3);
  transition:transform .15s ease; vertical-align:middle; }
.is-collapsed .collapse-chevron { transform:rotate(-90deg); }
.collapsible-header:hover .collapse-chevron { color:var(--text-1); }
.collapsed-hidden { display:none !important; }
.is-collapsed { padding-bottom:0; }
.kpi-section.is-collapsed, .card.is-collapsed, .claude-panel.is-collapsed { margin-bottom:10px; }

/* Claude-dekning admin-side */
.col-full { width:100%; max-width:980px; margin:0 auto; padding:0 0 40px; }
.admin-page { padding-top:12px; }
.admin-header { margin-bottom:20px; }
.admin-title { margin:0 0 6px; font-size:22px; font-weight:600; }
.admin-sub { margin:0; color:var(--text-2); font-size:14px; line-height:1.6; }
.admin-sub strong { color:var(--text-1); }
.admin-run-card { padding:12px 18px; }
.run-row { display:flex; align-items:center; gap:14px; font-size:13px; flex-wrap:wrap; }
.run-label { color:var(--text-3); text-transform:uppercase; font-size:11px; letter-spacing:.4px; }
.run-when { color:var(--text-2); }
.run-stat { color:var(--text-1); }
.admin-table { width:100%; border-collapse:collapse; font-size:14px; }
.admin-table th { text-align:left; padding:8px 12px; color:var(--text-3); font-size:11px;
  text-transform:uppercase; letter-spacing:.4px; font-weight:600;
  border-bottom:1px solid var(--border); }
.admin-table th.num { text-align:right; }
.admin-table td { padding:11px 12px; border-bottom:1px solid var(--border-2); vertical-align:middle; }
.admin-table tr:last-child td { border-bottom:none; }
.admin-table .sym-cell { font-size:15px; font-weight:600; color:var(--text-0); width:80px; }
.admin-table .dimmed { color:var(--text-3); }
.admin-table .num { text-align:right; font-variant-numeric:tabular-nums; }
.admin-table .pos { color:var(--green); }
.admin-table .neg { color:var(--red); }
.admin-table tr.row-followed td:first-child { border-left:2px solid var(--green); }
.admin-note { margin:0 0 12px; color:var(--text-3); font-size:13px;
  padding:0 12px; }
.ref-list { display:flex; flex-wrap:wrap; gap:8px; padding:0 12px 12px; }
.ref-chip { padding:4px 10px; background:var(--bg-3); border:1px solid var(--border);
  border-radius:20px; font-size:12px; color:var(--text-2); font-family:var(--mono); }
/* Follow-toggle knapp */
.follow-btn { padding:5px 14px; border-radius:20px; font-size:12px; font-weight:600;
  cursor:pointer; border:1px solid var(--border); background:var(--bg-3);
  color:var(--text-2); transition:all .15s; white-space:nowrap; }
.follow-btn:hover:not(:disabled) { opacity:.8; border-color:var(--green); color:var(--green); }
.follow-btn.following { background:var(--green-soft); color:var(--green);
  border-color:var(--green); }
.follow-btn:disabled { opacity:.5; cursor:default; }

/* ══ POSISJONER-SIDE ═══════════════════════════════════════════════════════ */
.pos-wrap { max-width:2000px; margin:0 auto; padding:16px 20px; display:flex; flex-direction:column; gap:16px; }
.pos-header { margin-bottom:4px; }
.pos-title { font-size:22px; font-weight:600; margin:0 0 6px; }
.pos-sub { color:var(--text-3); font-size:13px; margin:0; line-height:1.6; }

/* Skjema-grid */
.pos-form-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
@media (max-width:1100px) { .pos-form-grid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:600px) { .pos-form-grid { grid-template-columns:1fr; } }
.pos-thesis-field { grid-column:span 2; }
@media (max-width:1100px) { .pos-thesis-field { grid-column:span 2; } }
.pos-select { padding:8px 10px; background:var(--bg-1); border:1px solid var(--border-2);
  border-radius:6px; color:var(--text-0); font-size:13px; font-family:inherit; width:100%; }
.pos-select:focus { outline:none; border-color:var(--blue); }
.pos-input { width:100%; padding:8px 10px; background:var(--bg-1); border:1px solid var(--border-2);
  border-radius:6px; color:var(--text-0); font-size:13px; font-family:inherit; }
.pos-input:focus { outline:none; border-color:var(--blue); }

/* Tabell */
.pos-table-wrap { overflow-x:auto; }
.pos-full-table { font-size:13px; }
.pos-full-table thead th { text-align:left; font-size:11px; color:var(--text-3); text-transform:uppercase;
  letter-spacing:.4px; font-weight:600; padding:8px 10px; border-bottom:1px solid var(--border); }
.pos-full-table thead th.r { text-align:right; }
.pos-full-table tbody td { padding:10px; border-bottom:1px solid var(--border-2); vertical-align:middle; }
/* Bulk-slett (multi-select arkiv) */
.bulk-chk-col { width:28px; text-align:center; padding-left:6px !important; padding-right:6px !important; }
.bulk-chk-col input { cursor:pointer; }
.card-title-row .bulk-del-form { margin:0; align-self:center; }
.bulk-del-btn:disabled { opacity:.4; cursor:not-allowed; }
.pos-full-table tbody tr:last-child td { border-bottom:none; }
.pos-full-table tbody tr:hover { background:var(--bg-3); }
.pos-full-table td.r { text-align:right; }
.pos-full-table td.mono { font-family:'JetBrains Mono',monospace; }
.pos-sym-link { color:var(--text-0); font-weight:600; text-decoration:none; font-size:14px; }
.pos-sym-link:hover { color:var(--blue); text-decoration:underline; }
.pos-sym { font-weight:600; color:var(--text-0); font-size:14px; }
.pos-mode { font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-3); }
.pos-setup-cell { color:var(--text-2); font-size:11px; max-width:140px; white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; }

/* Lukk/kanseller inline */
.pos-actions { display:flex; align-items:center; gap:6px; }
.pos-inline-form { display:flex; align-items:center; gap:5px; }
.pos-exit-input { width:80px; padding:5px 7px; background:var(--bg-1); border:1px solid var(--border-2);
  border-radius:5px; color:var(--text-0); font-size:12px; font-family:'JetBrains Mono',monospace; }
.pos-exit-input:focus { outline:none; border-color:var(--blue); }
.pos-act-btn { padding:4px 10px; border-radius:5px; font-size:11px; font-weight:600;
  cursor:pointer; border:none; font-family:inherit; white-space:nowrap; }
.pos-lukk { background:var(--blue-soft); color:var(--blue); }
.pos-lukk:hover { background:var(--blue); color:#fff; }
.pos-kanseller { background:var(--red-soft); color:var(--red); }
.pos-kanseller:hover { background:var(--red); color:#fff; }
.pos-endre { background:var(--orange-soft); color:var(--orange); text-decoration:none;
  display:inline-flex; align-items:center; line-height:1.4; }
.pos-endre:hover { background:var(--orange); color:#1a1a1a; }

/* + Ny posisjon-lenke fra Detaljer */
.pos-new-btn { display:inline-block; margin-top:8px; padding:5px 12px;
  background:var(--blue-soft); color:var(--blue); border-radius:6px;
  font-size:12px; font-weight:600; text-decoration:none; }
.pos-new-btn:hover { background:var(--blue); color:#fff; }

/* ───────────── auth: bruker-chip + logg ut (topnav) ───────────── */
.user-chip { font-size:12px; color:var(--text-2); background:var(--bg-3);
  border:1px solid var(--border-2); padding:6px 10px; border-radius:6px; white-space:nowrap; }
.logout-btn { font-size:13px; color:var(--text-2); background:transparent;
  border:1px solid var(--border-2); padding:7px 12px; border-radius:6px; text-decoration:none;
  font-family:inherit; white-space:nowrap; transition:all .12s; }
.logout-btn:hover { color:var(--red); border-color:var(--red); background:var(--red-soft); }

/* ───────────── auth: login-side ───────────── */
.login-body { display:flex; align-items:center; justify-content:center; min-height:100vh;
  background:radial-gradient(900px 500px at 50% -10%, #11161d 0%, var(--bg-0) 60%); margin:0; }
.login-wrap { width:100%; max-width:380px; padding:24px; }
.login-card { background:var(--bg-2); border:1px solid var(--border); border-radius:12px;
  padding:30px 28px; display:flex; flex-direction:column; box-shadow:0 18px 50px rgba(0,0,0,.45); }
.login-brand { display:flex; align-items:center; gap:11px; }
.login-title { font-size:18px; font-weight:700; color:var(--text-0); }
.login-title small { color:var(--text-3); font-weight:400; font-size:12px; margin-left:4px; }
.login-sub { color:var(--text-3); font-size:12px; margin:8px 0 20px; }
.login-label { font-size:11px; text-transform:uppercase; letter-spacing:.6px; color:var(--text-3);
  font-weight:600; margin-bottom:6px; }
.login-input { background:var(--bg-0); border:1px solid var(--border-2); color:var(--text-1);
  border-radius:7px; padding:11px 13px; font-size:14px; margin-bottom:16px; outline:none; transition:border .12s; }
.login-input:focus { border-color:var(--green); }
.login-btn { background:var(--green); color:#06150e; border:none; border-radius:7px;
  padding:12px; font-size:14px; font-weight:700; cursor:pointer; font-family:inherit; margin-top:4px; transition:filter .12s; }
.login-btn:hover { filter:brightness(1.08); }
.login-error { background:var(--red-soft); border:1px solid rgba(248,81,73,.4); color:var(--red);
  font-size:13px; padding:10px 12px; border-radius:7px; margin-bottom:16px; }
.login-foot { text-align:center; color:var(--text-3); font-size:11px; margin-top:18px; }

/* ───────────── auth: brukeradmin ───────────── */
.bru-notice { background:var(--green-soft); border:1px solid rgba(63,178,127,.4); color:var(--green);
  font-size:13px; padding:10px 14px; border-radius:8px; margin-bottom:14px; }
.bru-error { background:var(--red-soft); border:1px solid rgba(248,81,73,.4); color:var(--red);
  font-size:13px; padding:10px 14px; border-radius:8px; margin-bottom:14px; }
.bru-card { margin-bottom:16px; }
.bru-new { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.bru-inp { background:var(--bg-0); border:1px solid var(--border-2); color:var(--text-1);
  border-radius:6px; padding:9px 11px; font-size:13px; font-family:inherit; outline:none; }
.bru-inp:focus { border-color:var(--green); }
.bru-inp-sm { padding:6px 8px; font-size:12px; }
.bru-btn { background:var(--bg-3); border:1px solid var(--border-2); color:var(--text-1);
  border-radius:6px; padding:8px 12px; font-size:12px; cursor:pointer; font-family:inherit; transition:all .12s; }
.bru-btn:hover { background:var(--border); }
.bru-btn-primary { background:var(--green); color:#06150e; border-color:var(--green); font-weight:600; }
.bru-btn-warn:hover { color:var(--red); border-color:var(--red); background:var(--red-soft); }
.bru-table { width:100%; border-collapse:collapse; }
.bru-table th { text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.5px;
  color:var(--text-3); font-weight:600; padding:8px 10px; border-bottom:1px solid var(--border); }
.bru-table td { padding:10px; border-bottom:1px solid var(--border); font-size:13px; vertical-align:middle; }
.bru-inactive { opacity:.5; }
.bru-inline { display:inline-flex; gap:6px; align-items:center; margin:0; }
.bru-actions { display:flex; gap:10px; flex-wrap:wrap; }
.bru-tag { font-size:10px; padding:2px 7px; border-radius:5px; font-weight:600; margin-right:4px; }
.bru-tag-on { background:var(--green-soft); color:var(--green); }
.bru-tag-off { background:var(--red-soft); color:var(--red); }
.bru-tag-lock { background:var(--orange-soft); color:var(--orange); }
.bru-dim { color:var(--text-3); }
.bru-foot { color:var(--text-3); font-size:12px; margin-top:6px; }

/* ══ §2A POLISH ═══════════════════════════════════════════════════════════ */

/* Fade-in: kort, diskret animasjon på KPI-kort og cards ved sidelast.
   Brukes sparsomt — kun på det som faktisk er synlig i viewport. */
@keyframes fadeInUp {
  from { opacity:0; transform:translateY(6px); }
  to   { opacity:1; transform:translateY(0); }
}
.kpi { animation:fadeInUp .22s ease both; }
.kpi:nth-child(1){animation-delay:.03s} .kpi:nth-child(2){animation-delay:.06s}
.kpi:nth-child(3){animation-delay:.09s} .kpi:nth-child(4){animation-delay:.12s}
.kpi:nth-child(5){animation-delay:.15s} .kpi:nth-child(6){animation-delay:.18s}

/* Hover-lift: subtil løft + lysere border på cards. Disabled for tabeller
   og grafer der hover allerede er definert. */
.card:not(.no-collapse):not(.chart-card) {
  transition: transform .14s ease, border-color .14s ease, box-shadow .14s ease;
}
.card:not(.no-collapse):not(.chart-card):hover {
  transform: translateY(-2px);
  border-color: var(--border-2);
  box-shadow: 0 6px 20px rgba(0,0,0,.28);
}

/* Edge Score progress-bar: animert bredde-sett fra JS via CSS custom property.
   Brukes i conv-fill (conviction-lag) — gjerne for edge-badge også.
   conv-fill har allerede transition:width .3s fra v17 — beholder den. */
.edge-badge .ev {
  position: relative;
}
/* Animert score-stripe under Edge Score-tallet (subbar) */
.edge-score-bar {
  height: 3px;
  background: var(--bg-3);
  border-radius: 2px;
  overflow: hidden;
  margin-top: 6px;
}
.edge-score-bar > span {
  display: block;
  height: 100%;
  border-radius: 2px;
  transition: width .4s cubic-bezier(.4,0,.2,1);
}

/* Pulse-markør: konsistent på alle live-dot-forekomster (orange for intradag,
   grønn/rød på change-pill håndteres allerede av .change-pill.pos/neg). */
@keyframes pulseOrange { 0%,100%{opacity:.9;box-shadow:0 0 0 0 rgba(224,160,96,.5);}
  50%{opacity:.5;box-shadow:0 0 0 4px rgba(224,160,96,0);} }
.itd-dot { animation:pulseOrange 1.8s infinite; }

/* Topnav søke-field: visuell aktiv-state */
.search:focus-within {
  border-color: var(--blue);
  box-shadow: 0 0 0 2px rgba(31,111,235,.18);
}
.search { transition: border-color .12s, box-shadow .12s; }

/* Søkbar single-select for Detaljer-ticker-velger (ss-root) */
.ss-root { position:relative; }
.ss-control { display:flex; align-items:center; gap:8px; padding:4px 10px;
  background:var(--bg-1); border:1px solid var(--border-2); border-radius:8px;
  cursor:pointer; min-width:180px; transition:border-color .12s; }
.ss-control:focus-within { border-color:var(--blue); }
.ss-lbl { flex:1; font-size:13px; font-family:'JetBrains Mono',monospace;
  color:var(--text-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ss-caret { color:var(--text-3); font-size:10px; transition:transform .15s; }
.ss-root.open .ss-caret { transform:rotate(180deg); }
.ss-input { width:100%; padding:8px 12px; background:transparent; border:none;
  color:var(--text-1); font-size:13px; font-family:inherit; outline:none; }
.ss-input::placeholder { color:var(--text-3); }
.ss-dropdown { position:absolute; left:0; right:0; top:calc(100% + 4px); z-index:50;
  max-height:320px; overflow-y:auto; background:var(--bg-2); border:1px solid var(--border-2);
  border-radius:8px; box-shadow:0 12px 32px rgba(0,0,0,.5); display:none; }
.ss-root.open .ss-dropdown { display:block; }
.ss-group { padding:8px 12px 4px; font-size:10px; text-transform:uppercase;
  letter-spacing:.6px; color:var(--text-3); font-weight:600;
  position:sticky; top:0; background:var(--bg-2); }
.ss-option { display:flex; align-items:center; gap:10px; padding:9px 12px;
  cursor:pointer; font-size:13px; font-family:'JetBrains Mono',monospace; transition:background .08s; }
.ss-option:hover, .ss-option.active { background:var(--bg-3); }
.ss-option.selected { color:var(--green); }
.ss-option .ss-check { width:14px; text-align:center; color:var(--green); }
.ss-noresult { padding:14px 12px; color:var(--text-3); font-size:13px; text-align:center; }

/* ───────────────────────── PORTEFØLJE-STRIPE (Oversikt) ───────────────────────── */
.port-strip { padding:16px 18px; }
.port-head { display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; margin-bottom:14px; }
.port-title { font-size:11px; text-transform:uppercase; letter-spacing:1px; color:var(--text-3); font-weight:700; }
.port-sub { font-size:12px; color:var(--text-3); }
.port-sub strong { color:var(--text-0); font-weight:600; }
.port-sub.warn { color:var(--orange); }
.port-body { display:flex; gap:18px; align-items:stretch; flex-wrap:wrap; }
.port-kpis { flex:1 1 540px; display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
@media (max-width:1100px){ .port-kpis{ grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .port-kpis{ grid-template-columns:1fr 1fr;} }
.pk { background:var(--bg-1); border:1px solid var(--border); border-radius:8px; padding:11px 13px;
  position:relative; overflow:hidden; }
.pk::before { content:''; position:absolute; left:0; top:0; bottom:0; width:2px; background:var(--border-2); }
.pk-label { font-size:10px; text-transform:uppercase; letter-spacing:.7px; color:var(--text-3); font-weight:600; margin-bottom:5px; }
.pk-value { font-size:19px; font-weight:600; color:var(--text-0); letter-spacing:-.01em; }
.pk-value small { font-size:11px; color:var(--text-3); font-weight:400; }
.pk-value.pos { color:var(--green); } .pk-value.neg { color:var(--red); } .pk-value.warn { color:var(--orange); }
.pk-sub { font-size:11px; color:var(--text-3); margin-top:3px; }
.pk-sub.pos { color:var(--green); } .pk-sub.neg { color:var(--red); }

/* Sektor-donut */
.port-donut { flex:0 0 230px; display:flex; align-items:center; gap:14px;
  background:var(--bg-1); border:1px solid var(--border); border-radius:8px; padding:14px; }
@media (max-width:1100px){ .port-donut{ flex:1 1 100%; } }
.donut-wrap { position:relative; width:96px; height:96px; flex-shrink:0; }
.donut { width:96px; height:96px; border-radius:50%; }
.donut-hole { position:absolute; inset:18px; background:var(--bg-1); border-radius:50%;
  display:flex; flex-direction:column; align-items:center; justify-content:center; }
.donut-hole-top { font-size:12px; font-weight:600; color:var(--text-0); line-height:1.1; }
.donut-hole-bot { font-size:9px; text-transform:uppercase; letter-spacing:.6px; color:var(--text-3); }
.donut-legend { flex:1; display:flex; flex-direction:column; gap:5px; min-width:0; }
.dl-row { display:flex; align-items:center; gap:7px; font-size:12px; }
.dl-swatch { width:9px; height:9px; border-radius:2px; flex-shrink:0; }
.dl-name { color:var(--text-2); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dl-pct { color:var(--text-1); font-weight:600; }

/* Eksponering per modus */
.port-modes { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:13px;
  padding-top:12px; border-top:1px solid var(--border); }
.pm-label { font-size:10px; text-transform:uppercase; letter-spacing:.7px; color:var(--text-3); font-weight:600; margin-right:4px; }
.pm-chip { display:inline-flex; align-items:center; gap:7px; background:var(--bg-3); border:1px solid var(--border-2);
  border-radius:7px; padding:5px 11px; font-size:12px; color:var(--text-2); }
.pm-chip strong { color:var(--text-0); font-weight:600; }
.pm-pct { color:var(--text-3); font-size:11px; }

/* ── kurs-polling (/api/quotes, #2a): kort glød når kursen endres ── */
@keyframes qFlash { 0% { background:rgba(224,160,96,.22); } 100% { background:transparent; } }
.ov-table td.q-flash { animation:qFlash 1.2s ease-out; }
/* A5 del 4: samme oransje oppdaterings-glød på Detaljer-headerkursen når den
   tikker live mellom polling-rundene (egen selektor — keyframet er delt). */
.price.q-flash { animation:qFlash 1.2s ease-out; border-radius:4px; }

/* ── jobbplan v24: ukedag-checkboxer + min/sek-par ── */
.set-days { display:flex; flex-wrap:wrap; gap:8px; margin:6px 0 10px; }
.set-day { display:inline-flex; align-items:center; gap:4px; font-size:11px; color:var(--text-2);
  background:var(--bg-3); border:1px solid var(--border-2); border-radius:6px; padding:3px 8px; cursor:pointer; }
.set-day input { accent-color: var(--green); margin:0; }
.set-pair { display:inline-flex; align-items:center; gap:6px; }
.set-pair .set-w { width:52px; }

/* ── varsler v25: regelskjema + handlingsknapper + ulest-markering ── */
.al-grid { display:flex; flex-wrap:wrap; gap:14px; align-items:flex-end; }
.al-grid .set-field input, .al-select { width:180px; padding:8px 10px; background:var(--bg-1);
  border:1px solid var(--border-2); border-radius:6px; color:var(--text-0); font-size:13px; }
.al-select:focus, .al-grid .set-field input:focus { outline:none; border-color:var(--blue); }
.al-grid .set-field input:disabled { opacity:.45; }
.al-save { padding:9px 18px; }
.al-note { margin-top:10px; }
.al-actions { white-space:nowrap; }
.al-actions form { display:inline-block; margin-left:6px; }
.al-btn { padding:4px 12px; border-radius:6px; font-size:12px; font-weight:600; cursor:pointer;
  background:var(--bg-3); border:1px solid var(--border-2); color:var(--text-2); }
.al-btn:hover { border-color:var(--blue); color:var(--text-1); }
.al-btn.arm { background:var(--green-soft); color:var(--green); border-color:transparent; }
.al-btn.danger:hover { border-color:var(--red); color:var(--red); }
.al-unseen td { background:var(--orange-soft); }
.warn-txt { color:var(--orange); }

/* ── watchlist fase 2 (v26): liste-faner + radmeny + admin-kort ── */
.wl-tabs { padding-bottom:0; }
.wl-tabs .filt { border-radius:8px 8px 0 0; border-bottom:none; }
.wl-tabs .filt[hidden] { display:none; }
.wl-count { display:inline-block; min-width:16px; margin-left:5px; padding:0 5px;
  background:var(--bg-3); border-radius:8px; font-size:10px; color:var(--text-3);
  font-family:'JetBrains Mono',monospace; }
.filt.active .wl-count { background:var(--blue-soft); color:var(--blue); }
.ov-table th.c-star, .ov-table td.c-star { width:58px; white-space:nowrap; }
.wl-btn { background:none; border:none; cursor:pointer; font-size:14px; line-height:1;
  padding:2px 4px; color:var(--text-3); }
.wl-btn:hover { color:var(--blue); transform:scale(1.1); }
.wl-menu { position:absolute; z-index:60; min-width:170px; padding:8px;
  background:var(--bg-2); border:1px solid var(--border-2); border-radius:8px;
  box-shadow:0 8px 24px rgba(0,0,0,.5); display:flex; flex-direction:column; gap:6px; }
.wl-menu-item { display:flex; align-items:center; gap:8px; font-size:12px;
  color:var(--text-2); cursor:pointer; padding:3px 6px; border-radius:6px; }
.wl-menu-item:hover { background:var(--bg-3); color:var(--text-1); }
.wl-menu-item input { accent-color:var(--blue); margin:0; }
.wl-admin { width:100%; border-collapse:collapse; font-size:12px; margin-bottom:12px; }
.wl-admin th { text-align:left; color:var(--text-3); font-weight:600; padding:6px 10px;
  border-bottom:1px solid var(--border-2); }
.wl-admin th.r, .wl-admin td.r { text-align:right; }
.wl-admin td { padding:6px 10px; border-bottom:1px solid var(--border); }
.wl-inline { display:inline-flex; align-items:center; gap:8px; }
.wl-name { width:200px; padding:6px 10px; background:var(--bg-1);
  border:1px solid var(--border-2); border-radius:6px; color:var(--text-0); font-size:12px; }
.wl-name:focus { outline:none; border-color:var(--blue); }
.wl-rowactions form { white-space:nowrap; }
.wl-rowactions .btn-link { padding:4px 9px; font-size:12px; }
.wl-del:hover { border-color:var(--red); color:var(--red); }
.wl-newform { display:flex; align-items:center; gap:10px; }
.wl-empty { color:var(--text-3); }

/* ── sammenligning v26: crosshair-dato i grafhodet ── */
.cmp-cross-date { margin-left:10px; font-size:11px; color:var(--orange); font-weight:400; }

/* ── risiko v28: sizing-simulator (kontroll-kort + KPI-rutenett + netto-tabell) ── */
.rk-grid { display:grid; grid-template-columns:360px 1fr; gap:16px; align-items:start; }
@media (max-width: 980px) { .rk-grid { grid-template-columns:1fr; } }
.rk-controls .set-field { display:block; margin-bottom:14px; }
.rk-controls .set-field input[type="text"], .rk-controls .al-select { width:100%;
  box-sizing:border-box; padding:8px 10px; background:var(--bg-1);
  border:1px solid var(--border-2); border-radius:6px; color:var(--text-0); font-size:13px; }
.rk-controls .set-field input[type="text"]:focus, .rk-controls .al-select:focus {
  outline:none; border-color:var(--blue); }
.rk-row2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.rk-slider input[type="range"] { width:100%; margin-top:6px; accent-color:var(--green); }
.rk-val { float:right; color:var(--orange); font-size:12px; }
.rk-kpis { display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; }
@media (max-width: 1280px) { .rk-kpis { grid-template-columns:repeat(2, 1fr); } }
.rk-kpi { background:var(--bg-1); border:1px solid var(--border); border-radius:8px;
  padding:10px 12px; }
.rk-kpi-label { font-size:10px; text-transform:uppercase; letter-spacing:.06em;
  color:var(--text-3); margin-bottom:4px; }
.rk-kpi-value { font-size:17px; font-weight:600; color:var(--text-0); }
.rk-kpi-sub { font-size:11px; color:var(--text-3); margin-top:3px; }
.rk-warn { margin-top:12px; padding:8px 12px; border-radius:6px; font-size:12px;
  background:var(--orange-soft); color:var(--orange); }
.rk-warn.err { background:var(--red-soft); color:var(--red); }
.rk-sep { margin-top:18px; }
.rk-net td:first-child { color:var(--text-2); }
.rk-net-total td { border-top:1px solid var(--border-2); font-weight:700; }
.rk-foot { margin-top:10px; }

/* ── v29: søkbar ticker-select i skjemaer (.ss-form — Varsler/Posisjoner/Risiko) ── */
.ss-root.ss-form { display:block; width:100%; }
.ss-form .ss-control { min-width:0; width:100%; box-sizing:border-box; padding:8px 10px;
  background:var(--bg-1); border:1px solid var(--border-2); border-radius:6px; }
.ss-form .ss-control:focus { outline:none; border-color:var(--blue); }
.ss-form .ss-dropdown { left:0; right:auto; min-width:100%; width:max-content; max-width:340px; }
.al-grid .ss-root.ss-form { width:180px; }

/* ── v30: fritekst-søk på Oversikt (ticker + navn) ── */
.ov-search { width:220px; padding:6px 10px; background:var(--bg-1); border:1px solid var(--border-2);
  border-radius:6px; color:var(--text-0); font-size:12px; }
.ov-search:focus { outline:none; border-color:var(--blue); }
.ov-search::placeholder { color:var(--text-3); }

/* ── v31: Journal-siden (.jr-*) ── */
.jr-kpis { grid-template-columns:repeat(6, 1fr); }
@media (max-width: 1500px) { .jr-kpis { grid-template-columns:repeat(3, 1fr); } }
@media (max-width: 900px) { .jr-kpis { grid-template-columns:repeat(2, 1fr); } }
.jr-chart { width:100%; height:320px; }
.jr-cross { color:var(--orange); }
.jr-empty { padding:24px 12px; text-align:center; color:var(--text-3); font-size:12px; }
.jr-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:16px; }
@media (max-width: 1100px) { .jr-grid { grid-template-columns:1fr; } }
.jr-setup-name { margin-bottom:4px; }
.jr-bar { height:4px; background:var(--bg-3); border-radius:2px; overflow:hidden; }
.jr-bar-fill { height:100%; background:var(--green); border-radius:2px; }
.jr-bar-fill.neg { background:var(--red); }
.jr-hint { margin-top:12px; padding:8px 12px; border-radius:6px; font-size:12px;
  background:var(--bg-3); color:var(--text-2); }
.jr-hint.pos { background:var(--green-soft); color:var(--green); }
.jr-hint.neg { background:var(--red-soft); color:var(--red); }
.jr-thin { font-size:10px; color:var(--text-3); text-transform:uppercase;
  letter-spacing:.05em; }
.jr-hist { display:flex; align-items:flex-end; gap:8px; padding:8px 4px 0; }
.jr-hist-col { flex:1; min-width:0; text-align:center; }
.jr-hist-count { font-size:11px; color:var(--text-2); height:16px; }
.jr-hist-barwrap { height:140px; display:flex; align-items:flex-end; }
.jr-hist-bar { width:100%; border-radius:3px 3px 0 0; min-height:0; }
.jr-hist-bar.pos { background:var(--green-soft); border-top:2px solid var(--green); }
.jr-hist-bar.neg { background:var(--red-soft); border-top:2px solid var(--red); }
.jr-hist-label { margin-top:6px; font-size:9px; color:var(--text-3); white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; }

/* ───────────── v32: Detaljer — strukturlag (MACD-subplot, overlays, struktur & nivåer) ───────────── */
.det-chart { position:relative; }
.struct-canvas { position:absolute; left:0; top:0; pointer-events:none; z-index:3; }
.det-macd { width:100%; min-height:110px; margin-top:4px; }
.legend-spacer { flex:1; }
.ov-chip { padding:2px 9px; border:1px solid var(--border-2); border-radius:5px; background:transparent;
  color:var(--text-2); font:inherit; font-size:11px; cursor:pointer; line-height:1.5; }
.ov-chip:hover { color:var(--text-1); }
.ov-chip.on { border-color:rgba(63,178,127,.4); color:var(--green); background:var(--green-soft); }
.rsi-per { margin-left:8px; display:inline-flex; gap:2px; }
.rsi-per-btn { padding:0 6px; border:1px solid var(--border-2); border-radius:4px; background:transparent;
  color:var(--text-3); font:inherit; font-size:10px; cursor:pointer; line-height:1.6; }
.rsi-per-btn:hover { color:var(--text-1); }
.rsi-per-btn.on { border-color:rgba(157,108,240,.5); color:#9d6cf0; background:rgba(157,108,240,.12); }

.struct-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--border);
  border:1px solid var(--border); border-radius:8px; overflow:hidden; margin-top:4px; }
@media (max-width:900px) { .struct-grid { grid-template-columns:1fr; } }
.struct-grid .st { background:var(--bg-2); padding:11px 15px; }
.struct-grid .k { font-size:9.5px; letter-spacing:.10em; text-transform:uppercase; color:var(--text-2);
  display:flex; gap:7px; align-items:center; }
.struct-grid .v { margin-top:4px; font-size:13px; color:var(--text-1); }
.st-dim { color:var(--text-3); font-size:12px; }
.st-dot { width:6px; height:6px; border-radius:50%; display:inline-block; background:var(--text-3); }
.st-dot.pos { background:var(--green); } .st-dot.neg { background:var(--red); }
.st-dot.warn { background:var(--orange); } .st-dot.vol { background:#2dd4bf; }

.lv-list { margin-top:12px; border-top:1px solid var(--border); }
.lv-head { display:flex; align-items:center; justify-content:space-between; padding:10px 2px 4px;
  font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-2); }
.lv-head .mono { color:var(--text-3); letter-spacing:0; text-transform:none; }
.lv-row { display:flex; align-items:center; gap:12px; padding:8px 2px; border-top:1px solid var(--bg-3); }
.lv-row:first-of-type { border-top:0; }
.lv-price { min-width:74px; font-weight:600; font-size:13px; color:var(--text-0); }
.lv-nm { color:var(--text-2); font-size:12px; }
.lv-grow { flex:1; }
.lv-dist { font-size:12px; color:var(--text-2); }
.src { font-size:9.5px; letter-spacing:.04em; text-transform:uppercase; padding:2px 7px;
  border-radius:5px; border:1px solid var(--border-2); color:var(--text-2); white-space:nowrap; }
.src.fib { color:#e0707a; border-color:rgba(224,112,122,.3); background:rgba(224,112,122,.07); }
.src.ma { color:#94a2b2; } .src.ma50 { color:var(--orange); border-color:rgba(224,160,96,.3); }
.src.vol { color:#2dd4bf; border-color:rgba(45,212,191,.3); background:rgba(45,212,191,.10); }
.src.piv { color:var(--text-1); }
.sr { font-size:9.5px; letter-spacing:.05em; text-transform:uppercase; padding:2px 7px;
  border-radius:5px; min-width:64px; text-align:center; }
.sr.res { color:var(--red); background:var(--red-soft); border:1px solid rgba(248,81,73,.2); }
.sr.sup { color:var(--green); background:var(--green-soft); border:1px solid rgba(63,178,127,.2); }

/* ───────────────────────── v34: Claude-dekning + manuell tagging ───────────────────────── */
/* Dekning-badge: synliggjør papirer med aktiv Claude-analyse i alle oversikter.
   .cov-claude = Sonnet-syntese (followed=1). .cov-opus reservert for fremtidig
   ekstern Opus fundamental-dekning (samme markup, annen farge) — se _macros.html. */
.cov-badge { display:inline-flex; align-items:center; line-height:0; margin-left:6px; vertical-align:middle; }
.cov-badge svg { display:block; }
.cov-badge svg path { fill:currentColor; }
.cov-claude { color:var(--purple); }
.cov-opus { color:var(--blue); }
.hero-ticker h1 .cov-badge svg { width:14px; height:14px; }

/* Skrivebeskyttet favorittstjerne (ikke-Admin): vis markøren, ingen interaksjon. */
.star-ro { cursor:default; }
.star-ro:hover { color:inherit; transform:none; }
.star-ro.on { color:var(--orange); }

/* Skrivebeskyttet «følges»-status på /claude/ for ikke-Admin. */
.follow-ro { font-size:12px; font-weight:600; }
.follow-ro.following { color:var(--green); }
.ro-note { color:var(--purple); }
.dimmed { color:var(--text-3); }

/* Innstillinger: nyhets-tagging & syntese-kort. */
.src-dot.warn { background:var(--orange); }
.tag-grid { display:flex; gap:28px; align-items:center; flex-wrap:wrap; margin:6px 0 16px; }
.tag-stat { display:flex; flex-direction:column; gap:2px; min-width:120px; }
.tag-num { font-size:30px; font-weight:700; color:var(--orange); line-height:1; }
.tag-lbl { font-size:12px; color:var(--text-2); }
.tag-info { display:flex; flex-direction:column; gap:5px; }
.tag-line { display:flex; align-items:center; gap:8px; font-size:13px; flex-wrap:wrap; }
.tag-state { font-weight:600; }
.tag-res { font-size:12px; }
.tag-form { display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.tag-form .set-note { flex:1; min-width:260px; margin:0; }

/* ───────────────────────── v36: Korrelasjonspanel (Detaljer) ───────────────────────── */
.corr-list { margin-top:4px; }
.corr-head, .corr-row {
  display:grid;
  grid-template-columns:minmax(160px,2.4fr) repeat(4,1fr) 84px;
  align-items:center; gap:10px;
}
.corr-head {
  padding:6px 8px; font-size:9.5px; letter-spacing:.10em; text-transform:uppercase;
  color:var(--text-3); border-bottom:1px solid var(--border);
}
.corr-row { padding:9px 8px; border-bottom:1px solid var(--bg-3); }
.corr-row:last-child { border-bottom:0; }
.corr-row.is-brent { background:var(--orange-soft); border-radius:4px; }
.corr-row.is-brent .corr-sym { color:var(--orange); }
.corr-c-ref { display:flex; flex-direction:column; gap:1px; min-width:0; }
.corr-sym { font-size:12.5px; font-weight:600; color:var(--text-1); }
.corr-nm { font-size:11px; color:var(--text-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.corr-fx { color:var(--text-3); }
.corr-c-num { text-align:right; font-size:13px; color:var(--text-1); }
.corr-c-str { text-align:right; }
.corr-head .corr-c-num, .corr-head .corr-c-str { text-align:right; }
.corr-dim { color:var(--text-2); font-size:12px; }
.corr-tone.strong { color:var(--orange); font-weight:600; }
.corr-tone.mod { color:var(--text-1); }
.corr-tone.neutral { color:var(--text-2); }
.corr-pill {
  display:inline-block; padding:1px 8px; border-radius:9px; font-size:10px;
  letter-spacing:.04em; text-transform:uppercase; font-weight:600;
}
.corr-pill.strong { background:var(--orange-soft); color:var(--orange); }
.corr-pill.mod { background:var(--bg-3); color:var(--text-1); }
.corr-pill.neutral { background:var(--bg-3); color:var(--text-3); }
@media (max-width:900px) {
  .corr-head { display:none; }
  .corr-row { grid-template-columns:1fr 1fr; gap:4px 10px; }
  .corr-c-ref { grid-column:1 / -1; }
  .corr-c-num::before { content:attr(data-lbl); float:left; color:var(--text-3); font-size:10px; }
}

/* ═══════════ Posisjoner v50: cockpit · pengekolonner · R-bar · «?»-help ═══════════ */
.pcockpit { display:grid; grid-template-columns:repeat(5,1fr); gap:12px; }
@media (max-width:1100px) { .pcockpit { grid-template-columns:repeat(2,1fr); } }
@media (max-width:600px) { .pcockpit { grid-template-columns:1fr; } }
.pmetric { background:var(--bg-2); border:1px solid var(--border); border-radius:10px; padding:13px 15px; }
.pmetric .pm-l { font-size:11px; color:var(--text-3); text-transform:uppercase; letter-spacing:.5px; margin-bottom:5px; display:flex; align-items:center; }
.pmetric .pm-v { font-size:22px; font-weight:600; color:var(--text-0); font-family:'JetBrains Mono',monospace; letter-spacing:-.01em; }
.pmetric .pm-v.pos { color:var(--green); } .pmetric .pm-v.neg { color:var(--red); }
.pmetric .pm-s { font-size:11px; color:var(--text-2); margin-top:3px; }

.pos-money.pos { color:var(--green); } .pos-money.neg { color:var(--red); }

.r-cell { min-width:148px; }
.r-track { position:relative; height:6px; background:var(--bg-3); border-radius:3px; margin:4px 0; }
.r-track .rt { position:absolute; top:-2px; width:2px; height:10px; }
.r-track .rt-stop { background:var(--red); }
.r-track .rt-entry { background:var(--text-3); }
.r-track .rt-tgt { background:var(--green); }
.r-track .rt-mark { top:-3px; width:11px; height:11px; border-radius:50%; border:2px solid var(--bg-2); transform:translateX(-5px); }
.r-track .rt-mark.pos { background:var(--green); } .r-track .rt-mark.neg { background:var(--red); }
.r-val { font-size:11px; font-family:'JetBrains Mono',monospace; }
.r-nudge { display:inline-flex; align-items:center; gap:5px; font-size:11px; color:var(--orange); background:var(--orange-soft); padding:3px 8px; border-radius:5px; white-space:nowrap; }

.edge-chip { display:inline-flex; align-items:center; gap:4px; font-size:10px; padding:2px 7px; border-radius:5px; background:var(--purple-soft); color:var(--purple); font-family:'JetBrains Mono',monospace; margin-left:6px; vertical-align:middle; font-weight:600; }

.lukk-preview { font-size:11px; color:var(--text-3); font-family:'JetBrains Mono',monospace; white-space:nowrap; min-height:13px; margin-top:3px; }
.lukk-preview .pv.pos { color:var(--green); } .lukk-preview .pv.neg { color:var(--red); }
.pos-lukk-wrap { display:flex; flex-direction:column; gap:0; }
.pos-full-table td .pos-actions { align-items:flex-start; }

/* ═══ Posisjoner v57: gruppert visning (ticker + instrument) ═══ */
.pos-grp-table { width:100%; border-collapse:collapse; }
.pos-grp-table th.c, .pos-grp-table td.c { text-align:center; }
.sub-s { font-size:11px; color:var(--text-3); margin-top:1px; font-weight:400; }

/* morsrad */
.pos-grp-table tr.grp { cursor:pointer; transition:background .12s; }
.pos-grp-table tr.grp:hover { background:var(--bg-3); }
.pos-grp-table tr.grp.open { background:var(--bg-3); }
.pos-grp-table tr.grp > td { border-top:1px solid var(--border-2); padding:12px 10px; }
.pos-grp-table .chev { display:inline-block; width:13px; color:var(--text-3); font-size:9px;
  transition:transform .15s; vertical-align:middle; }
.pos-grp-table tr.grp.open .chev { transform:rotate(90deg); }
.gcount { background:var(--bg-0); color:var(--text-2); font-size:10px; font-weight:600;
  padding:1px 7px; border-radius:8px; margin-left:8px; border:1px solid var(--border-2); }
.instr { display:inline-block; font-size:10px; font-weight:700; letter-spacing:.4px;
  padding:1px 7px; border-radius:5px; margin-left:8px; text-transform:uppercase; vertical-align:middle; }
.instr-cfd { background:var(--blue-soft); color:#6ea8fb; }
.instr-aksjer { background:var(--green-soft); color:var(--green); }
.ksb { display:inline-block; min-width:22px; text-align:center; font-weight:700; font-size:12px;
  padding:2px 7px; border-radius:5px; font-family:'JetBrains Mono',monospace; }
.ksb-k { background:var(--green-soft); color:var(--green); }
.ksb-s { background:var(--red-soft); color:var(--red); }
.mixtag { color:var(--orange); font-size:12px; margin-left:5px; cursor:help; }

/* barn-rader (lott) */
.pos-grp-table tr.lot { display:none; background:var(--bg-1); }
.pos-grp-table tr.lot.show { display:table-row; }
.pos-grp-table tr.lot > td { border-top:1px solid var(--border); padding:7px 10px; font-size:12px; color:var(--text-2); }
.pos-grp-table tr.lot td.ordid { padding-left:28px; }
.pos-grp-table .oid { color:var(--text-1); font-weight:500; }
.pos-grp-table .odate { color:var(--text-3); font-size:11px; margin-left:6px; }

/* «Lukk hele» — gruppe-lukk-knapp på morsraden */
.pos-grp-lukk-form { display:flex; align-items:center; gap:5px; }
.pos-lukk-alle { background:var(--orange-soft); color:var(--orange); border:1px solid rgba(224,160,96,.4); }
.pos-lukk-alle:hover { background:var(--orange); color:#1a1a1a; }

/* ═══ CMC CSV-import (v58) ═══ */
.imp-upload { display:flex; align-items:center; gap:14px; padding:16px 18px; flex-wrap:wrap; }
.imp-file { color:var(--text-2); font-size:13px; font-family:inherit; }
.imp-file::file-selector-button { background:var(--bg-3); color:var(--text-1); border:1px solid var(--border-2);
  border-radius:6px; padding:7px 12px; font-family:inherit; font-size:13px; cursor:pointer; margin-right:12px; }
.imp-file::file-selector-button:hover { border-color:var(--text-3); }
.imp-table td { vertical-align:top; }
.imp-name { font-weight:600; color:var(--text-0); font-size:13px; }
.imp-warn { color:var(--orange); font-size:11px; margin-top:3px; }
.imp-unmapped { background:var(--orange-soft); }
.imp-lots { margin-top:5px; }
.imp-lots summary { font-size:11px; color:var(--text-3); cursor:pointer; }
.imp-lottbl { margin-top:6px; border-collapse:collapse; width:100%; }
.imp-lottbl th { padding:3px 8px 3px 0; font-size:10px; text-transform:uppercase; letter-spacing:.4px; color:var(--text-3); text-align:left; border:0; }
.imp-lottbl th.r { text-align:right; }
.imp-lottbl td { padding:3px 8px 3px 0; font-size:11px; color:var(--text-2); border:0; }
.imp-lev { width:110px; }
.imp-hint { font-size:10px; color:var(--text-3); margin-top:3px; }
.imp-lotlev { width:84px; padding:3px 6px; font-size:11px; }
.imp-lotlev.is-off { opacity:.35; }

/* Edge-preview i Ny posisjon-skjema (v51) */
.pos-edge { display:flex; align-items:center; gap:18px; margin-top:16px; padding:13px 15px; background:var(--bg-1); border:1px solid var(--border); border-radius:9px; flex-wrap:wrap; }
.pe-score { display:flex; align-items:center; gap:8px; }
.pe-score b { font-size:26px; font-weight:700; color:var(--green); font-family:'JetBrains Mono',monospace; }
.pe-cap { font-size:11px; color:var(--text-3); text-transform:uppercase; letter-spacing:.05em; line-height:1.15; }
.pe-layers { display:flex; gap:10px; flex:1; flex-wrap:wrap; min-width:240px; }
.pe-layer { display:flex; flex-direction:column; gap:4px; min-width:104px; flex:1; }
.pe-ln { font-size:11px; color:var(--text-2); display:flex; justify-content:space-between; }
.pe-bar { height:5px; border-radius:3px; background:var(--bg-3); overflow:hidden; }
.pe-bar i { display:block; height:100%; border-radius:3px; }
.pe-note { flex-basis:100%; font-size:11px; color:var(--text-3); }
.pe-be { flex-basis:100%; margin-top:6px; padding:6px 10px; border-radius:6px;
  font-size:11px; background:var(--bg-3); color:var(--text-2); }

/* Oversikt v52: dempet KPI (equity-avhengige) + kontant-hurtigredigering */
.pk-soft { opacity:.5; }
.pk-soft:hover { opacity:1; }
.pk-cash-form { display:flex; align-items:center; gap:6px; margin:2px 0 1px; }
.pk-cash-input { width:108px; padding:4px 8px; background:var(--bg-1); border:1px solid var(--border-2); border-radius:6px; color:var(--text-0); font-size:18px; font-weight:600; outline:none; }
.pk-cash-input:focus { border-color:var(--green); }
.pk-cash-save { padding:5px 10px; border:1px solid var(--green); background:var(--green-soft); color:var(--green); border-radius:6px; font-size:13px; font-weight:600; cursor:pointer; font-family:inherit; line-height:1; }
.pk-cash-save:hover { background:var(--green); color:#06281c; }

/* «?»-help — gjenbrukbart, dashbord-bredt */
.help { display:inline-flex; align-items:center; justify-content:center; width:15px; height:15px; border-radius:50%; border:1px solid var(--border-2); background:var(--bg-3); color:var(--text-2); font-size:10px; font-weight:700; cursor:help; position:relative; margin-left:6px; vertical-align:middle; -webkit-user-select:none; user-select:none; }
.help:hover, .help:focus, .help.pin { color:var(--green); border-color:var(--green); outline:none; }
.help .tip { position:absolute; top:150%; left:50%; transform:translateX(-50%); width:280px; background:var(--bg-1); border:1px solid var(--border-2); border-radius:9px; padding:12px 14px; z-index:60; visibility:hidden; opacity:0; transition:opacity .12s; text-align:left; font-weight:400; box-shadow:0 14px 40px rgba(0,0,0,.55); white-space:normal; }
.help:hover .tip, .help:focus-within .tip, .help.pin .tip { visibility:visible; opacity:1; }
.help .tip::before { content:""; position:absolute; top:-7px; left:50%; transform:translateX(-50%) rotate(45deg); width:12px; height:12px; background:var(--bg-1); border-left:1px solid var(--border-2); border-top:1px solid var(--border-2); }
.tip-wide { width:380px; }
.tip-h { display:block; font-size:13px; color:var(--text-0); font-weight:600; margin-bottom:7px; }
.tip-what { display:block; font-size:12px; color:var(--text-1); line-height:1.5; margin-bottom:6px; }
.tip-why { display:block; font-size:12px; color:var(--text-2); line-height:1.5; margin-bottom:7px; }
.tip-cond { display:block; font-size:11px; color:var(--text-3); line-height:1.55; border-top:1px solid var(--border); padding-top:7px; }
.tip-cond b { color:var(--text-2); }
.pmetric:last-child .tip, th.r .tip { left:auto; right:0; transform:none; }
.pmetric:last-child .tip::before, th.r .tip::before { left:auto; right:6px; transform:rotate(45deg); }

/* A6: klikkbare makro-chips (Rig count US / EIA oil inv → Makro-fanen) */
.macro-link { text-decoration:none; color:inherit; cursor:pointer; border-radius:6px; padding:2px 6px; margin:-2px -2px; transition:background .12s ease; }
.macro-link:hover { background:var(--bg-3); }

/* A6/§4: Detaljer katalysator-kort (ticker-spesifikke + makro) */
.cat-row { display:flex; align-items:center; gap:8px; }
.cat-row .cat-days { min-width:36px; font-weight:600; color:var(--text-1); }
.cat-row .cat-days.warn { color:var(--orange); }
.cat-row .cat-label { flex:1; color:var(--text-1); font-size:13px; }
.cat-row .cat-imp { font-size:11px; color:var(--text-3); text-transform:uppercase; }
.cat-row .cat-imp.warn { color:var(--orange); }
.cat-row .cat-src { font-size:11px; color:var(--text-3); min-width:46px; text-align:right; }

/* A6/§4: makro-relevans-chip på Detaljer (FUNDAMENTALT) */
.makro-rel-chip { display:inline-block; margin:0 0 10px; padding:3px 9px; font-size:11.5px;
  background:var(--bg-1); border:1px solid var(--border-2); border-radius:6px;
  color:var(--text-2); text-decoration:none; transition:background .12s ease; }
.makro-rel-chip:hover { background:var(--bg-3); color:var(--text-0); }

/* ═══════════════ A8 — Beslutningskø + screener-kolonner (Økt 1) ═══════════════ */
/* Edge-fargeskala (delt av kø-bar, edge-mini i tabellen): pos≥70 / warn≥50 / neg ellers */
.edge-pos { color:var(--green); } .edge-warn { color:var(--orange); } .edge-neg { color:var(--red); }
.edge-neutral { color:var(--text-2); }

/* Kø-kort */
.q-card { padding:14px 16px 10px; }
.q-list { display:flex; flex-direction:column; gap:6px; margin-top:6px; }
.q-row { display:grid; grid-template-columns:200px 64px 1fr auto 26px; align-items:center;
  gap:12px; padding:9px 12px; background:var(--bg-1); border:1px solid var(--border);
  border-left:3px solid var(--border-2); border-radius:8px; cursor:pointer;
  transition:background .12s ease, border-color .12s ease; }
.q-row:hover { background:var(--bg-3); }
.q-row:focus-visible { outline:2px solid var(--blue); outline-offset:1px; }
.q-row.q-buy { border-left-color:var(--green); }
.q-row.q-near { border-left-color:var(--orange); }
.q-row.q-exit { border-left-color:var(--red); }
.q-row.q-oversold { border-left-color:var(--purple); }

.q-badge { font-size:10px; font-weight:700; letter-spacing:.6px; text-transform:uppercase;
  padding:3px 8px; border-radius:5px; text-align:center; white-space:nowrap;
  border:1px solid transparent; }
.q-badge.q-buy { background:var(--green-soft); color:var(--green); border-color:rgba(63,178,127,.4); }
.q-badge.q-near { background:var(--orange-soft); color:var(--orange); border-color:rgba(224,160,96,.4); }
.q-badge.q-exit { background:var(--red-soft); color:var(--red); border-color:rgba(248,81,73,.4); }
.q-badge.q-oversold { background:var(--purple-soft); color:var(--purple); border-color:rgba(157,108,240,.4); }

.q-tk { font-size:14px; font-weight:700; color:var(--text-0); }
.q-reason { font-size:12.5px; color:var(--text-1); line-height:1.35; }
.q-stop { color:var(--orange); }
.q-edge { display:flex; align-items:center; gap:8px; justify-self:end; }
.q-edge-bar { width:120px; height:6px; border-radius:3px; background:var(--bg-3); overflow:hidden; }
.q-edge-fill { display:block; height:100%; border-radius:3px; }
.q-edge-fill.edge-pos { background:var(--green); }
.q-edge-fill.edge-warn { background:var(--orange); }
.q-edge-fill.edge-neg { background:var(--red); }
.q-edge-fill.edge-neutral { background:var(--text-3); }
.q-edge-num { font-size:15px; font-weight:700; min-width:24px; text-align:right; }
.q-bell { text-decoration:none; font-size:14px; line-height:1; opacity:.75; text-align:center;
  transition:opacity .12s ease; }
.q-bell:hover { opacity:1; }
.q-bell-off { visibility:hidden; }
.q-foot { margin-top:9px; }

@media (max-width:760px) {
  .q-row { grid-template-columns:1fr auto; grid-row-gap:4px; }
  .q-badge { grid-column:1; justify-self:start; }
  .q-tk { grid-column:2; justify-self:end; }
  .q-reason { grid-column:1 / -1; }
  .q-edge { grid-column:1 / -1; justify-self:start; }
  .q-bell { grid-column:2; }
}

/* Screener-kolonner i Oversikt-tabellen */
.c-edge { white-space:nowrap; }
.c-edge .edge-mini { display:inline-block; width:34px; height:5px; border-radius:3px;
  background:var(--bg-3); overflow:hidden; vertical-align:middle; margin-right:6px; }
.c-edge .edge-mini-fill { display:block; height:100%; border-radius:3px; }
.c-edge .edge-mini.edge-pos .edge-mini-fill { background:var(--green); }
.c-edge .edge-mini.edge-warn .edge-mini-fill { background:var(--orange); }
.c-edge .edge-mini.edge-neg .edge-mini-fill { background:var(--red); }
.c-edge .edge-mini.edge-neutral .edge-mini-fill { background:var(--text-3); }
.c-edge .edge-num { font-weight:600; }
.c-setup { font-size:11.5px; white-space:nowrap; max-width:190px; overflow:hidden;
  text-overflow:ellipsis; }
.c-setup.setup-pos { color:var(--green); }
.c-setup.setup-neg { color:var(--red); }
.c-setup.setup-neutral { color:var(--text-2); }
.c-kat.kat-warn { color:var(--orange); font-weight:600; }
.c-shortd.neg { color:var(--red); } .c-shortd.pos { color:var(--green); }
.c-shortd.neutral { color:var(--text-2); }
