/* Terminal UI — extracted from index.html */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg0:#080b0f;--bg1:#0c1018;--bg2:#111620;--bg3:#17202e;
  --line:#1a2535;--line2:#223040;--line3:#2d3f52;
  --t0:#dde3f0;--t1:#a3b0cc;--t2:#8c9ab8;--t3:var(--t1);
  --green:#00e676;--green2:#00b04a;--green3:#003818;
  --red:#ff3d57;--red2:#c0001e;--red3:#3d0009;
  --blue:#2196f3;--blue2:#1565c0;--blue3:#0a2a5e;
  --amber:#ffab00;--amber2:#e65100;--amber3:#3d1f00;
  --cyan:#00bcd4;--purple:#7c4dff;--teal:#00bfa5;
  --mono:'IBM Plex Mono',monospace;
}
html,body{height:100%;background:var(--bg0);color:var(--t0);font-family:var(--mono);font-size:12px;line-height:1.45;overflow:hidden}
body::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:9999;
  background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.04) 2px,rgba(0,0,0,.04) 4px)}
.app{display:grid;grid-template-rows:38px 1fr;height:100vh}

/* ── Global terminal-style scrollbars ─────────────────────────────────────── */
/* Firefox (applies to each scrollable element) */
*{
  scrollbar-width: thin;
  scrollbar-color: rgba(0,188,212,.55) rgba(17,22,32,.85);
}

/* Chromium / Edge / WebKit (applies to all scrollbars) */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{
  background: rgba(17,22,32,.75);
  border-left: 1px solid rgba(45,63,82,.55);
}
::-webkit-scrollbar-thumb{
  background: linear-gradient(180deg, rgba(0,188,212,.55), rgba(124,77,255,.45));
  border-radius: 10px;
  border: 2px solid rgba(17,22,32,.75);
  box-shadow: 0 0 10px rgba(0,188,212,.18);
}
::-webkit-scrollbar-thumb:hover{
  background: linear-gradient(180deg, rgba(0,230,118,.6), rgba(0,188,212,.55));
  box-shadow: 0 0 14px rgba(0,230,118,.18);
}
::-webkit-scrollbar-corner{background:rgba(17,22,32,.75)}
::-webkit-scrollbar-button{display:none;width:0;height:0}

/* Boot / auth loading screen (prevents terminal flash) */
body.booting .app{display:none}
#boot{
  position:fixed;inset:0;z-index:12000;
  display:none;align-items:center;justify-content:center;
  background:radial-gradient(ellipse 80% 60% at 50% 0%, rgba(0,229,255,.08), transparent 60%), #080b0f;
}
body.booting #boot{display:flex}
.boot-box{
  width:360px;
  border:1px solid var(--line2);
  background:linear-gradient(145deg,rgba(7,11,16,.96),rgba(3,5,6,.92));
  box-shadow:0 0 0 1px rgba(0,229,255,.06),0 24px 80px rgba(0,0,0,.8);
  padding:18px 18px 16px;
}
.boot-title{
  font-size:10px;font-weight:600;letter-spacing:.22em;
  color:var(--amber);text-transform:uppercase;margin-bottom:10px;
}
.boot-row{display:flex;align-items:center;gap:10px}
.boot-spinner{
  width:14px;height:14px;border:2px solid var(--line2);border-top-color:var(--green);
  border-radius:50%;animation:spin .8s linear infinite;flex:0 0 auto;
}
.boot-msg{font-size:10px;color:var(--t2);letter-spacing:.06em;line-height:1.5}

/* user chip in topbar */
.tb-user{
  display:flex;align-items:center;gap:6px;font-size:10px;color:var(--t2);
  border-left:1px solid var(--line);padding-left:10px;margin-left:2px;
}
.tb-user-email{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--t1)}
.tb-logout{
  background:none;border:1px solid var(--line2);color:var(--t2);
  font-family:var(--mono);font-size:9px;padding:2px 7px;cursor:pointer;
  letter-spacing:.06em;transition:all .15s;
}
.tb-logout:hover{border-color:var(--red);color:var(--red)}

/* TOPBAR */
.topbar{display:flex;align-items:center;background:var(--bg1);border-bottom:1px solid var(--line);padding:0 12px;overflow:hidden;gap:0}
.tb-brand{font-size:11px;font-weight:600;letter-spacing:.18em;color:var(--amber);text-transform:uppercase;padding-right:12px;border-right:1px solid var(--line);margin-right:12px;flex-shrink:0}
.tb-fields{display:flex;gap:12px;flex:1;align-items:center;overflow:hidden}
.tb-f{display:flex;gap:4px;align-items:baseline;flex-shrink:0}
.tb-l{font-size:10px;color:var(--t2);letter-spacing:.06em;text-transform:uppercase}
.tb-v{font-size:12px;font-weight:500}
.tb-sep{width:1px;height:18px;background:var(--line);flex-shrink:0}
.tb-right{display:flex;align-items:center;gap:7px;margin-left:auto;flex-shrink:0}
.dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:blink 1.4s ease-in-out infinite}
.dot.off{background:var(--red);animation:none}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.15}}
.fetch-btn{background:none;border:1px solid var(--amber);color:var(--amber);font-family:var(--mono);font-size:10px;padding:3px 9px;cursor:pointer;letter-spacing:.06em;transition:all .15s;font-weight:600}
.fetch-btn:hover{background:var(--amber);color:var(--bg0)}.fetch-btn:disabled{opacity:.4;cursor:not-allowed}
.ib-btn{background:none;border:1px solid var(--teal);color:var(--teal);font-family:var(--mono);font-size:10px;padding:3px 9px;cursor:pointer;letter-spacing:.06em;transition:all .15s;font-weight:600}
.ib-btn:hover{background:var(--teal);color:var(--bg0)}.ib-btn:disabled{opacity:.4;cursor:not-allowed}
.rbn{background:none;border:1px solid var(--line2);color:var(--t2);font-family:var(--mono);font-size:10px;padding:3px 7px;cursor:pointer;transition:all .15s}
.rbn:hover{border-color:var(--green);color:var(--green)}

/* MAIN */
.main{display:grid;grid-template-columns:280px 1fr;overflow:hidden}
.panel{display:flex;flex-direction:column;overflow:hidden}
.panel::-webkit-scrollbar{width:3px}.panel::-webkit-scrollbar-track{background:var(--bg1)}.panel::-webkit-scrollbar-thumb{background:var(--line3)}
.panel-left{border-right:1px solid var(--line)}

/* ── Terminal-style scrollbars (tabs / journal) ───────────────────────────── */
/* Firefox */
#right [id^="tab-"],
#jnl-left,
#jnl-day-panel{
  scrollbar-width: thin;
  scrollbar-color: rgba(0,188,212,.55) rgba(17,22,32,.85);
}

/* Chromium / Edge / WebKit */
#right [id^="tab-"]::-webkit-scrollbar,
#jnl-left::-webkit-scrollbar,
#jnl-day-panel::-webkit-scrollbar{
  width: 8px;
}
#right [id^="tab-"]::-webkit-scrollbar-track,
#jnl-left::-webkit-scrollbar-track,
#jnl-day-panel::-webkit-scrollbar-track{
  background: rgba(17,22,32,.75);
  border-left: 1px solid rgba(45,63,82,.55);
}
#right [id^="tab-"]::-webkit-scrollbar-thumb,
#jnl-left::-webkit-scrollbar-thumb,
#jnl-day-panel::-webkit-scrollbar-thumb{
  background: linear-gradient(180deg, rgba(0,188,212,.55), rgba(124,77,255,.45));
  border-radius: 10px;
  border: 2px solid rgba(17,22,32,.75);
  box-shadow: 0 0 10px rgba(0,188,212,.18);
}
#right [id^="tab-"]::-webkit-scrollbar-thumb:hover,
#jnl-left::-webkit-scrollbar-thumb:hover,
#jnl-day-panel::-webkit-scrollbar-thumb:hover{
  background: linear-gradient(180deg, rgba(0,230,118,.6), rgba(0,188,212,.55));
  box-shadow: 0 0 14px rgba(0,230,118,.18);
}

