/* ISHOUT // CHARTS — extracted from index.html 2026-09-06; TradingView-style palette, tokens at :root */
  :root {
    --bg:#101214; --chrome:#181a1d; --panel:#1c1f22; --panel2:#282c30; --bd:#2b2f33; --bd2:#3c4248;
    --tx:#e4e7ea; --tx2:#b6bdc5; --dim:#89929c; --mute:#59616b;
    --accent:#63b9eb; --accent2:#339bd7; --buy:#35bda5; --sell:#f06b75; --warn:#dfb568; --ray:#c59ade;
    --ui:-apple-system, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;
    --mono:"JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;
    --r:6px;
    --toolbar-height:38px;
    --gex-height:26px;
  }
  * { box-sizing:border-box; }
  html,body { margin:0; height:100%; background:var(--bg); color:var(--tx); font:13px/1.35 var(--ui); overflow:hidden; -webkit-font-smoothing:antialiased; }
  button, input, select { font:inherit; }
  ::selection { background:rgba(41,98,255,.35); }
  ::-webkit-scrollbar { width:8px; height:8px; } ::-webkit-scrollbar-thumb { background:#363a45; border-radius:4px; } ::-webkit-scrollbar-track { background:transparent; }

  /* ── top toolbar ── */
  #bar { min-height:38px; display:flex; flex-wrap:wrap; align-items:center; gap:2px; padding:4px 8px; background:var(--chrome); border-bottom:1px solid var(--bd); user-select:none; }
  #bar .brand { display:flex; align-items:center; gap:7px; margin-right:6px; padding:0 6px 0 2px; font-weight:700; font-size:13px; letter-spacing:.2px; color:var(--tx); }
  #bar .brand .mark { width:22px; height:22px; border-radius:6px; background:linear-gradient(135deg,#2962ff,#00bcd4); display:inline-flex; align-items:center; justify-content:center; }
  #bar .brand .mark svg { width:14px; height:14px; }
  #bar .brand i { font-style:normal; color:var(--dim); font-weight:500; }
  #bar .brand small { display:none; }
  #bar .sep { width:1px; height:22px; background:var(--bd); margin:0 6px; }
  #bar .grp { display:flex; gap:0; max-width:100%; overflow-x:auto; scrollbar-width:thin; }
  #bar button { height:28px; background:transparent; color:var(--tx2); border:0; border-radius:var(--r); padding:0 9px; cursor:pointer; white-space:nowrap; display:inline-flex; align-items:center; gap:6px; transition:background .1s, color .1s; }
  #bar button:hover { color:var(--tx); background:var(--panel2); }
  #bar button.on { color:var(--accent); font-weight:600; }
  #bar .grp button.on { color:#fff; background:var(--accent); }
  #bar button.act { color:var(--accent); }
  #bar button.ghost { color:var(--tx2); }
  #bar button svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
  #bar #snd.on { color:var(--warn); }
  #bar #snd.nag, #msnd.nag { animation: sndnag 1s ease-in-out infinite; }
  @keyframes sndnag { 0%,100% { opacity:1; } 50% { opacity:.35; } }
  body.embed #snd { display:none; }      /* the layout shell owns the bell */
  #symwrap { display:flex; align-items:center; }
  #sym { width:112px; height:28px; background:transparent; color:#fff; border:0; border-radius:var(--r); padding:0 8px 0 30px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; font-size:14px;
         background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23b2b5be' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='7' cy='7' r='4.5'/%3E%3Cpath d='M10.5 10.5 14 14'/%3E%3C/svg%3E");
         background-repeat:no-repeat; background-position:8px center; }
  #sym:hover { background-color:var(--panel2); } #sym:focus { outline:none; background-color:var(--panel2); }
  #symlist, .dd { position:absolute; top:34px; left:0; z-index:30; background:var(--panel); border:1px solid var(--bd2); border-radius:8px; padding:6px 0; min-width:280px; box-shadow:0 12px 32px rgba(0,0,0,.55); }
  #symlist .it, .dd .it { display:flex; align-items:center; gap:12px; padding:8px 14px; cursor:pointer; white-space:nowrap; font-size:13px; }
  #symlist .it:hover, #symlist .it.sel, .dd .it:hover { background:var(--panel2); }
  #symlist .it b { color:#fff; width:34px; letter-spacing:.5px; } #symlist .it .c { color:var(--dim); width:56px; font-size:12px; font-family:var(--mono); }
  #symlist .it .n { color:var(--tx2); font-size:12px; } #symlist .it.live .n::after { content:' · live'; color:var(--buy); }
  .dd { min-width:150px; } .dd .it.on { color:var(--accent); font-weight:600; }
  .dd .h, #indm .h { padding:6px 14px 4px; color:var(--dim); font-size:11px; letter-spacing:.6px; text-transform:uppercase; font-weight:600; }
  #bar .menu { position:relative; }
  #bar .right { margin-left:auto; display:flex; align-items:center; gap:2px; }
  #aibtn .vd { padding:1px 6px; border-radius:4px; font-size:11px; font-weight:700; font-family:var(--mono); }
  #bookm { min-width:230px; padding:8px; }
  #bookm .row { display:flex; align-items:center; justify-content:space-between; padding:6px 8px; font-size:12px; color:var(--tx2); }
  #bookm .row button { height:24px; padding:0 8px; background:var(--panel2); color:var(--tx); font-family:var(--mono); font-size:12px; }
  #cdrm { left:auto; right:0; min-width:290px; max-height:min(65vh, 480px); overflow:auto; }
  #bar #cdrm button.it { width:100%; height:34px; padding:0 12px; border-radius:0; justify-content:flex-start; text-align:left; }
  #cdrm .it b { min-width:32px; font-family:var(--mono); font-size:11px; }
  #cdrm .it b.confirmed { color:#ed9bc2; } #cdrm .it b.candidate { color:#a97e98; }
  #cdrm .it time { margin-left:auto; color:var(--dim); font:11px var(--mono); }
  #cdrm .empty { padding:10px 14px; color:var(--dim); font-size:12px; }
  #bar #indm, #bar #tfm, #bar #bookm, #bar #cdrm, #bar #symlist { position:fixed; right:auto; max-width:calc(100vw - 16px); min-width:min(230px, calc(100vw - 16px)); overflow:auto; z-index:50; }
  #bar #cdrm { width:330px; }
  button:focus-visible, input:focus-visible, [tabindex]:focus-visible { outline:2px solid #7ea2ff; outline-offset:2px; }
  #bookm .row button.on { background:var(--accent); color:#fff; }

  /* ── left drawing toolbar ── */
  #tools { position:absolute; top:62px; left:0; bottom:26px; width:42px; background:var(--chrome); border-right:1px solid var(--bd); display:flex; flex-direction:column; align-items:center; padding-top:6px; gap:2px; z-index:8; user-select:none; }
  #tools button { width:34px; height:34px; border:0; border-radius:var(--r); background:transparent; color:var(--tx2); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; }
  #tools button:hover { background:var(--panel2); color:#fff; }
  #tools button.on { color:var(--accent); background:rgba(41,98,255,.14); }
  #tools button svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
  #tools .gap { height:8px; }

  /* ── indicators dialog ── */
  #indm { position:absolute; z-index:50; left:0; top:34px; width:480px; max-height:70vh; overflow:auto; background:var(--panel); border:1px solid var(--bd2); border-radius:10px; box-shadow:0 16px 48px rgba(0,0,0,.55); padding:0 0 8px; transform-origin:top left; animation:dd .14s ease-out; }
  #symlist, .dd { animation:dd .12s ease-out; transform-origin:top left; }
  @keyframes dd { from { opacity:0; transform:translateY(-6px) scale(.98); } to { opacity:1; transform:none; } }
  #indm .top { position:sticky; top:0; background:var(--panel); padding:14px 16px 10px; border-bottom:1px solid var(--bd); z-index:1; }
  #indm .top h3 { margin:0 0 10px; font-size:15px; font-weight:600; color:#fff; display:flex; justify-content:space-between; align-items:center; }
  #indm .top h3 b { cursor:pointer; color:var(--dim); font-weight:400; font-size:18px; line-height:1; } #indm .top h3 b:hover { color:#fff; }
  #indq { width:100%; height:34px; background:var(--bg); color:#fff; border:1px solid var(--bd2); border-radius:var(--r); padding:0 12px 0 34px;
          background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23787b86' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='7' cy='7' r='4.5'/%3E%3Cpath d='M10.5 10.5 14 14'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:10px center; }
  #indq:focus { outline:none; border-color:var(--accent); }
  #indm .h { padding:12px 16px 4px; }
  #indm label { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:9px 16px; cursor:pointer; color:var(--tx); }
  #indm label:hover { background:var(--panel2); }
  #indm label .nm { display:flex; flex-direction:column; gap:1px; } #indm label .nm small { color:var(--dim); font-size:11.5px; }
  #indm label.sub { padding-left:34px; } #indm label.sub .nm { color:var(--tx2); }
  #indm label.hide { display:none; }
  #strmode { min-width:110px; max-width:150px; padding:4px 6px; color:var(--tx); background:var(--panel2); border:1px solid var(--bd); border-radius:4px; }
  #indm hr { border:0; border-top:1px solid var(--bd); margin:6px 0; }
  #indm label input { appearance:none; flex:none; width:34px; height:18px; border-radius:9px; background:#434651; margin:0; position:relative; cursor:pointer; transition:background .15s; }
  #indm label input::after { content:''; position:absolute; left:2px; top:2px; width:14px; height:14px; border-radius:50%; background:#fff; transition:left .15s; }
  #indm label input:checked { background:var(--accent); } #indm label input:checked::after { left:18px; }

  /* ── chart ── */
  #raybar { position:absolute; top:var(--toolbar-height); left:0; right:0; height:24px; background:var(--chrome); border-bottom:1px solid var(--bd); display:flex; align-items:center; padding:0 12px 0 52px; font-size:12px; color:var(--tx2); user-select:none; overflow:hidden; white-space:nowrap; }
  #wrap { position:absolute; top:calc(var(--toolbar-height) + 24px + var(--gex-height)); left:42px; right:0; bottom:26px; }
  #chart { position:absolute; inset:0; }
  #ov { position:absolute; left:0; top:0; pointer-events:none; z-index:4; }
  .lg { position:absolute; left:12px; max-width:calc(100% - 92px); z-index:5; pointer-events:none; white-space:nowrap; font-size:12px; color:var(--tx2); background:rgba(19,23,34,.90); }
  .lg .row { display:flex; align-items:center; gap:8px; min-height:20px; overflow:hidden; }
  .lg .row > * { flex-shrink:0; }
  .lg:not(#lg0) { width:calc(100% - 92px); }
  .lg:not(#lg0) .row { position:relative; padding-right:70px; white-space:normal; overflow:visible; flex-wrap:wrap; align-content:flex-start; }
  .lg:not(#lg0) .row > :not(.ctl) { min-width:0; max-width:100%; flex:0 1 auto; overflow-wrap:anywhere; }
  .lg:not(#lg0) .row .tg { display:inline-block; max-width:min(100%, 240px); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .lg:not(#lg0) .row small { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .lg:not(#lg0) .row .macro-readings { display:flex; gap:4px; flex:1 1 400px; overflow-x:auto; white-space:nowrap; scrollbar-width:thin; scrollbar-color:var(--bd2) var(--bg); pointer-events:auto; }
  .lg:not(#lg0) .macro-readings .tg { flex-shrink:0; overflow:visible; max-width:none; }
  .lg .row .ctl { position:absolute; right:0; background:var(--bg); }
  .lg .row.sp { height:20px; }
  .lg .equity-context { display:flex; gap:6px; max-width:100%; padding:2px 0; font-size:12px; line-height:18px; color:var(--tx); white-space:normal; pointer-events:auto; }
  .lg .equity-context b { flex-shrink:0; color:#64c9c1; }
  .lg .equity-context.pressure b { color:#ef5350; }
  .lg .equity-context.support b { color:#26a69a; }
  .lg .equity-context span { min-width:0; overflow-wrap:anywhere; }
  .lg .equity-context .yield-evidence { flex:0 1 auto; color:#ffb74d; border:1px solid rgba(255,183,77,.35); border-radius:3px; padding:0 4px; font-size:10px; line-height:16px; }
  .lg .sym { color:#fff; font-weight:700; font-size:15px; letter-spacing:.2px; } .lg .tf { color:var(--tx2); font-weight:600; } .lg .nm { color:var(--tx); font-weight:600; }
  .lg .desc { color:var(--dim); }
  .lg .v { font-family:var(--mono); font-size:12px; }
  .lg .tg { pointer-events:auto; cursor:pointer; padding:1px 5px; border-radius:4px; user-select:none; font-family:var(--mono); font-size:12px; }
  .lg .tg:hover { background:var(--panel2); }
  .lg .tg.off { opacity:.4; text-decoration:line-through; }
  .lg b { color:#fff; font-weight:600; }
  .lg small { color:var(--dim); font-size:12px; }
  .lg .r { color:var(--sell); } .lg .g { color:var(--buy); } .lg .b { color:#5b9cff; }
  .lg .ctl { display:inline-flex; pointer-events:auto; gap:1px; margin-left:4px; opacity:.4; transition:opacity .1s; }
  .lg .row:hover .ctl { opacity:1; }
  .lg .row.hid .nm, .lg .row.hid .v, .lg .row.hid .tg, .lg .row.hid .desc, .lg .row.hid .pill { opacity:.4; }
  .lg .chip { display:inline-flex; align-items:center; gap:4px; pointer-events:auto; padding:1px 4px 1px 7px; border-radius:4px; background:rgba(42,46,57,.55); color:var(--tx2); font-size:11.5px; }
  .lg .chip i { font-style:normal; color:var(--dim); cursor:pointer; padding:0 3px; border-radius:3px; } .lg .chip i:hover { color:#fff; background:var(--panel2); }
  .lg .chip.hid { opacity:.45; }
  .lg .ctl i { font-style:normal; width:20px; height:18px; display:inline-flex; align-items:center; justify-content:center; border-radius:4px; color:var(--dim); cursor:pointer; font-size:12px; }
  .lg .ctl i:hover { background:var(--panel2); color:#fff; }
  .lg .pill { display:inline-block; padding:1px 7px; border-radius:4px; font-size:11px; font-weight:700; letter-spacing:.4px; vertical-align:0; font-family:var(--mono); }
  .pill.sell { background:rgba(239,83,80,.16); color:var(--sell); }
  .pill.buy  { background:rgba(38,166,154,.16); color:var(--buy); }
  .pill.none { background:var(--panel2); color:var(--dim); }
  .pill.neg  { background:rgba(255,152,0,.16); color:var(--warn); }
  .pill.pos  { background:rgba(41,98,255,.18); color:#7ea2ff; }
  #ohlc { max-width:100%; overflow:hidden; pointer-events:none; font-family:var(--mono); font-size:12px; font-variant-numeric:tabular-nums; color:var(--tx); height:20px; display:flex; align-items:center; white-space:nowrap; }
  #ohlc > span { flex-shrink:0; }
  #ohlc .ohlc-field { display:inline-flex; align-items:center; }
  #ohlc span.k { color:var(--dim); margin:0 3px 0 6px; } #ohlc span.k:first-child { margin-left:0; }
  #rayread { flex:1; min-width:0; padding-left:10px; border-left:3px solid var(--bd2); line-height:1.2; overflow:hidden; text-overflow:ellipsis; }
  #rayread .k { color:var(--dim); font-weight:600; font-size:11px; letter-spacing:.5px; margin-right:6px; } #rayread b { color:#fff; }
  #rayread.buy { border-left-color:var(--buy); } #rayread.sell { border-left-color:var(--sell); } #rayread.none { opacity:.75; }
  #rayread.delayed { border-left-color:var(--sell); }
  #contextcontrol { display:flex; align-items:center; gap:5px; flex-shrink:0; margin-left:12px; cursor:pointer; font-size:11px; }
  #contextcontrol input { margin:0; accent-color:var(--buy); }
  #rayread.delayed .k { color:var(--sell); letter-spacing:0; }

  /* ── status bar ── */
  #status { position:absolute; left:0; right:0; bottom:0; height:26px; display:flex; align-items:center; gap:16px; padding:0 12px; background:var(--chrome); border-top:1px solid var(--bd); font-size:12px; color:var(--dim); user-select:none; }
  #status .dot { display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--mute); margin-right:6px; vertical-align:0; }
  #status .dot.ok { background:var(--buy); } #status .dot.warn { background:var(--warn); } #status .dot.bad { background:var(--sell); }
  #status b { color:var(--tx2); font-weight:600; }
  #status small { color:var(--dim); }
  #status .hint { margin-left:auto; display:flex; align-items:center; gap:14px; color:var(--dim); }
  #status .hint .clock { font-family:var(--mono); color:var(--tx2); }
  #status .hint .help { cursor:help; padding:2px 6px; border-radius:4px; } #status .hint .help:hover { background:var(--panel2); color:var(--tx); }
  #status .hint kbd { display:none; }
  @media (max-width:700px) {
    #bar .brand { display:none; }
    #bar { padding:4px; }
    #bar .sep { margin:0 2px; }
    #bar .right { gap:0; max-width:100%; flex-wrap:wrap; }
    #bar #follow span { display:none; }
    #bar button { padding:0 7px; }
    .lg { left:6px; font-size:11px; }
    .lg .desc { display:none; }
    .lg .row { gap:4px; }
    .lg#lg0 .row:first-child { height:auto; min-height:20px; white-space:normal; flex-wrap:wrap; overflow:visible; }
    .lg:not(#lg0) { max-width:calc(100% - 74px); }
    .lg:not(#lg0) .row { padding-right:62px; align-items:flex-start; }
    .lg:not(#lg0) .row .tg { max-width:100%; }
    .lg:not(#lg0) .row .macro-readings { flex-basis:100%; }
    .lg .equity-context { flex-wrap:wrap; gap:2px 5px; }
    .lg .equity-context .yield-evidence { flex-basis:max-content; max-width:100%; white-space:nowrap; }
    #ohlc { font-size:11px; }
    #ohlc .ohlc-open, #ohlc .ohlc-high, #ohlc .ohlc-low, #ohlc .ohlc-book { display:none; }
    #indm label .nm { min-width:0; overflow-wrap:anywhere; white-space:normal; }
    #indm { width:calc(100vw - 16px); }
    #status { gap:8px; }
    #status > span:first-child, #status #st, #status #bk, #status #pubage, #status .hint { display:none; }
    #status #fresh { min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  }

  /* ── AI panel + toasts ── */
  #ai { position:absolute; right:12px; top:12px; width:340px; max-height:62%; overflow:auto; z-index:35; background:var(--panel); border:1px solid var(--bd2); border-radius:10px; padding:10px 12px; font-size:12.5px; display:none; box-shadow:0 12px 32px rgba(0,0,0,.5); }
  #ai .h { display:flex; justify-content:space-between; align-items:center; color:var(--tx); font-weight:600; font-size:12px; letter-spacing:.4px; margin-bottom:4px; }
  #ai .h small { color:var(--dim); font-weight:400; margin-left:6px; }
  #ai .h b { cursor:pointer; color:var(--dim); font-weight:400; font-size:16px; } #ai .h b:hover { color:#fff; }
  #ai .v { border-top:1px solid var(--bd); padding:8px 0; }
  #ai .v .t { display:flex; gap:8px; align-items:baseline; } #ai .v .vd { font-weight:700; letter-spacing:.5px; padding:1px 7px; border-radius:4px; font-family:var(--mono); font-size:11px; }
  #ai .TAKE, #aibtn .TAKE { background:rgba(38,166,154,.2); color:var(--buy); } #ai .SKIP, #aibtn .SKIP { background:rgba(239,83,80,.2); color:var(--sell); } #ai .WAIT, #aibtn .WAIT { background:rgba(255,152,0,.18); color:var(--warn); }
  #ai .v small { color:var(--dim); } #ai .g { color:var(--buy); font-weight:700; } #ai .r { color:var(--sell); font-weight:700; }
  #ai .v .why { margin-top:4px; color:var(--tx); } #ai .v .nums { color:var(--tx2); margin-top:2px; font-family:var(--mono); font-size:11.5px; }

  /* ── Daily Map panel ── */
  #dailymap { position:absolute; right:12px; top:12px; width:380px; max-width:calc(100% - 24px); max-height:85%; overflow:auto; z-index:36; background:rgba(19,23,34,.96); backdrop-filter:blur(10px); border:1px solid var(--bd2); border-radius:10px; padding:12px 14px; font-size:12.5px; display:none; box-shadow:0 16px 40px rgba(0,0,0,.65); }
  #dailymap .h { display:flex; justify-content:space-between; align-items:center; color:var(--tx); font-weight:700; font-size:12.5px; letter-spacing:.5px; margin-bottom:10px; padding-bottom:6px; border-bottom:1px solid var(--bd); }
  #dailymap .h b#mapclose { cursor:pointer; color:var(--dim); font-weight:400; font-size:18px; line-height:1; } #dailymap .h b#mapclose:hover { color:#fff; }
  .map-verdict-box { background:rgba(255,255,255,.04); border-radius:6px; padding:8px 10px; margin-bottom:10px; }
  .map-v-head { font-weight:700; font-size:12px; color:#fff; line-height:1.35; margin-bottom:4px; font-family:var(--mono); }
  .map-v-sub { font-size:11.5px; color:var(--dim); line-height:1.4; }
  .map-trade-boxes { display:flex; gap:8px; margin-bottom:12px; }
  .map-box { flex:1; background:rgba(0,0,0,.35); border-radius:6px; padding:8px 10px; border:1px solid var(--bd); }
  .map-box.sell-side { border-color:rgba(255,82,82,.35); }
  .map-box.buy-side { border-color:rgba(0,230,118,.35); }
  .map-box .box-lbl { font-size:10px; font-weight:700; letter-spacing:.5px; color:var(--dim); margin-bottom:2px; font-family:var(--mono); }
  .map-box.sell-side .box-lbl { color:var(--sell); }
  .map-box.buy-side .box-lbl { color:var(--buy); }
  .map-box .box-val { font-size:16px; font-weight:700; color:#fff; font-family:var(--mono); margin-bottom:2px; }
  .map-box .box-desc { font-size:10px; color:var(--dim); line-height:1.3; }
  .map-table { background:rgba(0,0,0,.25); border-radius:6px; padding:6px 10px; border:1px solid var(--bd); }
  .map-row { display:flex; justify-content:space-between; align-items:center; padding:4px 0; border-bottom:1px solid rgba(255,255,255,.05); font-size:11.5px; }
  .map-row:last-child { border-bottom:none; }
  .map-row span { color:var(--dim); }
  .map-row b { color:var(--tx); font-family:var(--mono); font-weight:600; text-align:right; max-width:60%; }

  #tip { position:absolute; z-index:38; pointer-events:none; display:none; background:rgba(30,34,45,.97); border:1px solid var(--bd2); border-radius:8px; padding:8px 10px; font-size:12px; color:var(--tx); box-shadow:0 8px 24px rgba(0,0,0,.5); max-width:320px; line-height:1.4; }
  #tip .t { color:var(--dim); font-family:var(--mono); font-size:11px; margin-bottom:3px; } #tip .l { display:flex; gap:8px; align-items:baseline; } #tip b { font-weight:600; } #tip .g { color:var(--buy); } #tip .r { color:var(--sell); } #tip .w { color:var(--warn); } #tip small { color:var(--dim); }
  #loading { position:absolute; inset:0; z-index:20; display:flex; align-items:center; justify-content:center; gap:12px; background:var(--bg); color:var(--dim); font-size:13px; }
  #loading .sp { width:18px; height:18px; border:2px solid var(--bd2); border-top-color:var(--accent); border-radius:50%; animation:spin .8s linear infinite; }
  @keyframes spin { to { transform:rotate(360deg); } }
  #toasts { position:absolute; right:12px; bottom:36px; z-index:40; display:flex; flex-direction:column; gap:8px; pointer-events:none; }
  .toast { background:var(--panel); border:1px solid var(--bd2); border-left:3px solid var(--accent); border-radius:8px; padding:8px 12px; min-width:240px; box-shadow:0 8px 24px rgba(0,0,0,.45); animation:tin .18s ease-out; }
  .toast.buy { border-left-color:var(--buy); } .toast.sell { border-left-color:var(--sell); } .toast.warn { border-left-color:var(--warn); }
  .toast b { display:block; font-size:12.5px; font-weight:600; } .toast small { color:var(--dim); }
  .toast.out { animation:tout .25s ease-in forwards; }
  @keyframes tin { from { transform:translateX(16px); opacity:0; } to { transform:none; opacity:1; } }
  @keyframes tout { to { transform:translateX(16px); opacity:0; } }

  /* ── embedded in the multi-chart shell: compact chrome, one toolbar per pane ── */
  body.embed #bar .brand, body.embed #layoutb, body.embed #status .hint .help { display:none; }
  body.embed #bar { min-height:34px; padding:2px 6px; }
  #tools, body.embed #wrap, body.embed #tools { top:calc(var(--toolbar-height) + 24px + var(--gex-height)); }
  body.embed #raybar { top:var(--toolbar-height); }
  body.embed #ai { width:min(340px, 70%); }
  body.embed #follow span, body.embed #aibtn > svg, body.embed #indb > svg { display:none; }
  body.embed #bar button { padding:0 6px; }
  body.embed #tools { display:none; }
  body.embed #wrap { left:0; }
  body.embed #raybar { padding-left:12px; }
  /* timeframe menu: stars */
  #tfm { min-width:230px; }
  #tfm .it { justify-content:space-between; gap:18px; } #tfm .it small { color:var(--dim); margin-left:6px; }
  #tfm .star { color:var(--mute); font-size:15px; line-height:1; padding:0 2px; border-radius:4px; }
  #tfm .it:hover .star { color:var(--dim); } #tfm .star:hover { color:#ffb300; } #tfm .star.on { color:#ffb300; }
  #gexbar { position:absolute; top:calc(var(--toolbar-height) + 24px); left:0; right:0; height:26px; display:flex; align-items:center; gap:8px; padding:0 12px 0 52px; background:var(--chrome); border-bottom:1px solid var(--bd); font-size:11px; }
  #gexbar[hidden], #gexpanel[hidden] { display:none; }
  #gex_read { min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; text-align:left; border:0; background:transparent; color:var(--dim); font:inherit; cursor:pointer; padding:0; }
  #gex_access { margin-left:auto; flex-shrink:0; font:inherit; padding:2px 7px; background:var(--panel2); color:var(--tx); border:1px solid var(--bd); border-radius:4px; cursor:pointer; }
  #gexpanel { position:absolute; right:12px; top:12px; z-index:37; width:380px; max-width:calc(100% - 24px); max-height:80%; overflow:auto; background:var(--panel); border:1px solid var(--bd2); border-radius:6px; padding:12px; font-size:12px; box-shadow:0 8px 24px rgba(0,0,0,.4); }
  #gexpanel header { display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; }
  #gex_panel_close { background:transparent; color:var(--dim); border:0; font-size:20px; cursor:pointer; }
  #gexpanel table { border-collapse:collapse; width:100%; font-size:11px; }
  #gexpanel td, #gexpanel th { padding:7px 3px; border-bottom:1px solid var(--bd); text-align:right; font-weight:400; }
  #gexpanel td:first-child, #gexpanel th:first-child { text-align:left; }
  #gexpanel th, .gex-meta { color:var(--dim); }
  .gex-meta { margin:8px 0; overflow-wrap:anywhere; line-height:1.5; font-size:11px; }
  #gexlogin { background:var(--panel); color:var(--tx); border:1px solid var(--bd2); border-radius:6px; width:320px; max-width:calc(100vw - 32px); padding:20px; }
  #gexlogin::backdrop { background:rgba(0,0,0,.55); }
  #gexlogin h3 { margin:0 0 16px; font-size:15px; }
  #gexlogin label { display:block; font-size:12px; color:var(--dim); }
  #gexkey { box-sizing:border-box; width:100%; margin-top:6px; padding:8px; background:var(--bg); border:1px solid var(--bd2); color:var(--tx); font:inherit; }
  .gex-actions { display:flex; justify-content:flex-end; gap:8px; }
  .gex-actions button { padding:6px 12px; background:var(--panel2); border:1px solid var(--bd2); border-radius:4px; color:var(--tx); cursor:pointer; }
  #gex_login_status { font-size:12px; color:var(--warn); min-height:18px; }
  body.embed #gexbar { padding-left:12px; }
  @media (max-width:700px) { #gexbar { padding-left:6px; gap:5px; } }
