/* Vantage — "Unibet × Apple" theme system: orange accent, near-black
   surfaces, frosted glass. Dark is the base (:root) and the app's default;
   light mode overrides via [data-theme="light"]. A tiny script in base.html
   sets data-theme from saved choice or system preference before first
   paint, so there's never a flash of wrong theme.

   --of-* are the literal brand tokens (PROMPT-v2.md DEL 1.2). Every other
   variable below is a semantic alias onto them that the rest of this file
   (and all templates) already reference - keeps every existing component
   working while the whole app re-themes from one palette. */

:root {
  --of-orange: #FF6700;
  --of-orange-light: #FF9500;
  --of-bg: #0A0A0F;
  --of-surface: #13131A;
  --of-surface-2: #1C1C26;
  --of-border: rgba(255, 255, 255, 0.08);
  --of-text: #F5F5F7;
  --of-text-secondary: #8E8E9A;
  --of-green: #34C759;
  --of-red: #FF3B30;
  --of-blur: blur(28px) saturate(200%);
  --of-radius: 20px;
  --of-radius-sm: 12px;
  --of-shadow: 0 2px 8px rgba(0, 0, 0, 0.30), 0 24px 60px -16px rgba(0, 0, 0, 0.55);
  --of-glass-highlight: rgba(255, 255, 255, 0.14);
  --of-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  /* Max terminal secondary accent - "trading terminal" register of the same
     Vantage system, not a new palette. Amber/gold reads as premium/
     exclusive against the near-black base without breaking brand
     continuity with the orange primary (same warm hue family, cooler and
     more metallic than --of-orange). */
  --of-gold: #D4AF37;
  --of-gold-light: #F0D878;

  --bg: var(--of-bg);
  --bg-glow: rgba(255, 103, 0, 0.10);
  --card-bg: rgba(255, 255, 255, 0.03);
  --card-bg-solid: var(--of-surface);
  --card-border: var(--of-border);
  --of-glass-edge: var(--of-border);
  --of-shadow-lift: 0 3px 10px rgba(0, 0, 0, 0.28), 0 30px 70px -16px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(255, 103, 0, 0.08);
  --tile-bg: rgba(255, 255, 255, 0.03);
  --text: var(--of-text);
  --text-dim: var(--of-text-secondary);

  --brand: var(--of-orange-light);   /* links & accent text on dark */
  --brand-btn: var(--of-orange);     /* button fill */
  --brand-btn-hover: #E65C00;
  --brand-ink: #1a0900;              /* text on brand buttons */
  --hero-glow: rgba(255, 103, 0, 0.18);

  --good-fg: var(--of-green);
  --bad-fg: var(--of-red);
  --warn-fg: #FFD60A;
  --critical: var(--of-red);

  --pill-green-bg: rgba(52, 199, 89, 0.16);
  --pill-red-bg: rgba(255, 59, 48, 0.16);
  --pill-gray-bg: rgba(142, 142, 154, 0.16);
  --pill-warn-bg: rgba(255, 214, 10, 0.16);
  --pill-brand-bg: rgba(255, 103, 0, 0.16);

  --input-bg: rgba(255, 255, 255, 0.04);
  --input-border: rgba(255, 255, 255, 0.14);
  --grid-line: var(--of-border);
  --row-hover: rgba(255, 255, 255, 0.03);
  --nav-bg: rgba(10, 10, 15, 0.72);
  --nav-border: var(--of-border);
  --shadow: 0 1px 0 rgba(255,255,255,0.03) inset, var(--of-shadow);

  --radius: var(--of-radius);
  --radius-sm: var(--of-radius-sm);
  font-size: 16px;

  /* 2026-09-23 (Ye brief, punkt 0): type scale + spacing tokens. Additive -
     no existing token changed. Used by the three surface levels at the end
     of this file (.hero-panel / .glass-card / .list-row). */
  --fs-display: 2.25rem;
  --fs-h1: 1.5rem;
  --fs-h2: 1.125rem;
  --fs-body: .9375rem;
  --fs-meta: .8125rem;
  --fs-label: .8125rem;
  --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px;
  --sp-5: 24px; --sp-6: 32px; --sp-7: 48px;
}

[data-theme="light"] {
  --of-bg: #FAFAFA;
  --of-surface: #FFFFFF;
  --of-surface-2: #F2F2F5;
  --of-border: rgba(0, 0, 0, 0.08);
  --of-text: #1C1C1E;
  --of-text-secondary: #6E6E76;

  --bg: var(--of-bg);
  --bg-glow: rgba(255, 103, 0, 0.06);
  --card-bg: rgba(255, 255, 255, 0.7);
  --card-bg-solid: var(--of-surface);
  --card-border: var(--of-border);
  /* Frosted-glass edge for cards/nav/sidebar only (not table grid lines or
     the generic --of-border divider) - a thin white/light-grey rim so the
     glass reads as catching light rather than as a flat dark outline. */
  --of-glass-edge: rgba(255, 255, 255, 0.8);
  --of-shadow-lift: 0 2px 6px rgba(0, 0, 0, 0.06), 0 18px 40px -12px rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(255, 103, 0, 0.10);
  --tile-bg: rgba(0, 0, 0, 0.03);
  --text: var(--of-text);
  --text-dim: var(--of-text-secondary);

  --brand: #B84E00;          /* darker orange for contrast on paper */
  --brand-btn: var(--of-orange);
  --brand-btn-hover: #E65C00;
  --brand-ink: #1a0900;
  --hero-glow: rgba(255, 103, 0, 0.10);

  --good-fg: #1F9C46;
  --bad-fg: #D70015;
  --warn-fg: #B25900;
  --critical: #D70015;

  --pill-green-bg: rgba(31, 156, 70, 0.10);
  --pill-red-bg: rgba(215, 0, 21, 0.10);
  --pill-gray-bg: rgba(110, 110, 118, 0.10);
  --pill-warn-bg: rgba(178, 89, 0, 0.12);
  --pill-brand-bg: rgba(255, 103, 0, 0.12);

  --input-bg: rgba(0, 0, 0, 0.03);
  --input-border: rgba(0, 0, 0, 0.16);
  --grid-line: var(--of-border);
  --row-hover: rgba(0, 0, 0, 0.025);
  --nav-bg: rgba(250, 250, 250, 0.75);
  --nav-border: var(--of-border);
  --shadow: 0 1px 2px rgba(0,0,0,0.04), 0 8px 20px -10px rgba(0,0,0,0.08), 0 26px 50px -22px rgba(0,0,0,0.14);
  --of-glass-highlight: rgba(255, 255, 255, 0.55);
}

* { box-sizing: border-box; }

html { color-scheme: dark; }
html[data-theme="light"] { color-scheme: light; }

body {
  margin: 0;
  background:
    radial-gradient(ellipse 900px 520px at 50% -10%, var(--bg-glow), transparent 62%),
    var(--bg);
  background-attachment: fixed;
  color: var(--text);
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text",
    system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  transition: background 0.25s, color 0.25s;
}

h1, h2, h3, nav.topbar .brand, .hero-number-card .hero-value{
  font-weight: 800;
}

h1 { font-size: 2.1rem; font-weight: 800; letter-spacing: -0.02em; }
h2 { font-size: 1.4rem; font-weight: 700; letter-spacing: -0.01em; }
h3 { font-size: 1.1rem; font-weight: 700; }

a { color: var(--brand); text-decoration: none; transition: opacity 0.15s; }
a:hover { text-decoration: underline; opacity: 0.85; }

.container { max-width: 1040px; margin: 0 auto; padding: 0 20px; }

/* ---------- nav ---------- */

nav.topbar {
  background: var(--nav-bg);
  backdrop-filter: blur(24px) saturate(180%);
  -webkit-backdrop-filter: blur(24px) saturate(180%);
  position: sticky;
  top: 0;
  z-index: 20;
  border-bottom: 1px solid var(--of-glass-edge);
}
nav.topbar .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 16px;
  padding-bottom: 16px;
  flex-wrap: wrap;
  gap: 10px;
}
nav.topbar .brand { font-weight: 700; font-size: 1.3rem; color: var(--text); letter-spacing: -0.02em; }
nav.topbar .brand span { color: var(--brand); }

.of-logo-mark { transition: transform 0.4s var(--of-spring), filter 0.3s ease; }

nav.topbar .links { display: flex; gap: 20px; align-items: center; font-size: 0.9rem; flex-wrap: wrap; }
nav.topbar .links a { color: var(--text-dim); text-decoration: none; }
nav.topbar .links a:hover { color: var(--text); opacity: 1; }

.theme-toggle {
  width: 36px; height: 36px;
  border-radius: 50%;
  border: 1px solid var(--card-border);
  background: var(--card-bg);
  backdrop-filter: var(--of-blur);
  -webkit-backdrop-filter: var(--of-blur);
  color: var(--text);
  font-size: 1rem;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: border-color 0.3s var(--of-spring), transform 0.3s var(--of-spring), box-shadow 0.3s ease;
  line-height: 1;
  padding: 0;
}
.theme-toggle:hover {
  border-color: var(--brand-btn);
  transform: rotate(20deg) scale(1.08);
  box-shadow: 0 0 16px rgba(255, 103, 0, 0.30);
}

main { padding: 56px 0 100px; }

/* ---------- hero & focal number ---------- */

.hero { text-align: center; padding: 56px 0 44px; }
.hero h1 { font-size: 3.1rem; font-weight: 800; margin-bottom: 18px; letter-spacing: -0.03em; line-height: 1.08; }
.hero p.lead { color: var(--text-dim); font-size: 1.2rem; max-width: 620px; margin: 0 auto 34px; line-height: 1.5; }

.hero-number-card {
  position: relative;
  text-align: center;
  padding: 56px 32px;
  background: var(--card-bg);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid var(--of-glass-edge);
  border-radius: 32px;
  margin-bottom: 24px;
  box-shadow: var(--shadow);
  overflow: hidden;
  transition: transform 0.35s var(--of-spring), box-shadow 0.35s var(--of-spring), border-color 0.35s ease;
}
.hero-number-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 460px 240px at 50% 0%, var(--hero-glow), transparent 72%);
  pointer-events: none;
}
.hero-number-card > * { position: relative; }
.hero-number-card .eyebrow {
  text-transform: uppercase;
  letter-spacing: 0.09em;
  font-size: .8125rem;
  color: var(--text-dim);
  font-weight: 700;
  margin-bottom: 10px;
}
.hero-number-card .hero-value {
  font-size: 4.2rem;
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.hero-number-card .hero-value.good { color: var(--good-fg); text-shadow: 0 0 42px color-mix(in srgb, var(--good-fg) 35%, transparent); }
.hero-number-card .hero-value.bad { color: var(--bad-fg); }
.hero-number-card .hero-sub { color: var(--text-dim); font-size: 0.95rem; margin-top: 10px; }
/* 2026-09-29 (Ye P2): recommended-bet legs as title + meta line, so a wrapped
   line never leaves "hos" hanging at the big title's line-height. */

/* ---------- buttons ---------- */

.btn {
  position: relative;
  display: inline-block;
  padding: 13px 26px;
  border-radius: 999px;
  border: 1px solid transparent;
  font-weight: 600;
  font-size: 0.95rem;
  cursor: pointer;
  text-decoration: none;
  font-family: inherit;
  overflow: hidden;
  transition: transform 0.3s var(--of-spring), background 0.2s ease, border-color 0.2s ease,
    box-shadow 0.3s ease, opacity 0.2s ease;
}
/* Same root cause as the 2026-09-22 chat-widget[hidden] bug (see below): an author-origin
   rule that sets `display` unconditionally always wins over the UA stylesheet's
   `[hidden] { display: none }`, regardless of selector specificity, because author-origin
   normal declarations outrank user-agent-origin normal declarations in the cascade. Found
   during today's audit on account.html's push-notification toggle buttons
   (#push-toggle-on/#push-toggle-off, both `class="btn btn-outline"` + a server-rendered or
   JS-toggled `hidden` attribute) - without this override both buttons render simultaneously
   regardless of subscription state. */
.btn[hidden] { display: none; }
.btn::before {
  content: "";
  position: absolute;
  inset: 0 0 50% 0;
  background: linear-gradient(180deg, rgba(255,255,255,0.22), transparent);
  pointer-events: none;
}
.btn:hover { text-decoration: none; transform: translateY(-2px) scale(1.015); }
.btn:active { transform: translateY(0) scale(0.98); }
.btn-primary {
  background: var(--brand-btn);
  color: var(--brand-ink);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.32), 0 4px 20px -6px rgba(201,133,0,0.45), 0 0 0 rgba(255,103,0,0);
}
.btn-primary:hover {
  background: var(--brand-btn-hover);
  opacity: 1;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), 0 8px 28px -6px rgba(201,133,0,0.55), 0 0 26px rgba(255,103,0,0.4);
}
.btn-outline {
  background: var(--card-bg);
  backdrop-filter: var(--of-blur);
  -webkit-backdrop-filter: var(--of-blur);
  border-color: var(--input-border);
  color: var(--text);
}
.btn-outline:hover { border-color: var(--brand-btn); opacity: 1; box-shadow: var(--of-shadow); }

.btn-row { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
.btn.small { padding: 8px 16px; font-size: 0.85rem; }

/* ---------- cards & tiles ---------- */

.card, .glass-card {
  position: relative;
  background: var(--card-bg);
  backdrop-filter: var(--of-blur);
  -webkit-backdrop-filter: var(--of-blur);
  border: 1px solid var(--of-glass-edge);
  border-radius: var(--radius);
  padding: 30px;
  margin-bottom: 22px;
  box-shadow: var(--shadow);
  overflow: hidden;
  transition: transform 0.35s var(--of-spring), box-shadow 0.35s var(--of-spring), border-color 0.35s ease;
}
.card h2, .card h3, .glass-card h2, .glass-card h3 { margin-top: 0; }

/* Organic hover response: a barely-there lift and a brighter glass edge,
   like the surface is responding to the cursor rather than just decorating
   a mouseover. Kept subtle (1% scale) so dense dashboards don't feel jumpy. */
@media (hover: hover) {
  .card:hover, .glass-card:hover, .hero-number-card:hover {
    transform: translateY(-3px) scale(1.01);
    border-color: var(--brand-btn);
    box-shadow: var(--of-shadow-lift);
  }
}

/* Liquid Glass: a soft specular highlight along the top edge, like light
   catching the surface of the glass - a thin gradient overlay, not a hard
   line, so it reads as material rather than decoration. */
.card::before, .glass-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--of-glass-highlight), transparent);
  opacity: 0.8;
  pointer-events: none;
}
.card::after, .glass-card::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(180deg, var(--of-glass-highlight) 0%, transparent 12%);
  opacity: 0.06;
  pointer-events: none;
}

@media (prefers-reduced-motion: no-preference) {
  .card, .hero-number-card, .glass-card {
    animation: fadeUp 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
  }
  @keyframes fadeUp {
    from { opacity: 0; transform: translateY(14px) scale(0.99); }
    to { opacity: 1; transform: translateY(0) scale(1); }
  }
  /* Cascade cards/panels in slightly as they load rather than popping in
     all at once - capped at 6 so long lists don't end up staggered for
     seconds after the page is already interactive. */
  .grid > *:nth-child(1) { animation-delay: 0.02s; }
  .grid > *:nth-child(2) { animation-delay: 0.06s; }
  .grid > *:nth-child(3) { animation-delay: 0.10s; }
  .grid > *:nth-child(4) { animation-delay: 0.14s; }
  .grid > *:nth-child(5) { animation-delay: 0.18s; }
  .grid > *:nth-child(6) { animation-delay: 0.22s; }
}

.grid { display: grid; gap: 20px; }
.grid-2 { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.grid-3 { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.grid-4 { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }

.stat-tile {
  background: var(--tile-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-sm);
  padding: 20px 16px;
  text-align: center;
}
.stat-tile .value { font-size: 1.7rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.stat-tile .value.good { color: var(--good-fg); }
.stat-tile .value.bad { color: var(--bad-fg); }
.text-good { color: var(--good-fg); }
.text-bad { color: var(--bad-fg); }
.stat-tile .value.brand { color: var(--brand); }
.stat-tile .label { color: var(--text-dim); font-size: 0.82rem; margin-top: 4px; }

/* ---------- pills ---------- */

.pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 12px;
  border-radius: 999px;
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: 0.01em;
}
.pill-green { background: var(--pill-green-bg); color: var(--good-fg); }
.pill-red { background: var(--pill-red-bg); color: var(--bad-fg); }
.pill-gray { background: var(--pill-gray-bg); color: var(--text-dim); }
.pill-warning { background: var(--pill-warn-bg); color: var(--warn-fg); }
.pill-brand { background: var(--pill-brand-bg); color: var(--brand); }
.pill-gold { background: rgba(212, 175, 55, 0.16); color: var(--of-gold-light); }

/* ---------- usage bar (2026-09-13, analysis credits + daily Odds API
   budget) - see templates/_usage_bar.html for the macro this styles.
   Fill color escalates green (default, --brand-btn) -> amber (--warn-fg,
   >=70% used) -> red (--bad-fg, >=90% used), matching the tier thresholds
   models.get_odds_budget_status uses for its own degradation ladder so a
   viewer's color intuition ("this is turning red, something's about to
   get throttled") is never contradicted by what the app actually does.
   Inherits --brand-btn automatically inside .max-terminal/the Vantage Max
   cockpit's gold scope - no separate gold variant needed. ---------- */
.usage-bar-wrap { margin: 10px 0; }
.usage-bar-label {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: .8125rem;
  color: var(--text-dim);
  margin-bottom: 5px;
}
.usage-bar-label strong { color: var(--text); font-variant-numeric: tabular-nums; font-weight: 700; }
.usage-bar-track {
  position: relative;
  height: 10px;
  border-radius: 999px;
  background: var(--card-border);
  overflow: hidden;
}
.usage-bar-fill {
  height: 100%;
  border-radius: 999px;
  background: var(--brand-btn);
  transition: width 0.3s ease, background 0.3s ease;
}
.usage-bar-fill.usage-warn { background: var(--warn-fg); }
.usage-bar-fill.usage-danger { background: var(--bad-fg); }

/* Compact inline variant for topbars (_max_topbar.html, max_cockpit_base.html) */
.usage-bar-mini { display: inline-flex; align-items: center; gap: 7px; margin: 0; }
.usage-bar-mini .usage-bar-track { width: 56px; height: 6px; flex-shrink: 0; }
.usage-bar-mini-text {
  font-size: .8125rem;
  font-variant-numeric: tabular-nums;
  color: var(--text-dim);
  white-space: nowrap;
}

/* ---------- Max terminal: "trading terminal" register ---------- */
/* Scopes the shared card/chart/pill system toward gold instead of orange,
   denser spacing, no new components - see CLAUDE.md for the design
   reasoning. Wrap a page's content in <div class="max-terminal"> to opt in. */
.max-terminal {
  --brand-btn: var(--of-gold);
  --brand: var(--of-gold-light);
}
.max-terminal .glass-card {
  border-color: rgba(212, 175, 55, 0.22);
  background: linear-gradient(165deg, rgba(212, 175, 55, 0.05), var(--card-bg) 55%);
}
.max-terminal .glass-card::before { background: linear-gradient(90deg, transparent, rgba(212, 175, 55, 0.35), transparent); }
@media (hover: hover) {
  .max-terminal .glass-card:hover { border-color: var(--of-gold); box-shadow: 0 3px 10px rgba(0,0,0,0.28), 0 30px 70px -16px rgba(0,0,0,0.65), 0 0 0 1px rgba(212,175,55,0.16); }
}
.max-terminal .btn-primary { background: linear-gradient(160deg, var(--of-gold-light), var(--of-gold)); color: #1A1400; }
.max-terminal h1, .max-terminal h2, .max-terminal h3 { letter-spacing: -0.01em; }
.max-terminal-badge {
  display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px;
  border-radius: 999px; font-size: .8125rem; font-weight: 700; letter-spacing: 0.04em;
  text-transform: uppercase; background: linear-gradient(120deg, rgba(212,175,55,0.22), rgba(212,175,55,0.08));
  color: var(--of-gold-light); border: 1px solid rgba(212,175,55,0.3);
}
.max-terminal .stat-tile { background: rgba(212, 175, 55, 0.04); border-color: rgba(212, 175, 55, 0.14); }
.max-terminal .stat-tile .value.gold { color: var(--of-gold-light); }

/* ---- Max Terminal hero + empty-state + collapsible-panel components ----
   2026-09-11, Gotti's visual review of the real Vantage Max cockpit
   screenshot: the terminal page read as "a recolored regular dashboard" -
   a uniform grid of equal-weight bordered cards, several showing plain
   muted "nothing here yet" text at once. These are generic (not scoped to
   .max-terminal) and use the same --brand/--text/--text-dim/--card-border
   tokens every card already reads, so they automatically pick up gold
   coloring inside the Vantage Max cockpit shell (max-desktop.css
   repoints those tokens on body.max-cockpit-shell) without any
   cockpit-specific duplicate CSS - same "one token block, every reused
   template inherits it" approach max-desktop.css already uses. */
.mc-eyebrow {
  font-size: .8125rem; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--brand); opacity: 0.85; font-weight: 700; display: block; margin-bottom: 4px;
}
.mc-hero-top { display: flex; justify-content: space-between; align-items: flex-end; flex-wrap: wrap; gap: 20px; margin-bottom: 20px; }
/* mc-hero-numbers/value/label/chart removed 2026-09-12: the equity curve's
   headline numbers now live inside renderEquityChart's own
   .equity-widget-* markup (see chart.js/style.css), which replaced this
   card's static hero numbers with the Avanza-style period/kr-%-toggle
   widget. .mc-hero-top itself is kept, still wraps this card's title. */

.mc-empty { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; padding: 30px 16px 14px; }
.mc-empty-icon {
  width: 32px; height: 32px; border-radius: 50%; margin-bottom: 6px;
  border: 1px solid var(--card-border);
  display: flex; align-items: center; justify-content: center;
}
.mc-empty-icon::after { content: ""; width: 13px; height: 2px; border-radius: 2px; background: var(--brand); opacity: 0.7; }
.mc-empty-title { font-weight: 600; color: var(--text); margin: 0; font-size: 0.92rem; }
.mc-empty-sub { color: var(--text-dim); font-size: .8125rem; margin: 2px 0 8px; max-width: 320px; }

/* Collapsible settings/tool panels (native <details>) - closed by default
   when a section has no data yet, so an empty panel takes one header row
   instead of full card height competing with populated panels. Plain HTML
   <details>/<summary>, styled generically so the disclosure still works
   (with the browser's default marker) anywhere this class is used without
   this CSS loaded, e.g. if reused outside .max-terminal later. */
.mc-panel-collapsible summary {
  cursor: pointer; list-style: none;
  display: flex; align-items: center; gap: 12px;
  font-weight: 700; font-size: 1.05rem; color: var(--text);
}
.mc-panel-collapsible summary::-webkit-details-marker { display: none; }
.mc-panel-collapsible summary .mc-panel-title { flex: 1; }
.mc-panel-collapsible summary .mc-panel-meta {
  font-weight: 400; font-size: .8125rem; color: var(--text-dim);
}
.mc-panel-collapsible summary::after {
  content: "+"; font-size: 1.25rem; line-height: 1; color: var(--brand);
  flex: 0 0 auto;
}
.mc-panel-collapsible[open] summary::after { content: "\2013"; }
.mc-panel-collapsible[open] summary { margin-bottom: 16px; }

/* Deliberately-always-dark "trading terminal" header, on Max Terminal and
   every Max-exclusive subpage (CLV/Alla förslag/Odds-historik) - a
   structural signature beyond the gold color swap above, so Max reads as a
   genuinely distinct register of the product rather than a recolored Pro
   page. Explicit colors on purpose (not theme tokens): this one component
   commits to the same dark "terminal" look in both light and dark site
   themes, the way a code block or a stock-ticker panel would. See
   _max_topbar.html for the markup this styles. */
.max-terminal-topbar {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  position: relative; overflow: hidden;
  background: linear-gradient(135deg, #14110A 0%, #1D1710 100%);
  border: 1px solid rgba(212, 175, 55, 0.35);
  border-radius: var(--radius-sm);
  padding: 14px 20px;
  margin-bottom: 20px;
  box-shadow: 0 20px 50px -24px rgba(0, 0, 0, 0.7), inset 0 1px 0 rgba(255,255,255,0.04);
}
.max-terminal-topbar::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background-image: repeating-linear-gradient(0deg, rgba(212,175,55,0.05) 0px, rgba(212,175,55,0.05) 1px, transparent 1px, transparent 3px);
  opacity: 0.5;
}
.max-terminal-topbar-back {
  font-family: ui-monospace, 'SF Mono', Consolas, monospace;
  font-size: .8125rem; color: rgba(240, 216, 120, 0.75) !important;
  text-decoration: none; white-space: nowrap; position: relative;
}
.max-terminal-topbar-back:hover { color: var(--of-gold-light) !important; }
.max-terminal-topbar-mark {
  font-family: ui-monospace, 'SF Mono', Consolas, monospace;
  font-size: .8125rem; font-weight: 700; letter-spacing: 0.12em;
  color: var(--of-gold-light); white-space: nowrap; position: relative;
  display: inline-flex; align-items: center; gap: 8px;
}
.max-terminal-topbar-mark svg { flex: 0 0 auto; display: block; }
.max-terminal-topbar-title {
  margin: 0; font-size: 1.15rem; font-weight: 700; color: #F5EFDD; position: relative;
}
.max-terminal-topbar-badge {
  margin-left: auto; position: relative;
}

/* ---------- tables ---------- */

table { width: 100%; border-collapse: collapse; font-size: 0.92rem; }
th, td { text-align: left; padding: 13px 10px; border-bottom: 1px solid var(--grid-line); }
th { color: var(--text-dim); font-weight: 600; font-size: .8125rem; text-transform: uppercase; letter-spacing: 0.05em; }
tbody tr { transition: background 0.1s; }
tbody tr:hover { background: var(--row-hover); }

/* ---------- forms ---------- */

form .field { margin-bottom: 16px; }
label { display: block; font-size: 0.85rem; color: var(--text-dim); margin-bottom: 6px; }
input, select, textarea {
  width: 100%;
  padding: 11px 14px;
  background: var(--input-bg);
  border: 1px solid var(--input-border);
  border-radius: var(--radius-sm);
  color: var(--text);
  font-size: 0.95rem;
  font-family: inherit;
  transition: border-color 0.12s;
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--brand-btn); }

/* Contrast hardening: some browsers render placeholders, dropdown options
   and selection colors with unreadable defaults in one of the themes -
   set every one of them explicitly from the theme variables. */
input::placeholder, textarea::placeholder { color: var(--text-dim); opacity: 0.75; }

/* Native selects are the classic dark-mode trap: some platforms force a
   light control background while the page sets light text, making the
   selected value unreadable. Take over rendering completely: solid themed
   background, themed text, own chevron. */
select {
  -webkit-appearance: none;
  appearance: none;
  background-color: var(--card-bg-solid);
  color: var(--text);
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23909090' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 36px;
}
option { color: var(--text); background: var(--card-bg-solid); }
::selection { background: var(--brand-btn); color: var(--brand-ink); }
input[type="date"] { color-scheme: inherit; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible {
  outline: 2px solid var(--brand-btn);
  outline-offset: 2px;
}
details > summary { color: var(--text); }
code {
  background: var(--tile-bg);
  border: 1px solid var(--card-border);
  border-radius: 5px;
  padding: 1px 6px;
  font-size: 0.85em;
  color: var(--text);
}

.checkbox-row { display: flex; align-items: center; gap: 8px; }
.checkbox-row input { width: auto; }
.checkbox-row label { margin: 0; }

.leg-row { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr auto; gap: 10px; align-items: end; margin-bottom: 10px; }
.leg-row label { margin-bottom: 4px; }

/* ---------- flashes ---------- */

.flash { padding: 12px 16px; border-radius: var(--radius-sm); margin-bottom: 16px; font-size: 0.9rem; }

.flash-success { background: var(--pill-green-bg); color: var(--good-fg); border: 1px solid var(--pill-green-bg); }
.flash-warning { background: var(--pill-warn-bg); color: var(--warn-fg); border: 1px solid var(--pill-warn-bg); }

/* ---------- misc ---------- */

.muted { color: var(--text-dim); }
.small { font-size: 0.85rem; }
.center { text-align: center; }
.mt-0 { margin-top: 0; }
.mb-0 { margin-bottom: 0; }

.notes-list { padding-left: 18px; }
.notes-list li { margin-bottom: 6px; font-size: 0.88rem; color: var(--text-dim); }

.footer { border-top: 1px solid var(--nav-border); padding: 24px 0; color: var(--text-dim); font-size: 0.82rem; text-align: center; }

.checklist { list-style: none; padding: 0; }
.checklist li { padding: 10px 0; border-bottom: 1px solid var(--grid-line); display: flex; gap: 10px; align-items: flex-start; }
.checklist input[type=checkbox] { width: auto; margin-top: 3px; }

/* ---------- charts (dataviz spec: thin marks, recessive grid) ---------- */

.chart-wrap { position: relative; }
.chart-svg { width: 100%; height: auto; display: block; overflow: visible; touch-action: pan-y; user-select: none; -webkit-user-select: none; }
.chart-line { fill: none; stroke: var(--brand-btn); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.chart-line-good { stroke: var(--good-fg); stroke-width: 2.25; }
.chart-line-bad { stroke: var(--bad-fg); stroke-width: 2.25; }
.chart-area { fill: var(--brand-btn); opacity: 0.08; }
.chart-grid line, line.chart-grid { stroke: var(--grid-line); stroke-width: 1; }
/* 2026-10-01 (Ye runda 2): charts draw at real pixel size, so 12px here is
   12px on screen. The halo keeps a label readable where the line crosses. */
.chart-axis text, text.chart-axis {
  fill: var(--text-dim); font-size: .8125rem; font-variant-numeric: tabular-nums;
  paint-order: stroke; stroke: var(--bg); stroke-width: 3px; stroke-linejoin: round;
}
text.chart-end-label { fill: var(--text); font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; paint-order: stroke; stroke: var(--bg); stroke-width: 3px; }
line.chart-zero { stroke: var(--text-dim); stroke-width: 1; stroke-dasharray: 2 4; opacity: 0.7; }
.chart-dot-small { fill: var(--text-dim); }
.chart-end-dot { stroke: var(--bg); stroke-width: 2.5; }
.chart-crosshair { stroke: var(--text-dim); stroke-width: 1; pointer-events: none; }
.chart-marker { stroke: var(--bg); stroke-width: 2.5; pointer-events: none; }
.chart-tone { fill: var(--grid-line); opacity: 0.6; }
.chart-hit { cursor: crosshair; }
.chart-dot { fill: var(--card-bg-solid); stroke: var(--brand-btn); stroke-width: 2; }
/* renderBarChart (2026-09-10, Max cockpit analytics expansion) - reuses
   the same .chart-grid/.chart-axis tokens as the line chart above. */
.chart-bar { fill: var(--brand-btn); opacity: 0.75; }
.chart-bar-pos { fill: var(--good-fg); opacity: 0.8; }
.chart-bar-neg { fill: var(--bad-fg); opacity: 0.8; }
/* renderCalibrationChart (2026-09-11) - dashed y=x reference line + a
   muted dot style for buckets too small to plot with confidence. */

/* renderEquityChart (2026-09-12, Avanza-style profit chart) - period
   buttons + kr/% toggle + a prominent current-value readout, wrapping the
   existing .chart-* line chart above. Uses --brand-btn/--brand so it
   automatically re-colors gold inside .max-terminal, same as every other
   component here. */

/* Result widget, Ye runda 2 (renderEquityChart): a neutral big number,
   kr/% toggle right next to it, a small green/red chip, the curve and the
   periods underneath. Controls use --brand*, so Max gold is inherited. */

@media (max-width: 900px) {
  
  /* Edge to edge on phones (the page gutter is 20px), numbers kept inside. */
  
  
}

.chart-tooltip {
  position: absolute;
  pointer-events: none;
  background: var(--card-bg-solid);
  border: 1px solid var(--card-border);
  border-radius: 6px;
  padding: 6px 10px;
  font-size: .8125rem;
  color: var(--text);
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.08s;
}
/* "Förstora graf" (2026-09-12) - see enableChartExpand() in chart.js.
   .chart-expandable is added to the chart's own container (the direct
   parent of .chart-wrap) so the expand button can sit absolutely
   positioned in its corner without needing every call site to add its
   own position:relative wrapper. */
.chart-expandable { position: relative; }
.chart-expand-btn {
  position: absolute;
  top: 0;
  left: 0; /* y-axis numbers sit at the right edge since 2026-10-01 */
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 1px solid var(--card-border);
  background: var(--card-bg-solid);
  color: var(--text-dim);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 5;
  box-shadow: var(--of-shadow);
}
.chart-expand-btn:hover { color: var(--brand); border-color: var(--brand-btn); }
.chart-expand-overlay {
  position: fixed;
  inset: 0;
  z-index: 90;
  background: var(--bg);
  display: flex;
  flex-direction: column;
  padding: 16px calc(16px + env(safe-area-inset-right, 0px)) calc(16px + env(safe-area-inset-bottom, 0px)) calc(16px + env(safe-area-inset-left, 0px));
}
/* The expanded chart is redrawn at this box's real pixel size (2026-10-01,
   see enableChartExpand) - no stretching, text keeps its normal size. */
.chart-expand-body { flex: 1; min-height: 0; overflow: hidden; }
.chart-expand-close {
  align-self: flex-end;
  margin-bottom: 12px;
  border: 1px solid var(--card-border);
  background: var(--tile-bg);
  color: var(--text);
  padding: 8px 16px;
  border-radius: 999px;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
}

.legend { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 10px; font-size: .8125rem; color: var(--text-dim); }

/* ---------- kursen ---------- */

.module-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px; height: 34px;
  border-radius: 10px;
  background: var(--pill-brand-bg);
  color: var(--brand);
  font-weight: 800;
  font-size: 1.05rem;
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
}
.module-head { display: flex; align-items: center; gap: 12px; cursor: pointer; font-weight: 700; font-size: 1.05rem; }
.example-box {
  background: var(--tile-bg);
  border: 1px solid var(--card-border);
  border-left: 3px solid var(--brand-btn);
  border-radius: var(--radius-sm);
  padding: 14px 16px;
  margin: 14px 0;
  font-size: 0.9rem;
}
.example-box .example-tag {
  text-transform: uppercase;
  letter-spacing: 0.07em;
  font-size: .8125rem;
  font-weight: 700;
  color: var(--brand);
  display: block;
  margin-bottom: 6px;
}
.takeaway {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  background: var(--pill-brand-bg);
  border-radius: var(--radius-sm);
  padding: 12px 16px;
  margin-top: 14px;
  font-size: 0.9rem;
  font-weight: 600;
}
.takeaway::before { content: "★"; color: var(--brand); }

/* kurs 2.0 (2026-09-10, Max-exclusive rewrite): module nav grid, per-lesson
   subsections inside the existing per-module <details class="card">, a
   reveal-answer quiz component (no JS/backend - just <details>, consistent
   with how the rest of this page already uses native disclosure widgets),
   and a client-filterable glossary. Reuses .card/.pill/.notes-list/
   .example-box/.takeaway tokens throughout, no new color tokens. */
.kurs-nav-grid { display: grid; gap: 10px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); margin: 18px 0 28px; }
.kurs-nav-item {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px; border-radius: var(--radius-sm);
  border: 1px solid var(--card-border); background: var(--tile-bg);
  text-decoration: none; color: var(--text); transition: border-color 0.12s;
}
.kurs-nav-item:hover { border-color: var(--brand-btn); }
.kurs-nav-item .module-badge { width: 30px; height: 30px; font-size: 0.92rem; }
.kurs-nav-item .kurs-nav-label { font-weight: 600; font-size: 0.88rem; }
.kurs-nav-item .kurs-nav-count { display: block; color: var(--text-dim); font-size: .8125rem; margin-top: 2px; font-weight: 400; }

.lesson { margin: 22px 0; padding-top: 18px; border-top: 1px solid var(--grid-line); }
.lesson:first-of-type { margin-top: 4px; padding-top: 0; border-top: none; }
.lesson-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin: 0 0 8px; font-size: 0.98rem; }
.lesson-num { color: var(--text-dim); font-weight: 700; font-variant-numeric: tabular-nums; }