/* ── Responsive (mobile web) — desktop base styles unchanged above ───────── */
@media (max-width: 900px){
  html,body{
    overflow-x:hidden;   /* clamp to viewport — no horizontal scroll */
    overflow-y:auto;
    height:auto;
    min-height:100vh;
    min-height:100dvh;
    -webkit-overflow-scrolling:touch;
    touch-action:manipulation;
    width:100%;
    max-width:100%;
    background:var(--bg0);
  }
  .app{
    height:auto;
    min-height:100vh;
    min-height:100dvh;
    grid-template-rows:auto 1fr;
    padding-bottom:max(0px,env(safe-area-inset-bottom));
    max-width:100%;
    width:100%;
    overflow-x:hidden;
  }
  .topbar{
    flex-wrap:wrap;
    overflow:hidden;
    padding-top:max(6px,env(safe-area-inset-top));
    padding-bottom:6px;
    padding-left:max(10px,env(safe-area-inset-left));
    padding-right:max(10px,env(safe-area-inset-right));
    gap:4px;
    max-width:100%;
    height:auto;
    min-height:auto;
    align-items:center;
  }
  /* Row 1 left: brand */
  .tb-brand{
    flex:0 0 auto;
    order:1;
    border-right:none;
    padding-right:0;
    margin-right:0;
    font-size:10px;
    letter-spacing:.14em;
  }
  /* Row 2: data fields wrap into multiple rows — no horizontal scroll */
  .tb-fields{
    flex:0 0 100%;
    width:100%;
    max-width:100%;
    order:3;
    overflow:hidden;     /* clip anything that still escapes */
    flex-wrap:wrap;
    gap:4px 14px;
    padding:5px 0 4px;
    border-top:1px solid var(--line);
    margin-top:2px;
    align-items:baseline;
  }
  /* Vertical separators make no sense in a wrapping layout */
  .tb-sep{display:none}
  /* Each field: auto-size, value truncates if absurdly long */
  .tb-f{flex:0 0 auto;max-width:calc(50% - 7px)}
  .tb-v{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:12ch}
  /* Row 1 right side: time + controls */
  .tb-right{
    flex:1 1 auto;
    order:2;
    justify-content:flex-end;
    margin-left:auto;
    flex-wrap:nowrap;
    gap:6px;
    overflow:hidden;
  }
  .rbn,.tb-logout{
    min-height:36px;
    min-width:36px;
    padding:6px 8px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
  }

  /* Main: flex column */
  .main{
    display:flex;
    flex-direction:column;
    overflow-x:hidden;
    overflow-y:visible;
    max-width:100%;
    width:100%;
  }
  .panel{min-width:0;max-width:100%}
  .panel-left{
    border-right:none;
    border-bottom:none;
    border-top:1px solid var(--line);
    overflow-x:hidden;  /* safe: #ib-selector-block is position:static, not fixed */
    width:100%;
    max-width:100%;
    order:2;            /* pRTH + IB below the map/charts on mobile */
  }
  #right{
    order:1;            /* map/charts above on mobile */
  }
  .panel-left > #left{
    overflow-x:hidden;
    width:100%;
    max-width:100%;
  }
  /* Flex column + min-height so map/chart tabs get real space (not 0px % height) */
  #right.panel,
  #right{
    height:auto !important;
    min-height:min(70vh,620px);
    min-height:min(70dvh,620px);
    max-height:none;
    display:flex !important;
    flex-direction:column !important;
    overflow:hidden !important;
    flex:1 1 auto;
    min-width:0;
    max-width:100%;
    width:100%;
  }
  #right [id^="tab-"]{
    min-height:0;
    flex:1 1 auto;
  }
  #tab-worldmap,
  #tab-charts,
  #tab-options,
  #tab-news,
  #tab-econ-calendar,
  #tab-stats,
  #tab-earnings-radar,
  #tab-global-backtest{
    min-height:min(60vh,520px)!important;
    min-height:min(60dvh,520px)!important;
  }
  #worldmap-container{
    min-height:min(50vh,440px)!important;
    min-height:min(50dvh,440px)!important;
  }

  .tabs{
    position:sticky;
    top:0;
    z-index:20;
    -webkit-overflow-scrolling:touch;
    scroll-snap-type:x proximity;
    padding-bottom:2px;
    gap:0;
    scrollbar-width:thin;
    overscroll-behavior-x:contain;
    scroll-padding-inline:6px;
  }
  .tabs::-webkit-scrollbar{height:3px}
  .tabs::-webkit-scrollbar-thumb{background:var(--line3);border-radius:2px}
  .tab{
    scroll-snap-align:start;
    flex-shrink:0;
    min-height:40px;
    display:inline-flex;
    align-items:center;
    padding:8px 9px;
    font-size:8px;
    letter-spacing:.05em;
  }

  .tbl-wrap,.hourstats-table-wrap,.ibnq-chart-svg-wrap,.rth-chart-svg-wrap{
    -webkit-overflow-scrolling:touch;
  }

  /* iOS: avoid focus-zoom on symbol inputs */
  #chart-symbol-input,
  #options-symbol-input{
    font-size:16px !important;
    max-width:100%;
  }

  .boot-box{
    width:min(360px,calc(100vw - 32px));
    margin:0 max(0px,env(safe-area-inset-left)) 0 max(0px,env(safe-area-inset-right));
  }

  .factor-row{flex-wrap:wrap;gap:4px 8px}
  .factor-name{min-width:0;flex:1 1 140px}
  .factor-detail{min-width:0;flex:1 1 200px}
  .stat-row{flex-wrap:wrap}
  .stat-lbl{min-width:0}

  #macro-drawer{
    width:min(360px,calc(100% - max(20px,env(safe-area-inset-left) + env(safe-area-inset-right))));
    max-height:min(520px,calc(100vh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));
    max-height:min(520px,calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));
  }

  /* Mobile: IB panel flows naturally after the pRTH content (not fixed) */
  .main{
    padding-bottom:env(safe-area-inset-bottom);
  }
  #ib-selector-block{
    position:static !important;
    width:100%;
    max-width:100%;
    max-height:none;
    overflow:visible;
  }
}

