/*!
 * SML Ticker Terminal — REVERTED to the original terminal look (user decision).
 * The only remaining change: the Heat Map is removed from the terminal.
 * It lives as a carousel slide inside Market Position (#sml-mp-b) with a toggle
 * from sml-tiles-js; hide the slide, pin the carousel to the Position view,
 * hide the toggle. Everything else renders exactly as the original terminal.
 * All prior V2 layout/skin work is preserved in git history for restoration.
 */
body.tv2-heatmap-off #sml-mp-b,
body.tv2-heatmap-off #sml-hm,
body.tv2-heatmap-off #sml-terminal-heatmap,
body.tv2-preview-on #sml-mp-b,
body.tv2-preview-on #sml-hm,
body.tv2-preview-on #sml-terminal-heatmap{display:none!important}
body.tv2-heatmap-off #sml-mp .mptrack,
body.tv2-preview-on #sml-mp .mptrack{transform:none!important}
/* artifact preview mode: the design shell replaces the legacy terminal visually;
   the legacy stays booted (hidden) so its modules/data mount in later phases */
body.tv2-artifact-on .sml-terminal{display:none!important}
#sml-tv2-root{max-width:100%;overflow-x:auto}
/* FIX 2026-08-19 "dimensions are stretched": the theme caps the content column
   (~1281px at a 1440 window) while the design keeps a fixed 396px rail, so the
   chart column collapsed to ~700px against the chart engine's fixed 590px height
   — a tall, narrow chart. Break the root out of the theme column (24px gutters,
   capped 1680) and drop the captured design's 56px frame gutters below 1700px,
   which returns the chart column to the design's own proportions (~950 @1440). */
body.tv2-artifact-on #sml-tv2-root{width:min(1680px,calc(100vw - 48px))!important;max-width:none!important;margin-left:calc((100% - min(1680px,calc(100vw - 48px))) / 2)!important;margin-right:0!important}
@media (max-width:1699px){
  body.tv2-artifact-on #sml-tv2-root [data-tv2-frame]{padding-left:0!important;padding-right:0!important}
  body.tv2-artifact-on #sml-tv2-root [data-tv2-zone="zbody"]{padding-left:16px!important;padding-right:16px!important}
}
/* the legacy summary/news block below the terminal carries a theme full-bleed
   negative right margin — clamp at every width (was only <1200) or the page
   scrolls sideways at 1440 */
body.tv2-artifact-on .sml-ticker-summary,body.tv2-heatmap-off .sml-ticker-summary{margin-right:0!important;margin-left:0!important;max-width:100%!important;width:100%!important;box-sizing:border-box!important}

body.tv2-heatmap-off #sml-mp [title="Heat Map"],
body.tv2-heatmap-off #sml-mp [title*="Heat"],
body.tv2-heatmap-off #sml-mp [title*="Position Overview"],
body.tv2-preview-on #sml-mp [title="Heat Map"],
body.tv2-preview-on #sml-mp [title*="Heat"],
body.tv2-preview-on #sml-mp [title*="Position Overview"]{display:none!important}

/* ---------- RESPONSIVE: the captured design is a fixed 1440px frame ----------
   terminal-shell.js tags the anonymous wrapper chain [data-tv2-frame] and the
   zones [data-tv2-zone]. Flatten the fixed widths to fluid, then stack below
   1200px. The chart/MP engines re-measure on window.resize (proven live). */
body.tv2-artifact-on #sml-tv2-root [data-tv2-frame],
body.tv2-artifact-on #sml-tv2-root [data-tv2-zone]{
  width:auto!important;max-width:100%!important;min-width:0!important;
}
/* one captured wrapper is a flex row — its child shrink-fits; block the chain */
body.tv2-artifact-on #sml-tv2-root [data-tv2-frame]{display:block!important}
body.tv2-artifact-on [data-tv2-zone="strip"]{flex-wrap:wrap!important;height:auto!important}
body.tv2-artifact-on [data-tv2-zone] > *{min-width:0}