.quiz-block { margin-top: 24px; padding: 16px; border-radius: var(--radius-sm); background: var(--tile-bg); border: 1px dashed var(--card-border); }
.quiz-block > .quiz-block-title { font-weight: 700; font-size: 0.9rem; margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
.quiz-q { margin-bottom: 8px; border-radius: var(--radius-sm); background: var(--card-bg-solid); border: 1px solid var(--card-border); padding: 2px 14px; }
.quiz-q summary { cursor: pointer; padding: 10px 0; font-size: 0.88rem; font-weight: 600; }
.quiz-options { margin: 0 0 10px; padding-left: 18px; font-size: 0.85rem; color: var(--text-dim); }
.quiz-answer { padding: 10px 12px; margin: 0 0 12px; border-radius: 8px; background: var(--pill-brand-bg); font-size: 0.85rem; }
.quiz-answer strong { color: var(--brand); }

.glossary-search { width: 100%; max-width: 360px; margin-bottom: 16px; }
.glossary-grid { display: grid; gap: 10px 24px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.glossary-term { padding: 10px 0; border-bottom: 1px solid var(--grid-line); }
.glossary-term dt { font-weight: 700; font-size: 0.86rem; }
.glossary-term dd { margin: 2px 0 0; font-size: 0.82rem; color: var(--text-dim); }
.glossary-term[hidden] { display: none; }

/* legal footer */
.age-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px; height: 34px;
  border-radius: 50%;
  border: 2px solid var(--text-dim);
  color: var(--text-dim);
  font-weight: 800;
  font-size: .8125rem;
}

/* ---------- landing v2 ("Unibet x Apple" hero) ---------- */

@keyframes tickerScroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

.hero-v2 { text-align: center; padding: 20px 0 40px; }
.hero-v2 .eyebrow-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 14px;
  border-radius: 999px;
  background: var(--pill-brand-bg);
  color: var(--brand);
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  margin-bottom: 22px;
}
.hero-v2 h1 { font-size: 3.2rem; line-height: 1.08; margin-bottom: 18px; }
.hero-v2 p.lead { font-size: 1.2rem; }

.section-head { text-align: center; max-width: 560px; margin: 64px auto 32px; }
.section-head h2 { margin-bottom: 8px; }
.section-head p { color: var(--text-dim); margin: 0; }

.feature-card .icon-circle {
  width: 42px;
  height: 42px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--pill-brand-bg);
  color: var(--brand);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin-bottom: 14px;
}

/* Numbered step badge (Simulator "Steg 1/2/3", Prova Simulator). Global so
   a .step-num outside a .step-card is never a bare, unstyled digit - it used
   to depend on inline styles on every heading. The .step-card variant below
   (landing page) stays larger/filled via its more specific selector. */
.step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--pill-brand-bg);
  color: var(--brand);
  font-size: 0.85rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  vertical-align: middle;
  margin-right: 8px;
  flex-shrink: 0;
}

/* Wide card in a .grid on desktop. Replaces inline grid-column:span 2, which
   on a phone (single-column grid) created an implicit second column and broke
   symmetry - reset to span 1 in the 640px media query below. */
.span-2 { grid-column: span 2; }

/* ---------- landing: ambient background + scroll reveal ---------- */

.bg-blobs {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}
.bg-blob {
  position: absolute;
  width: 46vw;
  height: 46vw;
  max-width: 560px;
  max-height: 560px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--of-orange) 0%, transparent 70%);
  opacity: 0.10;
  filter: blur(70px);
  animation: blobDrift 24s ease-in-out infinite alternate;
}
.bg-blob:nth-child(1) { top: -12%; left: -10%; }
.bg-blob:nth-child(2) {
  top: 28%; right: -14%;
  animation-duration: 30s; animation-delay: -6s;
  background: radial-gradient(circle, var(--of-orange-light) 0%, transparent 70%);
}
.bg-blob:nth-child(3) { bottom: -16%; left: 22%; animation-duration: 36s; animation-delay: -14s; }

@keyframes blobDrift {
  0% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(3vw, -2vw) scale(1.08); }
  100% { transform: translate(-2vw, 2vw) scale(0.96); }
}

@media (prefers-reduced-motion: reduce) {
  .bg-blob { animation: none; }
  
}

/* ---------- app shell (sidebar layout for logged-in pages) ---------- */

.sidebar {
  width: 240px;
  flex-shrink: 0;
  background: var(--card-bg);
  backdrop-filter: var(--of-blur);
  -webkit-backdrop-filter: var(--of-blur);
  border-right: 1px solid var(--of-glass-edge);
  display: flex;
  flex-direction: column;
  padding: 20px 16px;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
}

/* Responsible-gambling link - must stay visible on every logged-in page
   (dashboard, Max Terminal, Arbitrage, etc.), not just the public
   landing/pricing pages. See CLAUDE.md compliance notes. */

/* Villkor/Integritet row gets its own full-width line instead of being
   squeezed/clipped next to the 18+ badge on desktop. */

.age-badge-sm { min-width: 22px; height: 22px; font-size: .8125rem; border-width: 1.5px; flex-shrink: 0; }

/* Minimal three-bar menu glyph, drawn with plain CSS (no icon font/library,
   no emoji) - matches the single-weight, monochrome line-icon look used
   everywhere else in the shell (the theme toggle's half-circle, the chart
   expand corner mark). */

@media (max-width: 900px) {
  
  .sidebar {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 25;
    transform: translateX(-100%);
    transition: transform 0.2s ease;
    box-shadow: var(--of-shadow);
  }
  .sidebar.open { transform: translateX(0); }
  
}

/* ---------- responsiveness audit fixes (plain responsive website) ---------- */

/* Public topbar (base.html) has ~10 links when logged in - on a phone they
   used to wrap into a jumbled multi-row nav. Turn it into one horizontally
   scrollable row instead, a standard mobile-nav pattern. */
@media (max-width: 640px) {
  nav.topbar .links {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
    scrollbar-width: none;
  }
  nav.topbar .links::-webkit-scrollbar { display: none; }
  nav.topbar .links a { flex-shrink: 0; }

  /* Any <table> (Bet Tracker, admin, matches, trackrecord, ...) scrolls
     horizontally on its own instead of blowing out the page width - no
     per-template markup changes needed. */
  table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }

  /* Simulator's multi-leg builder row (5 fixed-ish columns) is unusable
     crammed into a phone width - stack it instead. */
  .leg-row { grid-template-columns: 1fr; }
}

/* ---------- compact mobile density (2026-09-12) ----------
   Real-phone feedback after the horizontal-overflow fixes above: "mycket
   bättre, men känns fortfarande som man skrollar ner väldigt mycket" -
   no overflow bug, just excessive VERTICAL height. Root cause found by
   actually measuring: .card/.glass-card carries a flat 30px padding + 22px
   margin-bottom and .grid a flat 20px gap on EVERY breakpoint - a
   dashboard/Bet Tracker page that stacks 6-8 of these on mobile (every
   grid column becomes its own full-width row once the container is
   narrower than each column's minmax()) racks up 80px+ of pure
   padding/margin per section before any real content, on top of
   desktop-sized h1/h2. None of this was ever reduced for narrow
   viewports - only overflow was addressed in 2026-09-09. Cuts total page
   height meaningfully without hiding or removing any content. */
@media (max-width: 640px) {
  .span-2 { grid-column: span 1; }
  .card, .glass-card { padding: 18px; margin-bottom: 14px; }
  .grid { gap: 12px; }
  h1 { font-size: 1.6rem; margin-bottom: 12px; }
  h2 { font-size: 1.2rem; }
  .stat-tile { padding: 12px 8px; }
  .stat-tile .value { font-size: 1.3rem; }

  /* A grid whose direct children are ALL stat-tiles (ROI numbers, pick
     odds/hit%/units, etc.) is short, uniform content that doesn't need
     each tile's own full-width row - the 200px/260px minmax() on
     .grid-3/.grid-2 was only ever sized for CONTENT cards (charts, text),
     not compact number readouts, so it forced 3 numbers into 3 separate
     stacked rows instead of one. Scoped with :has() to ONLY stat-tile-only
     grids (widely supported in all evergreen browsers by 2026) so this
     never touches a chart/text card's own .grid-3/.grid-2 layout - e.g.
     dashboard.html's Bankrullkurva+ROI row (a chart card, not stat-tiles)
     is untouched and still stacks to one column as before.

     2026-09-22, Arvid (real-phone feedback: "ibland blir det fel med
     symmetrin"): this used to hardcode repeat(3, 1fr) for EVERY stat-tile
     grid regardless of how many tiles it actually holds - trackrecord.html
     has two 4-tile stat rows, so the 4th tile landed alone in its own row
     with empty space beside it. Split per grid-N class so the mobile
     column count matches the column count the author already chose on
     desktop (the number of tiles that actually exist), instead of
     guessing 3 for everyone. */
  .grid-2:has(> .stat-tile):not(.stat-tile-list) { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .grid-3:has(> .stat-tile):not(.stat-tile-list) { grid-template-columns: repeat(3, 1fr); gap: 8px; }
  /* 2026-09-29 (Ye, simulator text brief P1): four ~70px columns broke
     labels one word per line and clipped values, so grid-4 is 2x2 here. */
  .grid-4:has(> .stat-tile):not(.stat-tile-list) { grid-template-columns: repeat(2, 1fr); gap: 8px; }

  /* 2026-09-22 (Ye, design audit): the three rules above assume every
     .stat-tile grid is a FIXED, always-complete-count row of short numeric
     readouts (ROI/units/hit-rate, KPIs) - exactly the case the 2026-09-22
     per-class fix above was written for. But .stat-tile is also reused
     app-wide purely for its box styling on VARIABLE-length lists rendered
     from a Jinja for-loop (a day's edge candidates, a user's per-sport ROI
     breakdown) - those can hold anywhere from 1 to N items depending on
     data, so forcing them into a fixed 2/3/4-column grid reintroduces the
     exact "en ensam bricka i sista raden"/cramped-text symmetry bug Arvid
     reported, just in different templates than the ones already fixed
     (admin.html's/max_candidates.html's candidate list, max_terminal.html's
     roi_by_sport). Marking a grid's wrapper with .stat-tile-list opts it
     BACK OUT of the forced column count: the :not() above means none of
     these three rules match it at this breakpoint any more, so the
     cascade falls through to the plain, unconditional .grid-2/.grid-3
     auto-fit minmax() rule declared near the top of this file - already
     correctly responsive (collapses to one column on a phone-width
     container, no orphaned tile, no cramped text). Tag any FUTURE
     variable-length .stat-tile list the same way - only ever apply the
     forced-column rules above to a genuinely fixed, small set of related
     numbers. */
}

/* ---------- installed PWA ("mobile app") layout ---------- */
/* Applied only when <html> carries .pwa-standalone, added client-side in
   base.html: either the page is actually running as an installed PWA
   (display-mode: standalone / iOS navigator.standalone), or it was forced
   via ?appview=1 for demoing in a normal browser tab (see base.html). Kept
   narrow-viewport-only so an installed *desktop* PWA doesn't get a phone
   bottom tab bar. Never applies to the desktop wrapper app (app-shell has
   no .pwa-app-topbar/.pwa-tabbar at all there - see app_shell.html).
   .pwa-more-menu added here too (2026-09-12 regression fix, Boosie): its
   only display:none lived INSIDE the max-width:900px media query below,
   so at desktop widths (900px+) the unconditionally-rendered "Mer" menu
   markup (full nav link list + footer, always in the DOM regardless of
   viewport - see app_shell.html) had no display rule at all and fell back
   to the browser's default `display:block`, rendering as visible garbage
   content next to the sidebar on EVERY app_shell page for every tier.
   Confirmed via Playwright screenshot on /dashboard and /log at 1440px. */
.pwa-app-topbar, .pwa-tabbar{ display: none; }

@media (max-width: 900px) {
  html.pwa-standalone .sidebar{
    display: none !important;
  }

  /* Root cause of the "everything crammed sideways" phone-test report:
     .app-shell is `display:flex` with the default row direction (it's
     built for sidebar-beside-content on desktop). .pwa-app-topbar uses
     `position: sticky`, which - unlike .pwa-tabbar's `position: fixed` -
     does NOT remove it from normal flow, so once the sidebar is hidden
     above, the topbar and .app-main became horizontal flex siblings
     instead of stacking vertically, squeezing the real content into a
     narrow column. Switching the shell to column direction here (scoped
     to pwa-standalone + this breakpoint only - the desktop sidebar layout
     is untouched) makes topbar-then-content stack the way the rest of
     this block's CSS already assumed. */
  

  html.pwa-standalone .pwa-app-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    position: sticky;
    top: 0;
    z-index: 20;
    padding: 12px 16px;
    background: var(--card-bg);
    backdrop-filter: var(--of-blur);
    -webkit-backdrop-filter: var(--of-blur);
    border-bottom: 1px solid var(--of-glass-edge);
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
  }
  

  

  html.pwa-standalone .pwa-tabbar {
    display: flex;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 40;
    background: var(--card-bg);
    backdrop-filter: var(--of-blur);
    -webkit-backdrop-filter: var(--of-blur);
    border-top: 1px solid var(--of-glass-edge);
    box-shadow: 0 -2px 12px rgba(0,0,0,0.10);
    padding: 6px 4px calc(6px + env(safe-area-inset-bottom, 0px));
  }
  html.pwa-standalone .pwa-tabbar a{
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 8px 4px;
    margin: 0 2px;
    border-radius: 999px;
    color: var(--text-dim);
    text-decoration: none;
    font-size: .8125rem;
    font-weight: 600;
    transition: background 0.25s ease, box-shadow 0.25s ease, transform 0.2s var(--of-spring, ease), color 0.2s ease;
    /* .pwa-tabbar-more is a <button>, not an <a> - reset browser button
       chrome (border/background/font) so it matches the <a> tabs exactly. */
    background: none;
    border: none;
    font-family: inherit;
    cursor: pointer;
  }
  /* Active tab gets a glowing-pill treatment, the same visual language as
     the sidebar's own active nav link (see .sidebar-nav a.active above),
     applied to the whole tab now that there's no separate icon glyph to
     carry it (text-only tabs since the emoji removal pass) - a native
     app's bottom bar always gives the current tab some visual weight, not
     just a color tint. */
  html.pwa-standalone .pwa-tabbar a.active {
    color: var(--brand);
    background: var(--pill-brand-bg);
    box-shadow: 0 0 14px rgba(255,103,0,0.32);
    transform: translateY(-2px);
  }

  /* "Mer" full-screen menu (2026-09-12) - see app_shell.html for the
     navigation-dead-end this fixes: the tabbar only ever had 4 hardcoded
     shortcuts, leaving every other page (Ratea, Live, Kurs, Arbitrage, the
     whole Max suite, Facit, Admin, Coaching/Support) completely
     unreachable in this layout. Plain show/hide via .open, no animation -
     reachability matters here, not polish. Sits above the tabbar
     (z-index higher) and covers the full viewport including behind the
     tabbar so there's no dead strip at the bottom. */
  
  
  
  
  
  
  
  
  
}

/* ---------- desktop app wrapper (pywebview) layout ---------- */
/* .is-desktop-client is added server-side (app_shell.html) only when
   session["is_desktop_client"] is set - see /__desktop_bootstrap__ in
   app.py. The window's own min_size (1000x700, see desktop_app.py) already
   keeps it above the 900px sidebar-collapse breakpoint, so the sidebar
   stays expanded naturally; these rules are defense-in-depth for the same
   outcome plus removing the now-unrendered toggle button's space. */

/* ---------- AI help chatbot widget (2026-09-21) ---------- */
/* Renders on every app_shell.html page (all logged-in surfaces) - the
   Vantage Max cockpit shell (max_cockpit_base.html) doesn't extend
   app_shell.html at all, so it's naturally unaffected. z-index 45 sits
   above the PWA tabbar (40) so the panel is never clipped behind it on an
   installed-mobile-layout session. */
.chat-widget {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 45;
}
.chat-widget-toggle {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  border: 1px solid var(--card-border);
  background: var(--brand-btn);
  color: #fff;
  cursor: pointer;
  box-shadow: var(--of-shadow);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1;
}
.chat-widget-panel {
  position: absolute;
  right: 0;
  bottom: 64px;
  width: 320px;
  max-width: calc(100vw - 32px);
  max-height: 440px;
  display: flex;
  flex-direction: column;
  background: var(--card-bg-solid);
  border: 1px solid var(--card-border);
  border-radius: var(--of-radius);
  box-shadow: var(--of-shadow);
  overflow: hidden;
}
/* 2026-09-21 (Boosie, admin/visual-polish pass): without this, the AI-help
   panel rendered permanently OPEN on every single logged-in page for every
   user, floating over real content (confirmed with a real Playwright
   screenshot - it was covering part of the dashboard's ROI stat-tile).
   Root cause: `.chat-widget-panel { display: flex; }` above and the UA
   stylesheet's `[hidden] { display: none; }` have IDENTICAL selector
   specificity (0,1,0 each), so whichever rule comes later in the cascade
   wins - an author stylesheet always loads after the UA one, so this
   class's `display: flex` silently defeated the HTML `hidden` attribute
   app_shell.html's chat-widget-toggle JS relies on (chatPanel.setAttribute
   ("hidden", "")). This explicit, higher-specificity override restores the
   intended "closed until the user clicks the toggle" behavior without
   touching the JS at all. */