@media (max-width: 520px){
  .tb-brand{border-right:none;margin-right:0;padding-right:0}
  .tb-user-email{max-width:min(160px,45vw)}
  .tab{padding:7px 8px;font-size:7px;letter-spacing:.05em;min-height:38px}
  .ctab-btn{padding:8px 12px;font-size:10px;min-height:40px}

  .main{
    grid-template-rows:auto minmax(min(58vh,480px),auto);
    grid-template-rows:auto minmax(min(58dvh,480px),auto);
  }
  #right.panel,#right{
    min-height:min(68vh,580px);
    min-height:min(68dvh,580px);
  }
  #tab-worldmap,
  #tab-charts,
  #tab-options,
  #tab-news,
  #tab-econ-calendar,
  #tab-stats,
  #tab-earnings-radar,
  #tab-global-backtest{
    min-height:min(55vh,460px)!important;
    min-height:min(55dvh,460px)!important;
  }
  #tab-charts.chart-mode-tv{
    min-height:min(90vh,900px)!important;
    min-height:min(90dvh,900px)!important;
  }
  #right.panel:has(#tab-charts.chart-mode-tv),
  #right:has(#tab-charts.chart-mode-tv){
    min-height:min(94vh,940px)!important;
    min-height:min(94dvh,940px)!important;
  }

  .ib-quick-grid{grid-template-columns:repeat(2,1fr)!important;gap:4px!important}
  .ib-quick-btn{min-height:44px;padding:8px 4px}

  .bh-bias{font-size:22px}
  .conf-signal{font-size:18px}
  .conf-signal.mega-long,.conf-signal.mega-short{font-size:20px}

  .mini-stats{grid-template-columns:1fr}
  .ins-grid{grid-template-columns:repeat(2,1fr)}
  .rng-grid{grid-template-columns:repeat(2,1fr)}
  .acc-grid{grid-template-columns:1fr}
  .dist-grid{grid-template-columns:1fr}
  .sc-grid{grid-template-columns:1fr}
  .ib-stat-grid{grid-template-columns:1fr}
  .conf-targets{grid-template-columns:1fr}
  .ib-levels{grid-template-columns:1fr}

  .hourstats-kpi-row{grid-template-columns:1fr}
  .ibnq-bull-grid{grid-template-columns:1fr}
  .ibnq-compare{grid-template-columns:1fr}

  .prob-row{flex-wrap:wrap}
  .prob-track{min-width:120px}
}

/* NOTE: touch-device overrides intentionally removed — all mobile/touch rules
   are covered by @media (max-width:900px) above. A separate (hover:none) query
   without a width limit would fire on desktop touch laptops and corrupt the
   desktop grid layout. */

/* SECTION HEADER */
.sh{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;background:var(--bg1);border-bottom:1px solid var(--line)}
.sh-title{font-size:9px;font-weight:600;letter-spacing:.14em;color:var(--t2);text-transform:uppercase}
.sh-meta{font-size:9px;color:var(--t1)}

/* Options ladder — symmetric OI bars; strike column highlights */
.opt-ladder-gridhead{
  position:sticky;
  top:0;
  z-index:4;
  background:var(--bg1) !important;
  box-shadow:0 1px 0 var(--line);
}
.opt-ladder-wrap .opt-ladder-row:nth-child(odd){
  background:var(--bg2);
}
.opt-ladder-wrap .opt-ladder-row:nth-child(even){
  background:var(--bg3);
}
.opt-ladder-wrap .opt-strike-cell{
  padding:2px 4px;
  border-radius:2px;
  line-height:1.25;
}
/* Spot / precio — solo resaltado en la escalera */
.opt-ladder-row.is-spot .opt-strike-cell{
  background:rgba(255,171,0,.42) !important;
  color:var(--amber3) !important;
  box-shadow:inset 0 0 0 1px rgba(255,213,120,.55),inset 3px 0 0 0 var(--amber);
  text-shadow:none;
}

/* BIAS HERO */
.bias-hero{padding:10px;border-bottom:1px solid var(--line);position:relative;overflow:hidden}
.bias-hero::before{content:'';position:absolute;top:0;left:0;width:2px;height:100%}
.bias-hero::after{content:'';position:absolute;inset:0;opacity:.04;pointer-events:none}
.bias-hero.long::before{background:var(--green)}.bias-hero.long::after{background:var(--green)}
.bias-hero.short::before{background:var(--red)}.bias-hero.short::after{background:var(--red)}
.bias-hero.neutral::before{background:var(--blue)}.bias-hero.neutral::after{background:var(--blue)}
.bias-hero.pending::before{background:var(--amber)}
.bh-label{font-size:9px;letter-spacing:.1em;color:var(--t2);text-transform:uppercase;margin-bottom:3px}
.bh-bias{font-size:26px;font-weight:600;line-height:1;margin-bottom:2px}
.bh-bias.long{color:var(--green)}.bh-bias.short{color:var(--red)}.bh-bias.neutral{color:var(--blue)}.bh-bias.pending{color:var(--amber)}
.bh-sub{font-size:10px;color:var(--t1);margin-bottom:8px}

/* PROB BARS */
.prob-row{display:flex;align-items:center;gap:6px;margin-bottom:5px}
.prob-side{font-size:10px;font-weight:600;min-width:42px}
.prob-side.l{color:var(--green)}.prob-side.s{color:var(--red)}.prob-side.n{color:var(--blue)}.prob-side.a{color:var(--amber)}
.prob-track{flex:1;height:5px;background:var(--bg3);border-radius:1px;overflow:hidden}
.prob-fill{height:100%;border-radius:1px;transition:width .9s cubic-bezier(.4,0,.2,1)}
.fill-g{background:var(--green2)}.fill-r{background:var(--red2)}.fill-b{background:var(--blue2)}.fill-a{background:var(--amber2)}.fill-gr{background:var(--t1)}
.prob-pct{font-size:12px;font-weight:600;min-width:34px;text-align:right}
.pct-g{color:var(--green)}.pct-r{color:var(--red)}.pct-b{color:var(--blue)}.pct-a{color:var(--amber)}

/* Global backtest — blue bars only; labels & % in light text (no green/red read) */
#gbt-results .prob-row{gap:8px}
#gbt-results .prob-side,
#gbt-results .prob-side.l,
#gbt-results .prob-side.s{
  color:var(--t0)!important;
  flex:0 1 42%;
  min-width:0;
  font-size:9px;
  line-height:1.2;
}
#gbt-results .prob-pct.gbt-pct{
  color:var(--t0)!important;
  flex:0 0 auto;
  min-width:3rem;
}
/* flex:1 + min-width:0 so % width on the fill resolves; otherwise track collapses */
#gbt-results .prob-track{
  flex:1 1 0%;
  min-width:0;
  height:7px;
  align-self:center;
}
#gbt-results .prob-fill.gbt-b1,
#gbt-results .prob-fill.gbt-b2{
  display:block;
  height:100%;
  min-height:7px;
  background:#2196f3!important;
  opacity:1!important;
  box-shadow:0 0 8px rgba(33,150,243,.35);
}
#gbt-results .lv-val.gbt-freq,
#gbt-results .lv-sub{color:var(--t0)!important}
#gbt-results .lv-lbl{color:var(--t2)}
#gbt-results .tag.gbt-ctx{background:var(--blue2);color:var(--t0)!important;font-weight:600;border:1px solid rgba(33,150,243,.4)}
#gbt-results .gbt-hist-sub{color:var(--t0)!important;opacity:.92}
#gbt-results .box-insight{color:var(--t0)!important}
#gbt-results .box-insight .box-lbl{color:var(--t0)!important}
#gbt-results .box-insight p,
#gbt-results .box-insight li,
#gbt-results .box-insight ul,
#gbt-results .box-insight strong{color:var(--t0)!important}
#gbt-results .box-insight a{color:var(--blue)!important}
#gbt-results .gbt-intro{font-size:10px;color:var(--t0)!important;line-height:1.5;opacity:.95}
#gbt-results .gbt-intro em{font-style:italic;color:var(--t0)!important}

