:root {
    --bg:        #ffffff;
    --bg-elev:   #ffffff;
    --bg-card:   #ffffff;
    --line:      #d8e2f0;
    --line-soft: #e8eef7;
    --ink:       #1a1a17;
    --ink-dim:   #5a5a55;
    --ink-mute:  #8e8e85;
    --amber:     #b8731f;
    --amber-dim: #8a5715;
    --cyan:      #14797f;
    --green:     #2d7a3a;
    --red:       #b83a2e;
    --violet:    #6b4ba0;
    --display:   'Inter', system-ui, sans-serif;
    --mono:      'Inter', system-ui, sans-serif;
    --body:      'Inter', system-ui, sans-serif;
  }

  *, *::before, *::after { box-sizing: border-box; }

  html { scroll-behavior: smooth; }

  body {
    margin: 0;
    background: var(--bg);
    color: var(--ink);
    font-family: var(--body);
    font-size: 14.5px;
    font-weight: 500;
    line-height: 1.6;
    min-height: 100vh;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }

  /* ─── PetApp-style responsive phone frame ───────────────────────────
     On real phones (≤ 700px) the app fills the viewport as a normal
     mobile web app (no frame). On desktop it renders inside an iPhone
     mockup on a dark stage. */
  .app-shell { }
  @media (min-width: 701px) {
    html { background: #0e0f13; }
    body {
      background: radial-gradient(1100px 700px at 50% -5%, #1b2233 0%, #0e0f13 55%) !important;
      background-attachment: fixed;
      min-height: 100vh;
      margin: 0;
      display: flex;
      justify-content: center;
      align-items: flex-start;
      padding: 34px 16px 60px;
    }
    .app-shell {
      position: relative;
      width: 402px;
      height: calc(100vh - 94px);
      max-height: 872px;
      min-height: 620px;
      background: #1c1c1e;
      border-radius: 56px;
      padding: 13px;
      box-shadow: 0 0 0 2px #3a3a3c, 0 0 0 12px #0a0a0c,
                  0 34px 80px rgba(0,0,0,0.55);
      flex: 0 0 auto;
    }
    /* side buttons */
    .app-shell::before {
      content: ""; position: absolute; left: -3px; top: 172px;
      width: 3px; height: 60px; background: #2a2a2c; border-radius: 3px;
      box-shadow: 0 -76px 0 #2a2a2c, 0 -136px 0 0 #2a2a2c;
    }
    .app-shell::after {
      content: ""; position: absolute; right: -3px; top: 196px;
      width: 3px; height: 92px; background: #2a2a2c; border-radius: 3px;
    }
    .app-screen {
      position: relative; width: 100%; height: 100%;
      border-radius: 44px; overflow: hidden; background: var(--bg);
    }
    /* the scrollable app viewport */
    .app-scroll {
      position: absolute; inset: 0; overflow-y: auto;
      -webkit-overflow-scrolling: touch;
      border-bottom-left-radius: 44px; border-bottom-right-radius: 44px;
    }
    .app-scroll::-webkit-scrollbar { width: 0; display: none; }
    /* simulated status bar + island + home indicator (desktop only) */
    .sim-island {
      position: absolute; top: 11px; left: 50%; transform: translateX(-50%);
      width: 120px; height: 33px; background: #000; border-radius: 20px; z-index: 900;
    }
    .sim-status {
      position: absolute; top: 0; left: 0; right: 0; height: 46px; z-index: 850;
      display: flex; align-items: center; justify-content: space-between;
      padding: 15px 30px 0; font-size: .82rem; font-weight: 700; color: var(--ink);
      pointer-events: none; background: #ffffff;
    }
    .sim-status .sim-icons { display: flex; align-items: center; gap: 6px; }
    .sim-home { display: none; }
    /* sticky header sits at the very top; its own top padding clears the status bar */
    .app-scroll .header-bar { border-radius: 0; top: 0; padding-top: 46px; }
    /* Keep modal/popup overlays inside the phone frame (not the whole browser window) */
    .news-sources-overlay, .news-reader-overlay, .summary-modal-overlay, .fcp-overlay, .auth-modal {
      position: absolute !important; inset: 0 !important;
      border-radius: 44px; overflow: hidden; padding: 24px 18px !important;
    }
    /* Aloka settings sheet: fill the INNER screen (inset ~13px from the outer shell frame). */
    .sheet-modal {
      position: absolute !important; inset: 13px !important;
      border-radius: 40px; overflow: hidden; padding: 0 !important;
    }
    .sheet-card { max-height: 88% !important; border-bottom-left-radius: 36px; border-bottom-right-radius: 36px; }
    .news-sources-box, .summary-modal { max-height: 78% !important; }
    .news-reader { max-height: 88% !important; }
    .fcp-box { max-height: 80% !important; }
    .auth-modal { align-items: center !important; padding: 18px !important; }
    .auth-modal-card { border-radius: 20px !important; max-height: 84% !important; }
  }
  /* On mobile, the sim chrome is hidden (real device provides it) */
  @media (max-width: 700px) {
    .sim-island, .sim-status, .sim-home { display: none; }
    /* Fill the real viewport so the Levels chart can size to the screen (no page scroll). */
    html, body { height: 100%; overflow: hidden; }
    .app-shell { height: 100dvh; }
    .app-screen { height: 100dvh; position: relative; overflow: hidden; }
    .app-scroll {
      position: absolute; top: 0; left: 0; right: 0;
      bottom: calc(56px + env(safe-area-inset-bottom)); /* clear the fixed tab bar */
      overflow-y: auto; -webkit-overflow-scrolling: touch;
    }
    body { padding-bottom: 0; }
  }

  header.top,
  section.block,
  footer {
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
  }

  /* ── header ────────────────────────────────────────────────── */
  .header-bar {
    background: #ffffff;
    border-bottom: 1px solid #d8e2f0;
    margin-bottom: 0;
    position: sticky;
    top: 0;
    z-index: 800;
  }
  @media (max-width: 700px) {
    .header-bar { padding-top: env(safe-area-inset-top); margin-bottom: 0; }
  }
  header.top {
    padding: 14px 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: nowrap;
  }
  .app-tabs {
    display: flex;
    gap: 6px;
    align-items: center;
  }
  .app-tab {
    width: 40px; height: 40px;
    display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid #e2e2df;
    background: #f7f7f5;
    border-radius: 10px; cursor: pointer; color: #8a8a85;
    transition: all .15s;
  }
  .app-tab svg { width: 20px; height: 20px; }
  .app-tab:hover { color: #1a1a17; background: #efefec; }
  .app-tab.active { color: #1a1a17; background: #1a1a17; border-color: #1a1a17; }
  .app-tab.active { color: #ffffff; }
  /* Inside the phone frame, content is full-width (no side padding) on every tab.
     Views that want inner breathing room add their own padding. */
  .app-scroll section.block { padding: 10px 0 40px; }
  .app-scroll .page { padding: 0; }
  /* Strategy page is full-bleed left/right/bottom; top clears the sticky header. */
  #view-levels { margin: 0 0 -40px 0; }
  /* The forecast .page wrapper clips overflow-x by 12px insets — undo that when the Strategy
     view is active so the chart's full-bleed edges (S/R markers, price tags) aren't cut off. */
  body.strat-active #panel-forecast, body.strat-active #tab-forecast, body.strat-active .forecast-scope .page { overflow: visible !important; }
  .app-view[hidden] { display: none !important; }
  /* AI Forecast: its content is rounded cards — give them side + top breathing room
     (the global panel padding is 0 for full-bleed pages, so this view pads itself). */
  #view-forecast { padding: 12px 12px 24px; }
  /* Signals tab */
  #view-signals .sig-wrap { padding: 0 0 1.2rem; }
  #view-signals .sig-cat-row {
    display: flex; gap: .5rem; margin-bottom: .6rem;
  }
  #view-signals .sig-cat {
    flex: 1; padding: .55rem .5rem; border: 1px solid var(--border); background: #fff; cursor: pointer;
    font-family: inherit; font-size: .78rem; font-weight: 700; color: var(--muted);
    border-radius: 9px; transition: all .15s;
  }
  #view-signals .sig-cat.active { background: #2c3e6b; color: #fff; border-color: #2c3e6b; }
  #view-signals .sig-filter { display: flex; align-items: center; gap: .5rem; margin-bottom: .6rem; }
  #view-signals .sig-filter-label { font-size: .64rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); min-width: 3.4rem; }
  #view-signals .sig-chips { display: flex; gap: .3rem; flex: 1; }
  #view-signals .sig-chip {
    flex: 1; padding: .35rem .2rem; border: 1px solid var(--border); background: #fff; cursor: pointer;
    font-family: inherit; font-size: .68rem; font-weight: 700; color: var(--muted);
    border-radius: 7px; transition: all .15s;
  }
  #view-signals .sig-chip.active { background: var(--gold, #4f46e5); color: #fff; border-color: var(--gold, #4f46e5); }
  #view-signals .sig-subtabs {
    display: flex; gap: .4rem; margin-bottom: .9rem;
    background: var(--surface2); border-radius: 10px; padding: .25rem;
  }
  #view-signals .sig-subtab {
    flex: 1; padding: .5rem .4rem; border: none; background: none; cursor: pointer;
    font-family: inherit; font-size: .74rem; font-weight: 700; color: var(--muted);
    border-radius: 8px; transition: all .15s;
  }
  #view-signals .sig-subtab.active { background: #ffffff; color: #2c3e6b; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
  #view-signals .sig-list { display: flex; flex-direction: column; gap: .3rem; }
  .sig-empty { text-align: center; color: var(--muted); padding: 2.5rem 1rem; font-size: .82rem; }

  /* Live | History segmented toggle at the top of the Signals screen */
  #view-signals .sig-modetabs { display: flex; gap: .25rem; background: #eef1f6; border-radius: 10px; padding: .22rem; margin: 0 0 .55rem; }
  #view-signals .smt-btn { flex: 1; border: 0; background: transparent; color: #6b7280; font-size: .8rem; font-weight: 700; padding: .42rem 0; border-radius: 8px; cursor: pointer; letter-spacing: .01em; transition: background .15s, color .15s; }
  #view-signals .smt-btn.on { background: #ffffff; color: #2c3e6b; box-shadow: 0 1px 3px rgba(0,0,0,.08); }

  /* Signal history list */
  #view-signals .sig-hist { display: flex; flex-direction: column; gap: .4rem; }
  #view-signals .sigh-empty { text-align: center; color: #94a3b8; padding: 2.5rem 1rem; font-size: .82rem; line-height: 1.5; }
  #view-signals .sigh-empty span { font-size: .74rem; opacity: .8; }
  #view-signals .sigh-row { display: flex; gap: .55rem; align-items: stretch; background: #ffffff; border: 1px solid #eceff4; border-radius: 12px; padding: .55rem .6rem; }
  #view-signals .sigh-row.sell { border-left: 3px solid #ef4444; }
  #view-signals .sigh-row.buy { border-left: 3px solid #22c55e; }
  #view-signals .sigh-scorebox { flex-shrink: 0; width: 44px; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 10px; font-size: .95rem; font-weight: 800; }
  #view-signals .sigh-scorebox i { font-size: .48rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; font-style: normal; margin-top: .12rem; opacity: .8; }
  #view-signals .sigh-scorebox.auto { background: #dcfce7; color: #15803d; }
  #view-signals .sigh-scorebox.mid { background: #fef3c7; color: #92400e; }
  #view-signals .sigh-scorebox.low { background: #fee2e2; color: #b91c1c; }
  #view-signals .sigh-detail { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .3rem; justify-content: center; }
  #view-signals .sigh-r1 { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
  #view-signals .sigh-side { font-size: .72rem; font-weight: 800; letter-spacing: .04em; }
  #view-signals .sigh-side.buy { color: #15803d; }
  #view-signals .sigh-side.sell { color: #b91c1c; }
  #view-signals .sigh-setup { font-size: .78rem; font-weight: 600; color: #374151; }
  #view-signals .sigh-status { margin-left: auto; font-size: .62rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: .12rem .4rem; border-radius: 6px; background: #f1f5f9; color: #64748b; }
  #view-signals .sigh-status.st-pending { background: #eef2ff; color: #6366f1; }
  #view-signals .sigh-status.st-filled, #view-signals .sigh-status.st-accepted { background: #dcfce7; color: #15803d; }
  #view-signals .sigh-status.st-rejected, #view-signals .sigh-status.st-expired, #view-signals .sigh-status.st-cancelled { background: #fee2e2; color: #b91c1c; }
  #view-signals .sigh-r2 { display: flex; align-items: center; gap: .55rem; font-size: .72rem; color: #6b7280; flex-wrap: wrap; }
  #view-signals .sigh-num i { font-style: normal; font-size: .6rem; text-transform: uppercase; letter-spacing: .04em; opacity: .7; margin-right: .18rem; }
  #view-signals .sigh-num b { font-weight: 700; }
  #view-signals .sigh-num b.tp { color: #15803d; }
  #view-signals .sigh-num b.sl { color: #b91c1c; }
  #view-signals .sigh-time { margin-left: auto; font-size: .66rem; color: #9ca3af; }
  /* Table grid: side/cat | lot | entry | tp | sl | status */
  #view-signals .sig-thead,
  #view-signals .sig-row2 {
    display: grid;
    grid-template-columns: 3.6rem .8fr 1fr 1.1fr 1.1fr .7rem;
    align-items: center; gap: .25rem;
  }
  #view-signals .sig-thead {
    padding: 0 .55rem .3rem; font-size: .54rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: .04em; color: var(--muted);
  }
  #view-signals .sig-thead .sr-cell { text-align: center; }
  /* Scalp/Swing dropdown in the header first cell */
  #view-signals .sig-cat-dd {
    font-family: inherit; font-size: .58rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: .02em; color: #2c3e6b; background: var(--surface2);
    border: 1px solid var(--border); border-radius: 6px; padding: .25rem .3rem; cursor: pointer;
    -webkit-appearance: none; appearance: none; width: 100%;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 16 16'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%236b7280' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right .2rem center; padding-right: .9rem;
  }
  /* Scalp/Swing tag on each row when viewing All */
  #view-signals .sig-cat-tag {
    font-size: .44rem; font-weight: 700; text-transform: uppercase; letter-spacing: .02em;
    padding: .08rem .28rem; border-radius: 4px; margin-top: 1px;
  }
  #view-signals .sig-cat-tag.scalp { background: #e0e7ff; color: #3730a3; }
  #view-signals .sig-cat-tag.swing { background: #ede9fe; color: #6d28d9; }
  #view-signals .sig-row2 {
    border: 1px solid var(--border); border-radius: 8px; background: #fff;
    padding: .4rem .55rem; border-left-width: 3px;
  }
  #view-signals .sig-row2.buy { border-left-color: #15803d; }
  #view-signals .sig-row2.sell { border-left-color: #b91c1c; }
  #view-signals .sig-row2.recover { border-left-color: #b45309; }
  #view-signals .sig-row2.swing { border-left-color: #6366f1; }
  #view-signals .sr-side { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
  #view-signals .sr-side .sig-side { font-size: .68rem; font-weight: 800; letter-spacing: .02em; }
  #view-signals .sig-row2.buy .sig-side { color: #15803d; }
  #view-signals .sig-row2.sell .sig-side { color: #b91c1c; }
  #view-signals .sig-row2.recover .sig-side { color: #b45309; }
  #view-signals .sr-side .sig-tf { font-size: .46rem; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: var(--muted); background: var(--surface2); padding: .08rem .28rem; border-radius: 4px; }
  #view-signals .sr-cell { display: flex; flex-direction: column; align-items: center; line-height: 1.15; min-width: 0; }
  #view-signals .sr-cell b { font-size: .76rem; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
  #view-signals .sr-cell b.lot { font-weight: 500; }
  #view-signals .sr-cell b.entry { color: #2c3e6b; }
  #view-signals .sr-cell b.tp { color: #15803d; }
  #view-signals .sr-cell b.sl { color: #b91c1c; }
  #view-signals .sr-sub { font-size: .5rem; font-weight: 600; text-transform: uppercase; letter-spacing: .02em; color: var(--muted); }
  #view-signals .sr-sub.tp { color: #15803d; }
  #view-signals .sr-sub.sl { color: #b91c1c; }
  #view-signals .sr-end { display: flex; justify-content: center; }
  #view-signals .sig-dot { width: 8px; height: 8px; border-radius: 50%; display: block; }
  #view-signals .sig-dot.active { background: #3b82f6; }
  #view-signals .sig-dot.tp { background: #15803d; }
  #view-signals .sig-dot.sl { background: #b91c1c; }
  /* ── Agent Trader ── */
  #view-signals .agent-bar {
    display: flex; align-items: center; gap: .6rem; margin-bottom: .7rem;
    padding: .8rem .95rem; border: 1px solid var(--border); border-radius: 10px; background: #fff;
  }
  /* Friendly agent intros — chat-bubble style (Aloka on Signals, Rex on Trades) */
  #view-signals .mgr-intro, #view-trade .bot-intro {
    display: flex; gap: .5rem; align-items: center;
    margin: 0 12px .8rem; padding: 0;
  }
  #view-signals .mgr-avatar, #view-trade .bot-avatar {
    width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
  }
  #view-signals .mgr-avatar { background: linear-gradient(135deg,#6366f1,#4f46e5); box-shadow: 0 2px 8px rgba(79,70,229,.3); }
  #view-trade .bot-avatar { background: linear-gradient(135deg,#94a3b8,#64748b); box-shadow: 0 2px 8px rgba(100,116,139,.28); }
  #view-signals .mgr-face { font-size: .82rem; font-weight: 800; color: #fff; letter-spacing: -1px; }
  #view-trade .bot-face { font-size: .7rem; font-weight: 800; color: #fff; letter-spacing: -1px; }
  /* speech bubble — tail points UP from the top-left, right under Aloka's avatar in the header,
     so it reads as Aloka talking from the header bar. */
  #view-signals .mgr-bubble, #view-trade .bot-bubble {
    position: relative; flex: 1; padding: .55rem .8rem; border-radius: 14px;
  }
  #view-signals .mgr-bubble { background: #e0e0ff; padding-right: 2rem; margin-top: 7px; }
  #view-trade .bot-bubble { background: #f1f5f9; }
  #view-trade .bot-bubble-rex { background: #dbeafe; margin-top: 7px; }
  #view-trade .bot-bubble-rex::before {
    content: ""; position: absolute; left: 6px; top: -7px;
    width: 0; height: 0;
    border-left: 8px solid transparent; border-right: 8px solid transparent;
    border-bottom: 8px solid #dbeafe;
  }
  #view-trade .bot-bubble-rex .bot-text { color: #1e3a8a; font-size: .82rem; font-weight: 500; line-height: 1.4; }
  /* Triangular tail on TOP-LEFT, tip centered under the Aloka avatar (~x=25px). */
  #view-signals .mgr-bubble::before {
    content: ""; position: absolute; left: 6px; top: -7px;
    width: 0; height: 0;
    border-left: 8px solid transparent; border-right: 8px solid transparent;
    border-bottom: 8px solid #e0e0ff;
  }
  #view-trade .bot-bubble::before {
    content: ""; position: absolute; left: -5px; top: 50%; transform: translateY(-50%);
    width: 11px; height: 11px; border-radius: 2px; rotate: 45deg; background: #f1f5f9;
  }
  /* Collapse / expand chevron on the bubble */
  #view-signals .mgr-collapse {
    position: absolute; top: .4rem; right: .4rem; width: 22px; height: 22px;
    display: inline-flex; align-items: center; justify-content: center;
    border: none; background: transparent; color: #6366f1; cursor: pointer; border-radius: 50%;
    transition: background .15s;
  }
  #view-signals .mgr-collapse:hover { background: rgba(99,102,241,.12); }
  #view-signals .mgr-collapse svg { transition: transform .2s ease; }
  /* Collapsed: hide the stats, rotate the chevron, shrink the bubble to a thin bar. */
  #view-signals .mgr-intro.collapsed .mgr-text { display: none; }
  #view-signals .mgr-collapsed-label { display: none; font-size: .78rem; font-weight: 600; color: #6366f1; }
  #view-signals .mgr-intro.collapsed .mgr-collapsed-label { display: block; }
  #view-signals .mgr-intro.collapsed .mgr-bubble { padding-top: .35rem; padding-bottom: .35rem; }
  #view-signals .mgr-intro.collapsed .mgr-collapse svg { transform: rotate(-90deg); }
  #view-signals .mgr-name { font-size: .92rem; font-weight: 800; color: #4f46e5; margin-bottom: .05rem; letter-spacing: .01em; }
  #view-signals .mgr-text { font-size: .8rem; line-height: 1.35; color: #3730a3; font-weight: 500; }
  #view-signals .mgr-bubble-full { width: 100%; }
  #view-signals .mgr-stat { display: flex; align-items: flex-start; gap: .5rem; line-height: 1.4; }
  #view-signals .mgr-stat + .mgr-stat { margin-top: .4rem; }
  #view-signals .mgr-stat-dot { flex-shrink: 0; width: 8px; height: 8px; border-radius: 50%; margin-top: .35rem; }
  #view-signals .mgr-stat-dot.on { background: #22c55e; }
  #view-signals .mgr-stat-dot.off { background: #94a3b8; }
  #view-signals .mgr-stat-txt { font-size: .78rem; }
  #view-trade .bot-name { font-size: .62rem; font-weight: 800; color: #64748b; margin-bottom: .05rem; text-transform: uppercase; letter-spacing: .03em; }
  #view-trade .bot-text { font-size: .8rem; line-height: 1.35; color: #475569; font-weight: 500; }
  .agent-bar.on { border-color: #15803d; background: #f0fdf4; }
  /* Gear button on Aloka's bubble */
  #view-signals .mgr-gear {
    flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%; border: none; cursor: pointer;
    background: #fff; color: #6366f1; box-shadow: 0 1px 3px rgba(0,0,0,.08);
    display: flex; align-items: center; justify-content: center; padding: 0;
  }
  #view-signals .mgr-gear svg { width: 17px; height: 17px; }
  #view-signals .mgr-gear:active { background: #eef2ff; }
  /* Date bar with Active-only checkbox */
  #view-signals .mgr-name-row { display: flex; align-items: center; gap: .5rem; margin-bottom: .1rem; }
  #view-signals .aloka-toggle, .hdr-aloka .aloka-toggle {
    display: inline-flex; align-items: center; gap: .3rem;
    font-family: inherit; font-size: .6rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em;
    color: #94a3b8; background: #eef2f7; border: none; border-radius: 20px; padding: .18rem .5rem .18rem .4rem; cursor: pointer;
    transition: background .2s, color .2s;
  }
  #view-signals .aloka-toggle .at-dot, .hdr-aloka .aloka-toggle .at-dot { width: 7px; height: 7px; border-radius: 50%; background: #cbd5e1; transition: background .2s, box-shadow .2s; }
  #view-signals .aloka-toggle.on, .hdr-aloka .aloka-toggle.on { color: #15803d; background: #dcfce7; }
  #view-signals .aloka-toggle.on .at-dot, .hdr-aloka .aloka-toggle.on .at-dot { background: #22c55e; box-shadow: 0 0 0 0 rgba(34,197,94,.5); animation: alokaPulse 1.6s infinite; }
  @keyframes alokaPulse { 0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)} 70%{box-shadow:0 0 0 5px rgba(34,197,94,0)} 100%{box-shadow:0 0 0 0 rgba(34,197,94,0)} }
  #view-signals .aloka-toggle:active, .hdr-aloka .aloka-toggle:active { filter: brightness(.96); }
  /* Aloka in the header bar */
  .hdr-aloka { display: inline-flex; align-items: center; gap: .45rem; }
  .hdr-aloka-avatar { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; background: #4f46e5; color: #fff; font-size: .6rem; letter-spacing: -.03em; }
  .hdr-aloka-name { font-size: .95rem; font-weight: 800; color: #4f46e5; letter-spacing: .01em; }
  /* Rex in the Trades header bar — blue */
  .hdr-rex { display: inline-flex; align-items: center; gap: .45rem; }
  .hdr-rex-logo { position: relative; flex-shrink: 0; width: 28px; height: 28px; border-radius: 50%; background: #2563eb; color: #fff; font-size: .9rem; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
  .hdr-rex-logo .hrx-dot { position: absolute; right: -1px; bottom: -1px; width: 9px; height: 9px; border-radius: 50%; background: #94a3b8; border: 2px solid #fff; }
  .hdr-rex-logo.on .hrx-dot { background: #22c55e; }
  .hdr-rex-name { font-size: .95rem; font-weight: 800; color: #2563eb; letter-spacing: .01em; }
  .hdr-rex-conn { font-size: .72rem; font-weight: 600; color: #64748b; }
  @keyframes rexPulse { 0%{box-shadow:0 0 0 0 rgba(37,99,235,.5)} 70%{box-shadow:0 0 0 5px rgba(37,99,235,0)} 100%{box-shadow:0 0 0 0 rgba(37,99,235,0)} }
  .hdr-gear.rex:hover { color: #2563eb; }
  .hdr-gear { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border: none; background: transparent; color: #64748b; cursor: pointer; border-radius: 50%; transition: background .15s, color .15s; }
  .hdr-actions { display: inline-flex; align-items: center; gap: .3rem; }
  .hdr-scoring { display: inline-flex; align-items: center; gap: .28rem; font-family: inherit; font-size: .68rem; font-weight: 800; color: #4f46e5; background: #eef2ff; border: none; border-radius: 20px; padding: .3rem .6rem; cursor: pointer; transition: background .15s; }
  .hdr-scoring svg { width: 14px; height: 14px; }
  .hdr-scoring:hover { background: #e0e0ff; }
  .hdr-scoring:active { filter: brightness(.97); }
  .hdr-gear svg { width: 19px; height: 19px; }
  .hdr-gear:hover { background: #f1f5f9; color: #4f46e5; }
  .hdr-gear:active { filter: brightness(.96); }
  /* Aloka settings modal rows */
  .set-section { margin-bottom: 1.2rem; }
  /* ═══ iOS-style Aloka settings bottom sheet ═══ */
  .sheet-modal { position: absolute; inset: 0; z-index: 900; }
  .sheet-modal[hidden] { display: none !important; }
  .sheet-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.4); animation: sheetFade .25s ease; }
  @keyframes sheetFade { from { opacity: 0; } to { opacity: 1; } }
  .sheet-card {
    position: absolute; left: 0; right: 0; bottom: 0; max-height: 90%;
    background: #f2f2f7; border-radius: 16px 16px 0 0; display: flex; flex-direction: column;
    animation: sheetUp .32s cubic-bezier(.32,.72,0,1); box-shadow: 0 -4px 24px rgba(0,0,0,.15);
  }
  @keyframes sheetUp { from { transform: translateY(100%); } to { transform: translateY(0); } }
  .sheet-grabber { width: 36px; height: 5px; border-radius: 3px; background: #c7c7cc; margin: .5rem auto .2rem; flex-shrink: 0; }
  .sheet-head { display: flex; align-items: center; justify-content: space-between; padding: .4rem 1rem .6rem; flex-shrink: 0; }
  .sheet-title { font-size: 1.05rem; font-weight: 800; color: #000; }
  .sheet-done { font-family: inherit; font-size: .95rem; font-weight: 700; color: #4f46e5; background: none; border: none; cursor: pointer; padding: .2rem .1rem; }
  .sheet-body { overflow-y: auto; padding: 0 1rem 1.5rem; -webkit-overflow-scrolling: touch; }
  /* Sheet tabs (Settings / Scoring) */
  .sheet-tabs { display: flex; gap: .3rem; padding: 0 1rem .7rem; flex-shrink: 0; }
  .sheet-tab { flex: 1; font-family: inherit; font-size: .85rem; font-weight: 700; color: #6d6d72; background: #e5e5ea; border: none; border-radius: 9px; padding: .5rem 0; cursor: pointer; transition: background .15s, color .15s; }
  .sheet-tab.on { background: #4f46e5; color: #fff; }
  /* iOS-style dropdown select in a row */
  .ios-select {
    font-family: inherit; font-size: .9rem; font-weight: 600; color: #4f46e5;
    background: #eef2ff; border: none; border-radius: 8px; padding: .4rem 1.8rem .4rem .7rem; cursor: pointer;
    -webkit-appearance: none; appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%234f46e5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right .55rem center;
  }
  .ios-select:focus { outline: 2px solid rgba(79,70,229,.3); }
  /* Strategy sheet sub-header: logo · code · short line */
  .sheet-subhead { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; padding: 0 1rem .6rem; flex-shrink: 0; }
  .sheet-subhead .sl-logo { width: 26px; height: 26px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; }
  .sheet-subhead .sl-logo svg { width: 22px; height: 22px; }
  .sheet-subhead .sl-code { font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; color: #4f46e5; background: #eef2ff; padding: .18rem .5rem; border-radius: 6px; }
  .sheet-subhead .sl-short { font-size: .78rem; color: #6d6d72; }
  /* Strategy sheet: fixed 85%-of-screen height, docked at bottom, compact header. */
  #stratLogicOverlay .sheet-card { height: 85% !important; max-height: 85% !important; }
  #alokaSettings .sheet-card { height: 85% !important; max-height: 85% !important; }
  #scoringSheet .sheet-card { height: 85% !important; max-height: 85% !important; }
  #rexSettings .sheet-card { height: 80% !important; max-height: 80% !important; }
  /* Settings popup: fixed height so switching menu ↔ Edit ↔ Password doesn't resize the sheet */
  #acctSettings .sheet-card { height: 72% !important; max-height: 72% !important; }
  /* Rex connect form */
  .rex-field { margin-bottom: .9rem; }
  .rex-label { display: block; font-size: .72rem; font-weight: 700; color: #48484a; margin-bottom: .35rem; }
  .rex-input { width: 100%; font-family: inherit; font-size: .95rem; color: var(--text); background: #fff; border: 1px solid #d8d8dd; border-radius: 10px; padding: .7rem .8rem; -webkit-appearance: none; }
  .rex-input:focus { outline: 2px solid rgba(37,99,235,.25); border-color: #2563eb; }
  .rex-input::placeholder { color: #b0b0b8; }
  .rex-connect-btn { width: 100%; margin-top: .4rem; border: none; background: #4f46e5; color: #fff; font-family: inherit; font-size: .95rem; font-weight: 800; border-radius: 11px; padding: .8rem; cursor: pointer; }
  .rex-connect-btn:active { filter: brightness(.96); }
  .rex-connect-status { font-size: .78rem; text-align: center; margin-top: .7rem; min-height: 1rem; }
  .rex-connect-status.ok { color: #15803d; }
  .rex-connect-status.err { color: #dc2626; }
  /* Rex account list */
  .rex-acct-items { display: flex; flex-direction: column; gap: .5rem; margin-bottom: 1rem; }
  .rex-acct-item { display: flex; align-items: center; gap: .6rem; width: 100%; background: #fff; border: 1px solid #e5e5ea; border-radius: 12px; padding: .8rem .9rem; cursor: pointer; text-align: left; }
  .rex-acct-item.active { border-color: #2563eb; background: #eff6ff; }
  .rex-acct-item:active { filter: brightness(.98); }
  .rai-main { display: flex; flex-direction: column; gap: .15rem; flex: 1; min-width: 0; }
  .rai-id { font-size: .92rem; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
  .rai-srv { font-size: .74rem; color: var(--muted); }
  .rai-type { flex-shrink: 0; font-size: .6rem; font-weight: 800; padding: .15rem .45rem; border-radius: 6px; }
  .rai-type.demo { background: #dbeafe; color: #1d4ed8; }
  .rai-type.live { background: #dcfce7; color: #15803d; }
  .rai-check { flex-shrink: 0; color: #2563eb; font-weight: 800; font-size: 1rem; }
  .rex-add-btn { display: flex; align-items: center; justify-content: center; gap: .4rem; width: 100%; background: #eff6ff; color: #2563eb; border: 1px dashed #93c5fd; border-radius: 12px; font-family: inherit; font-size: .9rem; font-weight: 700; padding: .8rem; cursor: pointer; }
  .rex-add-btn:active { background: #dbeafe; }
  .rex-add-plus { font-size: 1.1rem; font-weight: 800; line-height: 1; }
  .rex-form-back { border: none; background: transparent; color: #4f46e5; font-family: inherit; font-size: .9rem; font-weight: 600; cursor: pointer; padding: 0 0 .5rem; }
  /* Settings menu nav rows */
  .ios-row.set-nav { width: 100%; border: none; background: transparent; font-family: inherit; cursor: pointer; text-align: left; }
  .ios-row.set-nav:active { background: #f1f5f9; }
  .set-nav-chev { color: #c4c4cc; font-size: 1.15rem; font-weight: 700; }
  .set-nav-sub { margin-left: auto; margin-right: .5rem; font-size: .74rem; color: var(--muted); }
  /* Avatar editor in Edit Account */
  .av-edit { display: flex; flex-direction: column; align-items: center; gap: .5rem; margin: .3rem 0 1.1rem; }
  .av-edit-circle { width: 76px; height: 76px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #6366f1, #4f46e5); color: #fff; font-size: 1.8rem; font-weight: 800; cursor: pointer; overflow: hidden; }
  .av-edit-btn { border: none; background: transparent; color: #4f46e5; font-family: inherit; font-size: .84rem; font-weight: 700; cursor: pointer; padding: .2rem .5rem; }
  /* ── Dark mode (prototype): restyle the main surfaces ── */
  body.dark { --bg: #0f1115; --bg-elev: #0f1115; --bg-card: #171a20; --ink: #e5e7eb; --line: #262b34; --line-soft: #20252d; }
  body.dark .forecast-scope { --bg: #0f1115; --surface: #171a20; --surface2: #1c212a; --surface3: #232a35; --text: #e5e7eb; --muted: #8b93a1; --border: #262b34; }
  body.dark .header-bar { background: #12151a; border-color: #20252d; }
  body.dark #view-trade .m5-list, body.dark #view-history .h5-list { background: #12151a; border-color: #262b34; }
  body.dark #view-trade .m5-row, body.dark #view-history .h5-row { border-color: #1c212a; }
  body.dark #view-trade .rex-acctbox, body.dark #view-history .h5-summary { background: #1a1e26; border-color: #262b34; }
  body.dark #view-trade .rax-stat b, body.dark #view-history .h5-sum-stat b { color: #e5e7eb; }
  body.dark #view-trade .m5-scorebox { filter: brightness(.85) saturate(.9); }
  body.dark #view-trade .mt5-priceline, body.dark #view-history .h5-px { color: #8b93a1; }
  body.dark .sheet-card { background: #171a20; }
  body.dark .sheet-title { color: #e5e7eb; }
  body.dark .tabbar { background: #12151a; border-color: #20252d; }
  body.dark .ios-group, body.dark .ss-strat-box, body.dark .hp-opts { background: #1c212a; }
  body.dark .ios-row, body.dark .hp-opt, body.dark .ss-sig-row, body.dark .ss-strat-row { background: #1c212a; border-color: #262b34; color: #e5e7eb; }
  body.dark .ios-row-title, body.dark .ss-sig-name, body.dark .hp-opt { color: #e5e7eb; }
  body.dark .rex-input, body.dark .rex-server-pick { background: #1c212a; border-color: #2c333e; color: #e5e7eb; }
  body.dark .app-screen { background: #0f1115; }
  /* Dark-mode polish: tab bar labels, timeframe pills, chart lines */
  body.dark .tabbar-btn { color: #7c8494; }
  body.dark .tabbar-btn.active { color: #f1f5f9; }
  body.dark .tabbar-btn.active svg { color: #818cf8; }
  body.dark .hdr-tf, body.dark .brand-subtabs .hdr-tf { background: #1c212a; }
  body.dark .hdr-tf .htf-btn { color: #8b93a1; }
  body.dark .hdr-tf .htf-btn.on { background: #eef2ff; color: #111827; }
  body.dark .ac-grid { stroke: #1f2530; }
  body.dark .ac-vgrid { stroke: #2a3240; }
  body.dark .ac-axis-border { stroke: #2a3240; }
  body.dark .ac-axis-x, body.dark .ac-axis-y { fill: #6b7484; }
  body.dark .strat-bar, body.dark .strat-carousel { background: #12151a; border-color: #20252d; }
  body.dark .hdr-period { background: #1c212a; color: #a5b4fc; }
  body.dark .hdr-gear { color: #8b93a1; }
  /* Dark mode: "Last" price line + badges in light blue */
  body.dark .ac-price-line { stroke: #7dd3fc; }
  body.dark .ac-price-tag { fill: #7dd3fc; }
  body.dark .ac-price-tag-txt { fill: #0c1420; }
  body.dark .ac-lvl-mark.ac-mk-last { fill: #7dd3fc; }
  body.dark .ac-lvl-marktxt.ac-mk-last-txt { fill: #0c1420; }
  /* ── Dark mode: simulator status bar ── */
  body.dark .sim-status { background: #0f1115; color: #e5e7eb; }
  /* ── Dark mode: popup internals ── */
  body.dark .sheet-grabber { background: #3a4150; }
  body.dark .set-section-sub { color: #a3aab8; }
  body.dark .ios-group-label { color: #8b93a1; }
  body.dark .ios-group-hint { color: #7c8494; }
  body.dark .ios-select { background-color: #232a35; color: #a5b4fc; }
  body.dark .set-nav-chev { color: #4a515e; }
  body.dark .rex-label { color: #8b93a1; }
  body.dark .rex-acct-item { background: #1c212a; border-color: #2c333e; color: #e5e7eb; }
  body.dark .rex-add-btn { background: #16203a; border-color: #31456e; color: #93c5fd; }
  body.dark .rex-broker-overlay { background: #12151a; }
  body.dark .rex-broker-head { background: #171a20; border-color: #262b34; }
  body.dark .rex-broker-search { background: #1c212a; border-color: #2c333e; color: #e5e7eb; }
  body.dark .rex-broker-item { background: #171a20; border-color: #20252d; }
  body.dark .rex-broker-item b, body.dark .rbi-broker { color: #e5e7eb; }
  body.dark .hp-custom { background: #1c212a; }
  body.dark .hp-date { background: #232a35; border-color: #2c333e; color: #e5e7eb; }
  body.dark .sf-tbl td { background: #171a20; color: #cbd2da; border-color: #262b34; }
  body.dark .sf-tbl thead th { background: #1c212a; border-color: #262b34; }
  body.dark .score-band-col { background: #1c212a; }
  body.dark .sbc-name { color: #e5e7eb; }
  body.dark .sbc-desc { color: #8b93a1; }
  body.dark .auth-tabs { background: #1c212a; }
  body.dark .auth-tab { color: #8b93a1; }
  body.dark .auth-tab.active { background: #2a3240; color: #f1f5f9; box-shadow: none; }
  body.dark .amsg-line { background: #1b2140; }
  body.dark .amsg-line span, body.dark .amsg-line b { color: #c7d2fe; }
  body.dark .amsg-fxs { background: #1c212a; }
  body.dark .amsg-fx { border-color: #262b34; }
  body.dark .amsg-fx-txt b { color: #e5e7eb; }
  body.dark .amsg-fx-txt span { color: #8b93a1; }
  body.dark #histAnalysisSheet .ha-body { background: #1b2140; }
  body.dark #histAnalysisSheet .ha-headline { color: #a5b4fc; }
  body.dark #histAnalysisSheet .ha-txt b { color: #e0e7ff; }
  body.dark #histAnalysisSheet .ha-txt span { color: #a3aab8; }
  /* ── Dark mode: signal cards → dark grey ── */
  body.dark #view-signals .feed-card, body.dark #view-trade .feed-card, body.dark #view-history .feed-card,
  body.dark .proc-dock .feed-card {
    background: #1c212a; border-color: #262b34; color: #e5e7eb;
  }
  body.dark .feed-card.accepted { background: #14231b; }
  body.dark .feed-card.expired { background: #171a20; }
  body.dark #view-signals .feed-card[style*="cursor:pointer"]:hover { border-color: #3a4150; box-shadow: none; }
  /* ── Dark mode: pressed/hover states that flashed white ── */
  body.dark .ios-row.set-nav:active { background: #232a35; }
  body.dark .hp-opt:active { background: #232a35; }
  body.dark .hdr-scoring { background: #1b2140; color: #a5b4fc; }
  body.dark .hdr-scoring:hover { background: #232a55; }
  body.dark .rex-server-pick:active, body.dark .rex-acct-item:active { background: #232a35; }
  /* Server picker button */
  .rex-server-pick { width: 100%; display: flex; align-items: center; justify-content: space-between; font-family: inherit; font-size: .95rem; color: #b0b0b8; background: #fff; border: 1px solid #d8d8dd; border-radius: 10px; padding: .7rem .8rem; cursor: pointer; }
  .rex-server-val.chosen { color: var(--text); font-weight: 600; }
  /* Broker search overlay — sits inside the Rex sheet, fills the phone frame */
  .rex-broker-overlay { position: absolute; inset: 0; z-index: 10; display: flex; flex-direction: column; background: #f2f2f7; border-radius: inherit; }
  .rex-broker-overlay[hidden] { display: none; }
  .rex-broker-head { display: flex; align-items: center; gap: .5rem; padding: .8rem 1rem; background: #fff; border-bottom: 1px solid #e5e5ea; border-radius: 18px 18px 0 0; }
  .rex-broker-back { flex-shrink: 0; border: none; background: transparent; color: #2563eb; font-size: 1.5rem; line-height: 1; font-weight: 400; cursor: pointer; padding: 0 .2rem; }
  .rex-broker-search { flex: 1; min-width: 0; font-family: inherit; font-size: .95rem; color: var(--text); background: #eef0f3; border: none; border-radius: 9px; padding: .6rem .8rem; -webkit-appearance: none; }
  .rex-broker-search:focus { outline: 2px solid rgba(37,99,235,.25); }
  .rex-broker-cancel { flex-shrink: 0; border: none; background: transparent; color: #2563eb; font-family: inherit; font-size: .9rem; font-weight: 600; cursor: pointer; white-space: nowrap; }
  .rex-broker-results { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .rex-broker-item { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: .6rem; background: #fff; border: none; border-bottom: 1px solid #eef0f3; padding: .8rem 1rem; cursor: pointer; text-align: left; }
  .rex-broker-item:active { background: #f8fafc; }
  .rbi-main { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
  .rbi-broker { font-size: .9rem; font-weight: 700; color: var(--text); }
  .rbi-server { font-size: .74rem; color: var(--muted); }
  .rbi-chev { flex-shrink: 0; color: #c4c4cc; font-size: 1.1rem; }
  .rbi-type { flex-shrink: 0; font-size: .6rem; font-weight: 800; padding: .15rem .45rem; border-radius: 6px; }
  .rbi-type.demo { background: #dbeafe; color: #1d4ed8; }
  .rbi-type.live { background: #dcfce7; color: #15803d; }
  .rex-broker-empty { padding: 1.5rem 1rem; text-align: center; font-size: .82rem; color: var(--muted); line-height: 1.5; }
  /* "Aloka's read" bottom sheet (tap a score box) — auto height, not fixed 85% */
  #scoreMsgPop .sheet-card { max-height: 82% !important; }
  .amsg-top { display: flex; align-items: center; gap: .7rem; margin: .2rem 0 1rem; }
  .amsg-score { flex-shrink: 0; width: 56px; height: 56px; border-radius: 13px; display: flex; flex-direction: column; align-items: center; justify-content: center; }
  .amsg-score b { font-size: 1.35rem; font-weight: 800; line-height: 1; }
  .amsg-score i { font-size: .5rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; font-style: normal; margin-top: .15rem; opacity: .8; }
  .amsg-score.auto { background: #dcfce7; color: #15803d; }
  .amsg-score.mid { background: #fef3c7; color: #92400e; }
  .amsg-score.low { background: #fee2e2; color: #b91c1c; }
  .amsg-verdict { font-size: 1.15rem; font-weight: 800; line-height: 1.1; }
  .amsg-verdict.auto { color: #15803d; }
  .amsg-verdict.mid { color: #b45309; }
  .amsg-verdict.low { color: #b91c1c; }
  .amsg-sig { font-size: .74rem; font-weight: 700; color: #6d6d72; margin-top: .2rem; }
  .amsg-line { display: flex; align-items: flex-start; gap: .55rem; background: #eef2ff; border-radius: 13px; padding: .75rem .85rem; margin-bottom: 1rem; }
  .amsg-ava { flex-shrink: 0; font-size: .78rem; color: #4f46e5; }
  .amsg-say { font-size: .92rem; font-weight: 600; color: #3730a3; line-height: 1.4; }
  .amsg-fxs { display: flex; flex-direction: column; gap: .1rem; background: #fff; border-radius: 13px; overflow: hidden; }
  .amsg-fx { display: flex; align-items: flex-start; gap: .6rem; padding: .75rem .85rem; border-bottom: 1px solid #eef0f3; }
  .amsg-fx:last-child { border-bottom: none; }
  .amsg-fx-ic { flex-shrink: 0; width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: .8rem; font-weight: 800; margin-top: .05rem; }
  .amsg-fx.up .amsg-fx-ic { background: #dcfce7; color: #15803d; }
  .amsg-fx.down .amsg-fx-ic { background: #fee2e2; color: #b91c1c; }
  .amsg-fx.warn .amsg-fx-ic { background: #fef3c7; color: #92400e; }
  .amsg-fx-txt { display: flex; flex-direction: column; gap: .1rem; }
  .amsg-fx-txt b { font-size: .88rem; font-weight: 700; color: #000; }
  .amsg-fx-txt span { font-size: .8rem; color: #6d6d72; line-height: 1.4; }
  .amsg-alts-label { font-size: .62rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #94a3b8; margin: 1.1rem 0 .5rem; }
  .amsg-alt { display: flex; align-items: flex-start; gap: .5rem; background: #f1f5f9; border-radius: 10px; padding: .6rem .75rem; margin-bottom: .5rem; font-size: .84rem; color: #334155; line-height: 1.4; }
  .amsg-alt::before { content: "\2192"; color: #6366f1; font-weight: 800; flex-shrink: 0; }
  .amsg-more { width: 100%; border: none; background: #f1f5f9; color: #4f46e5; font-family: inherit; font-size: .84rem; font-weight: 700; border-radius: 11px; padding: .75rem; cursor: pointer; margin-top: 1rem; }
  .amsg-more:hover { background: #e2e8f0; }
  #stratLogicOverlay .sheet-head { padding: .3rem 1rem .5rem; }
  #stratLogicOverlay .sheet-subhead { display: none; }
  .ios-group-label { font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .02em; color: #6d6d72; padding: .8rem .3rem .35rem; }
  .ios-group { background: #fff; border-radius: 12px; overflow: hidden; }
  .ios-row { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .7rem .9rem; border-bottom: 1px solid #e5e5ea; min-height: 44px; }
  .ios-row:last-child { border-bottom: none; }
  .ios-row-stack { flex-direction: column; align-items: stretch; gap: .55rem; }
  .ios-row-title { font-size: .9rem; font-weight: 500; color: #000; }
  .ios-group-hint { font-size: .72rem; color: #6d6d72; padding: .4rem .3rem 0; line-height: 1.4; }
  /* Strategy & Signals selection */
  .ss-strat-box { background: #fff; border-radius: 12px; overflow: hidden; }
  .ss-strat-row { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .8rem 1rem; border-bottom: 1px solid #eef0f3; background: #fafbfc; }
  .ss-strat-row:last-child { border-bottom: none; }
  .ss-strat-row.tappable { cursor: pointer; }
  .ss-strat-right { display: flex; align-items: center; gap: .55rem; flex-shrink: 0; }
  .ss-chev { color: #c4c4cc; font-size: 1.15rem; font-weight: 700; transform: rotate(0deg); transition: transform .18s; }
  .ss-chev.open { transform: rotate(90deg); }
  .ss-strat-main { display: flex; flex-direction: column; gap: .12rem; }
  .ss-strat-main b { font-size: .92rem; font-weight: 800; color: var(--text); }
  .ss-strat-main span { font-size: .7rem; color: var(--muted); }
  .ss-strat-count { flex-shrink: 0; font-size: .7rem; font-weight: 700; color: #4f46e5; background: #eef2ff; border-radius: 999px; padding: .25rem .6rem; }
  .ss-sig-list { display: flex; flex-direction: column; }
  .ss-sig-row { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .6rem 1rem; border-bottom: 1px solid #f0f1f4; }
  .ss-sig-row:last-child { border-bottom: none; }
  .ss-sig-main { display: flex; align-items: center; gap: .5rem; min-width: 0; }
  .ss-sig-txt { display: flex; flex-direction: column; gap: .1rem; min-width: 0; }
  .ss-sig-side { flex-shrink: 0; font-size: .56rem; font-weight: 800; padding: .18rem .4rem; border-radius: 5px; letter-spacing: .02em; }
  .ss-sig-side.buy { background: #dbeafe; color: #1d4ed8; }
  .ss-sig-side.sell { background: #fee2e2; color: #b91c1c; }
  .ss-sig-name { font-size: .84rem; font-weight: 600; color: var(--text); white-space: nowrap; }
  .ss-sig-tf { font-size: .64rem; color: var(--muted); white-space: nowrap; }
  .ss-toggle { flex-shrink: 0; width: 42px; height: 25px; border-radius: 999px; border: none; background: #d1d5db; position: relative; cursor: pointer; transition: background .18s; padding: 0; }
  .ss-toggle.on { background: #34c759; }
  .ss-knob { position: absolute; top: 2px; left: 2px; width: 21px; height: 21px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: left .18s; }
  .ss-toggle.on .ss-knob { left: 19px; }
  /* Big section headers in Aloka Settings */
  .set-section-head { font-size: 1.15rem; font-weight: 800; color: #000; padding: .5rem .1rem .1rem; }
  .set-section-head-2 { margin-top: 1.8rem; padding-top: 1.4rem; border-top: 1px solid #d8d8dd; }
  .set-section-sub { font-size: .82rem; color: #48484a; line-height: 1.45; padding: 0 .1rem .3rem; }
  /* Score band legend */
  /* Score bands as 3 side-by-side columns (saves vertical space) */
  .score-band-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: .4rem; margin-top: .7rem; }
  .score-band-col { background: #fff; border-radius: 10px; padding: .55rem .5rem; border-top: 3px solid #e5e5ea; }
  .score-band-col.auto { border-top-color: #22c55e; }
  .score-band-col.mid { border-top-color: #f59e0b; }
  .score-band-col.low { border-top-color: #ef4444; }
  .sbc-head { display: flex; align-items: center; gap: .3rem; }
  .sbc-head b { font-size: .82rem; font-weight: 800; color: #000; }
  .sbc-name { font-size: .74rem; font-weight: 700; color: #48484a; margin: .15rem 0 .2rem; }
  .sbc-desc { font-size: .68rem; color: #6d6d72; line-height: 1.3; }
  .score-band-dot { flex-shrink: 0; width: 9px; height: 9px; border-radius: 50%; }
  .score-band-dot.auto { background: #22c55e; }
  .score-band-dot.mid { background: #f59e0b; }
  .score-band-dot.low { background: #ef4444; }
  /* Score factors list */
  .score-factors .score-factor { flex-direction: column; align-items: stretch; gap: .2rem; }
  .score-factor .sf-name { font-size: .86rem; font-weight: 700; color: #4f46e5; }
  .score-factor .sf-desc { font-size: .78rem; color: #48484a; line-height: 1.4; }
  /* Score-weight table (% + bar), framed as live/AI-adjusted */
  .wt-label-row { display: flex; align-items: center; justify-content: space-between; }
  .wt-live { display: inline-flex; align-items: center; gap: .28rem; font-size: .6rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: #15803d; background: #dcfce7; padding: .12rem .45rem; border-radius: 20px; }
  .wt-live-dot { width: 6px; height: 6px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 0 rgba(34,197,94,.5); animation: alokaPulse 1.6s infinite; }
  .wt-group { padding: .3rem .2rem; }
  .wt-row { padding: .55rem .7rem; border-bottom: 1px solid #e5e5ea; }
  .wt-row:last-child { border-bottom: none; }
  .wt-top { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; }
  .wt-name { font-size: .84rem; font-weight: 700; color: #000; }
  .wt-pct { font-size: .82rem; font-weight: 800; color: #4f46e5; font-variant-numeric: tabular-nums; }
  .wt-bar { position: relative; height: 6px; border-radius: 4px; background: #ececf1; margin: .35rem 0 .3rem; overflow: hidden; }
  .wt-fill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 4px; }
  .wt-fill.hi { background: #4f46e5; }
  .wt-fill.mid { background: #6366f1; }
  .wt-fill.lo { background: #a5b4fc; }
  .wt-desc { font-size: .72rem; color: #6d6d72; line-height: 1.35; }
  /* Scoring inputs table */
  .sf-tbl-label { display: flex; align-items: center; justify-content: space-between; }
  .sf-tbl-wrap { background: #fff; border-radius: 12px; overflow: hidden; margin-top: .5rem; }
  .sf-tbl { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: .72rem; }
  .sf-tbl col.c-f { width: 23%; } .sf-tbl col.c-r { width: 43%; } .sf-tbl col.c-w { width: 19%; } .sf-tbl col.c-s { width: 15%; }
  .sf-tbl thead th { text-align: left; font-size: .56rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; color: #94a3b8; padding: .55rem .5rem; background: #f8fafc; border-bottom: 1px solid #e5e5ea; }
  .sf-tbl td { padding: .6rem .5rem; border-bottom: 1px solid #f0f1f4; vertical-align: top; }
  .sf-tbl tbody tr:last-child td { border-bottom: none; }
  .sf-tbl .sf-name { font-weight: 700; color: #000; }
  .sf-tbl .sf-reads { color: #6d6d72; line-height: 1.35; }
  .sf-wt-num { display: block; font-weight: 800; color: #4f46e5; font-variant-numeric: tabular-nums; margin-bottom: .25rem; }
  .sf-wt-bar { display: block; height: 5px; border-radius: 3px; background: #ececf1; overflow: hidden; }
  .sf-wt-fill { display: block; height: 100%; background: #6366f1; border-radius: 3px; }
  .src-pill { display: inline-block; font-size: .56rem; font-weight: 800; padding: .12rem .35rem; border-radius: 5px; white-space: nowrap; }
  .src-pill.calc { background: #e0e7ff; color: #4338ca; }
  .src-pill.you { background: #dcfce7; color: #15803d; }
  .src-pill.ai { background: #fce7f3; color: #be185d; }
  .sf-legend { display: flex; flex-wrap: wrap; gap: .3rem .9rem; padding: .7rem .3rem 0; }
  .sf-leg { font-size: .68rem; color: #6d6d72; display: inline-flex; align-items: center; gap: .3rem; }
  /* Today's market scan card */
  .scan-card { background: #0f172a; border-radius: 12px; padding: .7rem .8rem; margin-top: .3rem; }
  .scan-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .5rem; }
  .scan-title { font-size: .82rem; font-weight: 800; color: #f1f5f9; }
  .scan-live { display: inline-flex; align-items: center; gap: .28rem; font-size: .58rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: #4ade80; }
  .scan-live-dot { width: 6px; height: 6px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 0 rgba(34,197,94,.5); animation: alokaPulse 1.6s infinite; }
  .scan-rows { display: flex; flex-direction: column; gap: .1rem; }
  .scan-row { display: grid; grid-template-columns: 4.5rem 1fr auto; align-items: center; gap: .5rem; padding: .3rem 0; border-bottom: 1px solid rgba(255,255,255,.08); }
  .scan-row:last-child { border-bottom: none; }
  .scan-k { font-size: .72rem; font-weight: 600; color: #94a3b8; }
  .scan-pill { font-size: .68rem; font-weight: 700; padding: .12rem .45rem; border-radius: 6px; white-space: nowrap; }
  .scan-pill.ok { background: rgba(34,197,94,.18); color: #86efac; }
  .scan-pill.warn { background: rgba(245,158,11,.18); color: #fcd34d; }
  .scan-eff { font-size: .66rem; font-weight: 800; text-align: right; }
  .scan-eff.up { color: #4ade80; }
  .scan-eff.down { color: #f87171; }
  /* Worked example: why this signal scored X */
  .scan-example { background: #fff; border-radius: 12px; padding: .7rem .8rem; }
  .ex-sig { display: flex; align-items: center; gap: .3rem; flex-wrap: wrap; padding-bottom: .55rem; margin-bottom: .5rem; border-bottom: 1px solid #e5e5ea; }
  .ex-side { font-size: .72rem; font-weight: 800; }
  .ex-side.buy { color: #15803d; }
  .ex-side.sell { color: #b91c1c; }
  .ex-dot { color: #cbd5e1; font-size: .64rem; }
  .ex-setup { font-size: .72rem; font-weight: 700; color: #6366f1; }
  .ex-lvl { font-size: .72rem; font-weight: 700; color: #6d6d72; font-variant-numeric: tabular-nums; }
  .ex-factors { display: flex; flex-direction: column; gap: .4rem; }
  .ex-f { display: grid; grid-template-columns: 5.5rem 1fr 2.2rem; align-items: center; gap: .5rem; }
  .ex-fn { font-size: .74rem; font-weight: 600; color: #000; }
  .ex-fb { position: relative; height: 6px; border-radius: 4px; background: #ececf1; overflow: hidden; }
  .ex-fill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 4px; }
  .ex-fill.up { background: #22c55e; }
  .ex-fill.down { background: #ef4444; }
  .ex-fv { font-size: .74rem; font-weight: 800; text-align: right; font-variant-numeric: tabular-nums; }
  .ex-fv.up { color: #15803d; }
  .ex-fv.down { color: #b91c1c; }
  .ex-total { display: flex; align-items: center; justify-content: space-between; margin-top: .6rem; padding-top: .55rem; border-top: 1px solid #e5e5ea; }
  .ex-total span:first-child { font-size: .78rem; font-weight: 700; color: #000; }
  .ex-score { font-size: 1.3rem; font-weight: 800; color: #15803d; font-variant-numeric: tabular-nums; }
  .ios-acct-left { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
  .ios-acct-id { font-size: .9rem; font-weight: 700; color: #000; }
  .ios-acct-srv { font-size: .7rem; color: #6d6d72; width: 100%; }
  .ios-acct-bal { font-size: .9rem; font-weight: 800; color: #000; }
  /* Segmented controls inside iOS rows (reuse .set-seg / .set-seg-btn) */
  .ios-row .set-seg { width: 100%; }
  .set-section-old { margin-bottom: 1.2rem; }
  .set-sub-block { margin-top: .9rem; padding-top: .9rem; border-top: 1px solid var(--border); transition: opacity .2s; }
  .acct-card { display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto; gap: .1rem .5rem; background: var(--surface2, #f8fafc); border: 1.5px solid var(--border); border-radius: 12px; padding: .6rem .8rem; margin-bottom: .5rem; }
  .acct-card-main { display: flex; align-items: center; gap: .4rem; }
  .acct-card-bal { font-size: .88rem; font-weight: 800; color: var(--text); text-align: right; }
  .acct-opt-id { font-size: .88rem; font-weight: 800; color: var(--text); }
  .acct-opt-badge { font-size: .56rem; font-weight: 800; padding: .1rem .35rem; border-radius: 4px; }
  .acct-opt-badge.acct-demo { background: #dbeafe; color: #1d4ed8; }
  .acct-opt-badge.acct-live { background: #dcfce7; color: #15803d; }
  .acct-opt-srv { font-size: .68rem; color: var(--muted); grid-column: 1 / -1; }
  .set-row { display: flex; align-items: center; gap: .8rem; }
  .set-row-text { flex: 1; }
  .set-row-title { font-size: .82rem; font-weight: 800; color: var(--ink); }
  .set-row-sub { font-size: .68rem; color: var(--muted); line-height: 1.4; margin-top: .15rem; }
  .set-label { font-size: .72rem; font-weight: 800; color: var(--ink); margin-bottom: .5rem; }
  .set-hint { font-size: .66rem; color: var(--muted); line-height: 1.4; margin-top: .5rem; }
  .set-seg { display: flex; gap: .4rem; }
  .set-seg-btn { flex: 1; font-family: inherit; font-size: .8rem; font-weight: 700; color: var(--muted); cursor: pointer; background: #fff; border: 1px solid var(--border); border-radius: 8px; padding: .55rem; }
  .set-seg-btn.on { background: #4f46e5; color: #fff; border-color: #4f46e5; }
  /* iOS segmented control inside the settings sheet */
  .sheet-body .set-seg { gap: 0; background: #767680; background: rgba(118,118,128,.12); border-radius: 9px; padding: 2px; }
  .sheet-body .set-seg-btn { background: transparent; border: none; border-radius: 7px; color: #000; font-weight: 600; font-size: .82rem; padding: .45rem; }
  .sheet-body .set-seg-btn.on { background: #fff; color: #000; border: none; box-shadow: 0 1px 3px rgba(0,0,0,.14); }
  .set-switch { position: relative; flex-shrink: 0; width: 44px; height: 26px; }
  .set-switch input { opacity: 0; width: 0; height: 0; }
  .set-switch .set-knob { position: absolute; inset: 0; background: #cbd5e1; border-radius: 13px; transition: background .2s; cursor: pointer; }
  .set-switch .set-knob::before { content: ""; position: absolute; left: 3px; top: 3px; width: 20px; height: 20px; background: #fff; border-radius: 50%; transition: transform .2s; box-shadow: 0 1px 2px rgba(0,0,0,.2); }
  .set-switch input:checked + .set-knob { background: #15803d; }
  .set-switch input:checked + .set-knob::before { transform: translateX(18px); }
  /* Strategy filter chips */
  #view-signals .strat-filter { display: flex; gap: .4rem; margin-bottom: .8rem; flex-wrap: wrap; }
  #view-signals .strat-chip {
    display: inline-flex; align-items: center; gap: .3rem; font-family: inherit;
    font-size: .68rem; font-weight: 700; color: var(--muted); cursor: pointer;
    background: #fff; border: 1px solid var(--border); border-radius: 999px; padding: .35rem .7rem;
  }
  #view-signals .strat-chip.on { background: #111827; color: #fff; border-color: #111827; }
  #view-signals .strat-count {
    font-size: .58rem; font-weight: 800; background: var(--surface2); color: var(--muted);
    border-radius: 999px; padding: .05rem .35rem; min-width: 1rem; text-align: center;
  }
  #view-signals .strat-chip.on .strat-count { background: rgba(255,255,255,.25); color: #fff; }
  #view-signals .feed-src { font-size: .5rem; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: #6d28d9; background: #f3e8ff; padding: .1rem .32rem; border-radius: 4px; white-space: nowrap; }
  .agent-info { display: flex; flex-direction: column; gap: 1px; flex: 1; }
  .agent-title { font-size: .88rem; font-weight: 800; color: var(--text); }
  .agent-sub { font-size: .6rem; color: var(--muted); }
  .agent-switch {
    width: 42px; height: 24px; border-radius: 12px; border: none; background: #cbd5e1;
    position: relative; cursor: pointer; flex-shrink: 0; transition: background .2s; padding: 0;
  }
  .agent-switch.on { background: #15803d; }
  .agent-knob {
    position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%;
    background: #fff; transition: left .2s; box-shadow: 0 1px 2px rgba(0,0,0,.2);
  }
  .agent-switch.on .agent-knob { left: 21px; }
  .sig-sec-label {
    font-size: .58rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
    color: var(--muted); margin: .5rem 0 .3rem .1rem;
  }
  /* State badges */
  .sig-state {
    font-size: .5rem; font-weight: 800; text-transform: uppercase; letter-spacing: .02em;
    padding: .12rem .32rem; border-radius: 4px; white-space: nowrap;
  }
  .sig-state.pending { background: #fef3c7; color: #92400e; }
  .sig-state.approved { background: #dbeafe; color: #1e40af; }
  .sig-state.live { background: #dcfce7; color: #15803d; }
  .sig-state.rejected { background: #f3f4f6; color: #6b7280; }
  .sig-state.expired { background: #fee2e2; color: #b91c1c; }
  .feed-card.expired { opacity: .55; background: #fafafa; }
  .feed-card.expired .feed-side { filter: grayscale(.3); }
  /* Action panel */
  .sig-actions {
    display: flex; flex-wrap: wrap; gap: .4rem; padding: .5rem .2rem .2rem;
    margin: -.15rem 0 .15rem; border-bottom: 1px dashed var(--border);
  }
  #view-signals .sig-act, #view-trade .sig-act, #view-history .sig-act {
    font-family: inherit; font-size: .68rem; font-weight: 700; cursor: pointer;
    border: 1px solid var(--border); border-radius: 7px; padding: .5rem .7rem; background: #fff;
  }
  #view-signals .sig-act.approve, #view-trade .sig-act.approve, #view-history .sig-act.approve { background: #15803d; color: #fff; border-color: #15803d; flex: 1; }
  #view-signals .sig-act.reject, #view-trade .sig-act.reject, #view-history .sig-act.reject { color: #b91c1c; border-color: #fca5a5; }
  #view-signals .sig-act.analyze, #view-trade .sig-act.analyze, #view-history .sig-act.analyze { color: #6d28d9; border-color: #c4b5fd; }
  .sig-analysis {
    flex-basis: 100%; font-size: .68rem; line-height: 1.5; color: var(--text);
    background: #faf5ff; border: 1px solid #e9d5ff; border-radius: 7px; padding: .5rem .6rem; margin-top: .2rem;
  }
  .sig-analysis .an-load { color: #6d28d9; font-style: italic; }
  /* Horizontal icon actions below content */
  #view-signals .sig-actions-h, #view-trade .sig-actions-h {
    display: flex; gap: .4rem; margin-top: .55rem; padding-top: .55rem; border-top: 1px dashed var(--border);
  }
  #view-signals .sig-icon, #view-trade .sig-icon {
    height: 32px; border-radius: 7px; border: 1px solid var(--border);
    background: #fff; cursor: pointer; font-size: .72rem; font-weight: 700; line-height: 1;
    display: flex; align-items: center; justify-content: center; gap: .3rem; padding: 0 .7rem;
  }
  #view-signals .sig-icon.approve, #view-trade .sig-icon.approve { background: #15803d; color: #fff; border-color: #15803d; flex: 1; }
  #view-signals .sig-icon.reject, #view-trade .sig-icon.reject { color: #b91c1c; border-color: #fca5a5; }
  #view-signals .sig-icon.analyze, #view-trade .sig-icon.analyze { color: #6d28d9; border-color: #c4b5fd; }
  /* ── Signal FEED / Trade / History cards ── */
  #view-signals .sig-wrap, #view-trade .sig-wrap, #view-history .sig-wrap { padding: 0 0 1.4rem; }
  /* Timeline */
  .tl-date {
    font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em;
    color: var(--muted); margin: .3rem 0 .5rem .1rem;
  }
  .tl { position: relative; }
  #view-signals .tl-row { position: relative; display: block; }
  /* Signal life-cycle animation: new signals fade in; approved ones fade out slowly. */
  #view-signals .tl-row.sig-enter { animation: sigEnter 1.4s ease both; }
  #view-signals .tl-row.sig-leave { animation: sigLeave 3s ease both; pointer-events: none; }
  @keyframes sigEnter { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }
  @keyframes sigLeave {
    0% { opacity: 1; transform: translateY(0); max-height: 400px; }
    45% { opacity: 0; transform: translateY(6px); max-height: 400px; }
    100% { opacity: 0; transform: translateY(6px); max-height: 0; margin: 0; padding: 0; }
  }
  /* Aloka processing states shown as a badge on the row's time header. */
  #view-signals .tl-row.sig-scoring .tl-head::after { content: "\25D5\203F\25D5 Aloka scoring\2026"; margin-left: auto; font-size: .62rem; font-weight: 800; color: #a16207; background: #fef9c3; padding: .1rem .45rem; border-radius: 5px; animation: sigPulse 1s infinite; }
  #view-signals .tl-row.sig-rejected-flow .tl-head::after { content: "\2715 Rejected"; margin-left: auto; font-size: .62rem; font-weight: 800; color: #b91c1c; background: #fee2e2; padding: .1rem .45rem; border-radius: 5px; }
  /* Countdown time inside the Approve button (no ring). */
  #view-signals .flow-btn.approve { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; }
  #view-signals .ap-time { font-size: .82rem; font-weight: 800; color: #16a34a; font-variant-numeric: tabular-nums; }
  #view-signals .feed-card.sig-countdown { }
  /* Waiting list scrolls in the feed; the current signal is processed in a docked slot below. */
  #view-signals .tl { display: flex; flex-direction: column; }
  /* Processing dock — pinned to the bottom of the phone screen, just above the tab bar. */
  .proc-dock {
    position: absolute; left: 0; right: 0; bottom: 60px; z-index: 40;
    padding: .5rem .9rem .6rem;
    background: linear-gradient(to top, var(--bg) 74%, rgba(255,255,255,0));
    pointer-events: none;
  }
  /* Desktop sim: the dock's offset parent is the outer shell (~13px wider than the inner
     screen), so inset it so it sits within the rounded phone frame. */
  @media (min-width: 701px) {
    .proc-dock { left: 13px; right: 13px; bottom: 74px; }
  }
  .proc-dock[hidden] { display: none !important; }
  .proc-dock .tl-row { margin-bottom: 0; pointer-events: auto; }
  .proc-dock .tl-head { padding-top: 0; }
  /* The docked incoming card stands out clearly above the content it overlaps. */
  /* Dark theme for the docked incoming card so it stands out over the light content below. */
  .proc-dock .feed-card {
    background: #1e293b !important;
    border: 1.5px solid #334155 !important;
    box-shadow: 0 -2px 10px rgba(0, 0, 0, .2), 0 10px 32px rgba(0, 0, 0, .4);
  }
  .proc-dock .feed-card .tl-clock { color: #f1f5f9; }
  .proc-dock .feed-card .tl-strat, .proc-dock .feed-card .tl-tf { color: #cbd5e1; background: rgba(255,255,255,.08); }
  .proc-dock .feed-card .feed-side.buy { color: #4ade80; }
  .proc-dock .feed-card .feed-side.sell { color: #f87171; }
  .proc-dock .feed-card .feed-lot, .proc-dock .feed-card .fn i { color: #94a3b8; }
  .proc-dock .feed-card .fn b { color: #f1f5f9; }
  .proc-dock .feed-card .feed-time { color: #f1f5f9; }
  .proc-dock .feed-card .feed-break { color: #94a3b8; }
  .proc-dock .feed-card .feed-break b { color: #f1f5f9; }
  .proc-dock .feed-card .feed-kind { font-size: .48rem; padding: .12rem .35rem; }
  .proc-dock .feed-card .feed-kind.continuation { background: rgba(129,140,248,.22); color: #c7d2fe; }
  .proc-dock .feed-card .feed-kind.bounce { background: rgba(34,211,238,.2); color: #67e8f9; }
  .proc-dock .feed-card .tl-dot { background: #64748b; box-shadow: 0 0 0 1px #64748b; }
  /* Score box: keep colored states readable on dark. */
  .proc-dock .feed-card .feed-scorebox.auto { background: rgba(34,197,94,.2); color: #4ade80; }
  .proc-dock .feed-card .feed-scorebox.mid { background: rgba(245,158,11,.2); color: #fbbf24; }
  .proc-dock .feed-card .feed-scorebox.low { background: rgba(239,68,68,.2); color: #f87171; }
  .proc-dock .feed-card .fn em.tp { color: #4ade80; }
  .proc-dock .feed-card .fn em.sl { color: #f87171; }
  /* Score box + status messages keep their own colors but tuned for dark. */
  .proc-dock .feed-card .feed-scorebox.loading { background: #334155; color: #94a3b8; }
  .proc-dock .feed-card .sig-scoring-msg { background: rgba(250,204,21,.14); color: #fcd34d; }
  .proc-dock .feed-card .sig-result.pass { background: rgba(34,197,94,.16); color: #4ade80; }
  .proc-dock .feed-card .sig-result.hold { background: rgba(148,163,184,.18); color: #cbd5e1; }
  /* Incoming card rises UP from the bottom menu bar. */
  .proc-dock .tl-row.sig-enter { animation: sigPushUp .5s cubic-bezier(.32,.72,0,1) both; }
  @keyframes sigPushUp {
    0% { opacity: 0; transform: translateY(90px) scale(.97); }
    60% { opacity: 1; }
    100% { opacity: 1; transform: translateY(0) scale(1); }
  }
  /* A card that drops from the dock up into the waiting list. */
  #view-signals .sig-drop { animation: sigDrop .45s ease both; }
  @keyframes sigDrop { from { opacity: .4; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
  #view-signals .sig-settle { animation: sigSettle .4s ease both; }
  @keyframes sigSettle { from { opacity: .6; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
  @keyframes cardFlash {
    0%, 100% { border-color: var(--border); box-shadow: 0 0 0 0 rgba(59,130,246,0); }
    50% { border-color: #93c5fd; box-shadow: 0 0 0 2px rgba(59,130,246,.18); }
  }
  #view-signals .tl-row.sig-expired-flow .feed-card { opacity: .55; }
  #view-signals .flow-actions { display: flex; gap: .5rem; margin-top: .6rem; padding-top: .1rem; align-items: stretch; }
  #view-signals .flow-btn { font-family: inherit; font-size: .82rem; font-weight: 800; padding: .55rem; border-radius: 10px; border: none; cursor: pointer; }
  #view-signals .flow-btn.approve { flex: 1; background: #fff; color: #16a34a; border: 1.5px solid #16a34a; }
  #view-signals .flow-btn.approve:active { background: #f0fdf4; }
  #view-signals .flow-btn.reject { flex: 0 0 auto; background: transparent; color: #dc2626; border: 1.5px solid #dc2626; padding: .55rem .9rem; }
  #view-signals .flow-btn.reject:active { background: #fef2f2; }
  @keyframes sigPulse { 0%,100%{opacity:1} 50%{opacity:.55} }
  #view-signals .tl-body { min-width: 0; padding-bottom: .3rem; }
  /* Time header row — sits to the right of the dot, above the cards */
  #view-signals .feed-card .tl-head, .proc-dock .feed-card .tl-head {
    display: flex; align-items: center; gap: .4rem; flex-wrap: wrap;
    padding: 0; margin: 0 0 .6rem;
  }
  #view-signals .feed-card .tl-head.expired, .proc-dock .feed-card .tl-head.expired { opacity: .7; }
  #view-signals .tl-head.expired .tl-clock, #view-signals .tl-head.expired .tl-tf { color: var(--muted); }
  #view-signals .tl-chev { margin-left: auto; display: inline-block; font-size: .8rem; font-weight: 800; color: var(--muted); transition: transform .15s; transform: rotate(90deg); line-height: 1; flex-shrink: 0; }
  #view-signals .tl-chev.open { transform: rotate(-90deg); }
  .tl-exp-hint { font-size: .5rem; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: #b91c1c; background: #fee2e2; padding: .05rem .3rem; border-radius: 4px; }
  .tl-clock { font-size: .6rem; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
  .tl-tf { font-size: .46rem; font-weight: 800; text-transform: uppercase; letter-spacing: .01em; color: #475569; background: var(--surface2); padding: .08rem .3rem; border-radius: 4px; font-variant-numeric: tabular-nums; }
  .tl-strat { font-size: .46rem; font-weight: 800; text-transform: uppercase; letter-spacing: .02em; color: #374151; background: var(--surface2); padding: .08rem .3rem; border-radius: 4px; }
  #view-signals .tl-head.expired .tl-strat { color: var(--muted); background: var(--surface2); }
  .tl-dopen { font-size: .5rem; font-weight: 700; font-variant-numeric: tabular-nums; }
  .tl-dopen.up { color: #15803d; }
  .tl-dopen.down { color: #b91c1c; }
  .tl-dot.dim { opacity: .45; }
  .tl-rail { position: relative; display: flex; justify-content: center; align-self: flex-start; }
  #view-signals .tl-dot {
    display: inline-block; flex-shrink: 0; width: 9px; height: 9px; border-radius: 50%;
    background: #111827; box-shadow: 0 0 0 1px #111827;
  }
  #view-signals .tl-dot.dim { background: #cbd5e1; box-shadow: 0 0 0 1px #cbd5e1; opacity: 1; }
  .tl-row .feed-card { margin-bottom: .45rem; }
  /* Score box on the left, signal details on the right. */
  #view-signals .feed-main { display: flex; align-items: stretch; gap: .7rem; }
  #view-signals .feed-scorebox { flex-shrink: 0; width: 48px; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 10px; padding: .4rem 0; cursor: pointer; }
  #view-signals .feed-scorebox b { font-size: .95rem; font-weight: 800; line-height: 1; }
  #view-signals .feed-scorebox i { font-size: .5rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; font-style: normal; margin-top: .15rem; opacity: .8; }
  #view-signals .feed-scorebox.auto { background: #dcfce7; color: #15803d; }
  #view-signals .feed-scorebox.mid { background: #fef3c7; color: #92400e; }
  #view-signals .feed-scorebox.low { background: #fee2e2; color: #b91c1c; }
  #view-signals .feed-scorebox.loading { background: #f1f5f9; color: #94a3b8; }
  #view-signals .feed-scorebox.off { background: #f1f5f9; color: #94a3b8; }
  #view-signals .feed-scorebox.off b { font-size: .95rem; }
  #view-signals .feed-scorebox.off i { font-size: .42rem; }
  #view-signals .feed-scorebox.score-pop { animation: scorePop .35s ease; }
  #view-signals .feed-scorebox .sb-bars { display: flex; align-items: center; justify-content: center; gap: 2px; height: 20px; }
  #view-signals .feed-scorebox .sb-bars i { width: 3px; height: 100%; border-radius: 2px; background: #6366f1; transform-origin: center; animation: sbBars .9s ease-in-out infinite; }
  #view-signals .feed-scorebox .sb-bars i:nth-child(1) { animation-delay: 0s; }
  #view-signals .feed-scorebox .sb-bars i:nth-child(2) { animation-delay: .18s; }
  #view-signals .feed-scorebox .sb-bars i:nth-child(3) { animation-delay: .36s; }
  #view-signals .feed-scorebox .sb-bars i:nth-child(4) { animation-delay: .54s; }
  @keyframes sbBars { 0%, 100% { transform: scaleY(.3); opacity: .5; } 50% { transform: scaleY(1); opacity: 1; } }
  #view-signals .feed-detail { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .4rem; }
  .feed-basis-row { font-size: .62rem; color: var(--muted); margin-bottom: .45rem; }
  /* Split entry — two linked leg cards */
  .feed-col { min-width: 0; }
  .feed-col .feed-card { margin-bottom: .55rem; margin-left: .2rem; }
  .feed-col.linked {
    position: relative; margin-left: .2rem; margin-bottom: .55rem;
  }
  .feed-col.linked .feed-card { margin-left: 0; margin-bottom: .4rem; }
  .feed-col.linked .link-label {
    font-size: .5rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em;
    color: #b45309; margin-bottom: .35rem;
  }
  .feed-col.linked .link-note { font-size: .55rem; color: var(--muted); font-style: italic; margin-top: -.1rem; }
  .feed-leg-tag { font-size: .5rem; font-weight: 800; text-transform: uppercase; padding: .1rem .32rem; border-radius: 4px; }
  .feed-leg-tag.l1 { background: #dcfce7; color: #15803d; }
  .feed-leg-tag.l2 { background: #fef3c7; color: #b45309; }
  #view-signals .feed-kind, #view-trade .feed-kind, #view-history .feed-kind { font-size: .5rem; font-weight: 800; text-transform: uppercase; letter-spacing: .02em; padding: .15rem .4rem; border-radius: 4px; }
  .feed-kind.continuation { background: #e0e7ff; color: #3730a3; }
  .feed-kind.bounce { background: #cffafe; color: #0e7490; }
  .feed-card.pending-leg { border-style: dashed; opacity: .92; }
  #view-signals .feed-card, #view-trade .feed-card, #view-history .feed-card {
    border: 1px solid var(--border); border-radius: 11px; background: #fff;
    padding: .8rem .9rem; margin-bottom: .45rem;
  }
  .feed-card.accepted { background: #f0fdf4; }
  #view-signals .feed-card[style*="cursor:pointer"] { transition: border-color .15s, box-shadow .15s; }
  #view-signals .feed-card[style*="cursor:pointer"]:hover { border-color: #cbd5e1; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
  #view-signals .feed-card.open { border-color: #94a3b8; }
  .feed-head { display: flex; align-items: center; flex-wrap: wrap; gap: .3rem; margin-bottom: .45rem; }
  .feed-r1 { display: flex; align-items: center; flex-wrap: wrap; gap: .3rem; margin-bottom: .35rem; }
  .feed-time { font-size: .64rem; font-weight: 500; color: var(--text); font-variant-numeric: tabular-nums; }
  .feed-break { font-size: .62rem; font-weight: 700; color: var(--muted); font-variant-numeric: tabular-nums; }
  .feed-break b { color: var(--text); font-weight: 800; }
  .feed-side { font-size: .74rem; font-weight: 800; letter-spacing: .02em; }
  .feed-side.buy { color: #15803d; } .feed-side.sell { color: #b91c1c; }
  .feed-side.recover { color: #b45309; } .feed-side.swing.buy { color: #15803d; } .feed-side.swing.sell { color: #b91c1c; }
  .feed-lot { font-size: .64rem; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; }
  .feed-dot { font-size: .64rem; font-weight: 800; color: #cbd5e1; }
  .feed-setup { font-size: .64rem; font-weight: 700; color: #6366f1; white-space: nowrap; }
  .feed-lvl { font-size: .64rem; font-weight: 700; color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
  .feed-ctf { font-size: .64rem; font-weight: 800; color: #475569; white-space: nowrap; }
  .feed-lot i { font-style: normal; font-weight: 700; text-transform: uppercase; font-size: .5rem; letter-spacing: .03em; color: var(--muted); margin-right: .25rem; }
  #view-signals .feed-head-right, #view-trade .feed-head-right, #view-history .feed-head-right { margin-left: auto; display: flex; align-items: center; gap: .35rem; flex-shrink: 0; }
  .feed-score { font-size: .68rem; font-weight: 800; font-variant-numeric: tabular-nums; min-width: 26px; text-align: center; padding: .12rem .3rem; border-radius: 5px; flex-shrink: 0; }
  /* Score loading state — Aloka is scoring the freshly received signal. */
  .feed-score.scoring { background: #f1f5f9; color: transparent; position: relative; min-width: 26px; }
  .feed-score.scoring::after { content: ""; position: absolute; top: 50%; left: 50%; width: 10px; height: 10px; margin: -5px 0 0 -5px; border: 2px solid #cbd5e1; border-top-color: #6366f1; border-radius: 50%; animation: scoreSpin .6s linear infinite; }
  @keyframes scoreSpin { to { transform: rotate(360deg); } }
  .feed-score.score-pop { animation: scorePop .35s ease; }
  @keyframes scorePop { 0%{transform:scale(.6);opacity:0} 60%{transform:scale(1.15)} 100%{transform:scale(1);opacity:1} }
  /* "Aloka scoring…" badge while a new signal is being evaluated. */
  /* "Aloka scoring" message shown INSIDE the card, below the signal detail. */
  #view-signals .sig-scoring-msg { display: flex; align-items: center; gap: .45rem; margin-top: .6rem; padding: .5rem .7rem; background: #fef9c3; border-radius: 10px; font-size: .74rem; font-weight: 800; color: #a16207; }
  /* Decision result message (pass → auto-trade / hold → wait for approval). */
  #view-signals .sig-result { display: flex; align-items: flex-start; gap: .5rem; margin-top: .6rem; padding: .55rem .7rem; border-radius: 10px; font-size: .76rem; font-weight: 400; animation: sigEnter .4s ease both; }
  #view-signals .sig-result .sr-ico { font-size: .95rem; flex-shrink: 0; line-height: 1.3; }
  #view-signals .sig-result .sr-svg { width: 16px; height: 16px; flex-shrink: 0; stroke: currentColor; }
  #view-signals .sig-result.hold { align-items: center; }
  #view-signals .sig-result .sr-lines { display: flex; flex-direction: column; gap: .1rem; line-height: 1.35; }
  #view-signals .sig-result .sr-one { line-height: 1.35; }
  /* Animated forward arrows on the "Sending to Rex" message. */
  #view-signals .sig-result .sr-sep, .proc-dock .sig-result .sr-sep { opacity: .55; margin: 0 .05rem; font-weight: 700; }
  #view-signals .sig-result .sr-arrows, .proc-dock .sig-result .sr-arrows { display: inline-flex; align-items: center; margin-left: .15rem; flex-shrink: 0; gap: -2px; }
  #view-signals .sig-result .sr-arrows svg, .proc-dock .sig-result .sr-arrows svg { width: 13px; height: 13px; stroke: currentColor; margin-left: -4px; animation: srArrow 1.1s ease-in-out infinite; }
  #view-signals .sig-result .sr-arrows svg:nth-child(1), .proc-dock .sig-result .sr-arrows svg:nth-child(1) { animation-delay: 0s; }
  #view-signals .sig-result .sr-arrows svg:nth-child(2), .proc-dock .sig-result .sr-arrows svg:nth-child(2) { animation-delay: .18s; }
  #view-signals .sig-result .sr-arrows svg:nth-child(3), .proc-dock .sig-result .sr-arrows svg:nth-child(3) { animation-delay: .36s; }
  @keyframes srArrow { 0%, 100% { transform: translateX(0); opacity: .35; } 50% { transform: translateX(2px); opacity: 1; } }
  /* Single-row result (pass) is vertically centered with its icon. */
  #view-signals .sig-result.pass { background: #dcfce7; color: #15803d; align-items: center; }
  #view-signals .sig-result.hold { background: #f1f5f9; color: #475569; }
  #view-signals .sig-scoring-msg .ssm-dot { width: 12px; height: 12px; border: 2px solid #fde68a; border-top-color: #a16207; border-radius: 50%; animation: scoreSpin .6s linear infinite; flex-shrink: 0; margin-left: auto; }
  .feed-score.auto { background: #dcfce7; color: #15803d; }
  .feed-score.mid { background: #fef3c7; color: #92400e; }
  .feed-score.low { background: #fee2e2; color: #b91c1c; }
  .feed-tf { font-size: .5rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); background: var(--surface2); padding: .1rem .32rem; border-radius: 4px; }
  .feed-cat { font-size: .5rem; font-weight: 700; text-transform: uppercase; padding: .1rem .32rem; border-radius: 4px; }
  .feed-cat.scalp { background: #e0e7ff; color: #3730a3; }
  .feed-cat.swing { background: #ede9fe; color: #6d28d9; }
  .feed-basis { font-size: .6rem; color: var(--muted); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .feed-macro { font-size: .58rem; color: var(--muted); flex: 1; text-align: right; }
  .feed-state { flex-shrink: 0; }
  .feed-nums { display: grid; grid-template-columns: .85fr 1.2fr 1.2fr .65fr; gap: .35rem; }
  .feed-nums.nums3 { grid-template-columns: auto auto auto; justify-content: space-between; }
  .feed-nums .fn { display: flex; flex-direction: row; align-items: baseline; gap: .3rem; }
  .feed-nums .fn i { font-size: .5rem; font-style: normal; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); }
  .feed-nums .fn-row { display: flex; align-items: baseline; gap: .25rem; }
  .feed-nums .fn b { font-size: .72rem; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
  .feed-nums .fn em { font-size: .52rem; font-style: normal; font-weight: 700; }
  .feed-nums .fn em.tp { color: #15803d; } .feed-nums .fn em.sl { color: #b91c1c; }
  #view-signals .feed-card .sig-actions, #view-trade .feed-card .sig-actions, #view-history .feed-card .sig-actions { border-bottom: none; padding: .6rem 0 .1rem; margin: .6rem 0 0; border-top: 1px dashed var(--border); }
  #view-signals .sig-act.win, #view-trade .sig-act.win { background: #15803d; color: #fff; border-color: #15803d; flex: 1; }
  #view-signals .sig-act.loss, #view-trade .sig-act.loss { background: #b91c1c; color: #fff; border-color: #b91c1c; flex: 1; }
  #view-signals .sig-act.flat, #view-trade .sig-act.flat { color: var(--muted); }
  /* Trade summary bar */
  .trade-summary { display: flex; gap: 1rem; padding: .5rem .1rem .7rem; font-size: .72rem; font-weight: 700; color: var(--muted); }
  .trade-summary span { display: flex; gap: .3rem; }
  /* History stats */
  .hist-stats { display: grid; grid-template-columns: repeat(5, 1fr); gap: .3rem; margin-bottom: .8rem; padding: .7rem .5rem; background: #fff; border: 1px solid var(--border); border-radius: 11px; }
  .hist-stats .hs { display: flex; flex-direction: column; align-items: center; gap: 2px; }
  .hist-stats .hs-v { font-size: .9rem; font-weight: 800; color: var(--text); }
  .hist-stats .hs-v.win { color: #15803d; } .hist-stats .hs-v.loss { color: #b91c1c; }
  .hist-stats .hs-l { font-size: .5rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); }
  .hist-res { font-size: .56rem; font-weight: 800; text-transform: uppercase; padding: .12rem .38rem; border-radius: 4px; }
  .hist-res.win { background: #dcfce7; color: #15803d; }
  .hist-res.loss { background: #fee2e2; color: #b91c1c; }
  .hist-res.flat { background: #f3f4f6; color: #6b7280; }
  /* Week selector pinned at the top of the AI Forecast tab */
  #view-forecast .gw-top-wrap { padding: 10px 2px; }
  #view-forecast .gw-top-wrap .gw-picker { margin: 0; }
  #view-forecast .gw-top-wrap .tr-dd-btn { background: #ffffff; }

  /* ─── Bottom tab bar ─────────────────────────────────────── */
  .tabbar {
    display: flex; align-items: stretch; justify-content: space-around;
    background: #ffffff;
    border-top: 1px solid #d8e2f0;
  }
  .tabbar-btn {
    flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 3px; padding: 8px 0 6px; background: none; border: none; cursor: pointer;
    color: #9a9a95; font-family: inherit; font-size: .64rem; font-weight: 600;
    transition: color .15s;
  }
  .tabbar-btn .tab-box { display: inline-flex; align-items: center; justify-content: center; }
  .tabbar-btn svg { width: 22px; height: 22px; }
  .tabbar-btn.active { color: #1a1a17; }
  .tabbar-btn.active svg { color: #4f46e5; }
  /* On desktop (inside phone frame) the bar sticks to the phone bottom */
  @media (min-width: 701px) {
    .tabbar {
      position: absolute; left: 13px; right: 13px; bottom: 13px; z-index: 800;
      padding-bottom: 8px; /* no home indicator anymore */
      border-bottom-left-radius: 44px; border-bottom-right-radius: 44px;
      overflow: hidden;
    }
    .app-scroll { padding-bottom: 76px; } /* clear the bottom bar */
  }
  /* On real mobile the bar is fixed to the viewport bottom */
  @media (max-width: 700px) {
    .tabbar {
      position: fixed; left: 0; right: 0; bottom: 0; z-index: 800;
      padding-bottom: max(6px, env(safe-area-inset-bottom));
    }
  }

  /* ─── Profile / Auth ─────────────────────────────────────── */
  .profile-wrap { max-width: 460px; margin: 0 auto; padding: 1.4rem 1.1rem 2rem; }
  .profile-links { display: flex; flex-direction: column; gap: .5rem; margin-bottom: 1.4rem; }
  /* ── Clean login screen (logged-out) ── */
  #profileAuth .login-screen { max-width: 340px; margin: 0 auto; padding: 2.2rem 0 1rem; }
  #profileAuth .login-brand { text-align: center; margin-bottom: 1.8rem; }
  #profileAuth .login-logo {
    width: 56px; height: 56px; border-radius: 16px; margin: 0 auto .7rem;
    background: #4f46e5; color: #fff; font-size: 1.7rem; font-weight: 800;
    display: flex; align-items: center; justify-content: center;
  }
  #profileAuth .login-brand-name { font-size: 1.4rem; font-weight: 800; color: var(--ink); letter-spacing: -.01em; }
  #profileAuth .login-brand-tag { font-size: .78rem; font-weight: 600; color: var(--muted); margin-top: .1rem; }
  /* ── Rex Setup view ── */
  #view-rex .rex-wrap { max-width: 520px; margin: 0 auto; padding: 1rem 1.1rem 3rem; }
  #view-rex .rex-hero { text-align: center; padding: .5rem 0 1.2rem; }
  #view-rex .rex-hero-avatar { width: 52px; height: 52px; border-radius: 50%; background: #f1f5f9; display: flex; align-items: center; justify-content: center; font-size: 1.6rem; margin: 0 auto .6rem; }
  #view-rex .rex-hero-title { font-size: 1.05rem; font-weight: 800; color: var(--text); }
  #view-rex .rex-hero-sub { font-size: .78rem; line-height: 1.5; color: var(--muted); margin-top: .35rem; }
  #view-rex .rex-status { display: flex; align-items: center; gap: .5rem; justify-content: center; padding: .55rem .8rem; border-radius: 999px; background: #f1f5f9; border: 1px solid var(--border); margin-bottom: 1.3rem; }
  #view-rex .rex-status.online { background: #f0fdf4; border-color: #86efac; }
  #view-rex .rex-dot { width: 8px; height: 8px; border-radius: 50%; background: #cbd5e1; flex-shrink: 0; }
  #view-rex .rex-status.online .rex-dot { background: #15803d; box-shadow: 0 0 0 3px rgba(21,128,61,.15); }
  #view-rex .rex-status-text { font-size: .72rem; font-weight: 700; color: var(--text); }
  #view-rex .rex-section { margin-bottom: 1.3rem; }
  #view-rex .rex-sec-title { font-size: .82rem; font-weight: 800; color: var(--text); margin-bottom: .6rem; }
  #view-rex .rex-field { display: flex; flex-direction: column; gap: .3rem; margin-bottom: .7rem; }
  #view-rex .rex-field-row { flex-direction: row; align-items: center; justify-content: space-between; }
  #view-rex .rex-label { font-size: .72rem; font-weight: 700; color: var(--text); }
  #view-rex .rex-hint { font-weight: 500; color: var(--muted); }
  #view-rex .rex-input { font-family: inherit; font-size: .82rem; color: var(--text); background: #fff; border: 1px solid var(--border); border-radius: 8px; padding: .6rem .7rem; width: 100%; }
  #view-rex .rex-input:focus { outline: none; border-color: #6366f1; }
  #view-rex .rex-input-sm { width: 6rem; text-align: center; }
  #view-rex .rex-seg { display: flex; gap: .4rem; }
  #view-rex .rex-seg-btn { flex: 1; font-family: inherit; font-size: .78rem; font-weight: 700; color: var(--muted); cursor: pointer; background: #fff; border: 1px solid var(--border); border-radius: 8px; padding: .6rem; }
  #view-rex .rex-seg-btn.on { background: #111827; color: #fff; border-color: #111827; }
  #view-rex .rex-note { font-size: .68rem; color: var(--muted); line-height: 1.5; margin-top: .5rem; }
  #view-rex .rex-connect-btn { width: 100%; font-family: inherit; font-size: .9rem; font-weight: 800; color: #fff; background: #15803d; border: none; border-radius: 10px; padding: .85rem; cursor: pointer; margin-top: .5rem; }
  #view-rex .rex-connect-btn:disabled { opacity: .6; }
  #view-rex .rex-foot { font-size: .68rem; color: var(--muted); text-align: center; line-height: 1.5; margin-top: .8rem; }
  /* Rex account strip on the Trade tab */
  #view-trade .rex-acct { display: flex; align-items: center; gap: .5rem; padding: .6rem .8rem; border-radius: 10px; background: #f1f5f9; border: 1px solid var(--border); margin-bottom: .7rem; }
  /* MT5-style positions list */
  #view-trade .mt5-summary { display: flex; align-items: center; justify-content: space-between; padding: .7rem .9rem; background: #111827; border-radius: 12px; margin-bottom: .6rem; }
  #view-trade .mt5-sum-left { display: flex; flex-direction: column; gap: .1rem; }
  #view-trade .mt5-sum-label { font-size: .7rem; font-weight: 700; color: #cbd5e1; }
  #view-trade .mt5-sum-meta { font-size: .62rem; color: #94a3b8; font-variant-numeric: tabular-nums; }
  #view-trade .mt5-sum-pl { font-size: 1.15rem; font-weight: 800; font-variant-numeric: tabular-nums; }
  #view-trade .mt5-sum-pl.up { color: #4ade80; }
  #view-trade .mt5-sum-pl.down { color: #f87171; }
  #view-trade .mt5-row { background: #fff; border: 1px solid var(--border); border-radius: 11px; margin-bottom: .5rem; overflow: hidden; cursor: pointer; }
  /* Plain MT5 terminal rows — no cards, just rows divided by lines */
  #view-trade .m5-list { background: #fff; border: none; border-bottom: 1px solid var(--border); border-radius: 0; overflow: hidden; margin-left: 0; margin-right: 0; }
  /* ── MT5-style History ── */
  /* Date-period button in the header */
  .hdr-period { display: inline-flex; align-items: center; gap: .35rem; font-family: inherit; font-size: .8rem; font-weight: 700; color: #4f46e5; background: #eef2ff; border: none; border-radius: 999px; padding: .4rem .7rem; cursor: pointer; }
  .hdr-period:active { background: #e0e7ff; }
  /* Period picker sheet options */
  .hp-opts { display: flex; flex-direction: column; gap: .1rem; background: #fff; border-radius: 12px; overflow: hidden; }
  .hp-opt { display: flex; align-items: center; justify-content: space-between; width: 100%; font-family: inherit; font-size: .95rem; font-weight: 600; color: var(--text); background: #fff; border: none; border-bottom: 1px solid #f0f1f4; padding: .9rem 1rem; cursor: pointer; text-align: left; }
  .hp-opt:last-child { border-bottom: none; }
  .hp-opt:active { background: #f8fafc; }
  .hp-opt.on { color: #4f46e5; font-weight: 800; }
  .hp-check { color: #4f46e5; font-weight: 800; }
  /* Custom time range */
  .hp-custom { margin-top: .8rem; background: #fff; border-radius: 12px; padding: .9rem 1rem; }
  .hp-custom[hidden] { display: none; }
  .hp-custom-row { display: flex; align-items: center; gap: .7rem; margin-bottom: .6rem; }
  .hp-custom-row label { flex: 0 0 3rem; font-size: .78rem; font-weight: 700; color: #64748b; }
  .hp-date { flex: 1; font-family: inherit; font-size: .9rem; color: var(--text); background: #f1f5f9; border: 1px solid #e2e8f0; border-radius: 9px; padding: .55rem .7rem; -webkit-appearance: none; }
  .hp-custom-err { font-size: .74rem; color: #dc2626; min-height: .9rem; margin-bottom: .3rem; }
  .hp-apply { width: 100%; border: none; background: #4f46e5; color: #fff; font-family: inherit; font-size: .9rem; font-weight: 800; border-radius: 10px; padding: .7rem; cursor: pointer; }
  .hp-apply:active { filter: brightness(.95); }
  #view-history .h5-periods { display: flex; gap: .4rem; overflow-x: auto; padding: .2rem 12px .7rem; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  #view-history .h5-periods::-webkit-scrollbar { display: none; }
  #view-history .h5-pill { flex-shrink: 0; font-family: inherit; font-size: .74rem; font-weight: 700; color: #64748b; background: #f1f5f9; border: 1px solid transparent; border-radius: 999px; padding: .35rem .8rem; cursor: pointer; white-space: nowrap; }
  #view-history .h5-pill.on { background: #4f46e5; color: #fff; }
  /* Aloka analysis lives inside the summary bar — tap the bar to expand */
  #view-history .h5-summary { display: block; background: #f1f3f6; color: var(--text); border-bottom: 1px solid var(--border); padding: 0; cursor: pointer; }
  #view-history .h5-sum-row { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .8rem 1rem; }
  #view-history .h5-sum-aloka { display: inline-flex; align-items: center; gap: .35rem; flex-shrink: 0; }
  #view-history .h5-sum-ava { font-size: .78rem; color: #4f46e5; }
  #view-history .h5-sum-aloka .ha-chev { color: #4f46e5; font-size: 1.05rem; font-weight: 700; transform: rotate(0deg); transition: transform .18s; }
    #histAnalysisSheet .ha-body { background: #eef2ff; border-radius: 14px; padding: 1rem; }
    #histAnalysisSheet .ha-headline { display: flex; align-items: flex-start; gap: .5rem; font-size: .86rem; color: #4338ca; font-weight: 600; line-height: 1.4; margin-bottom: .8rem; }
  #histAnalysisSheet .ha-pts { display: flex; flex-direction: column; gap: .55rem; }
  #histAnalysisSheet .ha-ava { flex-shrink: 0; font-size: .8rem; color: #4f46e5; margin-top: .1rem; }
  #histAnalysisSheet .ha-headtxt { display: flex; flex-direction: column; gap: .15rem; }
  #histAnalysisSheet .ha-headtxt b { font-size: .82rem; font-weight: 800; color: #3730a3; }
  #histAnalysisSheet .ha-headtxt span { font-size: .84rem; color: #4338ca; line-height: 1.4; }
  #histAnalysisSheet .ha-pts { display: flex; flex-direction: column; gap: .55rem; }
  #histAnalysisSheet .ha-pt { display: flex; align-items: flex-start; gap: .55rem; }
  #histAnalysisSheet .ha-ic { flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: .74rem; font-weight: 800; margin-top: .05rem; }
  #histAnalysisSheet .ha-pt.up .ha-ic { background: #dcfce7; color: #15803d; }
  #histAnalysisSheet .ha-pt.down .ha-ic { background: #fee2e2; color: #b91c1c; }
  #histAnalysisSheet .ha-pt.warn .ha-ic { background: #fef3c7; color: #92400e; }
  #histAnalysisSheet .ha-txt { display: flex; flex-direction: column; gap: .1rem; }
  #histAnalysisSheet .ha-txt b { font-size: .8rem; font-weight: 700; color: #1e1b4b; }
  #histAnalysisSheet .ha-txt span { font-size: .78rem; color: #4b5563; line-height: 1.4; }
  #view-history .h5-sum-stat { display: inline-flex; align-items: baseline; gap: .35rem; white-space: nowrap; }
  #view-history .h5-sum-stat i { font-style: normal; font-size: .6rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #64748b; }
  #view-history .h5-sum-stat b { font-size: .88rem; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; }
  #view-history .h5-sum-pl { margin-left: auto; font-size: .82rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
  #view-history .h5-sum-pl.up { color: #15803d; }
  #view-history .h5-sum-pl.down { color: #b91c1c; }
  #view-history .h5-list { background: #fff; border-bottom: 1px solid var(--border); }
  #view-history .h5-row { padding: .6rem 1rem; border-bottom: 1px solid #eef0f3; }
  #view-history .h5-row:last-child { border-bottom: none; }
  #view-history .h5-r1 { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; }
  #view-history .h5-r2 { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; margin-top: .2rem; }
  #view-history .h5-sym { font-size: .82rem; font-weight: 700; color: var(--text); }
  #view-history .h5-side { font-weight: 700; }
  #view-history .h5-side.buy { color: #2563eb; }
  #view-history .h5-side.sell { color: #dc2626; }
  #view-history .h5-pl { font-size: .72rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
  #view-history .h5-pl.side-buy { color: #2563eb; }
  #view-history .h5-pl.side-sell { color: #dc2626; }
  #view-history .h5-px { font-size: .78rem; font-variant-numeric: tabular-nums; color: var(--muted); }
  #view-history .h5-arr { color: #cbd5e1; }
  #view-history .h5-time { font-size: .68rem; color: #94a3b8; font-variant-numeric: tabular-nums; white-space: nowrap; }
  /* Fixed account box below the header — full-bleed edge to edge */
  #view-trade .rex-acctbox { background: #f1f3f6; border-radius: 0; border-bottom: 1px solid var(--border); padding: .55rem 1rem; margin-left: 0; margin-right: 0; color: var(--text); }
  /* Fixed account box below the header — full-bleed edge to edge */
  #view-trade .rex-acctbox { background: #f1f3f6; border-radius: 0; border-bottom: 1px solid var(--border); padding: .55rem 1rem; margin-left: 0; margin-right: 0; color: var(--text); }
  /* Fixed account box below the header — single row */
  #view-trade .rax-stats { display: flex; align-items: baseline; gap: .9rem; }
  #view-trade .rax-stat { display: inline-flex; align-items: baseline; gap: .35rem; white-space: nowrap; }
  #view-trade .rax-stat i { font-style: normal; font-size: .6rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #64748b; }
  #view-trade .rax-stat b { font-size: .84rem; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; }
  #view-trade .rax-gl { margin-left: auto; font-size: .84rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
  #view-trade .rax-gl.up { color: #15803d; }
  #view-trade .rax-gl.down { color: #b91c1c; }
  #view-trade .m5-row { padding: .6rem .8rem; border-bottom: 1px solid #eef0f3; cursor: pointer; }
  #view-trade .m5-row:last-child { border-bottom: none; }
  #view-trade .m5-row:active { background: #f8fafc; }
  #view-trade .m5-r-main { display: flex; align-items: stretch; gap: .7rem; }
  #view-trade .m5-scorebox { flex-shrink: 0; width: 42px; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 9px; }
  #view-trade .m5-scorebox b { font-size: 1rem; font-weight: 800; line-height: 1; }
  #view-trade .m5-scorebox i { font-size: .46rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; font-style: normal; margin-top: .15rem; opacity: .8; }
  #view-trade .m5-scorebox.auto { background: #dcfce7; color: #15803d; }
  #view-trade .m5-scorebox.mid { background: #fef3c7; color: #92400e; }
  #view-trade .m5-scorebox.low { background: #fee2e2; color: #b91c1c; }
  #view-trade .m5-r-body { flex: 1; min-width: 0; }
  #view-trade .m5-r1 { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; }
  #view-trade .m5-r2 { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; margin-top: .15rem; }
  #view-trade .m5-r3 { margin-top: .15rem; }
  #view-trade .m5-r-sym { font-size: .82rem; font-weight: 700; color: var(--text); }
  #view-trade .m5-r-side { font-weight: 700; }
  #view-trade .m5-r-side.buy { color: #2563eb; }
  #view-trade .m5-r-side.sell { color: #dc2626; }
  #view-trade .m5-r-pl { font-size: .78rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
  #view-trade .m5-r-pl.side-buy { color: #2563eb; }
  #view-trade .m5-r-pl.side-sell { color: #dc2626; }
  #view-trade .m5-r-px { font-size: .78rem; font-variant-numeric: tabular-nums; color: var(--muted); display: inline-flex; align-items: baseline; gap: .4rem; }
  #view-trade .m5-r-entry { color: var(--muted); }
  #view-trade .m5-r-arr { color: #cbd5e1; }
  #view-trade .m5-r-now { color: var(--text); font-weight: 600; }
  #view-trade .m5-r-setup { font-size: .68rem; font-weight: 600; color: var(--text); }
  /* expand */
  #view-trade .m5-detail { margin-top: .55rem; padding-top: .55rem; border-top: 1px dashed #e5e7eb; }
  #view-trade .m5-det-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .5rem; margin-bottom: .5rem; }
  #view-trade .m5-dc { display: flex; flex-direction: column; gap: .15rem; }
  #view-trade .m5-dc i { font-style: normal; font-size: .56rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #94a3b8; }
  #view-trade .m5-dc b { font-size: .78rem; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; }
  #view-trade .m5-dc b.tp { color: #16a34a; }
  #view-trade .m5-dc b.sl { color: #dc2626; }
  #view-trade .m5-close { width: 100%; margin-top: .4rem; border: 1px solid #fecaca; background: #fef2f2; color: #dc2626; font-family: inherit; font-size: .78rem; font-weight: 700; border-radius: 8px; padding: .5rem; cursor: pointer; }
  #view-trade .m5-close:active { background: #fee2e2; }
  #view-trade .mt5-main { display: flex; align-items: center; justify-content: space-between; padding: .7rem .85rem; gap: .6rem; }
  #view-trade .mt5-left { min-width: 0; flex: 1; }
  #view-trade .mt5-symline { display: flex; align-items: center; gap: .4rem; margin-bottom: .25rem; }
  #view-trade .mt5-symbol { font-size: .82rem; font-weight: 800; color: var(--text); }
  #view-trade .mt5-side { font-size: .6rem; font-weight: 800; text-transform: uppercase; letter-spacing: .02em; padding: .1rem .35rem; border-radius: 4px; }
  #view-trade .mt5-side.buy { background: #dcfce7; color: #15803d; }
  #view-trade .mt5-side.sell { background: #fee2e2; color: #b91c1c; }
  #view-trade .mt5-score { font-size: .58rem; font-weight: 800; color: #15803d; background: #f0fdf4; border: 1px solid #86efac; padding: .05rem .3rem; border-radius: 4px; }
  #view-trade .mt5-setupline { font-size: .66rem; font-weight: 700; color: #6366f1; margin: .1rem 0 .05rem; }
  #view-trade .mt5-live-px { font-variant-numeric: tabular-nums; transition: color .2s; }
  #view-trade .mt5-pl.tick-flash { animation: plFlash .3s ease; }
  @keyframes plFlash { 0%{ transform: scale(1); } 40%{ transform: scale(1.06); } 100%{ transform: scale(1); } }
  #view-trade .mt5-priceline { font-size: .74rem; color: var(--muted); font-variant-numeric: tabular-nums; }
  #view-trade .mt5-arrow { color: #cbd5e1; margin: 0 .1rem; }
  #view-trade .mt5-pl { font-weight: 800; font-variant-numeric: tabular-nums; flex-shrink: 0; }
  #view-trade .mt5-pl.up { color: #15803d; }
  #view-trade .mt5-pl.down { color: #b91c1c; }
  #view-trade .mt5-detail { border-top: 1px solid var(--border); padding: .6rem .85rem; background: #fafafa; }
  #view-trade .mt5-det-row { display: flex; align-items: center; justify-content: space-between; font-size: .74rem; padding: .18rem 0; }
  #view-trade .mt5-det-row span { color: var(--muted); }
  #view-trade .mt5-det-row b { color: var(--text); font-variant-numeric: tabular-nums; }
  #view-trade .mt5-auto { font-size: .68rem; font-weight: 700; color: #4f46e5; }
  #view-trade .mt5-actions { margin-top: .5rem; }
  #view-trade .mt5-act.close { width: 100%; font-family: inherit; font-size: .78rem; font-weight: 800; color: #b91c1c; background: #fff; border: 1px solid #fecaca; border-radius: 8px; padding: .55rem; cursor: pointer; }
  #view-trade .mt5-act.close:active { background: #fef2f2; }
  #view-trade .rex-acct.online { background: #f0fdf4; border-color: #86efac; }
  #view-trade .rex-acct-dot { width: 8px; height: 8px; border-radius: 50%; background: #cbd5e1; flex-shrink: 0; }
  #view-trade .rex-acct.online .rex-acct-dot { background: #15803d; box-shadow: 0 0 0 3px rgba(21,128,61,.15); }
  #view-trade .rex-acct-main { font-size: .72rem; font-weight: 700; color: var(--text); flex: 1; }
  #view-trade .rex-acct-bal { font-size: .78rem; font-weight: 800; color: #15803d; font-variant-numeric: tabular-nums; }
  #view-trade .rex-acct-cta { font-size: .7rem; font-weight: 800; color: #6366f1; }
  /* Signal Logic document */
  #view-logic .doc-wrap { max-width: 560px; margin: 0 auto; padding: 1.1rem 1.1rem 3rem; }
  #view-logic .doc-updated { font-size: .62rem; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; font-weight: 700; margin-bottom: .8rem; }
  #view-logic .doc-lead { font-size: .88rem; line-height: 1.55; color: var(--text); margin-bottom: 1.4rem; }
  #view-logic .doc-h { font-size: .82rem; font-weight: 800; color: var(--text); margin: 1.5rem 0 .5rem; }
  #view-logic p { font-size: .8rem; line-height: 1.6; color: var(--text); margin-bottom: .5rem; }
  #view-logic .doc-ul { margin: .3rem 0 .6rem; padding-left: 1.1rem; }
  #view-logic .doc-ul li { font-size: .78rem; line-height: 1.55; color: var(--text); margin-bottom: .3rem; }
  #view-logic .doc-card { border: 1px solid var(--border); border-radius: 10px; padding: .8rem .9rem; margin: .6rem 0; background: #fff; }
  #view-logic .doc-card-h { margin-bottom: .4rem; }
  #view-logic .doc-tag { font-size: .58rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; padding: .2rem .5rem; border-radius: 5px; }
  #view-logic .doc-tag.cont { background: #e0e7ff; color: #3730a3; }
  #view-logic .doc-tag.bnc { background: #cffafe; color: #0e7490; }
  #view-logic .doc-pill { font-size: .68rem; font-weight: 700; background: #fee2e2; color: #b91c1c; padding: .05rem .35rem; border-radius: 4px; }
  #view-logic .doc-note { border: 1px solid #fde68a; background: #fffbeb; border-radius: 10px; padding: .9rem 1rem; margin-top: 1.6rem; }
  #view-logic .doc-note-h { font-size: .82rem; font-weight: 800; color: #92400e; margin-bottom: .5rem; }
  #view-logic .doc-note p { color: #78350f; }
  #view-logic .doc-note-sub { font-size: .72rem; font-style: italic; color: #a16207; margin-top: .4rem; }
  .profile-link {
    display: flex; align-items: center; gap: .7rem; width: 100%;
    padding: .8rem .9rem; border: 1px solid var(--border); border-radius: 12px;
    background: #fff; cursor: pointer; font-family: inherit; text-align: left; transition: border-color .15s;
  }
  .profile-link:hover { border-color: var(--muted); }
  .profile-link .pl-icon { color: #2c3e6b; flex-shrink: 0; }
  .profile-link .pl-icon svg { width: 22px; height: 22px; }
  .profile-link .pl-text { display: flex; flex-direction: column; gap: 1px; flex: 1; }
  .profile-link .pl-title { font-size: .9rem; font-weight: 800; color: var(--text); }
  .profile-link .pl-sub { font-size: .68rem; color: var(--muted); }
  .profile-link .pl-chev { color: var(--muted); flex-shrink: 0; }
  .profile-link .pl-chev svg { width: 16px; height: 16px; }
  /* iOS Settings-style grouped card (used on both logged-out and logged-in profile) */
  #profileAuth .auth-center {
    min-height: calc(100vh - 210px); display: flex; flex-direction: column; justify-content: center;
    max-width: 400px; margin: 0 auto; padding: 1rem 0;
  }
  #profileAuth .login-brand { text-align: center; padding: 0 0 1.6rem; }
  /* Logged-in hero */
  #profileUser .user-hero { display: flex; align-items: center; gap: .9rem; text-align: left; padding: 1rem 12px 1.2rem; }
  #profileUser .user-hero .profile-avatar { margin: 0; width: 56px; height: 56px; font-size: 1.4rem; flex-shrink: 0; }
  #profileUser .user-hero-txt { display: flex; flex-direction: column; min-width: 0; }
  #profileUser .user-hero-name { font-size: 1.15rem; font-weight: 800; color: var(--ink); }
  #profileUser .user-hero-email { font-size: .8rem; color: var(--muted); margin-top: .1rem; }
  #profileAuth .pl-group, #profileUser .pl-group {
    background: transparent; border-radius: 0; overflow: hidden; margin-bottom: 1rem;
    box-shadow: none; border: none; border-top: 1px solid var(--border);
  }
  #profileAuth .pl-group:last-child, #profileUser .pl-group:last-child { margin-bottom: 0; }
  #profileAuth .pl-group .profile-link, #profileUser .pl-group .profile-link {
    border: none; border-radius: 0; background: transparent;
    border-bottom: 1px solid var(--border); padding: .95rem 1rem;
  }
  #profileAuth .pl-group .profile-link:last-child, #profileUser .pl-group .profile-link:last-child { border-bottom: 1px solid var(--border); }
  #profileAuth .pl-group .profile-link:active, #profileUser .pl-group .profile-link:active { background: #f1f5f9; }
  #profileAuth .pl-group .profile-link .pl-icon, #profileUser .pl-group .profile-link .pl-icon {
    width: 30px; height: 30px; border-radius: 8px; background: #eef2ff; color: #4f46e5;
    display: flex; align-items: center; justify-content: center;
  }
  #profileAuth .pl-group .profile-link .pl-icon svg, #profileUser .pl-group .profile-link .pl-icon svg { width: 18px; height: 18px; }
  #profileAuth .pl-group .profile-link .pl-icon.pl-rex-logo, #profileUser .pl-group .profile-link .pl-icon.pl-rex-logo { background: #2563eb; color: #fff; border-radius: 50%; font-size: .85rem; font-weight: 800; }
  .brand-title .title-back {
    display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
    color: var(--muted); margin-right: .1rem; vertical-align: middle;
  }
  .brand-title .title-back:hover { color: var(--text); }
  .profile-hero { text-align: center; padding: 1rem 0 1.4rem; }
  .profile-avatar {
    width: 76px; height: 76px; border-radius: 50%; margin: 0 auto .8rem;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #6366f1, #4f46e5);
    color: #fff; font-size: 2rem; font-weight: 800;
  }
  .profile-avatar-empty { background: #ecece9; color: #b5b5b0; }
  .profile-avatar-empty svg { width: 40px; height: 40px; }
  .profile-hero-title { font-size: 1.15rem; font-weight: 800; color: var(--ink); }
  .profile-hero-sub { font-size: .84rem; color: var(--muted); margin-top: .3rem; line-height: 1.5; padding: 0 1rem; }
  .auth-tabs { display: flex; gap: 6px; background: #f2f2ef; border-radius: 12px; padding: 4px; margin-bottom: 1.3rem; }
  .auth-tab {
    flex: 1; padding: .6rem; border: none; background: none; cursor: pointer;
    font-family: inherit; font-size: .84rem; font-weight: 700; color: var(--muted);
    border-radius: 9px; transition: all .15s;
  }
  .auth-tab.active { background: #fff; color: var(--ink); box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
  .auth-form[hidden] { display: none; }
  .auth-field { display: flex; flex-direction: column; gap: .35rem; margin-bottom: .9rem; }
  .auth-label { display: block; font-size: .72rem; font-weight: 700; color: var(--ink); letter-spacing: .01em; margin: 0; }
  .auth-input {
    width: 100%; padding: .78rem .85rem; font-size: .9rem; font-family: inherit;
    border: 1px solid var(--border); border-radius: 11px; background: #fafafa; color: var(--ink);
    box-sizing: border-box; transition: border-color .15s, background .15s;
  }
  .auth-input::placeholder { color: #9ca3af; }
  .auth-input:focus { outline: none; border-color: #4f46e5; background: #fff; box-shadow: 0 0 0 3px rgba(79,70,229,.12); }
  .auth-submit {
    width: 100%; margin-top: .5rem; padding: .85rem; font-size: .92rem; font-weight: 800; font-family: inherit;
    color: #fff; background: #4f46e5; border: none; border-radius: 11px; cursor: pointer; transition: opacity .15s;
  }
  .auth-submit:hover { opacity: .92; }
  .auth-err { margin-top: .7rem; font-size: .78rem; color: var(--red, #b83a2e); min-height: 1rem; text-align: center; }
  .auth-note { margin-top: 1.2rem; font-size: .7rem; color: var(--muted); text-align: center; line-height: 1.5; }
  /* ── Login modal ── */
  .auth-modal { position: absolute; inset: 0; z-index: 1000; display: flex; align-items: flex-end; justify-content: center; }
  .auth-modal[hidden] { display: none; }
  .auth-modal .auth-modal-backdrop { position: absolute; inset: 0; background: rgba(15,23,42,.45); backdrop-filter: blur(2px); }
  .auth-modal .auth-modal-card {
    position: relative; z-index: 1; width: 100%; max-width: 440px; background: #fff;
    border-radius: 20px 20px 0 0; padding: 1.6rem 1.3rem calc(1.4rem + env(safe-area-inset-bottom));
    box-shadow: 0 -8px 40px rgba(0,0,0,.2); box-sizing: border-box;
    animation: authSlideUp .25s ease; max-height: 88%; overflow-y: auto;
  }
  @keyframes authSlideUp { from { transform: translateY(100%); } to { transform: translateY(0); } }
  .auth-modal .auth-modal-close {
    position: absolute; top: .9rem; right: 1rem; width: 30px; height: 30px; border-radius: 50%;
    border: none; background: #f1f5f9; color: var(--muted); font-size: .85rem; cursor: pointer;
    display: flex; align-items: center; justify-content: center; padding: 0; z-index: 2;
  }
  .auth-modal .auth-modal-head { text-align: center; margin-bottom: 1.3rem; }
  .auth-modal .auth-modal-logo {
    width: 48px; height: 48px; border-radius: 14px; margin: 0 auto .6rem;
    background: #4f46e5; color: #fff; font-size: 1.5rem; font-weight: 800;
    display: flex; align-items: center; justify-content: center;
  }
  .auth-modal .auth-modal-title { font-size: 1.15rem; font-weight: 800; color: var(--ink); }
  .auth-modal .auth-modal-sub { font-size: .76rem; color: var(--muted); margin-top: .2rem; line-height: 1.45; padding: 0 .5rem; }
  .auth-modal .auth-tabs { margin-bottom: 1.2rem; }
  .auth-modal .auth-field { display: flex; flex-direction: column; gap: .35rem; margin-bottom: .9rem; }
  .auth-modal .auth-input { width: 100%; box-sizing: border-box; }
  /* Logged-out brand block */
  #profileAuth .login-brand { text-align: center; padding: 1.6rem 0 1.5rem; }
  .profile-menu { margin-top: .6rem; }
  .profile-row {
    display: flex; align-items: center; gap: .8rem; padding: .95rem .3rem;
    border-bottom: 1px solid var(--border); font-size: .9rem; font-weight: 600; color: var(--ink);
    cursor: pointer;
  }
  .profile-row-ic { font-size: 1.1rem; }
  .profile-row-arr { margin-left: auto; color: var(--muted); font-size: 1.1rem; }
  .auth-logout {
    display: block; width: 100%; margin-top: 1.2rem; padding: .4rem; font-size: .9rem; font-weight: 600; font-family: inherit;
    color: #dc2626; background: transparent; border: none; cursor: pointer; text-align: center;
  }
  .auth-logout:active { opacity: .6; }
  .brand {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    min-height: 28px; /* keep the header height stable even when title/logo are hidden */
  }
  .brand-logo { display: flex; align-items: center; gap: 10px; }
  .brand-logo[hidden] { display: none; }
  .brand .name[hidden] { display: none; }
  .brand-title {
    font-size: 1.05rem; font-weight: 800; color: var(--text); letter-spacing: -0.01em;
  }
  .brand-title[hidden] { display: none; }
  .brand-title.sig-vtabs { display: flex; gap: .9rem; align-items: baseline; }
  .brand-title .sig-vtab {
    font-size: 1.05rem; font-weight: 800; color: var(--muted); cursor: pointer;
    letter-spacing: -0.01em; transition: color .15s; padding-bottom: 1px;
    border-bottom: 2px solid transparent;
  }
  .brand-title .sig-vtab.active { color: var(--text); border-bottom-color: var(--gold, #4f46e5); }
  .brand-subtabs {
    display: flex; gap: .35rem; margin-left: auto;
  }
  .brand-subtabs[hidden] { display: none; }
  /* Timeframe tabs in the header (Strategy page) */
  .hdr-tf { display: inline-flex; gap: 3px; background: var(--surface2, #f1f5f9); border-radius: 9px; padding: 3px; }
  .hdr-symbol { display: inline-flex; align-items: center; gap: .4rem; }
  .hdr-symbol .hdr-sym-logo { width: 22px; height: 22px; display: inline-flex; }
  .hdr-symbol .hdr-sym-logo svg { width: 22px; height: 22px; }
  .hdr-symbol .hdr-sym-txt { font-size: .95rem; font-weight: 800; color: var(--text); letter-spacing: .01em; }
  .hdr-tf .htf-btn { font-family: inherit; font-size: .68rem; font-weight: 800; color: var(--muted); background: transparent; border: none; border-radius: 6px; padding: .32rem .5rem; cursor: pointer; white-space: nowrap; }
  .hdr-tf .htf-btn.on { background: #111827; color: #fff; }
  .brand-subtabs .sig-dd {
    font-family: inherit; font-size: .72rem; font-weight: 600; color: var(--text);
    background: #ffffff; border: 1px solid var(--border); border-radius: 8px;
    padding: .5rem .55rem; cursor: pointer; -webkit-appearance: none; appearance: none;
    transition: border-color .15s;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%236b7280' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right .4rem center; padding-right: 1.35rem;
  }
  .brand-subtabs .sig-dd:hover { border-color: var(--border-hi, var(--muted)); }
  /* ── Strategy single page: chart (3/4) on top + strategy carousel (1/4) at bottom ── */
  /* Strategy page: chart fills, carousel fixed at the bottom (page never scrolls). */
  #view-levels:not([hidden]) { display: flex; flex-direction: column; height: 100%; min-height: 0; overflow: hidden; }
  #view-levels .strat-page { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; overflow: hidden; }
  #view-levels .strat-chart-section { position: relative; flex: 1 1 auto; min-height: 0; overflow: hidden; }
  #view-levels .ac-host { position: absolute; inset: 0; }
  /* Timeframe tabs on the chart */
  #view-levels .chart-tf { position: absolute; top: 10px; left: 10px; z-index: 8; display: inline-flex; gap: 4px; background: rgba(255,255,255,.85); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); border: 1px solid var(--border); border-radius: 9px; padding: 3px; }
  #view-levels .chart-tf[hidden], #view-levels .chart-view-toggle[hidden] { display: none !important; }
  #view-levels .ctf-btn { font-family: inherit; font-size: .68rem; font-weight: 800; color: var(--muted); background: transparent; border: none; border-radius: 6px; padding: .3rem .55rem; cursor: pointer; }
  #view-levels .ctf-btn.on { background: #111827; color: #fff; }
  /* Levels overlay toggle (top-right) — on/off */
  #view-levels .chart-view-toggle { position: absolute; top: 10px; right: 10px; z-index: 8; }
  #view-levels .chart-view-toggle[hidden] { display: none !important; }
  #view-levels .chart-view-toggle button { font-family: inherit; font-size: .66rem; font-weight: 800; color: var(--muted); background: rgba(255,255,255,.85); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); border: 1px solid var(--border); border-radius: 8px; padding: .32rem .55rem; cursor: pointer; display: inline-flex; align-items: center; gap: .25rem; }
  #view-levels .chart-view-toggle button.on { background: #111827; color: #fff; border-color: #111827; }
  #view-levels .chart-view-toggle .cv-check { font-size: .62rem; opacity: 0; }
  #view-levels .chart-view-toggle button.on .cv-check { opacity: 1; }
  /* Carousel fixed at the bottom — compact, chart takes the remaining height. */
  #view-levels .strat-carousel-section { position: relative; flex: 0 0 auto; height: 62px; border-top: 1px solid var(--border); background: var(--surface2, #f8fafc); display: flex; flex-direction: column; }
  #view-levels .strat-carousel { flex: 1 1 auto; min-height: 0; display: flex; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  #view-levels .strat-carousel::-webkit-scrollbar { display: none; }
  /* Strategy popover (opens up from the logo) */
  #view-levels .scard { padding-right: 1.1rem; }
  #view-levels .scard-logo-btn { position: relative; border: none; cursor: pointer; }
  #view-levels .scard-logo-caret { position: absolute; right: -3px; top: -4px; font-size: .6rem; color: #4f46e5; background: #fff; border-radius: 50%; width: 13px; height: 13px; line-height: 13px; box-shadow: 0 1px 2px rgba(0,0,0,.15); }
  #view-levels .strat-menu { position: absolute; top: auto; left: 0; right: 0; bottom: 100%; z-index: 60; width: auto; background: #fff; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); border-left: none; border-right: none; border-radius: 0; box-shadow: none; padding: .4rem 12px; }
  #view-levels .strat-menu::after { content: ""; position: absolute; left: 22px; top: 100%; border: 8px solid transparent; border-top-color: #fff; filter: drop-shadow(0 1px 0 var(--border)); }
  #view-levels .strat-menu-item { display: flex; align-items: center; gap: .6rem; width: 100%; border: none; background: transparent; font-family: inherit; text-align: left; padding: .55rem .6rem; border-radius: 10px; cursor: pointer; }
  #view-levels .strat-menu-item:active { background: #f1f5f9; }
  #view-levels .strat-menu-item.on { background: #eef2ff; }
  #view-levels .smi-logo { flex-shrink: 0; width: 28px; height: 28px; border-radius: 8px; background: #eef2ff; color: #4f46e5; display: inline-flex; align-items: center; justify-content: center; }
  #view-levels .smi-logo svg { width: 16px; height: 16px; }
  #view-levels .smi-txt { display: flex; flex-direction: column; min-width: 0; flex: 1; }
  #view-levels .smi-txt b { font-size: .86rem; font-weight: 800; color: var(--text); }
  #view-levels .smi-txt span { font-size: .66rem; color: var(--muted); }
  #view-levels .smi-check { display: inline-flex; flex-shrink: 0; }
  #view-levels .smi-check svg { width: 20px; height: 20px; }
  #view-levels .strat-menu-add { display: flex; align-items: center; justify-content: center; gap: .35rem; width: 100%; border: 1.5px dashed #a5b4fc; background: #f5f6ff; color: #4f46e5; font-family: inherit; font-size: .84rem; font-weight: 800; border-radius: 10px; padding: .6rem; margin-top: .3rem; cursor: pointer; }
  #view-levels .sm-add-plus { font-size: 1rem; font-weight: 800; }
  #view-levels .strat-menu-titlebar { display: flex; align-items: center; justify-content: space-between; padding: .35rem .6rem .45rem; }
  #view-levels .strat-menu-title { font-size: .68rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
  #view-levels .strat-menu-addbtn { width: 26px; height: 26px; border: none; border-radius: 8px; background: #eef2ff; color: #4f46e5; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
  #view-levels .strat-menu-addbtn svg { width: 14px; height: 14px; }
  #view-levels .strat-menu-addbtn:active { background: #4f46e5; color: #fff; }
  body.dark #view-levels .strat-menu-addbtn { background: #23283a; color: #a5b4fc; }
  .amsg-fx-live { display: inline-block; vertical-align: 1px; margin-left: .3rem; font-size: .5rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: #15803d; background: #dcfce7; padding: .08rem .3rem; border-radius: 4px; }
  body.dark .amsg-fx-live { background: #14321f; color: #4ade80; }
  .scoring-tabs { margin-bottom: 1rem; }
  .spec-block { background: #fff; border-radius: 12px; padding: .7rem .8rem; margin-bottom: .4rem; }
  .spec-li { font-size: .78rem; color: var(--text); line-height: 1.5; padding: .25rem 0; border-bottom: 1px solid #f1f3f6; }
  .spec-li:last-child, .spec-f:last-child { border-bottom: none; }
  .spec-f { display: flex; flex-direction: column; gap: .1rem; padding: .4rem 0; border-bottom: 1px solid #f1f3f6; }
  .spec-f b { font-size: .8rem; color: var(--text); }
  .spec-f span { font-size: .74rem; color: var(--muted); line-height: 1.5; }
  .spec-pre { background: #0f172a; color: #c7d2fe; font-size: .64rem; line-height: 1.5; border-radius: 10px; padding: .7rem .8rem; overflow-x: auto; margin: .5rem 0 .2rem; white-space: pre; }
  body.dark .spec-block { background: #1c212a; }
  body.dark .spec-li, body.dark .spec-f { border-color: #262b34; }
  #view-levels .strat-menu-hint { font-size: .72rem; color: var(--muted); text-align: center; padding: .45rem .3rem .2rem; }
  /* Liquidity chip on signal cards */
  .feed-liq { margin-left: auto; flex-shrink: 0; font-size: .6rem; font-weight: 800; letter-spacing: .02em; padding: .1rem .4rem; border-radius: 6px; background: #eef2ff; color: #4f46e5; }
  .feed-liq.warn { background: #fef3c7; color: #b45309; }
  body.dark .feed-liq { background: #23283a; color: #a5b4fc; }
  body.dark .feed-liq.warn { background: #3a2f1c; color: #fbbf24; }
  #view-levels .scard-info-btn { margin-left: auto; flex-shrink: 0; width: 30px; height: 30px; border: none; background: transparent; color: #94a3b8; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; }
  #view-levels .scard-info-btn svg { width: 19px; height: 19px; }
  #view-levels .scard-info-btn:active { background: #eef2ff; color: #4f46e5; }
  body.dark #view-levels .scard-info-btn { color: #6b7484; }
  body.dark #view-levels .strat-menu { background: #1c212a; border-color: #262b34; }
  body.dark #view-levels .strat-menu::after { border-top-color: #1c212a; }
  body.dark #view-levels .strat-menu-item.on { background: #23283a; }
  body.dark #view-levels .scard-logo-caret { background: #1c212a; }
  #view-levels .scard {
    flex: 0 0 100%; scroll-snap-align: center; box-sizing: border-box;
    display: flex; align-items: center; gap: .6rem; padding: .35rem 1.1rem;
    padding-right: 1.1rem;
    cursor: pointer;
  }
  #view-levels .scard:active { background: rgba(79,70,229,.05); }
  #view-levels .scard-logo {
    flex-shrink: 0; width: 32px; height: 32px; border-radius: 9px;
    background: #eef2ff; color: #4f46e5; display: flex; align-items: center; justify-content: center;
  }
  #view-levels .scard-logo svg { width: 18px; height: 18px; }
  #view-levels .scard-body { flex: 1; min-width: 0; }
  #view-levels .scard-top { display: flex; align-items: center; gap: .45rem; }
  #view-levels .scard-name { font-size: .92rem; font-weight: 800; color: var(--text); }
  /* Fixed actions overlay (up-arrow + dots) on the right of the card row. */
  #view-levels .strat-card-actions {
    position: absolute; top: 0; bottom: 0; right: .9rem; z-index: 4;
    display: flex; align-items: center; gap: .5rem; pointer-events: none;
  }
  #view-levels .strat-card-actions .scard-info,
  #view-levels .strat-card-actions .strat-dots { pointer-events: auto; }
  #view-levels .scard-info {
    flex-shrink: 0; width: 34px; height: 34px; padding: 0; border: none; cursor: pointer;
    color: #4f46e5; background: #eef2ff; border-radius: 10px;
    display: inline-flex; align-items: center; justify-content: center;
  }
  #view-levels .scard-info:active { background: #e0e7ff; }
  #view-levels .scard-info svg { width: 20px; height: 20px; }
  #view-levels .scard-code {
    font-size: .56rem; font-weight: 800; letter-spacing: .02em; color: #374151;
    background: #fff; border: 1px solid var(--border); padding: .12rem .38rem; border-radius: 4px; flex-shrink: 0;
  }
  #view-levels .scard-draft { font-size: .52rem; font-weight: 800; text-transform: uppercase; color: #a16207; background: #fef9c3; padding: .1rem .32rem; border-radius: 4px; flex-shrink: 0; }
  #view-levels .scard-coming { font-size: .52rem; font-weight: 800; text-transform: uppercase; color: #64748b; background: #eef1f5; padding: .1rem .32rem; border-radius: 4px; flex-shrink: 0; }
  #view-levels .strat-menu-item.off { opacity: .55; cursor: default; }
  #view-levels .strat-menu-item.off:active { background: transparent; }
  body.dark #view-levels .scard-coming { background: #262b34; color: #8b93a1; }
  /* Strategy logic popup */
  .sl-head { display: flex; align-items: center; gap: .7rem; margin-bottom: .9rem; }
  .sl-logo { flex-shrink: 0; width: 46px; height: 46px; border-radius: 12px; background: #eef2ff; color: #4f46e5; display: flex; align-items: center; justify-content: center; }
  .sl-logo svg { width: 24px; height: 24px; }
  .sl-name { font-size: 1.15rem; font-weight: 800; color: var(--text); }
  .sl-code { display: flex; gap: .35rem; align-items: center; margin-top: .2rem; }
  .sl-short { font-size: .9rem; font-weight: 700; color: #4b5563; margin-bottom: .55rem; }
  .sl-desc { font-size: .82rem; line-height: 1.6; color: var(--muted); }
  .sl-block { margin-top: 1rem; }
  .sl-blabel { font-size: .66rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: #6366f1; margin-bottom: .4rem; }
  .sl-sig-intro { margin-bottom: .7rem !important; }
  .sl-sig-card { border: 1px solid var(--border); border-radius: 12px; padding: .7rem .8rem; margin-bottom: .6rem; background: #fff; }
  .sl-sig-card.sl-sig-buy { border-left: 3px solid #16a34a; }
  .sl-sig-card.sl-sig-sell { border-left: 3px solid #dc2626; }
  .sl-sig-head { display: flex; align-items: center; gap: .5rem; margin-bottom: .35rem; flex-wrap: wrap; }
  .sl-sig-badge { font-size: .58rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: #15803d; background: #dcfce7; padding: .15rem .45rem; border-radius: 5px; flex-shrink: 0; }
  .sl-sig-card.sl-sig-sell .sl-sig-badge { color: #b91c1c; background: #fee2e2; }
  .sl-sig-title { font-size: .82rem; font-weight: 800; color: #111; }
  .sl-sig-desc { font-size: .78rem; line-height: 1.5; color: #374151; margin: 0 0 .55rem; }
  .sl-sig-plan { display: flex; flex-direction: column; gap: .3rem; background: #f8fafc; border-radius: 8px; padding: .5rem .6rem; }
  .sl-sig-row { display: flex; gap: .6rem; align-items: baseline; }
  .sl-sig-k { font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; color: #6b7280; flex: 0 0 5.2rem; }
  .sl-sig-v { font-size: .76rem; color: #111; font-weight: 500; }
  .sl-sig-note { font-size: .7rem; line-height: 1.45; color: #6b7280; font-style: italic; margin: .5rem 0 0; }
  /* Signal matrix table */
  .sl-matrix-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid #cbd5e1; border-radius: 10px; }
  .sl-matrix { border-collapse: collapse; width: 100%; min-width: 560px; table-layout: fixed; font-size: .62rem; }
  .sl-matrix th, .sl-matrix td { text-align: left; padding: .4rem .45rem; border: 1px solid #cbd5e1; vertical-align: top; line-height: 1.3; white-space: normal; word-break: normal; overflow-wrap: anywhere; }
  .sl-matrix thead th {
    background: #f1f5f9; font-size: .54rem; font-weight: 800; text-transform: uppercase; letter-spacing: .02em; color: #475569; vertical-align: bottom;
  }
  .sl-matrix tbody td { color: #374151; }
  /* Column widths: Direction, Setup, Timeframe, Trigger, Entry, TP, SL */
  .sl-matrix col.mc-dir { width: 10%; } .sl-matrix col.mc-setup { width: 13%; } .sl-matrix col.mc-tf { width: 11%; }
  .sl-matrix col.mc-trigger { width: 24%; } .sl-matrix col.mc-entry { width: 17%; } .sl-matrix col.mc-tp { width: 13%; } .sl-matrix col.mc-sl { width: 12%; }
  .sl-matrix .mtag { display: inline-block; font-size: .56rem; font-weight: 800; padding: .1rem .4rem; border-radius: 5px; white-space: nowrap; }
  .sl-matrix .mtag.buy { background: #dcfce7; color: #15803d; }
  .sl-matrix .mtag.sell { background: #fee2e2; color: #b91c1c; }
  .sl-matrix .mdim { color: #94a3b8; font-size: .9em; font-weight: 400; }
  .sl-matrix .mcond { display: block; position: relative; padding-left: .7rem; margin: .06rem 0; }
  .sl-matrix .mcond + .mcond { margin-top: .25rem; }
  .sl-matrix .mcond::before { content: "•"; position: absolute; left: 0; color: #6366f1; font-weight: 800; }
  .sl-btext { font-size: .84rem; line-height: 1.6; color: #374151; margin: 0; }
  .sl-list { margin: 0; padding-left: 1.1rem; }
  .sl-list li { font-size: .82rem; line-height: 1.55; color: #374151; margin-bottom: .4rem; }
  .sl-row { display: flex; gap: .6rem; padding: .4rem 0; border-bottom: 1px solid var(--border); }
  .sl-row:last-child { border-bottom: none; }
  .sl-rk { flex: 0 0 82px; font-size: .74rem; font-weight: 800; color: #111827; }
  .sl-rv { flex: 1; font-size: .78rem; line-height: 1.5; color: #4b5563; }
  .sl-note { font-size: .76rem; color: #a16207; background: #fef9c3; padding: .5rem .7rem; border-radius: 8px; margin-top: .8rem; }
  /* Live read block (demo, current-price signal) */
  .sl-live { border-radius: 12px; padding: .8rem .9rem; margin-bottom: .3rem; border: 1px solid var(--border); }
  .sl-live-buy { background: #f0fdf4; border-color: #bbf7d0; }
  .sl-live-sell { background: #fef2f2; border-color: #fecaca; }
  .sl-live-flat { background: #f8fafc; border-color: var(--border); }
  .sl-live-head { display: flex; align-items: center; gap: .4rem; font-size: .8rem; font-weight: 800; color: #111827; }
  .sl-live-dot { width: 7px; height: 7px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 3px rgba(34,197,94,.2); }
  .sl-live-sell .sl-live-dot { background: #ef4444; box-shadow: 0 0 0 3px rgba(239,68,68,.2); }
  .sl-live-flat .sl-live-dot { background: #94a3b8; box-shadow: 0 0 0 3px rgba(148,163,184,.2); }
  .sl-live-tag { margin-left: auto; font-size: .64rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; padding: .16rem .45rem; border-radius: 5px; }
  .sl-live-buy .sl-live-tag { background: #16a34a; color: #fff; }
  .sl-live-sell .sl-live-tag { background: #dc2626; color: #fff; }
  .sl-live-flat .sl-live-tag { background: #64748b; color: #fff; }
  .sl-live-note { font-size: .8rem; line-height: 1.5; color: #374151; margin: .5rem 0 0; }
  .sl-live-plan { display: flex; gap: .5rem; margin-top: .7rem; }
  .sl-live-cell { flex: 1; display: flex; flex-direction: column; gap: .1rem; background: rgba(255,255,255,.7); border-radius: 8px; padding: .4rem .5rem; font-size: .82rem; font-weight: 800; color: #111827; }
  .sl-live-cell b { font-size: .58rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: #6b7280; }
  /* Dots — horizontal row of up to 3, cycling as you swipe. Tap a dot to slide. */
  #view-levels .strat-dots { display: flex; flex-direction: row; align-items: center; justify-content: center; gap: 4px; }
  #view-levels .strat-dots .dot { width: 6px; height: 6px; border-radius: 50%; background: #cbd5e1; transition: all .2s; cursor: pointer; border: none; padding: 0; }
  #view-levels .strat-dots .dot.on { background: #111827; width: 14px; border-radius: 3px; }
  #view-levels .strat-dots .dot.edge { width: 4px; height: 4px; opacity: .6; }
  /* Custom strategy dropdown (short code button → menu with code + full name) */
  .strat-select { position: relative; display: inline-block; }
  .strat-select-btn {
    display: inline-flex; align-items: center; gap: .4rem; font-family: inherit;
    font-size: .78rem; font-weight: 800; color: var(--text); cursor: pointer;
    background: #fff; border: 1px solid var(--border); border-radius: 8px; padding: .45rem .6rem;
  }
  .strat-select-code { letter-spacing: .02em; color: var(--text); }
  .strat-select-chev { font-size: .6rem; color: var(--muted); }
  .strat-menu {
    position: absolute; top: calc(100% + .35rem); right: 0; z-index: 50; min-width: 220px;
    background: #fff; border: 1px solid var(--border); border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0,0,0,.12); padding: .3rem; overflow: hidden;
  }
  .strat-opt {
    display: flex; align-items: center; gap: .55rem; width: 100%; text-align: left;
    font-family: inherit; cursor: pointer; background: transparent; border: none;
    border-radius: 7px; padding: .55rem .6rem;
  }
  .strat-opt:hover { background: var(--surface2); }
  .strat-opt.on { background: #f3f4f6; }
  .strat-opt-code {
    font-size: .62rem; font-weight: 800; color: #374151; background: var(--surface2);
    padding: .15rem .4rem; border-radius: 5px; min-width: 3.4rem; text-align: center; flex-shrink: 0;
  }
  .strat-opt.on .strat-opt-code { background: #111827; color: #fff; }
  .strat-opt-name { font-size: .76rem; font-weight: 600; color: var(--text); flex: 1; }
  .strat-opt-draft { font-size: .55rem; font-weight: 700; text-transform: uppercase; color: #b45309; background: #fef3c7; padding: .1rem .35rem; border-radius: 4px; }
  .brand .brand-mark {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
  }
  /* Octopus jumping animation — body bounces up/down, shadow scales inversely */
  .brand .brand-mark .oct-bounce {
    transform-origin: 16px 28px;
    animation: oct-jump 1.6s ease-in-out infinite;
  }
  .brand .brand-mark .oct-shadow {
    transform-origin: 16px 30px;
    animation: oct-shadow 1.6s ease-in-out infinite;
  }
  @keyframes oct-jump {
    0%, 100% { transform: translateY(2px) scaleY(0.96); }    /* squash at landing */
    25%      { transform: translateY(-3px) scaleY(1.04); }   /* stretch going up */
    50%      { transform: translateY(-4px) scaleY(1.02); }   /* apex */
    75%      { transform: translateY(-2px) scaleY(1.0); }    /* coming down */
  }
  @keyframes oct-shadow {
    0%, 100% { transform: scaleX(1.1);   opacity: 0.22; }     /* wide on landing */
    50%      { transform: scaleX(0.6);   opacity: 0.10; }     /* narrow at apex */
  }
  /* Respect user's reduced-motion preference */
  @media (prefers-reduced-motion: reduce) {
    .brand .brand-mark .oct-bounce,
    .brand .brand-mark .oct-shadow {
      animation: none;
    }
  }
  .brand .name {
    font-family: var(--display);
    font-size: 15px;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    line-height: 1;
    white-space: nowrap;
  }
  .brand .name-bored {
    color: #1e40af;
    font-weight: 900;
  }
  .brand .name-accent {
    color: #374151;
    font-weight: 400;
    font-size: 0.85em;
  }
  .meta-strip {
    display: flex;
    gap: 28px;
    font-family: var(--mono);
    font-size: 11px;
    color: var(--ink-mute);
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }
  .meta-strip span b {
    color: var(--ink);
    font-weight: 500;
    margin-left: 6px;
  }
  .pulse {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--green);
    box-shadow: 0 0 0 0 rgba(45,122,58,0.5);
    animation: pulse 2s infinite;
    margin-right: 6px;
    vertical-align: middle;
  }
  @keyframes pulse {
    0%   { box-shadow: 0 0 0 0 rgba(45,122,58,0.4); }
    70%  { box-shadow: 0 0 0 10px rgba(45,122,58,0); }
    100% { box-shadow: 0 0 0 0 rgba(45,122,58,0); }
  }

  /* ── hero ──────────────────────────────────────────────────── */
  .hero {
    padding: 64px 48px 72px;
    border-bottom: 1px solid var(--line);
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 64px;
    align-items: end;
  }
  .hero h1 {
    font-family: var(--display);
    font-weight: 500;
    font-size: clamp(38px, 5vw, 68px);
    line-height: 1.05;
    letter-spacing: -0.035em;
    margin: 0;
    color: var(--ink);
  }
  .hero h1 em {
    font-style: normal;
    color: var(--amber);
    font-weight: 600;
  }
  .hero .lede {
    font-family: var(--body);
    font-size: 15px;
    color: var(--ink-dim);
    line-height: 1.7;
    max-width: 38ch;
    border-left: 2px solid var(--amber);
    padding-left: 16px;
  }
  .hero .lede b {
    color: var(--ink);
    font-weight: 500;
  }

  /* ── section scaffolding ───────────────────────────────────── */
  section.block {
    padding: 24px 48px 64px;
  }
  @media (max-width: 900px) {
    .forecast-scope .block { padding: 10px 0 40px; }
  }
  section.block + section.block {
    padding-top: 64px;
  }
  section.block.tab-panel,
  section.block + section.block.tab-panel {
    padding-top: 0;
  }
  section.block.tab-panel > *:first-child {
    margin-top: 0;
  }
  .section-head {
    display: flex;
    align-items: baseline;
    gap: 18px;
    margin-bottom: 36px;
  }
  .section-num {
    font-family: var(--mono);
    font-size: 11px;
    color: var(--amber-dim);
    letter-spacing: 0.2em;
  }
  .section-title {
    font-family: var(--display);
    font-weight: 500;
    font-size: 30px;
    letter-spacing: -0.025em;
    margin: 0;
    color: var(--ink);
  }
  .section-title em { font-style: normal; color: var(--amber); font-weight: 600; }
  .section-rule {
    flex: 1;
    height: 1px;
    background: var(--line);
    margin-bottom: 8px;
  }

  /* ── cards & grids ─────────────────────────────────────────── */
  .grid-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
  }
  .card {
    background: var(--bg-card);
    padding: 28px 24px 24px;
  }
  .card .pill {
    display: inline-block;
    font-family: var(--mono);
    font-size: 10px;
    letter-spacing: 0.16em;
    color: var(--amber);
    border: 1px solid var(--amber-dim);
    padding: 3px 8px;
    border-radius: 2px;
    margin-bottom: 20px;
  }
  .card.cyan .pill { color: var(--cyan); border-color: var(--cyan); opacity: 0.9; }
  .card.violet .pill { color: var(--violet); border-color: var(--violet); opacity: 0.9; }

  .card h3 {
    font-family: var(--display);
    font-weight: 400;
    font-size: 22px;
    letter-spacing: -0.01em;
    margin: 0 0 10px 0;
    color: var(--ink);
  }
  .card p {
    margin: 0;
    color: var(--ink-dim);
    font-size: 13px;
    line-height: 1.65;
  }
  .card p + p { margin-top: 10px; }
  .card code {
    font-family: var(--mono);
    color: var(--amber);
    background: rgba(184,115,31,0.10);
    padding: 1px 5px;
    border-radius: 2px;
    font-size: 12px;
  }

  /* ── price ladder ──────────────────────────────────────────── */
  .ladder-wrap {
    background: var(--bg-elev);
    border: 1px solid var(--line);
    padding: 32px 24px;
    position: relative;
    overflow: hidden;
  }
  .ladder-wrap::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
      linear-gradient(to right, var(--line-soft) 1px, transparent 1px);
    background-size: 80px 100%;
    opacity: 0.4;
    pointer-events: none;
  }
  .ladder-svg {
    width: 100%;
    height: 540px;
    display: block;
    position: relative;
  }
  .ladder-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 24px;
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px dashed var(--line);
    font-family: var(--mono);
    font-size: 11px;
    color: var(--ink-dim);
    letter-spacing: 0.04em;
  }
  .legend-item { display: flex; align-items: center; gap: 8px; }
  .swatch {
    width: 18px;
    height: 3px;
    background: var(--ink-dim);
  }
  .swatch.dotted { background: repeating-linear-gradient(to right, var(--cyan) 0 4px, transparent 4px 8px); height: 2px; }
  .swatch.amber { background: var(--amber); }
  .swatch.cyan { background: var(--cyan); }
  .swatch.green { background: var(--green); }
  .swatch.red { background: var(--red); }
  .swatch.violet { background: var(--violet); }

  /* ── parameter table ───────────────────────────────────────── */
  .param-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--mono);
    font-size: 13px;
  }
  .param-table th {
    text-align: left;
    font-weight: 500;
    font-size: 10px;
    letter-spacing: 0.18em;
    color: var(--ink-mute);
    text-transform: uppercase;
    padding: 12px 16px;
    border-bottom: 1px solid var(--line);
    background: var(--bg-elev);
  }
  .param-table td {
    padding: 14px 16px;
    border-bottom: 1px solid var(--line-soft);
    vertical-align: top;
  }
  .param-table tr:last-child td { border-bottom: none; }
  .param-table tr:hover td { background: rgba(184,115,31,0.04); }
  .param-table .pname { color: var(--amber); font-weight: 500; }
  .param-table .pcol  { color: var(--cyan); }
  .param-table .pdef  { color: var(--ink); }
  .param-table .pdesc { color: var(--ink-dim); font-family: var(--body); font-size: 13px; }

  /* ── pillars (card + formula stacked) ──────────────────────── */
  .pillars {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
  }
  .pillar {
    background: var(--bg-card);
    display: flex;
    flex-direction: column;
    border-top: 2px solid var(--amber);
    min-width: 0;
  }
  .pillar.cyan { border-top-color: var(--cyan); }
  .pillar.violet { border-top-color: var(--violet); }

  /* upper half: summary card */
  .pillar-card {
    padding: 28px 24px 22px;
    border-bottom: 1px dashed var(--line);
  }
  .pillar-card .pill {
    display: inline-block;
    font-family: var(--mono);
    font-size: 10px;
    letter-spacing: 0.16em;
    font-weight: 600;
    color: #ffffff;
    background: var(--amber);
    border: none;
    padding: 4px 10px;
    border-radius: 2px;
    margin-bottom: 20px;
  }
  .pillar.cyan .pillar-card .pill { background: var(--cyan); color: #ffffff; }
  .pillar.violet .pillar-card .pill { background: var(--violet); color: #ffffff; }
  .pillar-card h3 {
    font-family: var(--display);
    font-weight: 500;
    font-size: 21px;
    letter-spacing: -0.02em;
    margin: 0 0 10px 0;
    color: var(--ink);
  }
  .pillar-card p {
    margin: 0;
    color: var(--ink-dim);
    font-size: 13px;
    line-height: 1.65;
    font-weight: 500;
  }
  .pillar-card code {
    font-family: var(--mono);
    color: var(--amber);
    background: rgba(184,115,31,0.10);
    padding: 1px 5px;
    border-radius: 2px;
    font-size: 12px;
  }
  .pillar.cyan .pillar-card code { color: var(--cyan); background: rgba(20,121,127,0.10); }
  .pillar.violet .pillar-card code { color: var(--violet); background: rgba(107,75,160,0.10); }

  /* lower half: formula step */
  .pillar-step {
    padding: 22px 24px 26px;
    flex: 1;
    min-width: 0;
  }
  .pillar-step .step-num {
    font-family: var(--mono);
    font-size: 10px;
    letter-spacing: 0.18em;
    color: var(--amber-dim);
    margin-bottom: 12px;
  }
  .pillar.cyan .pillar-step .step-num { color: var(--cyan); }
  .pillar.violet .pillar-step .step-num { color: var(--violet); }
  .pillar-step .formula {
    font-family: var(--mono);
    font-size: 12px;
    background: var(--bg-elev);
    border-left: 2px solid var(--amber);
    padding: 10px 14px;
    margin: 0 0 12px 0;
    color: var(--ink);
    overflow-x: auto;
    white-space: pre;
  }
  .pillar.cyan .pillar-step .formula { border-left-color: var(--cyan); }
  .pillar.violet .pillar-step .formula { border-left-color: var(--violet); }
  .pillar-step .formula .c-comment { color: var(--ink-mute); }
  .pillar-step .formula .c-key { color: var(--amber); }
  .pillar-step .formula .c-num { color: var(--cyan); }
  .pillar-step p {
    color: var(--ink-dim);
    font-size: 12.5px;
    line-height: 1.65;
    font-weight: 500;
    margin: 0;
  }
  .pillar-step p b { color: var(--ink); font-weight: 500; }
  .pillar-step code {
    font-family: var(--mono);
    color: var(--amber);
    font-size: 12px;
  }
  .pillar.cyan .pillar-step code { color: var(--cyan); }
  .pillar.violet .pillar-step code { color: var(--violet); }

  /* ── tier diagram ──────────────────────────────────────────── */
  .tier-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
    margin-top: 12px;
  }
  .tier {
    background: var(--bg-card);
    padding: 24px 22px;
    position: relative;
  }
  .tier-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 12px;
  }
  .tier .tlabel {
    font-family: var(--mono);
    font-size: 11px;
    letter-spacing: 0.18em;
    color: var(--ink-mute);
  }
  .tier .tier-num {
    font-family: var(--display);
    font-style: normal;
    font-size: 36px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -0.03em;
    color: var(--amber);
  }
  .tier.t2 .tier-num { color: var(--violet); }
  .tier.t3 .tier-num { color: var(--red); }
  .tier h5 {
    font-family: var(--display);
    font-weight: 600;
    font-size: 17px;
    letter-spacing: -0.01em;
    margin: 0 0 12px 0;
    color: var(--ink);
  }
  .tier ul {
    list-style: none;
    padding: 0;
    margin: 0;
    font-size: 12.5px;
    color: var(--ink-dim);
    font-weight: 500;
  }
  .tier li {
    padding-left: 18px;
    position: relative;
    margin-bottom: 6px;
    line-height: 1.55;
  }
  .tier li::before {
    content: '→';
    position: absolute;
    left: 0;
    color: var(--amber);
  }
  .tier.t2 li::before { color: var(--violet); }
  .tier.t3 li::before { color: var(--red); }
  .tier code {
    font-family: var(--mono);
    color: var(--amber);
    font-size: 12px;
  }
  .tier.t2 code { color: var(--violet); }
  .tier.t3 code { color: var(--red); }

  /* ── csv table ─────────────────────────────────────────────── */
  .csv-wrap {
    background: var(--bg-card);
    border: 1px solid var(--line);
    overflow-x: auto;
  }
  .csv-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--mono);
    font-size: 12px;
    min-width: 760px;
    font-variant-numeric: tabular-nums;
  }
  .csv-table th {
    background: #e8f0e3;
    color: var(--ink);
    text-align: left;
    padding: 12px 14px;
    font-weight: 600;
    font-size: 10px;
    letter-spacing: 0.16em;
    border-bottom: 1px solid var(--line);
    text-transform: uppercase;
    white-space: nowrap;
  }
  .csv-table th .col-letter {
    color: var(--ink-mute);
    margin-right: 6px;
  }
  .csv-table td {
    padding: 12px 14px;
    border-bottom: 1px solid var(--line-soft);
    color: var(--ink-dim);
    white-space: nowrap;
    font-weight: 500;
  }
  .csv-table tr:last-child td { border-bottom: none; }
  .csv-table .row-account td:first-child { color: var(--cyan); }
  .csv-table td.example { color: var(--ink); }

  /* vertical pivot: accounts as columns, fields as rows */
  .csv-table-vertical { min-width: auto; table-layout: fixed; }
  .csv-table-vertical th:first-child {
    color: var(--ink);
    /* background inherits from .csv-table th — light green */
    border-right: 1px solid var(--line);
    width: 28%;
  }
  .csv-table-vertical td.field-label {
    color: var(--ink-mute);
    background: var(--bg-card);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 10.5px;
    border-right: 1px solid var(--line);
    width: 28%;
  }
  .csv-table-vertical td {
    color: var(--ink);
    text-align: left;
  }
  .csv-table-vertical th {
    color: var(--ink);
    text-transform: none;
    letter-spacing: -0.01em;
    font-size: 12px;
    font-weight: 600;
    font-family: var(--display);
  }
  .csv-table-vertical tr:hover td:not(.field-label) {
    background: rgba(184,115,31,0.04);
  }

  /* ── footer ────────────────────────────────────────────────── */
  footer {
    padding: 36px 48px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
    font-family: var(--mono);
    font-size: 11px;
    color: var(--ink-mute);
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }
  footer .sig {
    font-family: var(--display);
    font-style: normal;
    font-weight: 500;
    font-size: 15px;
    color: var(--amber);
    text-transform: none;
    letter-spacing: -0.01em;
  }

  /* ── responsive ────────────────────────────────────────────── */
  @media (max-width: 900px) {
    header.top {
      padding: 10px 12px;
      gap: 14px;
      flex-wrap: nowrap;
    }
    .brand { gap: 6px; flex-shrink: 0; }
    .brand .brand-mark { width: 30px; height: 30px; display: block; }
    .brand .name { font-size: 13px; }
    section.block { padding: 10px; }
    section.block + section.block { padding-top: 10px; }
    /* Equalize section vertical spacing to match the 10px left/right gap on mobile */
    .intraday-box, .news-box,
    .forecast-scope .fc-box { margin-bottom: 10px; }
    footer { padding: 24px; }
    .meta-strip { gap: 14px; }
    .pillars { grid-template-columns: 1fr; }
    .tier-grid { grid-template-columns: 1fr; }
    .pillar-card { padding: 22px 18px 18px; }
    .pillar-step { padding: 18px 18px 22px; }
    .pillar-step .formula { font-size: 11px; padding: 8px 10px; }
    .tier { padding: 20px 18px; }
    #tables > div[style*="grid-template-columns"] {
      grid-template-columns: 1fr !important;
      gap: 28px !important;
    }
  }

  .tabs {
    display: flex;
    gap: 28px;
  }
  .tab {
    font-family: var(--display);
    font-size: 14px;
    font-weight: 700;
    letter-spacing: -0.01em;
    text-transform: none;
    color: var(--ink-mute);
    background: transparent;
    border: none;
    padding: 6px 0;
    cursor: pointer;
    position: relative;
    transition: color 0.18s ease;
  }
  .tab:hover { color: var(--ink-dim); }
  .tab.active {
    color: #1e40af;
  }
  .tab-panel { display: none; }
  .tab-panel.active { display: block; animation: fadeUp 0.4s ease-out forwards; }
  @media (max-width: 900px) {
    .tabs { gap: 14px; }
    .tab { padding: 6px 0; font-size: 13px; }
  }

  /* fade-in entrance */
  .fade {
    opacity: 0;
    transform: translateY(8px);
    animation: fadeUp 0.6s ease-out forwards;
  }
  .fade:nth-child(1) { animation-delay: 0.05s; }
  .fade:nth-child(2) { animation-delay: 0.15s; }
  .fade:nth-child(3) { animation-delay: 0.25s; }
  @keyframes fadeUp {
    to { opacity: 1; transform: translateY(0); }
  }

  /* ═══════════════════ FORECAST TAB STYLES (scoped) ═══════════════════ */
.forecast-scope {
      --bg:       #ffffff;
      --surface:  #ffffff;
      --surface2: #f4f6f9;
      --surface3: #e8ecf2;
      --gold:        #4f46e5;
      --gold-light:  #6366f1;
      --gold-pale:   #4338ca;
      --gold-dim:    #a5b4fc;
      --radius: 12px;
      --green:    #16a34a;
      --red:      #dc2626;
      --text:     #1a1a17;
      --muted:    #5a5a55;
      --border:   #d8e2f0;
      --border-hi:#c8d8f0;

      --claude-c: #e07b1a;
      --gemini-c: #4285f4;
      --perp-c:   #0891b2;
      --grok-c:   #374151;
      --gpt-c:    #059669;
      --deep-c:   #7c3aed;
      --qwen-c:   #615ced;
      --kimi-c:   #14b8a6;
    }.forecast-scope *, .forecast-scope *::before, .forecast-scope *::after { box-sizing: border-box; margin:0; padding:0; }.forecast-scope { scroll-behavior: smooth; }.forecast-scope {
      font-family: 'Inter', sans-serif;
      background: transparent;
      color: var(--text);
    }.forecast-scope::before {
      display: none;
    }.forecast-scope nav {
      position:sticky; top:0; z-index:200;
      height:44px;
      display:flex; align-items:center;
      padding:0 1.5rem;
      background:rgba(255,255,255,0.95);
      backdrop-filter:blur(18px);
      border-bottom:1px solid var(--border);
    }
    @media(max-width:600px) {.forecast-scope nav { padding:0 .75rem; height:40px; }}.forecast-scope .nav-brand {
      display:flex; align-items:center;
      gap:.5rem;
      text-decoration:none;
      margin-right:1.25rem;
      flex-shrink:0;
      cursor:default;
    }.forecast-scope .nav-brand-mark {
      width:28px; height:28px;
      flex-shrink:0;
    }.forecast-scope .nav-brand-text {
      font-family:'Inter',sans-serif;
      font-size:.95rem; font-weight:800;
      letter-spacing:.04em;
      text-transform:uppercase;
      color:var(--gold);
      white-space:nowrap;
      line-height:1;
    }
    @media(max-width:600px) {.forecast-scope .nav-brand { margin-right:.6rem; gap:.35rem; }
.forecast-scope .nav-brand-mark { width:24px; height:24px; }
.forecast-scope .nav-brand-text { display:none; }
   /* mobile: octopus only, save space */
    }.forecast-scope .nav-tabs { display:flex; gap:1.25rem; margin-left:0; margin-right:auto; align-self:stretch; }.forecast-scope .nav-tab {
      font-family:'Inter',sans-serif;
      font-size:.82rem; font-weight:700; letter-spacing:.08em;
      text-transform:uppercase;
      color:var(--muted); background:transparent; border:none; cursor:pointer;
      padding:0;
      position:relative;
      display:flex; align-items:center;
      transition:color .15s;
    }.forecast-scope .nav-title {
      font-family:'Inter',sans-serif;
      font-size:.82rem; font-weight:700; letter-spacing:.08em;
      text-transform:uppercase;
      color:var(--text);
      display:flex; align-items:center;
    }
    @media(max-width:600px) {.forecast-scope .nav-title { font-size:.72rem; letter-spacing:.05em; }}.forecast-scope .nav-tab::after {
      content:''; position:absolute; left:0; right:0; bottom:-1px;
      height:2px; background:transparent;
      transition:background .15s;
    }.forecast-scope .nav-tab:hover { color:var(--text); }.forecast-scope .nav-tab.active { color:var(--text); }.forecast-scope .nav-tab.active::after { background:var(--text); }
    @media(max-width:600px) {.forecast-scope .nav-tabs { margin-left:.9rem; gap:.85rem; }
.forecast-scope .nav-tab { font-size:.72rem; letter-spacing:.05em; }}.forecast-scope /* Week dropdown — right-aligned in nav */
    .nav-week-wrap {
      display:flex; align-items:center;
      margin-left:auto;
    }.forecast-scope .nav-week-select {
      font-family:'Inter',sans-serif;
      font-size:.78rem; font-weight:700;
      letter-spacing:.04em;
      color:var(--text);
      background:transparent;
      border:1px solid var(--border);
      border-radius:6px;
      padding:.32rem .6rem;
      padding-right:1.6rem;
      cursor:pointer;
      appearance:none;
      -webkit-appearance:none;
      background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M2 4l3 3 3-3' stroke='%236b7280' stroke-width='1.4' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
      background-repeat:no-repeat;
      background-position:right .55rem center;
      transition:border-color .15s, color .15s;
    }.forecast-scope .nav-week-select:hover { border-color:var(--muted); }.forecast-scope .nav-week-select:focus { outline:none; border-color:var(--text); }

    /* Mobile: collapse to icon-only button (curve/wave icon).
       Hide the visible text by zeroing font-size on the select itself
       (the native dropdown still shows full week names when tapped),
       and replace the chevron with a curve-lines icon. */
    @media(max-width:600px) {.forecast-scope .nav-week-select {
        font-size:0;                       /* hides the selected option's text */
        width:34px; height:30px;
        padding:0;                         /* icon-only button */
        background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23e5e7eb' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 14c2 0 3-4 5-4s3 4 5 4 3-4 5-4 3 2 3 2'/><path d='M3 19c2 0 3-4 5-4s3 4 5 4 3-4 5-4 3 2 3 2' opacity='.4'/></svg>");
        background-position:center;
        background-size:18px 18px;
      }
.forecast-scope .nav-week-select option { font-size:.85rem; }
  /* native picker text size */
    }.forecast-scope .page {
      position:relative; z-index:1;
      max-width:1200px; margin:0 auto;
      padding:0;
      overflow-x:hidden;
    }
    @media(max-width:600px) {.forecast-scope .page { padding:0; }}
    .forecast-scope .date-row {
      display:flex; align-items:center; gap:.6rem;
      margin-bottom:.6rem; padding:0 .2rem;
    }
    .forecast-scope .date-label {
      font-size:.6rem; font-weight:700; letter-spacing:.1em;
      text-transform:uppercase; color:var(--muted);
    }
    .forecast-scope .date-range {
      font-size:.95rem; font-weight:800; color:var(--text); letter-spacing:-.01em;
    }
    .forecast-scope .live-box {
      border:1px solid var(--border); border-radius:var(--radius);
      background:var(--surface); margin-bottom:1.5rem;
      transition:border-color .3s, background .3s;
    }
    .forecast-scope .live-head {
      display:flex; align-items:center; gap:.6rem;
      padding:.75rem 1.1rem; cursor:pointer; user-select:none;
      border-radius:var(--radius); background:var(--surface2);
      transition:background .15s;
    }
    .forecast-scope .live-box.open .live-head { border-radius:var(--radius) var(--radius) 0 0; }
    .forecast-scope .live-head:hover { background:var(--surface3); }
    .forecast-scope .live-head-spacer { flex:1; }
    .forecast-scope .live-caret {
      width:13px; height:13px; color:var(--muted); flex-shrink:0;
      display:inline-flex; align-items:center; justify-content:center;
      transition:transform .2s;
    }
    .forecast-scope .live-caret svg { width:100%; height:100%; display:block; }
    .forecast-scope .live-box.open .live-caret { transform:rotate(90deg); }
    .forecast-scope .live-dot {
      width:9px; height:9px; border-radius:50%; background:var(--green); flex-shrink:0;
      box-shadow:0 0 0 0 rgba(34,197,94,.5); animation:livePulse 2s infinite;
    }
    @keyframes livePulse {
      0% { box-shadow:0 0 0 0 rgba(34,197,94,.5); }
      70% { box-shadow:0 0 0 7px rgba(34,197,94,0); }
      100% { box-shadow:0 0 0 0 rgba(34,197,94,0); }
    }
    .forecast-scope .live-price-wrap { display:flex; align-items:baseline; gap:.4rem; }
    .forecast-scope .live-price { font-size:1.1rem; font-weight:800; color:var(--text); letter-spacing:-.01em; }
    .forecast-scope .live-chg { font-size:.72rem; font-weight:700; }
    .forecast-scope .live-chg.up { color:var(--green); }
    .forecast-scope .live-chg.down { color:var(--red); }
    .forecast-scope .live-updated { font-size:.62rem; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; flex-shrink:0; }
    .forecast-scope .live-body { display:none; padding:.8rem 1.1rem 1rem; }
    .forecast-scope .live-box.open .live-body { display:block; }
    .forecast-scope .live-verdict { font-size:.8rem; color:var(--text); line-height:1.5; }
    .forecast-scope .live-verdict strong { color:var(--text); font-weight:800; }
    /* state tints (on the head) */
    .forecast-scope .live-box.live-buy  { border-color:rgba(34,197,94,.5); }
    .forecast-scope .live-box.live-buy  .live-head { background:rgba(34,197,94,.08); }
    .forecast-scope .live-box.live-sell { border-color:rgba(220,38,38,.5); }
    .forecast-scope .live-box.live-sell .live-head { background:rgba(220,38,38,.08); }
    .forecast-scope .live-box.live-stale .live-dot { background:var(--amber); animation:none; }
    .forecast-scope .live-box.live-error .live-dot,
    .forecast-scope .live-box.live-loading .live-dot { background:var(--muted); animation:none; }
    @media(max-width:600px){
      .forecast-scope .live-head { font-size:.74rem; padding:.65rem .8rem; }
      .forecast-scope .live-price { font-size:1rem; }
      .forecast-scope .live-body { padding:.7rem .8rem .9rem; }
    }
    /* ═══ Forecast box (collapsible, news-style) ═══ */
    .forecast-scope .fc-box {
      border: 1px solid var(--border); border-radius: var(--radius);
      background: var(--surface); margin-bottom: 14px;
    }
    .forecast-scope .fc-box-head {
      display: flex; align-items: center; gap: .7rem;
      padding: .85rem 1.1rem; cursor: pointer; user-select: none;
      background: var(--surface2); transition: background .15s;
      position: sticky; top: 66px; z-index: 40; flex-wrap: nowrap;
      border-radius: var(--radius);
    }
    .forecast-scope .fc-box.open .fc-box-head { border-radius: var(--radius) var(--radius) 0 0; }
    .forecast-scope .fc-box-head:hover { background: var(--surface3); }
    .forecast-scope .fc-box-caret {
      width: 13px; height: 13px; color: var(--muted);
      transition: transform .2s; flex-shrink: 0;
      display: inline-flex; align-items: center; justify-content: center;
      order: 99; margin-left: auto;
    }
    .forecast-scope .fc-box-caret svg { width: 100%; height: 100%; display: block; }
    .forecast-scope .fc-box.open .fc-box-head .fc-box-caret { transform: rotate(90deg); }
    .forecast-scope .fc-box-icon { width: 20px; height: 20px; color: var(--gold); flex-shrink: 0; }
    .forecast-scope .fc-box-title { font-size: .92rem; font-weight: 800; letter-spacing: .01em; color: var(--text);   flex-shrink: 0;
    }
    .forecast-scope .fc-box-title #js-fc-daterange { color: var(--gold); }
    .forecast-scope .fc-meta-row {
      font-size: .74rem; color: var(--muted);
      display: flex; align-items: center; gap: .4rem; flex-wrap: wrap;
      padding: 0 .2rem .6rem; margin-bottom: .3rem;
    }
    .forecast-scope .fc-box-meta {
      font-size: .72rem; color: var(--muted); margin-left: auto;
      display: flex; align-items: center; gap: .4rem; flex-wrap: wrap;
      min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
    }
    .forecast-scope .fc-box-body { display: none; padding: 1rem 1.1rem 1.2rem; }
    .forecast-scope .fc-box.open .fc-box-body { display: block; }
    @media (max-width: 900px) {
      .forecast-scope .fc-box-head { top: 54px; }
      .forecast-scope .fc-box-meta { font-size: .66rem; }
    }
    /* Collapsible sub-sections */
    .forecast-scope .fc-collapse { margin-bottom: .7rem; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; background: #ffffff; }
    .forecast-scope .fc-collapse-head {
      display: flex; align-items: center; gap: .55rem; width: 100%;
      padding: .6rem .8rem; background: #2c3e6b; border: none; cursor: pointer;
      font-family: inherit; text-align: left; transition: background .15s;
    }
    .forecast-scope .fc-collapse-head:hover { background: #263657; }
    .forecast-scope .fc-collapse-caret {
      width: 11px; height: 11px; color: #ffffff;
      transition: transform .2s; flex-shrink: 0;
      display: inline-flex; align-items: center; justify-content: center;
      order: 99; margin-left: auto;
    }
    .forecast-scope .fc-collapse-caret svg { width: 100%; height: 100%; display: block; }
    .forecast-scope .fc-collapse.open .fc-collapse-caret { transform: rotate(90deg); }
    .forecast-scope .fc-collapse-title { font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #ffffff; }
    /* Track Record */
    .forecast-scope .fc-track-section {
      margin: 1.4rem -1.1rem 0; padding: 1.2rem 1.1rem 0; border-top: 1px solid var(--border);
    }
    .forecast-scope .fc-track-title {
      font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
      color: var(--text); margin-bottom: .8rem;
    }
    .forecast-scope #js-track-record { padding: 0; margin: 0 -1.1rem; }
    .forecast-scope .tr-picker { margin: 0 1.1rem .8rem; position: relative; }
    .forecast-scope .gw-picker { margin: 0 0 .9rem; }
    .forecast-scope .tr-dd-btn {
      width: 100%; display: flex; align-items: center; justify-content: space-between; gap: .5rem;
      padding: .55rem .8rem; font-size: .78rem; font-weight: 600; font-family: inherit; text-align: left;
      color: var(--text); background: var(--surface2); border: 1px solid var(--border);
      border-radius: 8px; cursor: pointer; transition: border-color .15s;
    }
    .forecast-scope .tr-dd-btn:hover { border-color: var(--border-hi, var(--border)); }
    .forecast-scope .tr-dd-caret { flex-shrink: 0; display: inline-flex; color: var(--muted); }
    .forecast-scope .tr-dd-caret svg { width: 14px; height: 14px; }
    .forecast-scope .tr-dd-list {
      display: none; position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 50;
      background: var(--surface, #fff); border: 1px solid var(--border); border-radius: 8px;
      box-shadow: 0 10px 30px rgba(0,0,0,.12); overflow: hidden; max-height: 300px; overflow-y: auto;
    }
    .forecast-scope .tr-dd-list.open { display: block; }
    .forecast-scope .tr-opt {
      padding: .55rem .8rem; font-size: .78rem; font-weight: 500; color: var(--text);
      cursor: pointer; border-bottom: 1px solid var(--line-soft); transition: background .12s;
    }
    .forecast-scope .tr-opt:last-child { border-bottom: none; }
    .forecast-scope .tr-opt:hover { background: var(--surface2); }
    .forecast-scope .tr-opt.active { background: var(--surface2); font-weight: 700; color: var(--gold); }
    .forecast-scope .tr-week { margin-bottom: 0; }
    .forecast-scope .tr-week:last-child { margin-bottom: 0; }
    .forecast-scope .tr-week-title { font-size: .78rem; font-weight: 800; color: var(--text); margin-bottom: .5rem; display: flex; align-items: baseline; gap: .5rem; }
    .forecast-scope .tr-prev { font-size: .66rem; font-weight: 600; color: var(--muted); }
    .forecast-scope .tr-scroll {
      overflow-x: auto; -webkit-overflow-scrolling: touch;
    }
    .forecast-scope .tr-table { border-collapse: collapse; width: 100%; font-size: .72rem; font-variant-numeric: tabular-nums; }
    .forecast-scope .tr-table th, .forecast-scope .tr-table td { padding: .4rem .55rem; text-align: center; white-space: nowrap; border-bottom: 1px solid var(--border); }
    .forecast-scope .tr-table th:first-child, .forecast-scope .tr-table td:first-child { padding-left: 1.1rem; }
    .forecast-scope .tr-table th:last-child, .forecast-scope .tr-table td:last-child { padding-right: 1.1rem; }
    .forecast-scope .tr-table tbody tr:last-child td { border-bottom: none; }
    .forecast-scope .tr-table th { font-size: .62rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); background: var(--surface2); }
    .forecast-scope .tr-table .tr-model { text-align: left; font-weight: 600; color: var(--text); position: sticky; left: 0; background: var(--surface); }
    .forecast-scope .tr-model-logo { display: inline-flex; vertical-align: middle; margin-right: 5px; }
    .forecast-scope .tr-model-logo svg { width: 15px; height: 15px; }
    .forecast-scope .tr-model-name { vertical-align: middle; font-weight: 700; }
    .forecast-scope .tr-table th.tr-model { background: var(--surface2); }
    .forecast-scope .tr-actualrow td { font-weight: 800; color: var(--text); background: #e3f0ff; }
    .forecast-scope .tr-actualrow .tr-model { background: #e3f0ff; }
    .forecast-scope .tr-actualrow .tr-actual { color: var(--gold); }
    .forecast-scope .tr-consensus td { font-weight: 700; background: #fff8e1; }
    .forecast-scope .tr-consensus .tr-model { background: #fff8e1; }
    .forecast-scope .tr-hit { color: #16a34a; font-weight: 700; }
    .forecast-scope .tr-near { color: #ca8a04; }
    .forecast-scope .tr-miss { color: #dc2626; }
    .forecast-scope .tr-err { font-weight: 700; }
    .forecast-scope .tr-match { font-weight: 800; }
    /* Grouped 3-col-per-day table */
    .forecast-scope .tr-table-grouped th, .forecast-scope .tr-table-grouped td { padding: .35rem .4rem; }
    .forecast-scope .tr-daygrp { text-align: center; font-size: .66rem; font-weight: 800; color: var(--text); background: var(--surface2); border-bottom: 1px solid var(--border); }
    .forecast-scope .tr-sub { font-size: .55rem; font-weight: 600; color: var(--muted); text-transform: none; letter-spacing: 0; background: var(--surface2); }
    .forecast-scope .tr-fc { font-weight: 400; color: var(--text); }
    .forecast-scope .tr-diff { font-size: .92em; }
    .forecast-scope .tr-daysep { }
    .forecast-scope .tr-table-grouped .tr-model { border-left: none; }
    /* Stacked daily cell: forecast / err / match */
    .forecast-scope .tr-cell { line-height: 1.25; }
    .forecast-scope .tr-cell-fc { display: block; font-weight: 700; font-size: .74rem; }
    .forecast-scope .tr-cell-err { display: block; font-size: .6rem; font-weight: 600; opacity: .85; }
    .forecast-scope .tr-cell-match { display: block; font-size: .58rem; font-weight: 700; opacity: .7; }
    .forecast-scope .tr-dir-ok { color: #16a34a; font-weight: 800; }
    .forecast-scope .tr-dir-x { color: #dc2626; font-weight: 800; }
    .forecast-scope .tr-best { margin-top: .5rem; font-size: .72rem; color: var(--text); }
    .forecast-scope .tr-best.tr-pending { color: var(--muted); font-style: italic; }
    .forecast-scope .tr-best code { background: var(--surface2); padding: 1px 5px; border-radius: 4px; font-size: .68rem; }
    .forecast-scope .tr-empty { color: var(--muted); font-size: .78rem; padding: 1rem 0; text-align: center; }
    .forecast-scope .fc-collapse-date { margin-left: auto; font-size: .68rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--gold); white-space: nowrap; }
    .forecast-scope .fc-collapse-body { display: none; padding: .8rem; }
    .forecast-scope .fc-collapse.open .fc-collapse-body { display: block; }
    /* Model tabs */
    .forecast-scope .fc-model-tabs { display: flex; gap: .4rem; margin: 1.1rem 0 .9rem; }
    .forecast-scope .fc-mtab {
      padding: .45rem .9rem; font-size: .78rem; font-weight: 700; border-radius: 8px;
      border: 1px solid var(--border); background: var(--surface); color: var(--muted);
      cursor: pointer; font-family: inherit; transition: all .15s;
    }
    .forecast-scope .fc-mtab:hover { color: var(--text); border-color: var(--border-hi); }
    .forecast-scope .fc-mtab.active { background: var(--gold); color: #fff; border-color: var(--gold); }
    .forecast-scope .section-label {
      display:flex; align-items:center; gap:.85rem;
      font-size:.62rem; letter-spacing:.2em; text-transform:uppercase;
      color:var(--muted); margin-bottom:1.25rem;
    }.forecast-scope .section-label.spaced { margin-top:2rem; }.forecast-scope .section-label-note {
      font-size:.55rem; letter-spacing:.08em; text-transform:none;
      color:var(--amber); font-style:italic; font-weight:500;
    }.forecast-scope .ai-grid {
      display:flex;
      flex-direction:row;
      flex-wrap:nowrap;
      gap:.75rem;
      margin-bottom:0;
      width:100%;
      box-sizing:border-box;
      overflow-x:auto;
      scroll-behavior:smooth;
      scroll-snap-type:x mandatory;
      -webkit-overflow-scrolling:touch;
      scrollbar-width:none;
      padding-bottom:.25rem;
    }
    .forecast-scope .ai-grid::-webkit-scrollbar { display:none; }
    .forecast-scope .ai-grid > .ai-panel {
      flex:0 0 calc((100% - 1.5rem) / 2.2);
      scroll-snap-align:start;
    }
    /* Carousel wrapper + arrow controls (shared by models + days) */
    .forecast-scope .carousel-wrap { position:relative; width:100%; box-sizing:border-box; }
    /* Day carousel dot indicators */
    .forecast-scope .day-dots {
      display:flex; justify-content:center; align-items:center; gap:.4rem;
      margin-top:.7rem;
    }
    .forecast-scope .day-dot {
      width:7px; height:7px; border-radius:50%;
      background:var(--border-hi, #cbd5e1);
      transition:all .2s ease; cursor:pointer; flex-shrink:0;
    }
    .forecast-scope .day-dot.active {
      width:22px; border-radius:5px; background:var(--gold);
    }
    .forecast-scope .carousel-arrow {
      position:absolute; top:50%; transform:translateY(-50%);
      z-index:5; width:34px; height:34px; border-radius:50%;
      background:var(--surface2); border:1px solid var(--border-hi);
      color:var(--gold); cursor:pointer; display:flex; align-items:center; justify-content:center;
      font-size:1rem; line-height:1; transition:all .15s; padding:0;
      box-shadow:0 2px 8px rgba(0,0,0,.25);
    }
    .forecast-scope .carousel-arrow:hover { background:var(--gold); color:#fff; border-color:var(--gold); }
    .forecast-scope .carousel-arrow.prev { left:-6px; }
    .forecast-scope .carousel-arrow.next { right:-6px; }
    .forecast-scope .carousel-arrow:disabled { opacity:.3; cursor:default; }
    .forecast-scope .carousel-arrow:disabled:hover { background:var(--surface2); color:var(--gold); border-color:var(--border-hi); }
    @media(max-width:640px) {
      .forecast-scope .ai-grid > .ai-panel { flex:0 0 88%; }
      .forecast-scope .mini-day-mid .mini-day-range { width:5.2rem; font-size:.6rem; }
      .forecast-scope .mini-day-wrap .mini-day-price { font-size:1rem; min-width:3.4rem; }
      .forecast-scope .mini-day-wrap { grid-template-columns:2.4rem 1fr auto auto; gap:.5rem; }
      .forecast-scope .day-model-mid .day-model-range { width:4.8rem; font-size:.58rem; }
      .forecast-scope .day-model-wrap { grid-template-columns:2.9rem 1fr auto auto; gap:.45rem; padding:.4rem .7rem; }
    }.forecast-scope .mini-days {
      display:flex;
      flex-direction:column;
      gap:.3rem;
      margin-bottom:.85rem;
    }.forecast-scope .ai-panel {
      background:var(--surface);
      border:1px solid var(--border);
      border-radius:var(--radius);
      overflow:hidden;
      transition:transform .2s, border-color .2s, box-shadow .2s;
      animation:fadeUp .5s ease both;
      cursor:pointer;
      display:flex; flex-direction:column;
    }.forecast-scope .ai-panel-body { padding:.9rem 1rem 1rem; display:flex; flex-direction:column; flex:1; }.forecast-scope .mini-days { display:flex; flex-direction:column; gap:0; margin-bottom:.85rem; }.forecast-scope .ai-week-badge {
      display:flex; align-items:center; justify-content:space-between;
      margin-bottom:.6rem;
    }.forecast-scope .ai-panel:hover {
      transform:translateY(-3px);
      box-shadow: 0 16px 40px -12px rgba(160,120,32,0.15);
    }.forecast-scope .ai-panel:nth-child(1) { animation-delay:.08s; }.forecast-scope .ai-panel:nth-child(2) { animation-delay:.14s; }.forecast-scope .ai-panel:nth-child(3) { animation-delay:.20s; }.forecast-scope .ai-panel:nth-child(4) { animation-delay:.26s; }.forecast-scope .ai-panel:nth-child(5) { animation-delay:.32s; }.forecast-scope .ai-panel-stripe {
      height:3px;
      width:100%;
    }.forecast-scope .ai-panel-head {
      display:flex; align-items:center; gap:.6rem;
      padding:.9rem 1rem .75rem;
      border-bottom:1px solid var(--border);
    }.forecast-scope .ai-logo {
      width:28px; height:28px; border-radius:2px;
      display:flex; align-items:center; justify-content:center;
      font-size:.7rem; font-weight:700; letter-spacing:.03em;
      flex-shrink:0;
    }.forecast-scope .ai-name {
      font-family:'Inter',sans-serif;
      font-size:1rem; font-weight:700; color:var(--text);
    }.forecast-scope .ai-model { font-size:.6rem; color:var(--muted); letter-spacing:.06em; }.forecast-scope .mini-day {
      display:flex; flex-direction:row; align-items:center;
      gap:.4rem; flex-wrap:nowrap; overflow:hidden;
      font-size:.68rem; padding:.35rem .45rem; border-radius:6px;
      background:var(--surface2);
    }.forecast-scope .mini-day-name { color:var(--muted); letter-spacing:.06em; font-size:.6rem; font-weight:600; text-transform:uppercase; flex-shrink:0; min-width:1.8rem; }.forecast-scope .mini-day-price { font-family:'Inter',sans-serif; font-size:.88rem; font-weight:700; color:var(--text); line-height:1; flex-shrink:0; }.forecast-scope .mini-day-range {
      font-size:.66rem; color:var(--muted); letter-spacing:.02em;
      display:flex; flex-direction:row; align-items:center;
      gap:.18rem; white-space:nowrap; flex-shrink:0;
    }.forecast-scope .mini-day-range .rh { color:var(--green); }.forecast-scope .mini-day-range .rl { color:var(--red); }.forecast-scope .mini-day-range .sep { color:var(--muted); opacity:.5; }.forecast-scope .mini-day-chg { font-size:.63rem; font-weight:600; flex-shrink:0; margin-left:auto; }
    .forecast-scope .mini-day-prob {
      display:flex; height:17px; border-radius:3px; overflow:hidden;
      margin:0; background:rgba(148,163,184,.12);
    }
    .forecast-scope .mini-day-prob span {
      height:100%; display:flex; align-items:center; justify-content:center;
      font-size:.6rem; font-weight:700; color:#fff; line-height:1;
      overflow:hidden; white-space:nowrap;
      text-shadow:0 0 2px rgba(0,0,0,.4);
    }
    .forecast-scope .mini-day-wrap {
      display:grid;
      grid-template-columns: 2.8rem 1fr auto auto;
      align-items:center; gap:.75rem;
      padding:.4rem 0; border-bottom:1px solid rgba(148,163,184,.1);
    }
    .forecast-scope .mini-day-wrap:last-child { border-bottom:none; }
    .forecast-scope .mini-day-wrap .mini-day-name {
      font-size:.9rem; font-weight:700; letter-spacing:.04em;
      text-transform:uppercase; color:var(--muted); min-width:0;
    }
    .forecast-scope .mini-day-wrap .mini-day-price {
      font-family:'Inter',sans-serif; font-size:1.1rem; font-weight:700;
      color:var(--text); line-height:1; text-align:right; min-width:4rem;
    }
    .forecast-scope .mini-day-mid { display:flex; flex-direction:row; align-items:center; gap:.5rem; min-width:0; }
    .forecast-scope .mini-day-mid .mini-day-prob { flex:1; margin:0; }
    .forecast-scope .mini-day-mid .mini-day-range { flex-shrink:0; width:6.2rem; }
    .forecast-scope .mini-day-wrap .mini-day-chg {
      font-size:.82rem; font-weight:700; text-align:right; flex-shrink:0; min-width:3.4rem;
    }
    .forecast-scope .up { color:var(--green); }.forecast-scope .down { color:var(--red); }.forecast-scope .flat { color:var(--muted); }.forecast-scope .ai-summary {
      font-size:.7rem; line-height:1.6; color:var(--muted);
      border-top:1px solid var(--border); padding-top:.7rem; margin-top:.7rem;
      flex:1;
    }.forecast-scope .ai-summary strong { color:var(--text); font-weight:500; }
    .forecast-scope .ai-summary.clamped {
      display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
      overflow:hidden; cursor:pointer; transition:color .15s ease;
    }
    .forecast-scope .ai-summary.clamped:hover { color:var(--text); }
    .forecast-scope .ai-summary-more {
      background:none; border:none; color:var(--gold); cursor:pointer;
      font-size:.66rem; font-weight:600; padding:.3rem 0 0; margin-top:.15rem;
      font-family:inherit; letter-spacing:.02em;
    }
    .forecast-scope .ai-summary-more:hover { text-decoration:underline; }
    .summary-modal-overlay {
      position:fixed; inset:0; background:rgba(0,0,0,.55);
      display:flex; align-items:center; justify-content:center;
      padding:1.25rem; z-index:1000; opacity:0; pointer-events:none;
      transition:opacity .18s ease;
    }
    .summary-modal-overlay.open { opacity:1; pointer-events:auto; }
    .summary-modal {
      background:var(--card, #fff); color:var(--text); border-radius:var(--radius);
      max-width:520px; width:100%; max-height:80vh; overflow-y:auto;
      box-shadow:0 20px 60px rgba(0,0,0,.35); border:1px solid var(--border);
      transform:translateY(8px) scale(.98); transition:transform .18s ease;
    }
    .summary-modal-overlay.open .summary-modal { transform:translateY(0) scale(1); }
    .summary-modal-head {
      display:flex; align-items:center; gap:.6rem;
      padding:1.1rem 1.25rem .8rem; border-bottom:1px solid var(--border);
      position:sticky; top:0; background:var(--card, #fff);
    }
    .summary-modal-logo { width:26px; height:26px; border-radius:7px;
      display:flex; align-items:center; justify-content:center; flex-shrink:0; }
    .summary-modal-title { font-size:.9rem; font-weight:600; color:var(--text); }
    .summary-modal-sub { font-size:.66rem; color:var(--muted); }
    .summary-modal-close {
      margin-left:auto; background:none; border:none; cursor:pointer;
      font-size:1.3rem; line-height:1; color:var(--muted); padding:.1rem .3rem;
    }
    .summary-modal-close:hover { color:var(--text); }
    .summary-modal-body {
      padding:1.1rem 1.25rem 1.4rem; font-size:.8rem; line-height:1.75;
      color:var(--muted);
    }
    .summary-modal-body strong { color:var(--text); font-weight:600; }
    .forecast-scope .prob-gauge {
      margin-top:.75rem;
      border-top:1px solid var(--border);
      padding-top:.65rem;
    }.forecast-scope .prob-gauge-label {
      font-size:.56rem; font-weight:700; letter-spacing:.14em;
      text-transform:uppercase; color:var(--muted); margin-bottom:.5rem;
    }.forecast-scope .prob-track {
      display:flex; height:8px; border-radius:2px; overflow:hidden;
      gap:1px; margin-bottom:.45rem;
    }.forecast-scope .prob-seg {
      height:100%; transition:width .4s ease;
      border-radius:0;
    }.forecast-scope .prob-seg:first-child { border-radius:2px 0 0 2px; }.forecast-scope .prob-seg:last-child { border-radius:0 2px 2px 0; }.forecast-scope .prob-legend {
      display:grid; grid-template-columns:repeat(5,1fr); gap:.2rem;
    }.forecast-scope .prob-item {
      display:flex; flex-direction:column; align-items:center; gap:.15rem;
    }.forecast-scope .prob-dot {
      width:7px; height:7px; border-radius:50%; flex-shrink:0;
    }.forecast-scope .prob-name { font-size:.52rem; color:var(--muted); text-align:center; line-height:1.2; }.forecast-scope .prob-pct { font-size:.65rem; font-weight:700; color:var(--text); }.forecast-scope /* Larger variant used for the aggregate (all-models) legend */
    .prob-legend.lg .prob-dot { width:9px; height:9px; }.forecast-scope .prob-legend.lg .prob-name { font-size:.6rem; }.forecast-scope .prob-legend.lg .prob-pct { font-size:.75rem; }.forecast-scope .ai-eow { font-family:'Inter',sans-serif; font-size:1.3rem; font-weight:600; color:var(--gold-pale); }.forecast-scope .ai-bias {
      font-size:.62rem; letter-spacing:.1em; text-transform:uppercase;
      padding:.2rem .55rem; border-radius:2px; border:1px solid;
      font-weight:700;
    }.forecast-scope .bias-vbull { color:#fff; border-color:#15803d; background:#15803d; }.forecast-scope .bias-bull { color:#fff; border-color:#22c55e; background:#22c55e; }.forecast-scope .bias-neut { color:#fff; border-color:#94a3b8; background:#94a3b8; }.forecast-scope .bias-bear { color:#fff; border-color:#f97316; background:#f97316; }.forecast-scope .chart-section {
      background:var(--surface);
      border:1px solid var(--border);
      border-radius:var(--radius);
      padding:1.5rem 1.75rem;
      margin-bottom:2.5rem;
      animation:fadeUp .5s .35s ease both;
    }.forecast-scope .chart-top {
      display:flex; align-items:center; justify-content:space-between;
      flex-wrap:wrap; gap:1rem;
      margin-bottom:1.25rem;
    }.forecast-scope .chart-legend { display:flex; flex-wrap:wrap; gap:.85rem; font-size:.65rem; color:var(--muted); letter-spacing:.06em; }.forecast-scope .leg { display:flex; align-items:center; gap:.35rem; }.forecast-scope .leg-line { width:18px; height:2px; border-radius:2px; }.forecast-scope .leg-dot { width:10px; height:10px; border-radius:50%; }.forecast-scope .leg-box { width:12px; height:10px; border-radius:1px; border:1px solid; }.forecast-scope .chart-wrap { height:260px; position:relative; }.forecast-scope .chart-wrap canvas { opacity: 1; }.forecast-scope /* Seasonality chart section */
    .seasonality-top {
      display:flex; align-items:center; justify-content:space-between;
      flex-wrap:wrap; gap:.75rem 1.25rem;
      margin-bottom:1.25rem;
    }.forecast-scope .seasonality-legend { display:flex; flex-wrap:wrap; gap:.85rem; font-size:.65rem; color:var(--muted); letter-spacing:.06em; }.forecast-scope .seasonality-summary {
      display:flex; flex-wrap:wrap; gap:.3rem .6rem;
      font-size:.72rem; color:var(--muted);
      align-items:baseline;
    }.forecast-scope .seasonality-summary .ssn-k { color:var(--muted); font-weight:500; }.forecast-scope .seasonality-summary strong { color:var(--text); font-weight:700; }.forecast-scope .seasonality-summary strong.up { color:var(--green); }.forecast-scope .seasonality-summary strong.down { color:var(--red); }.forecast-scope .seasonality-summary .ssn-sep { color:var(--border); }
    @media(max-width:640px) {.forecast-scope .seasonality-top { flex-direction:column; align-items:flex-start; }}.forecast-scope /* Seasonality chart: horizontal scroll on mobile so bars stay readable */
    .seasonality-scroll {
      overflow-x:auto;
      overflow-y:hidden;
      -webkit-overflow-scrolling:touch;
      margin:0 -1.75rem; /* extend scroll area to card edges on desktop */
      padding:0 1.75rem;
    }.forecast-scope .seasonality-canvas-wrap {
      height:340px;
      position:relative;
      min-width:100%;
    }
    @media(max-width:780px) {.forecast-scope .seasonality-scroll {
        margin:0 -1rem;
        padding:0 1rem;
      }
.forecast-scope /* Force a comfortable min-width on mobile so chart scrolls */
      .seasonality-canvas-wrap {
        min-width:720px;
        height:320px;
      }}.forecast-scope /* Subtle scroll hint: gradient edges */
    .seasonality-scroll {
      background:
        linear-gradient(to right, var(--surface) 30%, rgba(255,255,255,0)),
        linear-gradient(to right, rgba(255,255,255,0), var(--surface) 70%) 100% 0,
        radial-gradient(farthest-side at 0 50%, rgba(0,0,0,.08), rgba(0,0,0,0)),
        radial-gradient(farthest-side at 100% 50%, rgba(0,0,0,.08), rgba(0,0,0,0)) 100% 0;
      background-repeat:no-repeat;
      background-size:40px 100%, 40px 100%, 14px 100%, 14px 100%;
      background-attachment:local, local, scroll, scroll;
    }.forecast-scope .ssn-source-bar {
      display:flex; align-items:center; gap:.6rem;
      margin-bottom:1rem; padding-bottom:.85rem;
      border-bottom:1px solid var(--border);
    }.forecast-scope .ssn-source-label {
      font-size:.6rem; letter-spacing:.12em; text-transform:uppercase;
      color:var(--muted); font-weight:600;
    }.forecast-scope .ssn-source-tabs { display:flex; gap:.3rem; }.forecast-scope .ssn-source-tab {
      padding:.3rem .85rem;
      font-size:.7rem; font-weight:600; letter-spacing:.06em;
      border:1px solid var(--border); border-radius:2px;
      cursor:pointer; background:transparent; color:var(--muted);
      font-family:'Inter',sans-serif;
      transition:all .18s;
    }.forecast-scope .ssn-source-tab:hover { color:var(--text); border-color:var(--border-hi); }.forecast-scope .ssn-source-tab.active { background:var(--text); color:#fff; border-color:var(--text); }.forecast-scope .consensus-section {
      animation:fadeUp .5s .45s ease both;
      width:100%;
      box-sizing:border-box;
    }.forecast-scope .consensus-card {
      background: linear-gradient(135deg, rgba(30,64,175,0.05) 0%, rgba(30,64,175,0.02) 60%, var(--surface) 100%);
      border:1px solid var(--border-hi);
      border-radius:2px;
      position:relative;
      display:flex;
      flex-direction:column;
    }.forecast-scope .consensus-card::before {
      content:'FINAL';
      position:absolute; top:1.1rem; right:1.25rem;
      font-size:.55rem; letter-spacing:.25em;
      color:var(--gold-dim); font-weight:600;
      border:1px solid var(--gold-dim); padding:.15rem .4rem; border-radius:2px;
      z-index:1;
    }.forecast-scope .consensus-top {
      display:grid; grid-template-columns:3fr 7fr;
      gap:0;
      border-bottom:1px solid var(--border);
    }
    @media(max-width:820px) {.forecast-scope .consensus-top { grid-template-columns:1fr; }
.forecast-scope .consensus-main { border-right:none; border-bottom:1px solid var(--border); padding:1.25rem 1.5rem; }
.forecast-scope .consensus-verdict { padding:1.25rem 1.5rem; }}.forecast-scope .consensus-main { padding:1.75rem 2rem; border-right:1px solid var(--border); }.forecast-scope .consensus-label {
      font-size:.62rem; letter-spacing:.2em; text-transform:uppercase;
      color:var(--gold); margin-bottom:.75rem;
    }.forecast-scope .consensus-prices {
      display:flex; align-items:baseline; gap:.6rem; flex-wrap:wrap;
      margin-bottom:.5rem;
    }.forecast-scope .consensus-price-block { display:flex; flex-direction:column; gap:.15rem; }.forecast-scope .cprice-val {
      font-family:'Inter',sans-serif;
      font-size:clamp(1.6rem,4vw,2.7rem); font-weight:700;
      color:var(--gold-pale); line-height:1;
    }.forecast-scope .cprice-val sub { font-size:.35em; color:var(--gold-dim); vertical-align:middle; }.forecast-scope .consensus-range {
      margin-top:.5rem; font-size:.72rem; color:var(--muted);
      display:flex; flex-direction:column; gap:.25rem;
    }.forecast-scope .consensus-range span { color:var(--text); }.forecast-scope .consensus-verdict { padding:1.75rem 2rem; }.forecast-scope .verdict-label { font-size:.62rem; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); margin-bottom:.5rem; }.forecast-scope .verdict-bias {
      font-family:'Inter',sans-serif;
      font-size:2.2rem; font-weight:700; line-height:1;
      margin-bottom:.6rem;
    }.forecast-scope .verdict-text { font-size:.76rem; line-height:1.7; color:var(--muted); }.forecast-scope .verdict-text strong { color:var(--text); }.forecast-scope .ai-votes {
      display:grid; grid-template-columns:repeat(6,1fr);
      border-top:1px solid var(--border);
      width:100%;
    }
    @media(max-width:700px) {.forecast-scope .ai-votes { grid-template-columns:repeat(3,1fr); }}.forecast-scope .vote-cell {
      padding:.85rem .75rem;
      border-right:1px solid var(--border);
      display:flex; flex-direction:column; gap:.3rem;
      transition:background .2s;
      min-width:0;
    }.forecast-scope .vote-cell:last-child { border-right:none; }.forecast-scope .vote-cell:hover { background:var(--surface2); }.forecast-scope .vote-ai { font-size:.6rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); }.forecast-scope .vote-price { font-family:'Inter',sans-serif; font-size:1.2rem; color:var(--text); line-height:1; }.forecast-scope .vote-chg { font-size:.65rem; font-weight:600; }.forecast-scope .vote-bar-wrap { height:3px; background:var(--surface3); border-radius:2px; margin-top:.2rem; overflow:hidden; }.forecast-scope .vote-bar { height:100%; border-radius:2px; transition:width .8s .6s ease; }.forecast-scope .catalyst-pill {
      font-size:.58rem; padding:.15rem .4rem;
      border-radius:2px; border:1px solid var(--border);
      color:var(--muted); letter-spacing:.05em;
      white-space:nowrap;
    }.forecast-scope .disclaimer {
      margin-top:2rem;
      font-size:.6rem; color:var(--muted); letter-spacing:.04em; line-height:1.8; opacity:.65;
    }

    @keyframes fadeUp {.forecast-scope from {opacity:0;transform:translateY(14px)}
.forecast-scope to {opacity:1;transform:translateY(0)}}
    @keyframes fadeDown {.forecast-scope from {opacity:0;transform:translateY(-8px)}
.forecast-scope to {opacity:1;transform:translateY(0)}}.forecast-scope .session-card {
      background: var(--surface);
      border: 1px solid var(--border-hi);
      border-radius:var(--radius);
      margin-bottom: 2rem;
      animation: fadeUp .5s .05s ease both;
      overflow: hidden;
    }.forecast-scope .session-card-head {
      display: flex; align-items: center; justify-content: space-between;
      flex-wrap: wrap; gap: .5rem;
      padding: .85rem 1.25rem;
      background: var(--surface2);
    }
    @media(max-width:480px) {.forecast-scope .session-card-head { flex-direction: column; align-items: flex-start; }}.forecast-scope .session-card-price {
      font-size: .75rem; color: var(--muted);
    }.forecast-scope .session-card-price strong { color: var(--text); font-size: .9rem; }.forecast-scope /* Compact overview summary line (Date · P-Close · F-Close · Signal) */
    .session-card-price .ov-kv { white-space: nowrap; }.forecast-scope .session-card-price .ov-date strong { color: var(--gold); }.forecast-scope .session-card-price .ov-sep { margin: 0 .65rem; color: var(--border); font-weight: 700; }
    @media(max-width:540px) {.forecast-scope .session-card-price { display:flex; flex-wrap:wrap; gap:.35rem .8rem; align-items:baseline; }
.forecast-scope .session-card-price .ov-sep { display:none; }
.forecast-scope .session-card-price .ov-date { width:100%; margin-bottom:.15rem; }}.forecast-scope /* ============ Prediction Markets Panel ============ */
    .pm-card {
      background: var(--surface);
      border: 1px solid var(--border-hi);
      border-radius:var(--radius);
      margin-bottom: 1.5rem;
      animation: fadeUp .5s .05s ease both;
      overflow: hidden;
    }.forecast-scope .pm-card-head {
      padding:.65rem 1.25rem;
      background: var(--surface2);
      border-bottom:1px solid var(--border);
      display:flex; justify-content:space-between; align-items:center;
      flex-wrap:wrap; gap:.5rem;
    }.forecast-scope .pm-title {
      font-size:.72rem; font-weight:700; letter-spacing:.06em;
      text-transform:uppercase; color:var(--muted);
      display:flex; align-items:center; gap:.45rem;
    }.forecast-scope .pm-title strong { color:var(--text); }.forecast-scope .pm-title-logo {
      width:18px; height:18px;
      flex-shrink:0;
    }.forecast-scope .pm-subtitle { font-size:.65rem; color:var(--muted); font-weight:500; }.forecast-scope .pm-head-right {
      display:flex; align-items:center; gap:.55rem;
      flex-shrink:0;
    }.forecast-scope .pm-fresh {
      font-size:.62rem; font-weight:600;
      color:var(--muted);
      letter-spacing:.02em;
      white-space:nowrap;
    }
    @media(max-width:480px) {.forecast-scope .pm-fresh { font-size:.55rem; }}.forecast-scope .pm-body { padding:.85rem 1.25rem; }.forecast-scope .pm-list { display:flex; flex-direction:column; }.forecast-scope .pm-row {
      display:grid;
      grid-template-columns: minmax(0,1fr) auto auto;
      gap:.7rem;
      align-items:center;
      padding:.55rem 0;
      border-bottom:1px solid var(--border);
    }.forecast-scope .pm-row:last-child { border-bottom:none; }.forecast-scope .pm-row-main { min-width:0; }.forecast-scope .pm-name {
      font-size:.82rem; font-weight:600; color:var(--text);
      line-height:1.3;
      display:flex; align-items:center; gap:.4rem;
      flex-wrap:wrap;
    }.forecast-scope .pm-name-text { display:inline; }.forecast-scope .pm-logo {
      width:14px; height:14px;
      flex-shrink:0;
      vertical-align:middle;
    }.forecast-scope .pm-name .pm-src {
      display:inline-block;
      font-size:.58rem; font-weight:700; letter-spacing:.04em;
      margin-left:.4rem;
      vertical-align:middle;
      color:var(--muted);
      text-transform:uppercase;
      opacity:.65;
    }.forecast-scope .pm-name .pm-src.kalshi { color:#16a34a; opacity:.8; }.forecast-scope .pm-impact {
      font-size:.7rem; color:var(--muted); margin-top:.22rem;
      line-height:1.4; overflow-wrap:break-word;
    }.forecast-scope .pm-impact strong { color:var(--text); font-weight:700; }.forecast-scope .pm-prob-group {
      display:flex; flex-direction:column; align-items:flex-end;
      gap:.2rem;
      white-space:nowrap;
    }.forecast-scope .pm-prob-chip {
      font-size:.78rem; line-height:1.15;
      color:var(--text);
    }.forecast-scope .pm-prob-chip-label {
      color:var(--muted); font-weight:500; font-size:.68rem;
      margin-right:.05rem;
    }.forecast-scope .pm-prob-chip strong { font-weight:700; }.forecast-scope /* Legacy single-prob styles kept for any non-grouped paths */
    .pm-prob {
      font-size:1.1rem; font-weight:700; color:var(--text);
      text-align:right; line-height:1; white-space:nowrap;
    }.forecast-scope .pm-prob-meta { display:none; }.forecast-scope .pm-delta {
      font-size:.7rem; font-weight:700; white-space:nowrap;
    }.forecast-scope .pm-delta.up { color:#15803d; }.forecast-scope .pm-delta.dn { color:#b91c1c; }.forecast-scope .pm-delta.flat { color:var(--muted); }.forecast-scope .pm-summary {
      margin-top:.85rem;
      padding:.8rem .9rem;
      background:rgba(201,132,28,.06);
      border-left:3px solid var(--gold);
      border-radius:var(--radius);
      font-size:.78rem; line-height:1.55; color:var(--text);
    }.forecast-scope .pm-summary strong { color:var(--gold); }.forecast-scope .pm-refresh {
      background:transparent;
      border:1px solid var(--border);
      color:var(--muted);
      width:28px; height:28px;
      border-radius:2px;
      font-size:.95rem; font-weight:700;
      cursor:pointer;
      display:inline-flex; align-items:center; justify-content:center;
      transition: color .15s, border-color .15s, transform .25s;
      flex-shrink:0;
    }.forecast-scope .pm-refresh:hover {
      color:var(--text); border-color:var(--text);
      transform: rotate(90deg);
    }.forecast-scope .pm-refresh:active { transform: rotate(180deg); }
    @media(max-width:540px) {.forecast-scope .pm-row { grid-template-columns: minmax(0,1fr) auto; }
.forecast-scope .pm-row .pm-delta { grid-column: 2; }
.forecast-scope .pm-row .pm-prob { grid-column: 2; grid-row: 1; }
.forecast-scope .pm-row .pm-prob-meta { display:none; }}.forecast-scope .view-toggle-bar {
      display:flex; align-items:center; justify-content:space-between;
      flex-wrap:wrap; gap:.75rem;
      margin-bottom:1.25rem;
    }.forecast-scope .view-toggle-bar .section-label { margin-bottom:0; flex:1; }.forecast-scope .view-tabs {
      display:flex; gap:.3rem;
    }.forecast-scope .view-tab {
      padding:.32rem .85rem;
      font-size:.7rem; font-weight:600; letter-spacing:.06em; text-transform:uppercase;
      border:1px solid var(--border); border-radius:2px;
      cursor:pointer; background:transparent; color:var(--muted);
      transition:all .18s;
    }.forecast-scope .view-tab:hover { color:var(--gold); border-color:var(--border-hi); }.forecast-scope .view-tab.active { background:var(--gold); color:#fff; border-color:var(--gold); }.forecast-scope .by-day-grid {
      display:flex;
      flex-direction:row;
      flex-wrap:nowrap;
      gap:.75rem;
      margin-bottom:0;
      width:100%;
      box-sizing:border-box;
      overflow-x:auto;
      scroll-behavior:smooth;
      scroll-snap-type:x mandatory;
      -webkit-overflow-scrolling:touch;
      scrollbar-width:none;
      padding-bottom:.25rem;
    }
    .forecast-scope .by-day-grid::-webkit-scrollbar { display:none; }
    .forecast-scope .by-day-grid > .day-col {
      flex:0 0 100%;
      scroll-snap-align:start;
    }
    /* Highlight the current day */
    .forecast-scope .day-col.is-today { border-color:var(--gold); box-shadow:0 0 0 1px var(--gold); }
    .forecast-scope .day-col.is-today .day-col-head { background:#22345c; }
    .forecast-scope .day-today-tag {
      display:inline-block; margin-left:.4rem; font-size:.52rem; font-weight:700;
      letter-spacing:.08em; text-transform:uppercase; color:#fff; background:var(--gold);
      padding:.1rem .3rem; border-radius:2px; vertical-align:middle;
    }

    /* Desktop .day-* rules (MUST come before mobile @media to cascade correctly) */
    .day-col {
      background:var(--surface);
      border:1px solid var(--border);
      border-radius:var(--radius);
      overflow:hidden;
      display:flex; flex-direction:column;
    }.forecast-scope .day-col-head {
      padding:.6rem 1rem;
      border-bottom:1px solid var(--border);
      background:#2c3e6b;
      flex-shrink:0;
    }
    .forecast-scope .day-col-head { display:flex; align-items:center; justify-content:space-between; gap:.5rem; }
    .forecast-scope .day-col-actual {
      font-size:.68rem; font-weight:600; color:var(--muted);
      background:#e3f0ff; border-radius:6px; padding:.2rem .5rem; white-space:nowrap;
    }
    .forecast-scope .day-col-actual b { color:var(--gold); font-weight:800; font-size:.8rem; }
    .forecast-scope .day-model-delta { font-size:.7rem; font-weight:700; min-width:2.4rem; text-align:right; }
    .forecast-scope .day-model-delta.up { color:var(--green); }
    .forecast-scope .day-model-delta.down { color:var(--red); }
    .forecast-scope .day-model-delta.flat { color:var(--muted); }.forecast-scope .day-col-name {
      font-size:.65rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
      color:#ffffff;
    }
    .forecast-scope .day-col-headline {
      display:flex; align-items:baseline; justify-content:space-between; gap:.5rem;
    }
    .forecast-scope .day-col-headline .day-col-date { margin-top:0; }
    .forecast-scope .day-consensus-mid { flex:1; display:flex; justify-content:center; }
    .forecast-scope .day-col-date { font-size:.6rem; color:rgba(255,255,255,0.7); margin-top:.1rem; }.forecast-scope .day-col-catalyst { margin-top:.3rem; }.forecast-scope .day-col-bias { margin-top:.4rem; }
    .forecast-scope .day-model-wrap {
      display:grid;
      grid-template-columns: 3.2rem 1fr auto auto;
      align-items:center; gap:.6rem;
      padding:.4rem 1rem; border-bottom:1px solid rgba(148,163,184,.1);
    }
    .forecast-scope .day-model-wrap:has(+ .day-consensus-row) { border-bottom:none; }
    .forecast-scope .day-model-empty { opacity: .9; }
    .forecast-scope .day-model-blank { color: var(--muted); font-size: .8rem; text-align: right; }
    .forecast-scope .day-update-btn {
      padding: .28rem .6rem; font-size: .68rem; font-weight: 700; font-family: inherit;
      color: var(--gold); background: transparent; border: 1px dashed var(--gold);
      border-radius: 6px; cursor: pointer; white-space: nowrap; transition: all .15s;
    }
    .forecast-scope .day-update-btn:hover { background: var(--gold); color: #fff; border-style: solid; }
    /* Forecast paste popup */
    .forecast-scope .fcp-overlay, .fcp-overlay {
      position: fixed; inset: 0; z-index: 10000; display: none;
      align-items: center; justify-content: center; padding: 4vh 5vw;
      background: rgba(15,20,30,.55); backdrop-filter: blur(3px);
    }
    .fcp-overlay.open { display: flex; }
    .fcp-box {
      width: 100%; max-width: 460px; max-height: 88vh; overflow-y: auto;
      background: var(--surface, #fff); border-radius: 14px; box-shadow: 0 24px 70px rgba(0,0,0,.35);
    }
    .fcp-head {
      display: flex; align-items: center; justify-content: space-between; gap: .6rem;
      padding: .9rem 1.1rem; border-bottom: 1px solid var(--border); background: var(--surface2);
      position: sticky; top: 0;
    }
    .fcp-title { font-size: .85rem; font-weight: 800; color: var(--text); }
    .fcp-close {
      width: 28px; height: 28px; border-radius: 7px; border: 1px solid var(--border);
      background: var(--surface); color: var(--text); cursor: pointer; font-size: .85rem; font-family: inherit;
    }
    .fcp-body { padding: 1rem 1.1rem 1.2rem; }
    .fcp-label { display: block; font-size: .72rem; font-weight: 700; color: var(--muted); margin-bottom: .4rem; }
    .fcp-textarea {
      width: 100%; min-height: 140px; padding: .7rem; font-size: .8rem; font-family: inherit; line-height: 1.5;
      border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text);
      resize: vertical; box-sizing: border-box;
    }
    .fcp-textarea:focus { outline: none; border-color: var(--gold); }
    .fcp-extract {
      width: 100%; margin-top: .7rem; padding: .6rem; font-size: .8rem; font-weight: 700; font-family: inherit;
      color: #fff; background: var(--gold); border: none; border-radius: 8px; cursor: pointer;
    }
    .fcp-extract:hover { opacity: .9; }
    .fcp-status { margin-top: .7rem; font-size: .74rem; color: var(--muted); min-height: 1rem; }
    .fcp-preview:not(:empty) {
      margin-top: .8rem; padding: .8rem; border: 1px solid var(--border); border-radius: 8px; background: var(--surface2);
    }
    .fcp-parsed-bias { font-size: .76rem; margin-bottom: .5rem; color: var(--text); }
    .fcp-parsed-table { width: 100%; border-collapse: collapse; font-size: .74rem; font-variant-numeric: tabular-nums; }
    .fcp-parsed-table th, .fcp-parsed-table td { padding: .3rem .5rem; text-align: left; border-bottom: 1px solid var(--border); }
    .fcp-parsed-table th { font-weight: 700; color: var(--muted); }
    .fcp-parsed-summary { margin-top: .5rem; font-size: .73rem; line-height: 1.5; color: var(--text); }
    .fcp-confirm {
      width: 100%; margin-top: .8rem; padding: .6rem; font-size: .8rem; font-weight: 700; font-family: inherit;
      color: #fff; background: var(--green, #16a34a); border: none; border-radius: 8px; cursor: pointer;
    }
    .fcp-confirm:hover { opacity: .9; }
    .forecast-scope .day-model-name {
      display:flex; align-items:center; gap:.4rem;
      color:var(--text); font-size:.72rem; font-weight:600; white-space:nowrap;
    }
    .forecast-scope .day-model-dot {
      width:8px; height:8px; border-radius:50%; flex-shrink:0;
    }
    .forecast-scope .day-model-logo {
      display:inline-flex; align-items:center; justify-content:center; flex-shrink:0;
    }
    .forecast-scope .day-model-logo svg { width:15px; height:15px; }
    .forecast-scope .day-model-mid { display:flex; flex-direction:row; align-items:center; gap:.5rem; min-width:0; }
    .forecast-scope .day-model-mid .day-model-prob { flex:1; margin:0; }
    .forecast-scope .day-model-mid .day-model-range { flex-shrink:0; width:5.6rem; }
    /* Model block: name on the left, all data grouped on the right */
    .forecast-scope .day-model-block {
      display:flex; flex-direction:row; align-items:flex-start; gap:.6rem;
      padding:.55rem 1rem; border-bottom:1px solid var(--border);
    }
    .forecast-scope .day-model-block:last-child { border-bottom:none; }
    .forecast-scope .day-model-block .day-model-name {
      flex:0 0 3.4rem; min-width:3.4rem; padding-top:.1rem;
      display:flex; align-items:center; gap:.3rem; font-weight:700; font-size:.72rem;
    }
    .forecast-scope .day-model-data { flex:1; min-width:0; display:flex; flex-direction:column; gap:.35rem; }
    .forecast-scope .day-model-dataline {
      display:flex; align-items:center; justify-content:space-between; gap:.5rem;
    }
    .forecast-scope .day-model-probrow { padding:.15rem 0 .5rem; }
    .forecast-scope .day-model-data .day-model-prob { width:100%; height:18px; }
    .forecast-scope .day-model-prob {
      display:flex; height:15px; border-radius:3px; overflow:hidden;
      background:rgba(148,163,184,.12);
    }
    .forecast-scope .day-model-prob span {
      height:100%; display:flex; align-items:center; justify-content:center;
      font-size:.55rem; font-weight:700; color:#fff; line-height:1;
      overflow:hidden; white-space:nowrap;
      text-shadow:0 0 2px rgba(0,0,0,.4);
    }
    /* ── 5-column model row ─────────────────────────────────────── */
    .forecast-scope .day-model-row {
      display:grid;
      grid-template-columns: 2.9rem 3.3rem 1fr 3.4rem 2.2rem;
      align-items:center; gap:.4rem;
      padding:.5rem 1rem; border-bottom:1px solid var(--border);
    }
    .forecast-scope .day-model-row:last-child { border-bottom:none; }
    /* 1. name */
    .forecast-scope .dmc-name .day-model-name {
      display:flex; align-items:center; gap:.25rem; font-weight:700; font-size:.68rem;
    }
    .forecast-scope .dmc-name .day-model-logo svg { width:14px; height:14px; }
    /* 2. forecast range (2 rows: high over low) */
    .forecast-scope .dmc-range {
      display:flex; flex-direction:column; align-items:flex-start; line-height:1.25;
      font-size:.6rem; font-weight:600;
    }
    .forecast-scope .dmc-range .rh { color:var(--green); }
    .forecast-scope .dmc-range .rl { color:var(--red); }
    /* 3. probability bar */
    .forecast-scope .dmc-prob { min-width:0; }
    .forecast-scope .dmc-prob .day-model-prob { width:100%; height:20px; }
    /* 4. forecast price + change (2 rows) */
    .forecast-scope .dmc-fc {
      display:flex; flex-direction:column; align-items:flex-end; line-height:1.2;
    }
    .forecast-scope .dmc-fc-price { font-weight:400; font-size:.82rem; color:var(--text); }
    .forecast-scope .day-unity-row .dmc-fc-price { font-weight:800; }
    .forecast-scope .dmc-fc-chg { font-size:.6rem; font-weight:600; }
    .forecast-scope .dmc-fc-chg.up { color:var(--green); }
    .forecast-scope .dmc-fc-chg.down { color:var(--red); }
    .forecast-scope .dmc-fc-chg.flat { color:var(--muted); }
    /* 5. actual difference */
    .forecast-scope .dmc-actual { text-align:right; display:flex; flex-direction:column; align-items:flex-end; gap:.1rem; }
    .forecast-scope .dmc-diff { font-size:.72rem; font-weight:800; color:var(--text); }
    .forecast-scope .dmc-diff-none { color:var(--muted); }
    .forecast-scope .dmc-thumb { display:inline-flex; }
    .forecast-scope .dmc-thumb svg { width:13px; height:13px; }
    .forecast-scope .dmc-thumb.good { color:var(--green); }
    .forecast-scope .dmc-thumb.bad { color:var(--red); }
    /* empty row */
    .forecast-scope .day-model-row.day-model-empty { grid-template-columns: 2.9rem 1fr; }
    .forecast-scope .day-model-row.day-model-empty .dmc-empty { text-align:right; }
    /* Unity (consensus) row — highlighted, sits near the bottom */
    .forecast-scope .day-unity-row {
      background:rgba(250, 204, 21, 0.14);
      border-top:2px solid var(--border);
      border-bottom:none;
    }
    /* Actual row — the real close, directly under Unity */
    .forecast-scope .day-actual-row {
      background:#e3f0ff; border-bottom:none;
    }
    .forecast-scope .day-actual-row .day-model-name { color:var(--gold); font-weight:800; }
    .forecast-scope .day-actual-row .dmc-fc-price { color:var(--gold); }
    /* Forecast-vs-actual summary (max 2 lines) */
    .forecast-scope .day-summary {
      padding:.55rem 1rem; border-top:1px solid var(--border);
      background:var(--surface2); font-size:.66rem; line-height:1.4; color:var(--muted);
    }
    .forecast-scope .day-summary b { color:var(--text); font-weight:800; }
    .forecast-scope .day-summary-l1 { color:var(--text); }
    .forecast-scope .day-summary-l2 { margin-top:.1rem; }
    .forecast-scope .day-unity-row .day-model-name { color:var(--gold); font-weight:800; }
    .forecast-scope .day-unity-row .unity-bias-dot { width:8px; height:8px; border-radius:50%; padding:0; }
    .forecast-scope .unity-bias-label { font-size:.56rem; font-weight:700; text-transform:uppercase; letter-spacing:.02em; }
    .forecast-scope .unity-bias-label.fc-vbull, .forecast-scope .unity-bias-label.fc-bull { color:var(--green); }
    .forecast-scope .unity-bias-label.fc-bear, .forecast-scope .unity-bias-label.fc-vbear { color:var(--red); }
    .forecast-scope .unity-bias-label.fc-neut { color:var(--muted); }
    .forecast-scope .day-model-price { font-weight:700; color:var(--text); font-size:.92rem; text-align:right; min-width:3.4rem; }
    .forecast-scope .day-model-range { font-size:.62rem; color:var(--muted); white-space:nowrap; display:flex; align-items:center; gap:.15rem; }
    .forecast-scope .day-model-range .rh { color:var(--green); }.forecast-scope .day-model-range .rl { color:var(--red); }.forecast-scope .day-model-range .sep { color:var(--muted); opacity:.5; }
    .forecast-scope .day-model-chg { font-size:.68rem; font-weight:700; text-align:right; min-width:3rem; }
    .forecast-scope .day-model-chg.up { color:var(--green); }
    .forecast-scope .day-model-chg.down { color:var(--red); }
    .forecast-scope .day-model-chg.flat { color:var(--muted); }
    .forecast-scope .day-consensus-mid { flex:1; display:flex; align-items:center; padding:0 .7rem; min-width:0; }
    .forecast-scope .day-consensus-mid .day-consensus-prob { flex:1; margin:0; }
    .forecast-scope .day-consensus-prob {
      display:flex; height:15px; border-radius:3px; overflow:hidden;
      background:rgba(148,163,184,.12);
    }
    .forecast-scope .day-consensus-prob span {
      height:100%; display:flex; align-items:center; justify-content:center;
      font-size:.55rem; font-weight:700; color:#fff; line-height:1;
      overflow:hidden; white-space:nowrap; text-shadow:0 0 2px rgba(0,0,0,.4);
    }
    .forecast-scope .day-consensus-row {
      display:flex; align-items:center; justify-content:space-between;
      padding:.5rem 1rem;
      background:rgba(30,64,175,0.06);
      border-top:1px solid var(--border);
      margin-top:auto;
    }.forecast-scope .day-consensus-label { font-size:.6rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gold); }.forecast-scope .day-consensus-price { font-size:.9rem; font-weight:700; color:var(--gold); }.forecast-scope .day-consensus-chg { font-size:.65rem; font-weight:600; margin-left:.25rem; }.forecast-scope .day-consensus-chg.up { color:var(--green); }.forecast-scope .day-consensus-chg.down { color:var(--red); }.forecast-scope .day-consensus-chg.flat { color:var(--muted); }

    @media(max-width:640px) {.forecast-scope /* Mobile: 1 day card + peek */
      .by-day-grid > .day-col { flex:0 0 100%; }
    }.forecast-scope .ov-label {
      font-size:.58rem; font-weight:700; letter-spacing:.14em;
      text-transform:uppercase; color:var(--muted);
      margin-bottom:.5rem; padding-bottom:.3rem;
      border-bottom:1px solid var(--border);
    }.forecast-scope .ov-list { display:flex; flex-direction:column; gap:.28rem; }.forecast-scope .ov-item {
      display:flex; align-items:flex-start; gap:.4rem;
      font-size:.68rem; color:var(--text); line-height:1.4;
    }.forecast-scope .ov-item > strong { flex-shrink:0; }.forecast-scope .ov-text {
      flex:1; min-width:0;
      overflow-wrap:break-word; word-break:break-word;
    }.forecast-scope .ov-text strong { font-weight:700; }.forecast-scope .ov-day {
      font-size:.58rem; font-weight:700; color:var(--gold);
      min-width:5.2rem; flex-shrink:0; white-space:nowrap;
      padding-top:.08rem;  /* nudge so cap-height aligns with text x-height */
    }.forecast-scope .ov-name { font-size:.65rem; color:var(--muted); flex:1; }.forecast-scope .ov-tf {
      display:inline-block; font-size:.5rem; font-weight:700;
      padding:.05rem .28rem; border-radius:2px; margin-left:.2rem;
      background:rgba(30,64,175,.1); color:var(--gold);
      letter-spacing:.04em; vertical-align:middle;
    }.forecast-scope .ov-sig {
      font-size:.55rem; font-weight:700; padding:.1rem .35rem;
      border-radius:2px; white-space:nowrap; flex-shrink:0;
    }.forecast-scope .sig-sbuy { background:rgba(22,163,74,.18); color:#15803d; border:1px solid rgba(22,163,74,.3); }.forecast-scope .sig-buy { background:rgba(22,163,74,.10); color:var(--green); border:1px solid rgba(22,163,74,.2); }.forecast-scope .sig-sell { background:rgba(220,38,38,.10); color:var(--red);   border:1px solid rgba(220,38,38,.2); }.forecast-scope .sig-neut { background:rgba(107,114,128,.1); color:var(--muted); border:1px solid var(--border); }.forecast-scope .ov-sup, .forecast-scope .ov-res, .forecast-scope .ov-piv, .forecast-scope .ov-neut {
      display:inline-flex; align-items:center; justify-content:center;
      width:15px; height:15px; border-radius:2px;
      font-size:.52rem; font-weight:800; flex-shrink:0;
    }.forecast-scope .ov-sup { background:rgba(22,163,74,.15);   color:var(--green); }.forecast-scope .ov-res { background:rgba(220,38,38,.15);   color:var(--red); }.forecast-scope .ov-piv { background:rgba(212,148,10,.15);  color:var(--gold); }.forecast-scope .ov-neut { background:rgba(107,114,128,.12); color:var(--muted); }.forecast-scope .prob-table-card {
      background: var(--surface);
      border: 1px solid var(--border);
      border-radius:var(--radius);
      overflow: hidden;
      margin-bottom: 2rem;
    }.forecast-scope .prob-table-wrap { overflow-x: auto; }.forecast-scope .prob-table {
      width: 100%; border-collapse: collapse;
      font-size: .72rem;
    }.forecast-scope .prob-table thead tr {
      background: var(--surface2);
      border-bottom: 2px solid var(--border);
    }.forecast-scope .prob-table th {
      padding: .65rem .9rem; text-align: center;
      font-size: .6rem; font-weight: 700; letter-spacing: .1em;
      text-transform: uppercase; color: var(--muted);
      white-space: nowrap;
    }.forecast-scope .prob-table th:first-child { text-align: left; }.forecast-scope .pt-dot {
      display: inline-block; width: 7px; height: 7px;
      border-radius: 50%; margin-right: .3rem; vertical-align: middle;
    }.forecast-scope .pt-avg-head { color: var(--gold) !important; }.forecast-scope .prob-table td {
      padding: .6rem .9rem; text-align: center;
      border-bottom: 1px solid var(--border);
      font-weight: 600; font-size: .72rem; color: var(--text);
    }.forecast-scope .prob-table td:first-child { text-align: left; }.forecast-scope .prob-table tbody tr:last-child td { border-bottom: none; }.forecast-scope .prob-table tbody tr:hover { background: var(--surface2); }.forecast-scope .pt-scenario { white-space:nowrap; display:flex; align-items:center; gap:.4rem; }.forecast-scope .pt-badge {
      display:inline-block; font-size:.58rem; font-weight:700;
      color:#fff; padding:.15rem .5rem; border-radius:2px;
      letter-spacing:.04em; white-space:nowrap;
    }.forecast-scope .pt-avg {
      font-weight:800 !important; color:var(--gold) !important;
      background:rgba(212,148,10,.06);
      border-left:2px solid rgba(212,148,10,.2) !important;
    }.forecast-scope .pt-row-sbull { background:rgba(21,128,61,.08);  color:#15803d; font-weight:600; }.forecast-scope .pt-row-bull { background:rgba(34,197,94,.06);  color:#16a34a; font-weight:600; }.forecast-scope .pt-row-neut { background:rgba(148,163,184,.06); color:var(--muted); font-weight:600; }.forecast-scope .pt-row-bear { background:rgba(249,115,22,.06);  color:#ea580c; font-weight:600; }.forecast-scope .pt-row-sbear { background:rgba(220,38,38,.08);   color:var(--red); font-weight:600; }.forecast-scope .pt-avg-row { border-top:2px solid var(--border); background:rgba(30,64,175,0.07); }.forecast-scope .pt-avg-row td { font-weight:800; font-size:.78rem; }.forecast-scope .pt-avg-row td.pt-scenario { color:var(--gold); font-size:.72rem; }.forecast-scope .w2-context-grid {
      display:grid;
      grid-template-columns:repeat(2,1fr);
      gap:1.25rem;
      padding:1rem 1.5rem;
      width:100%;
      box-sizing:border-box;
    }
    @media(max-width:900px) {.forecast-scope .w2-context-grid { grid-template-columns:repeat(2,1fr); }}
    @media(max-width:480px) {.forecast-scope .w2-context-grid { grid-template-columns:1fr; }}.forecast-scope /* Ensure all grids stay within page width */
    .ai-grid, .forecast-scope .by-day-grid, .forecast-scope .consensus-card, .forecast-scope .chart-section, .forecast-scope .session-card, .forecast-scope .consensus-section, .forecast-scope .view-toggle-bar { max-width:100%; box-sizing:border-box; }.forecast-scope .signal-tabs {
      display:flex; gap:.3rem; margin-bottom:1.25rem;
      border-bottom:1px solid var(--border);
      overflow-x:auto; -webkit-overflow-scrolling:touch;
    }.forecast-scope .signal-tabs::-webkit-scrollbar { display:none; }.forecast-scope .signal-tab-btn {
      background:transparent; border:none; cursor:pointer;
      padding:.7rem 1.25rem; font-family:inherit;
      font-size:.78rem; font-weight:700; letter-spacing:.04em;
      color:var(--muted); white-space:nowrap;
      border-bottom:2px solid transparent;
      margin-bottom:-1px;
      display:flex; align-items:center; gap:.5rem;
      transition:color .15s, border-color .15s;
    }.forecast-scope .signal-tab-btn:hover { color:var(--text); }.forecast-scope .signal-tab-btn.active { color:var(--ai-color); border-bottom-color:var(--ai-color); }.forecast-scope .signal-tab-dot { width:8px; height:8px; border-radius:50%; background:var(--ai-color); }.forecast-scope .ai-signal-header {
      display:flex; align-items:center; gap:.75rem; padding:.85rem 1.1rem;
      background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
      margin-bottom:1rem;
    }.forecast-scope .ai-signal-logo {
      width:36px; height:36px; border-radius:2px; flex-shrink:0;
      display:flex; align-items:center; justify-content:center;
    }.forecast-scope .ai-signal-info { flex:1; min-width:0; }.forecast-scope .ai-signal-name { font-weight:800; font-size:.92rem; line-height:1.2; }.forecast-scope .ai-signal-meta { font-size:.7rem; color:var(--muted); margin-top:.1rem; }.forecast-scope .ai-signal-bias {
      padding:.35rem .8rem; border-radius:999px;
      font-size:.68rem; font-weight:700; letter-spacing:.03em;
      white-space:nowrap;
    }.forecast-scope .ai-signal-bias.bull { background:rgba(22,163,74,.12);  color:var(--green); }.forecast-scope .ai-signal-bias.bear { background:rgba(220,38,38,.12);  color:var(--red); }.forecast-scope .ai-signal-bias.neut { background:rgba(107,114,128,.12); color:var(--muted); }.forecast-scope .ai-signal-bias.vbull { background:rgba(22,163,74,.2);   color:var(--green); }.forecast-scope .signal-block { margin-bottom:1rem; }.forecast-scope .signals-grid {
      display:grid; grid-template-columns:repeat(3,1fr); gap:1rem;
      margin-bottom:1rem;
    }
    @media(max-width:900px) {.forecast-scope .signals-grid { grid-template-columns:1fr; }}.forecast-scope .signal-card {
      background:var(--surface); border:1px solid var(--border);
      border-radius:var(--radius); padding:1.25rem 1.35rem;
      display:flex; flex-direction:column; gap:.6rem;
      position:relative; overflow:hidden;
    }.forecast-scope .signal-card::before {
      content:''; position:absolute; left:0; right:0; top:0;
      height:4px; background:var(--sig-color);
    }.forecast-scope .signal-card.long { --sig-color:var(--green); }.forecast-scope .signal-card.short { --sig-color:var(--red); }.forecast-scope .signal-card.scalp { --sig-color:var(--blue, #1e40af); }.forecast-scope .signal-head { display:flex; align-items:center; gap:.5rem; margin-bottom:.3rem; }.forecast-scope .signal-icon { font-size:1.1rem; }.forecast-scope .signal-title {
      font-family:'Inter',sans-serif; font-weight:800;
      font-size:.95rem; letter-spacing:.01em; color:var(--text);
    }.forecast-scope .signal-subtitle {
      font-size:.68rem; color:var(--muted); margin-bottom:.2rem;
      letter-spacing:.04em;
    }.forecast-scope .signal-row {
      display:flex; justify-content:space-between; align-items:baseline;
      padding:.35rem 0;
      border-bottom:1px dashed var(--border);
      font-size:.78rem;
    }.forecast-scope .signal-row:last-of-type { border-bottom:none; }.forecast-scope .signal-row-label { color:var(--muted); font-weight:500; }.forecast-scope .signal-row-value { color:var(--text); font-weight:700; font-family:'Inter',sans-serif; }.forecast-scope .signal-row-value.pos { color:var(--green); }.forecast-scope .signal-row-value.neg { color:var(--red); }.forecast-scope .tactical-card {
      background:var(--surface); border:1px solid var(--border);
      border-radius:var(--radius); overflow:hidden;
    }.forecast-scope .tactical-table {
      width:100%; border-collapse:collapse; font-size:.78rem;
      font-family:'Inter',sans-serif;
    }.forecast-scope .tactical-table thead {
      background:var(--surface2);
    }.forecast-scope .tactical-table th {
      text-align:left; padding:.7rem 1rem;
      font-size:.68rem; letter-spacing:.08em; text-transform:uppercase;
      color:var(--muted); font-weight:700;
      border-bottom:1px solid var(--border);
    }.forecast-scope .tactical-table td {
      padding:.85rem 1rem; vertical-align:top;
      border-bottom:1px solid var(--border);
    }.forecast-scope .tactical-main > td { border-bottom:none; }.forecast-scope .tactical-table tr.tactical-notes-row:last-child td { border-bottom:none; }.forecast-scope .tactical-day { font-weight:800; color:var(--text); white-space:nowrap; }.forecast-scope .tactical-mode {
      display:inline-block; padding:.2rem .55rem; border-radius:999px;
      font-size:.66rem; font-weight:700; letter-spacing:.04em;
      white-space:nowrap;
    }.forecast-scope .tactical-mode.long { background:rgba(22,163,74,.1);  color:var(--green); }.forecast-scope .tactical-mode.short { background:rgba(220,38,38,.1);  color:var(--red); }.forecast-scope .tactical-mode.scalp { background:rgba(30,64,175,.1);  color:var(--gold); }.forecast-scope .tactical-mode.wait { background:rgba(107,114,128,.12); color:var(--muted); }.forecast-scope .tactical-mode.follow { background:rgba(245,158,11,.12); color:var(--amber); }.forecast-scope .tactical-band { font-weight:700; white-space:nowrap; color:var(--text); }.forecast-scope .tactical-notes { color:var(--muted); font-size:.72rem; line-height:1.5; }.forecast-scope /* Desktop: inline notes shown, .forecast-scope stacked-notes row hidden */
    .tactical-notes-stacked, .forecast-scope .tactical-notes-row { display:none; }.forecast-scope .tactical-main > td.tactical-notes-inline { display:table-cell; }.forecast-scope .tactical-table th:nth-child(5) { display:table-cell; }

    @media(max-width:780px) {.forecast-scope /* Mobile: convert table rows into stacked card blocks for readability */
      .tactical-table { display:block; }
.forecast-scope .tactical-table thead { display:none; }
.forecast-scope .tactical-table tbody { display:block; }
.forecast-scope /* Each day = a card block. Main row + notes row grouped visually. */
      .tactical-main {
        display:flex; flex-wrap:wrap; align-items:center;
        column-gap:.55rem; row-gap:.35rem;
        padding:.85rem 1rem .5rem;
        border-top:1px solid var(--border);
      }
.forecast-scope .tactical-main > td { display:inline-block; padding:0; border:none; vertical-align:middle; }
.forecast-scope /* Hide inline notes cell on mobile — stacked row takes over */
      .tactical-main > td.tactical-notes-inline { display:none; }
.forecast-scope .tactical-day { font-size:.78rem; font-weight:800; color:var(--text); }
.forecast-scope .tactical-main > td:nth-child(3) { 
        font-size:.7rem; color:var(--muted); font-weight:500;
      }
.forecast-scope .tactical-main > td:nth-child(3)::before { content:'· '; color:var(--border); }
.forecast-scope .tactical-band {
        margin-left:auto; font-size:.72rem; font-weight:700;
        color:var(--text); padding-left:.5rem;
      }
.forecast-scope .tactical-mode { font-size:.62rem; padding:.15rem .45rem; }
.forecast-scope /* Notes row — sits below the main row, .forecast-scope same card block */
      .tactical-notes-row { display:block; border-top:none; }
.forecast-scope .tactical-notes-stacked {
        display:block !important;
        padding:0 1rem .85rem !important;
        border:none;
        font-size:.7rem;
        line-height:1.55;
        color:var(--muted);
        font-style:normal;
      }
.forecast-scope /* First day starts with no border-top to avoid double border against thead separator */
      .tactical-table tbody tr:first-child.tactical-main { border-top:none; }}.forecast-scope .rules-card {
      background:var(--surface); border:1px solid var(--border);
      border-radius:var(--radius); padding:1.25rem 1.75rem;
    }.forecast-scope .rules-list {
      margin:0; padding-left:1.2rem;
      font-size:.82rem; line-height:1.7; color:var(--text);
    }.forecast-scope .rules-list li { padding:.25rem 0; }.forecast-scope .rules-list strong { color:var(--gold); font-weight:700; }.forecast-scope /* Amber disclaimer box shared by signal blocks */
    .signal-disclaimer {
      margin-top:1rem; padding:.65rem .9rem;
      background:rgba(245,158,11,.08); border:1px solid rgba(245,158,11,.3);
      border-radius:2px; font-size:.72rem; color:var(--text);
    }
  /* ── proc-dock inherits signal-card styling ── */
  .proc-dock .tl-row.sig-scoring .tl-head::after { content: "\25D5\203F\25D5 Aloka scoring\2026"; margin-left: auto; font-size: .62rem; font-weight: 800; color: #a16207; background: #fef9c3; padding: .1rem .45rem; border-radius: 5px; animation: sigPulse 1s infinite; }
  .proc-dock .tl-row.sig-rejected-flow .tl-head::after { content: "\2715 Rejected"; margin-left: auto; font-size: .62rem; font-weight: 800; color: #b91c1c; background: #fee2e2; padding: .1rem .45rem; border-radius: 5px; }
  .proc-dock .flow-btn.approve { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; }
  .proc-dock .ap-time { font-size: .82rem; font-weight: 800; color: #16a34a; font-variant-numeric: tabular-nums; }
  .proc-dock .feed-card.sig-countdown { }
  .proc-dock .tl-row.sig-expired-flow .feed-card { opacity: .55; }
  .proc-dock .flow-actions { display: flex; gap: .5rem; margin-top: .6rem; padding-top: .1rem; align-items: stretch; }
  .proc-dock .flow-btn { font-family: inherit; font-size: .82rem; font-weight: 800; padding: .55rem; border-radius: 10px; border: none; cursor: pointer; }
  .proc-dock .flow-btn.approve { flex: 1; background: #fff; color: #16a34a; border: 1.5px solid #16a34a; }
  .proc-dock .flow-btn.approve:active { background: #f0fdf4; }
  .proc-dock .flow-btn.reject { flex: 0 0 auto; background: transparent; color: #dc2626; border: 1.5px solid #dc2626; padding: .55rem .9rem; }
  .proc-dock .flow-btn.reject:active { background: #fef2f2; }
  .proc-dock .tl-head { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap;
    padding-top: .5rem; padding-left: .15rem; margin-bottom: .7rem; }
  .proc-dock .tl-head.expired { margin-bottom: .4rem; opacity: .7; }
  .proc-dock .tl-head.expired .tl-clock, .proc-dock .tl-head.expired .tl-tf { color: var(--muted); }
  .proc-dock .tl-head.expired .tl-strat { color: var(--muted); background: var(--surface2); }
  .proc-dock .tl-dot { display: inline-block; flex-shrink: 0; width: 9px; height: 9px; border-radius: 50%;
    background: #111827; box-shadow: 0 0 0 1px #111827; }
  .proc-dock .tl-dot.dim { background: #cbd5e1; box-shadow: 0 0 0 1px #cbd5e1; opacity: 1; }
  .proc-dock .feed-main { display: flex; align-items: stretch; gap: .7rem; }
  .proc-dock .feed-scorebox { flex-shrink: 0; width: 48px; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 10px; padding: .4rem 0; }
  .proc-dock .feed-scorebox b { font-size: .95rem; font-weight: 800; line-height: 1; }
  .proc-dock .feed-scorebox i { font-size: .5rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; font-style: normal; margin-top: .15rem; opacity: .8; }
  .proc-dock .feed-scorebox.auto { background: #dcfce7; color: #15803d; }
  .proc-dock .feed-scorebox.mid { background: #fef3c7; color: #92400e; }
  .proc-dock .feed-scorebox.low { background: #fee2e2; color: #b91c1c; }
  .proc-dock .feed-scorebox.loading { background: #f1f5f9; color: #94a3b8; }
  .proc-dock .feed-scorebox.off { background: #f1f5f9; color: #94a3b8; }
  .proc-dock .feed-scorebox.off b { font-size: .95rem; }
  .proc-dock .feed-scorebox.off i { font-size: .42rem; }
  .proc-dock .feed-scorebox.score-pop { animation: scorePop .35s ease; }
  .proc-dock .feed-scorebox .sb-bars { display: flex; align-items: center; justify-content: center; gap: 2px; height: 20px; }
  .proc-dock .feed-scorebox .sb-bars i { width: 3px; height: 100%; border-radius: 2px; background: #818cf8; transform-origin: center; animation: sbBars .9s ease-in-out infinite; }
  .proc-dock .feed-scorebox .sb-bars i:nth-child(1) { animation-delay: 0s; }
  .proc-dock .feed-scorebox .sb-bars i:nth-child(2) { animation-delay: .18s; }
  .proc-dock .feed-scorebox .sb-bars i:nth-child(3) { animation-delay: .36s; }
  .proc-dock .feed-scorebox .sb-bars i:nth-child(4) { animation-delay: .54s; }
  .proc-dock .feed-detail { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .4rem; }
  .proc-dock .feed-card { border: 1px solid var(--border); border-radius: 11px; background: #fff;
    padding: .8rem .9rem; margin-bottom: .45rem; }
  .proc-dock .feed-card[style*="cursor:pointer"] { transition: border-color .15s, box-shadow .15s; }
  .proc-dock .feed-card[style*="cursor:pointer"]:hover { border-color: #cbd5e1; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
  .proc-dock .feed-card.open { border-color: #94a3b8; }
  .proc-dock .feed-head-right { margin-left: auto; display: flex; align-items: center; gap: .35rem; flex-shrink: 0; }
  .proc-dock .sig-scoring-msg { display: flex; align-items: center; gap: .45rem; margin-top: .6rem; padding: .5rem .7rem; background: #fef9c3; border-radius: 10px; font-size: .74rem; font-weight: 800; color: #a16207; }
  .proc-dock .sig-result { display: flex; align-items: flex-start; gap: .5rem; margin-top: .6rem; padding: .55rem .7rem; border-radius: 10px; font-size: .76rem; font-weight: 400; animation: sigEnter .4s ease both; }
  .proc-dock .sig-result .sr-ico { font-size: .95rem; flex-shrink: 0; line-height: 1.3; }
  .proc-dock .sig-result .sr-svg { width: 16px; height: 16px; flex-shrink: 0; stroke: currentColor; }
  .proc-dock .sig-result.hold { align-items: center; }
  .proc-dock .sig-result .sr-lines { display: flex; flex-direction: column; gap: .1rem; line-height: 1.35; }
  .proc-dock .sig-result .sr-one { line-height: 1.35; }
  .proc-dock .sig-result.pass { align-items: center; }
  .proc-dock .sig-result.pass { background: #dcfce7; color: #15803d; }
  .proc-dock .sig-result.hold { background: #f1f5f9; color: #475569; }
  .proc-dock .sig-scoring-msg .ssm-dot { width: 12px; height: 12px; border: 2px solid #fde68a; border-top-color: #a16207; border-radius: 50%; animation: scoreSpin .6s linear infinite; flex-shrink: 0; margin-left: auto; }
  .proc-dock .feed-card .sig-actions { border-bottom: none; padding: .6rem 0 .1rem; margin: .6rem 0 0; border-top: 1px dashed var(--border); }