.chat-widget-panel[hidden] { display: none; }
.chat-widget-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 14px;
  border-bottom: 1px solid var(--card-border);
  font-weight: 600;
  flex-shrink: 0;
}
.chat-widget-head button {
  background: none;
  border: none;
  color: var(--text-dim);
  cursor: pointer;
  font-size: 1.2rem;
  line-height: 1;
  padding: 0;
}
.chat-widget-messages {
  flex: 1;
  overflow-y: auto;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-height: 120px;
}
.chat-msg {
  padding: 8px 12px;
  border-radius: 14px;
  font-size: 0.85rem;
  line-height: 1.4;
  max-width: 85%;
  white-space: pre-wrap;
  word-break: break-word;
}
.chat-msg-bot { background: var(--pill-gray-bg); color: var(--text); align-self: flex-start; }
.chat-msg-user { background: var(--pill-brand-bg); color: var(--text); align-self: flex-end; }
.chat-msg-error { background: var(--pill-red-bg); color: var(--bad-fg); align-self: flex-start; }
.chat-widget-form {
  display: flex;
  gap: 8px;
  padding: 10px;
  border-top: 1px solid var(--card-border);
  flex-shrink: 0;
}
.chat-widget-form input {
  flex: 1;
  min-width: 0;
}

@media (max-width: 900px) {
  /* Clear the installed-mobile-layout bottom tab bar (see .pwa-tabbar
     above) so the widget's toggle button doesn't overlap it. */
  html.pwa-standalone .chat-widget { bottom: 78px; }
}

/* =====================================================================
   2026-09-23 (Ye brief, punkt 0): three surface levels instead of one.
   Level 1 .hero-panel  - max ONE per page, the page's primary surface.
   Level 2 .glass-card  - unchanged sections (tighter on mobile, below).
   Level 3 .list-row    - flat rows with hairline dividers, no background.
   Plus .section-label (replaces in-app h2/h3 section headings), .chip,
   .pick-row and .credit-table. Only existing color tokens are used, so the
   Max cockpit's body-level gold override (--brand/--brand-btn/
   --pill-brand-bg) themes all of these automatically.
   Rule: never card-in-card; lists with >3 items are .list-row on mobile.
   ===================================================================== */

.hero-panel { margin: 0 0 var(--sp-5); }
/* Framed variant (landing / beta code): orange-tinted glass-less panel. */
.hero-panel-framed {
  border: 1px solid rgba(255, 103, 0, .35);
  background: linear-gradient(160deg, var(--pill-brand-bg), transparent 60%), var(--card-bg-solid);
  border-radius: var(--radius);
  padding: var(--sp-4);
}
@media (min-width: 641px) { .hero-panel-framed { padding: var(--sp-5); } }
.hero-panel-head { display: flex; justify-content: space-between; align-items: center; gap: var(--sp-3); flex-wrap: wrap; }
.hero-panel .hero-title { font-size: var(--fs-h2); font-weight: 700; margin: var(--sp-3) 0 2px; line-height: 1.3; }
.hero-panel .hero-meta { font-size: var(--fs-meta); color: var(--text-dim); }

/* 3-column tabular readout (odds / modell / edge) - ONE surface with
   hairline separators, not three stat-tile boxes. */
.stat-strip {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px;
  background: var(--card-border); border-radius: var(--radius-sm); overflow: hidden;
  margin-top: var(--sp-4);
}
.stat-strip > div { background: var(--card-bg-solid); padding: 10px 8px; text-align: center; }
.stat-strip .v { font-weight: 800; font-size: 1.25rem; font-variant-numeric: tabular-nums; line-height: 1.2; }
.stat-strip .v.good { color: var(--good-fg); }
.stat-strip .v.bad { color: var(--bad-fg); }
.stat-strip .l { font-size: var(--fs-label); letter-spacing: .08em; text-transform: uppercase; color: var(--text-dim); font-weight: 600; }
/* Open variant: on the page background, hairlines above/below only. */
.stat-strip-open { background: none; border-top: 1px solid var(--card-border); border-bottom: 1px solid var(--card-border); border-radius: 0; margin: var(--sp-5) 0; }
.stat-strip-open > div { background: none; padding: var(--sp-4) 4px; }

.label-caps, .section-label {
  font-size: var(--fs-label); letter-spacing: .08em; text-transform: uppercase;
  font-weight: 600; color: var(--text-dim);
}
.section-label {
  display: flex; justify-content: space-between; align-items: baseline; gap: var(--sp-3);
  margin: var(--sp-5) 0 var(--sp-2);
}
.section-label a { font-size: var(--fs-meta); letter-spacing: 0; text-transform: none; font-weight: 600; }

.list-rows { border-top: 1px solid var(--card-border); margin: 0 0 var(--sp-4); padding: 0; list-style: none; }
.list-row {
  display: flex; justify-content: space-between; align-items: center; gap: var(--sp-3);
  padding: 10px 0; border-bottom: 1px solid var(--card-border);
  font-size: var(--fs-meta); color: var(--text);
}
a.list-row { text-decoration: none; }
a.list-row:hover { text-decoration: none; opacity: 1; background: var(--row-hover); }
.list-row-main { min-width: 0; flex: 1; }
.list-row-title { font-size: var(--fs-body); font-weight: 600; overflow-wrap: anywhere; }
.list-row-meta { font-size: var(--fs-meta); color: var(--text-dim); }
.list-row-value { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.list-row-value strong { font-size: var(--fs-body); }
.list-row-num {
  flex: none; width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center;
  justify-content: center; background: var(--pill-brand-bg); color: var(--brand); font-weight: 700; font-size: var(--fs-meta);
}
.dot { flex: none; width: 8px; height: 8px; border-radius: 50%; display: inline-block; background: var(--text-dim); }
.dot-green { background: var(--good-fg); }

/* Bet Tracker (2026-10-01, Meek B10): pending and void must not look the same. */

/* Compact pick row (dashboard "Idag"): match/market left, odds+edge right. */

.edge-label { font-size: var(--fs-label); font-weight: 700; color: var(--good-fg); }

.chip-row { display: flex; flex-wrap: wrap; gap: var(--sp-2); padding: 2px 0; }  /* C1 2026-10-17: radbryts, ingen dold scroll */
.chip-row::-webkit-scrollbar { display: none; }
.chip {
  flex: none; display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid var(--card-border); border-radius: 999px; padding: 6px 12px;
  font-size: var(--fs-meta); color: var(--text-dim); white-space: nowrap;
}

/* Thin progress bar (onboarding strip). */

/* "Vad kostar en credit" - pricing's usage table. */
.credit-table-head { display: flex; align-items: baseline; gap: var(--sp-2); flex-wrap: wrap; margin-bottom: var(--sp-3); }
.credit-table-head .big { font-size: var(--fs-display); font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; line-height: 1; }
.credit-table .list-row-value strong { font-size: var(--fs-body); }
.credit-table .free { color: var(--good-fg); font-weight: 700; }
.credit-table .per-month { display: block; font-size: var(--fs-meta); color: var(--text-dim); font-weight: 400; }

@media (max-width: 640px) {
  .card, .glass-card { padding: var(--sp-4); margin-bottom: var(--sp-3); }
}

/* ---------- 2026-09-23 (Ye brief punkt 1): dashboard ---------- */

.link-button { background: none; border: none; padding: 0; color: var(--text-dim); font: inherit; font-size: var(--fs-meta); cursor: pointer; }
.link-button:hover { color: var(--text); }

/* ---------- 2026-09-23 (Ye brief punkt 2): landing ---------- */
.landing-hero { display: grid; gap: var(--sp-5); padding: var(--sp-5) 0 var(--sp-2); align-items: center; }
.landing-hero h1 { font-size: var(--fs-display); line-height: 1.05; letter-spacing: -0.02em; margin: var(--sp-2) 0 var(--sp-3); }
.landing-hero .lead { color: var(--text-dim); font-size: var(--fs-body); margin: 0 0 var(--sp-3); max-width: 520px; }
.landing-hero-links { margin: 0; color: var(--text-dim); }
.landing-hero-card { margin: 0; }
.hero-cta { display: block; text-align: center; margin-top: var(--sp-4); }
@media (min-width: 900px) {
  .landing-hero { grid-template-columns: 7fr 5fr; gap: var(--sp-7); padding: var(--sp-7) 0 var(--sp-5); }
  .landing-hero h1 { font-size: 3.2rem; }
  .landing-hero .lead { font-size: 1.1rem; }
  .engine-list { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--sp-6); }
}
.landing-facit-empty { border-top: 1px solid var(--card-border); border-bottom: 1px solid var(--card-border); padding: var(--sp-4) 0; margin: var(--sp-5) 0; text-align: center; }
.landing-h2 { font-size: var(--fs-h2); margin: var(--sp-6) 0 var(--sp-2); }
.engine-list .list-row:last-child { border-bottom: none; }
.inline-form { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
.inline-form input { flex: 1; min-width: 180px; }
.faq-list { border-top: 1px solid var(--card-border); }
.faq-list details { border-bottom: 1px solid var(--card-border); padding: var(--sp-3) 0; }
.faq-list summary { cursor: pointer; font-weight: 600; font-size: var(--fs-body); }
.faq-list details p { margin: var(--sp-2) 0 0; }

/* Public topbar on phones: logo + "Logga in" + "Skapa konto" only; the
   secondary links live in the footer instead of a scrolling row where
   "Logga in" was cut off. */

/* Topbar "Skapa konto" pill: the generic nav link color above made its
   label orange-on-orange (unreadable). */
nav.topbar .links a.btn-primary, nav.topbar .links a.btn-primary:hover { color: var(--brand-ink); }

/* ---------- 2026-09-23 (Ye brief punkt 3): pricing ---------- */
.pricing-head { padding: var(--sp-5) 0 var(--sp-4); max-width: 640px; }
.pricing-head h1 { margin: 0 0 var(--sp-2); }
.pricing-head .lead { color: var(--text-dim); font-size: var(--fs-body); margin: 0; }
.plan-card { display: flex; flex-direction: column; }
.plan-card-featured { border-color: var(--brand-btn); }
.plan-price { font-size: var(--fs-display); font-weight: 800; letter-spacing: -0.02em; line-height: 1.1; margin: var(--sp-2) 0 2px; font-variant-numeric: tabular-nums; }
.plan-price .per { font-size: var(--fs-body); color: var(--text-dim); font-weight: 400; }
.plan-sub { margin: 0 0 var(--sp-2); }
.plan-card .notes-list { color: var(--text); margin: var(--sp-2) 0 var(--sp-4); }
.plan-btn { display: block; width: 100%; text-align: center; margin-top: auto; }
.pricing-waitlist { display: grid; gap: var(--sp-3); align-items: center; }
@media (min-width: 900px) { .pricing-waitlist { grid-template-columns: 1fr 1fr; } }
.compare-table { width: 100%; }
.compare-table th:not(:first-child), .compare-table td:not(:first-child) { text-align: center; width: 22%; }
.compare-table th:first-child, .compare-table td:first-child { text-align: left; }
.compare-table .check { color: var(--good-fg); vertical-align: middle; }
.pricing-terms { margin-top: var(--sp-5); }
@media (max-width: 640px) {
  /* Keep the 3-column compare table a real table (not the generic
     horizontal-scroll block) so its header can stick under the topbar. */
  .compare-table { display: table; overflow: visible; font-size: var(--fs-meta); }
  .compare-table thead th { position: sticky; top: 64px; background: var(--bg); z-index: 2; }
}

/* ---------- 2026-09-23 (Ye brief punkt 4): Bet Tracker ---------- */

/* Max cockpit "Utökad analys" (2026-10-01, Meek B7): .grid-2's auto-fit
   minmax(260px) turned into 4 tiny columns on a 1440px screen. At most two
   columns, one below 900px. */

/* ---------- 2026-09-23 (Ye brief punkt 5): Simulator ---------- */

/* ---------- 2026-09-23 (Ye brief punkt 6): mobile chrome ---------- */
/* AI help toggle is secondary, not a second primary button competing with
   the page's real CTA: 44px, solid card surface, orange glyph. */
.chat-widget-toggle { width: 44px; height: 44px; background: var(--card-bg-solid); color: var(--brand); font-size: 1.05rem; }

@media (max-width: 900px) {
  
  /* Keep the floating button clear of the last card / graph controls. */
  
  /* Installed-app layout: the help lives in the "Mer" menu instead. */
  html.pwa-standalone .chat-widget-toggle { display: none; }
}

/* ---------- 2026-09-23 (Ye brief punkt 7): /beta code field ---------- */
.beta-code-form { display: flex; gap: var(--sp-3); align-items: stretch; margin-top: var(--sp-3); }
.beta-code-input {
  flex: 1; min-width: 0;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 1.125rem; letter-spacing: .12em; text-transform: uppercase;
}
.beta-code-input[aria-invalid="true"] { border-color: var(--bad-fg); }
.beta-code-error { color: var(--bad-fg); font-size: var(--fs-meta); margin: var(--sp-2) 0 0; }
.beta-status-row { display: flex; align-items: center; gap: var(--sp-2); padding: var(--sp-3) 0; margin-bottom: var(--sp-4); border-bottom: 1px solid var(--card-border); font-size: var(--fs-body); }
@media (max-width: 640px) {
  .beta-code-form { flex-direction: column; }
}
.beta-code-field { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.beta-code-field .beta-code-input { width: 100%; }
.beta-code-form { align-items: flex-start; }
.beta-code-form > .btn { flex: none; }
@media (max-width: 640px) { .beta-code-form { align-items: stretch; } }

/* ---------- 2026-09-27 (SPEC_CREDITS_SIMULATOR del 3): speltyper + resultat ---------- */
/* Prisfördel (no own model): outlined, never the filled green of a model edge. */
.pill-price { background: transparent; color: var(--text-dim); border: 1px dashed var(--card-border); }
.price-note { margin-top: 10px; }
.price-note .pill-price { margin-right: 6px; }
/* Speltyp chips are real radio inputs, so the form works without JS. */

.chip-choice { cursor: pointer; min-height: 40px; position: relative; font-weight: 600; margin: 0; }
.chip-choice input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.chip-choice:has(input:focus-visible) { outline: 2px solid var(--brand); outline-offset: 2px; }
.chip-choice.is-active, .chip-choice:has(input:checked) { background: var(--pill-brand-bg); color: var(--brand); border-color: var(--brand-btn); }
.chip-choice.is-locked { opacity: .5; cursor: not-allowed; }
.chip-choice .locked-badge { font-size: var(--fs-label); letter-spacing: .05em; text-transform: uppercase; color: var(--brand); }

.system-field { margin-top: var(--sp-3); }
#analyze-form [hidden] { display: none !important; }

/* System: total stake exactly as prominent as stake per row (SPEC 3.2). */

/* 2026-09-29 (Ye P4): result tables become a list on phones. */
.sim-table th { white-space: nowrap; }
.sim-list { display: none; }
.sim-list .list-row { align-items: flex-start; }
.sim-list-roi { font-size: var(--fs-meta); color: var(--text-dim); margin-top: 4px; }
/* 2026-09-30 (Ye M2): Betygsätt bet ticks legs in the same list on every width. */
.rate-row { align-items: flex-start; }
.rate-row input[type=checkbox] { margin-top: 2px; }
.rate-row .sim-list-roi { display: block; }
@media (max-width: 640px) {
  .sim-table { display: none; }
  .sim-list { display: block; }
}
/* The six-column table needs ~780px. Below that (a tablet, or a desktop
   window with the sidebar) the card gets the list too, instead of clipping. */
.sim-result-card { container-type: inline-size; }
@container (max-width: 780px) {
  .sim-table { display: none; }
  .sim-list { display: block; }
}

/* ---------- 2026-09-27 (SPEC_CREDITS_SIMULATOR del 4): marknadslista + cost-bar ---------- */
:root { --tabbar-h: 0px; }
.market-head { margin-top: var(--sp-4); }
.market-list { margin-bottom: var(--sp-4); }
.market-row { min-height: 44px; cursor: pointer; margin: 0; justify-content: flex-start; scroll-margin-bottom: 80px; }
/* 2026-09-29 (Ye del B): "Alla marknader" is the framed main choice above the groups. */
.market-row.market-all {
  background: var(--tile-bg); border: 1px solid var(--card-border); border-radius: var(--radius-sm);
  padding: var(--sp-3); margin-bottom: var(--sp-3);
}
.market-row.market-all.is-on { border-color: var(--brand-btn); background: var(--pill-brand-bg); }
.market-all .list-row-title { font-size: var(--fs-body); font-weight: 700; }
.market-all-cost strong { white-space: nowrap; font-variant-numeric: tabular-nums; }
/* 2026-09-30 (Ye M1): "per match" sits under the price, so the title keeps
   its width and breaks on whole words only. */
.market-all .list-row-title { overflow-wrap: normal; }
.market-all-cost { text-align: right; }
.market-all-per { display: block; font-size: var(--fs-meta); color: var(--text-dim); font-weight: 400; }
.market-all-per[hidden] { display: none; }
.market-group-label {
  font-size: var(--fs-label); letter-spacing: .08em; text-transform: uppercase; font-weight: 600;
  color: var(--text-dim); margin: var(--sp-3) 0 var(--sp-1);
}
.market-summary { margin: 8px 0 0; }
.market-summary a { font-weight: 600; }
.market-row input[type=checkbox] { width: 20px; height: 20px; flex: none; margin: 0; accent-color: var(--brand-btn); }
.market-row.is-locked { opacity: .55; cursor: not-allowed; }
.market-row .locked-badge { font-size: var(--fs-label); letter-spacing: .05em; text-transform: uppercase; color: var(--brand); }
span.list-row-main, span.list-row-title, span.list-row-meta { display: block; }
.market-cost { font-weight: 700; color: var(--text); min-width: 52px; }
@media (min-width: 900px) {
  /* Two columns only for long lists, and never splitting a group (SPEC 4). */
  
  
}

.cost-bar {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2) var(--sp-3); flex-wrap: wrap;
  padding: var(--sp-3) 0; border-top: 1px solid var(--card-border); margin-top: var(--sp-2);
  /* Sticky on every width so the price stays next to the button (Meek C5).
     The card clips its glass highlight with overflow:hidden, which would
     stop position:sticky from working inside it. */
  position: sticky; bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px)); z-index: 30;
  background: var(--card-bg-solid);
}
.glass-card:has(.cost-bar) { overflow: visible; }
.cost-bar-info { display: flex; flex-direction: column; gap: 2px; min-width: 12rem; }
/* The scope line counts toward the column's width, so it is never cut;
   on a narrow phone the button wraps to its own row instead. */
.cost-bar-scope {
  display: block; max-width: 100%; font-size: var(--fs-meta); color: var(--text-dim);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cost-bar-scope[hidden], .cost-bar-toggle[hidden] { display: none !important; }
.cost-bar-details { display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1; }
.cost-bar-value { font-size: var(--fs-h2); font-weight: 800; font-variant-numeric: tabular-nums; color: var(--text); }
.cost-bar-value.is-short { color: var(--bad-fg); }
.cost-bar-reason { color: var(--text-dim); }
.cost-bar-reason .cost-fewer { color: var(--brand); font-weight: 600; margin-left: 6px; }
.cost-bar-toggle { display: none; }
/* 2026-09-29 (Ye P5): the price and the toggle never break inside. */
.cost-bar-value, .cost-bar-toggle { white-space: nowrap; }
.meter-compact-label { display: block; }
.cost-bar .btn { flex: none; }
.cost-bar .btn:disabled { opacity: .5; cursor: not-allowed; }
.sim-advanced { margin: var(--sp-2) 0 var(--sp-3); border-top: 1px solid var(--card-border); padding-top: var(--sp-2); }
.sim-advanced > summary { cursor: pointer; font-weight: 700; padding: 10px 0; }
.sim-advanced > summary .small { font-weight: 400; margin-left: 6px; }
.sim-advanced[open] > summary { margin-bottom: var(--sp-2); }

@media (max-width: 640px) {
  .cost-bar {
    box-shadow: var(--of-shadow);
    margin: var(--sp-2) calc(-1 * var(--sp-4)) 0; padding: 6px var(--sp-4);
    flex-wrap: wrap; row-gap: var(--sp-2);
  }
  /* Compact: one row with the price and the button. Details on tap. */
  /* Two lines: the price, and under it what is analysed (or "Varför?"). The
     price never gets narrower than its text; the button gives way. */
  /* 2026-09-30 (Ye B1): one row on every phone width. The info column
     shrinks (scope ellipsis) instead of pushing the button to a second row,
     where it ended up behind the tab bar on 320 px. */
  .cost-bar:not(.is-open) { flex-wrap: nowrap; }
  .cost-bar-info { flex-direction: column; align-items: flex-start; gap: 0; flex: 1 1 0; min-width: 0; }
  .cost-bar-info > .label-caps { display: none; }
  .cost-bar-value { font-size: var(--fs-body, 1rem); }
  .cost-bar-toggle { display: inline-block; padding: 0 2px; min-height: 24px; color: var(--brand); font-weight: 600; font-size: var(--fs-meta); }
  .cost-bar-details { display: none; order: 3; flex-basis: 100%; }
  .cost-bar.is-open .cost-bar-details { display: flex; max-height: 40vh; overflow-y: auto; overscroll-behavior: contain; }
  /* Ye P8: the description is its own meta line, aligned with the text, not the triangle. */
  .sim-advanced > summary .small { display: block; margin: 2px 0 0 1.1em; }
}
@media (max-width: 360px) {
  .cost-bar { column-gap: 8px; }
  .cost-bar .btn { padding-left: 14px; padding-right: 14px; }
}
@media (max-width: 900px) {
  html.pwa-standalone { --tabbar-h: 62px; }
  html.pwa-standalone .pwa-tabbar { min-height: calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px)); box-sizing: border-box; }
}

/* ---------- 2026-09-27 (SPEC_CREDITS_SIMULATOR del 5): credit-mätaren ---------- */
.credit-pill {
  display: inline-flex; align-items: center; min-height: 32px; padding: 4px 12px; border-radius: 999px;
  border: 1px solid var(--card-border); background: var(--tile-bg); color: var(--text);
  font-size: var(--fs-meta); font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; text-decoration: none;
}
a.credit-pill:hover { text-decoration: none; border-color: var(--brand-btn); }
.credit-pill.is-warn { color: var(--warn-fg); border-color: var(--warn-fg); }
.credit-pill.is-danger, .credit-pill.is-empty { color: var(--bad-fg); border-color: var(--bad-fg); }

.max-terminal-topbar-credits { margin-left: auto; }

.credit-meter-compact { display: flex; flex-direction: column; gap: 3px; margin-top: 4px; }
.credit-meter-compact .usage-bar-track { height: 4px; max-width: 220px; }
.credit-meter-full .meter-hero { font-size: var(--fs-display); font-weight: 800; line-height: 1.1; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.credit-meter-full .meter-hero-unit { font-size: var(--fs-body); font-weight: 600; color: var(--text-dim); letter-spacing: 0; }
.meter-row { margin: var(--sp-3) 0; }
.meter-row-head { display: flex; justify-content: space-between; gap: var(--sp-3); font-size: var(--fs-meta); margin-bottom: 4px; }
.meter-row-label { color: var(--text-dim); }
/* Ye P11: both rows' heads carry the same weight; the limiting one only gets full text colour. */
.meter-row-head { font-weight: 600; }
.meter-row.is-limiting .meter-row-label, .meter-row.is-limiting .meter-row-num { color: var(--text); }
/* "Vad kostar vad?": the Var column becomes a meta line under the label on phones. */
.credit-cost-table .cct-where-meta { display: none; }
@media (max-width: 640px) {
  .credit-cost-table .cct-where { display: none; }
  .credit-cost-table .cct-where-meta { display: block; }
}
.meter-row-num { font-variant-numeric: tabular-nums; }
.meter-row-reset { margin-top: 3px; }

.credit-warning { display: flex; justify-content: space-between; align-items: center; gap: var(--sp-3); }
.credit-warning-close { font-size: 1.2rem; line-height: 1; color: inherit; }

.credit-sheet { position: fixed; inset: 0; z-index: 60; background: rgba(0,0,0,.35); }
.credit-sheet[hidden] { display: none; }
.credit-sheet-panel {
  position: absolute; left: 0; right: 0; bottom: 0; max-height: 70vh; min-height: 60vh; overflow-y: auto;
  background: var(--card-bg-solid); border-top: 1px solid var(--card-border); border-radius: var(--radius) var(--radius) 0 0;
  padding: var(--sp-4) var(--sp-4) calc(var(--sp-4) + env(safe-area-inset-bottom, 0px)); box-shadow: var(--of-shadow);
}
.credit-sheet-panel:focus { outline: none; }
.credit-sheet-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--sp-2); }
.credit-sheet-close { background: none; border: none; color: var(--text-dim); font-size: 1.5rem; cursor: pointer; min-width: 44px; min-height: 44px; }
@media (min-width: 901px) {
  .credit-sheet { background: transparent; }
  .credit-sheet-panel {
    right: auto; bottom: auto; width: 320px; max-width: 320px; min-height: 0; max-height: none;
    border: 1px solid var(--card-border); border-radius: var(--radius);
  }
}

.pill abbr, .edge-label abbr { text-decoration: none; cursor: help; }