/* CONFLUENCE CARD */
.conf-card{padding:10px;border-bottom:1px solid var(--line);position:relative;overflow:hidden}
.conf-card::before{content:'';position:absolute;top:0;left:0;width:2px;height:100%}
.conf-card.long::before{background:var(--green)}.conf-card.long::after{content:'';position:absolute;inset:0;background:var(--green);opacity:.03;pointer-events:none}
.conf-card.short::before{background:var(--red)}.conf-card.short::after{content:'';position:absolute;inset:0;background:var(--red);opacity:.03;pointer-events:none}
.conf-card.neutral::before{background:var(--amber)}
.conf-signal{font-size:20px;font-weight:600;line-height:1;margin-bottom:3px}
.conf-signal.long{color:var(--green)}.conf-signal.short{color:var(--red)}.conf-signal.neutral{color:var(--amber)}
.conf-signal.mega-long{color:var(--green);text-shadow:0 0 12px rgba(0,230,118,.4);font-size:24px}
.conf-signal.mega-short{color:var(--red);text-shadow:0 0 12px rgba(255,61,87,.4);font-size:24px}
.conf-signal .sig-warn{color:var(--amber);font-weight:600;font-size:12px;margin-left:4px;letter-spacing:.02em}
.conf-signal.mega-long .sig-warn,.conf-signal.mega-short .sig-warn{font-size:13px}
.conf-score{display:flex;gap:8px;margin:6px 0;align-items:center}
.score-bar-wrap{flex:1}
.score-bar-track{height:8px;background:var(--bg3);border-radius:4px;overflow:hidden;display:flex}
.score-bar-long{height:100%;background:var(--green2);border-radius:4px 0 0 4px;transition:width .8s ease}
.score-bar-short{height:100%;background:var(--red2);border-radius:0 4px 4px 0;transition:width .8s ease}
.conf-targets{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line);margin-top:6px}
.conf-target{background:var(--bg2);padding:5px 7px;text-align:center}
.conf-target-lbl{font-size:8px;color:var(--t2);text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px}
.conf-target-val{font-size:13px;font-weight:600}
.conf-reasoning{font-size:10px;color:var(--t1);line-height:1.55;padding:7px 9px;background:var(--bg2);border-left:2px solid var(--teal);margin-top:1px}
.conf-factors{margin-top:6px}
.factor-row{display:flex;align-items:center;gap:6px;padding:3px 0;border-bottom:1px solid var(--line)}
.factor-row:last-child{border-bottom:none}
.factor-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.factor-name{font-size:9px;font-weight:600;flex-shrink:0;min-width:110px}
.factor-detail{font-size:9px;color:var(--t2);flex:1}
.factor-pts{font-size:9px;font-weight:600;min-width:28px;text-align:right}

/* IB SECTION */
.ib-section{border-bottom:1px solid var(--line)}
.ib-levels{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line)}
.ib-lv{background:var(--bg2);padding:6px 8px;text-align:center}
.ib-lv-lbl{font-size:8px;color:var(--t2);text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px}
.ib-lv-val{font-size:14px;font-weight:600}
.ib-pending{padding:12px 10px;text-align:center;color:var(--t2);font-size:10px}
.ib-quick-btn{flex:1;background:var(--bg2);border:none;color:var(--t2);font-family:var(--mono);font-size:9px;font-weight:600;padding:5px 0;cursor:pointer;letter-spacing:.06em;transition:all .15s;text-align:center}
.ib-quick-btn:hover{background:var(--bg3);color:var(--teal)}
.ib-quick-btn.active{background:var(--bg3);color:var(--teal);border-bottom:2px solid var(--teal)}
.ib-time-ctrl{display:flex;align-items:center;gap:8px;padding:5px 10px;background:var(--bg1);border-bottom:1px solid var(--line)}
.ib-time-lbl{font-size:9px;color:var(--t2)}
.ib-time-input{background:var(--bg2);border:1px solid var(--line2);color:var(--t0);font-family:var(--mono);font-size:10px;padding:2px 6px;width:50px;text-align:center}
.ib-time-input:focus{outline:none;border-color:var(--teal)}

/* LEVELS GRID */
.levels{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}
.lv{background:var(--bg2);padding:6px 9px}.lv.wide{grid-column:1/-1}
.lv-lbl{font-size:9px;color:var(--t2);letter-spacing:.1em;text-transform:uppercase;margin-bottom:2px}
.lv-val{font-size:13px;font-weight:600}.lv-sub{font-size:9px;color:var(--t1);margin-top:1px}
.c-g{color:var(--green)}.c-r{color:var(--red)}.c-b{color:var(--blue)}.c-a{color:var(--amber)}.c-t{color:var(--teal)}.c-t1{color:var(--t1)}

/* BOXES */
.box-insight{padding:7px 9px;border-left:2px solid var(--amber);font-size:10px;color:var(--t1);line-height:1.55;margin-top:1px;background:var(--bg2)}
.box-trade{padding:7px 9px;border-left:2px solid var(--cyan);font-size:10px;color:var(--t1);line-height:1.55;margin-top:1px;background:var(--bg2)}
.box-lbl{font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;margin-bottom:3px}

/* FAQS TAB */
.faq-wrap{padding:12px 12px 18px;min-height:100%;background:var(--bg0)}
.faq-hero{padding:14px 14px 12px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:linear-gradient(180deg, rgba(0,191,165,.06), rgba(0,0,0,.08));}
.faq-title{font-size:16px;font-weight:700;letter-spacing:.02em;color:var(--t0)}
.faq-sub{font-size:10px;line-height:1.55;color:var(--t1);margin-top:6px;max-width:980px}
.faq-pill-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.faq-pill{display:flex;align-items:center;gap:6px;font-size:9px;color:var(--t2);padding:3px 8px;border:1px solid rgba(255,255,255,.08);border-radius:999px;background:rgba(0,0,0,.18)}
.faq-dot{width:7px;height:7px;border-radius:50%}
.faq-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:12px;margin-top:12px}
.faq-card{border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(0,0,0,.10);overflow:hidden}
.faq-h2{padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.06);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--t2)}
details.faq{border-bottom:1px solid rgba(255,255,255,.06);padding:0;margin:0}
details.faq:last-child{border-bottom:none}
details.faq > summary{list-style:none;cursor:pointer;padding:10px 12px;font-size:11px;color:var(--t0);font-weight:600;display:flex;align-items:center;gap:10px}
details.faq > summary::-webkit-details-marker{display:none}
details.faq > summary::after{content:'+';margin-left:auto;color:var(--t2);font-weight:700}
details.faq[open] > summary::after{content:'–';color:var(--teal)}
.faq-body{padding:0 12px 12px;color:var(--t1);font-size:10px;line-height:1.65}
.faq-ul{margin:6px 0 0 16px;padding:0}
.faq-ul li{margin:4px 0;color:var(--t1)}
.faq-note{margin-top:8px;padding:7px 9px;background:var(--bg2);border-left:2px solid var(--amber);color:var(--t1);font-size:10px;line-height:1.55}
.faq-footer{margin-top:12px;padding:12px 14px;border:1px dashed rgba(255,255,255,.12);border-radius:12px;background:rgba(0,0,0,.12)}
.faq-foot-title{font-size:11px;font-weight:700;color:var(--t0)}
.faq-foot-sub{font-size:10px;color:var(--t1);margin-top:6px;line-height:1.55}
@media (max-width: 980px){
  .faq-grid{grid-template-columns:1fr}
}
.box-insight .box-lbl{color:var(--amber)}.box-trade .box-lbl{color:var(--cyan)}

/* SRC PILL */
.src-pill{display:inline-flex;align-items:center;gap:5px;font-size:9px;padding:2px 6px;letter-spacing:.06em;border:1px solid var(--line2);color:var(--t2);margin-top:5px}
.src-dot{width:5px;height:5px;border-radius:50%}

/* MINI STATS */
.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line)}
.ms{background:var(--bg2);padding:6px;text-align:center}
.ms-val{font-size:14px;font-weight:600;margin-bottom:1px}.ms-lbl{font-size:9px;color:var(--t2);letter-spacing:.07em;text-transform:uppercase}.ms-sub{font-size:9px;color:var(--t1)}

