  /* News panel (shares grid-area:markets with #watchlist, radio toggle) */
  #newspanel{ grid-area:markets; overflow:auto; }
  .news-body{ display:flex; flex-direction:column; gap:10px; padding:10px; }
  .news-empty{ color:var(--muted); font-size:13px; text-align:center; padding:24px 8px; }
  .news-regime{ font-size:10px; color:var(--hdr); border:1px solid var(--border); border-radius:10px; padding:1px 7px; display:inline-block; margin-top:6px; }

  /* ── Calendar redesign: bias summary + next-release hero + day-grouped timeline ──
     Impact di-warnai via --imp (High=red, Medium=amber); bias via --bi (bull/bear/neutral).
     Angka pakai --mono + tabular-nums. Semua token → ikut tema light/dark. */
  .cal-bias{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:0 2px 10px; border-bottom:1px solid var(--border); }
  .cal-sym{ font:600 13px var(--font-display); letter-spacing:.01em; color:var(--txt); }
  .cal-dir{ margin-left:auto; font:700 11px var(--font-display); letter-spacing:.05em; white-space:nowrap;
            padding:2px 9px; border-radius:20px; border:1px solid var(--border); color:var(--muted); }
  .cal-bias.bullish .cal-dir{ color:var(--green); border-color:color-mix(in srgb,var(--green) 45%,transparent); background:color-mix(in srgb,var(--green) 12%,transparent); }
  .cal-bias.bearish .cal-dir{ color:var(--red);   border-color:color-mix(in srgb,var(--red) 45%,transparent);   background:color-mix(in srgb,var(--red) 12%,transparent); }
  .cal-regime{ flex-basis:100%; font-size:11px; color:var(--muted); }
  .cal-regime b{ color:var(--hdr); font-weight:600; }

  .cal-hero{ --imp:var(--luna-glow); position:relative; overflow:hidden; border:1px solid var(--border); border-radius:12px; padding:12px 14px 13px;
             background:radial-gradient(120% 140% at 100% 0, color-mix(in srgb,var(--imp) 15%,transparent), transparent 62%), var(--panel-2); }
  .cal-hero.imp-high{ --imp:var(--red); } .cal-hero.imp-med{ --imp:#e0a63a; }
  .cal-hero::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--imp); }
  .cal-hero-eyebrow{ font:600 10px var(--font-display); letter-spacing:.15em; text-transform:uppercase; color:var(--luna-glow); }
  .cal-hero-name{ font:600 13px var(--font-display); letter-spacing:-.005em; color:var(--txt); margin:3px 0 6px; }
  .cal-cd{ font:600 30px/1 var(--font-display); letter-spacing:.02em; color:var(--txt); font-variant-numeric:tabular-nums; }
  .cal-hero-meta{ display:flex; align-items:center; gap:8px; margin-top:9px; font:11px var(--mono,monospace); color:var(--muted); }

  .cal-daygroup{ display:flex; flex-direction:column; }
  .cal-dayhead{ display:flex; align-items:center; gap:9px; margin:4px 0 -2px;
                font:600 10px var(--font-display); letter-spacing:.13em; text-transform:uppercase; color:var(--hdr); }
  .cal-dayhead::after{ content:""; flex:1; height:1px; background:var(--border); }
  .cal-daydate{ color:var(--muted); letter-spacing:.03em; }

  .cal2-item{ --imp:var(--muted); position:relative; padding:9px 2px 11px 22px; }
  .cal2-item.imp-high{ --imp:var(--red); } .cal2-item.imp-med{ --imp:#e0a63a; }
  .cal2-item::before{ content:""; position:absolute; left:5px; top:0; bottom:0; width:2px; background:var(--border); }
  .cal-daygroup .cal2-item:first-child::before{ top:15px; }
  .cal-daygroup .cal2-item:last-child::before{ bottom:auto; height:15px; }
  .cal-node{ position:absolute; left:0; top:12px; width:12px; height:12px; border-radius:50%; box-sizing:border-box;
             background:var(--panel); border:2px solid var(--imp); z-index:1; }
  .cal2-item.released .cal-node{ background:var(--imp); }
  .cal-node.is-next{ border-color:var(--luna-glow); box-shadow:0 0 0 3px var(--panel), 0 0 9px 1px var(--luna-glow); }
  .cal-node.is-next::after{ content:""; position:absolute; inset:-5px; border-radius:50%; border:1.5px solid var(--luna-glow); animation:nmkPulse 2.4s ease-in-out infinite; }

  .cal2-top{ display:flex; align-items:center; gap:7px; }
  .cal-time{ font:600 12px var(--mono,monospace); color:var(--txt); font-variant-numeric:tabular-nums; }
  .cal-cur{ font:600 10px var(--font-display); letter-spacing:.04em; color:var(--muted); }
  .cal-imp{ display:inline-flex; gap:1.5px; align-items:flex-end; height:9px; margin-left:auto; }
  .cal-imp i{ width:2.5px; border-radius:1px; background:var(--imp); }
  .cal-imp i:nth-child(1){ height:4px; } .cal-imp i:nth-child(2){ height:6.5px; } .cal-imp i:nth-child(3){ height:9px; }
  .cal-implbl{ font:600 10px var(--font-display); letter-spacing:.02em; color:var(--imp); }
  .cal2-name{ font:600 13px/1.3 var(--font-display); letter-spacing:-.005em; color:var(--txt); margin:3px 0 6px; }

  .cal-fpa{ display:flex; flex-wrap:wrap; gap:4px 14px; font:11px var(--mono,monospace); }
  .cal-fpa > span{ display:inline-flex; gap:5px; align-items:baseline; }
  .cal-fpa i{ font-style:normal; font-size:10px; letter-spacing:.03em; color:var(--muted); }
  .cal-fpa b{ font-weight:600; color:var(--txt); font-variant-numeric:tabular-nums; }

  .cal-surprise{ --bi:var(--muted); display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:7px; font:600 11px var(--font-display); }
  .cal-surprise.bullish{ --bi:var(--green); } .cal-surprise.bearish{ --bi:var(--red); }
  .cal-delta{ color:var(--bi); white-space:nowrap; }
  .cal-biastag{ color:var(--bi); white-space:nowrap; padding:1px 8px; border-radius:20px;
                border:1px solid color-mix(in srgb,var(--bi) 42%,transparent); background:color-mix(in srgb,var(--bi) 12%,transparent); }
  .cal-pre{ font:500 11px/1.4 var(--font-display); color:var(--muted); margin-top:6px;
            display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }

  /* News panel tabs (Calendar | News) — segmented di .wl-head */
  .news-tabs{ display:inline-flex; background:var(--inset); border:1px solid var(--border); border-radius:7px; padding:2px; gap:2px; }
  .news-tab{ font:600 11px var(--font-display); letter-spacing:.02em; color:var(--muted);
             background:none; border:0; padding:3px 11px; border-radius:5px; cursor:pointer; text-transform:none; }
  .news-tab:hover{ color:var(--txt); background:var(--btn-hover); }
  .news-tab.on{ color:var(--txt); background:var(--panel); }
  .news-tab:focus-visible{ outline:2px solid var(--ring); outline-offset:1px; }
  .news-body.hidden{ display:none; }   /* tak ada .hidden generik → rule eksplisit utk swap tab body */
  /* Headline list (part 2) — aksen --luna-glow = kelas "berita" (bukan order/harga) */
  .hl-item{ display:block; text-decoration:none; border-bottom:1px solid var(--border);
            border-left:2px solid transparent; padding:11px 6px 12px 11px; }
  .hl-item:hover{ background:color-mix(in srgb, var(--luna-glow) 7%, transparent); border-left-color:var(--luna-glow); }
  .hl-item:focus-visible{ outline:2px solid var(--ring); outline-offset:-2px; }
  .hl-top{ display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-bottom:3px; }
  .hl-src{ font:600 11px var(--font-display); color:var(--hdr); letter-spacing:.01em;
           white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .hl-item:hover .hl-src{ color:var(--luna-glow); }
  .hl-time{ font:11px var(--font-num,monospace); color:var(--muted); white-space:nowrap; }
  .hl-title{ font:400 13px/1.35 var(--font-sans); color:var(--txt);
             display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .hl-more{ font:600 11px var(--font-display); color:var(--luna-glow); margin-top:4px;
            opacity:0; transition:opacity .15s; }
  .hl-item:hover .hl-more, .hl-item:focus-visible .hl-more{ opacity:1; }
  @media (prefers-reduced-motion: reduce){ .hl-more{ transition:none; } }

  /* News notif cards on-chart (part 3) — sepupu .toast, aksen --luna-glow = "berita" */
  #newsCards{ position:absolute; top:44px; right:66px; z-index:7; display:flex; flex-direction:column; gap:8px;
              width:min(300px,42vw); pointer-events:none; }
  .nc-card{ background:var(--panel); border:1px solid var(--border); border-left:3px solid var(--luna-glow);
            border-radius:9px; box-shadow:var(--shadow); padding:9px 10px 10px 11px; pointer-events:auto;
            opacity:0; transform:translateX(12px); transition:opacity .25s, transform .25s; }
  .nc-card.in{ opacity:1; transform:none; }
  .nc-top{ display:flex; align-items:center; gap:6px; margin-bottom:3px;
           font:600 11px var(--font-display); }
  .nc-badge{ color:var(--luna-glow); white-space:nowrap; }
  .nc-src{ color:var(--hdr); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .nc-time{ color:var(--muted); font:11px var(--font-num,monospace); margin-left:auto; white-space:nowrap; }
  .nc-x{ background:none; border:0; color:var(--muted); cursor:pointer; font-size:13px; line-height:1; padding:0 2px; }
  .nc-x:hover{ color:var(--txt); } .nc-x:focus-visible{ outline:2px solid var(--ring); outline-offset:1px; }
  .nc-title{ font:500 13px/1.35 var(--font-display); letter-spacing:-.005em; color:var(--txt); text-decoration:none;
             display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .nc-title:hover{ color:var(--luna-glow); }
  .nc-more{ font:600 11px var(--font-display); color:var(--luna-glow); margin-top:4px;
            display:inline-block; text-decoration:none; }
  @media (prefers-reduced-motion: reduce){ .nc-card{ transition:none; transform:none; } }
  /* Varian kartu event high-impact (aksen amber, judul non-link) */
  .nc-card.nc-evt{ border-left-color:#e0a63a; }
  .nc-evt .nc-badge{ color:#e0a63a; }
  .nc-evt .nc-title{ -webkit-line-clamp:3; }
  .nc-evrow{ margin-top:6px; }
  .nc-bias{ font:600 11px var(--font-display); padding:2px 8px; border-radius:20px; }
  .nc-bias.up{ color:var(--green); background:rgba(46,204,113,.14); }
  .nc-bias.down{ color:var(--red); background:rgba(255,111,111,.14); }
  /* Daftar event saat >1 rilis di waktu sama (coalesced) */
  .nc-evlist{ margin-top:5px; font:500 12px/1.4 var(--font-display); color:var(--txt);
              display:flex; flex-direction:column; gap:3px; }
  .nc-evline{ display:flex; align-items:center; gap:6px; }
  .nc-evline .nc-evn{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--muted); }
  .nc-evline b{ font-variant-numeric:tabular-nums; }
  .nc-evline .nc-bias{ padding:1px 6px; font-size:10px; }

  /* News on-chart markers (Fase 2) — tick di sumbu waktu; glow --luna-glow utk event terdekat */
  #newsMarkers{ position:absolute; inset:0; z-index:6; pointer-events:none; overflow:hidden; }
  .nmk{ position:absolute; bottom:34px; width:22px; height:22px; border-radius:50%;   /* di atas band label sumbu-X + pill tanggal crosshair (dulu 15px → menabrak) */
        transform:translateX(-50%); pointer-events:auto; cursor:pointer;
        display:grid; place-items:center; background:var(--panel-2); border:2px solid var(--muted);
        transition:transform .12s ease, box-shadow .18s ease; }
  .nmk:hover{ transform:translateX(-50%) scale(1.14); z-index:3; }
  .nmk .nmk-fl{ font-size:12px; line-height:1; }
  .nmk.impact-high{ border-color:var(--red); }
  .nmk.impact-medium{ border-color:#e0a63a; }
  .nmk-sev{ position:absolute; right:-3px; bottom:-3px; display:flex; gap:1px; align-items:flex-end;
        height:9px; padding:1px; border-radius:4px; background:var(--bg); }
  .nmk-sev i{ width:2px; border-radius:1px; background:currentColor; }
  .nmk-sev i:nth-child(1){ height:3px; } .nmk-sev i:nth-child(2){ height:5px; } .nmk-sev i:nth-child(3){ height:7px; }
  .nmk.impact-high .nmk-sev{ color:var(--red); } .nmk.impact-medium .nmk-sev{ color:#e0a63a; }
  .nmk-count{ position:absolute; top:-7px; left:-7px; min-width:16px; height:16px; padding:0 3px; border-radius:8px;
        background:var(--luna-glow); color:#0b0e14; border:1.5px solid var(--bg);
        font:700 9px var(--font-display); display:grid; place-items:center; line-height:1; }
  .nmk.is-next{ box-shadow:0 0 0 2px var(--bg), 0 0 10px 2px rgba(174,185,232,.85); }
  .nmk.is-next::after{ content:""; position:absolute; inset:-4px; border-radius:50%;
        border:1.5px solid var(--luna-glow); animation:nmkPulse 2.4s ease-in-out infinite; }
  @keyframes nmkPulse{ 0%,100%{ opacity:.45; transform:scale(1); } 50%{ opacity:.95; transform:scale(1.14); } }
  @media (prefers-reduced-motion:reduce){ .nmk.is-next::after{ animation:none; opacity:.7; } }

  .nmk-pop{ position:absolute; z-index:20; width:248px; background:var(--panel);
     border:1px solid var(--border); border-radius:11px; box-shadow:var(--shadow);
     color:var(--txt); pointer-events:auto; transform:translateX(-50%); overflow:hidden; }
  .nmk-pop .np-acc{ height:4px; }
  .nmk-pop .np-acc.impact-high{ background:var(--red); } .nmk-pop .np-acc.impact-medium{ background:#e0a63a; }
  .nmk-pop .np-body{ padding:13px 15px; }
  .nmk-pop .np-hd{ display:flex; align-items:center; gap:8px; margin-bottom:4px; }
  .nmk-pop .np-fl{ font-size:15px; line-height:1; }
  .nmk-pop .np-nm{ font:600 14px var(--font-display); flex:1; }
  .nmk-pop .np-chip{ font-size:9px; text-transform:uppercase; letter-spacing:.05em; padding:2px 7px;
     border-radius:20px; display:inline-flex; align-items:center; gap:4px; white-space:nowrap; }
  .nmk-pop .np-chip.impact-high{ color:var(--red); background:rgba(255,111,111,.13); border:1px solid rgba(255,111,111,.4); }
  .nmk-pop .np-chip.impact-medium{ color:#e0a63a; background:rgba(224,166,58,.13); border:1px solid rgba(224,166,58,.4); }
  .nmk-pop .np-chip .nmk-sev{ position:static; background:none; padding:0; height:8px; }
  .nmk-pop .np-tm{ color:var(--muted); font:11px var(--mono,monospace); margin-bottom:11px; }
  .nmk-pop .np-grid{ display:grid; grid-template-columns:1fr auto; gap:6px 12px; font-size:13px; }
  .nmk-pop .np-grid .k{ color:var(--muted); } .nmk-pop .np-grid .v{ font-weight:600; text-align:right; }
  .nmk-pop .cal-surprise{ padding-top:11px; border-top:1px solid var(--border); }
  /* Popup multi-event (≥2 rilis di waktu sama): header ringkas + daftar kartu scrollable, bar impact kiri */
  .nmk-pop.np-multi{ width:264px; }
  .nmk-pop .np-mhd{ display:flex; align-items:baseline; gap:8px; padding:11px 15px 9px; border-bottom:1px solid var(--border); }
  .nmk-pop .np-mc{ font:600 13px var(--font-display); color:var(--txt); }
  .nmk-pop .np-mt{ margin-left:auto; color:var(--muted); font:11px var(--mono,monospace); }
  .nmk-pop .np-scroll{ max-height:min(54vh,340px); overflow-y:auto; }
  .nmk-pop .np-evt{ padding:11px 15px; border-left:3px solid transparent; }
  .nmk-pop .np-evt + .np-evt{ border-top:1px solid var(--border); }
  .nmk-pop .np-evt.impact-high{ border-left-color:var(--red); }
  .nmk-pop .np-evt.impact-medium{ border-left-color:#e0a63a; }