/* =====================================================================
   VANTAGE 2026-10 - "Kupongen och oddstavlan", mjuk glas (Ye, godkänd av
   Arvid 2026-10-02). Spec: design/DESIGN_SYSTEM_2026-10.md, referens:
   design/mockups/vantage-system.css. Byggt av Boosie 2026-10-02.

   Allt nedan ligger SIST i filen och vinner därför över det gamla
   "Liquid Glass"-språket ovanför:
     1. Typsnitten (självhostade i static/fonts, OFL) och tokens. De gamla
        variabelnamnen (--brand, --brand-btn, --good-fg, --card-bg ...)
        pekas om till den nya paletten, så sidor som inte flyttats än byter
        färg, typsnitt och hörn utan att deras HTML ändras.
     2. Komponenterna med prefix pv- (pv-topnav, pv-ln, pv-slip ...), så att
        de inte krockar med gamla .btn/.field/.hero/.tabs. Klassnamnen är
        mockupens med pv- framför, även sammansatta (.pv-ln.pv-g).
     3. Skalet (toppmeny, flikrad, Mer-meny, sidfot) och en dämpning av det
        gamla språkets glas, glöd och skuggor på kort och knappar.
   Glas (backdrop-filter) bara på det som flyter ovanpå: toppmeny, flikrad,
   ark, credit-popover och Mer-menyn.
   ===================================================================== */
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/barlow-condensed-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/barlow-condensed-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/barlow-condensed-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/barlow-condensed-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/barlow-condensed-700-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/barlow-condensed-700-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/ibm-plex-sans-var-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/ibm-plex-sans-var-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/ibm-plex-sans-var-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/ibm-plex-sans-var-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/ibm-plex-sans-var-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/ibm-plex-sans-var-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}

/* ---- 1. Tokens ---- */
:root{
  --f-text:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-num:"Barlow Condensed","Arial Narrow",system-ui,sans-serif;
  --of-orange:#FF6700;--of-gold:#D4AF37;
  --bg:#0D0D0F;--bg-2:#17171A;--text:#EDEDEA;--text-2:#B4B4AE;--text-dim:#85857F;
  --line:rgba(237,237,234,.09);--line-2:rgba(237,237,234,.2);--line-strong:rgba(237,237,234,.7);
  --accent:var(--of-orange);--accent-ink:#0C0C0D;--accent-text:#FF8A3D;
  --good:#3DDC74;--bad:#FF5A4E;--warn:#F2C94C;
  --input-bg:transparent;--hover:rgba(237,237,234,.04);
  --glass:rgba(24,24,27,.62);--glass-solid:#18181B;--glass-edge:rgba(255,255,255,.11);--glass-hi:rgba(255,255,255,.08);
  --raised:#151518;--lift:0 18px 40px -16px rgba(0,0,0,.6);--ob-bg:#141417;
  --t-body:.9375rem;--t-small:.8125rem;--t-h2:1rem;--t-h1:1.25rem;
  --n-hero:clamp(4.25rem,19vw,7rem);--n-xl:2.75rem;--n-l:1.625rem;--n-m:1.25rem;--n-s:1rem;
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;
  --r:4px;--r-s:3px;--r-l:6px;--btn-r:4px;--r-sheet:10px;--row-py:13px;--sh-w:1.5px;--sh-gap:var(--s6);
  --slip-shadow:inset 0 1px 0 var(--glass-hi),var(--lift);--area-op:1;--line-w:2px;
  --glass-blur:blur(22px) saturate(170%);
  --chart-h:220px;--rail-w:320px;--gutter:16px;--tabbar-h:0px;
  /* Sidbredd (Gotti 2026-10-06): upp till 1560 px så stora skärmar inte lämnar tomma sidor. Hela bredden på mobil. */
  --page-max:100%;

  /* Gamla namn -> nya paletten (sidor som inte flyttats än). */
  --of-bg:var(--bg);--of-surface:var(--raised);--of-surface-2:var(--bg-2);--of-border:var(--line);
  --of-text:var(--text);--of-text-secondary:var(--text-dim);--of-green:var(--good);--of-red:var(--bad);
  --of-radius:16px;--of-radius-sm:10px;--radius:16px;--radius-sm:10px;
  --of-shadow:none;--of-shadow-lift:none;--shadow:none;--of-glass-edge:var(--line-2);--of-glass-highlight:transparent;
  --bg-glow:transparent;--hero-glow:transparent;
  --card-bg:var(--raised);--card-bg-solid:var(--raised);--card-border:var(--line-2);--tile-bg:var(--bg-2);
  --brand:var(--accent-text);--brand-btn:var(--accent);--brand-btn-hover:#FF7A1F;--brand-ink:var(--accent-ink);
  --good-fg:var(--good);--bad-fg:var(--bad);--warn-fg:var(--warn);--critical:var(--bad);
  --input-border:var(--line-2);--grid-line:var(--line);--row-hover:var(--hover);
  --nav-bg:var(--glass);--nav-border:var(--glass-edge);
}
@media (min-width:901px){:root{--chart-h:300px;--gutter:40px}}
@media (max-width:900px){:root,html.pwa-standalone{--tabbar-h:60px;--page-max:100%}}
html[data-theme=light]{
  --bg:#F6F5F0;--bg-2:#ECEAE3;--text:#141414;--text-2:#45453F;--text-dim:#6B6B63;
  --line:rgba(20,20,20,.09);--line-2:rgba(20,20,20,.2);--line-strong:rgba(20,20,20,.75);
  --accent-text:#B34700;--good:#13803F;--bad:#C4161C;--warn:#8A6100;--hover:rgba(20,20,20,.035);
  --glass:rgba(250,249,245,.68);--glass-solid:#FBFAF6;--glass-edge:rgba(20,20,20,.08);--glass-hi:rgba(255,255,255,.75);
  --raised:#FCFBF8;--lift:0 18px 40px -18px rgba(40,30,10,.25);--ob-bg:#FCFBF8;
  --of-bg:var(--bg);--of-surface:var(--raised);--of-surface-2:var(--bg-2);--of-border:var(--line);
  --of-text:var(--text);--of-text-secondary:var(--text-dim);--card-bg:var(--raised);--card-bg-solid:var(--raised);
  --card-border:var(--line-2);--tile-bg:var(--bg-2);--of-glass-edge:var(--line-2);
  --brand:var(--accent-text);--brand-btn:var(--accent);--brand-ink:var(--accent-ink);
  --good-fg:var(--good);--bad-fg:var(--bad);--warn-fg:var(--warn);--critical:var(--bad);
  --input-bg:transparent;--input-border:var(--line-2);--grid-line:var(--line);--row-hover:var(--hover);
  --nav-bg:var(--glass);--nav-border:var(--glass-edge);--bg-glow:transparent;--hero-glow:transparent;
  --shadow:none;--of-shadow:none;--of-shadow-lift:none;
}
/* Max: guld i stället för orange, samma regler för var den får synas.
   Webbens Max-sidor sätter html[data-tier=max]; cockpiten body.max-cockpit-shell. */
html[data-gold],html[data-tier=max],body.max-cockpit-shell{--accent:var(--of-gold);--accent-text:#E3C35A;--brand:#E3C35A;--brand-btn:var(--of-gold)}
html[data-gold][data-theme=light],html[data-tier=max][data-theme=light]{--accent-text:#7A5E00;--brand:#7A5E00}

body{background:var(--bg);color:var(--text);font-family:var(--f-text);font-size:var(--t-body);line-height:1.5;-webkit-font-smoothing:antialiased;transition:none}
button,input,select,textarea{font-family:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
h1,h2,h3{font-weight:600;letter-spacing:-.005em}
h1{font-size:1.5rem}h2{font-size:1.125rem}h3{font-size:1rem}
[hidden]{display:none!important}

/* Innehåll som byggts i det nya språket ligger i .pv-page: där gäller
   mockupens länkar och rubriker fullt ut. */
.pv-page a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:3px}
.pv-page a:hover{text-decoration-color:var(--text);opacity:1}
.pv-page h1,.pv-page h2,.pv-page h3{margin:0}
.pv-page button{cursor:pointer}
.pv-n{font-family:var(--f-num);font-variant-numeric:tabular-nums lining-nums;letter-spacing:0}
.pv-good{color:var(--good)}.pv-bad{color:var(--bad)}.pv-dim{color:var(--text-dim)}.pv-warn{color:var(--warn)}.pv-acc{color:var(--accent-text)}
.pv-small{font-size:var(--t-small)}
@media (max-width:900px){.pv-desktop-only{display:none!important}}
@media (min-width:901px){.pv-mobile-only{display:none!important}}

/* ---- 2. Skal: toppnavigering (desktop), toppremsa + flikrad (mobil) ---- */
.pv-mark{display:inline-flex;align-items:center;gap:8px;font:700 1.375rem/1 var(--f-num);letter-spacing:.01em;color:var(--text);text-decoration:none}
.pv-mark svg{display:block}
.pv-topnav{position:sticky;top:0;z-index:30;background:var(--bg);border-bottom:1px solid var(--line)}
.pv-topnav-in{max-width:var(--page-max);margin:0 auto;padding:0 var(--gutter);height:56px;display:flex;align-items:center;gap:32px}
.pv-topnav nav{display:flex;gap:24px;height:100%}
.pv-topnav nav a{display:flex;align-items:center;height:100%;color:var(--text-dim);text-decoration:none;font-size:.875rem;font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px}
.pv-topnav nav a.pv-on{color:var(--text);border-bottom-color:var(--accent)}
.pv-topnav nav a:hover{color:var(--text)}
.pv-topnav .pv-right{margin-left:auto;display:flex;align-items:center;gap:16px}
.pv-credits{background:none;border:0;padding:0;font-size:var(--t-small);color:var(--text-2);text-decoration:none;white-space:nowrap}
.pv-credits .pv-n{font-size:var(--n-s);color:var(--text);font-weight:600}
.pv-tabbar{display:none}
.pv-wrap{max-width:var(--page-max);margin:0 auto;padding:var(--s6) var(--gutter) var(--s8)}
@media (max-width:900px){
  .pv-topnav nav,.pv-topnav .pv-hide-m{display:none}
  .pv-topnav-in{height:48px;gap:12px}
  .pv-wrap{padding:var(--s4) var(--gutter) var(--s5)}
  .pv-tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;height:var(--tabbar-h);z-index:20;background:var(--bg);border-top:1px solid var(--line)}
  .pv-tabbar a{display:flex;align-items:center;justify-content:center;font-size:.8125rem;color:var(--text-dim);text-decoration:none;border-top:2px solid transparent;margin-top:-1px}
  .pv-tabbar a.pv-on{color:var(--text);border-top-color:var(--accent);font-weight:600}
}
.pv-foot{border-top:1px solid var(--line);margin-top:var(--s7);padding:var(--s5) var(--gutter) var(--s6);max-width:var(--page-max);margin-left:auto;margin-right:auto;font-size:var(--t-small);color:var(--text-dim);display:grid;grid-template-columns:auto 1fr;gap:var(--s4);align-items:start}
.pv-foot .pv-age{font:700 1.125rem/1 var(--f-num);border:1.5px solid var(--text-dim);padding:6px 6px 4px;color:var(--text-2)}
.pv-foot a{color:var(--text-dim)}
@media (max-width:900px){.pv-foot{margin-bottom:var(--tabbar-h);margin-top:var(--s5)}}
html.pv-public .pv-foot{margin-bottom:0}

/* ---- 3. Sidhuvud, rubriker med linje ---- */
.pv-ph{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s4);margin-bottom:var(--s5)}
.pv-ph h1{font-size:var(--t-h1)}
.pv-ph .pv-sub{font-size:var(--t-small);color:var(--text-dim);margin-top:2px}

.pv-sh{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s3);border-top:var(--sh-w) solid var(--line-strong);padding-top:var(--s2);margin:var(--sh-gap) 0 0}
.pv-sh h2{font-size:var(--t-h2)}
.pv-sh .pv-aside{font-size:var(--t-small);color:var(--text-dim);white-space:nowrap}
.pv-sh .pv-aside a{color:var(--text-2)}
.pv-sh+*{margin-top:var(--s2)}
.pv-sh.pv-first{margin-top:0}

/* ---- 4. Knappar och fält (raka hörn) ---- */
.pv-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line-2);background:none;border-radius:var(--btn-r);padding:0 16px;height:40px;font-weight:600;font-size:.875rem;color:var(--text);text-decoration:none;white-space:nowrap}
.pv-btn:hover{border-color:var(--text)}
.pv-btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.pv-btn-primary:hover{filter:brightness(1.08);border-color:var(--accent)}
.pv-btn-block{width:100%;height:48px;font-size:.9375rem}
.pv-btn[disabled]{opacity:.45;cursor:not-allowed}
.pv-btn-text{background:none;border:0;padding:6px 0;color:var(--text-2);font-weight:500;font-size:var(--t-small);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:3px}
.pv-btn-text.pv-danger{color:var(--bad)}
.pv-x-btn{width:40px;height:40px;border:1px solid var(--line-2);border-radius:var(--r);background:none;font-size:1.25rem;line-height:1}
.pv-field{margin-bottom:var(--s4)}
.pv-field label,.pv-field .pv-lab{display:block;font-size:var(--t-small);color:var(--text-2);margin-bottom:6px;font-weight:500}
.pv-field input,.pv-field select{width:100%;height:48px;background:var(--input-bg);border:1px solid var(--line-2);border-radius:var(--r);padding:0 12px;color:var(--text);font-size:1rem}
.pv-field input.pv-n{font-size:var(--n-m);font-weight:600}
.pv-field input:focus,.pv-field select:focus{border-color:var(--text);outline:none}
.pv-two{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3)}

/* ---- 5. Hjälten: en siffra, störst på sidan ---- */
.pv-hero{margin:0 0 var(--s4)}
.pv-hero-lab{font-size:var(--t-small);color:var(--text-2);display:flex;gap:var(--s3);align-items:baseline;flex-wrap:wrap}
.pv-hero-fig{font:700 var(--n-hero)/.86 var(--f-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em;margin:var(--s2) 0 var(--s3)}
.pv-hero-fig .pv-unit{font-size:.42em;font-weight:600;color:var(--text-2);margin-left:.12em}
.pv-hero-fig.pv-dim{color:var(--text-dim)}
.pv-hero-ctx{display:flex;flex-wrap:wrap;gap:4px var(--s4);align-items:baseline;font-size:var(--t-small);color:var(--text-2)}
.pv-hero-ctx .pv-n{font-size:var(--n-m);font-weight:600}
.pv-hero-ctx .pv-sep{width:1px;height:14px;background:var(--line-2);align-self:center}
.pv-unit-sw{display:inline-flex;gap:var(--s3);font-size:var(--t-small)}
.pv-unit-sw button{background:none;border:0;padding:4px 0;color:var(--text-dim);font-weight:600;border-bottom:2px solid transparent}
.pv-unit-sw button.pv-on{color:var(--text);border-bottom-color:var(--accent)}

/* ---- 6. Kurva kant till kant + period (understrukna flikar) ---- */
.pv-chart{position:relative;height:var(--chart-h);margin:var(--s4) 0 0;touch-action:pan-y;user-select:none}
.pv-chart.pv-short{height:120px}
@media (max-width:900px){.pv-chart.pv-bleed{margin-left:calc(-1 * var(--gutter));margin-right:calc(-1 * var(--gutter))}}
.pv-chart svg{display:block;width:100%;height:100%;overflow:visible}
.pv-chart svg text{font-family:var(--f-num);font-variant-numeric:tabular-nums}
.pv-chart .pv-empty{position:absolute;inset:0;display:grid;place-items:center;text-align:center;color:var(--text-dim);font-size:var(--t-small)}
.pv-tabs,.pv-periods{display:flex;gap:var(--s5);border-bottom:1px solid var(--line);margin:0 0 var(--s4);overflow-x:auto;scrollbar-width:none}
.pv-tabs::-webkit-scrollbar,.pv-periods::-webkit-scrollbar{display:none}
.pv-tabs button,.pv-periods button{background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:10px 0;color:var(--text-dim);font-weight:600;font-size:.875rem;white-space:nowrap}
.pv-periods button{font-family:var(--f-num);font-size:1.0625rem;font-weight:600;letter-spacing:.02em}
@media (max-width:900px){.pv-periods{justify-content:space-between;gap:0}}
.pv-tabs button.pv-on,.pv-periods button.pv-on{color:var(--text);border-bottom-color:var(--accent)}

/* ---- 7. Huvudbok: etikett till vänster, siffra till höger ---- */
.pv-kv{margin:0;border-top:1px solid var(--line)}
.pv-kv>div{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s3);padding:calc(var(--row-py) - 3px) 0;border-bottom:1px solid var(--line)}
.pv-kv dt{font-size:var(--t-small);color:var(--text-2)}
.pv-kv dd{margin:0;font:600 var(--n-m)/1.1 var(--f-num);font-variant-numeric:tabular-nums;text-align:right}
.pv-kv.pv-cols{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--s5)}
@media (max-width:420px){.pv-kv.pv-cols{column-gap:var(--s4)}}

/* ---- 8. Begrepp: prickad understrykning, tryck för förklaring ---- */
.pv-term{background:none;border:0;padding:0;color:inherit;font:inherit;text-decoration:underline dotted;text-decoration-color:var(--text-dim);text-underline-offset:3px;cursor:help}
.pv-term[aria-expanded=true]{text-decoration-color:var(--accent)}
.pv-def{display:block;font-size:var(--t-small);color:var(--text-2);font-family:var(--f-text);font-weight:400;line-height:1.45;margin:6px 0 2px;padding-left:10px;border-left:2px solid var(--accent);max-width:46ch;text-align:left}

/* ---- 9. Rad i kontoutdraget / oddstavlan ---- */

.pv-ln{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:var(--s3);align-items:center;padding:var(--row-py) 0 var(--row-py) 10px;border-bottom:1px solid var(--line);color:var(--text);text-decoration:none;width:100%;background:none;border-left:0;border-right:0;border-top:0;text-align:left;position:relative;font-size:var(--t-body)}
.pv-ln::before{content:"";position:absolute;left:0;top:var(--row-py);bottom:var(--row-py);width:3px;border-radius:var(--r-s);background:transparent}
.pv-ln.pv-g::before{background:var(--good)}.pv-ln.pv-r::before{background:var(--bad)}.pv-ln.pv-p::before{background:var(--warn)}.pv-ln.pv-v::before{background:var(--line-2)}
a.pv-ln:hover,button.pv-ln:hover{background:var(--hover)}
.pv-ln .pv-d{font:600 var(--n-s)/1.1 var(--f-num);color:var(--text-dim);font-variant-numeric:tabular-nums}
.pv-ln .pv-d small{display:block;font-size:.8125rem;font-weight:500}
.pv-ln .pv-t{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-ln .pv-m{font-size:var(--t-small);color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-ln .pv-a{text-align:right;font-family:var(--f-num);font-variant-numeric:tabular-nums;white-space:nowrap}
.pv-ln .pv-a b{display:block;font-size:var(--n-m);font-weight:600;line-height:1.1}
.pv-ln .pv-a span{font-size:.9375rem;color:var(--text-dim)}
.pv-ln.pv-locked .pv-t{color:var(--text-dim)}
.pv-ln-head{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:var(--s3);padding:0 0 6px 10px;font-size:var(--t-small);color:var(--text-dim);border-bottom:1px solid var(--line-2)}
.pv-day{display:flex;justify-content:space-between;padding:var(--s4) 0 6px;font-size:var(--t-small);color:var(--text-2);font-weight:600;border-bottom:1px solid var(--line)}
.pv-day .pv-n{font-size:var(--n-s)}
.pv-drawer{padding:var(--s2) 0 var(--s4) 62px;border-bottom:1px solid var(--line);font-size:var(--t-small)}
.pv-drawer .pv-acts{display:flex;gap:var(--s4);align-items:center;flex-wrap:wrap;margin-top:var(--s3)}

/* ---- 10. Oddsruta: oddset som ett tryckbart fält, som på en oddstavla ---- */
.pv-ob{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;min-width:68px;height:48px;padding:0 8px;border:1px solid var(--line-2);border-radius:var(--r-s);background:var(--ob-bg);font-family:var(--f-num);text-decoration:none;color:var(--text);line-height:1}
.pv-ob b{font-size:var(--n-m);font-weight:700}
.pv-ob span{font-size:.8125rem;color:var(--text-dim);margin-top:3px;font-weight:600}
.pv-ob .pv-good{color:var(--good)}
.pv-ob.pv-on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.pv-ob.pv-lock{color:var(--text-dim);border-style:dashed}

/* ---- 11. Kupongen: det enda inramade objektet ---- */
.pv-slip{border:1px solid var(--line-2);border-radius:var(--r-l);background:var(--raised);position:relative;box-shadow:var(--slip-shadow)}
.pv-slip-h{padding:var(--s4) var(--s4) var(--s3);display:flex;justify-content:space-between;gap:var(--s3);align-items:baseline}
.pv-slip-h .pv-t{font-weight:600}
.pv-slip-h .pv-m{font-size:var(--t-small);color:var(--text-dim)}
.pv-slip-body{padding:0 var(--s4) var(--s4)}
.pv-slip-tear{border:0;border-top:1px dashed var(--line-2);margin:0}
.pv-slip-row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s3);padding:6px var(--s4);font-size:var(--t-small);color:var(--text-2)}
.pv-slip-row .pv-n{font-size:var(--n-m);font-weight:600;color:var(--text)}
.pv-slip-row .pv-n.pv-good{color:var(--good)}.pv-slip-row .pv-n.pv-bad{color:var(--bad)}
.pv-slip-row.pv-total{border-top:1px solid var(--line-2);padding-top:12px;padding-bottom:12px;color:var(--text)}
.pv-slip-row.pv-total .pv-n{font-size:var(--n-l)}
.pv-slip-foot{padding:var(--s3) var(--s4) var(--s4);display:flex;gap:var(--s3);flex-wrap:wrap}
.pv-slip.pv-accent{border-color:var(--accent)}
.pv-slip.pv-dashed{border-style:dashed}

/* ---- 12. Fördelning: divergerande staplar ---- */
.pv-bar-row{display:grid;grid-template-columns:minmax(0,1fr) 110px 64px;gap:var(--s3);align-items:center;padding:calc(var(--row-py) - 3px) 0;border-bottom:1px solid var(--line)}
.pv-bar-row .pv-k{font-size:.875rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-bar-row .pv-k small{display:block;color:var(--text-dim);font-size:.8125rem;font-weight:400}
.pv-bar{position:relative;height:6px}
.pv-bar.pv-div::before{content:"";position:absolute;left:50%;top:-5px;bottom:-5px;width:1px;background:var(--line-2)}
.pv-bar.pv-one{background:var(--bg-2)}
.pv-bar i{position:absolute;top:0;height:6px}
.pv-bar-row .pv-v{text-align:right;font:600 var(--n-s)/1 var(--f-num);font-variant-numeric:tabular-nums;font-size:1.0625rem}
.pv-bar-row.pv-few{opacity:.55}
.pv-few{font-size:.8125rem;color:var(--text-dim)}

/* ---- 13. Credit-mätare: linje, inte ett piller ---- */
.pv-meter{display:flex;flex-direction:column;gap:6px;padding:10px 0;border-bottom:1px solid var(--line)}
.pv-meter-top{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s3);font-size:var(--t-small);color:var(--text-2)}
.pv-meter-top .pv-n{font-size:var(--n-m);font-weight:600;color:var(--text)}
.pv-meter-top .pv-n small{font-size:.9375rem;color:var(--text-dim);font-weight:500}
.pv-meter-track{height:4px;background:var(--bg-2);position:relative}
.pv-meter-track i{position:absolute;left:0;top:0;bottom:0;background:var(--text)}
.pv-meter-track i.pv-warn{background:var(--warn)}.pv-meter-track i.pv-bad{background:var(--bad)}
.pv-meter-track i.pv-ghost{background:none;outline:1px dashed var(--text-dim);outline-offset:-1px}

/* ---- 14. Val: understrukna flikar för läge, rutor för marknader ---- */
.pv-choices{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--line-2);border-radius:var(--btn-r);overflow:hidden;width:max-content;max-width:100%}
.pv-choices button{background:none;border:0;border-right:1px solid var(--line-2);padding:0 14px;height:40px;font-weight:500;font-size:.875rem;color:var(--text-2)}
.pv-choices button:last-child{border-right:0}
.pv-choices button.pv-on{background:var(--text);color:var(--bg);font-weight:600}
.pv-choices button[disabled]{color:var(--text-dim);cursor:not-allowed}
.pv-choices button small{font-size:.8125rem;margin-left:4px;color:var(--text-dim)}
@media (max-width:900px){.pv-choices{width:100%}.pv-choices button{flex:1 1 auto;padding:0 10px}}
.pv-opt{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:var(--s3);align-items:center;padding:12px 0;border-bottom:1px solid var(--line);cursor:pointer}
.pv-opt input{width:18px;height:18px;accent-color:var(--accent);margin:0}
.pv-opt .pv-t{font-weight:500}.pv-opt .pv-m{font-size:var(--t-small);color:var(--text-dim)}
.pv-opt .pv-c{font:600 var(--n-s)/1 var(--f-num);font-size:1.0625rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.pv-opt.pv-lock{opacity:.5;cursor:not-allowed}

/* ---- 15. Ark (formulär): bottenark på mobil, sidoark på desktop ---- */
.pv-scrim{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:40;display:none}
.pv-sheet{position:fixed;z-index:41;background:var(--bg);display:none;flex-direction:column;gap:var(--s4);padding:var(--s5) var(--gutter)}
@media (max-width:900px){.pv-sheet{left:0;right:0;bottom:0;border-top:2px solid var(--line-strong);max-height:92vh;overflow:auto}}
@media (min-width:901px){.pv-sheet{top:0;right:0;bottom:0;width:420px;border-left:1px solid var(--line-2);overflow:auto;padding:var(--s5)}}
.pv-sheet-open .pv-scrim{display:block}.pv-sheet-open .pv-sheet.pv-is-open{display:flex}
.pv-sheet-h{display:flex;justify-content:space-between;align-items:center}
.pv-sheet-h h2{font-size:var(--t-h1)}

/* ---- 16. Tomläge: en streckad kupong utan innehåll ---- */
.pv-blank{border:1px dashed var(--line-2);border-radius:var(--r-l);padding:var(--s5) var(--s4);display:flex;flex-direction:column;gap:var(--s3);align-items:flex-start}
.pv-blank .pv-t{font-weight:600}
.pv-blank p{margin:0;color:var(--text-2);font-size:var(--t-small);max-width:44ch}

/* ---- 17. Fast åtgärdsrad (Simulatorns kostnad + knapp) ---- */
.pv-actbar{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:var(--s3) 0;border-top:2px solid var(--line-strong);margin-top:var(--s5);position:sticky;bottom:0;background:var(--bg);z-index:15}
@media (max-width:900px){.pv-actbar{position:fixed;left:0;right:0;bottom:var(--tabbar-h);padding:10px var(--gutter);margin:0;border-top:1px solid var(--line-2)}}
.pv-actbar .pv-cost{font-size:var(--t-small);color:var(--text-2);line-height:1.3}
.pv-actbar .pv-cost .pv-n{font-size:var(--n-m);font-weight:700;color:var(--text);display:block}

/* ---- 18. Layout: bred spalt + smal spalt (asymmetrisk), ingen ruta runt någon ---- */
.pv-cols{display:grid;grid-template-columns:minmax(0,1fr) var(--rail-w);gap:var(--s7);align-items:start}
.pv-cols>.pv-side{position:sticky;top:var(--s5)}
@media (max-width:1100px){.pv-cols{gap:var(--s6);grid-template-columns:minmax(0,1fr) 280px}}
@media (max-width:900px){.pv-cols{display:block}}

/* ---- 19. Toast och utfällbara rader ---- */
.pv-toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tabbar-h) + 16px);background:var(--text);color:var(--bg);padding:10px 16px;font-size:.875rem;font-weight:600;z-index:50;opacity:0;transition:opacity .15s;pointer-events:none;border-radius:var(--r)}
@media (min-width:901px){.pv-toast{bottom:24px}}
.pv-qa details{border-bottom:1px solid var(--line)}
.pv-qa summary{list-style:none;cursor:pointer;padding:14px 32px 14px 0;font-weight:500;position:relative}
.pv-qa summary::-webkit-details-marker{display:none}
.pv-qa summary::after{content:"+";position:absolute;right:2px;top:10px;font:600 1.25rem/1 var(--f-num);color:var(--text-dim)}
.pv-qa details[open] summary::after{content:"–"}
.pv-qa p{margin:0 0 var(--s4);color:var(--text-2);font-size:var(--t-small);line-height:1.6;max-width:66ch}