/* TABS */
.tabs{display:flex;border-bottom:1px solid var(--line);background:var(--bg1);flex-shrink:0;overflow-x:auto}
.tab{padding:6px 10px;font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--t2);cursor:pointer;border-bottom:2px solid transparent;transition:all .15s;white-space:nowrap}
.tab:hover{color:var(--t1)}.tab.active{color:var(--amber);border-bottom-color:var(--amber)}

/* TABLE */
.tbl-wrap{overflow-x:auto;flex:1}

/* Earnings radar: keep table inside panel (no horizontal bar) */
#earnings-radar-root .tbl-wrap{
  overflow-x:hidden;
  overflow-y:auto;
  min-width:0;
  max-width:100%;
}
#earnings-radar-root #eradar-table{
  table-layout:fixed;
  width:100%;
  max-width:100%;
  box-sizing:border-box;
}
#earnings-radar-root #eradar-table th,
#earnings-radar-root #eradar-table td{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  box-sizing:border-box;
}
table{width:100%;border-collapse:collapse;font-size:10px}
th{position:sticky;top:0;background:var(--bg1);padding:4px 6px;font-size:9px;font-weight:600;letter-spacing:.08em;color:var(--t2);text-transform:uppercase;text-align:left;border-bottom:1px solid var(--line);z-index:1;white-space:nowrap}
td{padding:4px 6px;border-bottom:1px solid var(--line);color:var(--t1);white-space:nowrap}
tr:hover td{background:var(--bg2)}
.tag{display:inline-block;padding:1px 5px;font-size:9px;font-weight:600;letter-spacing:.05em;border-radius:1px;text-transform:uppercase}
.tag.gu{background:var(--green3);color:var(--green)}.tag.gd{background:var(--red3);color:var(--red)}
.tag.ins{background:var(--blue3);color:var(--blue)}.tag.win{background:var(--green3);color:var(--green)}
.tag.loss{background:var(--red3);color:var(--red)}.tag.lng{background:var(--green3);color:var(--green)}
.tag.sht{background:var(--red3);color:var(--red)}.tag.bth{background:var(--amber3);color:var(--amber)}
.tag.isd{background:var(--bg3);color:var(--t2)}.tag.alc{background:#003020;color:var(--green)}.tag.baj{background:var(--red3);color:var(--red)}
.num-g{color:var(--green)}.num-r{color:var(--red)}.num-b{color:var(--blue)}.num-a{color:var(--amber)}.num-t{color:var(--t1)}.num-tl{color:var(--teal)}

/* ACC */
.acc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line)}
.acc-cell{background:var(--bg2);padding:8px 10px}
.acc-lbl{font-size:9px;color:var(--t2);letter-spacing:.08em;text-transform:uppercase;margin-bottom:3px}
.acc-val{font-size:16px;font-weight:600;margin-bottom:2px}.acc-sub{font-size:9px;color:var(--t1)}
.acc-bar{height:3px;background:var(--bg3);border-radius:1px;overflow:hidden;margin-top:4px}
.acc-fill{height:100%;border-radius:1px}

/* STATS */
.stats-section{padding:8px 10px;border-bottom:1px solid var(--line)}
.ss-title{font-size:9px;font-weight:600;letter-spacing:.12em;color:var(--t2);text-transform:uppercase;margin-bottom:8px}
.dist-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line)}
.dist-cell{background:var(--bg2);padding:10px;border-top:2px solid}
.dist-val{font-size:20px;font-weight:600;margin-bottom:2px}.dist-sub{font-size:10px;color:var(--t1);margin-bottom:4px}
.dist-bar{height:4px;background:var(--bg3);border-radius:1px;overflow:hidden;margin-top:4px}
.dist-fill{height:100%;border-radius:1px}
.sc-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);margin-bottom:4px}
.sc-cell{background:var(--bg2);padding:8px 10px}
.sc-lbl{font-size:9px;color:var(--t2);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
.stat-row{display:flex;align-items:center;gap:6px;padding:4px 0;border-bottom:1px solid var(--line)}
.stat-row:last-child{border-bottom:none}
.stat-lbl{flex:1;font-size:10px;color:var(--t1)}.stat-val{font-size:11px;font-weight:600;min-width:38px;text-align:right}
.stat-bar{width:60px;height:3px;background:var(--bg3);border-radius:1px;overflow:hidden}
.stat-fill{height:100%;border-radius:1px}.stat-pct{font-size:9px;color:var(--t2);min-width:32px;text-align:right}
.ins-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line)}
.ins-cell{background:var(--bg2);padding:8px;text-align:center}
.ins-val{font-size:18px;font-weight:600;margin-bottom:2px}.ins-pct{font-size:10px;color:var(--t2);margin:2px 0}.ins-lbl{font-size:9px;color:var(--t1)}
.bias-note{padding:7px 9px;border-left:2px solid;font-size:10px;color:var(--t1);line-height:1.55;margin-top:1px}
.rng-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line)}
.rng-cell{background:var(--bg2);padding:8px 6px;text-align:center}
.rng-val{font-size:16px;font-weight:600;margin-bottom:2px}.rng-lbl{font-size:9px;color:var(--t2);text-transform:uppercase;letter-spacing:.06em}
.mth-wrap{background:var(--bg2);padding:8px 10px}
.mth-bars{display:flex;gap:2px;align-items:flex-end;height:44px;margin-bottom:4px}
.mth-col{display:flex;flex-direction:column;align-items:center;gap:1px;flex:1;min-width:0}
.mth-label{font-size:8px;color:var(--t1);text-align:center}

/* IB STATS */
.ib-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}
.ib-stat-cell{background:var(--bg2);padding:10px}
.ib-stat-title{font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--line)}

/* Stats Library (sub-tabs: RTH · IB NQ · Hour Stats) */
.stats-lib-shell{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
.stats-lib-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--line);background:var(--bg1);gap:0}
.stats-lib-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--t2);font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:8px 14px;cursor:pointer;transition:color .15s,border-color .15s}
.stats-lib-tab:hover{color:var(--t1)}
.stats-lib-tab.active{color:var(--amber);border-bottom-color:var(--amber)}
.stats-lib-panel{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}

/* Hour Stats QQQ (NQ) */
.hourstats-hero{
  padding:12px 14px 10px;
  background:linear-gradient(180deg,rgba(0,188,212,.08) 0%,var(--bg1) 100%);
  border-bottom:1px solid var(--line);
}
.hourstats-hero-title{
  font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--cyan);
  margin:0 0 4px;
}
.hourstats-hero-sub{font-size:10px;color:var(--t1);line-height:1.5;margin:0 0 8px}
.hourstats-session-pill{
  display:inline-block;font-size:8px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--amber);border:1px solid var(--amber2);padding:4px 10px;border-radius:2px;
  background:rgba(255,171,0,.08);
}
.hourstats-kpi-row{
  display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);
  border-bottom:1px solid var(--line);
}
@media (min-width:720px){
  .hourstats-kpi-row{grid-template-columns:repeat(4,1fr)}
}
.hourstats-kpi{background:var(--bg2);padding:10px 12px}
.hourstats-kpi-lbl{font-size:8px;color:var(--t2);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}
.hourstats-kpi-val{font-size:20px;font-weight:700;color:var(--amber);font-variant-numeric:tabular-nums;line-height:1.15}
.hourstats-kpi-sm{font-size:12px;font-weight:600;color:var(--t1)}
.hourstats-nav{
  display:flex;flex-wrap:wrap;gap:6px 8px;margin-top:4px;
}
.hourstats-nav a{
  font-size:9px;font-weight:600;font-family:var(--mono);
  color:var(--cyan);text-decoration:none;padding:4px 8px;border-radius:2px;
  border:1px solid rgba(0,188,212,.35);background:rgba(0,188,212,.06);
}
.hourstats-nav a:hover{color:var(--t0);border-color:var(--cyan);background:rgba(0,188,212,.12)}
.hourstats-table-wrap{width:100%;overflow-x:auto;margin-top:8px;-webkit-overflow-scrolling:touch}
.hourstats-table{
  width:100%;min-width:640px;border-collapse:collapse;font-size:9px;font-family:var(--mono);
}
.hourstats-table th,.hourstats-table td{
  padding:6px 8px;text-align:right;border-bottom:1px solid var(--line);
}
.hourstats-table th:first-child,.hourstats-table td:first-child{text-align:left}
.hourstats-table thead th{
  background:var(--bg3);color:var(--t2);font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:8px;
}
.hourstats-table tbody tr:hover td{background:rgba(255,255,255,.03)}
.hourstats-table tbody td{color:var(--t1)}
.hourstats-table tbody td:nth-child(4){color:var(--cyan);font-weight:700}
#stats-sub-hourstats [id^="hs-rev"],#stats-sub-hourstats #hs-summary-table{scroll-margin-top:12px}