@media (max-width:1199px){
  body.tv2-artifact-on [data-tv2-zone="zbody"]{display:flex!important;flex-direction:column!important}
  body.tv2-artifact-on [data-tv2-zone="main"],
  body.tv2-artifact-on [data-tv2-zone="rail"]{width:100%!important;flex:0 0 auto!important}
}
@media (max-width:899px){
  body.tv2-artifact-on [data-tv2-zone="header"]{flex-wrap:wrap!important;height:auto!important;row-gap:8px}
  body.tv2-artifact-on [data-tv2-zone="tabs"]{overflow-x:auto}
}
@media (max-width:767px){
  body.tv2-artifact-on [data-tv2-view]{padding:12px!important}
  body.tv2-artifact-on [data-tv2-zone="main"],
  body.tv2-artifact-on [data-tv2-zone="rail"]{padding-left:0!important;padding-right:0!important}
}

/* the captured shell centers its zones — stretch them to full width */
body.tv2-artifact-on [data-tv2-zone]{align-self:stretch!important}
/* legacy market-summary section (outside the terminal): the theme's negative
   right margin (full-bleed trick) overflows narrow viewports — clamp it there */
@media (max-width:1199px){
  body.tv2-heatmap-off .sml-ticker-summary{margin-left:0!important;margin-right:0!important;max-width:100%!important;box-sizing:border-box!important}
}

/* mobile: drop the design's 56px page gutters; zones keep their own padding */
@media (max-width:899px){
  body.tv2-artifact-on #sml-tv2-root [data-tv2-frame]{padding-left:0!important;padding-right:0!important}
}

/* wide screens: the design's row returns, but the fixed widths we flattened
   were what sized it — recreate the proportions with flex (main grows, rail 396) */
@media (min-width:1200px){
  body.tv2-artifact-on #sml-tv2-root [data-tv2-zone="zbody"]{display:flex!important;flex-direction:row!important}
  body.tv2-artifact-on #sml-tv2-root [data-tv2-zone="main"]{flex:1 1 0%!important}
  body.tv2-artifact-on #sml-tv2-root [data-tv2-zone="rail"]{flex:0 0 396px!important;width:396px!important;max-width:396px!important}
}

/* the two zbody display:flex!important rules above (one per breakpoint) started
   beating terminal-options.js's inline display:none when switching to Options/
   Research/News — the view rendered on top of a still-visible Overview body
   instead of replacing it. This rule outranks both regardless of viewport
   (extra .tv2-hidden class = higher specificity than either). */
body.tv2-artifact-on #sml-tv2-root [data-tv2-zone="zbody"].tv2-hidden{display:none!important}

/* Market Position: the legacy module's own layout couldn't be made to fit
   well (930px two-column canvas, no real fix short of hiding half of it) —
   replaced outright with a new card (terminal-mp2.js) built from the real
   sml/v1/market-position API and inserted directly under the chart. Legacy
   module no longer gets adopted anywhere; keep it fully out of the page
   wherever it naturally renders. */
body.tv2-artifact-on #sml-mp{display:none!important}

/* Market Position v2 — new card, styled straight from the design handoff
   (Ticker Terminal Export.html, "Market position" card) */