/* ---- 20. Kurva och popover: krokar för temana ---- */
.pv-chart .pv-area{opacity:var(--area-op)}
.pv-chart .pv-lnp{stroke-width:var(--line-w)}
.pv-cred-wrap{position:relative}
.pv-pop{position:absolute;right:0;top:calc(100% + 10px);width:300px;padding:var(--s4);z-index:35;display:none;background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--r-l)}
.pv-pop.pv-open{display:block}
.pv-pop .pv-meter:last-of-type{border-bottom:0}
.pv-pop .pv-lab{font-size:var(--t-small);color:var(--text-2)}
@media (max-width:900px){.pv-pop{position:fixed;left:12px;right:12px;width:auto;top:56px}}

/* ---- 21. Mjuk glas: komponentdelen ---- */
html .pv-slip{border-color:var(--glass-edge)}
html .pv-slip.pv-accent{border-color:color-mix(in srgb,var(--accent) 55%,transparent)}
html .pv-slip.pv-dashed{box-shadow:none;background:none;border-color:var(--line-2)}
html .pv-toast{border-radius:var(--r)}
html .pv-choices button.pv-on{border-radius:var(--r-s)}
html .pv-choices{padding:3px;gap:3px}
html .pv-choices button{border-right:0;border-radius:var(--r-s);height:34px}

html .pv-topnav,html .pv-tabbar,html .pv-sheet,html .pv-pop{background:var(--glass);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}
html .pv-topnav{border-bottom-color:var(--glass-edge);box-shadow:inset 0 -1px 0 var(--glass-hi)}
html .pv-tabbar{border-top-color:var(--glass-edge)}
html .pv-sheet,html .pv-pop{border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi),0 24px 60px -20px rgba(0,0,0,.55)}
html .pv-scrim{background:rgba(0,0,0,.32)}
@media (max-width:900px){html .pv-sheet{border-radius:var(--r-sheet) var(--r-sheet) 0 0}}
@media (min-width:901px){html .pv-sheet{top:12px;right:12px;bottom:12px;border-radius:var(--r-sheet)}}

@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  html .pv-topnav,html .pv-tabbar,html .pv-sheet,html .pv-pop{background:var(--glass-solid)}
}
@media (prefers-reduced-transparency:reduce){html .pv-topnav,html .pv-tabbar,html .pv-sheet,html .pv-pop{background:var(--glass-solid);backdrop-filter:none;-webkit-backdrop-filter:none}}
html.pv-noglass .pv-topnav,html.pv-noglass .pv-tabbar,html.pv-noglass .pv-sheet,html.pv-noglass .pv-pop{background:var(--glass-solid);backdrop-filter:none;-webkit-backdrop-filter:none}

/* ---- 22. Lägesväxel standard/avancerat (toppnavigering i båda lägena) ---- */


/* ---- 23. Oddslinjen (signaturgraf): oddset mot modellens rättvisa odds och lägsta spelbara odds ---- */
.pv-odds{position:relative;margin:var(--s3) 0 var(--s2);touch-action:pan-y;user-select:none}
.pv-odds-chart,.pv-odds.hw-ol{height:160px}
@media (min-width:900px){.pv-odds-chart{height:220px}}
.pv-odds-fig{font:600 1.75rem/1.1 var(--f-num);font-variant-numeric:tabular-nums;color:var(--text)}
.pv-odds-ctx{font-size:.8125rem;color:var(--text-2);margin:2px 0 var(--s2);font-variant-numeric:tabular-nums}
.pv-odds .pv-odds-lab{fill:var(--text-dim);font-size:13px}
.pv-odds .pv-odds-book{fill:var(--text-2)}
.pv-odds .pv-odds-best{fill:var(--good-fg);font-weight:600}
.pv-odds svg text{font-family:var(--f-num);font-size:13px;font-variant-numeric:tabular-nums}

/* ---- 24. Skalet i appen: Mer-meny, credits i menyn, tema, sidfot ----
   Mockupen har sex flikar i toppmenyn och fem i flikraden. Appen har fler
   sidor (Live, Max-sviten, Beta, Admin, Kundtjänst ...), så "Mer" öppnar en
   glaspanel med hela listan (_full_nav_links.html): rullgardin under
   menyn på dator, bottenark på mobil. */
.pv-shell{min-height:100vh;display:flex;flex-direction:column}
.pv-shell>main{flex:1 0 auto;width:100%}
.pv-wrap{max-width:var(--page-max);margin:0 auto;padding:var(--s6) var(--gutter) var(--s8)}
@media (max-width:900px){.pv-wrap{padding:var(--s4) var(--gutter) var(--s5)}}
.pv-topnav .pv-mark{color:var(--text);text-decoration:none}
.pv-topnav .pv-mark span.pv-word{letter-spacing:.01em}
.pv-topnav nav button.pv-navmore{display:flex;align-items:center;gap:4px;height:100%;background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:0;color:var(--text-dim);font:500 .875rem/1 var(--f-text);cursor:pointer}
.pv-topnav nav button.pv-navmore:hover,.pv-topnav nav button.pv-navmore[aria-expanded=true]{color:var(--text)}
.pv-topnav nav button.pv-navmore.pv-on{color:var(--text);border-bottom-color:var(--accent)}
.pv-topnav .pv-right a.pv-credits:hover{text-decoration:underline;text-decoration-color:var(--line-2)}
.pv-topnav .pv-right .pv-btn{height:34px}
.pv-theme{width:32px;height:32px;display:inline-grid;place-items:center;background:none;border:1px solid var(--line-2);border-radius:999px;color:var(--text-2);font-size:.9375rem;line-height:1;cursor:pointer;padding:0}
.pv-theme:hover{color:var(--text);border-color:var(--text-dim)}
/* Credits i menyn: text, inte ett piller (credit_meter "pill"-varianten) */
.pv-topnav .credit-pill{min-height:0;padding:0;border:0;border-radius:0;background:none;color:var(--text);font:600 var(--n-s)/1 var(--f-num);font-variant-numeric:tabular-nums;letter-spacing:.01em}
.pv-topnav .credit-pill:hover{text-decoration:underline;text-decoration-color:var(--line-2)}
.pv-topnav .credit-pill.is-warn{color:var(--warn)}
.pv-topnav .credit-pill.is-danger,.pv-topnav .credit-pill.is-empty{color:var(--bad)}

/* Mer-menyn */
.pv-more{position:fixed;z-index:42;display:none;flex-direction:column;gap:2px;overflow:auto;background:var(--glass);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi),0 24px 60px -20px rgba(0,0,0,.55);padding:var(--s3) var(--s4) var(--s4)}
.pv-more.pv-open{display:flex}
@media (min-width:901px){.pv-more{top:62px;right:max(var(--gutter),calc((100vw - var(--page-max))/2 + var(--gutter)));width:300px;max-height:calc(100vh - 80px);border-radius:var(--r-l)}}
@media (max-width:900px){.pv-more{left:0;right:0;bottom:0;max-height:86vh;border-radius:var(--r-sheet) var(--r-sheet) 0 0;padding-bottom:calc(var(--tabbar-h) + var(--s4))}}
.pv-more-h{display:flex;justify-content:space-between;align-items:center;padding:4px 0 8px}
.pv-more-h h2{font-size:var(--t-h2);margin:0}
.pv-more-x{width:40px;height:40px;border:1px solid var(--line-2);border-radius:var(--r);background:none;color:var(--text);font-size:1.25rem;line-height:1;cursor:pointer}
.pv-more a,.pv-more .pv-more-btn{display:flex;align-items:center;min-height:44px;padding:0 2px;border-bottom:1px solid var(--line);color:var(--text);text-decoration:none;font-size:.9375rem;font-weight:500;background:none;border-left:0;border-right:0;border-top:0;text-align:left;width:100%;cursor:pointer}
.pv-more a:hover,.pv-more .pv-more-btn:hover{background:var(--hover);text-decoration:none;opacity:1}
.pv-more a.active{color:var(--text);box-shadow:inset 3px 0 0 var(--accent);padding-left:10px}
.pv-more .pill{background:none;border:0;padding:0;color:var(--text-dim);font-size:var(--t-small);font-weight:500}
.pv-more-sub{margin-top:var(--s4);padding-top:var(--s2);border-top:1.5px solid var(--line-strong)}
.pv-more-sub a,.pv-more-sub .pv-more-btn{min-height:40px;font-size:var(--t-small);color:var(--text-2)}
.pv-more-user{font-size:var(--t-small);color:var(--text-dim);padding:10px 2px 0;overflow-wrap:anywhere}
.pv-more-scrim{position:fixed;inset:0;z-index:41;display:none;background:rgba(0,0,0,.32)}
.pv-more-scrim.pv-open{display:block}
@media (min-width:901px){.pv-more-scrim{background:transparent}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.pv-more{background:var(--glass-solid)}}
@media (prefers-reduced-transparency:reduce){.pv-more{background:var(--glass-solid);backdrop-filter:none;-webkit-backdrop-filter:none}}
html.pv-noglass .pv-more{background:var(--glass-solid);backdrop-filter:none;-webkit-backdrop-filter:none}
/* Flikraden: knappen "Mer" ser ut som de andra flikarna */
.pv-tabbar button{background:none;border:0;border-top:2px solid transparent;margin-top:-1px;font:500 .8125rem/1 var(--f-text);color:var(--text-dim);cursor:pointer;padding:0}
.pv-tabbar button[aria-expanded=true],.pv-tabbar button.pv-on{color:var(--text);border-top-color:var(--accent);font-weight:600}
@media (max-width:900px){.pv-tabbar{padding-bottom:env(safe-area-inset-bottom,0px);height:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}}

/* Credit-popovern (credit_sheet-makrot) får glas och mätare som linjer */
.credit-sheet-panel{background:var(--glass);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi),0 24px 60px -20px rgba(0,0,0,.55);border-radius:var(--r-sheet) var(--r-sheet) 0 0;min-height:0}
@media (min-width:901px){.credit-sheet-panel{border-radius:var(--r-l);border:1px solid var(--glass-edge)}}
@media (prefers-reduced-transparency:reduce){.credit-sheet-panel{background:var(--glass-solid);backdrop-filter:none;-webkit-backdrop-filter:none}}
html.pv-noglass .credit-sheet-panel{background:var(--glass-solid);backdrop-filter:none;-webkit-backdrop-filter:none}
.credit-sheet-head .label-caps{font-size:var(--t-h2);text-transform:none;letter-spacing:0;color:var(--text);font-weight:600}
.credit-meter-full .meter-hero{font:700 var(--n-xl)/1 var(--f-num);letter-spacing:0}
.credit-meter-full .meter-hero-unit{font-family:var(--f-text);font-size:var(--t-small)}
.usage-bar-track{height:4px;border-radius:0;background:var(--bg-2)}
.usage-bar-fill{border-radius:0;background:var(--text);box-shadow:none}
.usage-bar-fill.usage-warn{background:var(--warn)}.usage-bar-fill.usage-danger{background:var(--bad)}
.meter-row{padding:10px 0;margin:0;border-bottom:1px solid var(--line)}
.meter-row-num{font:600 var(--n-m)/1.1 var(--f-num)}

/* Sidfoten: 18+-ruta och ansvarslänkar på varje sida */
.pv-foot{width:100%}
.pv-foot .pv-age{line-height:1}
.pv-foot .pv-foot-in{display:flex;flex-direction:column;gap:6px}
.pv-foot a{text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:3px}
.pv-foot a:hover{color:var(--text);opacity:1}
.pv-foot .pv-foot-nav a{color:var(--text-2)}

/* Flash-meddelanden i nya språket: en rad med färgat streck, ingen ruta */
.pv-wrap>.flash{border-radius:var(--r);border:1px solid var(--line-2);background:var(--raised);box-shadow:none}

/* AI-hjälpen: på mobil ligger den i Mer-menyn, på dator en liten knapp */
@media (max-width:900px){.pv-shell~.chat-widget .chat-widget-toggle,body.pv-body .chat-widget-toggle{display:none}
  body.pv-body .chat-widget{right:12px;left:12px;bottom:calc(var(--tabbar-h) + 12px)}
  body.pv-body .chat-widget-panel{bottom:0;width:auto;left:0;right:0;max-width:none}}
.chat-widget-toggle{width:44px;height:44px;background:var(--raised);color:var(--text);border:1px solid var(--line-2);box-shadow:none;font:600 1.125rem/1 var(--f-num)}
.chat-widget-toggle:hover{border-color:var(--text-dim)}
.chat-widget-panel{background:var(--raised);border:1px solid var(--glass-edge);border-radius:var(--r-l);box-shadow:var(--lift)}

/* ---- 25. Det gamla språket dämpat (sidor som inte flyttats än) ----
   Ingen blur, glöd eller skugga på kort och knappar. Glas finns bara på
   det som flyter ovanpå. Raka mjuka hörn i stället för piller. */
.card,.glass-card{-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;background:var(--raised);border-color:var(--line-2);transition:none;animation:none}
.card::before,.card::after,.glass-card::before,.glass-card::after,.btn::before{display:none}
@media (hover:hover){.card:hover,.glass-card:hover,.hero-number-card:hover{transform:none;box-shadow:none;border-color:var(--line-2)}}
.btn{border-radius:var(--btn-r);transition:background .15s,border-color .15s,filter .15s}
.btn:hover,.btn:active{transform:none}
.btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:none}
.btn-primary:hover{background:var(--accent);filter:brightness(1.08);box-shadow:none}
.btn-outline{background:none;-webkit-backdrop-filter:none;backdrop-filter:none;border-color:var(--line-2)}
.btn-outline:hover{border-color:var(--text);box-shadow:none}
.bg-blobs{display:none}
input,select,textarea{border-radius:var(--r)}
.stat-tile .value,.hero-value{font-family:var(--f-num);font-variant-numeric:tabular-nums;letter-spacing:0}
/* Kurvans axeltext: Barlow Condensed 14 px (designsystemet avsnitt 2) */
.chart-axis text,text.chart-axis{font-family:var(--f-num);font-size:14px;font-weight:500}
text.chart-end-label{font-family:var(--f-num);font-size:15px}
.label-caps,.section-label,.eyebrow{letter-spacing:.02em}
code,kbd,samp{font-size:max(13px,.9em)}

/* ---- 26. Resultatkurvan (renderEquityChart) och vinst/förlust per dag ---- */
.pv-eq .pv-hero{margin-bottom:0}
.pv-eq .pv-hero-lab .pv-eq-filter:empty{display:none}
.pv-eq .pv-hero-ctx .pv-def{flex-basis:100%}
.pv-eq .pv-hero-ctx{min-height:1.6em}
.pv-eq-chart{touch-action:pan-y}
.pv-eq-chart.pv-eq-few{height:auto;min-height:0}
.pv-eq-few .pv-eq-empty{position:static;place-items:start;padding:var(--s2) 0}
.pv-eq-chart .pv-eq-ref{stroke:var(--line);stroke-width:1}
.pv-eq-chart .pv-eq-line{stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.pv-eq-chart .pv-eq-dot{stroke:var(--bg);stroke-width:2}
.pv-eq-chart .pv-eq-sl{stroke:var(--text-2);stroke-width:1}
.pv-eq-chart .pv-eq-x{font-size:13px;fill:var(--text-dim)}
.pv-eq-chart .pv-eq-hit{cursor:crosshair}
.pv-eq-empty{position:absolute;inset:0 0 26px;display:grid;place-items:center;text-align:center;padding:0 var(--s4);font-size:14px;color:var(--text-2);pointer-events:none}
.pv-eq .pv-periods button.pv-off{opacity:.4}
.pv-eq .pv-periods button:disabled{cursor:default}
.pv-eq-unitlab{font-size:13px;color:var(--text-dim)}
.pv-unit-sw button,.pv-periods button,.pv-tabs button{cursor:pointer}
.pv-hero-lab>span:first-child{font-size:var(--t-small);color:var(--text-2)}
.pv-btn{cursor:pointer;font-family:var(--f-text)}

/* ---- 27. Bet Tracker (/log), mockup design/mockups/bettracker.html ---- */
.bt-cols{display:grid;grid-template-columns:minmax(0,1fr) var(--rail-w);grid-template-areas:"top side" "list side";column-gap:var(--s7);align-items:start}
@media (min-width:1400px){.bt-cols{--rail-w:380px;column-gap:64px}}
.bt-top{grid-area:top;min-width:0}.bt-list{grid-area:list;min-width:0}
.bt-side{grid-area:side;position:sticky;top:calc(56px + var(--s5));min-width:0}
@media (max-width:1100px){.bt-cols{column-gap:var(--s6);grid-template-columns:minmax(0,1fr) 280px}}
@media (max-width:900px){.bt-cols{display:block}.bt-side{position:static}.bt-kv{margin-top:var(--s4)}}
@media (min-width:1101px){.bt-cols{grid-template-areas:"top top" "list side"}}
.bt-min0{min-width:0;display:block}
.bt-n{font-size:1rem}
.bt .pv-sh h2 .pv-term{font-weight:600}
@media (max-width:900px){.bt-kv{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--s5)}}
.bt-pend .pv-ln{grid-template-columns:52px minmax(0,1fr) auto}
.bt-acts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:0 0 12px 62px;border-bottom:1px solid var(--line)}
@media (min-width:901px){.bt-side .bt-acts{padding-left:0}}
.bt-acts .pv-btn{height:40px;font-size:.8125rem;padding:0 6px}
.bt-acts .bt-w{color:var(--good)}.bt-acts .bt-l{color:var(--bad)}
.bt-more-acts{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:0 var(--s4)}
.bt-acts-in{padding:0;border:0;margin-top:var(--s2)}
.bt-clv{padding:6px 0 10px;border-bottom:1px solid var(--line)}
.bt-note{margin:8px 0 0}
.bt-bw{margin-top:var(--s4)}
.bt-bw>div{align-items:flex-start;gap:var(--s3)}
.bt-bw dt{min-width:0;flex:1 1 auto}
.bt-bw dt small{display:block;font-size:.8125rem;color:var(--text-dim);overflow-wrap:anywhere}
.bt-bw dd{flex:0 0 auto;white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
/* "Var tjänar du pengar?": en rad = etikett | snittodds | snittinsats | resultat + stapel. */
.bt-g{display:grid;grid-template-columns:minmax(0,1fr) 3.6em 5em 6.4em;gap:0 var(--s2);align-items:start;padding:10px 0;border-bottom:1px solid var(--line)}
.bt-g-head{padding:6px 0;font-size:.8125rem;color:var(--text-dim)}
.bt-g-head span{text-align:right;hyphens:manual;line-height:1.25}
.bt-g-k{min-width:0;overflow-wrap:anywhere;font-weight:600}
.bt-g-k small{display:block;font-weight:400;font-size:.8125rem;color:var(--text-dim)}
.bt-g-n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.bt-g-r span{display:block;font-weight:600}
.bt-g-r small{display:block;font-size:.8125rem;color:var(--text-dim)}
.bt-g-r .pv-bar{margin-top:4px;width:100%}
.bt-g.pv-few .bt-g-k,.bt-g.pv-few .bt-g-n{color:var(--text-dim)}

.bt-dd{height:110px;margin-top:var(--s2)}
.bt-filters{display:flex;gap:var(--s4);align-items:baseline;flex-wrap:wrap;font-size:var(--t-small);margin-top:var(--s2)}
.pv-page .bt-filters a,.bt-filters button{background:none;border:0;padding:4px 0;color:var(--text-dim);font-weight:600;font-size:var(--t-small);border-bottom:2px solid transparent;text-decoration:none;cursor:pointer}
.pv-page .bt-filters a:hover,.bt-filters button:hover{color:var(--text)}
.pv-page .bt-filters .pv-on{color:var(--text);border-bottom-color:var(--accent)}
.bt-filters .bt-r{margin-left:auto;display:flex;gap:var(--s4)}
.bt-filter{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--s3);padding:var(--s4) 0 0;border-bottom:1px solid var(--line);margin-bottom:var(--s2)}
.bt-filter .pv-two{grid-column:span 2}
.bt-filter-acts{display:flex;gap:var(--s3);align-items:center;grid-column:1/-1;padding-bottom:var(--s4)}
.pv-page .bt-filter-acts a.pv-btn{text-decoration:none}
@media (max-width:900px){.bt-filter{grid-template-columns:1fr}.bt-filter .pv-two{grid-column:auto}}
.bt-stmt{margin-top:var(--s3)}
.bt-stmt .pv-ln-head .bt-r{text-align:right}
.bt-row>summary{list-style:none;cursor:pointer}
.bt-row>summary::-webkit-details-marker{display:none}
.bt-row[open]>summary{background:var(--hover)}
.bt-stmt .pv-ln .pv-t,.bt-stmt .pv-ln .pv-m{display:block}
.bt-stmt .pv-ln .pv-t,.bt-stmt .pv-ln .pv-m,.bt-pend .pv-m{white-space:normal;overflow-wrap:anywhere}
.bt-stmt .pv-a .bt-o,.bt-stmt .pv-a .bt-s{display:none}
.bt-stmt .pv-a > span{display:block}
@media (min-width:901px){
  .bt-stmt .pv-ln,.bt-stmt .pv-ln-head{grid-template-columns:64px minmax(0,1fr) 72px 96px 120px}
  .bt-stmt .pv-ln .pv-a{display:contents}
  .bt-stmt .bt-os{display:none!important}
  .bt-stmt .pv-ln .bt-o,.bt-stmt .pv-ln .bt-s{display:block;text-align:right;color:var(--text-2);font:500 1.0625rem/1.1 var(--f-num);font-variant-numeric:tabular-nums}
  .bt-stmt .pv-ln .pv-a b{order:9;text-align:right}
}
@media (max-width:900px){.bt-stmt .pv-ln-head{display:none}}
.bt-stmt .pv-drawer .pv-kv dd{font-family:var(--f-text);font-size:.9375rem;font-weight:500}
.bt-change{display:inline-block}
.bt-change>summary{list-style:none}.bt-change>summary::-webkit-details-marker{display:none}
.bt-change[open]{display:block;width:100%}
.bt-change-form{margin-top:var(--s3)}
.bt-list .x-m{display:none}
@media (min-width:901px){.bt-list .x-m{display:block}.bt-list .x-d{display:none}.bt-all-m{display:none}}
.bt-list.show-all .x-m,.bt-list.show-all .x-d{display:block}
.bt-all{margin-top:var(--s4)}
.bt-list .pv-blank{margin-top:var(--s4)}
.bt-sheetwrap .pv-scrim{display:block}
.bt-sheetwrap .pv-sheet{display:flex}
.bt-sheet .pv-two{column-gap:var(--s3)}
.bt-pot{padding-left:0;padding-right:0;margin-bottom:var(--s3)}
.bt-more-fields{margin-bottom:var(--s4)}
.bt-more-fields>summary{cursor:pointer;padding:6px 0;margin-bottom:var(--s3)}
.bt-shot input[type=file]{height:auto;padding:10px 12px}
body.bt-sheet-open{overflow:hidden}
.pv-field input,.pv-field select{font-family:var(--f-text)}
.pv-field input.pv-n{font-family:var(--f-num)}
.pv-toast{opacity:0}
.pv-page .pv-ph h1{font-size:var(--t-h1);font-family:var(--f-text)}.pv-page .pv-sh h2,.pv-page .pv-sheet-h h2{font-size:var(--t-h2);font-family:var(--f-text)}.pv-page .pv-sheet-h h2{font-size:var(--t-h1)}
.pv-more a.active{background:none}
@media (max-width:420px){.pv-topnav .pv-right{gap:10px}.pv-topnav .pv-right .pv-btn{padding:0 10px}.pv-topnav-in{gap:10px}}@media (max-width:380px){body:not(.pv-authed) .pv-topnav .pv-theme{display:none}}
@media (max-width:360px){.compare-table th,.compare-table td{padding-left:6px;padding-right:6px}}

/* ---- 28. Hem (/dashboard) som widget-dashboard (2026-10-03) ----
   DESIGN_BRIEF_2026-10-03_dashboard.md. Rutnätet följer INNEHÅLLETS bredd
   (container query på .hw-gridwrap): 1/2/3/4/5 kolumner vid <380/600/900/
   1400/2200 px, radhöjd 152 px under 600 px annars 168 px. S = 1x1, M = 2x1,
   L = 2x2 (på 1 kolumn full bredd). Inget lagras som koordinat, bara ordning
   och storlek; grid-auto-flow: dense fyller luckor. Widgetens innehåll följer
   data-size, aldrig skärmens media queries. */
.hem-first{padding-top:12px!important}
.hem-bet{font-weight:600;color:var(--text);text-align:right}
.hem-bk{color:var(--text)}
.pv-anform{display:contents}
.pv-slip-foot .pv-anform .pv-btn{width:100%}
.pv-page a.pv-ln{text-decoration:none}