.ibnq-lead{font-size:10px;color:var(--t1);line-height:1.65;padding:10px 12px;background:var(--bg1);border-bottom:1px solid var(--line)}
.ibnq-h2{font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--teal);margin:0 0 8px}
.ibnq-h3{font-size:10px;font-weight:700;color:var(--t0);margin:0 0 6px}
.ibnq-muted{font-size:9px;color:var(--t2);line-height:1.55}
.ibnq-kpi-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);margin-bottom:0}
.ibnq-kpi{background:var(--bg2);padding:10px 12px}
.ibnq-kpi-lbl{font-size:8px;color:var(--t2);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}
.ibnq-kpi-val{font-size:20px;font-weight:700;color:var(--amber);font-variant-numeric:tabular-nums}
.ibnq-compare{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line);font-size:9px}
.ibnq-compare-h{background:var(--bg3);padding:6px 8px;font-weight:600;color:var(--t2);text-transform:uppercase;letter-spacing:.06em}
.ibnq-compare-c{background:var(--bg2);padding:8px;text-align:center}
.ibnq-compare-c .pct{font-size:14px;font-weight:700;color:var(--t1);display:block;margin-top:4px}
.ibnq-schematic{margin:10px 0;padding:12px;background:var(--bg2);border:1px solid var(--line);position:relative}
.ibnq-time-axis{display:flex;justify-content:space-between;font-size:7px;color:var(--t2);font-family:var(--mono);margin-top:8px;padding-top:6px;border-top:1px solid var(--line)}
.ibnq-ib-block{display:inline-block;padding:6px 10px;background:rgba(255,171,0,.12);border:1px solid var(--amber);font-size:8px;font-weight:700;color:var(--amber);letter-spacing:.06em;margin:8px 0}
.ibnq-legend{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:8px;color:var(--t2);margin-top:8px}
.ibnq-legend span{display:inline-flex;align-items:center;gap:4px}
.ibnq-dot{display:inline-block;width:6px;height:6px;border-radius:1px}

/* IB NQ — illustrative chart (SVG, theme-aligned) */
.ibnq-chart-card{
  margin:0;padding:0;background:var(--bg2);border:1px solid var(--line);
  overflow:hidden;
}
.ibnq-chart-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
  padding:10px 12px 8px;border-bottom:1px solid var(--line);background:var(--bg1);
}
.ibnq-chart-title{font-size:11px;font-weight:700;color:var(--t0);letter-spacing:.02em;line-height:1.3}
.ibnq-chart-sub{font-size:9px;color:var(--t2);line-height:1.45;margin:4px 0 0}
.ibnq-chart-badge{
  flex-shrink:0;font-size:7px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--green);border:1px solid var(--green2);padding:4px 8px;border-radius:2px;
  background:rgba(0,230,118,.06);
}
.ibnq-chart-svg-wrap{
  width:100%;overflow-x:auto;overflow-y:hidden;background:var(--bg0);
  border-bottom:1px solid var(--line);
}
.ibnq-chart-svg{
  display:block;width:100%;min-width:520px;height:auto;max-height:320px;
  font-family:var(--mono);
}
.ibnq-chart-svg .ibnq-grid{stroke:var(--line2);stroke-width:1;stroke-dasharray:3 5;opacity:.45}
.ibnq-chart-svg .ibnq-ib-zone{fill:rgba(33,150,243,.09);stroke:none}
.ibnq-chart-svg .ibnq-hl{stroke-width:1.2;stroke-dasharray:5 4;fill:none;opacity:.9}
.ibnq-chart-svg .ibnq-path{fill:none;stroke:var(--cyan);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 4px rgba(0,188,212,.35))}
.ibnq-chart-svg .ibnq-lbl{font-size:7px;font-weight:600;fill:var(--t2)}
.ibnq-chart-svg .ibnq-lbl-strong{font-size:7px;font-weight:700;fill:var(--t1)}
.ibnq-chart-svg .ibnq-axis-time{font-size:7px;fill:var(--t2);font-weight:600}
.ibnq-chart-svg .ibnq-marker{stroke-width:1.5}
.ibnq-chart-legend{
  display:flex;flex-wrap:wrap;gap:10px 16px;padding:8px 12px;font-size:8px;color:var(--t2);
  background:var(--bg2);border-top:1px solid var(--line);
}
.ibnq-chart-legend span{display:inline-flex;align-items:center;gap:5px}
.ibnq-leg-line{display:inline-block;width:14px;height:2px;border-radius:1px;vertical-align:middle}
.ibnq-leg-line.path{background:var(--cyan);box-shadow:0 0 4px rgba(0,188,212,.4)}
.ibnq-leg-line.mid{background:repeating-linear-gradient(90deg,var(--purple),var(--purple) 2px,transparent 2px,transparent 4px);height:2px;width:16px}

/* RTH Breaks — structural diagram (same card pattern as IB NQ) */
.rth-chart-card{
  margin:0 0 1px;padding:0;background:var(--bg2);border:1px solid var(--line);
  border-bottom:none;overflow:hidden;
}
.rth-chart-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
  padding:10px 12px 8px;border-bottom:1px solid var(--line);background:var(--bg1);
}
.rth-chart-title{font-size:11px;font-weight:700;color:var(--t0);letter-spacing:.02em;line-height:1.3}
.rth-chart-sub{font-size:9px;color:var(--t2);line-height:1.5;margin:4px 0 0}
.rth-meta-pills{display:flex;flex-wrap:wrap;gap:6px 8px;margin-top:8px}
.rth-pill{
  font-size:7px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  color:var(--t2);display:inline-flex;align-items:center;gap:5px;
  padding:4px 8px;background:var(--bg3);border:1px solid var(--line2);border-radius:2px;
}
.rth-pill-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.rth-chart-badge-concept{
  flex-shrink:0;font-size:7px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--amber);border:1px solid var(--amber2);padding:4px 8px;border-radius:2px;
  background:rgba(255,171,0,.08);text-align:center;line-height:1.25;max-width:120px;
}
.rth-chart-svg-wrap{
  width:100%;overflow-x:auto;overflow-y:hidden;background:var(--bg0);
  border-bottom:1px solid var(--line);
}
.rth-chart-svg{
  display:block;width:100%;min-width:520px;height:auto;max-height:320px;
  font-family:var(--mono);
}
.rth-chart-svg .rth-grid{stroke:var(--line2);stroke-width:1;stroke-dasharray:3 5;opacity:.45}
.rth-chart-svg .rth-prth-line{stroke:var(--amber);stroke-width:1.3;stroke-dasharray:6 4;fill:none;opacity:.95}
.rth-chart-svg .rth-path{fill:none;stroke:var(--cyan);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgba(0,188,212,.4))}
.rth-chart-svg .rth-lbl{font-size:7px;font-weight:600;fill:var(--t2)}
.rth-chart-svg .rth-lbl-strong{font-size:7px;font-weight:700;fill:var(--t1)}
.rth-chart-svg .rth-axis{font-size:7px;fill:var(--t2);font-weight:600}
.rth-chart-legend{
  display:flex;flex-wrap:wrap;gap:10px 14px;padding:8px 12px;font-size:8px;color:var(--t2);
  background:var(--bg2);border-bottom:1px solid var(--line);
}
.rth-chart-legend span{display:inline-flex;align-items:center;gap:5px}
.rth-leg-dash{display:inline-block;width:14px;height:0;border-top:2px dashed var(--amber);vertical-align:middle}

