/* ===== /assets/css/fonts-cf.css ===== */
/* fonts-cf.css | v37 — FONT DILAYANI SENDIRI (self-hosted).
   Sebelumnya berkas font diambil dari /cf-fonts/* (Cloudflare Fonts). Di luar
   Cloudflare Pages jalur itu 404 dan tampilan jatuh ke font sistem. Sejak v37
   font disimpan di repo (/assets/fonts/*.woff2) sehingga:
     - nol 404 di lingkungan mana pun (lokal, preview, hosting lain);
     - tampilan identik walau CDN Cloudflare bermasalah;
     - same-origin → tetap lolos CSP ketat (font-src 'self').
   Semua berkas adalah VARIABLE FONT: satu berkas melayani seluruh ketebalan,
   jadi jumlah permintaan turun drastis dibanding versi lama (7 bobot × 7 subset).
   Subset: latin + latin-ext saja (cukup untuk Bahasa Indonesia & Inggris);
   peramban hanya mengunduh subset yang benar-benar dipakai (unicode-range).
*/
@font-face{font-family:'Inter';font-style:normal;font-weight:300 900;src:url(/assets/fonts/inter-latin-ext-300_900.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;font-display:swap}
@font-face{font-family:'Inter';font-style:normal;font-weight:300 900;src:url(/assets/fonts/inter-latin-300_900.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;font-display:swap}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;src:url(/assets/fonts/jetbrains-mono-latin-ext-400_700.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;font-display:swap}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;src:url(/assets/fonts/jetbrains-mono-latin-400_700.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;font-display:swap}

/* ===== /assets/tokens.css ===== */
/* ============================================================
   INTELLIGENCE TERMINAL — DESIGN TOKENS v1.0
   Single source of truth for colour, space, type, motion.
   Usage:  <html data-appearance="dark" data-preset="desk">
   Presets: desk | terminal | institutional
   Appearance: dark | light  (or omit + rely on prefers-color-scheme)
   ============================================================ */

:root{
  /* ---- Type scale (1.25 ratio, 14px base for dense UI) ---- */
  --font-sans:'Inter',system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:'JetBrains Mono',Menlo,Consolas,monospace;
  --fs-micro:9px;   --fs-caption:10px; --fs-small:11px;
  --fs-body:13px;   --fs-base:14px;    --fs-lg:16px;
  --fs-h4:18px;     --fs-h3:22px;      --fs-h2:28px;   --fs-h1:36px;
  --lh-tight:1.2;   --lh-normal:1.5;   --lh-loose:1.65;
  --tracking-label:1.8px;
  --w-reg:400; --w-med:500; --w-semi:600; --w-bold:700; --w-black:900;

  /* ---- Spacing scale (4pt) ---- */
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px;
  --s-5:24px; --s-6:32px; --s-7:48px; --s-8:64px;

  /* ---- Radius ---- */
  --r-xs:6px; --r-sm:8px; --r-md:10px; --r-lg:14px; --r-xl:18px; --r-pill:999px;

  /* ---- Motion (one easing family = consistent feel) ---- */
  --ease-standard:cubic-bezier(.4,0,.2,1);
  --ease-decel:cubic-bezier(0,0,.2,1);
  --ease-accel:cubic-bezier(.4,0,1,1);
  --ease-spring:cubic-bezier(.34,1.32,.64,1);
  --dur-instant:80ms; --dur-fast:150ms; --dur-base:220ms;
  --dur-slow:360ms;   --dur-slower:700ms;

  /* ---- Elevation ---- */
  --sh-1:0 1px 2px rgba(0,0,0,.28);
  --sh-2:0 4px 14px rgba(0,0,0,.32);
  --sh-3:0 18px 48px rgba(0,0,0,.45);

  /* ---- Layout constants ---- */
  --sidebar-w:218px; --header-h:52px; --ticker-h:32px;
  --grid-max:1180px;

  /* ---- Focus ring (accessibility, never removed) ---- */
  --focus-ring:0 0 0 2px var(--bg), 0 0 0 4px var(--ac);
}

/* ============================================================
   APPEARANCE: DARK (default)
   ============================================================ */
:root,
[data-appearance="dark"]{
  --bg:#09090F; --bg-raised:#0D0E17; --bg-sunken:#06060B;
  --card:rgba(255,255,255,.032);
  --card-hover:rgba(255,255,255,.06);
  --b1:rgba(255,255,255,.065);
  --b2:rgba(255,255,255,.11);
  --tx:#F8FAFC; --tx2:#94A3B8; --tx3:#7C8AA0;
  --gr:#10B981; --grr:16,185,129;
  --rd:#EF4444; --rdr:239,68,68;
  --gold:#F59E0B; --gol:245,158,11;
  --sb:rgba(13,14,23,.96);
  --skeleton-a:rgba(255,255,255,.04);
  --skeleton-b:rgba(255,255,255,.09);
  /* chrome global [P2-6] — dulu hex gelap keras di terminal.css/status-line.css */
  --bg-hdr:rgba(9,9,15,.92); --bg-ticker:rgba(0,0,0,.4); --scrim:rgba(0,0,0,.7); --bg-band:var(--bg-band);
}

/* ============================================================
   APPEARANCE: LIGHT
   ============================================================ */
[data-appearance="light"]{
  --bg:#FFFFFF; --bg-raised:#F9F8F7; --bg-sunken:#F0EFED;
  --card:rgba(15,23,42,.025);
  --card-hover:rgba(15,23,42,.05);
  --b1:rgba(15,23,42,.09);
  --b2:rgba(15,23,42,.16);
  --tx:#1C1D22; --tx2:#5A6270; --tx3:#6B7480;
  --gr:#0F9268; --grr:15,146,104;
  --rd:#D3453B; --rdr:211,69,59;
  --gold:#B8710C; --gol:184,113,12;
  --sb:rgba(249,248,247,.96);
  --skeleton-a:rgba(15,23,42,.05);
  --skeleton-b:rgba(15,23,42,.10);
  --bg-hdr:rgba(255,255,255,.92); --bg-ticker:rgba(15,23,42,.05); --scrim:rgba(15,23,42,.45); --bg-band:rgba(15,23,42,.05);
  --panel:rgba(255,255,255,.97); --neutral:#5A6270; --neutralr:90,98,112;
  --sunk-1:rgba(15,23,42,.03); --sunk-2:rgba(15,23,42,.05); --sunk-3:rgba(15,23,42,.075);
  --tint-1:rgba(15,23,42,.03); --tint-2:rgba(15,23,42,.05); --tint-3:rgba(15,23,42,.08);
  --sh-1:0 1px 2px rgba(0,0,0,.05);
  --sh-2:0 4px 12px rgba(0,0,0,.06);
  --sh-3:0 18px 44px rgba(0,0,0,.10);
}

/* ============================================================
   THEME PRESETS — accent + surface personality
   desk         : calm institutional blue, soft corners
   terminal     : high-contrast green-on-black, square corners, mono-first
   institutional: navy/gold, conservative, print-like
   ============================================================ */
[data-preset="desk"]{
  --ac:#3B82F6; --acr:59,130,246; --ac-soft:rgba(59,130,246,.12);
  --brand-grad:linear-gradient(135deg,#3B82F6,#8B5CF6);
}
[data-preset="terminal"]{
  --ac:#22D07A; --acr:34,208,122; --ac-soft:rgba(34,208,122,.12);
  --brand-grad:linear-gradient(135deg,#22D07A,#0EA5A5);
  --r-xs:2px; --r-sm:3px; --r-md:4px; --r-lg:5px; --r-xl:6px;
  --font-sans:'JetBrains Mono',Menlo,monospace;
  --tracking-label:2.4px;
}
[data-preset="institutional"]{
  --ac:#1E5AA8; --acr:30,90,168; --ac-soft:rgba(30,90,168,.14);
  --brand-grad:linear-gradient(135deg,#1E5AA8,#B8860B);
  --gold:#C9952B; --gol:201,149,43;
  --r-xs:4px; --r-sm:5px; --r-md:6px; --r-lg:8px; --r-xl:10px;
}
[data-preset="institutional"][data-appearance="dark"]{
  --bg:#0A0E16; --bg-raised:#0F1420; --sb:rgba(15,20,32,.96);
}

/* Back-compat: legacy app tokens map onto the new layer */
:root{ --bg1:var(--bg-raised); --bg2:var(--bg-raised); --tx1:var(--tx);
       --fn:var(--font-sans); --mono:var(--font-mono);
       --r1:var(--r-lg); --r2:var(--r-xl); --sbw:var(--sidebar-w); }

/* ============================================================
   APP THEME (data-theme) — SUMBER TUNGGAL AKSEN APLIKASI  [P1-2]
   Dipindah dari :root duplikat di terminal.css (v36).
   Aplikasi memakai atribut data-theme pada <html>, BUKAN
   data-preset. Blok ini diletakkan paling akhir supaya menang
   atas preset dan tetap berlaku untuk SEMUA halaman yang hanya
   memuat tokens.css (index.html, agent-console.html,
   style-guide.html) — sebelumnya --ac tidak terdefinisi di sana.
   ============================================================ */
:root,[data-theme="blue"]{
  --ac:#3B82F6; --acr:59,130,246; --ac-soft:rgba(59,130,246,.12);
}
[data-theme="amber"]{
  --ac:#D97706; --acr:217,119,6; --ac-soft:rgba(217,119,6,.12);
}

/* ---- Global micro-craft ---- */
[data-numeric],.num-tab,table td,table th{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
:where(a,button,[role="button"],[tabindex]):focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-sm)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* ============================================================
   P2 POLISH (v36c) — focus-visible menyeluruh & reduce-motion
   ============================================================ */
:where(.nitem,.btab-item,.hbt,.hamburger,.chip,.mfbtn,.wbtn,.thm-dot,
       .nav-grp,.nvg-hd,.rp-toggle,.tk-btn,.sb-user,.sb-close,
       [data-act],[data-keyact]):focus-visible{
  outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-sm)
}
/* Klik mouse tidak memunculkan ring; keyboard tetap dapat */
:where(a,button,[role="button"],[tabindex],[data-act]):focus:not(:focus-visible){outline:none;box-shadow:none}

@media (prefers-reduced-motion:reduce){
  .sp-rot,.ticker-track,.pulse,.plan-shimmer,.skeleton,.shimmer{animation:none!important}
  .ticker-track{transform:none!important}
  html{scroll-behavior:auto!important}
}

/* Empty state ramah [P2-4] */
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:22px 16px;text-align:center;color:var(--tx2);font-size:var(--fs-small);line-height:var(--lh-normal)}
.empty-state .es-ic{font-size:20px;opacity:.75;line-height:1}
.empty-state .es-t{color:var(--tx);font-size:var(--fs-body);font-weight:var(--w-semi)}
.empty-state .es-s{color:var(--tx3)}
.empty-state .es-a{margin-top:2px;color:var(--ac);font-size:var(--fs-small);font-weight:var(--w-semi);
  background:none;border:0;cursor:pointer;padding:2px 4px}
.empty-state .es-a:hover{text-decoration:underline}

/* ===== /assets/state.css ===== */
/* ============================================================
   STATE LAYER v1.0 — skeleton / empty / error / stale / offline
   Requires tokens.css. Every data region must own 4 states.
   ============================================================ */

/* ---- 1. SKELETON ---- */
.sk{position:relative;overflow:hidden;background:var(--skeleton-a);border-radius:var(--r-sm);display:block}
.sk::after{content:'';position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,var(--skeleton-b),transparent);
  animation:skShimmer 1.4s var(--ease-standard) infinite}
@keyframes skShimmer{100%{transform:translateX(100%)}}
.sk-text{height:11px;margin:7px 0}
.sk-title{height:16px;width:48%;margin:0 0 12px}
.sk-line-70{width:70%}.sk-line-45{width:45%}.sk-line-90{width:90%}
.sk-chip{height:22px;width:64px;border-radius:var(--r-pill)}
.sk-kpi{height:64px;border-radius:var(--r-lg)}
.sk-chart{height:180px;border-radius:var(--r-lg)}
.sk-row{display:flex;gap:var(--s-3);align-items:center;padding:10px 0;border-bottom:1px solid var(--b1)}
.sk-avatar{width:32px;height:32px;border-radius:50%;flex-shrink:0}
.sk-grow{flex:1}

/* ---- 2. EMPTY / 3. ERROR (shared shell) ---- */
.state{display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:var(--s-7) var(--s-4);gap:var(--s-3);min-height:180px}
.state-ic{width:44px;height:44px;border-radius:var(--r-lg);display:grid;place-items:center;
  font-size:19px;background:var(--card);border:1px solid var(--b1)}
.state-empty .state-ic{color:var(--tx2)}
.state-error .state-ic{color:var(--rd);background:rgba(var(--rdr),.10);border-color:rgba(var(--rdr),.28)}
.state-t{font-size:var(--fs-base);font-weight:var(--w-semi);color:var(--tx)}
.state-s{font-size:var(--fs-small);color:var(--tx2);max-width:34ch;line-height:var(--lh-normal)}
.state-act{display:flex;gap:var(--s-2);margin-top:var(--s-1);flex-wrap:wrap;justify-content:center}
.btn-state{min-height:34px;padding:0 14px;border-radius:var(--r-sm);border:1px solid var(--b2);
  background:var(--card);color:var(--tx);font:var(--w-semi) var(--fs-small)/34px var(--font-sans);
  cursor:pointer;transition:background var(--dur-fast) var(--ease-standard)}
.btn-state:hover{background:var(--card-hover)}
.btn-state.primary{background:var(--ac);border-color:transparent;color:#fff}

/* ---- 4. STALE / LIVE / OFFLINE BADGES ---- */
.dbadge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:var(--r-pill);
  font:var(--w-bold) var(--fs-caption)/1.5 var(--font-sans);letter-spacing:.5px;white-space:nowrap}
.dbadge .dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.dbadge-live{color:var(--gr);background:rgba(var(--grr),.10);border:1px solid rgba(var(--grr),.25)}
.dbadge-live .dot{background:var(--gr);animation:dbPulse 1.5s var(--ease-standard) infinite}
.dbadge-stale{color:var(--gold);background:rgba(var(--gol),.10);border:1px solid rgba(var(--gol),.28)}
.dbadge-stale .dot{background:var(--gold)}
.dbadge-offline{color:var(--tx2);background:var(--card);border:1px solid var(--b2)}
.dbadge-offline .dot{background:var(--tx3)}
.dbadge-error{color:var(--rd);background:rgba(var(--rdr),.10);border:1px solid rgba(var(--rdr),.28)}
.dbadge-error .dot{background:var(--rd)}
.dbadge-mock{color:var(--ac);background:var(--ac-soft);border:1px solid rgba(var(--acr),.3)}
.dbadge-mock .dot{background:var(--ac)}
@keyframes dbPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}

/* ---- 5. DISCLAIMER STRIP (fintech compliance) ---- */
.legal-strip{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;
  padding:10px var(--s-4);border-top:1px solid var(--b1);background:var(--bg-sunken);
  font-size:var(--fs-caption);color:var(--tx3);line-height:1.5}
.legal-strip strong{color:var(--tx2);font-weight:var(--w-bold)}

/* ===== /assets/css/terminal.css ===== */
/* Intelligence Terminal — gaya utama (diekstrak dari index.html) */
/* ===== RESET & TOKENS ===== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
/* [P1-2] Blok :root DIHAPUS dari berkas ini (v36).
   Semua variabel kini satu sumber di assets/tokens.css, yang
   WAJIB dimuat sebelum terminal.css. Alias lama (--bg1/--bg2/
   --tx1/--fn/--mono/--r1/--r2/--sbw) dipetakan di sana.
   JANGAN mendeklarasikan ulang :root di sini. */
html,body{height:100%;background:var(--bg);color:var(--tx);font-family:var(--fn);font-size:14px;line-height:1.5;overflow:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
/* subtle noise texture */
body::before{content:'';position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");opacity:.4;pointer-events:none;z-index:0}

/* ===== SPLASH ===== */
#splash{position:fixed;inset:0;background:var(--bg);z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;transition:opacity .7s ease,visibility .7s ease}
#splash.hide{opacity:0;visibility:hidden}
.sp-ring{position:relative;width:72px;height:72px}
.sp-ring svg{position:absolute;inset:0;width:100%;height:100%}
.sp-rot{animation:spinRing 1.8s linear infinite;transform-origin:center}
.sp-ic{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:900;letter-spacing:-1px;background:linear-gradient(135deg,var(--ac),#8B5CF6);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.sp-name{font-size:19px;font-weight:800;letter-spacing:-.4px;background:linear-gradient(135deg,var(--tx),rgba(248,250,252,.45));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.sp-sub{font-size:10px;letter-spacing:2.5px;text-transform:uppercase;color:var(--tx3)}
.sp-bar{width:180px;height:2px;background:var(--tint-2);border-radius:2px;overflow:hidden}
.sp-fill{height:100%;width:0;background:linear-gradient(90deg,var(--ac),#8B5CF6);border-radius:2px;transition:width .25s ease}
@keyframes spinRing{to{transform:rotate(360deg)}}

/* ===== TICKER ===== */
.ticker{height:32px;background:var(--bg-ticker);border-bottom:1px solid var(--b1);overflow:hidden;flex-shrink:0;display:flex;align-items:center}
.ticker-inner{overflow:hidden;flex:1;mask-image:linear-gradient(90deg,transparent,#000 60px,#000 calc(100% - 60px),transparent)}
.ticker-track{display:flex;align-items:center;gap:0;white-space:nowrap;animation:tickScroll 35s linear infinite}
@keyframes tickScroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
/* v1.3.2 - phones with Reduce Motion / battery-saver animation limits hit the global
   tokens.css freeze and the tape stood still (desktop was unaffected). Override with a
   calmer loop for those users; press-and-hold or hover pauses it for everyone. */
.ticker:hover .ticker-track,.ticker:active .ticker-track{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){.ticker-track{animation:tickScroll 45s linear infinite!important}}
.ti{display:inline-flex;align-items:center;gap:6px;padding:0 24px;font-size:11px;font-weight:600;font-family:var(--mono);border-right:1px solid var(--b1)}
.ti-sym{color:var(--tx2)}
.ti-px{color:var(--tx);font-variant-numeric:tabular-nums}
.ti-ch{font-size:10px}
.ti-up{color:var(--gr)}.ti-dn{color:var(--rd)}

/* ===== LAYOUT ===== */
#app{display:flex;height:calc(100vh - 32px);height:calc(100dvh - 32px);position:relative;z-index:1;overflow-x:hidden}
.sb-overlay{display:none;position:fixed;inset:0;top:32px;background:var(--scrim);z-index:97;backdrop-filter:blur(2px);overscroll-behavior:contain;touch-action:none}
.sb-overlay.show{display:block}

/* ===== SIDEBAR ===== */
.sidebar{width:var(--sbw);background:var(--sb);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-right:1px solid var(--b1);display:flex;flex-direction:column;flex-shrink:0;z-index:98;height:100%;overflow:hidden;transition:transform .3s cubic-bezier(.4,0,.2,1),margin-left .3s cubic-bezier(.4,0,.2,1)}
/* Desktop: sidebar bisa menutup ke kiri saat menu dibuka; konten utama otomatis melebar */
@media(min-width:1061px){body.sb-collapsed .sidebar{margin-left:calc(-1 * var(--sbw));border-right-color:transparent}}
.sb-top{padding:16px 14px 12px;border-bottom:1px solid var(--b1);flex-shrink:0}
.sb-brand{display:flex;align-items:center;gap:9px;margin-bottom:0}
.sb-logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--ac),#8B5CF6);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:900;color:#fff;flex-shrink:0;position:relative;overflow:hidden}
.sb-logo::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,var(--tint-3),transparent)}
.sb-name{font-size:14px;font-weight:800;letter-spacing:-.3px;background:linear-gradient(135deg,var(--tx) 40%,var(--tx2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;line-height:1.2}
.sb-sub{font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:var(--tx3);margin-top:1px}
.sb-nav{flex:1;overflow-y:auto;padding:10px 8px;scrollbar-width:none}
.sb-nav::-webkit-scrollbar{display:none}
.nav-grp{font-size:9px;font-weight:700;letter-spacing:1.8px;text-transform:uppercase;color:var(--tx3);padding:12px 8px 5px}
.nitem{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:10px;cursor:pointer;color:var(--tx3);font-size:12.5px;font-weight:500;transition:all .18s;margin-bottom:1px;position:relative}
.nitem:hover{background:var(--tint-2);color:var(--tx)}
.nitem.on{background:rgba(var(--acr),.12);color:var(--ac);font-weight:600}
.nitem.on::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:20px;background:var(--ac);border-radius:0 3px 3px 0}
.nic{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.nitem.on .nic{background:rgba(var(--acr),.18)}
.nbadge{margin-left:auto;font-size:9px;font-weight:700;padding:2px 6px;border-radius:8px;background:var(--rd);color:#fff;line-height:1.5}
.sb-mood{margin:8px;padding:12px;border-radius:12px;background:var(--tint-1);border:1px solid var(--b1)}
.mood-lbl{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:1px;font-weight:600;margin-bottom:6px;display:flex;justify-content:space-between;align-items:center}
.mood-bar{height:4px;background:var(--tint-3);border-radius:2px;overflow:hidden;margin-bottom:6px}
.mood-fill{height:100%;border-radius:2px;background:linear-gradient(90deg,#EF4444,#F59E0B 33%,#10B981 66%,#3B82F6);transition:width 1.5s cubic-bezier(.4,0,.2,1)}
.mood-labels{display:flex;justify-content:space-between;font-size:9px;color:var(--tx3)}
.sb-upg{margin:8px;border-radius:12px;padding:13px;background:linear-gradient(135deg,rgba(var(--acr),.14),rgba(139,92,246,.08));border:1px solid rgba(var(--acr),.2);flex-shrink:0}
.upg-t{font-size:12px;font-weight:700;margin-bottom:2px}
.upg-s{font-size:10px;color:var(--tx2);margin-bottom:10px;line-height:1.4}
.upg-btn{display:block;width:100%;padding:7px;background:var(--ac);color:#fff;border-radius:8px;font-size:11px;font-weight:700;cursor:pointer;text-align:center;transition:filter .15s;border:none;font-family:var(--fn)}
.upg-btn:hover{filter:brightness(1.15)}
.sb-user{display:flex;align-items:center;gap:9px;padding:12px 14px;border-top:1px solid var(--b1);cursor:pointer;transition:background .15s;flex-shrink:0}
.sb-user:hover{background:var(--tint-1)}
.sb-av{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--gold),#FB923C);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0;box-shadow:0 0 0 2px rgba(var(--gol),.3)}
.sb-ui .sbn{font-size:12px;font-weight:600;line-height:1.3}
.sb-ui .sbt{font-size:10px;color:var(--gold);font-weight:600}
.sb-ua{margin-left:auto;color:var(--tx3);font-size:12px}

/* ===== MAIN ===== */
.main-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.top-hdr{height:52px;background:var(--bg-hdr);backdrop-filter:blur(20px);border-bottom:1px solid var(--b1);display:flex;align-items:center;gap:10px;padding:0 16px;flex-shrink:0;position:sticky;top:0;z-index:10}
/* Hamburger: samakan dengan tombol ikon header (.hbt) — gelap, halus, tidak menyilaukan di tema dark. Sebelumnya putih 44px & terlalu terang/besar. */
.hamburger{display:flex;align-items:center;justify-content:center;background:var(--tint-2);border:1px solid var(--b1);color:var(--tx2);font-size:16px;cursor:pointer;width:36px;height:36px;padding:0;border-radius:9px;transition:all .15s;flex-shrink:0}
.hamburger:hover{background:var(--tint-3);color:var(--tx);border-color:var(--b2)}
.hamburger svg{width:18px;height:18px;flex-shrink:0}
.bottom-tab{display:none}
.srch{flex:1;max-width:360px;display:flex;align-items:center;gap:7px;background:var(--tint-2);border:1px solid var(--b1);border-radius:9px;padding:6px 12px;transition:border-color .18s}
.srch:focus-within{border-color:var(--ac)}
.srch input{background:none;border:none;outline:none;color:var(--tx);font-family:var(--fn);font-size:12.5px;flex:1;min-width:0}
.srch input::placeholder{color:var(--tx3)}
.hdr-r{display:flex;align-items:center;gap:8px;margin-left:auto}
.live-pip{display:flex;align-items:center;gap:5px;padding:4px 9px;background:rgba(var(--grr),.1);border:1px solid rgba(var(--grr),.25);border-radius:20px;font-size:10px;font-weight:700;color:var(--gr);letter-spacing:.5px}
.pulse{width:6px;height:6px;background:var(--gr);border-radius:50%;animation:pulse 1.5s ease infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}
.hbt{width:34px;height:34px;border-radius:9px;background:var(--tint-2);border:1px solid var(--b1);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:15px;color:var(--tx2);transition:all .15s;position:relative}
.hbt:hover{background:var(--tint-3);color:var(--tx);border-color:var(--b2)}
.hbt .dot{position:absolute;top:6px;right:6px;width:6px;height:6px;background:var(--rd);border-radius:50%;border:1.5px solid var(--bg)}
.thm-row{display:flex;gap:5px}
.thm-dot{width:18px;height:18px;border-radius:50%;cursor:pointer;transition:transform .15s;border:2px solid transparent}
.thm-dot:hover{transform:scale(1.2)}
.thm-dot.on{border-color:rgba(255,255,255,.5)}
.hdr-cta{padding:5px 12px;background:var(--ac);color:#fff;border-radius:8px;font-size:11px;font-weight:700;cursor:pointer;border:none;font-family:var(--fn);transition:filter .15s;letter-spacing:.3px}
.hdr-cta:hover{filter:brightness(1.15)}
.hdr-cta{display:inline-flex;align-items:center;gap:5px;line-height:1}
.cta-ic{display:none}

/* ===== CONTENT ===== */
.cl{flex:1;display:flex;overflow:hidden;position:relative}
.mc{flex:1;overflow-y:auto;overflow-x:hidden;padding:16px;min-width:0;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.08) transparent}
.mc::-webkit-scrollbar{width:4px}
.mc::-webkit-scrollbar-thumb{background:var(--tint-3);border-radius:4px}

/* ===== RIGHT PANEL ===== */
.rp{width:286px;flex-shrink:0;overflow-y:auto;border-left:1px solid var(--b1);padding:14px;background:var(--sb);backdrop-filter:blur(24px);scrollbar-width:none;transition:width .3s ease,opacity .3s ease}
.rp::-webkit-scrollbar{display:none}
.rp.collapsed{width:0;opacity:0;overflow:hidden;padding:0}
.rp-toggle{position:absolute;right:0;top:50%;transform:translateY(-50%);width:20px;height:48px;background:var(--b1);border-radius:8px 0 0 8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tx3);font-size:11px;transition:all .15s;z-index:5}
.rp-toggle:hover{background:var(--b2);color:var(--tx)}
.rp-sec{margin-bottom:18px}
.rp-hd{font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--tx2)}
.rp-va{font-size:10px;color:var(--ac);cursor:pointer;font-weight:600;text-transform:none;letter-spacing:0}
.rp-va:hover{text-decoration:underline}

/* ===== VIEWS ===== */
.view{display:none;animation:vIn .25s ease-out}
.view.on{display:block}
@keyframes vIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* ===== STAGGER ===== */
.sg{opacity:0;transform:translateY(10px);transition:opacity .35s ease,transform .35s ease}
.sg.vis{opacity:1;transform:translateY(0)}

/* ===== CARDS ===== */
.card{background:var(--card);backdrop-filter:blur(16px);border:1px solid var(--b1);border-radius:var(--r1);padding:16px;transition:border-color .18s}
.card:hover{border-color:var(--b2)}
.card.gb{position:relative}
.card.gb::before{content:'';position:absolute;inset:-1px;border-radius:calc(var(--r1) + 1px);padding:1px;background:linear-gradient(135deg,rgba(var(--acr),.45),transparent 40%,rgba(139,92,246,.2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.ch{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.ct{font-size:12.5px;font-weight:700;display:flex;align-items:center;gap:7px;color:var(--tx)}
.cic{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:13px}
.va{font-size:11px;color:var(--ac);cursor:pointer;font-weight:500}
.va:hover{text-decoration:underline}

/* ===== HERO ===== */
.hero{background:var(--card);border:1px solid var(--b1);border-radius:var(--r2);padding:22px;margin-bottom:14px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;inset:-1px;border-radius:calc(var(--r2)+1px);padding:1px;background:linear-gradient(135deg,rgba(var(--acr),.4),transparent 50%,rgba(139,92,246,.2) 100%);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.hero-glow{position:absolute;top:-60px;right:-60px;width:280px;height:280px;background:radial-gradient(circle,rgba(var(--acr),.08) 0%,transparent 70%);pointer-events:none}
.hero-rel{position:relative;z-index:1}
.hero-greet{font-size:21px;font-weight:800;letter-spacing:-.4px;margin-bottom:3px}
.hero-sub{font-size:12px;color:var(--tx2);margin-bottom:0}
.hero-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.hst{padding:0 18px 0 0}
.hst+.hst{padding-left:18px;border-left:1px solid var(--b1)}
.hsl{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.9px;font-weight:600;margin-bottom:4px}
.hsv{font-size:22px;font-weight:800;letter-spacing:-.4px;margin-bottom:3px;font-variant-numeric:tabular-nums}
.hsc{font-size:11px;font-weight:600;display:flex;align-items:center;gap:3px}
.up{color:var(--gr)}.dn{color:var(--rd)}.neu{color:var(--tx3)}
.hero-tag{position:static;margin-top:14px;padding-top:12px;border-top:1px solid var(--b1);text-align:left}
.htag-label{font-size:9px;letter-spacing:1.2px;text-transform:uppercase;color:var(--tx3);font-weight:700;margin-bottom:4px}
.htag-val{font-size:12.5px;font-weight:600;line-height:1.45;color:var(--tx2);max-width:none;text-align:left;background:none;-webkit-background-clip:unset;-webkit-text-fill-color:unset}

/* ===== STAT CARDS ===== */
.srow{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}
.sc{background:var(--card);border:1px solid var(--b1);border-radius:var(--r1);padding:14px;transition:all .2s;cursor:default;position:relative;overflow:hidden}
.sc:hover{border-color:var(--b2);transform:translateY(-2px);box-shadow:0 8px 32px rgba(0,0,0,.3)}
.sc::after{content:'';position:absolute;bottom:-20px;right:-20px;width:70px;height:70px;background:radial-gradient(circle,rgba(var(--acr),.06),transparent 70%);pointer-events:none}
.sc-ic{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:15px;margin-bottom:9px}
.sc-lb{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.8px;font-weight:600;margin-bottom:3px}
.sc-vl{font-size:18px;font-weight:800;letter-spacing:-.3px;margin-bottom:2px;font-variant-numeric:tabular-nums}
.sc-ch{font-size:11px;font-weight:600}

/* ===== CHART ===== */
.chart-row{display:grid;grid-template-columns:1fr 252px;gap:12px;margin-bottom:14px}
.chart-card{background:var(--card);border:1px solid var(--b1);border-radius:var(--r1);padding:16px}
.chart-big{font-size:26px;font-weight:800;letter-spacing:-.5px;font-variant-numeric:tabular-nums;margin-bottom:2px}
.chart-chg{font-size:12px;font-weight:600;color:var(--gr);margin-bottom:12px}
.ctabs{display:flex;gap:3px;margin-bottom:10px}
.ctb{padding:3px 9px;border-radius:14px;font-size:11px;font-weight:600;cursor:pointer;color:var(--tx3);transition:all .15s}
.ctb.on{background:var(--ac);color:#fff}
.chart-type-tog{display:flex;margin-left:auto;gap:3px;background:var(--sunk-2);border-radius:8px;padding:3px;border:1px solid var(--b1)}
.ctt{padding:3px 8px;border-radius:6px;font-size:10px;font-weight:600;cursor:pointer;color:var(--tx3);transition:all .15s}
.ctt.on{background:var(--card);color:var(--tx)}
.chart-wrap{margin:0 -4px -4px;border-radius:0 0 10px 10px;overflow:hidden;position:relative}
#mainChart{width:100%;height:132px;display:block}
.chart-hover-tip{position:absolute;background:var(--panel);border:1px solid var(--b2);border-radius:8px;padding:6px 10px;font-size:11px;pointer-events:none;display:none;white-space:nowrap;backdrop-filter:blur(8px)}
.donut-card{background:var(--card);border:1px solid var(--b1);border-radius:var(--r1);padding:16px;display:flex;flex-direction:column}
#donut{width:132px;height:132px;margin:0 auto 10px}
.dl{display:flex;flex-direction:column;gap:4px}
.dli{display:flex;align-items:center;justify-content:space-between;font-size:11px}
.dli-l{display:flex;align-items:center;gap:5px;color:var(--tx2)}
.dldot{width:6px;height:6px;border-radius:50%;flex-shrink:0}

/* ===== BOTTOM GRID ===== */
.brow{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}

/* ===== TABLE ===== */
.twrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12px}
tr{border-bottom:1px solid var(--b1)}
tr:last-child{border-bottom:none}
th{padding:7px 10px;text-align:left;font-size:9.5px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.9px;white-space:nowrap}
td{padding:9px 10px;vertical-align:middle;white-space:nowrap}
.acel{display:flex;align-items:center;gap:7px}
.alog{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}
.an{font-weight:600;font-size:12px;line-height:1.2}
.as{font-size:10px;color:var(--tx3)}
.tbuy{padding:2px 7px;border-radius:14px;font-size:10px;font-weight:700;background:rgba(var(--grr),.12);color:var(--gr)}
.tsell{padding:2px 7px;border-radius:14px;font-size:10px;font-weight:700;background:rgba(var(--rdr),.12);color:var(--rd)}
.sfill{padding:2px 7px;border-radius:14px;font-size:10px;font-weight:600;background:rgba(var(--grr),.1);color:var(--gr)}
.pup{color:var(--gr);font-weight:600;font-variant-numeric:tabular-nums}
.pdn{color:var(--rd);font-weight:600;font-variant-numeric:tabular-nums}

/* mobile card table */
.card-table{display:none;flex-direction:column;gap:8px}
.ct-item{background:var(--sunk-2);border:1px solid var(--b1);border-radius:10px;padding:11px 13px}
.ct-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.ct-bot{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--tx3)}

/* ===== MARKET OVERVIEW ===== */
.mkt-tabs{display:flex;gap:2px;padding:3px;background:var(--sunk-3);border-radius:9px;margin-bottom:11px}
.mtab{flex:1;padding:5px;border-radius:7px;font-size:11px;font-weight:600;cursor:pointer;color:var(--tx3);transition:all .18s;text-align:center}
.mtab.on{background:var(--tint-2);color:var(--tx)}
.mrow{display:flex;align-items:center;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--b1)}
.mrow:last-child{border-bottom:none}
.ml{display:flex;align-items:center;gap:7px}
.mr{display:flex;align-items:center;gap:10px}
.mp{font-size:12px;font-weight:700;min-width:68px;text-align:right;font-variant-numeric:tabular-nums}
.spk{width:52px;height:22px}
.spk canvas{width:100%;height:100%;display:block}

/* ===== MOOD GAUGE ===== */
.mood-card{background:var(--card);border:1px solid var(--b1);border-radius:var(--r1);padding:16px;display:flex;flex-direction:column;align-items:center}
#moodGauge{width:180px;height:100px}
.mood-value-lbl{font-size:11px;font-weight:600;margin-top:4px;text-align:center}
.mood-sig{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--tx3);margin-top:6px}
.sig-bars{display:flex;gap:2px;align-items:flex-end;height:16px}
.sb-bar{width:4px;border-radius:2px;background:var(--ac);transition:height .3s ease}

/* ===== WATCHLIST ===== */
.wl-row{display:flex;align-items:center;padding:8px 0;border-bottom:1px solid var(--b1)}
.wl-row:last-child{border-bottom:none}
.wl-lg{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}
.wl-nf{flex:1;margin-left:8px}
.wl-s{font-size:12px;font-weight:600;font-family:var(--mono)}
.wl-n{font-size:10px;color:var(--tx3)}
.wl-r{text-align:right;margin-right:7px}
.wl-p{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.wl-c{font-size:10px;font-weight:600;margin-top:1px}
.wl-spk{width:48px;height:20px;border-radius:5px;cursor:pointer}
.wl-spk:hover{background:rgba(var(--acr),.12)}
.wl-spk canvas{width:100%;height:100%;display:block}
/* v1.3 editable watchlist: add / remove / drag-reorder */
.wl-row{gap:2px;border-radius:8px;padding:8px 4px;cursor:pointer;transition:background .15s,opacity .15s}
.wl-row:hover{background:var(--tint-1)}
.wl-row.editing{cursor:default}
.wl-row.drag{opacity:.4}
.wl-row.over{box-shadow:inset 0 2px 0 0 var(--ac)}
.wl-row.wl-gated{opacity:.45}
.wl-h{width:20px;min-height:28px;flex-shrink:0;border:none;background:none;color:var(--tx3);font-size:13px;line-height:1;cursor:grab;border-radius:6px;font-family:var(--fn)}
.wl-h:hover{color:var(--ac);background:rgba(var(--acr),.1)}
.wl-h:active{cursor:grabbing}
.wl-x{width:22px;height:22px;margin-left:6px;flex-shrink:0;border:1px solid var(--b1);background:var(--tint-1);color:var(--tx3);border-radius:6px;font-size:13px;line-height:1;cursor:pointer;font-family:var(--fn)}
.wl-x:hover{border-color:var(--rd);color:var(--rd);background:rgba(239,68,68,.12)}
.wl-add{display:flex;gap:5px;margin-bottom:9px}
.wl-add input{flex:1;min-width:0;background:var(--tint-2);border:1px solid var(--b2);border-radius:7px;color:var(--tx);font-family:var(--mono);font-size:11px;padding:7px 8px;outline:none;text-transform:uppercase}
.wl-add input:focus{border-color:var(--ac)}
.wl-add input::placeholder{color:var(--tx3);text-transform:none;font-family:var(--fn)}
.wl-add-b{border:1px solid rgba(var(--acr),.35);background:rgba(var(--acr),.14);color:var(--ac);font-size:11px;font-weight:700;padding:7px 11px;border-radius:7px;cursor:pointer;font-family:var(--fn)}
.wl-add-b:hover{background:rgba(var(--acr),.22)}
.wl-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px;font-size:10px;color:var(--tx3)}
.wl-reset{border:none;background:none;color:var(--tx3);font-size:10px;font-weight:600;cursor:pointer;font-family:var(--fn);text-decoration:underline}
.wl-reset:hover{color:var(--ac)}
.wl-empty{padding:14px 2px;font-size:11px;line-height:1.6;color:var(--tx3)}
.wl-hint{font-size:10px;color:var(--tx3);margin-bottom:8px;line-height:1.5}

/* ===== NEWS ===== */
.ni{display:flex;gap:9px;padding:9px 0;border-bottom:1px solid var(--b1);cursor:pointer;transition:opacity .15s}
.ni:hover{opacity:.72}
.ni:last-child{border-bottom:none}
.ni-th{width:42px;height:42px;border-radius:8px;background:var(--tint-2);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.ni-tt{font-size:11px;font-weight:600;line-height:1.4;margin-bottom:3px}
.ni-mt{font-size:10px;color:var(--tx3)}
.ntag{display:inline-block;padding:1px 6px;border-radius:7px;font-size:9px;font-weight:700;margin-right:3px}
.nc{background:rgba(var(--grr),.1);color:var(--gr)}
.nm{background:rgba(var(--acr),.1);color:var(--ac)}
.ne{background:rgba(var(--gol),.1);color:var(--gold)}

/* ===== MARKETS VIEW ===== */
.mfil{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:12px}
.mfbtn{padding:4px 12px;border-radius:14px;font-size:11px;font-weight:600;cursor:pointer;border:1px solid var(--b1);background:var(--tint-1);color:var(--tx3);transition:all .15s}
.mfbtn.on{background:rgba(var(--acr),.12);border-color:rgba(var(--acr),.3);color:var(--ac)}

/* ===== PORTFOLIO ===== */
.pm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px;margin-bottom:14px}
.pm{background:var(--card);border:1px solid var(--b1);border-radius:var(--r1);padding:13px}
.pm-lb{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.8px;font-weight:600;margin-bottom:3px}
.pm-vl{font-size:17px;font-weight:800;margin-bottom:1px;font-variant-numeric:tabular-nums}
.pm-sb{font-size:11px;color:var(--tx2)}
.diag{display:flex;align-items:flex-start;gap:8px;padding:9px 12px;border-radius:9px;background:var(--sunk-2);margin-bottom:5px;font-size:12px;border-left:3px solid}
.dok{border-color:var(--gr)}
.dwarn{border-color:var(--gold)}
.derr{border-color:var(--rd)}
.diag-tx .dt{font-weight:600;margin-bottom:1px}
.diag-tx .ds{color:var(--tx3);font-size:11px}

/* ===== CHAT ===== */
.chat-layout{display:flex;flex-direction:column;height:calc(100vh - 110px - 32px);height:calc(100dvh - 110px - 32px)}
.chat-msgs{flex:1;min-height:0;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.06) transparent}
.chat-msgs::-webkit-scrollbar{width:3px}
.chat-msgs::-webkit-scrollbar-thumb{background:var(--tint-2);border-radius:3px}
.cm{display:flex;gap:7px;max-width:680px;animation:vIn .2s ease-out}
.cm.user{align-self:flex-end;flex-direction:row-reverse}
.cmav{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;align-self:flex-end}
.cm.bot .cmav{background:linear-gradient(135deg,var(--ac),#8B5CF6);color:#fff}
.cm.user .cmav{background:linear-gradient(135deg,var(--gold),#FB923C);color:#fff}
.cmb{padding:9px 12px;border-radius:12px;font-size:13px;line-height:1.6;max-width:540px}
.cm.bot .cmb{background:var(--card);border:1px solid var(--b1)}
.cm.user .cmb{background:var(--ac);color:#fff}
/* Tahap 2 — Chat TIA: label sumber agen + tombol kembali */
.cm.bot .cm-src{font-size:9.5px;font-weight:700;letter-spacing:.3px;color:var(--tx3);text-transform:uppercase;margin-bottom:5px;display:flex;align-items:center;gap:4px}
.ob-back{display:none}
/* Tahap 2 — Chat TIA layar penuh di HP (tab bawah disembunyikan) */
@media(max-width:768px){
  body.chat-full .bottom-tab{display:none!important}
  body.chat-full .mc{padding:0!important;padding-bottom:env(safe-area-inset-bottom,0px)!important}
  body.chat-full .trade-grid{height:calc(100dvh - 84px - 34px);min-height:0}
  body.tk-hidden.chat-full .trade-grid{height:calc(100dvh - 52px - 34px)}
  body.chat-full .trade-grid .chat-layout{height:100%;border:0;border-radius:0}
  body.chat-full .ci-area{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))}
  .ob-back{display:flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;background:var(--tint-2);border:1px solid var(--b1);border-radius:9px;color:var(--tx);font-size:18px;cursor:pointer;-webkit-tap-highlight-color:transparent}
}
.ci-area{padding:10px 14px;border-top:1px solid var(--b1);flex-shrink:0}
.chips{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:8px}
.chip{padding:4px 10px;background:rgba(var(--acr),.08);border:1px solid rgba(var(--acr),.2);border-radius:14px;font-size:11px;font-weight:600;color:var(--ac);cursor:pointer;transition:all .15s;white-space:nowrap}
.chip:hover{background:rgba(var(--acr),.16)}
.ci-wrap{display:flex;align-items:flex-end;gap:7px;background:var(--tint-2);border:1px solid var(--b2);border-radius:11px;padding:7px 10px;transition:border-color .18s}
.ci-wrap:focus-within{border-color:var(--ac)}
#ci{flex:1;background:none;border:none;outline:none;color:var(--tx);font-family:var(--fn);font-size:13px;resize:none;max-height:88px;min-height:20px;line-height:1.5;padding:2px 0}
#ci::placeholder{color:var(--tx3)}
.cibtn{width:30px;height:30px;border-radius:8px;border:1px solid var(--b1);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;flex-shrink:0;transition:all .15s;background:var(--tint-2);color:var(--tx3)}
.cibtn:hover{background:rgba(var(--acr),.12);border-color:rgba(var(--acr),.3);color:var(--ac)}
.cisend{background:var(--ac);border-color:var(--ac);color:#fff}
.cisend:hover{filter:brightness(1.12)}
.dots{display:flex;gap:4px;align-items:center}
.d{width:6px;height:6px;background:var(--tx3);border-radius:50%;animation:dot .7s infinite}
.d:nth-child(2){animation-delay:.14s}
.d:nth-child(3){animation-delay:.28s}
@keyframes dot{0%,80%,100%{transform:translateY(0)}40%{transform:translateY(-5px)}}
.sig-card{background:var(--sunk-3);border:1px solid var(--b1);border-radius:11px;padding:12px;margin-top:6px;max-width:380px}
.sc-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.sc-asset{font-size:14px;font-weight:800;font-family:var(--mono)}
.sc-dir{padding:3px 10px;border-radius:14px;font-size:10px;font-weight:700;letter-spacing:.5px}
.slong{background:rgba(var(--grr),.12);border:1px solid var(--gr);color:var(--gr)}
.sshort{background:rgba(var(--rdr),.12);border:1px solid var(--rd);color:var(--rd)}
.sc-g{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px}
.sc-f{background:var(--tint-1);border-radius:7px;padding:7px 9px}
.sc-f label{font-size:9px;color:var(--tx3);text-transform:uppercase;letter-spacing:.8px;display:block;margin-bottom:2px;font-weight:600}
.sc-f span{font-size:12px;font-weight:700;font-family:var(--mono)}
.ef{color:var(--tx)}.tf{color:var(--gr)}.sf{color:var(--rd)}
.sc-rsn{font-size:11px;color:var(--tx2);padding:7px 9px;background:rgba(var(--acr),.06);border-radius:7px;border:1px solid rgba(var(--acr),.12)}
.sc-conf{margin-top:8px}
.conf-bar{height:3px;background:var(--tint-2);border-radius:2px;overflow:hidden;margin-bottom:4px}
.conf-fill{height:100%;background:linear-gradient(90deg,var(--ac),var(--gr));border-radius:2px;transition:width 1s ease}
.conf-lbl{font-size:10px;color:var(--tx3)}

/* ===== WHALE ===== */
.wh-alert{display:flex;align-items:center;gap:8px;padding:9px 12px;background:rgba(var(--rdr),.06);border:1px solid rgba(var(--rdr),.18);border-radius:9px;font-size:12px;color:var(--tx2);margin-bottom:12px}
.wh-row{display:grid;grid-template-columns:52px 72px 58px 1fr 96px;align-items:center;gap:6px;padding:8px 11px;border-radius:8px;background:var(--sunk-2);margin-bottom:4px;font-size:11px;transition:background .15s}
.wh-row:hover{background:var(--tint-1)}
.wh-t{color:var(--tx3);font-family:var(--mono);font-size:10px}
.wh-a{padding:2px 7px;border-radius:8px;font-size:9px;font-weight:700;text-align:center}
.wb{background:rgba(var(--grr),.1);color:var(--gr)}
.ws{background:rgba(var(--rdr),.1);color:var(--rd)}
.wm{background:rgba(var(--gol),.1);color:var(--gold)}
.wh-sym{font-weight:700;font-family:var(--mono)}
.wh-addr{font-family:var(--mono);color:var(--tx3);font-size:9.5px;overflow:hidden;text-overflow:ellipsis}

/* ===== LEADERBOARD ===== */
.lb-item{display:grid;grid-template-columns:32px 1fr auto auto;align-items:center;gap:9px;padding:10px 12px;border-radius:9px;background:var(--sunk-2);margin-bottom:4px;cursor:pointer;transition:background .15s}
.lb-item:hover{background:var(--tint-2)}
.lb-r{font-size:13px;font-weight:800;text-align:center}
.r1{color:var(--gold)}.r2{color:#C0C0C0}.r3{color:#CD7F32}.rx{color:var(--tx3)}
.lb-n{font-size:12px;font-weight:600}
.lb-s{font-size:10px;color:var(--tx3)}
.lb-ret{font-size:13px;font-weight:800;color:var(--gr);text-align:right;font-variant-numeric:tabular-nums}
.lbadge{padding:2px 8px;border-radius:12px;font-size:9px;font-weight:700}
.le{background:rgba(var(--gol),.1);color:var(--gold)}
.lp{background:rgba(var(--acr),.1);color:var(--ac)}

/* ===== NEWS FULL ===== */
.nf-item{background:var(--card);border:1px solid var(--b1);border-radius:var(--r1);padding:14px;margin-bottom:10px;cursor:pointer;transition:all .18s;display:flex;gap:12px}
.nf-item:hover{border-color:var(--b2);transform:translateY(-1px)}
.nf-th{width:68px;height:68px;border-radius:9px;background:var(--tint-2);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:24px}
.nf-tt{font-size:13px;font-weight:700;margin-bottom:4px;line-height:1.4}
.nf-ex{font-size:11.5px;color:var(--tx2);line-height:1.5;margin-bottom:5px}
.nf-mt{font-size:10px;color:var(--tx3)}

/* ===== MODALS ===== */
.ov{position:fixed;inset:0;top:32px;background:var(--scrim);backdrop-filter:blur(12px);z-index:500;display:none;align-items:center;justify-content:center;padding:14px;overscroll-behavior:contain}
.ov.show{display:flex}
.modal{background:rgba(17,17,28,.98);backdrop-filter:blur(24px);border:1px solid var(--b2);border-radius:var(--r2);padding:22px;max-height:90vh;overflow-y:auto;animation:vIn .22s ease-out;position:relative;width:100%;scrollbar-width:none}
.modal::-webkit-scrollbar{display:none}
.modal-x{position:absolute;top:13px;right:13px;width:27px;height:27px;border-radius:7px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tx2);font-size:15px;background:var(--tint-2);border:1px solid var(--b1);transition:all .15s}
.modal-x:hover{background:var(--tint-3);color:var(--tx)}
.modal-t{font-size:15px;font-weight:800;margin-bottom:3px}
.modal-s{font-size:12px;color:var(--tx2);margin-bottom:16px}

/* SETTINGS */
.smod{display:flex;gap:0;height:460px}
.sm-nav{width:170px;background:var(--sunk-2);border-right:1px solid var(--b1);padding:8px 6px;flex-shrink:0;overflow-y:auto;scrollbar-width:none}
.sm-nav::-webkit-scrollbar{display:none}
.sm-ni{display:flex;align-items:center;gap:7px;padding:7px 9px;border-radius:8px;cursor:pointer;font-size:12px;color:var(--tx3);transition:all .15s;margin-bottom:1px}
.sm-ni:hover{background:var(--tint-2);color:var(--tx)}
.sm-ni.on{background:rgba(var(--acr),.1);color:var(--ac);font-weight:600}
.sm-body{flex:1;overflow-y:auto;padding:16px 20px;scrollbar-width:none}
.sm-body::-webkit-scrollbar{display:none}
.ss-t{font-size:9.5px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--tx3);margin-bottom:10px;padding-bottom:7px;border-bottom:1px solid var(--b1)}
.srow2{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--b1)}
.srow2:last-child{border-bottom:none}
.srl .sl{font-size:12px;font-weight:500}
.srl .ss,.ss{font-size:10px;color:var(--tx3);margin-top:1px}  /* [P2-6] .ss di luar .srl (mis. catatan Bridge URL) sebelumnya tanpa gaya -> tampil raksasa */
.tog{width:36px;height:20px;background:var(--tint-3);border-radius:10px;cursor:pointer;position:relative;transition:background .18s;flex-shrink:0}
.tog.on{background:var(--ac)}
.tog::after{content:'';position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .18s;box-shadow:0 1px 3px rgba(0,0,0,.4)}
.tog.on::after{transform:translateX(16px)}
.ltog{display:flex;border-radius:7px;overflow:hidden;border:1px solid var(--b1);background:var(--sunk-1)}
.lt{padding:5px 12px;font-size:11px;font-weight:600;cursor:pointer;color:var(--tx3);transition:all .18s}
.lt.on{background:var(--ac);color:#fff}
.exr{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--b1)}
.exr:last-child{border-bottom:none}
.ex-l{display:flex;align-items:center;gap:8px}
.ex-ic{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff}
.ex-n{font-size:12px;font-weight:600}
.ex-s{font-size:10px;margin-top:1px}
.exbtn{padding:3px 9px;border-radius:7px;font-size:10px;font-weight:700;cursor:pointer;border:none;transition:all .15s;font-family:var(--fn)}
.excon{background:rgba(var(--grr),.1);color:var(--gr)}
.exdis{background:rgba(var(--acr),.1);color:var(--ac)}

/* TIERS */
.tier-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tc{padding:16px;border-radius:13px;border:1px solid var(--b1);background:var(--tint-1);cursor:pointer;transition:all .18s;position:relative;overflow:hidden}
.tc:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(0,0,0,.4)}
.tc.cur{border-color:var(--gold);background:rgba(var(--gol),.06)}
.tc.cur::after{content:'SEAT';position:absolute;top:10px;right:10px;font-size:8px;font-weight:700;letter-spacing:1.5px;color:var(--gold)}
.tc.elite{border-color:rgba(var(--gol),.45);background:linear-gradient(180deg,rgba(var(--gol),.10),var(--tint-1))}
.tc.elite::before{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,var(--tint-3) 50%,transparent 60%);transform:translateX(-120%);animation:shimmer 3.6s ease-in-out infinite;pointer-events:none}
@keyframes shimmer{0%{transform:translateX(-120%)}60%,100%{transform:translateX(120%)}}
@media (prefers-reduced-motion:reduce){.tc.elite::before{animation:none}}
.tier-note{margin-top:12px;font-size:11px;color:var(--tx3);text-align:center;font-variant-numeric:tabular-nums}
.tier-note b{color:var(--gold);font-weight:700}
.play-ic{cursor:pointer;transition:transform .15s,background .15s}
.play-ic:hover{transform:scale(1.08);background:rgba(var(--grr),.22)}
.sc{cursor:pointer}
.sc:hover{border-color:var(--b2)}
.desk-chip{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--tx2);font-family:var(--mono)}
.sim-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:6px;border:1px solid rgba(var(--gol),.35);background:rgba(var(--gol),.08);color:var(--gold);font-size:9px;font-weight:800;letter-spacing:.8px;text-transform:uppercase}
.sim-pill i{width:6px;height:6px;border-radius:50%;background:var(--gold);display:inline-block;box-shadow:0 0 0 3px rgba(var(--gol),.18)}

.wh-row{grid-template-columns:48px 64px 44px 1fr 82px 118px !important}
.wh-hd{display:grid;grid-template-columns:48px 64px 44px 1fr 82px 118px;gap:6px;padding:6px 11px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tx3)}
.wh-act{display:flex;gap:3px;justify-content:flex-end}
.wbtn{border:1px solid var(--b1);background:var(--tint-2);color:var(--tx2);font-size:9px;font-weight:700;padding:3px 6px;border-radius:6px;cursor:pointer;font-family:var(--fn)}
.wbtn:hover{border-color:var(--ac);color:var(--ac)}
.wbtn.cp{border-color:rgba(var(--gol),.3);color:var(--gold)}
.lock-card{position:relative}
.lock-card.locked{filter:blur(2.5px);pointer-events:none;user-select:none}
.lock-banner{display:none;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid rgba(var(--gol),.28);background:rgba(var(--gol),.08);margin-bottom:10px}
.lock-banner.show{display:flex}
.lock-banner b{font-size:12px}
.lock-banner span{font-size:11px;color:var(--tx2)}
.replay-box{background:rgba(17,17,28,.98);border:1px solid var(--b2);border-radius:14px;padding:16px;width:min(420px,100%);position:relative}
.replay-meta{display:flex;justify-content:space-between;align-items:flex-end;margin:8px 0 10px;font-family:var(--mono);font-size:12px}
.plan-sw{display:flex;gap:6px;margin-top:10px}
.plan-sw button{flex:1;padding:7px;border-radius:8px;border:1px solid var(--b1);background:var(--tint-1);color:var(--tx2);font-size:11px;font-weight:700;cursor:pointer;font-family:var(--fn)}
.plan-sw button.on{border-color:var(--gold);color:var(--gold);background:rgba(var(--gol),.1)}
.key-inp{width:100%;padding:8px 10px;border-radius:8px;border:1px solid var(--b1);background:var(--sunk-3);color:var(--tx);font-family:var(--mono);font-size:11px;outline:none}
.key-inp:focus{border-color:var(--ac)}
.tc-nm{font-size:12px;font-weight:700;margin-bottom:2px}
.tc-pr{font-size:19px;font-weight:800;margin-bottom:10px}
.tc-pr small{font-size:11px;font-weight:400;color:var(--tx2)}
.tc-fl{display:flex;flex-direction:column;gap:4px}
.tf{font-size:11px;color:var(--tx2);display:flex;align-items:center;gap:5px}
.tfoff{color:var(--tx3)}

/* DEPOSIT/WD */
.asel{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-bottom:12px}
.ao{padding:8px 4px;border-radius:9px;border:1px solid var(--b1);background:var(--tint-1);cursor:pointer;text-align:center;transition:all .15s}
.ao.on{border-color:var(--ac);background:rgba(var(--acr),.1)}
.ao .asy{font-size:12px;font-weight:700}
.ao .abl{font-size:9px;color:var(--tx3);margin-top:1px}
.nsel{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.no{display:flex;align-items:center;justify-content:space-between;padding:8px 11px;border-radius:9px;border:1px solid var(--b1);cursor:pointer;font-size:12px;transition:all .15s}
.no.on{border-color:var(--ac);background:rgba(var(--acr),.08)}
.no .nn{font-weight:600}
.no .nf{font-size:10px;color:var(--tx3)}
.no .nt{font-size:10px;color:var(--gr)}
.qrbox{background:var(--sunk-3);border:1px solid var(--b1);border-radius:11px;padding:13px;margin-bottom:11px;display:flex;flex-direction:column;align-items:center;gap:9px}
.addrbox{display:flex;align-items:center;gap:6px;background:var(--sunk-2);border:1px solid var(--b1);border-radius:8px;padding:7px 10px;width:100%;font-family:var(--mono);font-size:11px;color:var(--tx2)}
.addrval{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.copybtn{flex-shrink:0;padding:3px 8px;border-radius:6px;background:rgba(var(--acr),.1);color:var(--ac);font-size:10px;font-weight:700;cursor:pointer;border:1px solid rgba(var(--acr),.2);transition:all .15s}
.copybtn:hover{background:var(--ac);color:#fff}
.warn{display:flex;gap:7px;padding:9px 11px;border-radius:8px;font-size:11px;line-height:1.5;margin-bottom:11px}
.wdang{background:rgba(var(--rdr),.06);border:1px solid rgba(var(--rdr),.18);color:rgba(239,68,68,.9)}
.winfo{background:rgba(var(--gol),.06);border:1px solid rgba(var(--gol),.18);color:rgba(245,158,11,.9)}
.dep-info .dr{display:flex;justify-content:space-between;font-size:12px;padding:5px 0;border-bottom:1px solid var(--b1)}
.dep-info .dr:last-child{border-bottom:none}
.dep-info .dk{color:var(--tx3)}
.dep-info .dv{font-weight:600;font-variant-numeric:tabular-nums}
.inpwrap{display:flex;flex-direction:column;gap:4px;margin-bottom:11px}
.inplbl{font-size:10px;color:var(--tx3);font-weight:600;text-transform:uppercase;letter-spacing:.8px}
.inpf{display:flex;align-items:center;background:var(--sunk-2);border:1px solid var(--b1);border-radius:9px;padding:8px 12px;transition:border-color .15s}
.inpf:focus-within{border-color:var(--ac)}
.inpf input{flex:1;background:none;border:none;outline:none;color:var(--tx);font-family:var(--fn);font-size:13px;min-width:0;font-variant-numeric:tabular-nums}
.inpf input::placeholder{color:var(--tx3)}
.maxbtn{padding:3px 8px;border-radius:6px;background:rgba(var(--gol),.1);color:var(--gold);font-size:10px;font-weight:700;cursor:pointer;border:1px solid rgba(var(--gol),.2);margin-left:6px;flex-shrink:0}
.maxbtn:hover{background:var(--gold);color:#000}
.inpsuf{font-size:12px;font-weight:600;color:var(--tx3);margin-left:6px;flex-shrink:0;font-family:var(--mono)}
.pastebtn{padding:3px 8px;border-radius:6px;background:rgba(var(--acr),.1);color:var(--ac);font-size:10px;font-weight:700;cursor:pointer;border:1px solid rgba(var(--acr),.2);margin-left:6px;flex-shrink:0}
.feesum{background:var(--sunk-2);border:1px solid var(--b1);border-radius:9px;padding:10px 13px;margin-bottom:13px}
.fsr{display:flex;justify-content:space-between;font-size:12px;padding:3px 0}
.fsk{color:var(--tx3)}
.fsv{font-weight:600;font-variant-numeric:tabular-nums}
.fstotal{margin-top:5px;padding-top:5px;border-top:1px solid var(--b1)}
.fstotal .fsk{font-weight:700;color:var(--tx)}
.fstotal .fsv{color:var(--gr);font-size:13px;font-weight:800}
.mbtn{width:100%;padding:11px;border-radius:10px;border:none;font-family:var(--fn);font-size:13px;font-weight:700;cursor:pointer;transition:filter .15s;letter-spacing:.2px}
.mbtn:hover{filter:brightness(1.12)}
.mbprimary{background:var(--ac);color:#fff}
.mbsuccess{background:var(--gr);color:#fff}
.mbghost{background:transparent;color:var(--tx3);border:1px solid var(--b1)}
.mbghost:hover{background:var(--tint-2);filter:none}
.otp-row{display:flex;gap:7px;justify-content:center;margin-bottom:14px}
.otp{width:42px;height:46px;border-radius:9px;border:1px solid var(--b2);background:var(--sunk-3);color:var(--tx);font-size:19px;font-weight:700;text-align:center;font-family:var(--mono);outline:none;transition:border-color .15s}
.otp:focus{border-color:var(--ac)}

/* CMD PALETTE */
.cmd-ov{position:fixed;inset:0;top:32px;background:var(--scrim);backdrop-filter:blur(6px);z-index:600;display:none;align-items:flex-start;justify-content:center;padding-top:10vh}
.cmd-ov.show{display:flex}
.cmd-box{background:rgba(15,16,25,.98);border:1px solid var(--b2);border-radius:14px;width:500px;max-width:95vw;overflow:hidden;box-shadow:0 20px 70px rgba(0,0,0,.8);animation:vIn .18s ease-out}
.cmd-in{display:flex;align-items:center;gap:9px;padding:11px 15px;border-bottom:1px solid var(--b1)}
.cmd-in input{background:none;border:none;outline:none;color:var(--tx);font-size:13.5px;flex:1;font-family:var(--fn)}
.cmd-in input::placeholder{color:var(--tx3)}
.cmd-list{padding:5px;max-height:240px;overflow-y:auto;scrollbar-width:none}
.cmd-list::-webkit-scrollbar{display:none}
.cmd-item{display:flex;align-items:center;gap:8px;padding:8px 9px;border-radius:7px;cursor:pointer;transition:background .1s}
.cmd-item:hover{background:var(--tint-2)}
.cmd-ic{width:26px;height:26px;border-radius:7px;background:var(--tint-2);display:flex;align-items:center;justify-content:center;font-size:13px}
.cmd-foot{padding:8px 15px;border-top:1px solid var(--b1);display:flex;gap:12px}
.cmd-h{font-size:10px;color:var(--tx3);display:flex;align-items:center;gap:4px}
.hk{background:var(--tint-3);border:1px solid var(--b1);border-radius:3px;padding:1px 5px;font-size:9px;font-family:var(--mono)}

/* TOAST */
#tw{position:fixed;top:88px;right:12px;z-index:1000;display:flex;flex-direction:column;gap:6px;pointer-events:none;max-width:310px;width:calc(100vw - 24px)}
.toast{background:rgba(15,16,25,.97);border:1px solid var(--b2);border-radius:11px;padding:10px 12px;box-shadow:0 8px 32px rgba(0,0,0,.6);pointer-events:all;animation:tIn .28s ease-out;display:flex;align-items:flex-start;gap:7px;position:relative;overflow:hidden;backdrop-filter:blur(12px)}
@keyframes tIn{from{opacity:0;transform:translateX(110%)}to{opacity:1;transform:translateX(0)}}
.toast.out{animation:tOut .22s ease-in forwards}
@keyframes tOut{to{opacity:0;transform:translateX(110%)}}
.t-ic{font-size:14px;flex-shrink:0;margin-top:1px}
.t-bd{flex:1;min-width:0}
.t-t{font-size:12px;font-weight:700;margin-bottom:1px}
.t-m{font-size:11px;color:var(--tx2);line-height:1.4;word-wrap:break-word}
.t-x{font-size:12px;color:var(--tx3);cursor:pointer;padding:2px;flex-shrink:0}
.t-x:hover{color:var(--tx)}
.t-p{position:absolute;bottom:0;left:0;height:2px;animation:tP linear forwards}
@keyframes tP{from{width:100%}to{width:0}}
.toast.success{border-color:rgba(var(--grr),.28)}.toast.success .t-p{background:var(--gr)}
.toast.error{border-color:rgba(var(--rdr),.28)}.toast.error .t-p{background:var(--rd)}
.toast.warning{border-color:rgba(var(--gol),.28)}.toast.warning .t-p{background:var(--gold)}
.toast.info{border-color:rgba(var(--acr),.28)}.toast.info .t-p{background:var(--ac)}
.toast.pending{border-color:rgba(var(--gol),.18)}.toast.pending .t-p{background:var(--gold)}

/* RESPONSIVE */
/* ===== PREDICTION FLOW ===== */
.pf-tag{font-size:9px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:#A78BFA;background:rgba(139,92,246,.1);border:1px solid rgba(139,92,246,.25);padding:2px 7px;border-radius:6px;margin-left:6px;white-space:nowrap}
.pf-hd{display:grid;grid-template-columns:48px 62px 1fr 118px 82px 118px;gap:6px;padding:6px 11px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tx3)}
.pf-row{display:grid;grid-template-columns:48px 62px 1fr 118px 82px 118px;align-items:center;gap:6px;padding:8px 11px;border-radius:8px;background:var(--sunk-2);margin-bottom:4px;font-size:11px;transition:background .15s}
.pf-row:hover{background:rgba(139,92,246,.05)}
.pf-side{padding:2px 7px;border-radius:8px;font-size:9px;font-weight:700;text-align:center}
.pfy{background:rgba(139,92,246,.14);color:#C4B5FD;border:1px solid rgba(139,92,246,.35)}
.pfn{background:rgba(var(--rdr),.12);color:#FCA5A5;border:1px solid rgba(var(--rdr),.3)}
.pf-mkt{font-size:11.5px;font-weight:600;line-height:1.35}
.pf-odds{text-align:right;font-family:var(--mono);font-size:10.5px}
.pf-odds b{display:block;font-size:9.5px;font-weight:700}
.pf-usd{text-align:right;font-weight:700;font-size:12px;font-variant-numeric:tabular-nums}
.pf-note{margin-top:8px;font-size:10.5px;color:var(--tx3);line-height:1.5;border-top:1px dashed var(--b1);padding-top:8px}

/* ===== OFFICER BAR + COMMAND LINE ===== */
.trade-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;height:calc(100vh - 110px - 32px);height:calc(100dvh - 110px - 32px);min-height:0}
.trade-grid .chat-layout{height:100%;min-height:0;background:var(--card);border:1px solid var(--b1);border-radius:var(--r2);overflow:hidden}
.officer-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--b1);background:rgba(139,92,246,.05);flex-shrink:0}
.ob-ic{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,var(--ac),#8B5CF6);display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.ob-t{font-size:12.5px;font-weight:800}
.ob-s{font-size:10.5px;color:var(--tx2);line-height:1.4}
.ob-pill{font-size:8.5px;font-weight:800;letter-spacing:1px;padding:4px 8px;border-radius:6px;background:rgba(var(--gol),.1);border:1px solid rgba(var(--gol),.3);color:var(--gold);white-space:nowrap}
.cmdbar{display:flex;align-items:center;gap:8px;background:var(--sunk-3);border:1px solid var(--b2);border-radius:10px;padding:8px 11px;margin-bottom:8px;transition:border-color .18s}
.cmdbar:focus-within{border-color:var(--gold)}
.cmd-px{font-family:var(--mono);font-weight:700;color:var(--gold);font-size:13px}
.cmdbar input{flex:1;background:none;border:none;outline:none;color:var(--tx);font-family:var(--mono);font-size:12px;letter-spacing:.2px}
.cmdbar input::placeholder{color:var(--tx3)}
.cmd-hint{font-size:9px;color:var(--tx3);font-family:var(--mono);white-space:nowrap}
.sc-route{margin-top:8px;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;background:rgba(var(--gol),.08);border:1px solid rgba(var(--gol),.3);color:var(--gold);font-size:11px;font-weight:700;cursor:pointer;transition:background .15s}
.sc-route:hover{background:rgba(var(--gol),.15)}
.sc-route span{font-size:9px;font-weight:600;color:var(--tx3)}

/* ===== EXECUTION RAIL ===== */
.xrail{display:flex;flex-direction:column;gap:10px;background:var(--card);border:1px solid var(--b1);border-radius:var(--r2);padding:12px;min-height:0;overflow-y:auto;scrollbar-width:thin}
.xr-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.xr-t{font-size:13px;font-weight:800}
.xr-s{font-size:10px;color:var(--tx3);line-height:1.4;margin-top:2px}
.xr-state{font-size:9px;font-weight:800;letter-spacing:1px;padding:3px 8px;border-radius:6px;white-space:nowrap}
.xr-state.armed{background:rgba(var(--grr),.12);color:var(--gr);border:1px solid rgba(var(--grr),.35)}
.xr-state.killed{background:rgba(var(--rdr),.14);color:var(--rd);border:1px solid rgba(var(--rdr),.4);animation:blink 1.2s ease infinite}
@keyframes blink{50%{opacity:.55}}
.xr-corr{background:var(--sunk-2);border:1px solid var(--b1);border-radius:10px;padding:10px}
.xr-ct{display:flex;justify-content:space-between;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tx2);margin-bottom:6px}
.xr-cv{font-family:var(--mono);color:var(--gold)}
.xr-cbar{height:5px;background:var(--tint-3);border-radius:3px;overflow:hidden;margin-bottom:7px}
.xr-cfill{height:100%;border-radius:3px;background:var(--rd);transition:width .4s ease}
.xr-cn{font-size:10px;color:var(--tx3);line-height:1.5}
.xr-kill{padding:11px;border-radius:10px;border:1px solid rgba(var(--rdr),.45);background:rgba(var(--rdr),.12);color:#FCA5A5;font-size:11.5px;font-weight:800;letter-spacing:.4px;cursor:pointer;font-family:var(--fn);transition:all .15s;flex-shrink:0}
.xr-kill:hover{background:rgba(var(--rdr),.22);border-color:var(--rd)}
.xr-kill.killed{background:rgba(var(--grr),.1);border-color:rgba(var(--grr),.4);color:var(--gr)}
.xr-list{display:flex;flex-direction:column;gap:8px;min-height:40px}
.xr-empty{font-size:10.5px;color:var(--tx3);text-align:center;padding:14px 8px;border:1px dashed var(--b1);border-radius:9px;line-height:1.5}
.xt{background:var(--sunk-2);border:1px solid var(--b1);border-radius:10px;padding:9px 10px;font-size:11px}
.xt.arming{border-color:rgba(var(--gol),.5)}
.xt.blocked{border-color:rgba(var(--rdr),.4)}
.xt.killed{opacity:.55}
.xt-top{display:flex;align-items:center;gap:7px;margin-bottom:3px}
.xt-side{padding:1px 7px;border-radius:6px;font-size:9px;font-weight:800;letter-spacing:.5px}
.xt-side.xl{background:rgba(var(--grr),.14);color:var(--gr)}
.xt-side.xs{background:rgba(var(--rdr),.14);color:var(--rd)}
.xt-top b{font-family:var(--mono);font-size:12px}
.xt-size{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--tx2)}
.xt-meta{font-size:9.5px;color:var(--tx3);font-family:var(--mono);margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.xt-st{font-size:10px;font-weight:700;margin-bottom:6px}
.xt-st.staged{color:var(--tx2)}
.xt-st.arming{color:var(--gold)}
.xt-st.filled{color:var(--gr)}
.xt-st.blocked{color:var(--rd)}
.xt-st.killed{color:var(--tx3)}
.xt-arm{width:100%;padding:6px;border-radius:7px;border:1px solid rgba(var(--acr),.4);background:rgba(var(--acr),.1);color:var(--ac);font-size:10.5px;font-weight:700;cursor:pointer;font-family:var(--fn)}
.xt-arm:hover{background:rgba(var(--acr),.2)}
.xt-cancel{width:100%;padding:6px;border-radius:7px;border:1px solid rgba(var(--rdr),.4);background:rgba(var(--rdr),.08);color:#FCA5A5;font-size:10.5px;font-weight:700;cursor:pointer;font-family:var(--fn)}
.xt-bar{height:4px;background:var(--tint-3);border-radius:2px;overflow:hidden;margin-bottom:6px}
.xt-fill{height:100%;background:linear-gradient(90deg,var(--gold),var(--rd));animation:xtfill 3s linear forwards}
@keyframes xtfill{from{width:0}to{width:100%}}
.xr-foot{font-size:9.5px;color:var(--tx3);text-align:center;line-height:1.5;border-top:1px dashed var(--b1);padding-top:9px;margin-top:auto}
.xr-foot b{color:var(--gold);font-family:var(--mono)}

/* P1-4: batas right-panel diselaraskan ke blueprint (1180px), bukan 1280px */
@media(max-width:1180px){.rp{display:none}.rp-toggle{display:none}}
@media(max-width:1060px){
  .chart-row{grid-template-columns:1fr}
  .trade-grid{grid-template-columns:1fr;height:auto}
  .trade-grid .chat-layout{height:62vh}
  .donut-card{display:none}
  .hamburger{display:flex!important}
  .sidebar{position:fixed;top:32px;left:0;height:calc(100% - 32px);height:calc(100dvh - 32px);transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0)}
  .sb-user{padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}
}
@media(max-width:768px){
  .srow{grid-template-columns:repeat(2,1fr)}
  .brow{grid-template-columns:1fr}
  /* Hero jadi grid 2x2 (bukan 1 kolom penuh) supaya tidak terlalu memanjang di HP */
  .hero{padding:16px}
  .hero-grid{grid-template-columns:repeat(2,1fr);gap:12px 14px}
  .hst{padding:0}
  .hst+.hst{border-left:none;border-top:none;padding-left:0;padding-top:0;margin-top:0}
  .hst:nth-child(odd){padding-right:14px;border-right:1px solid var(--b1)}
  .hst:nth-child(even){padding-left:14px}
  .hst:nth-child(3),.hst:nth-child(4){padding-top:12px;border-top:1px solid var(--b1);margin-top:12px}
  .hsv{font-size:20px}
  .pm-grid{grid-template-columns:repeat(2,1fr)}
  .tier-grid{grid-template-columns:1fr}
  .smod{flex-direction:column;height:auto}
  .sm-nav{width:100%;border-right:none;border-bottom:1px solid var(--b1)}
  .mc{padding:12px}
  .top-hdr{padding:0 12px;gap:7px}
  .thm-row{display:none}
  #w3btn{padding:0 4px!important;height:38px!important;min-width:46px;font-size:13px!important;display:inline-flex!important;flex-direction:column;align-items:center;justify-content:center;gap:2px;line-height:1!important}
  #w3btn .w3t{display:block;font-size:8px;font-weight:800;letter-spacing:.2px;line-height:1}
  .hdr-r{gap:6px}
  /* Deposit + Withdraw jadi tombol ikon ringkas, keduanya tetap tampil */
  .hdr-cta{padding:0 2px;width:46px;height:38px;justify-content:center;flex-direction:column;gap:2px;font-size:16px;border-radius:9px;flex-shrink:0}
  .cta-tx{display:block;font-size:8px;font-weight:800;letter-spacing:.2px;line-height:1}
  .cta-ic{display:inline;font-size:13px;line-height:1;font-weight:800}
  .hbt{width:32px;height:32px;font-size:14px}
  /* P0-4: header HP maksimum 4 elemen -> ☰ | logo | ● STATUS | 🔔
     ⚡ Command Palette, ⭐ Langganan, dan pip BRIDGE pindah ke Menu HP / Cmd-K */
  .hdr-hide-mobile{display:none!important}
  .hamburger{width:38px;height:38px;align-items:center;justify-content:center}
  .nitem{min-height:42px;padding:10px 12px;font-size:13px}
  .srch{display:none}
  .hdr-time-wrap{display:none}
  .hero-tag{display:none}
  .twrap{display:none}
  .card-table{display:flex}
  /* ==== MARKET ROWS: rapi & tidak terpotong di layar HP ==== */
  .card{padding:13px}
  /* ==== CARD HEADERS: judul + tag turun baris di HP, tidak terpotong ==== */
  .ch{flex-wrap:wrap;row-gap:6px}
  .ct{flex:1 1 auto;min-width:0;flex-wrap:wrap;row-gap:4px}
  .ct .pf-tag{white-space:normal;font-size:8.5px;letter-spacing:.4px;margin-left:0}
  .ch .live-pip{flex-shrink:0}
  .mrow{gap:8px;min-width:0}
  #mktFullBody{scrollbar-width:none}
  #mktFullBody::-webkit-scrollbar{display:none}
  .ml{min-width:0;flex:1}
  .ml>div:last-child{min-width:0;overflow:hidden}
  .an,.as{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
  .mr{gap:8px;flex-shrink:0}
  .mp{min-width:auto}
  .mkt-mc{display:none!important}
  /* HP: sparkline disembunyikan, market cap pindah ke bawah nama aset supaya harga & % selalu terbaca penuh tanpa geser */
  .mkt-spk{display:none}
  .as-mc{display:block!important;font-variant-numeric:tabular-nums}
  /* Kartu dirapikan: padding ganda diperkecil di HP (Buku Besar, Markets, dsb) */
  .card{padding:12px 13px}
  .s1-ledger th,.s1-ledger td{padding:8px 9px}
  .s1-ledger>div[style*="padding:10px 0 6px"]{padding:8px 0 5px!important}
  .wh-row{grid-template-columns:44px 62px 1fr}
  .wh-addr{display:none}
  /* Header tape selaraskan dgn kolom yg benar2 tampil di HP */
  .wh-hd span:nth-child(4),.wh-hd span:nth-child(6){display:none}
  .pf-row,.pf-hd{grid-template-columns:44px 56px 1fr 118px}
  .pf-odds,.pf-usd{display:none}
  .pf-hd span:nth-child(4),.pf-hd span:nth-child(5){display:none}
  .cmd-hint{display:none}
  .cmdbar input{font-size:11px}
  /* HP: baris PERINTAH & search header disembunyikan (search lebur ke Cmd+K / ikon ⚡) */
  .cmdbar.cmd-order{display:none}
  .top-hdr .srch{display:none}
  /* ==== BOTTOM TAB BAR: 5 slot, TIA menonjol di tengah ==== */
  /* P0-1: +28px ruang untuk baris status di atas bottom-tab */
  .mc{padding-bottom:calc(124px + env(safe-area-inset-bottom,0px))}
  .bottom-tab{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:120;background:var(--panel);backdrop-filter:blur(20px);border-top:1px solid var(--b1);padding:5px 4px calc(4px + env(safe-area-inset-bottom,0px));align-items:flex-end;justify-content:space-between;gap:0}
  .btab-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:none;border:none;color:var(--tx3);font-size:9.5px;font-weight:700;letter-spacing:.1px;padding:6px 2px 4px;border-radius:10px;cursor:pointer;-webkit-tap-highlight-color:transparent}
  .btab-item svg{width:20px;height:20px;flex-shrink:0}
  .btab-item.on{color:var(--ac)}
  .btab-tia{position:relative;top:-12px;color:var(--tx2)}
  .btab-tia-ic{width:46px;height:46px;border-radius:15px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--ac),#8B5CF6);color:#fff;box-shadow:0 6px 16px rgba(var(--acr),.4);margin-bottom:2px;transition:box-shadow .15s}
  .btab-tia-ic svg{width:23px;height:23px}
  .btab-tia.on{color:var(--ac)}
  .btab-tia.on .btab-tia-ic{box-shadow:0 6px 20px rgba(var(--acr),.65)}
}
@media(max-width:480px){
  .live-pip{display:none}
  /* P0 (Tahap 1): chip status SIM/LIVE + Bridge MT5 wajib tetap terlihat di HP kecil */
  .hdr-r .live-pip{display:flex;padding:3px 7px;font-size:9px;letter-spacing:.3px;gap:4px;flex-shrink:0}
  .hdr-r .live-pip .pulse{width:5px;height:5px}
  .srow{grid-template-columns:repeat(2,1fr)}
  .sc{padding:13px}
  .sc-vl{font-size:20px}
  .sc-lb{font-size:10px}
  .pm-grid{grid-template-columns:1fr}
  .asel{grid-template-columns:repeat(2,1fr)}
  .otp-row{gap:5px}
  .otp{width:36px;height:40px;font-size:17px}
  .lb-item{grid-template-columns:26px 1fr auto}
}

/* Market cap inline (hanya tampil di HP; di desktop market cap tetap kolom kanan .mkt-mc) */
.as-mc{display:none}

/* === Brand TIA — logo file (assets/tia.png), bukan base64 === */
.sb-brand-col{flex-direction:column;align-items:flex-start;gap:8px}
.sb-logo-img{width:64px;max-width:100%;height:auto;display:block;flex-shrink:0;filter:drop-shadow(0 2px 6px rgba(245,158,11,.16))}
/* Badge status integrasi AI (disuntik oleh 98-gemini.js) */
.ai-badge{display:inline-flex;align-items:center;gap:6px;font-size:9.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;padding:4px 9px;border-radius:999px;border:1px solid;white-space:nowrap;flex-shrink:0;margin-left:auto}
.ai-badge .ai-dot{width:7px;height:7px;border-radius:50%;background:currentColor}
.ai-badge.live{color:#34D399;border-color:rgba(52,211,153,.35);background:rgba(52,211,153,.08)}
.ai-badge.live .ai-dot{animation:aiPulse 1.6s ease-in-out infinite}
.ai-badge.off{color:#F59E0B;border-color:rgba(245,158,11,.35);background:rgba(245,158,11,.08)}
@keyframes aiPulse{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(52,211,153,.45)}50%{opacity:.55;box-shadow:0 0 0 4px rgba(52,211,153,0)}}
.sb-brand-col .sb-name{font-size:11.5px;line-height:1.35}
.sb-brand-col .sb-name b{background:none;-webkit-text-fill-color:#F59E0B;color:#F59E0B}

/* ===== v11: collapsible UI (ticker / Market Mood / Latest News) ===== */
/* --- tombol sembunyikan ticker (melayang di ujung kanan atas) --- */
.tk-btn{position:fixed;top:5px;right:8px;z-index:120;width:38px;height:22px;border-radius:7px;background:rgba(15,16,25,.9);border:1px solid var(--b2);color:var(--tx3);font-size:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;user-select:none}
.tk-btn:hover{color:var(--tx);border-color:var(--ac)}
body.tk-hidden .ticker{display:none}
body.tk-hidden #app{height:100vh;height:100dvh}
body.tk-hidden .sb-overlay,body.tk-hidden .ov,body.tk-hidden .cmd-ov{top:0}
body.tk-hidden .chat-layout{height:calc(100vh - 110px);height:calc(100dvh - 110px)}
body.tk-hidden .trade-grid{height:calc(100vh - 110px);height:calc(100dvh - 110px)}
body.tk-hidden #tw{top:56px}
@media(max-width:1060px){body.tk-hidden .sidebar{top:0;height:100%;height:100dvh}}
/* --- Market Mood bisa ditekuk --- */
.sb-mood .mood-lbl{cursor:pointer;user-select:none}
.sb-mood .mood-chev{display:inline-block;font-size:9px;color:var(--tx3);margin-left:5px;transition:transform .2s}
.sb-mood.min .mood-bar,.sb-mood.min .mood-labels{display:none}
.sb-mood.min{padding:8px 12px}
.sb-mood.min .mood-lbl{margin-bottom:0}
.sb-mood.min .mood-chev{transform:rotate(-90deg)}
/* --- Latest News (panel kanan) bisa ditekuk terpisah --- */
#rpNewsSec .rp-hd{cursor:pointer;user-select:none}
#rpNewsSec .news-chev{display:inline-block;font-size:9px;color:var(--tx3);margin-left:5px;transition:transform .2s}
#rpNewsSec.min #rpNews{display:none}
#rpNewsSec.min .news-chev{transform:rotate(-90deg)}
/* --- Lisensi Institutional bisa ditekuk (pola sama seperti Market Mood) --- */
.sb-upg .upg-t{cursor:pointer;user-select:none;display:flex;justify-content:space-between;align-items:center}
.sb-upg .upg-chev{display:inline-block;font-size:9px;color:var(--tx3);margin-left:5px;transition:transform .2s}
.sb-upg.min .upg-s,.sb-upg.min .upg-btn{display:none}
.sb-upg.min{padding:8px 12px}
.sb-upg.min .upg-t{margin-bottom:0}
.sb-upg.min .upg-chev{transform:rotate(-90deg)}

/* ===== v17: Simple Chat nyata + warna menu modern ===== */
body.simple-chat .sig-card{display:none}
#n-dash .nic{color:#60A5FA;background:rgba(96,165,250,.12)}
#n-markets .nic{color:#34D399;background:rgba(52,211,153,.12)}
#n-portfolio .nic{color:#FBBF24;background:rgba(251,191,36,.12)}
#n-trade .nic{color:#C084FC;background:rgba(192,132,252,.16)}
#n-desk .nic{color:#F472B6;background:rgba(244,114,182,.12)}
#n-leader .nic{color:#FB923C;background:rgba(251,146,60,.12)}
#n-whale .nic{color:#22D3EE;background:rgba(34,211,238,.12)}
#n-news .nic{color:#A3E635;background:rgba(163,230,53,.12)}
#n-settings .nic{color:var(--neutral);background:rgba(var(--neutralr),.12)}

/* ===== v19 — N2/N3: rumah Eksekusi & peta menu baru ===== */
.exec-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:12px;align-items:start}
.exec-main{display:flex;flex-direction:column;gap:12px;min-width:0}
.exec-hero{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,rgba(var(--acr),.12),rgba(139,92,246,.06));border:1px solid rgba(var(--acr),.3);border-radius:var(--r2);padding:14px}
.eh-t{font-size:14px;font-weight:800;margin-bottom:3px}
.eh-s{font-size:11px;color:var(--tx3);line-height:1.55;max-width:520px}
.eh-btn{flex-shrink:0;white-space:nowrap;min-height:44px;width:auto;display:inline-block;padding:10px 18px}
.exec-life{display:flex;flex-wrap:wrap;align-items:center;gap:6px;background:var(--card);border:1px solid var(--b1);border-radius:var(--r2);padding:10px 12px}
.elf{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.6px;color:var(--tx2);background:var(--tint-2);border:1px solid var(--b1);border-radius:6px;padding:3px 7px}
.elf.ok{color:var(--gr);border-color:rgba(var(--grr),.4)}
.elf.bad{color:var(--rd);border-color:rgba(var(--rdr),.4)}
.elf-a{color:var(--tx3);font-size:10px}
.exec-sec{background:var(--card);border:1px solid var(--b1);border-radius:var(--r2);padding:12px}
.xl-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--b1);border-radius:9px;background:var(--sunk-1);font-size:11px}
.xl-id{font-family:var(--mono);color:var(--tx3);font-size:10px;flex-shrink:0}
.xl-mid{flex:1;min-width:0;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xl-st{font-family:var(--mono);font-size:9px;font-weight:800;letter-spacing:.6px;padding:2px 7px;border-radius:6px;background:var(--tint-2);color:var(--tx2);flex-shrink:0}
.xl-st.filled{color:var(--gr)}
.xl-st.staged,.xl-st.arming{color:var(--gold)}
.xl-st.killed,.xl-st.blocked,.xl-st.rejected{color:var(--rd)}
.bridge-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
@media(max-width:1180px){.exec-grid{grid-template-columns:minmax(0,1fr)}}

/* ===== v19 N2b — pola Kravio: search di sidebar, grup tekuk, ikon SVG, menu HP full-screen ===== */
.sb-search{margin-top:10px;display:flex;align-items:center;gap:8px;background:var(--tint-2);border:1px solid var(--b1);border-radius:9px;padding:8px 11px;color:var(--tx3);font-size:12px;cursor:pointer;transition:all .18s}
.sb-search:hover{border-color:var(--ac);color:var(--tx)}
.sb-search svg{width:14px;height:14px;flex-shrink:0}
.sb-search span{flex:1;min-width:0}
.sb-search kbd{font-family:var(--mono);font-size:9.5px;background:var(--tint-2);border:1px solid var(--b1);border-radius:4px;padding:1px 5px}
.sb-close{display:none;margin-left:auto;background:none;border:1px solid var(--b1);border-radius:8px;color:var(--tx3);width:32px;height:32px;font-size:13px;cursor:pointer;align-items:center;justify-content:center;flex-shrink:0}
.nic svg{width:16px;height:16px;display:block}
.nvg-hd{display:flex;justify-content:space-between;align-items:center;cursor:pointer;user-select:none;border-radius:7px}
.nvg-hd:hover{color:var(--tx2)}
/* Chevron grup nav: warnai eksplisit (gold) + opacity penuh & sedikit diperbesar agar jelas terlihat. */
.nvg-chev{font-size:11px;transition:transform .2s;opacity:1;color:var(--gold)}
.nvg.min .nvg-chev{transform:rotate(-90deg)}
.nvg.min .nvg-items{display:none}
#n-exec .nic{color:#F59E0B;background:rgba(245,158,11,.12)}
#n-ledger .nic{color:#A78BFA;background:rgba(167,139,250,.12)}
#n-bridge .nic{color:#38BDF8;background:rgba(56,189,248,.12)}
@media(max-width:768px){
  .sidebar{width:100%;border-right:0}
  .sb-close{display:flex}
  .sidebar .nitem{min-height:48px;font-size:14px}
  .sidebar .nvg-hd{min-height:34px;align-items:center}
  .sb-search{min-height:44px;font-size:13px}
  .exec-hero{flex-direction:column;align-items:stretch;text-align:left}
  .exec-hero .eh-btn{width:100%}
}

/* ===== v20 — Signal Composer (A1): sheet penuh di HP, modal di desktop ===== */
.cmp-ov{position:fixed;inset:0;z-index:500;background:var(--scrim);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;padding:16px}
.cmp-ov.show{display:flex}
.cmp{background:var(--card);border:1px solid var(--b1);border-radius:var(--r2);width:min(440px,100%);padding:18px;max-height:92vh;overflow-y:auto}
.cmp-hd{display:flex;align-items:center;justify-content:space-between;gap:10px}
.cmp-t{font-size:15px;font-weight:800}
.cmp-x{background:none;border:1px solid var(--b1);border-radius:8px;color:var(--tx3);width:32px;height:32px;font-size:13px;cursor:pointer;flex-shrink:0}
.cmp-sub{font-size:11px;color:var(--tx3);margin:6px 0 14px;line-height:1.5}
.cmp-f{margin-bottom:12px}
.cmp-f label{display:block;font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--tx3);margin-bottom:5px}
.cmp-f input{width:100%;background:var(--sunk-2);border:1px solid var(--b1);border-radius:9px;padding:10px 12px;color:var(--tx);font-family:var(--mono);font-size:14px;outline:none}
.cmp-f input:focus{border-color:var(--ac)}
.cmp-row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.cmp-seg{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.cmp-seg button{padding:10px;border-radius:9px;border:1px solid var(--b1);background:var(--sunk-2);color:var(--tx3);font-weight:800;font-size:12.5px;cursor:pointer;font-family:var(--fn)}
.cmp-seg button#cmpBuy.on{background:rgba(var(--grr),.15);border-color:rgba(var(--grr),.5);color:var(--gr)}
.cmp-seg button#cmpSell.on{background:rgba(var(--rdr),.15);border-color:rgba(var(--rdr),.5);color:var(--rd)}
.cmp-res{border-radius:10px;font-size:12px;margin:2px 0 12px;display:none}
.cmp-res.show{display:block;padding:10px 12px}
.cmp-res.ok{background:rgba(var(--grr),.1);border:1px solid rgba(var(--grr),.35)}
.cmp-res.bad{background:rgba(var(--rdr),.1);border:1px solid rgba(var(--rdr),.4)}
.cmp-res-t{font-weight:800;font-size:12px;margin-bottom:2px}
.cmp-res.ok .cmp-res-t{color:var(--gr)}
.cmp-res.bad .cmp-res-t{color:var(--rd)}
.cmp-res-m{color:var(--tx2);font-size:11.5px;line-height:1.5}
.cmp-code{font-family:var(--mono);font-size:9px;color:var(--tx3);border:1px solid var(--b1);border-radius:4px;padding:1px 5px;margin-left:4px}
.cmp-actions{display:flex;gap:8px}
.cmp-btn{flex:1;padding:12px;border-radius:10px;border:1px solid var(--b1);font-weight:800;font-size:12.5px;cursor:pointer;font-family:var(--fn);background:var(--tint-2);color:var(--tx)}
.cmp-btn:disabled{opacity:.4;cursor:not-allowed}
.cmp-btn.sim{background:var(--ac);border:none;color:#fff}
.cmp-btn.push{background:rgba(var(--grr),.9);border:none;color:#fff}
.cmp-btn.ghost{background:none}
.cmp-foot{margin-top:10px;font-size:10px;color:var(--tx3);line-height:1.5;text-align:center}
@media(max-width:768px){
  .cmp-ov{padding:0;align-items:flex-end}
  .cmp{width:100%;max-width:100%;border-radius:18px 18px 0 0;max-height:94vh;padding:18px 16px calc(18px + env(safe-area-inset-bottom,0px))}
  .cmp-f input{font-size:16px;padding:12px}
  .cmp-btn{min-height:48px}
}

/* ===== v21 — B3 heartbeat badge ===== */
.hb-badge{font-size:9px;font-weight:800;letter-spacing:1px;padding:3px 8px;border-radius:6px;white-space:nowrap;font-family:var(--mono)}
.hb-badge.on{background:rgba(var(--grr),.12);color:var(--gr);border:1px solid rgba(var(--grr),.35)}
.hb-badge.off{background:rgba(var(--rdr),.12);color:var(--rd);border:1px solid rgba(var(--rdr),.35)}

/* ===== v22 — B1 jalur keluar (positions card + FLATTEN) ===== */
.xp-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--b1);border-radius:9px;background:var(--sunk-1);font-size:11px}
.xp-mid{flex:1;min-width:0}
.xp-sub{display:block;font-size:10px;color:var(--tx3);margin-top:1px;font-family:var(--mono)}
.xp-pl{font-family:var(--mono);font-size:11px;font-weight:700;flex-shrink:0}
.xp-pl.up{color:var(--gr)}
.xp-pl.dn{color:var(--rd)}
.xp-btn{padding:6px 10px;border-radius:8px;border:1px solid var(--b1);background:var(--tint-2);color:var(--tx2);font-size:10.5px;font-weight:700;cursor:pointer;font-family:var(--fn);flex-shrink:0;min-height:32px}
.xp-btn:hover{border-color:var(--ac);color:var(--tx)}
.xp-btn.danger{border-color:rgba(var(--rdr),.4);color:#FCA5A5}
.xp-btn.danger:hover{background:rgba(var(--rdr),.15)}
.xp-flat{padding:6px 12px;border-radius:8px;border:1px solid rgba(var(--rdr),.45);background:rgba(var(--rdr),.12);color:#FCA5A5;font-size:10px;font-weight:800;letter-spacing:.5px;cursor:pointer;font-family:var(--fn)}
.xp-flat:disabled{opacity:.35;cursor:not-allowed}

/* ============================================================
   [P1-1] KELAS PENGGANTI INLINE STYLE (v36)
   Semua warna WAJIB lewat variabel — hex mentah dilarang di sini
   supaya pergantian tema (Cyber Blue / Amber Gold) benar-benar
   mengubah seluruh UI, bukan menyisakan elemen "nyangkut".
   ============================================================ */

/* judul & subjudul halaman — sebelumnya 24 inline style berulang */
.pg-t{font-size:18px;font-weight:800}
.pg-s{font-size:11px;color:var(--tx3)}
.pg-s-l{font-size:11px;color:var(--tx3);line-height:1.6}
.sec-t{font-size:14px;font-weight:800}
.note-xs{font-size:10px;color:var(--tx3);line-height:1.5;margin-top:8px}

/* [v36d] .btn-sub dihapus bersama tombol Langganan di header (duplikat sidebar). */

/* kotak kode / token monospace */
.code-box{display:flex;gap:10px;align-items:center;background:var(--sunk-2);border:1px solid var(--b1);border-radius:9px;padding:9px 11px}
.code-val{flex:1;font-family:var(--mono);font-size:12px;color:var(--gold);letter-spacing:.5px}

/* statistik Buku Sinyal */
.bk-stats{display:flex;gap:26px;flex-wrap:wrap;padding:4px 0 2px}
.bk-v{font-size:26px;font-weight:900;font-variant-numeric:tabular-nums}
.bk-l{font-size:10px;color:var(--tx3)}

/* callout peringatan [P2-7] — mengangkat catatan penting dari paragraf abu-abu */
.callout-warn{display:flex;gap:10px;align-items:flex-start;margin:12px 0 4px;padding:11px 13px;
  border:1px solid rgba(var(--gol),.38);border-left:3px solid var(--gold);
  background:rgba(var(--gol),.10);border-radius:10px}
.callout-warn .cw-ic{font-size:14px;line-height:1.3}
.callout-warn .cw-t{font-size:11.5px;font-weight:800;letter-spacing:.3px;color:var(--gold);
  text-transform:uppercase;margin-bottom:3px}
.callout-warn .cw-s{font-size:11px;line-height:1.6;color:var(--tx2)}
.callout-warn .cw-s b{color:var(--tx)}

/* ===== /assets/css/coin-panel.css ===== */
/* Intelligence Terminal — gaya panel koin (diekstrak dari index.html; WAJIB dimuat SETELAH terminal.css) */
/* Coin snapshot panel */
.cp-price{display:flex;align-items:baseline;justify-content:space-between;padding:2px 0 12px;border-bottom:1px solid var(--b1);margin-bottom:12px;gap:10px}
.cp-p{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums;font-family:var(--mono);line-height:1.1}
.cp-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.cp-k{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.4px;margin-bottom:2px;font-weight:700}
.cp-v{font-size:13px;font-weight:700}
.cp-v.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.cp-tf{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
.tfchip{border:1px solid var(--b1);background:var(--tint-1);color:var(--tx2);font-size:10px;font-weight:700;padding:4px 9px;border-radius:6px;cursor:pointer;font-family:var(--fn);min-height:22px;letter-spacing:.2px}
.tfchip:hover{border-color:var(--ac);color:var(--ac)}
.tfchip.on{border-color:var(--ac);background:rgba(var(--acr),.14);color:var(--ac)}
.cp-tabs{display:flex;gap:4px;margin:0 0 12px;padding:3px;border-radius:10px;background:var(--tint-1);border:1px solid var(--b1)}
.cp-tab{flex:1;border:none;background:none;color:var(--tx2);font-size:11px;font-weight:700;padding:6px 10px;border-radius:7px;cursor:pointer;font-family:var(--fn);letter-spacing:.2px;transition:all .15s;min-height:26px}
.cp-tab:hover{color:var(--tx)}
.cp-tab.on{background:rgba(var(--acr),.16);color:var(--ac);box-shadow:inset 0 0 0 1px rgba(var(--acr),.35)}
.cp-chart-wrap{height:210px;border-radius:10px;border:1px solid var(--b1);background:var(--tint-1);padding:4px;margin-bottom:8px}
.cp-chart{width:100%;height:100%;position:relative}
.cp-chart-fb{display:flex;align-items:center;justify-content:center;height:100%;text-align:center;font-size:11px;color:var(--tx3);line-height:1.6;padding:0 16px}
.cp-chart-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px;color:var(--tx3);font-weight:700;letter-spacing:.3px;text-transform:uppercase;margin-bottom:12px}
.cp-chart-src{color:var(--tx3);opacity:.75;text-transform:none;letter-spacing:0;font-weight:600}
.itc-tip{position:absolute;display:flex;flex-wrap:wrap;gap:2px 8px;max-width:150px;padding:6px 8px;border-radius:8px;background:var(--panel);border:1px solid var(--b2);backdrop-filter:blur(8px);font-size:9.5px;color:var(--tx2);pointer-events:none;z-index:3;line-height:1.5}
.itc-tip b{width:100%;color:var(--tx);font-size:9.5px;letter-spacing:.3px}
.itc-tip i{font-style:normal;font-family:var(--mono);color:var(--tx)}
.itc-tip i.u{color:#22c55e}.itc-tip i.d{color:#ef4444}
@media(max-width:520px){.cp-chart-wrap{height:180px}}
.cp-note{font-size:10.5px;color:var(--tx3);line-height:1.55;margin-bottom:12px;padding:8px 10px;border-radius:8px;background:var(--tint-1);border:1px solid var(--b1)}
.cp-hold{margin-top:6px}
.cp-hold-t{font-size:10px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px}
.cp-hold-g{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:10px;border-radius:8px;background:var(--tint-1);border:1px solid var(--b1)}
@media(max-width:520px){.cp-hold-g{grid-template-columns:repeat(2,1fr)}}
/* Whale tracked state */
.wh-tracked{display:inline-block;padding:1px 6px;border-radius:6px;font-size:8.5px;font-weight:800;background:rgba(var(--acr),.14);color:var(--ac);margin-left:6px;letter-spacing:.4px;vertical-align:middle}
.wbtn.tracked{border-color:var(--ac);color:var(--ac);background:rgba(var(--acr),.1)}
/* Desk Officer agent tabs */
.dk-tab-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.dk-tabs{display:flex;gap:4px;flex-wrap:wrap}
.dk-tab{border:1px solid var(--b1);background:var(--tint-1);color:var(--tx2);font-size:11px;font-weight:700;padding:5px 10px;border-radius:8px;cursor:pointer;font-family:var(--fn);display:inline-flex;align-items:center;gap:5px;line-height:1.2}
.dk-tab:hover{border-color:var(--ac);color:var(--ac)}
.dk-tab.on{border-color:var(--ac);background:rgba(var(--acr),.14);color:var(--ac)}
.dk-mode{display:inline-flex;align-items:center;gap:8px;font-size:10.5px;font-weight:700;color:var(--tx3);margin-left:auto;cursor:pointer;text-transform:uppercase;letter-spacing:.4px}
.dk-mode .tog{transform:scale(0.78);transform-origin:right center}
.legal-chip{position:fixed;left:10px;bottom:10px;z-index:96;display:flex;align-items:center;gap:6px;
  padding:5px 9px;border-radius:999px;background:var(--panel);border:1px solid var(--b2);
  backdrop-filter:blur(10px);font-size:9.5px;font-weight:700;letter-spacing:.6px;color:var(--tx2);
  text-transform:uppercase;font-family:var(--fn);max-width:calc(100vw - 20px)}
.legal-chip i{width:5px;height:5px;border-radius:50%;background:var(--gold);flex-shrink:0}
.legal-chip button{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:11px;padding:0 0 0 4px;line-height:1;min-height:auto}
.legal-chip.hide{display:none}
@media(max-width:768px){.legal-chip{bottom:calc(90px + env(safe-area-inset-bottom,0px))}}
@media(max-width:520px){.legal-chip{font-size:9px;padding:4px 8px}}

/* ===== /assets/css/multiagent.css ===== */
/* Intelligence Terminal — multiagent.css | S1 Multi-Agent: Petugas Meja */
.s1-sec{margin:0 0 14px;color:var(--tx)}
.s1-wire{background:linear-gradient(135deg,rgba(34,211,238,.08),rgba(59,130,246,.05));border:1px solid rgba(34,211,238,.25);border-left:3px solid #22D3EE;border-radius:12px;padding:12px 14px;display:flex;gap:11px;align-items:flex-start}
.s1-wire .ic{font-size:22px;line-height:1.2}
.s1-wire .t1{font-size:11px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:#22D3EE;margin-bottom:3px}
.s1-wire .t2{font-size:12.5px;color:var(--tx2);line-height:1.55}
.s1-wire .t2 b{color:var(--tx)}
.s1-wire .t3{font-size:11px;color:var(--tx3);margin-top:5px;border-top:1px dashed var(--b1);padding-top:5px}
.s1-hd{display:flex;align-items:baseline;justify-content:space-between;margin:16px 0 9px;flex-wrap:wrap;gap:6px}
.s1-hd .h{font-size:14px;font-weight:800}
.s1-hd .s{font-size:11px;color:var(--tx3)}
.s1-feed{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:10px}
.s1-sig{background:rgba(var(--neutralr),.05);border:1px solid var(--b1);border-radius:12px;padding:12px;cursor:pointer;transition:all .18s;position:relative}
.s1-sig:hover{transform:translateY(-2px);border-color:rgba(59,130,246,.45);box-shadow:0 8px 24px rgba(0,0,0,.35)}
.s1-sig .pr{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}
.s1-sig .pair{font-family:var(--mono);font-weight:700;font-size:15px}
.s1-sig .dir{font-size:10px;font-weight:800;letter-spacing:.5px;padding:3px 8px;border-radius:6px}
.s1-sig .dir.sell{background:rgba(239,68,68,.12);color:#F87171}
.s1-sig .dir.buy{background:rgba(16,185,129,.12);color:#34D399}
.s1-sig .dir.wait{background:rgba(var(--neutralr),.12);color:var(--neutral)}
.s1-sig .conf{font-family:var(--mono);font-size:20px;font-weight:800;color:var(--gold)}
.s1-sig .conf small{font-size:10px;font-weight:400;color:var(--tx3)}
.s1-sig .meta{font-size:10.5px;color:var(--tx2);margin:5px 0 8px;font-family:var(--mono)}
.s1-sig .res{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.4px;padding:3px 9px;border-radius:20px;margin-bottom:8px}
.s1-sig .res.win{background:rgba(16,185,129,.14);color:#34D399;border:1px solid rgba(16,185,129,.3)}
.s1-sig .res.loss{background:rgba(239,68,68,.14);color:#F87171;border:1px solid rgba(239,68,68,.3)}
.s1-sig .res.veto{background:rgba(var(--neutralr),.1);color:var(--neutral);border:1px solid rgba(var(--neutralr),.25)}
.s1-sig .why{font-size:10.5px;color:var(--ac);font-weight:700}
.s1-sig .ag{font-size:10px;color:var(--tx3);margin-top:7px;border-top:1px dashed var(--b1);padding-top:6px}
.s1-ledger{background:rgba(var(--neutralr),.05);border:1px solid var(--b1);border-radius:12px;overflow-x:auto;overflow-y:hidden;margin-top:6px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.s1-ledger::-webkit-scrollbar{display:none}
.s1-ledger table{width:100%;min-width:520px;border-collapse:collapse;font-size:11.5px}
.s1-ledger th{font-size:9.5px;text-transform:uppercase;letter-spacing:.7px;color:var(--tx3);text-align:left;padding:9px 12px;border-bottom:1px solid var(--b1);background:var(--sunk-1)}
.s1-ledger td{padding:8px 12px;border-bottom:1px solid rgba(var(--neutralr),.07);color:var(--tx2);font-family:var(--mono)}
.s1-ledger tr.s1-openable{cursor:pointer}
.s1-ledger tr.s1-openable:hover td{background:rgba(59,130,246,.06)}
.s1-lbadge{font-size:9.5px;font-weight:800;padding:2px 8px;border-radius:12px}
.s1-lbadge.w{background:rgba(16,185,129,.13);color:#34D399}
.s1-lbadge.l{background:rgba(239,68,68,.13);color:#F87171}
.s1-lbadge.n{background:rgba(var(--neutralr),.12);color:var(--neutral)}
.s1-lstats{display:flex;gap:16px;flex-wrap:wrap;padding:10px 12px;border-bottom:1px solid var(--b1);background:rgba(16,185,129,.04);align-items:center}
.s1-lstat{font-family:var(--mono)}.s1-lstat b{font-size:16px;color:var(--tx)}
.s1-lstat span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.6px;color:var(--tx3)}
.s1-verif{margin-left:auto;font-size:10px;color:#34D399;font-weight:700;border:1px solid rgba(16,185,129,.3);padding:4px 10px;border-radius:20px;background:rgba(16,185,129,.07)}
#s1Ovl{position:fixed;inset:0;background:var(--scrim);backdrop-filter:blur(3px);z-index:9998;opacity:0;pointer-events:none;transition:opacity .25s}
#s1Ovl.on{opacity:1;pointer-events:auto}
#s1Why{position:fixed;top:0;right:0;height:100%;width:min(430px,100%);background:#0B1120;border-left:1px solid rgba(var(--neutralr),.15);z-index:9999;transform:translateX(105%);transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;color:#E2E8F0}
#s1Why.on{transform:translateX(0)}
#s1Why .wh-hd{padding:14px 16px;border-bottom:1px solid rgba(var(--neutralr),.15);display:flex;align-items:center;gap:10px}
#s1Why .wh-bd{flex:1;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:12px}
#s1Why .wh-ft{padding:12px 16px;border-top:1px solid rgba(var(--neutralr),.15)}
.s1-msg{display:flex;gap:9px;animation:s1in .3s ease}
@keyframes s1in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.s1-msg .av{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;border:1.5px solid}
.s1-msg .nm{font-size:10.5px;font-weight:800;margin-bottom:2px}
.s1-msg .rl{font-size:9px;color:#64748B;text-transform:uppercase;letter-spacing:.5px;font-weight:400}
.s1-msg .bb{background:#111A2E;border:1px solid rgba(var(--neutralr),.14);border-radius:2px 11px 11px 11px;padding:8px 11px;font-size:12px;line-height:1.55}
.s1-msg.user{flex-direction:row-reverse}
.s1-msg.user .bb{border-radius:11px 2px 11px 11px;background:rgba(59,130,246,.12);border-color:rgba(59,130,246,.3)}
.s1-qrow{display:flex;gap:7px}
.s1-qrow input{flex:1;background:var(--sunk-2);border:1px solid rgba(var(--neutralr),.2);border-radius:9px;padding:9px 11px;font-size:12px;color:#E2E8F0;font-family:var(--font,Inter);outline:none}
.s1-qrow input:focus{border-color:#3B82F6}
.s1-qrow button{background:#3B82F6;border:0;color:#fff;border-radius:9px;padding:0 14px;font-weight:800;cursor:pointer}
.s1-railbtn{width:100%;margin-top:9px;background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.35);color:#F59E0B;font-weight:800;font-size:12px;padding:10px;border-radius:9px;cursor:pointer;transition:all .15s}
.s1-railbtn:hover{background:rgba(245,158,11,.18)}
.s1-railbtn:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:640px){.s1-feed{grid-template-columns:1fr 1fr}}

/* S2 — Pipeline Live */
.s1-pipe{background:rgba(139,92,246,.05);border:1px solid rgba(139,92,246,.22);border-radius:12px;padding:13px 14px}
.pp-hd{font-size:13px;color:var(--tx)}
.pp-hd .pp-sub{font-size:10.5px;color:var(--tx3);margin-left:6px}
.pp-stages{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:10px 0}
.pp-stage{font-size:10px;font-weight:800;letter-spacing:.5px;padding:4px 10px;border-radius:20px;border:1px solid var(--b1);color:var(--tx3);transition:all .3s}
.pp-stage.on{border-color:#8B5CF6;color:#C4B5FD;background:rgba(139,92,246,.12);box-shadow:0 0 12px rgba(139,92,246,.35)}
.pp-stage.done{border-color:rgba(16,185,129,.5);color:#34D399}
.pp-arr{color:var(--tx3);font-size:11px}
.pp-log{background:var(--sunk-2);border:1px solid var(--b1);border-radius:10px;min-height:120px;max-height:340px;overflow-y:auto;padding:11px 13px;display:flex;flex-direction:column;gap:9px}
.pp-idle{font-size:12px;color:var(--tx3);line-height:1.6;font-style:italic}
.pp-lh{font-size:9.5px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:#8B5CF6;border-bottom:1px dashed rgba(139,92,246,.3);padding-bottom:4px;margin-top:4px;animation:s1in .3s ease}
.pp-w{font-family:var(--mono);font-size:10.5px;color:var(--tx2);padding-left:8px;border-left:2px solid rgba(var(--neutralr),.25);animation:s1in .3s ease}
.pp-w b{color:#22D3EE;font-weight:700;margin-right:6px}
.pp-actions{display:flex;gap:8px;margin-top:10px;align-items:center}
.pp-play{background:rgba(139,92,246,.15);border:1px solid rgba(139,92,246,.4);color:#C4B5FD;font-weight:800;font-size:12px;padding:9px 16px;border-radius:9px;cursor:pointer;transition:all .15s}
.pp-play:hover:not(:disabled){background:rgba(139,92,246,.25)}
.pp-play:disabled{opacity:.5;cursor:wait}
.pp-skip{background:none;border:1px solid var(--b1);color:var(--tx3);font-size:11px;padding:8px 13px;border-radius:9px;cursor:pointer}
.pp-skip:hover{color:var(--tx)}
.s1-sig .res.open{background:rgba(59,130,246,.14);color:#60A5FA;border:1px solid rgba(59,130,246,.3)}
.s1-lbadge.o{background:rgba(59,130,246,.13);color:#60A5FA}
.s1-sig.s1-new{animation:s1born 1.4s ease}
@keyframes s1born{0%{box-shadow:0 0 0 0 rgba(139,92,246,.7);transform:scale(.96)}60%{box-shadow:0 0 0 8px rgba(139,92,246,0);transform:scale(1.01)}100%{box-shadow:none;transform:scale(1)}}

/* Koreksi — Roster agen + SOP strip */
.s1-grid6{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.s1-ag{background:rgba(var(--neutralr),.05);border:1px solid var(--b1);border-radius:12px;padding:12px;cursor:pointer;transition:all .18s}
.s1-ag:hover{transform:translateY(-2px);border-color:rgba(139,92,246,.5);box-shadow:0 8px 22px rgba(0,0,0,.3)}
.s1-ag .ag-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.s1-ag .ag-ic{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;border:1.5px solid}
.s1-ag .ag-pill{font-size:8px;font-weight:800;letter-spacing:.6px;padding:2.5px 7px;border-radius:12px;border:1px solid}
.s1-ag .ag-nm{font-size:13.5px;font-weight:800;color:var(--tx)}
.s1-ag .ag-rl{font-size:10px;color:var(--tx2);margin-top:2px}
.s1-ag .ag-tag{font-size:10px;color:var(--tx3);font-style:italic;margin-top:6px;border-top:1px dashed var(--b1);padding-top:6px}
.s1-ag .ag-ask{font-size:10.5px;font-weight:700;color:var(--ac);margin-top:7px}
.s1-sop{display:flex;align-items:center;gap:7px;flex-wrap:wrap;background:rgba(59,130,246,.05);border:1px solid rgba(59,130,246,.18);border-radius:10px;padding:9px 13px;font-size:11px;color:var(--tx2)}
.s1-sop .sop-t{font-size:9.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--ac);margin-right:3px}
.s1-sop .sop-s b{color:var(--tx)}
.s1-sop .sop-a{color:var(--tx3)}
#ci[readonly]{cursor:pointer;opacity:.75}

/* Koreksi 2 — kinerja agen + tombol analisis */
.s1-ag .ag-stat{font-size:11px;color:var(--tx2);line-height:1.7;margin-top:7px}
.s1-ag .ag-stat b{color:var(--tx);font-family:var(--mono)}
.s1-ag .ag-tag{margin-top:7px}
.wbtn.an{background:rgba(139,92,246,.12);border:1px solid rgba(139,92,246,.35);color:#C4B5FD;font-weight:700}
.wbtn.an:hover{background:rgba(139,92,246,.22)}

/* S3 — serang ulang & override */
.s1-round2{display:flex;gap:7px;margin-bottom:9px}
.s1-round2 button{flex:1;font-size:10.5px;font-weight:800;padding:8px 6px;border-radius:8px;cursor:pointer;transition:all .15s;background:rgba(var(--neutralr),.06);border:1px solid rgba(var(--neutralr),.2);color:var(--neutral)}
.s1-round2 button:hover:not(:disabled){color:#E2E8F0;border-color:rgba(var(--neutralr),.45)}
#s1AtkBtn:not(:disabled){border-color:rgba(239,68,68,.35);color:#F87171;background:rgba(239,68,68,.07)}
#s1AtkBtn:hover:not(:disabled){background:rgba(239,68,68,.15)}
#s1OvrBtn:not(:disabled){border-color:rgba(245,158,11,.4);color:#F59E0B;background:rgba(245,158,11,.07)}
#s1OvrBtn:hover:not(:disabled){background:rgba(245,158,11,.16)}
.s1-round2 button:disabled{opacity:.55;cursor:default}

/* S5 — Session Bar */
.s1-sess{display:flex;align-items:center;gap:10px;padding:5px 14px;background:var(--bg-band);border-bottom:1px solid var(--b1);font-family:var(--mono);font-size:10px;color:var(--tx3);flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.s1-sess::-webkit-scrollbar{display:none}
.s1-sess>*{flex-shrink:0}
.ss-clock{font-weight:700;color:var(--gold);letter-spacing:.5px}
.ss-sep{width:1px;height:14px;background:var(--b1)}
#ssChips{display:flex;gap:6px;flex-wrap:nowrap}
.ss-chip{padding:2px 8px;border-radius:12px;border:1px solid var(--b1);color:var(--tx3);white-space:nowrap}
.ss-chip i{font-style:normal;color:var(--tx2);opacity:1;margin-left:2px}  /* v36g: opacity .75 gagal kontras Lighthouse */
.ss-chip b{color:#34D399;font-weight:800;margin-left:5px;font-size:8.5px;letter-spacing:.5px}
.ss-chip em{color:var(--tx3);font-style:normal;margin-left:5px;font-size:8.5px}
.ss-chip.on{border-color:rgba(16,185,129,.4);background:rgba(16,185,129,.06);color:var(--tx2)}
.ss-right{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:nowrap}
.ss-dot{opacity:.4}

/* ===== TIA UX v7 — struktur 3 zona: konten | panel konteks ===== */
:root{--tia-why-w:430px}

/* Why Box MENDORONG konten (bukan menumpuk) di layar lebar */
#app{transition:padding-right .3s cubic-bezier(.4,0,.2,1)}
@media(min-width:1180px){
  body.tia-why-open #app{padding-right:var(--tia-why-w)}
  body.tia-why-open #s1Ovl{opacity:0!important;pointer-events:none!important}
  #s1Why{box-shadow:-18px 0 40px rgba(2,6,23,.45)}
}
/* layar sempit: tetap overlay (ruang tidak cukup untuk 2 kolom) */
@media(max-width:1179px){ body.tia-why-open #app{padding-right:0} }

/* --- Penanda konteks chat: user selalu tahu sedang bicara di ruang mana --- */
.ctx-bar{display:flex;align-items:center;gap:8px;padding:7px 12px;border-radius:8px;
  margin:0 0 8px;font-size:10.5px;line-height:1.35;border:1px solid transparent}
.ctx-bar .ctx-ic{font-size:13px;line-height:1}
.ctx-bar .ctx-t{font-weight:800;letter-spacing:.5px;text-transform:uppercase;white-space:nowrap}
.ctx-bar .ctx-s{color:#8494AC;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* biru = ruang obrolan umum */
.ctx-desk{background:rgba(59,130,246,.09);border-color:rgba(59,130,246,.28)}
.ctx-desk .ctx-t{color:#60A5FA}
/* amber = ruang bedah satu sinyal */
.ctx-why{background:rgba(245,158,11,.10);border-color:rgba(245,158,11,.30);
  position:sticky;top:-14px;z-index:2;backdrop-filter:blur(6px)}
.ctx-why .ctx-t{color:#F59E0B}
@media(max-width:640px){ .ctx-bar .ctx-s{display:none} }

/* --- Baris PERINTAH dibedakan total dari kolom chat --- */
.cmdbar.cmd-order{border-color:rgba(245,158,11,.38)!important;
  background:linear-gradient(180deg,rgba(245,158,11,.07),rgba(245,158,11,.02))!important}
.cmdbar.cmd-order:focus-within{border-color:rgba(245,158,11,.75)!important;
  box-shadow:0 0 0 3px rgba(245,158,11,.12)!important}
.cmdbar.cmd-order input{font-family:var(--mono,ui-monospace,monospace)!important;letter-spacing:.2px}
.cmd-tag{flex:0 0 auto;font-size:8.5px;font-weight:900;letter-spacing:.9px;text-transform:uppercase;
  color:#F59E0B;background:rgba(245,158,11,.14);border:1px solid rgba(245,158,11,.3);
  border-radius:4px;padding:2px 5px;white-space:nowrap}
/* kolom chat = membulat & biru, jelas beda bentuk dari baris perintah */
.ci-wrap{border-radius:14px!important}
.ci-wrap:focus-within{border-color:rgba(59,130,246,.6)!important;box-shadow:0 0 0 3px rgba(59,130,246,.10)!important}

/* Disiplin tumpukan: konten(1) < sidebar(98) < panel Why(400) < modal(500) < toast(1000) */
#s1Why{z-index:400!important}
#s1Ovl{z-index:399!important}

/* ===== v11: strip sesi bisa diringkas jadi 1 chip ===== */
.ss-mini{display:none;font-weight:700;color:var(--gold);letter-spacing:.3px}
.ss-tog{cursor:pointer;padding:1px 7px;border-radius:6px;border:1px solid var(--b1);color:var(--tx3);font-size:9px;user-select:none;transition:all .15s}
.ss-tog:hover{color:var(--tx);border-color:var(--ac)}
.s1-sess.min #ssChips,.s1-sess.min .ss-right,.s1-sess.min .ss-sep{display:none}
.s1-sess.min .ss-mini{display:inline}

/* v31 Tahap 4: badge kejujuran harga pada kartu signal */
.s1-sig .pr{gap:6px;flex-wrap:wrap}
.s1-pbadge{font-size:8.5px;font-weight:800;letter-spacing:.6px;padding:2px 7px;border-radius:5px;margin-left:auto;white-space:nowrap}
.s1-pbadge.pb-live{background:rgba(16,185,129,.14);color:#34D399;border:1px solid rgba(16,185,129,.32)}
.s1-pbadge.pb-stale{background:rgba(245,158,11,.14);color:#FBBF24;border:1px solid rgba(245,158,11,.32)}
.s1-pbadge.pb-sim{background:rgba(var(--neutralr),.14);color:var(--neutral);border:1px solid rgba(var(--neutralr),.28)}

/* ============================================================
   v36f — KOMPENSASI TINGGI STRIP SESI (#s1sess)
   #s1sess disisipkan antara .ticker dan #app, tetapi terminal.css
   menghitung #app hanya dikurangi ticker (32px). Semua kolom jadi
   menjulur ~31px di bawah tepi layar -> baris pengguna di dasar
   sidebar terpotong di PC. --ssh diukur JS (measSess()).
   ============================================================ */
body.s1sess-on #app{height:calc(100vh - 32px - var(--ssh,31px));height:calc(100dvh - 32px - var(--ssh,31px))}
body.s1sess-on.tk-hidden #app{height:calc(100vh - var(--ssh,31px));height:calc(100dvh - var(--ssh,31px))}

body.s1sess-on .sb-overlay,body.s1sess-on .ov,body.s1sess-on .cmd-ov{top:calc(32px + var(--ssh,31px))}
body.s1sess-on.tk-hidden .sb-overlay,body.s1sess-on.tk-hidden .ov,body.s1sess-on.tk-hidden .cmd-ov{top:var(--ssh,31px)}

body.s1sess-on .chat-layout,body.s1sess-on .trade-grid{height:calc(100vh - 110px - 32px - var(--ssh,31px));height:calc(100dvh - 110px - 32px - var(--ssh,31px))}
body.s1sess-on.tk-hidden .chat-layout,body.s1sess-on.tk-hidden .trade-grid{height:calc(100vh - 110px - var(--ssh,31px));height:calc(100dvh - 110px - var(--ssh,31px))}

@media(max-width:1060px){
  body.s1sess-on .sidebar{top:calc(32px + var(--ssh,31px));height:calc(100dvh - 32px - var(--ssh,31px))}
  body.s1sess-on.tk-hidden .sidebar{top:var(--ssh,31px);height:calc(100dvh - var(--ssh,31px))}
}

/* baris pengguna di dasar sidebar: beri ruang ekstra agar label
   "✦ <tier> · SIM" tidak pernah tersentuh tepi layar */
.sb-user{padding-top:10px;padding-bottom:14px}
.sb-user .sbt{line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== /assets/css/beranda-ringkas.css ===== */
/* Beranda ringkas — Tahap 2 (watchlist terbatas + wawasan prioritas + status agen) */
.brk-hd{display:flex;align-items:center;justify-content:space-between;margin:0 0 10px}
.brk-t{font-size:13px;font-weight:700;color:var(--tx);letter-spacing:.02em}
.brk-va{font-size:12px;font-weight:600;color:var(--ac);cursor:pointer;text-decoration:none}
.brk-va:hover{opacity:.8}
.brk-sep{margin:22px 2px 10px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--tx3)}

/* ---- Status Tim Agen ---- */
.brk-agents{background:var(--sf);border:1px solid var(--bd);border-radius:16px;padding:14px 16px;margin-bottom:12px}
.brk-ag-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.brk-ag-lead{display:flex;align-items:center;gap:10px}
.brk-ag-lead .brk-tia{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px;background:rgba(var(--acr),.14);border:1px solid rgba(var(--acr),.35)}
.brk-ag-lead .brk-tia-nm{font-size:13px;font-weight:700;color:var(--tx);line-height:1.2}
.brk-ag-lead .brk-tia-rl{font-size:11px;color:var(--tx3)}
.brk-ag-pend{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--gol);background:rgba(var(--gol),.1);border:1px solid rgba(var(--gol),.3);padding:5px 10px;border-radius:999px;cursor:pointer}
.brk-ag-pend:hover{opacity:.85}
.brk-ag-row{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}
.brk-ag-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--tx2);background:var(--sf2,var(--tint-1));border:1px solid var(--bd);padding:4px 9px 4px 6px;border-radius:999px}
.brk-ag-av{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;color:#fff}
.brk-ag-dot{width:7px;height:7px;border-radius:50%;background:var(--gr)}
.brk-ag-dot.off{background:var(--tx3)}
.brk-ag-dot.rec{background:var(--ac)}

/* ---- Wawasan prioritas ---- */
.brk-insights{margin-bottom:12px}
.brk-ins-list{display:flex;flex-direction:column;gap:10px}
.brk-ins{display:flex;gap:12px;align-items:flex-start;background:var(--sf);border:1px solid var(--bd);border-radius:14px;padding:12px 14px;cursor:pointer;transition:border-color .15s}
.brk-ins:hover{border-color:rgba(var(--acr),.45)}
.brk-ins-ic{flex:0 0 auto;width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:15px;color:#fff}
.brk-ins-bd{flex:1;min-width:0}
.brk-ins-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:3px}
.brk-ins-src{font-size:11px;font-weight:700;color:var(--tx)}
.brk-ins-cls{font-size:10px;font-weight:700;letter-spacing:.03em;padding:1px 7px;border-radius:999px;background:rgba(var(--acr),.12);color:var(--ac)}
.brk-ins-cls.fx{background:rgba(139,92,246,.14);color:#a78bfa}
.brk-ins-time{font-size:10.5px;color:var(--tx3);margin-left:auto}
.brk-ins-txt{font-size:12.5px;color:var(--tx2);line-height:1.45}

/* ---- Watchlist ringkas ---- */
.brk-wl-list{display:flex;flex-direction:column}
.brk-wl-row{display:flex;align-items:center;gap:11px;padding:10px 6px;border-bottom:1px solid var(--bd);cursor:pointer}
.brk-wl-row:last-child{border-bottom:none}
.brk-wl-row:hover{background:rgba(var(--acr),.04)}
.brk-wl-lg{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff;flex:0 0 auto}
.brk-wl-nf{flex:1;min-width:0}
.brk-wl-s{font-size:12.5px;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:7px}
.brk-wl-cls{font-size:9.5px;font-weight:700;letter-spacing:.03em;padding:1px 6px;border-radius:999px;background:var(--sf2,var(--tint-2));color:var(--tx3)}
.brk-wl-n{font-size:11px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brk-wl-r{text-align:right}
.brk-wl-p{font-size:12.5px;font-weight:700;color:var(--tx)}
.brk-wl-c{font-size:11px;font-weight:600}
.brk-wl-c.up{color:var(--gr)}
.brk-wl-c.dn{color:var(--rd)}
.brk-empty{font-size:12px;color:var(--tx3);padding:14px 4px;text-align:center}

/* ---- Bridge chip di hero ---- */
.bridge-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.02em;padding:4px 10px;border-radius:999px;border:1px solid var(--bd);color:var(--tx2);background:var(--sf)}
.bridge-chip i{width:7px;height:7px;border-radius:50%;background:var(--tx3);display:inline-block}
.bridge-chip.ok{color:var(--gr);border-color:rgba(var(--grr),.4)}
.bridge-chip.ok i{background:var(--gr)}
.bridge-chip.off{color:var(--rd);border-color:rgba(var(--rdr),.4)}
.bridge-chip.off i{background:var(--rd)}

/* Pasar — kategori & label kelas aset (Tahap 2) */
.mkt-cls{font-size:9px;font-weight:700;letter-spacing:.03em;padding:1px 6px;border-radius:999px;background:var(--sf2,var(--tint-2));color:var(--tx3);text-transform:uppercase}
.mkt-grp{margin:16px 2px 6px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--tx3)}
.mkt-grp:first-child{margin-top:2px}

/* ===== /assets/css/status-line.css ===== */
/* ============================================================
   TIA v36 — STATUS LINE (P0-1)
   Notifikasi = SATU BARIS TEKS KECIL, bukan kartu toast.
   Keputusan desain K1 (27 Sep 2026).

   #statusLine WAJIB anak langsung <body>.
   Alasan: #app memakai position:relative + z-index:1 sehingga
   membuat stacking context. Apa pun di dalam #app selalu
   terlukis DI BAWAH .bottom-tab (z-index:120) di HP, berapa pun
   z-index internalnya.

   Desktop : fixed di bawah header, dan .cl diberi padding-top
             lewat body.sl-on -> efeknya MENDORONG konten.
   HP      : fixed di atas bottom-tab (z-index 121 > 120).
   ============================================================ */

#statusLine{
  display:none;
  align-items:center;
  gap:8px;
  height:26px;
  padding:0 14px;
  box-sizing:border-box;
  background:var(--bg-hdr);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--b1);
  font-family:var(--mono);
  font-size:11px;
  line-height:1;
  color:var(--tx2);
  overflow:hidden;
  white-space:nowrap;
}
#statusLine.show{display:flex}

/* ---------- DESKTOP: di bawah ticker(32) + header(52) ---------- */
@media(min-width:769px){
  #statusLine{
    position:fixed;
    top:var(--sl-top,84px);   /* diukur JS dari tepi bawah .top-hdr */
    left:var(--sbw,218px);
    right:0;
    z-index:96;               /* di bawah sidebar(98), di atas konten */
  }
  body.sb-collapsed #statusLine{left:0}             /* sidebar dilipat */
  /* MENDORONG konten, tidak menimpa */
  body.sl-on .cl{padding-top:26px}
}
/* sidebar jadi off-canvas di <=1060px -> baris status penuh lebar */
@media(min-width:769px) and (max-width:1060px){
  #statusLine{left:0}
}

/* ---------- HP: di atas bottom-tab ---------- */
@media(max-width:768px){
  #statusLine{
    position:fixed;
    left:0;right:0;
    bottom:calc(62px + env(safe-area-inset-bottom,0px));
    z-index:121;              /* HARUS > .bottom-tab (120) */
    height:28px;padding:0 12px;
    border-top:1px solid var(--b1);
    border-bottom:0;
  }
  /* chat full-screen: bottom-tab hilang -> baris turun ke dasar */
  body.chat-full #statusLine{bottom:env(safe-area-inset-bottom,0px)}
  .sl-age{display:none}
}

/* ---------- bagian dalam ---------- */
.sl-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--tx3)}
#statusLine[data-level="info"]    .sl-dot{background:var(--tx2)}
#statusLine[data-level="success"] .sl-dot{background:var(--gr)}
#statusLine[data-level="warning"] .sl-dot{background:var(--gold)}
#statusLine[data-level="error"]   .sl-dot{background:var(--rd);animation:slPulse 1.6s ease infinite}
@keyframes slPulse{0%,100%{opacity:1}50%{opacity:.35}}

.sl-kind{font-size:9px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--tx3);flex-shrink:0}
#statusLine[data-level="warning"] .sl-kind{color:var(--gold)}
#statusLine[data-level="error"]   .sl-kind{color:var(--rd)}
#statusLine[data-level="success"] .sl-kind{color:var(--gr)}

.sl-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tx2)}
.sl-text b{color:var(--tx);font-weight:700}

.sl-age{font-size:9.5px;color:var(--tx3);flex-shrink:0}

.sl-more{
  font-size:9px;font-weight:800;letter-spacing:.4px;
  color:var(--ac);background:rgba(var(--acr),.12);
  border:1px solid rgba(var(--acr),.25);
  border-radius:999px;padding:2px 7px;flex-shrink:0;cursor:pointer;
}
.sl-more:hover{background:rgba(var(--acr),.2)}
.sl-more[hidden]{display:none}

.sl-x{
  width:18px;height:18px;border-radius:5px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:none;border:0;padding:0;cursor:pointer;
  color:var(--tx3);font-size:12px;line-height:1;font-family:var(--fn);
  transition:background .15s,color .15s;
}
.sl-x:hover{background:var(--tint-3);color:var(--tx)}
.sl-x:focus-visible{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--ac);outline:none}

#statusLine .sl-text,#statusLine .sl-kind{cursor:pointer}

@media (prefers-reduced-motion:reduce){
  #statusLine[data-level="error"] .sl-dot{animation:none}
}

/* ---------- Matikan total kartu toast lama ---------- */
#tw{display:none!important}

/* ===== /assets/css/beranda-cards.css ===== */
/* v36g: dipindah dari 45c-beranda-cards.js (injeksi <style> dilarang style-src-elem) */
.brk-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:0 0 12px}
.brk-scard{background:var(--sf);border:1px solid var(--bd);border-radius:14px;padding:13px 14px;display:flex;flex-direction:column;gap:9px;min-width:0}
.brk-sc-hd{display:flex;align-items:center;gap:8px}
.brk-sc-ic{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;background:rgba(var(--acr),.12);border:1px solid rgba(var(--acr),.28);flex:0 0 auto}
.brk-sc-t{font-size:11px;font-weight:700;color:var(--tx3);letter-spacing:.03em;text-transform:uppercase}
.brk-sc-big{font-size:19px;font-weight:800;color:var(--tx);line-height:1.15}
.brk-sc-sub{font-size:11.5px;color:var(--tx2);line-height:1.4}
.brk-sc-link{font-size:11.5px;font-weight:700;color:var(--ac);cursor:pointer;margin-top:auto}
.brk-sc-link:hover{opacity:.8}
.brk-sc-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px}
.brk-sc-row + .brk-sc-row{margin-top:7px}
.brk-sc-pair{font-weight:700;color:var(--tx);display:flex;align-items:center;gap:6px;min-width:0}
.brk-sc-dir{font-size:9px;font-weight:800;padding:1px 6px;border-radius:999px;background:var(--sf2,rgba(255,255,255,.05));color:var(--tx3)}
.brk-res{font-size:9.5px;font-weight:800;padding:2px 7px;border-radius:999px;white-space:nowrap}
.brk-res.win{background:rgba(52,211,153,.14);color:#34D399}
.brk-res.loss{background:rgba(248,113,113,.14);color:#F87171}
.brk-res.veto{background:rgba(148,163,184,.16);color:var(--tx3)}
.brk-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.brk-dot.on{background:#34D399}
.brk-dot.off{background:var(--tx3)}
.brk-agchips{display:flex;flex-wrap:wrap;gap:5px}
.brk-agchip{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:600;color:var(--tx2);background:var(--sf2,rgba(255,255,255,.04));border:1px solid var(--bd);padding:3px 8px;border-radius:999px}
.brk-kpi{display:flex;gap:16px;flex-wrap:wrap}
.brk-kpi > div{display:flex;flex-direction:column;gap:1px}
.brk-kpi .k{font-size:10px;color:var(--tx3);font-weight:600}
.brk-kpi .v{font-size:16px;font-weight:800;color:var(--tx)}
.stage-badge{display:inline-flex;align-items:center;gap:5px;font-size:9px;font-weight:800;letter-spacing:.05em;padding:2px 7px;border-radius:999px;background:rgba(245,158,11,.14);color:#F59E0B;border:1px solid rgba(245,158,11,.35);text-transform:uppercase;vertical-align:middle;white-space:nowrap}
.stage-badge::before{content:'';width:5px;height:5px;border-radius:50%;background:#F59E0B}

/* ===== /assets/css/chart-pro.css ===== */
/* chart-pro.css | v37 — bingkai & tombol untuk mesin chart TIAChart.
   Tidak ada satu pun atribut style= baru: semua lewat kelas (CSP ketat). */

.cpro-wrap{
  background:var(--card);
  border:1px solid var(--b1);
  border-radius:12px;
  padding:8px 10px 6px;
  margin:8px 0;
}
.cpro-wrap:fullscreen{
  border-radius:0;
  padding:10px 14px;
  background:var(--bg,#0B1220);
  display:flex;
  flex-direction:column;
}
.cpro-wrap:fullscreen .cpro-canvas{flex:1;min-height:0}

.cpro-bar{
  display:flex;
  align-items:center;
  gap:5px;
  flex-wrap:wrap;
  margin-bottom:7px;
}
.cpro-grp{
  display:flex;
  gap:3px;
  padding:2px;
  background:rgba(148,163,184,.08);
  border:1px solid var(--b1);
  border-radius:8px;
}
.cpro-btn{
  appearance:none;
  background:transparent;
  border:0;
  border-radius:6px;
  color:var(--tx3);
  font-family:var(--mono);
  font-size:10.5px;
  font-weight:700;
  letter-spacing:.02em;
  padding:4px 8px;
  cursor:pointer;
  line-height:1.2;
  white-space:nowrap;
}
.cpro-btn:hover{background:rgba(148,163,184,.16);color:var(--tx)}
.cpro-btn:focus-visible{outline:2px solid var(--ac,#3B82F6);outline-offset:1px}
.cpro-btn[aria-pressed="true"]{background:var(--ac,#3B82F6);color:#0B1220}

.cpro-sep{flex:1}

.cpro-note{
  font-size:10px;
  color:var(--tx3);
  line-height:1.45;
  margin-top:5px;
  display:block;
}
.cpro-note.is-sim{color:#FBBF24}

.cpro-canvas{
  position:relative;
  width:100%;
  min-height:180px;
  overscroll-behavior:contain;
}
.cpro-canvas .tiachart-cv{display:block;width:100%}

.cpro-hint{
  font-size:9.5px;
  color:var(--tx3);
  opacity:.75;
  margin-top:3px;
}

@media (max-width:640px){
  .cpro-btn{padding:4px 6px;font-size:10px}
  .cpro-hint{display:none}
}

/* ---- v39: popover setelan indikator (gaya TradingView) ------------------- */
.cpro-wrap{position:relative}
.cpro-set{
  position:absolute;top:44px;right:10px;z-index:40;width:266px;max-height:74%;
  overflow-y:auto;background:var(--card,#0F172A);border:1px solid var(--b1,rgba(255,255,255,.1));
  border-radius:10px;padding:10px 12px 12px;box-shadow:0 14px 40px rgba(0,0,0,.5)
}
.cpro-set-hd{
  display:flex;align-items:center;justify-content:space-between;font-size:11.5px;
  font-weight:700;letter-spacing:.02em;color:var(--tx,#E2E8F0);margin-bottom:8px
}
.cpro-x{background:none;border:0;color:var(--tx3,#94A3B8);font-size:16px;line-height:1;cursor:pointer;padding:0 2px}
.cpro-x:hover{color:var(--tx,#E2E8F0)}
.cpro-fld{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:5px 0}
.cpro-fld span{font-size:10.5px;color:var(--tx3,#94A3B8);flex:1}
.cpro-fld input{
  width:84px;background:var(--bg,#0B1220);border:1px solid var(--b1,rgba(255,255,255,.12));
  border-radius:6px;padding:4px 6px;color:var(--tx,#E2E8F0);
  font:400 11px/1.3 var(--mono,ui-monospace,monospace)
}
.cpro-fld input:focus-visible{outline:2px solid var(--ac,#3B82F6);outline-offset:1px}
.cpro-set-ft{display:flex;gap:6px;margin-top:10px}
.cpro-set-ft .cpro-btn{flex:1;justify-content:center}
@media (max-width:640px){ .cpro-set{right:6px;left:6px;width:auto} }

/* ===== /assets/css/fx-scanner.css ===== */
/* v36g: dipindah dari 86j-fx-scanner.js (injeksi <style> dilarang style-src-elem) */
.fxsk{position:relative;overflow:hidden;border-radius:10px;background:rgba(148,163,184,.16);min-height:12px}
.fxsk::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);animation:fxsh 1.3s infinite}
@keyframes fxsh{from{transform:translateX(-100%)}
to{transform:translateX(100%)}
}
.fxrel{color:var(--tx3);font-size:9.5px}
@media(max-width:640px){#fxScanBtn{width:100%;height:44px;font-size:14px}
#fxSigStats>div{min-width:calc(50% - 8px)!important}
.fxact{flex-direction:column}
.fxact .wbtn{width:100%;height:46px;font-size:14px}
#fxSigQ{height:44px;font-size:14px}
#v-signal .wbtn{min-height:40px}
}