.hw-page{margin-inline:calc(16px - var(--gutter))}
@media (min-width:901px){.hw-page{margin-inline:calc(24px - var(--gutter))}}
.hw-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s4);margin-bottom:var(--s4);flex-wrap:wrap}
.hw-head h1{font-size:var(--t-h1)}
.hw-head .pv-sub{font-size:var(--t-small);color:var(--text-dim);margin-top:2px}
.hw-edit-acts{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.hw-confirm{display:inline-flex;align-items:center;gap:var(--s2);font-size:var(--t-small);color:var(--text-2)}
.hw-btn44{min-height:44px;min-width:44px}
.pv-btn-text.hw-btn44{padding:0 6px}
.hw-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hw-foot{display:flex;justify-content:center;margin-top:var(--s5)}
.hw-none{border:1px dashed var(--line-2);border-radius:var(--r-l);padding:var(--s5) var(--s4);display:flex;flex-direction:column;align-items:flex-start;gap:var(--s3)}
.hw-none p{margin:0;color:var(--text-2)}

.hw-gridwrap{container-type:inline-size;container-name:hwg}
.hw-grid{--hw-cols:1;--hw-row:152px;display:grid;grid-template-columns:repeat(var(--hw-cols),minmax(0,1fr));grid-auto-rows:var(--hw-row);grid-auto-flow:row dense;gap:12px}
@container hwg (min-width:380px){.hw-grid{--hw-cols:2}}
@container hwg (min-width:600px){.hw-grid{--hw-row:168px}}
@container hwg (min-width:900px){.hw-grid{--hw-cols:3}}
@container hwg (min-width:1400px){.hw-grid{--hw-cols:4}}
@container hwg (min-width:2200px){.hw-grid{--hw-cols:5}}
.hw[data-size=M],.hw-ph[data-size=M]{grid-column:span 2}
.hw[data-size=L],.hw-ph[data-size=L]{grid-column:span 2;grid-row:span 2}
@container hwg (max-width:379.98px){.hw[data-size=M],.hw[data-size=L],.hw-ph[data-size=M],.hw-ph[data-size=L]{grid-column:span 1}}

.hw{position:relative;min-width:0;min-height:0;background:var(--raised);border:1px solid var(--glass-edge);border-radius:var(--r-l);overflow:hidden;container-type:size;container-name:hw}
.hw:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.hw-body{display:flex;flex-direction:column;height:100%;padding:10px 12px 12px;gap:6px;min-height:0}
.hw-h{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:.8125rem;color:var(--text-2);min-height:20px;flex:none}
.hw-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-page a.hw-link{color:var(--text-2);text-decoration:none;white-space:nowrap;position:relative}
.pv-page a.hw-link:hover{color:var(--text)}
.hw-link::after{content:"";position:absolute;inset:-12px -8px}
.hw-c{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px;overflow:hidden}

/* Vad som syns i vilken storlek. */
.hw[data-size=S] .hw-ml,.hw[data-size=S] .hw-l,.hw[data-size=M] .hw-s,.hw[data-size=M] .hw-l,
.hw[data-size=L] .hw-s,.hw[data-size=L] .hw-sm,.hw:not([data-size=L]) .hw-lx{display:none!important}

.hw-t1{font-size:.875rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.hw-strong{font-size:.9375rem}
.hw-meta{font-size:.8125rem;color:var(--text-dim);line-height:1.35;min-width:0}
.hw-p{margin:0;font-size:.875rem;color:var(--text-2);line-height:1.4}
.hw-big{display:flex;flex-direction:column;gap:4px;min-width:0}
.hw-num{display:flex;align-items:baseline;gap:8px;min-width:0}
.hw-num .pv-n{font:600 var(--n-l)/1.05 var(--f-num);color:var(--text);white-space:nowrap}
.hw-unit{font-size:.8125rem;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.hw-bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.hw-bar i{display:block;height:100%;background:var(--accent);border-radius:3px}
.hw-bar i.pv-warn{background:var(--warn)}
.hw-tag{font-size:.8125rem;color:var(--accent-text);white-space:nowrap;flex:none}
.hw-pro{font-size:.8125rem;font-weight:600;color:var(--accent-text);border:1px solid var(--line-2);border-radius:var(--r-s);padding:0 5px}

.hw-rows{display:flex;flex-direction:column;min-height:0}
.hw-row{display:flex;align-items:center;gap:10px;min-height:44px;padding:2px 0;border-top:1px solid var(--line);min-width:0}
.hw-row:first-child{border-top:0}
.pv-page a.hw-row{text-decoration:none;color:inherit}
.pv-page a.hw-row:hover .hw-t1{text-decoration:underline;text-decoration-color:var(--line-2)}
.hw-rmain{display:flex;flex-direction:column;min-width:0;flex:1}
.hw-rmain .hw-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hw-rend{display:flex;flex-direction:column;align-items:flex-end;flex:none;text-align:right}
.hw-rend b{font:600 1rem/1.1 var(--f-num);color:var(--text)}
.hw-locked .hw-t1,.hw-locked .hw-rend b{color:var(--text-dim)}
.hw-row-act .hw-rend{flex-direction:row}
.hw-row-act .pv-btn{height:44px;font-size:.8125rem;padding:0 10px}
.hw-d{font-size:.8125rem;color:var(--text-2);flex:none;min-width:40px}

.hw-mlist{display:flex;flex-direction:column;gap:2px;min-height:0}
.hw-mrow{display:flex;align-items:center;gap:8px;min-height:26px;font-size:.8125rem;min-width:0}
.hw-mrow .hw-t1{flex:1;font-weight:500;font-size:.8125rem}

.hw-pend{display:flex;flex-direction:column;gap:6px}
.hw-pend+.hw-pend{border-top:1px solid var(--line);padding-top:6px}
.hw-prow{display:flex;justify-content:space-between;gap:8px;min-width:0}
.hw-acts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.hw-acts .pv-btn{height:44px;padding:0 4px;font-size:.8125rem;min-width:0}

.hw-trk-top{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.hw-seg{display:inline-flex;border:1px solid var(--line-2);border-radius:var(--r)}
.hw-seg button{min-width:44px;min-height:44px;border:0;background:none;color:var(--text-2);font-size:.8125rem;font-weight:600;border-radius:var(--r)}
.hw-seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}
.hw-chart{flex:1 1 0;min-height:0;position:relative;overflow:hidden}
.hw .pv-odds.hw-ol{flex:1;min-height:70px;height:auto;margin:4px 0 0}

.hw-form{display:flex;gap:4px}
.hw-form span,.hw-fbox{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:var(--r-s);font:600 .8125rem/1 var(--f-num);background:var(--bg-2);color:var(--text-2);flex:none}
.hw-f-V{background:color-mix(in srgb,var(--good) 22%,transparent)!important;color:var(--good)!important}
.hw-f-F{background:color-mix(in srgb,var(--bad) 22%,transparent)!important;color:var(--bad)!important}

.hw-empty{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;flex:1;min-height:0}
.hw-empty p{margin:0;font-size:.875rem;color:var(--text-2);line-height:1.35}
.hw-empty .pv-btn{height:44px}
.hw-cta{margin-top:auto}
.hw-cta .pv-btn{height:auto;min-height:44px;white-space:normal;text-align:center;padding:6px 12px}
.hw-short{width:100%;height:100%!important;min-height:44px;text-decoration:none!important}
.hw-live{display:flex;flex-direction:column;gap:6px;height:100%;min-height:0}
.hw-live .hw-mlist{flex:1;overflow:hidden}
.hw-live-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:auto}
.hw-live-foot .pv-btn{height:44px;padding:0 12px}
.hw[data-size=S] .hw-live-foot .hw-meta{display:none}

/* Redigera: innehållet dämpat och utan pekhändelser, tre kontroller ovanpå. */
.hw-ctl{display:none}
.hw-editing .hw-c{opacity:.55;pointer-events:none}
.hw-editing .hw-link{pointer-events:none;opacity:.55}
.hw-editing .hw{border-style:dashed;border-color:var(--line-2);touch-action:pan-y}
.hw-editing .hw-ctl{display:block;position:absolute;inset:0;pointer-events:none}
.hw-ctl button{pointer-events:auto;min-width:44px;min-height:44px;border:1px solid var(--line-2);background:var(--glass-solid);color:var(--text);border-radius:var(--r);font-weight:600;font-size:.9375rem;display:inline-grid;place-items:center;padding:0}
.hw-x{position:absolute;top:4px;left:4px;font-size:1.25rem!important}
.hw-ctl-name{position:absolute;top:4px;left:52px;right:104px;height:44px;display:flex;align-items:center;font-size:.875rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hw-editing .hw-h{visibility:hidden}
.hw-move{position:absolute;top:4px;right:4px;display:flex;gap:4px}
.hw-grip{cursor:grab;touch-action:none}
.hw-up,.hw-down{display:none!important}
@media (max-width:599.98px){.hw-grip{display:none!important}.hw-up,.hw-down{display:inline-grid!important}}
.hw-sizes{position:absolute;left:50%;bottom:4px;transform:translateX(-50%);display:flex;gap:2px;background:var(--glass-solid);border:1px solid var(--line-2);border-radius:var(--r);padding:2px}
.hw-sizes button{border:0;min-width:44px}
.hw-sizes button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}
.hw-ph{border:1px dashed var(--accent);border-radius:var(--r-l);min-width:0}
.hw-ghost{position:fixed!important;z-index:60;pointer-events:none;opacity:.9;box-shadow:var(--lift);margin:0}
.hw-gallery .hw-gal{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.hw-gal-i{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);padding:12px 0;border-top:1px solid var(--line);flex-wrap:wrap}
.hw-gal-i>div{flex:1;min-width:180px}
.hw-gal-i p{margin:2px 0 0;font-size:.8125rem;color:var(--text-dim)}
.hw-gal-group{flex-direction:column;align-items:stretch}
.hw-gal-sub{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.hw-gal-sub li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.875rem}
.hw-gal-sub li>span:first-child{flex:1;min-width:120px}
.hw-search{display:flex;flex-direction:column;gap:4px;font-size:.8125rem;color:var(--text-2)}
.hw-search input{height:44px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg);color:var(--text);padding:0 10px;font-size:.9375rem}
@media (prefers-reduced-motion:reduce){.hw{transition:none!important}}

/* ---- 29. Matcher (/matches), mockup design/mockups/matches.html ---- */
.pv-tabs a{display:inline-block;border-bottom:2px solid transparent;margin-bottom:-1px;padding:10px 0;color:var(--text-dim);font-weight:600;font-size:.875rem;white-space:nowrap}
.pv-page .pv-tabs a{text-decoration:none;color:var(--text-dim)}
.pv-page .pv-tabs a.pv-on{color:var(--text);border-bottom-color:var(--accent)}
.mx-leagues{padding:0 0 var(--s4);border-bottom:1px solid var(--line);margin-bottom:var(--s4)}
.mx-leagues[hidden]{display:none}
.mx-sport{font-size:var(--t-small);color:var(--text-2);font-weight:600;margin:var(--s3) 0 6px}
.mx-chips{display:flex;flex-wrap:wrap;gap:8px}
.mx-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);border-radius:var(--r);padding:6px 10px;font-size:var(--t-small);cursor:pointer}
.mx-chip input{accent-color:var(--accent);margin:0}
.mx-leagues .pv-btn{margin-top:var(--s4)}
.mx-blank{margin-top:var(--s3)}
.mx-lg{display:flex;justify-content:space-between;align-items:end;padding:var(--s5) 0 6px;border-bottom:1px solid var(--line-2)}
.mx-lg b{font-size:.875rem;font-weight:600}
.mx-board .mx-lg:first-child{padding-top:var(--s2)}
.mx-row{grid-template-columns:52px minmax(0,1fr) auto}
.mx-tm{display:block;font-weight:500;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mx-follow{display:inline}
.mx-follow-b{position:relative;margin-left:8px;border:0;background:none;padding:0;font-size:.8125rem;font-weight:500;color:var(--text-dim);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:3px;cursor:pointer}
.mx-follow-b::after{content:"";position:absolute;inset:-12px -10px}
.mx-follow-b.mx-on{color:var(--accent-text);text-decoration:none}
.mx-tag{display:block;font-size:.8125rem;color:var(--good)}
.mx-row .pv-m{display:block}
.mx-row .pv-btn{height:40px;font-size:.8125rem;padding:0 12px}
.mx-note{margin:var(--s4) 0 0}

/* ---- 30. Simulatorn (/simulator), mockup design/mockups/simulator.html (omgång 2) ---- */
.sim .pv-ph .pv-btn-text{white-space:nowrap}
.sim-ph h1{margin-top:6px!important}
.sim-cols{display:grid;grid-template-columns:minmax(0,1fr) var(--rail-w);grid-template-areas:"top side" "list side";column-gap:var(--s7);align-items:start}
@media (min-width:1400px){.sim-cols{--rail-w:380px;column-gap:64px}}
@media (max-width:1100px){.sim-cols{column-gap:var(--s6);grid-template-columns:minmax(0,1fr) 300px}}
.sim-top{grid-area:top;min-width:0}.sim-mkts{grid-area:list;min-width:0}
.sim-side{grid-area:side;min-width:0;position:sticky;top:calc(56px + var(--s5))}
.sim-side:empty{display:none}
@media (max-width:900px){.sim-cols{display:block}.sim-side{position:static;margin-top:var(--s5)}}
.sim-say{font-size:1.0625rem;line-height:1.5;margin:0 0 var(--s3);max-width:52ch}
.sim-say b{font-weight:600}
.sim-say-2{color:var(--text-2);font-size:var(--t-body)}
.sim-verdict .pv-hero-fig{margin-top:var(--s1)}
.sim-fig-text{font-size:var(--n-xl)!important}
.sim-kv-narrow{max-width:520px;margin-top:var(--s3)}
.sim-acts{display:flex;gap:var(--s3);margin-top:var(--s4);flex-wrap:wrap}
.sim-p{margin:8px 0 0;max-width:66ch}
.sim-warn{margin:var(--s3) 0 0;padding:10px 12px;border-left:3px solid var(--warn);background:var(--hover);font-size:var(--t-small);color:var(--text-2);line-height:1.5;border-radius:0 var(--r-s) var(--r-s) 0}
.sim-notes{margin:var(--s3) 0 0;padding-left:18px;font-size:var(--t-small);color:var(--text-2);line-height:1.5}
.sim-kv{margin-top:var(--s4)}
.sim-kv dt{min-width:0}
.sim-leg .pv-t,.sim-leg .pv-m{display:block}
.sim-leg .pv-m{white-space:normal}
.sim-leg .bt-min0{overflow:hidden}
.sim-leg .pv-a > span{display:block;font-size:.9375rem;font-weight:600}
.sim-slip .pv-slip-h .pv-m{white-space:normal}
.sim-slip .pv-slip-foot{flex-direction:column;align-items:stretch}
.sim-slip .sim-logform{display:block;width:100%}
.sim-logwrap{margin-top:var(--s5);max-width:360px}
.sim-logwrap p{margin:6px 0 0}
.sim-out{display:grid;grid-template-columns:92px minmax(0,1fr) 88px;gap:var(--s3);align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}
.sim-out-k{font-size:var(--t-small);color:var(--text-2)}
.sim-out-k .pv-n{font-size:1.0625rem;color:var(--text)}
.sim-out-v{text-align:right;font:600 var(--n-m)/1 var(--f-num);font-variant-numeric:tabular-nums;white-space:nowrap}
.sim-range{position:relative;height:58px;margin:var(--s3) 0 var(--s2)}
.sim-range-track{position:absolute;left:0;right:0;top:24px;height:2px;background:var(--line-2)}
.sim-range-span{position:absolute;top:21px;height:8px;background:var(--text);border-radius:2px}
.sim-range-start{position:absolute;top:12px;width:1px;height:26px;background:var(--accent)}
.sim-range-tk{position:absolute;top:38px;font:600 1rem/1.2 var(--f-num);transform:translateX(-50%);white-space:nowrap}
.sim-range-lb{position:absolute;top:0;font-size:.8125rem;color:var(--text-dim);transform:translateX(-50%);white-space:nowrap}
.sim-mk{display:grid;grid-template-columns:minmax(0,1fr) 68px 72px;gap:var(--s3);align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.sim-mk-k{font-size:.875rem;font-weight:500;min-width:0}
.sim-mk-k small{display:block;color:var(--text-dim);font-weight:400;font-size:.8125rem}
.sim-mk .pv-ob{height:40px;min-width:60px}
.sim-mk-v{text-align:right;font:600 1.0625rem/1 var(--f-num)}
.sim-mk-v small{display:block;font:500 .8125rem/1.2 var(--f-text);color:var(--text-dim)}
.sim-mk-best{box-shadow:inset 3px 0 0 var(--good);padding-left:10px}
.sim-save{margin-top:var(--s4)}
.sim-save .pv-field{margin-bottom:var(--s2)}
/* Formuläret */
.sim-andra{margin-top:var(--s7);border-top:1.5px solid var(--line-strong)}
.sim-andra>summary{cursor:pointer;padding:12px 0;font-weight:600}
.sim-fcols{display:grid;grid-template-columns:minmax(0,1fr) var(--rail-w);column-gap:var(--s7);align-items:start}
@media (max-width:1100px){.sim-fcols{column-gap:var(--s6);grid-template-columns:minmax(0,1fr) 280px}}
@media (max-width:900px){.sim-fcols{display:block}}
.sim-fmain{min-width:0}.sim-fside{min-width:0}
.sim-get dd{font:400 var(--t-small)/1.3 var(--f-text);color:var(--text-dim)}
.sim-meter{margin-top:var(--s5)}
.sim-free{margin:0 0 var(--s4)}
.sim-refresh{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap;margin:var(--s3) 0 0}
.sim-refresh input{height:36px;background:var(--input-bg);border:1px solid var(--line-2);border-radius:var(--r);padding:0 8px;color:var(--text);font-size:.875rem}
.sim-search{width:100%;height:44px;background:none;border:1px solid var(--line-2);border-radius:var(--r);padding:0 12px;color:var(--text);margin:var(--s3) 0 var(--s2);font-size:1rem}
.sim-sports{margin-bottom:0}
.sim-fx-list{margin-top:var(--s2)}
.sim-fx-list[hidden]{display:none}
.sim-fx{cursor:pointer}
.sim-fx input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.sim-fx:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:-2px}
.sim-fx .pv-t,.sim-fx .pv-m{display:block}
.sim-fx .bt-min0{overflow:hidden}
.sim-fx.sim-sel{background:var(--hover)}
.sim-fx.sim-sel::before{background:var(--accent)}
.sim-pickmark{font:600 .8125rem/1 var(--f-text);color:var(--text-dim)}
.sim-sel .sim-pickmark{color:var(--accent-text)}
.sim-choices{margin-top:var(--s3)}
.sim-choices label{display:inline-flex;align-items:center;gap:4px;padding:0 14px;height:34px;font-weight:500;font-size:.875rem;color:var(--text-2);border-radius:var(--r-s);cursor:pointer;position:relative;margin:0;background:none;border:0;min-height:0}
.sim-choices label input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.sim-choices label.is-active{background:var(--text);color:var(--bg);font-weight:600}
.sim-choices label.is-locked{color:var(--text-dim);cursor:not-allowed}
.sim-choices label small{font-size:.8125rem;color:var(--text-dim)}
.sim-choices label:has(input:focus-visible){outline:2px solid var(--accent)}
@media (max-width:900px){.sim-choices label{flex:1 1 auto;justify-content:center;padding:0 8px}}
.system-field[hidden]{display:none}
.sim-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--s4);margin-top:var(--s3);max-width:640px}
@media (max-width:640px){.sim-fields{grid-template-columns:1fr}}
.sim-fields .pv-field[hidden]{display:none}
.sim .pv-field input[type=range]{height:auto;border:0;padding:0;background:none}
.sim-check{display:flex!important;gap:8px;align-items:center;margin-top:8px;font-size:var(--t-small)}
.sim-check input{width:18px!important;height:18px!important;accent-color:var(--accent)}
.sim .sim-advanced{border-top:0;padding-top:0;margin-top:var(--s4)}
.sim .sim-advanced>summary{font-weight:500;font-size:var(--t-small);color:var(--text-2)}
/* Marknadslistan och cost-baren (delas med /ratea) i nya språket */
.sim .market-head{display:flex;border-top:var(--sh-w) solid var(--line-strong);padding-top:var(--s2);margin-top:var(--sh-gap);font-size:var(--t-h2);font-weight:600;text-transform:none;letter-spacing:0;color:var(--text)}
.sim .market-row{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:var(--s3);align-items:center;padding:12px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none}
.sim .market-row.market-all{border:1px solid var(--line-2);border-radius:var(--r);padding:12px;background:var(--raised);margin-top:var(--s3)}
.sim .market-row.market-all.is-on{border-color:var(--accent);background:var(--raised)}
.sim .market-row input[type=checkbox]{accent-color:var(--accent)}
.sim .market-group-label{text-transform:none;letter-spacing:0;font-size:var(--t-small);color:var(--text-dim)}
.sim .market-cost,.sim .market-all-cost strong{font-family:var(--f-num);font-size:1.0625rem}
.sim .market-row .locked-badge,.sim .market-group-label{letter-spacing:0}
.sim .cost-bar{background:var(--bg);border-top:2px solid var(--line-strong);box-shadow:none}
.sim .cost-bar-value{font-family:var(--f-num);font-weight:700}
.sim .cost-bar .label-caps{text-transform:none;letter-spacing:0;font-size:var(--t-small);color:var(--text-2)}
.sim .cost-bar .btn-primary{min-width:160px;height:48px}
@media (max-width:640px){.sim .cost-bar .btn-primary{min-width:0}}
.sim-legrow{display:grid;grid-template-columns:minmax(0,2fr) 90px 90px 120px 40px;gap:var(--s2);align-items:end}
@media (max-width:640px){.sim-legrow{grid-template-columns:1fr 1fr}.sim-legrow .pv-field:first-child{grid-column:1/-1}}
.sim-howwrap[hidden]{display:none}
.sim-howwrap .pv-scrim{display:block}.sim-howwrap .pv-sheet{display:flex}
.sim-refresh input{width:auto!important;max-width:180px}.sim-refresh label{margin:0}
#resultat,#sim-andra{scroll-margin-top:72px}
.sim .pv-sh .pv-aside,.hem .pv-sh .pv-aside{white-space:normal;text-align:right;min-width:0}

/* Lägesväxeln (designsystemet 2026-10 avsnitt 7-8, 2026-10-03): Standard /
   Avancerat i toppmenyn på Hem, Bet Tracker, Simulator och Matcher. Free ser
   den låsta raden "Avancerat läge · Pro" som leder till prissidan. */
@media (max-width:480px){.pv-topnav-in{gap:8px}.pv-topnav .pv-right{gap:8px}}
@media (max-width:360px){.pv-topnav .pv-word{display:none}}

/* ===== Ye 2026-10-03 avsnitt 3: tryckytor och sidfot ======================
   Minsta tryckyta 44x44 på mobil för allt som inte är löptextlänkar.
   Elementen blir inte visuellt större: en osynlig träffyta (::after) runt
   texten. Sidfotslänkar får 32 px höjd. */
.pv-hit{position:relative}
.pv-hit::after{content:"";position:absolute;inset:-14px -8px}
.pv-check{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:6px 0;text-align:left;font-weight:400;cursor:pointer}
.pv-check input{flex:none;margin:1px 0 0;width:20px;height:20px;accent-color:var(--accent)}
@media (max-width:900px){
  .pv-topnav .pv-mark,.pv-topnav .credit-pill,.pv-credits,.pv-btn-text,.pv-term,.pv-unit-sw button,
  .chart-expand-btn{position:relative}
  .pv-topnav .pv-mark::after,.pv-topnav .credit-pill::after,.pv-credits::after,.pv-btn-text::after,.pv-term::after,
  .pv-unit-sw button::after,.chart-expand-btn::after{content:"";position:absolute;inset:-14px -16px}
  .pv-aside a,.section-label a,.landing-hero-links a,.bt-filters a,.bt-filters button,.hem-onb a,.pv-hitlinks a,.credit-pill,.max-terminal-topbar-back{position:relative}
  .pv-aside a::after,.section-label a::after,.landing-hero-links a::after,.bt-filters a::after,.bt-filters button::after,
  .hem-onb a::after,.pv-hitlinks a::after,.credit-pill::after,.max-terminal-topbar-back::after{content:"";position:absolute;inset:-14px -10px}
  .pv-btn,.btn{min-height:44px!important;min-width:44px}
  .pv-tabs a,.pv-tabs button{min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center}
  .pv-periods button{min-width:44px;min-height:44px}
  .pv-theme{width:44px;height:44px}
  .pv-btn{height:44px}
  .pv-x-btn{width:44px;height:44px}
  input[type=checkbox],input[type=radio]{width:20px;height:20px;accent-color:var(--accent)}
  label:has(> input[type=checkbox]),label:has(> input[type=radio]){min-height:44px}
  summary{min-height:44px;display:flex;align-items:center}
  input[type=range]{height:44px!important}
}
.pv-foot .pv-foot-links{display:flex;flex-direction:column}
.pv-foot .pv-foot-links>div{display:flex;flex-wrap:wrap}
.pv-foot .pv-foot-links a,.pv-foot .pv-foot-nav a{white-space:nowrap;display:inline-block;padding-block:8px}
.pv-foot .pv-fsep{padding:8px 6px;color:var(--text-dim)}

/* ===== Ye 2026-10-03 avsnitt 1: Simulatorns matchlista =================== */
.sim-fx-list{max-height:none;overflow:visible}
.sim-day{font:600 .8125rem/1.2 var(--f-num);color:var(--text-dim);border-bottom:1px solid var(--line);padding:16px 0 6px}
.sim-fx{min-height:56px}
.sim-fx.sim-sel{background:none}
.sim-fx.sim-sel::before{width:2px;background:var(--accent)}
.sim-more{display:none!important}
.sim-pickday{font:600 .8125rem/1 var(--f-text);color:var(--accent-text);white-space:nowrap}
.sim-showall{width:100%;margin:var(--s3) 0}
.sim-datef{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap;margin:0 0 var(--s4)}
.sim-datef[hidden]{display:none}
.sim-datef input{height:44px;background:var(--input-bg);border:1px solid var(--line-2);border-radius:var(--r);padding:0 10px;color:var(--text)}
.sim-again{margin-top:var(--s7)}
.sim-andra{margin:0;border:0}
.sim-andra>summary{padding:0;font-weight:600;display:inline-flex}
.sim-andra[open]>summary{margin-bottom:var(--s4)}
.sim-other .sim-fx-go{cursor:pointer;font:inherit}
.sim-other .sim-fx-go:hover{background:var(--hover)}
.sim-other .sim-pickmark{color:var(--text-2)}
.sim-fside .pv-sh.pv-first{margin-top:0}
@media (min-width:1100px){
  .sim-fcols{grid-template-columns:minmax(0,1fr) 320px}
  .sim-fside{position:static}
  .sim-fside .cost-bar{margin-top:var(--s4)}
}
@media (max-width:1099px){.sim-fcols{display:block}.sim-fside{position:static}}