.ibnq-bull-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.ibnq-bull-card{background:var(--bg2);border:1px solid var(--line);border-left:3px solid var(--green);padding:10px}
.ibnq-bear-card{background:var(--bg2);border:1px solid var(--line);border-left:3px solid var(--red);padding:10px}
.ibnq-takeaway li{margin:6px 0;font-size:10px;color:var(--t1);line-height:1.5}

/* ECON CALENDAR (Macro tab) — full-width feed */
.ecal-main{
  flex:1;width:100%;min-width:0;min-height:0;overflow-y:auto;overflow-x:hidden;
  display:flex;flex-direction:column;background:var(--bg0);
}

/* CHART TAB */
.chart-tab-scroll{
  flex:1;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.chart-sticky-head{flex-shrink:0}
.chart-provider-row{
  display:flex;
  flex-wrap:nowrap;
  gap:8px;
  width:100%;
}
.chart-yahoo-controls{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.chart-yahoo-primary{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
}
.chart-yahoo-legend{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px 12px;
}
.ctab-btn{background:none;border:none;border-bottom:2px solid transparent;color:var(--t2);font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;cursor:pointer;transition:all .15s}
.ctab-btn:hover{color:var(--t1)}.ctab-btn.active{color:var(--amber);border-bottom-color:var(--amber)}
.chart-btn{background:none;border:1px solid var(--line2);color:var(--t1);font-family:var(--mono);font-size:9px;padding:2px 7px;cursor:pointer;letter-spacing:.05em;transition:all .15s}
.chart-btn:hover{border-color:var(--cyan);color:var(--cyan)}

/* UPLOAD */
.upload-zone{border:1px dashed var(--line3);padding:16px;text-align:center;color:var(--t2);cursor:pointer;transition:all .2s;margin:10px}
.upload-zone:hover{border-color:var(--amber);color:var(--amber)}.upload-zone input{display:none}
.upload-btn{background:none;border:1px solid var(--line2);color:var(--t1);font-family:var(--mono);font-size:10px;padding:4px 10px;cursor:pointer;transition:all .15s;margin-top:8px}
.upload-btn:hover{border-color:var(--amber);color:var(--amber)}

/* MISC */
.loading{display:flex;align-items:center;gap:8px;padding:14px 10px;color:var(--t2)}
.spinner{width:12px;height:12px;border:1.5px solid var(--line2);border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.err{padding:10px;background:var(--red3);border:1px solid var(--red2);color:var(--red);font-size:10px;margin:10px}


/* World map & macro drawer */
.map-country:hover { stroke:#2d3f52; stroke-width:.8; }
.map-label { font-family:'IBM Plex Mono',monospace; font-size:10px; pointer-events:none; fill:#dde3f0; font-weight:600; }
.map-sublabel { font-family:'IBM Plex Mono',monospace; font-size:9px; pointer-events:none; fill:var(--t1); }
.map-dot { filter:drop-shadow(0 0 3px currentColor); }
.map-legend-item { font-family:'IBM Plex Mono',monospace; font-size:9px; fill:var(--t1); }
@media (max-width:900px){
  .map-dot { r:2px; filter:drop-shadow(0 0 1.5px currentColor); }
  .map-label { font-size:8px; }
  .map-sublabel { font-size:7px; }
}

/* Macro drawer (country detail) */
#macro-drawer{
  position:absolute; top:10px; right:10px; width:min(360px, calc(100% - 20px));
  max-height:calc(100% - 20px);
  display:none; flex-direction:column; gap:8px;
  background:rgba(8,11,15,.92); border:1px solid #223040; border-radius:10px;
  padding:10px 10px 12px 10px;
  font-family:'IBM Plex Mono',monospace;
  z-index:5;
  backdrop-filter: blur(6px);
}
#macro-drawer .hd{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
#macro-drawer .title{font-size:12px;color:#dde3f0;font-weight:800;line-height:1.2}
#macro-drawer .sub{font-size:9px;color:var(--t2);margin-top:2px}
#macro-drawer .xbtn{
  background:transparent;border:1px solid #223040;color:var(--t1);border-radius:8px;
  width:28px;height:28px;cursor:pointer;font-weight:800
}
#macro-drawer .xbtn:hover{border-color:var(--t2);color:var(--t0)}
#macro-drawer .row{display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:rgba(12,16,24,.7);border:1px solid #1a2535;border-radius:10px;padding:8px 10px}
#macro-drawer .lbl{font-size:10px;color:var(--t1)}
#macro-drawer .val{font-size:12px;color:#dde3f0;font-weight:800}
#macro-drawer .meta{font-size:9px;color:var(--t2);margin-top:6px}
#macro-drawer .macro-sessions{margin-top:6px;padding:8px 10px;background:rgba(12,16,24,.75);border:1px solid #1a2535;border-radius:10px}
#macro-drawer .macro-sessions .sess-hd{font-size:8px;font-weight:700;color:var(--t2);letter-spacing:.12em;text-transform:uppercase;margin-bottom:6px}
#macro-drawer .macro-sessions .sess-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:5px;font-size:9px}
#macro-drawer .macro-sessions .sess-row:last-child{margin-bottom:0}
#macro-drawer .macro-sessions .sess-name{color:#dde3f0;font-weight:600;flex:1;min-width:0}
#macro-drawer .macro-sessions .sess-eta{font-size:9px;color:#ffab00;font-weight:700;white-space:nowrap}

/* ════════════════════════════════════════════════════════════════════════════
   RESPONSIVE ENHANCEMENTS — desktop (≥1024px) unchanged
   ════════════════════════════════════════════════════════════════════════════ */

/* ── Tablet (901px–1023px): keep two-column, narrow the left panel ─────────── */
@media (min-width:901px) and (max-width:1023px){
  html,body{overflow-x:hidden}
  .main{grid-template-columns:200px 1fr}
  .topbar{padding:0 10px}
  .tb-brand{font-size:10px;letter-spacing:.14em;padding-right:10px;margin-right:10px}
  .tb-fields{gap:7px}
  .tb-f{gap:3px}
  .tb-l{font-size:9px}
  .tb-v{font-size:11px}
  .tb-sep{height:14px}
  .tb-user-email{max-width:80px}
  .tab{padding:6px 8px;font-size:9px;letter-spacing:.05em}
  .fetch-btn,.ib-btn,.rbn{padding:4px 10px;font-size:9px}
  .factor-name{min-width:90px}
}

/* ── Additions to the ≤900px mobile layer ──────────────────────────────────── */
@media (max-width:900px){
  /* Stats sub-tabs: scroll horizontally instead of overflowing */
  .stats-lib-tabs{
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    scroll-behavior:smooth;
    scrollbar-width:thin;
  }
  .stats-lib-tab{flex-shrink:0;white-space:nowrap}
  .stats-lib-tabs::-webkit-scrollbar{height:3px}
  .stats-lib-tabs::-webkit-scrollbar-thumb{background:var(--line3);border-radius:2px}

  /* Larger touch targets for action buttons */
  .fetch-btn,.ib-btn{min-height:40px;padding:8px 12px}

  /* Earnings radar: let table scroll on mobile */
  #earnings-radar-root .tbl-wrap{overflow-x:auto!important}
  #earnings-radar-root #eradar-table{min-width:460px;table-layout:auto}
  #eradar-range-label,#eradar-status{
    flex-basis:100%;
    max-width:100%!important;
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:unset!important;
  }

  /* Chart toolbar: wrap gracefully */
  #chart-symbol-toolbar{padding:6px 8px;gap:6px}

  /* Charts tab: scroll inside panel so subtabs stay reachable; sticky chrome below main tabs */
  .chart-tab-scroll{
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
  }
  .chart-sticky-head{
    position:sticky;
    top:0;
    z-index:15;
    background:var(--bg0);
  }
  #chart-symbol-toolbar{background:var(--bg1)}
  .chart-subtoolbar{background:var(--bg1)!important}
  .chart-provider-row .ctab-btn{
    flex:1 1 0;
    min-height:44px;
    touch-action:manipulation;
    -webkit-tap-highlight-color:rgba(255,171,0,.15);
  }
  .chart-yahoo-primary{
    flex-wrap:nowrap;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:thin;
    max-width:100%;
    padding-bottom:2px;
    gap:8px;
  }
  .chart-yahoo-primary .ctab-mode{flex-shrink:0;min-height:40px;touch-action:manipulation}
  .chart-yahoo-legend{
    flex-wrap:nowrap;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    max-width:100%;
    padding:4px 0 2px;
    gap:10px;
  }
  .chart-yahoo-legend > span{flex-shrink:0}
  .chart-yahoo-footer .chart-btn{min-width:40px;min-height:40px;touch-action:manipulation}
  .chart-symbol-hint{display:none}

  /* TradingView: near-fullscreen on phone — grow right column, trim chrome, max chart height */
  #right.panel:has(#tab-charts.chart-mode-tv),
  #right:has(#tab-charts.chart-mode-tv){
    min-height:min(96vh,980px)!important;
    min-height:min(96dvh,980px)!important;
  }

  #tab-charts.chart-mode-tv .chart-subtoolbar{
    padding:3px 8px!important;
    gap:3px!important;
  }
  #tab-charts.chart-mode-tv #chart-provider-title{
    display:none!important;
  }
  #tab-charts.chart-mode-tv .chart-provider-row .ctab-btn{
    min-height:38px;
    padding:6px 10px;
    font-size:8px;
  }
  #tab-charts.chart-mode-tv #chart-symbol-toolbar{
    padding:4px 8px!important;
    gap:6px!important;
  }
  #tab-charts.chart-mode-tv .chart-sticky-head{
    padding-bottom:0;
  }

  #tab-charts.chart-mode-tv{
    flex:1 1 auto!important;
    /* Min height for column; inner chart uses flex+JS height sync on iOS */
    min-height:min(92vh,920px)!important;
    min-height:min(92dvh,920px)!important;
  }
  /* Single column layout: no inner scroll — chart stretches edge-to-edge below chrome */
  #tab-charts.chart-mode-tv #chart-tab-scroll{
    overflow:hidden!important;
    -webkit-overflow-scrolling:auto;
    flex:1 1 0!important;
    min-height:0!important;
    display:flex!important;
    flex-direction:column!important;
  }
  #tab-charts.chart-mode-tv #chart-main-mount{
    flex:1 1 0!important;
    min-height:0!important;
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
  }
  #tab-charts.chart-mode-tv #chart-panel-tv{
    flex:1 1 0!important;
    min-height:0!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    justify-content:flex-start!important;
    overflow:hidden!important;
  }
  #tab-charts.chart-mode-tv #tv-widget{
    flex:1 1 auto!important;
    min-height:0!important;
    width:100%!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    justify-content:flex-start!important;
    position:relative!important;
  }
  #tab-charts.chart-mode-tv #tv-widget .tradingview-widget-container{
    flex:1 1 auto!important;
    width:100%!important;
    min-height:0!important;
    height:100%!important;
  }
  #tab-charts.chart-mode-tv #tv-widget iframe{
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    flex:1 1 auto!important;
    border:0!important;
    display:block!important;
  }

  /* Fallback when JS has not run yet */
  #chart-panel-tv{
    flex:1 1 0;
    min-height:min(75vh,720px);
    min-height:min(75dvh,720px);
  }
  #tv-widget{
    flex:1 1 auto;
    display:flex;
    flex-direction:column;
    min-height:min(72vh,700px);
    min-height:min(72dvh,700px);
  }
  #tv-widget iframe{
    width:100%!important;
    height:100%!important;
    flex:1 1 auto;
    min-height:min(70vh,680px);
    min-height:min(70dvh,680px);
  }

  /* Econ calendar: no X-axis overflow */
  .ecal-main{overflow-x:hidden}

  /* Tables in tab content: allow horizontal scroll */
  .tbl-wrap{-webkit-overflow-scrolling:touch}
}