.tv2-mp2{border:1px solid #16202b;border-radius:10px;background:#080c12;overflow:hidden}
.tv2-mp2-h{display:flex;align-items:center;justify-content:space-between;padding:10px 13px;border-bottom:1px solid #131c26}
.tv2-mp2-h .t{font:700 12px/1 Archivo,sans-serif;color:#e6edf3}
.tv2-mp2-h .d{font:500 10px/1 'IBM Plex Mono',monospace;color:#5d7085}
.tv2-mp2-body{padding:11px 13px;display:flex;flex-direction:column;gap:9px}
.tv2-mp2-chart{position:relative;height:150px}
.tv2-mp2-bar{position:absolute;left:0;border-radius:0 2px 2px 0;opacity:.92}
.tv2-mp2-line{position:absolute;left:0;right:0;border-top:1px dashed}
.tv2-mp2-line span{position:absolute;right:0;font:500 9px/1 'IBM Plex Mono',monospace;white-space:nowrap}
.tv2-mp2-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.tv2-mp2-stat{border:1px solid;border-radius:8px;background:#0b1119;padding:8px 9px;display:flex;flex-direction:column;gap:5px;min-width:0}
.tv2-mp2-stat .v{font:700 14px/1 'IBM Plex Mono',monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv2-mp2-stat .k{font:500 9px/1 Archivo,sans-serif;color:#8fa3b5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv2-mp2-lean{margin:0;font:400 10.5px/1.5 Archivo,sans-serif;color:#a9bccd;text-wrap:pretty}
.tv2-mp2-lean b{font-weight:700}
.tv2-mp2-ov{display:flex;flex-direction:column;gap:6px;border-top:1px solid #131c26;padding-top:9px}
.tv2-mp2-ov-h{display:flex;align-items:center;justify-content:space-between}
.tv2-mp2-ov-h .k{font:500 11px/1 Archivo,sans-serif;color:#8fa3b5}
.tv2-mp2-ov-h .v{font:700 15px/1 'IBM Plex Mono',monospace;color:#00ccff}
.tv2-mp2-ov-bar{height:6px;border-radius:3px;background:#131c26;overflow:hidden}
.tv2-mp2-ov-bar i{display:block;height:100%;background:linear-gradient(90deg,#0a5c86,#00ccff)}
.tv2-mp2-ov-note{font:400 10px/1.5 Archivo,sans-serif;color:#4c5d6d}
.tv2-mp2-empty{padding:24px 16px;font:400 11px/1.6 'IBM Plex Mono',monospace;color:#5d7085;text-align:center}

/* ---- terminal page: nothing between the sitewide header and the terminal ----
   (body.tv2-live is set server-side by the go-live snippet) */
body.tv2-live .wordads-ad-wrapper--top,
body.tv2-live .sml-uads-slot.sml-uads-header,
body.tv2-live main .wp-block-separator,
body.tv2-live main .wp-block-spacer,
body.tv2-live main > .wp-block-group:not(.entry-content):not(:has(#sml-tv2-root)):not(:has(.sml-ticker-summary)){display:none!important}
body.tv2-live main.wp-block-group{padding-top:0!important;margin-top:0!important}
body.tv2-live .entry-content{margin-top:0!important;padding-top:0!important}
body.tv2-live #sml-tv2-root{margin-top:0!important}
body.tv2-live #sml-tv2-root [data-tv2-frame]{padding-top:0!important}
body.tv2-live .tv2-summary-below{margin-top:16px}

/* the terminal's own top bar (second logo / TERMINAL label / second search box / sample
   quick-symbols / sample "+ Add" button) is gone: the sitewide header already carries the
   logo, search and tape, and the terminal now sits flush under it */
body.tv2-live #sml-tv2-root [data-dc-tpl="10"]{display:none!important}

/* ---- LoopCharts engine styles (vendored copy of the plugin's inline style block,
   sml-loopcharts-inline-inline-css v1.0.4 — kept so the V2 chart is self-contained) ---- */
.sml-lc-stage[hidden],
#sml-tv-chart[hidden] {
  display: none !important;
}

.sml-lc-stage {
  width: 100%;
  min-width: 0;
  margin: 0;
  color: #dce6f2;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.sml-lc-shell {
  overflow: hidden;
  width: 100%;
  border: 1px solid #253044;
  border-radius: 10px;
  background: #0b1018;
  box-shadow: 0 18px 44px rgba(0, 0, 0, .28);
}

.sml-lc-toolbar {
  display: flex;
  min-height: 46px;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  border-bottom: 1px solid #202a3b;
  background: #0e1520;
  overflow-x: auto;
  scrollbar-width: thin;
}

.sml-lc-symbol {
  flex: 0 0 auto;
  margin-right: 4px;
  color: #f6f8fb;
  font: 750 14px/1 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .03em;
}

.sml-lc-timeframes,
.sml-lc-indicators {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 3px;
}

.sml-lc-indicators {
  padding-left: 7px;
  border-left: 1px solid #2a3548;
}

.sml-lc-toolbar button {
  min-width: 0;
  height: 30px;
  border: 1px solid transparent;
  border-radius: 5px;
  background: transparent;
  color: #9aa7b7;
  padding: 0 8px;
  font: 650 11px/28px ui-sans-serif, system-ui, sans-serif;
  white-space: nowrap;
  cursor: pointer;
}

.sml-lc-toolbar button:hover,
.sml-lc-toolbar button:focus-visible {
  border-color: #40506a;
  color: #f1f5fa;
  outline: none;
}

.sml-lc-toolbar button[aria-pressed="true"] {
  border-color: #ec7f23;
  background: rgba(236, 127, 35, .14);
  color: #ffb468;
}

.sml-lc-reset {
  flex: 0 0 auto;
}

.sml-lc-source {
  flex: 0 0 auto;
  margin-left: auto;
  border: 1px solid #33425a;
  border-radius: 999px;
  color: #91a0b4;
  padding: 4px 8px;
  font: 700 9px/1 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: .07em;
}

.sml-lc-source[data-source="massive-rest"],
.sml-lc-source[data-source="massive"] {
  border-color: rgba(36, 200, 117, .45);
  color: #51dc96;
}

.sml-lc-source[data-source="replay"] {
  border-color: rgba(243, 165, 58, .55);
  color: #f3a53a;
}

.sml-lc-legend {
  min-height: 30px;
  overflow: hidden;
  border-bottom: 1px solid #1b2535;
  background: #0b1018;
  color: #c8d2de;
  padding: 7px 12px 6px;
  font: 11px/16px ui-monospace, SFMono-Regular, Consolas, monospace;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sml-lc-legend[data-direction="up"] {
  box-shadow: inset 3px 0 #24c875;
}

.sml-lc-legend[data-direction="down"] {
  box-shadow: inset 3px 0 #ff4d61;
}

.sml-lc-canvas-host {
  position: relative;
  width: 100%;
  height: clamp(420px, 53vw, 590px);
  min-height: 420px;
  background: #0b1018;
  touch-action: pan-y;
  cursor: crosshair;
  outline: none;
}

.sml-lc-canvas-host:focus-visible {
  box-shadow: inset 0 0 0 2px #f3a53a;
}

.sml-lc-canvas {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
}

.sml-lc-interaction {
  z-index: 2;
}

.sml-lc-footer {
  display: flex;
  min-height: 34px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border-top: 1px solid #202a3b;
  background: #0e1520;
  color: #8f9baa;
  padding: 7px 11px;
  font-size: 10px;
  line-height: 1.35;
}

.sml-lc-stage[data-status="ready"] .sml-lc-status {
  color: #51dc96;
}

.sml-lc-stage[data-status="warning"] .sml-lc-status {
  color: #ffbf66;
}

.sml-lc-stage[data-status="demo"] .sml-lc-status {
  color: #f3a53a;
}

.sml-lc-quality {
  text-align: right;
}

.sml-lc-waiting .sml-lc-shell {
  border-color: rgba(243, 165, 58, .45);
  box-shadow: none;
}

.sml-lc-waiting .sml-lc-canvas-host,
.sml-lc-waiting .sml-lc-legend,
.sml-lc-waiting .sml-lc-timeframes,
.sml-lc-waiting .sml-lc-indicators,
.sml-lc-waiting .sml-lc-reset {
  display: none;
}

.sml-lc-waiting .sml-lc-toolbar {
  min-height: 40px;
  border-bottom: 0;
}

.sml-lc-waiting .sml-lc-footer {
  min-height: 42px;
  border-top: 1px solid rgba(243, 165, 58, .18);
}

.sml-lc-sr-table {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(1px, 1px, 1px, 1px) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}

@media (max-width: 720px) {
  .sml-lc-toolbar {
    gap: 5px;
    padding-inline: 7px;
  }

  .sml-lc-indicators {
    order: 3;
  }

  .sml-lc-source {
    margin-left: 2px;
  }

  .sml-lc-canvas-host {
    height: 440px;
  }

  .sml-lc-footer {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }

  .sml-lc-quality {
    text-align: left;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sml-lc-stage *,
  .sml-lc-stage *::before,
  .sml-lc-stage *::after {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/*# sourceURL=sml-loopcharts-inline-inline-css */

/* ---- compact LoopCharts toolbar inside the V2 chart card: everything fits on one
   (wrapping) row — no horizontal scrollbar. Scoped .tv2-ch so it wins over the
   plugin's inline copy of the engine styles. ---- */
.tv2-ch .sml-lc-toolbar{overflow:visible;flex-wrap:wrap;min-height:0;gap:4px;padding:6px 8px}
.tv2-ch .sml-lc-toolbar button{height:24px;padding:0 6px;font-size:10px;line-height:22px;border-radius:4px}
.tv2-ch .sml-lc-symbol{display:none}/* redundant — the card head + page header already show the symbol */
.tv2-ch .sml-lc-timeframes,.tv2-ch .sml-lc-indicators{gap:2px;flex-wrap:wrap}
.tv2-ch .sml-lc-indicators{padding-left:5px}
.tv2-ch .sml-lc-source{display:none}/* data-source badge removed per owner */
@media (max-width:700px){.tv2-ch .sml-lc-toolbar button{padding:0 5px}}

/* ---- LoopCharts drawing toolbar (left rail over the canvas) ---- */
.tv2-ch .sml-lc-drawbar{position:absolute;left:6px;top:6px;z-index:6;display:flex;flex-direction:column;gap:2px;background:rgba(11,16,24,.93);border:1px solid #253044;border-radius:8px;padding:4px;max-height:calc(100% - 12px);overflow:auto;scrollbar-width:none}
.tv2-ch .sml-lc-drawbar::-webkit-scrollbar{display:none}
.tv2-ch .sml-lc-drawbar button{width:24px;height:24px;border:1px solid transparent;border-radius:5px;background:transparent;color:#9aa7b7;font:600 12px/22px ui-sans-serif,system-ui,sans-serif;cursor:pointer;padding:0;flex:0 0 auto}
.tv2-ch .sml-lc-drawbar button:hover{border-color:#40506a;color:#f1f5fa}
.tv2-ch .sml-lc-drawbar button.on{border-color:#00ff88;color:#00ff88;background:rgba(0,255,136,.08)}
.tv2-ch .sml-lc-drawbar .sml-lc-drawcolor{width:14px;height:14px;border-radius:50%;margin:3px auto;border:2px solid transparent}
.tv2-ch .sml-lc-drawbar .sml-lc-drawcolor.on{border-color:#fff}
.tv2-ch .sml-lc-drawsep{display:block;height:1px;background:#253044;margin:3px 2px;flex:0 0 auto}
.tv2-ch .sml-lc-drawinput{position:absolute;z-index:7;background:#0e1520;border:1px solid #40506a;border-radius:6px;padding:4px 8px;font:600 12px Archivo,ui-sans-serif,sans-serif;color:#e6edf3;width:150px;outline:none}

/* ---- Market position | Signals side-by-side row (below the chart) ---- */
.tv2-mpsig{display:flex;gap:14px;align-items:stretch}
.tv2-mpsig>.tv2-mp2{flex:1 1 0;min-width:0;display:flex;flex-direction:column}
.tv2-mpsig .tv2-mp2-body,.tv2-mpsig .tv2-sig-body{flex:1}
@media (max-width:1000px){.tv2-mpsig{flex-direction:column}}
.tv2-sig-body{padding:10px 13px 12px;display:flex;flex-direction:column}
.tv2-sig-days{display:flex;gap:3px;padding:9px 13px 0;flex-wrap:wrap}
.tv2-sig-days button{font:600 10px/1 'IBM Plex Mono',monospace;color:#8fa3b5;background:#0d141c;border:1px solid #16202b;border-radius:14px;padding:6px 10px;cursor:pointer;transition:all .15s}
.tv2-sig-days button:hover{border-color:#40506a;color:#f1f5fa}
.tv2-sig-days button.on{color:#04060a;background:#00ff88;border-color:#00ff88;font-weight:700}
.sig-gauge{border:1px solid #16202b;border-radius:10px;background:linear-gradient(180deg,#0b1119,#080c12);padding:10px 12px;display:flex;flex-direction:column;gap:7px}
.sig-gauge-top{display:flex;justify-content:space-between;align-items:center}
.sig-gauge-top .k{font:600 10px/1 Archivo,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#8fa3b5}
.sig-gauge-top .v{font:700 16px/1 'IBM Plex Mono',monospace}
.sig-gauge-top .v.bull{color:#00e07a}.sig-gauge-top .v.bear{color:#ff4757}.sig-gauge-top .v.mid{color:#8fa3b5}
.sig-gauge-track{position:relative;height:8px;border-radius:4px;background:linear-gradient(90deg,#ff4757 0%,#3a2530 35%,#131c26 50%,#12352a 65%,#00e07a 100%)}
.sig-gauge-track i{position:absolute;top:-3px;width:4px;height:14px;border-radius:2px;background:#e6edf3;box-shadow:0 0 8px rgba(230,237,243,.66);transform:translateX(-50%);transition:left .35s}
.sig-gauge-lbl{display:flex;justify-content:space-between;font:500 8.5px/1 'IBM Plex Mono',monospace;color:#4c5d6d;letter-spacing:.06em;text-transform:uppercase}
.sig-sec{font:700 9px/1 Archivo,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#5d7085;margin:10px 0 6px}
.sig-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.sig-tile{position:relative;border:1px solid #16202b;border-left:2px solid #3a4a5c;border-radius:9px;background:linear-gradient(180deg,#0b1119,#090e15);padding:8px 10px;display:flex;flex-direction:column;gap:4px;min-width:0;transition:border-color .2s,transform .15s}
.sig-tile:hover{transform:translateY(-1px);border-color:#2a3a4a}
.sig-tile.bull{border-left-color:#00e07a}.sig-tile.bear{border-left-color:#ff4757}.sig-tile.warn{border-left-color:#ffb454}
.sig-tile .tt{display:flex;justify-content:space-between;gap:6px;align-items:center}
.sig-tile .n{font:600 10px/1.2 Archivo,sans-serif;color:#c9d6e2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sig-tile .dl{font-size:8px;flex:0 0 auto}.sig-tile .dl.up{color:#00e07a}.sig-tile .dl.dn{color:#ff4757}
.sig-tile .vv{font:500 9.5px/1.3 'IBM Plex Mono',monospace;color:#5d7085;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sig-tile .cc{font:700 10px/1.2 Archivo,sans-serif}
.sig-tile.bull .cc{color:#00e07a}.sig-tile.bear .cc{color:#ff4757}.sig-tile.warn .cc{color:#ffb454}.sig-tile.mid .cc{color:#8fa3b5}
.tv2-sig-note{margin-top:10px;padding-top:9px;border-top:1px solid #10161f;font:400 9.5px/1.5 Archivo,sans-serif;color:#4c5d6d}
/* the rail quote board's "Signals" tab was a non-functional design sample — the real
   Signals module now lives beside Market position, so the dead tab goes away and
   the remaining "Quotes" tab reads as the card title */
#sml-tv2-root [data-dc-tpl="328"]{display:none!important}

/* ---- Signals: 1-year backtest panel (click any indicator tile) ---- */
.sig-tile{cursor:pointer}
.sig-tile.sel{border-color:#00ff88;box-shadow:0 0 0 1px rgba(0,255,136,.25)}
.sig-bt{margin-top:7px;border:1px solid #1d2b39;border-radius:10px;background:linear-gradient(180deg,#0c1420,#080c12);padding:10px 12px;display:flex;flex-direction:column;gap:8px;animation:sigbt .18s ease}
@keyframes sigbt{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.sig-bt-h{display:flex;justify-content:space-between;align-items:center;font:700 11px/1 Archivo,sans-serif;color:#e6edf3}
.sig-bt-h .x{background:transparent;border:none;color:#5d7085;cursor:pointer;font-size:11px;padding:2px 4px}
.sig-bt-h .x:hover{color:#f1f5fa}
.sig-bt-s{font:400 10.5px/1.5 Archivo,sans-serif;color:#a9bccd}
.sig-bt-grid{display:grid;grid-template-columns:auto 1fr 1fr;gap:6px 14px;align-items:center}
.sig-bt-grid .big{grid-row:1/4;display:flex;flex-direction:column;gap:4px;padding-right:14px;border-right:1px solid #131c26}
.sig-bt-grid .big .pct{font:700 30px/1 'IBM Plex Mono',monospace}
.sig-bt-grid .big .pct.up{color:#00e07a}.sig-bt-grid .big .pct.dn{color:#ff4757}
.sig-bt-grid .big .k{font:500 9px/1.2 Archivo,sans-serif;color:#8fa3b5;text-transform:uppercase;letter-spacing:.06em}
.sig-bt-grid .st{display:flex;justify-content:space-between;gap:8px;font:400 10px/1.3 Archivo,sans-serif;color:#8fa3b5}
.sig-bt-grid .st b{font:600 10.5px/1.3 'IBM Plex Mono',monospace;color:#e6edf3}
.sig-bt-grid .st b.up{color:#00e07a}.sig-bt-grid .st b.dn{color:#ff4757}
.sig-bt-note{font:400 9px/1.5 Archivo,sans-serif;color:#4c5d6d;border-top:1px solid #10161f;padding-top:7px}
@media (max-width:560px){.sig-bt-grid{grid-template-columns:auto 1fr}.sig-bt-grid .big{grid-row:1/7}}

/* ---- StockMarketLoop brand look for the Signals card ---- */
.tv2-sig{position:relative}
.tv2-sig::before{content:'';position:absolute;inset:0 0 auto 0;height:2px;border-radius:10px 10px 0 0;background:linear-gradient(90deg,transparent,#00ff88 30%,#00ff88 70%,transparent);opacity:.65;pointer-events:none}
.tv2-sig .tv2-mp2-h .t{display:flex;align-items:center;gap:7px}
.tv2-sig .tv2-mp2-h .t::before{content:'';width:7px;height:7px;border-radius:50%;background:#00ff88;box-shadow:0 0 8px #00ff88}
.sig-sec{display:flex;align-items:center;gap:6px}
.sig-sec::before{content:'';width:10px;height:2px;background:#00ff88;border-radius:1px;box-shadow:0 0 6px rgba(0,255,136,.5)}
.sig-gauge{border-color:rgba(0,255,136,.14)}
.sig-gauge-track i{background:#00ff88;box-shadow:0 0 10px rgba(0,255,136,.8)}
.sig-tile:hover{border-color:rgba(0,255,136,.35)}
.sig-bt{border-color:rgba(0,255,136,.28);box-shadow:inset 0 0 24px rgba(0,255,136,.04)}
.sig-bt-h span::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:#00ff88;box-shadow:0 0 6px #00ff88;margin-right:7px;vertical-align:1px}

/* ---- Signals: dense layout — the card never runs taller than Market position.
   Single 3-across tile grid (category shown as a micro-tag inside each tile),
   slim gauge and day pills, and the backtest opens as an overlay INSIDE the
   card instead of stretching it. Body scrolls as a last resort. ---- */
.tv2-mpsig .tv2-sig{overflow:hidden}
.tv2-sig .tv2-sig-body{overflow-y:auto;min-height:0;scrollbar-width:thin;padding:8px 11px 10px}
.tv2-sig-days{padding:7px 11px 0}
.tv2-sig-days button{padding:4px 8px;font-size:9px;border-radius:11px}
.tv2-sig .sig-gauge{padding:7px 10px;gap:5px}
.tv2-sig .sig-gauge-top .v{font-size:13px}
.tv2-sig .sig-gauge-track{height:6px}
.tv2-sig .sig-gauge-track i{top:-2px;height:10px}
.tv2-sig .sig-gauge-lbl{font-size:7.5px}
.tv2-sig .sig-grid{grid-template-columns:repeat(3,1fr);gap:5px;margin-top:7px}
.tv2-sig .sig-tile{padding:6px 7px;gap:3px;border-radius:7px}
.tv2-sig .sig-tile .tt{gap:4px}
.tv2-sig .sig-tile .n{font-size:9px;flex:1 1 auto}
.tv2-sig .sig-tile .cc{font-size:8.5px;flex:0 0 auto}
.tv2-sig .sig-tile .vv{display:flex;justify-content:space-between;gap:5px;font-size:8.5px}
.tv2-sig .sig-tile .vv .val{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv2-sig .sig-tile .vv .sc{flex:0 0 auto;font:600 6.5px/1.4 Archivo,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#3d4d5e}
.tv2-sig .tv2-sig-note{margin-top:8px;padding-top:6px;font-size:8.5px;line-height:1.45}
/* backtest = overlay pinned to the bottom of the Signals card */
.tv2-sig .sig-bt{position:absolute;left:8px;right:8px;bottom:8px;z-index:5;margin:0;max-height:78%;overflow-y:auto;background:#0a121c;border-color:rgba(0,255,136,.4);box-shadow:0 -12px 34px rgba(0,0,0,.75),inset 0 0 24px rgba(0,255,136,.04)}
@media (max-width:640px){.tv2-sig .sig-grid{grid-template-columns:1fr 1fr}}

/* ---- drawing toolbar: close (X) / reopen (pencil) ---- */
.tv2-ch .sml-lc-drawbar[hidden]{display:none!important}
.tv2-ch .sml-lc-drawopen{position:absolute;left:6px;top:6px;z-index:6;width:28px;height:28px;border:1px solid #253044;border-radius:8px;background:rgba(11,16,24,.93);color:#9aa7b7;font:600 13px/26px ui-sans-serif,system-ui,sans-serif;cursor:pointer;padding:0}
.tv2-ch .sml-lc-drawopen:hover{border-color:rgba(0,255,136,.45);color:#00ff88}
.tv2-ch .sml-lc-drawopen[hidden]{display:none!important}