/* ===== Ye 2026-10-03 avsnitt 2: Facit ===================================== */
.tr-note{max-width:62ch;margin:var(--s3) 0 0}
.tr-lede{max-width:64ch;margin:var(--s3) 0}
.bt-stmt.tr-stmt .pv-ln{grid-template-columns:64px minmax(0,1fr) auto}
.bt-stmt.tr-stmt .pv-ln .pv-a{display:block}
.tr-stmt .pv-a b{display:block}
.tr-stmt .pv-a > span{display:block}
.pv-a .pv-dec{display:inline}
.tr-stmt .pv-ln .pv-t,.tr-stmt .pv-ln .pv-m{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.tr-more{display:none!important}
.tr-pub{font:600 .8125rem/1 var(--f-text);color:var(--accent-text);white-space:nowrap}
.tr-ckv{margin-top:var(--s3)}
.pv-warn-t{color:var(--warn)}
/* ===== Ye 2026-10-03 avsnitt 4.2: designelement ========================== */
/* 1. Avrivningslinjen: kupongen är ett kvitto. Streckad linje över summan med
   två halvcirkel-hack i kanterna (i sidans bakgrundsfärg). */
.pv-slip-tear{border-top-style:solid}
.pv-slip .pv-slip-row.pv-total{border-top:1px dashed var(--line-2);position:relative;margin-top:6px}
.pv-slip .pv-slip-row.pv-total::before,.pv-slip .pv-slip-row.pv-total::after{content:"";position:absolute;top:-7px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:1px solid var(--line-2)}
.pv-slip .pv-slip-row.pv-total::before{left:-7px;clip-path:inset(0 0 0 50%)}
.pv-slip .pv-slip-row.pv-total::after{right:-7px;clip-path:inset(0 50% 0 0)}
/* 2. Tabulär linje: belopp och odds i rak lodlinje, decimaler något mindre. */
.pv-ln .pv-a{font-feature-settings:"tnum","lnum";min-width:7ch}
.pv-dec{font-size:.85em;color:var(--text-2)}
.pv-good .pv-dec,.pv-bad .pv-dec{color:inherit;opacity:.8}
/* 3. Huvudbokslinjen: två linjevikter ger hierarki. Första sektionen och
   huvudboken 2 px i textfärg, övriga 1 px. */
.pv-sh{border-top-width:1px;border-top-color:var(--line-2)}
.pv-sh.pv-first,.pv-sh.pv-sh-main,.bt-side>.pv-sh:first-child{border-top:2px solid var(--text)}
/* 4. Marginalsiffror: datum i Barlow 600, månadens första rad bär månaden. */
.pv-ln .pv-d{font-family:var(--f-num);font-weight:600;color:var(--text-dim)}
/* 5. Hårfint rutnät bakom hjältetalet (Bet Tracker, Facit). */
.pv-grid-fig,.bt .pv-eq .pv-hero-fig{background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(.25em - 1px),var(--line) calc(.25em - 1px),var(--line) .25em);background-size:100% 1em;background-repeat:no-repeat;background-position:0 .12em;display:inline-block}

/* ===== Hov 2026-10-03: höga odds synligt i svaret ========================= */
.pv-hiodds{border-left:3px solid var(--warn);background:color-mix(in srgb,var(--warn) 10%,transparent);border-radius:0 var(--r-s) var(--r-s) 0;padding:12px 14px;margin:0 0 var(--s4)}
.pv-hiodds.is-avsta{border-left-color:var(--bad);background:color-mix(in srgb,var(--bad) 10%,transparent)}
.pv-hiodds-t{font-weight:700;margin-bottom:4px}
.pv-hiodds p{margin:4px 0 0;font-size:var(--t-small);color:var(--text-2);max-width:72ch}

/* ===== Ye 2026-10-03 avsnitt 3: Konto ===================================== */
.ac section{min-width:0}
.ac-credits{margin-top:var(--s3)}
.ac-num{font:600 var(--n-l, 2rem)/1 var(--f-num);font-variant-numeric:tabular-nums}
.ac-p{margin:4px 0 0}
.ac-more{margin-top:var(--s2)}
.ac-more>summary{display:inline-flex;list-style:none}
.ac-more>summary::-webkit-details-marker{display:none}
.ac-det{border-top:1px solid var(--line-2);margin-top:var(--sh-gap)}
.ac-det>summary{cursor:pointer;font-weight:600;padding:12px 0}
.ac-det .glass-card{border:0;padding:0;background:none;box-shadow:none}
.ac-h3{font-size:var(--t-body);font-weight:600;margin:var(--s5) 0 var(--s2)}
.ac-kv{margin-top:var(--s3)}
.ac-data dd{font:400 var(--t-small)/1.4 var(--f-text);color:var(--text-2);max-width:60%}
.ac .card,.ac .glass-card{box-shadow:none}
.ac p{margin:6px 0}
.ac .pv-sh{margin-top:var(--s5)}
.ac-data>div{padding:6px 0}
.ac .btn-row{gap:8px;flex-wrap:wrap}
.ac .btn{margin:4px 8px 4px 0}
.ac .field{margin-bottom:8px}
.ac form:not(:has(#sms_enabled:checked)) .ac-phone{display:none}
.ac-data dt{font-size:var(--t-small)}
.pv-mon{display:block;font:600 .8125rem/1 var(--f-num);color:var(--text);text-transform:lowercase;margin-bottom:3px}
.tr .pv-drawer{padding-left:76px}

/* ===== Arvid 2026-10-03: hela skärmbredden + tredje spalten "Idag" ======== */
.pv-rail3{display:none;min-width:0}
.pv-rail-row{grid-template-columns:52px minmax(0,1fr) auto}
.pv-rail-row .pv-t,.pv-rail-row .pv-m{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (min-width:1400px){
  :root{--rail-w:clamp(320px,20vw,440px)}
  .bt-cols.pv-cols-3,.sim-cols.pv-cols-3{grid-template-columns:minmax(0,1fr) var(--rail-w) var(--rail-w);grid-template-areas:"top top rail" "list side rail"}
  /* Kundtest 2026-10-23: spellistan fick ~50 px bredvid två spalter. Huvudboken bredvid kurvan, listan i full bredd under. */
  .bt-cols.pv-cols-3{grid-template-areas:"top side rail" "list list rail"}
  .sim-cols.pv-cols-3{grid-template-areas:"top side rail" "list side rail"}
  .pv-cols-3>.pv-rail3{display:block;grid-area:rail;position:sticky;top:calc(56px + var(--s5))}
}
/* Löptext läsbar även när spalten är bred. */
.pv-wrap p,.pv-wrap li,.pv-wrap dd p{max-width:72ch}
.pv-wrap li.list-row:has(> .pv-oh){max-width:none}
.pv-wrap .pv-ln p{max-width:none}
@media (max-width:640px){.sim-formph .pv-sub{display:none}.sim-formph{margin-bottom:var(--s3)}}

/* ===== 2026-10-04 (Ye DESIGN_REVIEW_2026-10-04 avsnitt 1, 7): Simulatorns svar
   en mall (_sim_answer.html). Vänster: hjälte, en graf, Detaljer, andra
   matcher. Höger: kupongen och huvudboken. Mobil: hjälte, kupong, huvudbok,
   graf, Detaljer, andra matcher. Textstorlekar: 13, 15, 20, 47, hjälte. */
.sim-a{display:grid;grid-template-columns:minmax(0,1fr) var(--rail-w);grid-template-areas:"hero side" "graph side" "more side" "other side";column-gap:var(--s7);align-items:start;grid-template-rows:auto auto auto 1fr}
.sim-a>.pv-rail3{display:none}
.sim-a-hero{grid-area:hero;min-width:0;margin:0 0 var(--s5)}
.sim-a-hero .pv-hero-lab{font-size:.8125rem}
.sim-a-hero .pv-hero-fig .pv-unit{margin-left:0}
.sim-a-word{letter-spacing:-.005em}
.sim-a-ctx{margin:0 0 6px;font-size:.9375rem;color:var(--text-2);line-height:1.45}
.sim-a-say{margin:0;font-size:.9375rem;line-height:1.5;max-width:62ch;color:var(--text)}
.sim-a-say b{font-weight:600}
.sim-a-side{grid-area:side;min-width:0;align-self:start}
@media (min-width:901px){.sim-a-side.is-sticky{position:sticky;top:72px}}
.sim-a-side .pv-slip{margin:0 0 var(--s5)}
.sim-a-acts{display:flex;flex-direction:column;align-items:stretch;gap:var(--s2);margin:0 0 var(--s5)}
.sim-a-acts .pv-btn-text{align-self:flex-start}
.sim-a-book dd{font-size:1.25rem}
.sim-a-book dd.pv-dim{color:var(--text-dim)}
.sim-a-note{margin:var(--s3) 0 0;font-size:.8125rem;color:var(--text-dim);line-height:1.5}
.sim-a-skip{margin:var(--s3) 0 0;padding:0;list-style:none;font-size:.8125rem;color:var(--text-2);line-height:1.5}
.sim-a-skip li{padding:6px 0;border-bottom:1px solid var(--line)}
.sim-a-leg{align-items:flex-start}
.sim-a-leg .bt-min0{display:block}
.sim-a-legt{display:block;font-size:.9375rem;color:var(--text)}
.sim-a-legm{display:block;font-size:.8125rem;color:var(--text-dim);white-space:normal}
.sim-a-lego{text-align:right;white-space:nowrap}
.sim-a-lego small{display:block;font:500 .8125rem/1.3 var(--f-text);color:var(--text-2)}
.sim-a-graph{grid-area:graph;min-width:0}
.sim-a-p{margin:6px 0 var(--s3);font-size:.9375rem;line-height:1.55;max-width:66ch;color:var(--text-2)}
.sim-a-p.pv-dim{font-size:.8125rem;color:var(--text-dim)}
.sim-a-h3{font-size:.9375rem;font-weight:600;margin:var(--s5) 0 var(--s2);color:var(--text)}
.sim-a-more{grid-area:more;min-width:0;border-top:1px solid var(--line-2);margin-top:var(--s5)}
.sim-a-more>summary{list-style:none;cursor:pointer;padding:14px 32px 14px 0;font-weight:600;font-size:.9375rem;position:relative;min-height:44px;display:flex;align-items:center}
.sim-a-more>summary::-webkit-details-marker{display:none}
.sim-a-more>summary::after{content:"+";position:absolute;right:2px;top:10px;font:600 1.25rem/1 var(--f-num);color:var(--text-dim)}
.sim-a-more[open]>summary::after{content:"–"}
.sim-a-more .sim-mk-k,.sim-a-more .sim-mk-v{font-size:.9375rem}
.sim-a-more .sim-mk-v small,.sim-a-more .sim-mk-k small{font-size:.8125rem}
.sim-a-anyway{max-width:360px;margin:0 0 var(--s4)}
.sim-a-other{grid-area:other;min-width:0}
.sim-a .sim-range-tk{font-size:.8125rem}
@media (min-width:1700px){
  .sim-a{grid-template-columns:minmax(0,1fr) var(--rail-w) var(--rail-w);grid-template-areas:"hero side rail" "graph side rail" "more side rail" "other side rail"}
  .sim-a>.pv-rail3{display:block;grid-area:rail;position:sticky;top:72px;align-self:start}
}
@media (max-width:1100px){.sim-a{column-gap:var(--s6);grid-template-columns:minmax(0,1fr) 300px}}
@media (max-width:900px){
  .sim-a{grid-template-columns:minmax(0,1fr);grid-template-areas:"hero" "side" "graph" "more" "other";grid-template-rows:auto}
}
.sim-again{margin-top:var(--s5)}

/* ===== 2026-10-04 (Ye avsnitt 2): bara sidan scrollar. Ark och menyer får
   en tunn scrollbar och tar inte med sig sidan. */
html{scrollbar-gutter:stable}
*{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:var(--r-s);border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background-color:var(--text-dim)}
::-webkit-scrollbar-track{background:transparent}
.pv-sheet,.pv-more,.cost-bar-details{overscroll-behavior:contain}
.system-field .sim-choices label{height:auto;min-height:44px;padding:6px 14px}
.system-field .sim-choices label>span{display:flex;flex-direction:column;align-items:center;line-height:1.2}
.sim-sys-meta{font-size:.8125rem;font-weight:400;opacity:.8}
.sim-fields-first{margin-top:var(--s5)}
.sim-pickmark:empty{display:none}
@media (max-width:900px){.sim-a .pv-kv>div{padding:7px 0}.sim-a .pv-slip-row{padding-top:6px;padding-bottom:6px}.sim-a-more{margin-top:var(--s3)}}

/* ===== 2026-10-04 (Ye DESIGN_REVIEW_2026-10-04 avsnitt 3, Meek H1-H16): Hem
   utan kortramar. Hjälterad överst, rutor skiljs med en linje, höjd efter
   innehåll i visningsläget (fasta rader bara i redigeringsläget). */
.hw-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--s5) var(--s7);border-top:2px solid var(--text);padding:var(--s4) 0 var(--s5);margin-bottom:var(--s4)}
.hw-top[hidden]{display:none}
.hw-top section{min-width:0}
.hw-top-lab{font-size:.8125rem;color:var(--text-2)}
.hw-top-t{font-size:1.25rem;font-weight:600;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hw-top-fig{font:700 var(--n-xl,2.75rem)/1 var(--f-num);font-variant-numeric:tabular-nums;margin:6px 0 4px}
.hw-top-fig.pv-dim{color:var(--text-dim)}
.hw-top-ctx{margin:0 0 var(--s3);font-size:.9375rem;color:var(--text-2)}
.hw-top-cr{margin:var(--s2) 0 0;font-size:.8125rem;color:var(--text-dim)}
@media (max-width:599.98px){.hw-top{grid-template-columns:minmax(0,1fr)}}
.hw-page:not(.hw-editing) .hw-grid{grid-auto-rows:auto;row-gap:var(--s4);column-gap:var(--s6)}
.hw-page:not(.hw-editing) .hw{background:none;border:0;border-top:1px solid var(--line-2);border-radius:0;overflow:visible;container-type:inline-size}
.hw-page:not(.hw-editing) .hw[data-size=L]{grid-row:auto}
.hw-page:not(.hw-editing) .hw-body{padding:10px 0 0;height:auto}
.hw-page:not(.hw-editing) .hw-c{overflow:visible}
.hw-page:not(.hw-editing) .hw-chart{flex:none;height:120px}
.hw-page:not(.hw-editing) .hw[data-size=L] .hw-chart{height:220px}
.hw-page:not(.hw-editing) .hw .pv-odds.hw-ol{height:140px}
.hw-page:not(.hw-editing) .hw-live .hw-mlist{overflow:visible}
.hw-h .hw-name{font-size:.9375rem;font-weight:600;color:var(--text)}
p.hw-empty{display:block;margin:0;font-size:.875rem;color:var(--text-2);line-height:1.45;flex:none}
.hw-more{display:block;padding:8px 0;text-decoration:none}
.hw-gal-off{opacity:.55}
/* Redigeringsläget: kontrollerna på en egen rad ovanför innehållet (H6). */
.hw-editing .hw-body{padding-top:104px}
.hw-editing .hw-c{opacity:.4}
.hw-x{font-size:.8125rem!important;padding:0 10px!important}
.hw-ctl-name{left:84px}
.hw-sizes{top:52px;bottom:auto;left:4px;transform:none}
.hw-sizes button{font-size:.8125rem;padding:0 8px!important}
.hw-sizes button:disabled{opacity:.35;cursor:not-allowed}
.hw-editing .hw[data-size=S]{grid-row:span 2}
@media (max-width:599.98px){.hw-top{gap:var(--s4);padding-bottom:var(--s3)}.hw-top-btn{display:none}.hw-top-ctx{margin-bottom:0}.hw-page:not(.hw-editing) .hw-chart{height:90px}.hw-top-fig{font-size:2.25rem}}
.hw-editing .hw{grid-row:span 2}
.mx-follow-b{font-size:1.0625rem!important;line-height:1;text-decoration:none!important;margin-left:4px!important}
.mx-follow-b.mx-on{color:var(--accent-text)}
.mx-sep{color:var(--text-dim)}
.pv-nowrap{white-space:nowrap}
#mx-live:empty{display:none}
.mx-day{border-top:2px solid var(--text);margin-top:var(--s5)}
.mx-day b{font-size:.9375rem}
.hw-top-link{display:block;color:inherit;text-decoration:none;min-width:0}
.hw-top-link:hover .hw-top-t,.hw-top-link:hover .hw-top-more{text-decoration:underline}
.hw-top-more{font-size:.875rem;color:var(--text-2)}
.hw-top:has(> :only-child){grid-template-columns:minmax(0,1fr)}
/* N10: radbryt i stället för att klippa med ellips. */
.hw-page .hw-rmain .hw-meta,.hw-page .hw-t1{white-space:normal;overflow:visible;text-overflow:clip}
.hw-confirm[hidden]{display:none}

/* Månadsbudget (2026-10-06) */
.sim-budget-line{font-family:var(--f-num);font-size:var(--n-m);font-weight:600;margin:0 0 6px;font-variant-numeric:tabular-nums}
.pv-budget-row{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);align-items:baseline}
.hw-budget{grid-template-columns:auto minmax(0,1fr) auto;margin-bottom:var(--s4)}
.hw-budget-ask{margin-bottom:var(--s4);padding:var(--s4)}
.hw-budget-ask .pv-t{font-size:var(--t-body);margin:0 0 6px}
@media (max-width:640px){.hw-budget{grid-template-columns:1fr}}

/* Boostkoll (Ye B1, 2026-10-09): marknadsvalet som lista, inte kapad select */
.bk-choices{display:flex;flex-direction:column;gap:var(--s2);margin-bottom:var(--s4)}
.bk-choices .chip-choice{display:flex;justify-content:space-between;text-align:left;font-weight:500}
.bk-choices .chip-choice > span{display:flex;justify-content:space-between;gap:var(--s3);width:100%;flex-wrap:wrap}

/* ===== Ye 2026-10-13 P1-P6, P10: en rad = ett spel ======================== */
.pv-pl{grid-template-columns:3.4em minmax(0,1fr) auto;column-gap:var(--s3);align-items:baseline}
.bt-stmt.tr-stmt .pv-pl{grid-template-columns:3.4em minmax(0,1fr) auto}
.pv-pl.pv-nolead,.bt-stmt.tr-stmt .pv-pl.pv-nolead{grid-template-columns:minmax(0,1fr) auto}
.pv-pl .pv-d{font:400 var(--t-body)/1.35 var(--f-num);color:var(--text-dim);min-width:3.2em;white-space:nowrap}
.pv-pl .pv-t,.tr-stmt .pv-pl .pv-t{display:block;font:500 var(--t-body)/1.35 var(--f-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}
.pv-pl .pv-m,.tr-stmt .pv-pl .pv-m{display:flex;flex-wrap:nowrap;column-gap:var(--s2);font:400 var(--t-small)/1.4 var(--f-text);color:var(--text-dim);margin-top:2px;white-space:nowrap;overflow:hidden;overflow-wrap:normal}
.pv-pl .pv-m>span{white-space:nowrap}
.pv-pl .pv-m>span+span::before{content:"·";margin-right:var(--s2);color:var(--line-2)}
.pv-pl .pv-m-match{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}
.pv-pl .pv-m-when,.pv-pl .pv-m-book{flex:0 0 auto}
.pv-pl .pv-m-book{color:var(--text-2)}
.pv-pl .pv-a{text-align:right;white-space:nowrap}
.pv-pl .pv-a b,.tr-stmt .pv-pl .pv-a b{display:block;font:600 var(--n-s)/1.2 var(--f-num);font-variant-numeric:tabular-nums}
.pv-pl .pv-a b span,.bt-stmt .pv-pl .pv-a b span{display:inline;font:400 var(--t-small)/1 var(--f-text);color:var(--text-dim)}
.pv-pl .pv-a b.pv-st{font:600 var(--t-small)/1.4 var(--f-text)}
.pv-pl .pv-a .pv-at,.tr-stmt .pv-pl .pv-a > span.pv-at{display:block;font-size:var(--t-small);color:var(--text-dim);font-variant-numeric:tabular-nums}
.tr-month{font:400 var(--t-small)/1.2 var(--f-text);color:var(--text-dim);border-top:1px solid var(--line);padding:var(--s4) 0 var(--s2)}
.tr-month:first-child{border-top:0;padding-top:0}
.tr-cand.pv-ln{border-left-style:dashed}
.pv-pl.pv-closed{opacity:.6}

/* Ye 2026-10-13 P8: landningens kupong */
.landing-kicker,.landing-slip-lab{font:600 var(--t-body)/1.3 var(--f-text);color:var(--text-2);text-transform:none;letter-spacing:0}
.landing-hero-card .landing-slip-t{font:500 var(--n-m)/1.25 var(--f-text);margin-top:var(--s2)}
.landing-hero-card .pv-m{color:var(--text-dim);font-size:var(--t-small);margin:2px 0 var(--s3)}
.landing-hero-card.pv-closed .pv-kv{opacity:.6}
.landing-facit{margin:var(--s4) 0 var(--s2)}

/* Ye P7: Hem-picks som Facit-rader, inte över hela bredden */
.hw-rows .hw-prow{max-width:640px;padding-left:0}
.pv-ln.pv-pl{padding-top:10px;padding-bottom:10px}

/* Arvid 2026-10-17: resultat och odds på EN rad i pick-raden ("+2,65 enh. @ 3,65"),
   inte staplade. Gäller Facit, Hem, Idag-spalten och landningen (_pick_line.html). */
.pv-pl .pv-a,.bt-stmt.tr-stmt .pv-pl .pv-a{display:flex;align-items:baseline;justify-content:flex-end;gap:var(--s2);white-space:nowrap}
.pv-pl .pv-a b,.tr-stmt .pv-pl .pv-a b{display:inline}
.pv-pl .pv-a .pv-at,.tr-stmt .pv-pl .pv-a > span.pv-at{display:inline;white-space:nowrap}
@media (max-width:600px){.pv-pl .pv-t,.tr-stmt .pv-pl .pv-t{white-space:normal;overflow-wrap:anywhere}}
.pv-pl .pv-a b{order:1}.pv-pl .pv-a .pv-at{order:2}
﻿
/* ---------- Betygsätt bet (2026-10-17, Ye DESIGN_BRIEF_2026-10-17_betygsatt.md) ---------- */
.pv-sr,html .pv-sr{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;opacity:0}
.rt-cols{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:48px;align-items:start}
.rt-main{min-width:0}
.rt-side{position:sticky;top:88px;min-width:0}
.rt-side .rt-actbar{position:static;margin-top:0}
.rt-drop{min-height:280px;align-items:center;justify-content:center;text-align:center;border-width:1.5px;transition:border-color .15s}
.rt-drop.is-over{border-style:solid;border-color:var(--accent)}
.rt-drop.is-off{opacity:.55}
.rt-drop p{margin-left:auto;margin-right:auto}
.rt-empty,.rt-loading{display:flex;flex-direction:column;align-items:center;gap:var(--s3);width:100%}
.rt-empty[hidden],.rt-loading[hidden],.rt-chosen[hidden]{display:none}
.rt-cam{color:var(--text-2)}
.rt-pick{min-height:48px;width:280px;max-width:100%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.rt-mob{display:none}
.rt-chosen{display:flex;align-items:center;gap:var(--s3);text-align:left}
.rt-chosen img{height:64px;width:auto;max-width:120px;object-fit:cover;border-radius:var(--r-s);border:1px solid var(--line-2)}
.rt-bar{height:2px;width:100%;max-width:280px;background:var(--line-2);position:relative;overflow:hidden}
.rt-bar::after{content:"";position:absolute;inset:0 auto 0 0;width:35%;background:var(--accent);animation:rt-run 1.1s ease-in-out infinite}
@keyframes rt-run{0%{transform:translateX(-100%)}100%{transform:translateX(300%)}}
@media (prefers-reduced-motion:reduce){.rt-bar::after{animation:none;width:100%}}
.rt-note{margin:var(--s3) 0}
.rt-why{margin:var(--s2) 0 0;color:var(--text-2)}
.rt-or{display:flex;flex-direction:column}
.rt-ln{width:100%;min-height:52px;background:none;border-left:0;border-right:0;border-top:0;text-align:left;justify-content:space-between;color:inherit;text-decoration:none;cursor:pointer;font:inherit}
.rt-how{margin-top:var(--s6)}
.rt-howln .pv-d{width:2ch}
.rt-legs{max-width:720px}
.rt .rt-leg,.rt .rt-ln,.rt .rt-howln{display:flex;align-items:center;justify-content:space-between}
.rt-leg{min-height:64px;gap:var(--s3);padding-right:0}
.rt .rt-ln .pv-t,.rt .rt-leg .pv-t{white-space:normal}
.rt-howln{justify-content:flex-start!important;gap:var(--s3)}
.rt .sim-a-word{font-size:clamp(2.75rem,7vw,4.5rem);line-height:1.05;margin-top:var(--s2)}
.rt-leg-open{flex:1;display:flex;flex-direction:column;color:inherit;text-decoration:none;min-height:44px;justify-content:center;min-width:0}
.rt-leg-open .pv-t{font-weight:600}
.rt-leg-open .pv-m{color:var(--text-2);font-size:var(--t-small)}
.rt-ob input{width:76px;height:44px;text-align:center;font-variant-numeric:tabular-nums;font-weight:700;border:1px solid var(--line-2);border-radius:var(--r-s);background:var(--bg);color:var(--text)}
.rt-add{margin-top:var(--s2)}
.rt-specs{border:0;padding:0;margin:0}
.rt-specs legend{font-weight:600;margin-bottom:var(--s2)}
.rt-side .pv-kv input,.rt-side .pv-kv select{width:100%;max-width:160px;height:40px}
.rt-wait{display:flex;flex-direction:column;gap:var(--s3);width:100%}
.rt-search{margin-bottom:var(--s2)}
@media (max-width:900px){
  .rt-cols{grid-template-columns:minmax(0,1fr);gap:var(--s4)}
  .rt-side{position:static}
  .rt-side .rt-actbar{position:fixed}
  .rt{padding-bottom:96px}
  .rt-drop{min-height:240px}
  .rt-mob{display:inline-flex}.rt-desk{display:none}
  .rt-pick{width:100%}
  .rt-how,.rt-howln{display:none!important}
}



/* Arvid 2026-10-17: låsta picks för Free. Platshållaren är fast text, aldrig data. */
.pv-blur{filter:blur(5px);user-select:none;pointer-events:none;color:var(--text-dim)}
.pv-locked{text-decoration:none;color:inherit}
.pv-locked .pv-unlock{display:block;font-size:.8125rem;color:var(--brand);font-weight:600;white-space:nowrap}
.pv-insats-lock{color:var(--brand)}
.mx-follow-league .mx-follow-b{font-size:.8125rem!important;line-height:1.4;min-height:24px}

/* Landning: startad pick (Meek 2026-10-18) */
.landing-started { margin: 0; font-size: var(--fs-body, 1rem); line-height: 1.45; }
.landing-started-facit { margin-top: 8px; }

/* Matcher: lagnamn radbryts i stället för att kapas, stjärnan tar mindre plats (Meek 2026-10-18).
   Träffytan ligger kvar i ::after och är minst 44x44 px. */
.mx-tm{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;hyphens:auto}
.mx-follow-b::after{inset:auto;left:50%;top:50%;width:44px;height:44px;transform:translate(-50%,-50%)}
@media (max-width:640px){
  .mx-follow-b{font-size:.875rem!important;margin-left:2px!important}
  .mx-row{grid-template-columns:44px minmax(0,1fr) auto;column-gap:10px}
}

/* Mer-menyn v2 (Ye 2026-10-18, DESIGN_BRIEF_2026-10-18_meny.md). Ersätter
   de gamla sidofältsgrupperna i panelen: inga guldblock, inga indrag, inga
   gråa "inaktiva" rader. Tät glasyta så bakgrunden inte lyser igenom. */
.pv-more{gap:0;background:var(--glass-solid);padding:var(--s2) var(--s4) var(--s4)}
@media (min-width:901px){.pv-more{width:320px;padding:var(--s3) var(--s4) var(--s4)}}
@media (max-width:900px){.pv-more{max-height:80vh;overscroll-behavior:contain}}
.pv-more-grab{display:none}
@media (max-width:900px){.pv-more-grab{display:block;width:36px;height:4px;border-radius:2px;background:var(--line-strong);margin:0 auto var(--s2)}}
.pv-more-h{align-items:flex-start;padding:var(--s1) 0 var(--s3)}
.pv-more-h h2{font-size:var(--t-h1);line-height:1.2}
.pv-more-user{padding:2px 0 0}
.pv-more-x{border:0;width:44px;height:44px;margin:-8px -10px 0 0;color:var(--text-2)}
.pv-more-x:hover{background:var(--hover)}
.pv-mm-group{margin:0 0 var(--s4)}
.pv-mm-label{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--t-small);font-weight:600;color:var(--text-dim);padding:0 0 var(--s1);list-style:none}
.pv-mm-label::-webkit-details-marker{display:none}
details.pv-mm-group>summary{cursor:pointer;min-height:44px;align-items:center;padding:0;border-bottom:1px solid var(--line)}
details.pv-mm-group>summary::after{content:"";width:8px;height:8px;border-right:1.5px solid var(--text-dim);border-bottom:1.5px solid var(--text-dim);transform:rotate(45deg);margin:0 4px 4px auto}
details.pv-mm-group[open]>summary::after{transform:rotate(225deg);margin-bottom:-2px}
details.pv-mm-group>summary .pv-mm-meta{margin-left:var(--s2)}
.pv-more a.pv-mm-row{padding:0 2px;font-size:var(--t-body);font-weight:500}
.pv-more a.pv-mm-row.active{box-shadow:none;padding-left:2px;color:var(--accent-text)}
.pv-more a.pv-mm-lock{justify-content:space-between;gap:var(--s3);color:var(--text);padding:var(--s2) 2px;line-height:1.35}
.pv-mm-meta{font-size:var(--t-small);font-weight:500;color:var(--text-dim);white-space:nowrap}
.pv-mm-lock .pv-mm-meta{color:var(--accent-text)}
.pv-more-sub{margin-top:0;padding-top:var(--s1);border-top:0}
.pv-more-sub a:last-child{border-bottom:0}
/* Boosie 2026-10-18: varje spel på samma match är en egen grupp (spel, retur,
   Logga-knapp) med avdelare, så knappen hör synligt till spelet ovanför och
   aldrig läses som rubrik för nästa spel. Knappen radbryts, ingen positionering. */
.sim-slip-bet{border-bottom:1px solid var(--line-2);padding-bottom:var(--s2)}
.sim-slip-bet + .sim-slip-bet{padding-top:var(--s2)}
.sim-slip-bet .pv-slip-foot{padding-top:var(--s2);padding-bottom:var(--s3)}
.sim-slip .sim-logform .pv-btn{white-space:normal;height:auto;min-height:44px;line-height:1.3;position:static}
/* Boosie 2026-10-18, Ye DESIGN_BRIEF_2026-10-18_eget_odds.md: Ange ditt odds. */
/* Ange ditt odds (Boosie 2026-10-19, Ye DESIGN_BRIEF_2026-10-19_egna_spel.md) */
.oo .pv-ph{max-width:760px}
.oo-step{margin-bottom:var(--s5)}
.oo-fxlist{display:flex;flex-direction:column}
.oo-fx,.oo-cat,.oo-player,.oo-collapsed,.oo-book{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--s3);align-items:center;min-height:44px;padding:10px 0;border-bottom:1px solid var(--line);color:var(--text);text-decoration:none}
.oo-cat{grid-template-columns:minmax(0,1fr) auto auto}
.oo-player,.oo-collapsed{grid-template-columns:minmax(0,1fr) auto}
.oo-collapsed{max-width:760px}
.oo-fx .pv-t,.oo-collapsed .pv-t,.oo-player .pv-t{display:block;font-weight:600;overflow-wrap:break-word}
.oo-fx .pv-m,.oo-collapsed .pv-m,.oo-player .pv-m{display:block;font-size:var(--t-small);color:var(--text-dim)}
.oo-chev{font-size:16px;color:var(--text-dim)}
.oo-cat .pv-t{overflow-wrap:break-word}
.oo-cat.is-active .pv-t{font-weight:700}
.oo-cat.is-active{box-shadow:inset 2px 0 0 var(--accent);padding-left:var(--s3)}
.oo-count{font-size:var(--t-small);white-space:nowrap}
.oo-cath{margin-top:var(--s4)}
.oo-cath h2{font-size:var(--fs-label)}
.oo-tag{font-size:var(--fs-label);color:var(--text-dim);font-weight:500}
.oo-boostnote{margin-top:var(--s3)}
.oo-search{max-width:420px;margin-bottom:var(--s3)}
.oo-search input{min-height:44px}
.oo-fetched{margin:var(--s2) 0 var(--s3)}
.oo-more>summary{list-style:none;cursor:pointer;min-height:44px;display:inline-flex;align-items:center}
.oo-more>summary::-webkit-details-marker{display:none}
.oo-more[open]>summary{display:none}
.oo-table{margin-bottom:var(--s4)}
.oo-th{margin-top:0}
.oo-thead{margin:0 0 var(--s2)}
.oo-grid{display:grid;grid-template-columns:1fr 1fr 1fr;border-top:1px solid var(--line)}
.oo-grid-yes{grid-template-columns:1fr 1fr}
.oo-gh,.oo-gr{display:contents}
.oo-gh span{font-size:var(--fs-label);color:var(--text-dim);padding:8px 0;border-bottom:1px solid var(--line)}
.oo-gl{display:flex;align-items:center;min-height:44px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;font-weight:600;overflow-wrap:anywhere;padding-right:var(--s2)}
.oo-cell{display:flex;flex-wrap:wrap;align-items:center;gap:2px var(--s2);min-height:44px;padding:6px var(--s2);border-bottom:1px solid var(--line);color:var(--text);text-decoration:none;font-variant-numeric:tabular-nums}
.pv-page a.oo-cell,.pv-page a.oo-fx,.pv-page a.oo-cat,.pv-page a.oo-player{text-decoration:none}
a.oo-cell:hover,a.oo-cell:focus-visible{background:var(--raised)}
.oo-cell.is-active{background:var(--raised);box-shadow:inset 2px 0 0 var(--accent)}
.oo-cell-empty{color:var(--text-dim)}
.oo-cells{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));border-top:1px solid var(--line)}
.oo-cl{flex-basis:100%;font-size:var(--t-small);color:var(--text-2);overflow-wrap:break-word}
.oo-weak{margin-left:var(--s2)}
.oo-hero .oo-weak{margin-left:0}
.oo-books{display:flex;flex-direction:column;max-width:520px}
.oo-bookform{margin:0}
.oo-book{width:100%;grid-template-columns:minmax(0,1fr) auto;background:none;border-left:0;border-right:0;border-top:0;font:inherit;text-align:left;cursor:pointer}
.oo-book:hover .pv-t{text-decoration:underline;text-decoration-color:var(--line-2)}
.oo-book.is-active{box-shadow:inset 2px 0 0 var(--accent);padding-left:var(--s3)}
.oo-bookodds{font-weight:600}
.oo-own>summary{min-height:44px;display:inline-flex;align-items:center;cursor:pointer}
.oo-inline{display:flex;flex-wrap:wrap;gap:var(--s3);align-items:flex-end;padding:var(--s2) 0 var(--s3)}
.oo-inline .oo-odds{margin:0;flex:0 1 160px}
.oo-inline input{min-height:44px;font-variant-numeric:tabular-nums}
.oo-inline .pv-btn{min-height:44px}
.oo-inline .oo-err{flex-basis:100%;margin:0}
.oo-img summary{min-height:44px;display:inline-flex;align-items:center;cursor:pointer}
.oo-hero{margin:var(--s4) 0}
.oo-hero .sim-a-word{font-size:clamp(2.75rem,7vw,4rem);line-height:1.05}
.oo-hero-acts{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4)}
.oo-catlist.is-chosen{display:none}
@media (max-width:640px){.oo-inline{flex-direction:column;align-items:stretch}.oo-inline .oo-odds{flex:none}}
@media (min-width:1100px){
  .oo-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:var(--s6);align-items:start}
  .oo-cats{position:sticky;top:var(--s4)}
  .oo-cat-collapsed{display:none}
  .oo-catlist.is-chosen{display:block}
  .oo-main{min-width:0;max-width:720px}
  .oo-side{grid-column:2;max-width:720px}
  .oo-pickhint{margin-top:var(--s4)}
}
@media (min-width:1400px){
  .oo-layout{grid-template-columns:260px minmax(0,1fr) minmax(320px,420px)}
  .oo-side{grid-column:3;grid-row:1;position:sticky;top:var(--s4)}
  .oo-hero{margin-top:0}
}
/* Ingången i Simulatorn: länkrad utan kryssrutekolumn. */
.market-link-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s3);align-items:center;min-height:44px;padding:12px 0;border-bottom:1px solid var(--line);color:var(--text);text-decoration:none}
.market-link-row .mlr-t{display:block;font-size:var(--fs-body);font-weight:600}
.market-link-row .mlr-m{display:block;font-size:var(--fs-small);color:var(--text-dim)}
.market-link-row .mlr-chev{font-size:16px;color:var(--text-dim)}
.pv-page a.market-link-row{text-decoration:none}
.market-link-row .mlr-m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.market-link-row:hover .mlr-t{text-decoration:underline;text-decoration-color:var(--line-2)}