/* ── Medium devices (481px–768px): additional refinements ─────────────────── */
@media (max-width:768px){
  .conf-targets{grid-template-columns:1fr 1fr}
  .ib-levels{grid-template-columns:1fr 1fr}
  .factor-name{min-width:90px}
  .dist-grid{grid-template-columns:1fr 1fr}
  .acc-grid{grid-template-columns:1fr 1fr}
  .mini-stats{grid-template-columns:repeat(2,1fr)}
  .ins-grid{grid-template-columns:repeat(2,1fr)}
  .rng-grid{grid-template-columns:repeat(2,1fr)}
  .sc-grid{grid-template-columns:1fr 1fr}
  .ib-stat-grid{grid-template-columns:1fr 1fr}
}

/* ── Very small phones (≤480px): compact further ───────────────────────────── */
@media (max-width:480px){
  html,body{font-size:11px}
  .tb-v{font-size:10px}
  .tb-l{font-size:9px}
  .tb-user-email{max-width:min(110px,34vw)}
  .tab{padding:9px 8px;font-size:8px;letter-spacing:.06em}
  .stats-lib-tab{padding:7px 9px;font-size:8px}
  .bh-bias{font-size:20px}
  .conf-signal{font-size:16px}
  .conf-signal.mega-long,.conf-signal.mega-short{font-size:18px}

  /* IB & confluence levels: 2-col forced */
  .ib-levels{grid-template-columns:1fr 1fr!important}
  .conf-targets{grid-template-columns:1fr 1fr!important}

  /* IB quick buttons: denser 4-col */
  .ib-quick-grid{grid-template-columns:repeat(4,1fr)!important;gap:2px!important}
  .ib-quick-btn{min-height:40px;padding:6px 2px;font-size:8px}

  /* Stats KPI grids */
  .hourstats-kpi-row{grid-template-columns:repeat(2,1fr)!important}
  .hourstats-kpi-val{font-size:16px}
  .ibnq-kpi-val{font-size:16px}

  /* Level values: slightly smaller */
  .ib-lv-val{font-size:12px}
  .lv-val{font-size:12px}
  .acc-val{font-size:14px}
  .dist-val{font-size:16px}

  /* Earnings radar font */
  #earnings-radar-root table{font-size:9px}
  #earnings-radar-root .tbl-wrap{padding:4px}

  /* Boot box */
  .boot-box{padding:16px 14px 14px}
}