/* 2026-10-19 (Arvid): alla svensklicensierade bolags pris för spelet, bästa
   först. Kompakt rad som radbryts, aldrig horisontell scroll. */
.pv-prices{display:flex;flex-wrap:wrap;gap:2px 10px;margin-top:2px;font-size:.8125rem;line-height:1.35;color:var(--text-2);font-variant-numeric:tabular-nums;min-width:0}
.pv-price{white-space:nowrap}
.pv-price-best{color:var(--text)}
.sim-a-prices{align-items:flex-start;gap:12px}
.sim-a-prices .pv-prices{justify-content:flex-end;margin-top:0}

.sim-own-entry{margin:var(--s2) 0 var(--s3)}

.oo-wrap .pv-m{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.oo-onlyover{margin:var(--s2) 0 0}

/* Detaljer: positiv prisfördel fetstil (Boosie 2026-10-20) */
.sim-mk-v.sim-mk-pos{font-weight:700}
.sim-mk-log{display:block;font-weight:400;color:var(--text-dim);text-align:right}

.sim-mk-group{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);margin:14px 0 4px}
/* Ange ditt odds 2026-10-23 (Ye): chips + rader som fälls ut */
.oo-fxform{margin:0}
button.oo-fx{width:100%;background:none;border:0;border-bottom:1px solid var(--line);font:inherit;text-align:left;cursor:pointer}
button.oo-fx:disabled{cursor:not-allowed;opacity:.6}
.oo-cost{white-space:nowrap;text-align:right}
.oo-match{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:var(--s3)}
.oo-matchname{font-size:1.25rem;margin:0;overflow-wrap:break-word}
.oo-chips{display:flex;gap:var(--s2);overflow-x:auto;padding:var(--s2) 0;margin-bottom:var(--s3);background:var(--bg)}
.oo-chips .chip{white-space:nowrap;min-height:44px;display:inline-flex;align-items:center;text-decoration:none}
.oo-chips .chip.is-active{font-weight:700;box-shadow:inset 0 -2px 0 var(--accent)}
@media (max-width:640px){.oo-chips{position:sticky;top:var(--topbar-h,56px);z-index:5}}
.oo-row{border-bottom:1px solid var(--line)}
.oo-rowhead{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s3);align-items:center;min-height:44px;padding:10px 0;color:var(--text);text-decoration:none!important}
.oo-rowhead .pv-t,.oo-rowhead .pv-m{display:block;overflow-wrap:break-word}
.oo-rowhead .pv-m{font-size:var(--t-small);color:var(--text-dim)}
.oo-best{text-align:right;white-space:nowrap}
.oo-best .pv-n{display:block;font-weight:600;font-variant-numeric:tabular-nums}
.oo-best .pv-m{display:block}
.oo-row.is-open{background:var(--raised)}
.oo-row.is-open .oo-rowhead{padding-left:var(--s3);padding-right:var(--s3)}
.oo-rowbody{padding:var(--s3)}
.oo-rowin>*+*{margin-top:var(--s4)}
.oo-bookform{margin:0}
button.oo-book{width:100%;background:none;border:0;border-bottom:1px solid var(--line);font:inherit;text-align:left;cursor:pointer;grid-template-columns:minmax(0,1fr) auto}
button.oo-book.is-active{box-shadow:inset 2px 0 0 var(--accent);padding-left:var(--s2)}
.oo-bookodds{font-weight:600;font-variant-numeric:tabular-nums}
.oo-inline{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--s3)}
.oo-inline .oo-odds{max-width:160px;margin:0}
.oo-inline .oo-err{flex-basis:100%}
.oo-rowans{margin-top:var(--s4)}
.oo-rowans .pv-hero{margin:0}
@media (min-width:1100px){.oo-row.is-open .oo-rowbody:not([hidden]){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--s5);align-items:start}.oo-rowans{margin-top:0}}
details.oo-player{display:block;padding:0}
details.oo-player>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;min-height:44px;padding:10px 0}
details.oo-player>summary::-webkit-details-marker{display:none}
details.oo-player[open] .oo-chev{transform:rotate(90deg)}
.oo-playerbody{padding:0 0 var(--s3) var(--s3)}
.oo-inline{justify-content:flex-start}.oo-inline>.oo-odds{flex:0 1 160px;margin-left:0!important}

/* Kundtest 2026-10-23: prisfördelen neutral, normal storlek */
.oo-hero .oo-fig{font-size:var(--t-body,1rem);font-weight:600;color:var(--text)}

/* 2026-10-24 (Boosie): "Odds hämtade HH:MM" på picks i lineup-flödet, indragna picks. */
.pv-valid{display:block;margin-top:2px;font-size:.8125rem;line-height:1.35;color:var(--text-2);font-variant-numeric:tabular-nums;min-width:0;overflow-wrap:anywhere}
.pv-withdrawn .pv-t{text-decoration:line-through;color:var(--text-2)}
.pv-withdrawn-list{margin-top:6px}

/* Oddsrörelse (Ye DESIGN_BRIEF_2026-10-26), Pro. */
.pv-oh{margin:4px 0 10px}
.pv-oh-sum{min-height:44px;display:flex;align-items:center;cursor:pointer;color:var(--brand);font-size:.875rem;list-style:none}
.pv-oh-sum::-webkit-details-marker{display:none}
.pv-oh-sum::after{content:" \25BE";margin-left:4px}
.pv-oh[open]>.pv-oh-sum::after{content:" \25B4"}
.pv-oh-body{max-width:840px;display:grid;column-gap:var(--sp-6,24px);row-gap:4px;grid-template-columns:minmax(0,1fr);grid-template-areas:"fig" "ctx" "facts" "chart" "gap" "books" "foot"}
@media (min-width:900px){.pv-oh-body:has(.pv-oh-books){grid-template-columns:minmax(0,1fr) 220px;grid-template-areas:"fig fig" "ctx ctx" "facts facts" "chart books" "gap gap" "foot foot"}}
.pv-oh-main,.pv-oh-host{display:contents}
.pv-oh-fig{grid-area:fig;font-family:var(--f-num);font-size:2rem;font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums}
.pv-oh-ctx{grid-area:ctx}.pv-oh-facts{grid-area:facts}.pv-oh-gap{grid-area:gap}.pv-oh-foot{grid-area:foot;margin:8px 0 0}
.pv-oh-note{grid-column:1/-1;margin:0}
.pv-oh-books{grid-area:books;align-self:start}
.pv-oh-ctx,.pv-oh-facts,.pv-oh-gap,.pv-oh-foot,.pv-oh-note{font-size:.8125rem;color:var(--text-dim)}
.pv-oh-chart{grid-area:chart;height:160px;margin-top:8px;outline-offset:2px;min-width:0}
@media (min-width:900px){.pv-oh-chart{height:220px}}
.pv-oh-line{fill:none;stroke:var(--text);stroke-width:2;stroke-linejoin:round}
.pv-oh-pub{fill:var(--text-dim)}
.pv-oh-sl{stroke:var(--line-2);stroke-width:1}
.pv-oh-dot{fill:var(--text-dim)}.pv-oh-dot.pv-up{fill:var(--good-fg)}
.pv-oh-x{font-size:13px;fill:var(--text-dim);font-variant-numeric:tabular-nums}
.list-row:has(> .pv-oh){flex-wrap:wrap}.list-row > .pv-oh{flex:1 0 100%;grid-column:1/-1;width:100%;margin:0}
.pv-oh-body{width:100%}
.pv-oh-books{font-size:.8125rem}
.pv-oh-bh{color:var(--text-dim);margin-bottom:4px}
.pv-oh-brow{display:flex;justify-content:space-between;min-height:28px;align-items:center}
.pv-oh-fake{width:100%;height:80px;color:var(--text-dim)}
.pv-oh .pv-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:480px){
  .bt-g{grid-template-columns:repeat(3,minmax(0,1fr))}
  .bt-g-k{grid-column:1/-1;margin-bottom:4px}
  .bt-g-head span:first-child{display:none}
}

/* ===== Mobilbrief 2026-11-01 (Ye) ===== */
/* P2 toppmenyn utloggad */
.pv-foot-theme{display:none}
@media (max-width:640px){
  .pv-topnav .pv-right{gap:var(--s3)}
  body:not(.pv-authed) .pv-topnav .pv-right .pv-btn{min-height:36px;height:36px;padding:0 14px;font-size:.875rem;position:relative}
  body:not(.pv-authed) .pv-topnav .pv-right .pv-btn::after{content:"";position:absolute;left:0;right:0;top:-4px;bottom:-4px}
  body:not(.pv-authed) .pv-topnav .pv-theme{display:none}
  .pv-foot-theme{display:inline-block;margin-top:var(--s2);min-height:44px;background:none;border:0;padding:8px 0;color:var(--text-2);font:inherit;font-size:.8125rem;text-decoration:underline;text-decoration-color:var(--line-2);cursor:pointer}
}
/* P3 landningens hjälte */
@media (max-width:640px){
  .landing-hero .lead .pv-hide-m{display:none}
  .landing-hero-links{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s2)}
  .landing-hero-links .hl-sep{display:none}
  .landing-hero h1{line-height:1.1;margin-bottom:var(--s3)}
}
/* P4 kupongen: en inre kant */
@media (max-width:640px){
  .landing-hero-card{padding:var(--s4)}
  .landing-hero-card>.pv-slip-h{padding:0 0 var(--s2)}
  .landing-hero-card>.pv-slip-tear{margin:var(--s3) calc(-1*var(--s4))}
  .landing-hero-card .pv-kv>div{margin:0 calc(-1*var(--s4));padding-left:var(--s4);padding-right:var(--s4)}
  .landing-hero-card .pv-btn{width:100%;margin-top:var(--s2)}
  .landing-started.pv-note{font-size:.8125rem;line-height:1.4;color:var(--text-dim);font-weight:400;margin-top:var(--s3)}
}
/* P6 en stegsektion, "Hur det fungerar" bakom details */
.landing-how>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:var(--s2)}
.landing-how>summary::-webkit-details-marker{display:none}
.landing-how>summary::after{content:"+";color:var(--text-dim);font-size:1.25rem;margin-top:var(--s4)}
.landing-how[open]>summary::after{content:"−"}
.landing-steps .list-row{align-items:flex-start}
.landing-steps .list-row-num{margin-top:2px;align-self:flex-start}
@media (max-width:640px){
  .landing-steps.glass-card{border:0;padding:0;background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
}
/* P5 väntelistekortet */
.landing-waitlist>.pv-sh{border-top:0;padding-top:0;margin-top:0}
.landing-waitlist>.pv-sh h2{margin:0 0 var(--s2)}
@media (max-width:640px){
  .landing-waitlist .inline-form{flex-direction:column;align-items:stretch}
  .landing-waitlist .inline-form input{min-width:0}
  .landing-waitlist .inline-form .btn{width:100%}
}
/* P7 statremsan */
@media (max-width:640px){
  .landing-facit{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s2) var(--s3)}
  .landing-facit>.pv-sep{display:none}
  .landing-facit>span>.pv-n{display:block}
  .landing-facit .lf-link{grid-column:1/-1;text-align:right}
  .landing-facit .lf-dot{display:none}
}
/* P8 planrader: priset på plannamnets rad */
@media (max-width:640px){
  .landing-plans .list-row{display:grid;grid-template-columns:1fr auto;align-items:baseline;column-gap:var(--s3)}
  .landing-plans .list-row-main{display:contents}
  .landing-plans .list-row-title{grid-column:1;grid-row:1}
  .landing-plans .list-row-value{grid-column:2;grid-row:1}
  .landing-plans .list-row-meta{grid-column:1/-1;grid-row:2}
  .plan-card{display:grid;grid-template-columns:1fr auto;align-items:baseline;column-gap:var(--s3)}
  .plan-card>*{grid-column:1/-1}
  .plan-card>.label-caps{grid-column:1;grid-row:1}
  .plan-card>.plan-price{grid-column:2;grid-row:1;margin:0}
}
/* P9 matchnamn klipps inte (facit, Hem, Idag) + marknadsraden i Simulatorn */
@media (max-width:640px){
  .pv-pl .pv-m,.tr-stmt .pv-pl .pv-m{flex-wrap:wrap;white-space:normal;overflow:visible}
  .pv-pl .pv-m-match,.pv-pl .pv-m>span.pv-m-match{white-space:normal;overflow:visible;text-overflow:clip;flex:1 1 100%}
  .pv-pl .pv-m>span.pv-m-match+span::before{content:none;margin:0}
  .market-link-row .mlr-m{white-space:normal;overflow:visible;text-overflow:clip}
}

/* P10: kontosektioner som fälls ihop, budgetfrågan på mobil */
details.ac-fold{border-top:1px solid var(--line,var(--card-border));margin-top:var(--sp-5,24px)}
details.ac-fold>summary.pv-sh{cursor:pointer;list-style:none;border:0;min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:8px}
details.ac-fold>summary.pv-sh::-webkit-details-marker{display:none}
details.ac-fold>summary.pv-sh::after{content:"Visa";font-size:.875rem;color:var(--text-dim)}
details.ac-fold[open]>summary.pv-sh::after{content:"Dölj"}
@media (max-width:640px){
  .pv-budget-row{flex-direction:column;align-items:stretch}
  .pv-budget-row input,.pv-budget-row .pv-btn,.pv-budget-row button{max-width:none!important;width:100%}
}

/* 11: helskärm i installerad iPhone-app (viewport-fit=cover) - säkra ytor */
.pv-topnav{padding-top:env(safe-area-inset-top,0px)}
.pv-topnav-in,.pv-wrap,.pv-foot{padding-left:max(var(--gutter),env(safe-area-inset-left,0px));padding-right:max(var(--gutter),env(safe-area-inset-right,0px))}

/* 12: flikraden som flytande glas-pill (iOS 26) på mobil. --tabbar-h = pillens
   höjd + avstånd, så allt som lägger sig ovanför flikraden hamnar ovanför pillen. */
@media (max-width:900px){
  :root,html.pwa-standalone{--tabbar-h:80px}
  html .pv-tabbar{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));height:56px;padding:4px;gap:2px;border-radius:999px;
    background:var(--bg-2);border:1px solid rgba(255,255,255,.14);border-top:1px solid rgba(255,255,255,.14);
    box-shadow:0 10px 30px -8px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.08)}
  @supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
    html .pv-tabbar{background:color-mix(in srgb,var(--bg-2) 62%,transparent);-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%)}
  }
  html[data-theme=light] .pv-tabbar{border-color:rgba(0,0,0,.08);box-shadow:0 10px 30px -10px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.7)}
  .pv-tabbar a,.pv-tabbar button{border:0!important;margin:0;border-radius:999px;min-height:44px}
  .pv-tabbar a.pv-on,.pv-tabbar button.pv-on,.pv-tabbar button[aria-expanded=true]{background:rgba(255,255,255,.12)}
  html[data-theme=light] .pv-tabbar a.pv-on,html[data-theme=light] .pv-tabbar button.pv-on,html[data-theme=light] .pv-tabbar button[aria-expanded=true]{background:rgba(0,0,0,.07)}
  .pv-foot{margin-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}
  html.pv-public .pv-foot{margin-bottom:0}
}
