html{scroll-behavior:smooth}body{background:#0B0F14}
::selection{background:#D4A94F;color:#0B0F14}
.tabular{font-variant-numeric:tabular-nums}
.focusable:focus-visible{outline:2px solid #D4A94F;outline-offset:2px;border-radius:4px}
#marquee{will-change:transform;backface-visibility:hidden}
.skeleton{background:linear-gradient(90deg,#1A222E 25%,#232D3B 37%,#1A222E 63%);background-size:400% 100%;animation:sk 1.4s ease infinite}
.skeleton.h-4{height:1rem}.skeleton.h-8{height:2rem}
@keyframes sk{0%{background-position:100% 50%}100%{background-position:0 50%}}
.logo-wrap{width:32px;height:32px;border-radius:8px;background:#1A222E;border:1px solid #232D3B;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}
.logo-wrap img{width:100%;height:100%;object-fit:contain}.logo-fallback{font-size:11px;font-weight:700;color:#D4A94F}
.card-active{border-color:#D4A94F!important}
.evchip{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;padding:1px 7px;border-radius:4px;border:1px solid;white-space:nowrap}
.evfbtn{font-size:12px;padding:5px 12px;border-radius:6px;border:1px solid #2C3646;color:#8493A8;transition:.15s}
.evfbtn:hover{border-color:rgba(212,169,79,.5)}
.evfbtn[aria-pressed=true]{border-color:#D4A94F;color:#D4A94F;background:rgba(212,169,79,.1)}
.evfbtn:disabled{opacity:.35;pointer-events:none}
.evcard{position:relative;border:1px solid #232D3B;background:#12171F;border-radius:10px;padding:14px 16px 14px 20px;overflow:hidden}
.evcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--evc,#586275)}
.nav a{color:#8493A8;padding:6px 2px;border-bottom:2px solid transparent}.nav a:hover{color:#E7ECF3}
.nav a[aria-current=page]{color:#D4A94F;border-bottom-color:#D4A94F}
.dot{width:7px;height:7px;border-radius:9999px;display:inline-block}
@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.pop{animation:pop .22s ease-out}

/* ===== Kalender ===== */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal-h{font-size:11px;color:#586275;text-align:center;padding:6px 0;border-bottom:2px solid transparent}
.cal-h.wknd{color:#6B7689}
.cal-h.now{color:#D4A94F;font-weight:600;border-bottom-color:#D4A94F}
.cal-d{position:relative;min-height:60px;border:1px solid #232D3B;background:#0B0F14;border-radius:8px;padding:5px 5px 6px;text-align:left;display:flex;flex-direction:column;gap:4px;overflow:hidden;transition:border-color .15s,background .15s}
.cal-d.empty{visibility:hidden}
.cal-d.closed,.cal-d.closed.has{background:repeating-linear-gradient(135deg,#0D1218 0 6px,#121923 6px 12px);border-style:dashed;border-color:#222C3A}
.cal-d.closed .n{color:#6B7689}
.cal-d.hol,.cal-d.hol.has{background:repeating-linear-gradient(135deg,rgba(242,89,107,.09) 0 6px,rgba(242,89,107,.02) 6px 12px);border-color:rgba(242,89,107,.35)}
.cal-d.hol .n{color:#F2A0AA}
.cal-d.has{background:#12171F}
.cal-d.past{opacity:.5}
.cal-d.past:hover,.cal-d.past.sel{opacity:1}
.cal-d:hover{border-color:rgba(212,169,79,.5)}
.cal-d.hi::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:#F2596B}
.cal-top{display:flex;align-items:center;gap:6px;min-height:24px}
.cal-d .n{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;border-radius:9999px;font-size:12px;color:#C5CEDB}
.cal-d .cnt{margin-left:auto;font-size:10px;color:#8493A8;background:#1A222E;border-radius:9999px;padding:0 6px;line-height:16px}
.cal-d.sel{border-color:#E7ECF3;box-shadow:0 0 0 1px rgba(231,236,243,.45)}
.today-tag{display:none;font-size:10px;font-weight:600;color:#D4A94F}
/* hari ini: lingkaran emas penuh + bingkai + label */
.cal-d.today{border-color:#D4A94F;background:linear-gradient(180deg,rgba(212,169,79,.16),rgba(212,169,79,.04) 70%);box-shadow:0 0 0 1px #D4A94F,0 0 20px rgba(212,169,79,.22);opacity:1}
.cal-d.today .n{background:#D4A94F;color:#0B0F14;font-weight:700}
.cal-d.today.closed,.cal-d.today.closed.hol,.cal-d.today.closed.has{border-style:solid;border-color:#D4A94F;background:linear-gradient(180deg,rgba(212,169,79,.16),rgba(212,169,79,.04) 70%)}
.cal-d.today.closed .n{color:#0B0F14}
.cal-d.today.sel{box-shadow:0 0 0 2px #D4A94F,0 0 0 4px rgba(231,236,243,.4),0 0 20px rgba(212,169,79,.22)}
.cal-d.today::after{content:"";position:absolute;inset:0;border-radius:8px;border:2px solid #D4A94F;opacity:0;pointer-events:none;animation:ring 2.4s ease-out infinite}
@keyframes ring{0%{opacity:.7;transform:scale(1)}100%{opacity:0;transform:scale(1.06)}}
.cal-evs{display:none;flex-direction:column;gap:3px;min-width:0}
.cal-dots{display:flex;gap:3px;flex-wrap:wrap;padding:0 2px}
.cev{display:block;font-size:10.5px;line-height:1.25;padding:2px 6px;border-radius:4px;color:#E7ECF3;background:color-mix(in srgb,var(--c) 16%,transparent);border-left:3px solid var(--c);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mkt{display:none;margin-top:auto;align-items:center;gap:4px;font-size:10px;color:#6B7689;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mkt.hol{color:#F2A0AA}
.mkt::before{content:"";width:6px;height:6px;border-radius:9999px;border:1.5px solid currentColor;flex-shrink:0}
.cmore{font-size:10px;color:#8493A8;padding-left:4px}
@media(min-width:640px){
  .cal{gap:6px}
  .cal-d{min-height:112px;padding:7px 8px 8px}
  .cal-evs{display:flex}.cal-dots{display:none}
  .today-tag{display:inline}
  .mkt{display:flex}
}
@media(prefers-reduced-motion:reduce){.cal-d.today::after{animation:none;opacity:0}html{scroll-behavior:auto}}
/* ringkasan "berikutnya" */
.nextup{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid rgba(242,89,107,.4);background:linear-gradient(90deg,rgba(242,89,107,.12),rgba(242,89,107,.02));border-radius:8px;padding:10px 14px;margin-bottom:14px;transition:.15s}
.nextup:hover{border-color:rgba(242,89,107,.8)}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:14px;padding-top:12px;border-top:1px solid #232D3B;font-size:11px;color:#8493A8;align-items:center}
.legend .n-demo{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:9999px;background:#D4A94F;color:#0B0F14;font-size:10px;font-weight:700}
.mktbar{display:flex;align-items:center;gap:10px;border:1px solid;border-radius:8px;padding:10px 14px;font-size:12px;line-height:1.5;margin-bottom:12px}
.mktbar b{color:#E7ECF3;font-weight:600}
.mktbar svg{flex-shrink:0}
.mktbar.closed{border-color:#2C3646;color:#8493A8;background:repeating-linear-gradient(135deg,#0D1218 0 8px,#12171F 8px 16px)}
.mktbar.hol{border-color:rgba(242,89,107,.4);color:#F2A0AA;background:repeating-linear-gradient(135deg,rgba(242,89,107,.1) 0 8px,rgba(242,89,107,.03) 8px 16px)}
.mktbar.open{border-color:rgba(63,207,142,.35);color:#9BE3C2;background:rgba(63,207,142,.06)}
.swatch-closed{display:inline-block;width:16px;height:16px;border-radius:4px;border:1px dashed #3A4659;background:repeating-linear-gradient(135deg,#0D1218 0 3px,#1A222E 3px 6px)}
.swatch-hol{border-color:rgba(242,89,107,.6);background:repeating-linear-gradient(135deg,rgba(242,89,107,.25) 0 3px,rgba(242,89,107,.05) 3px 6px)}
.scn{margin-top:12px;border:1px solid #232D3B;border-radius:8px;padding:10px 12px;background:#0B0F14}
.scn-h{font-size:10.5px;color:#8493A8;margin-bottom:6px}
.scn-row{display:grid;grid-template-columns:52px 1fr 1fr;gap:4px 10px;align-items:center;font-size:12px;padding:3px 0;border-top:1px dashed #232D3B}
.scn-row:first-of-type{border-top:0}
.scn-sym{font-weight:600;color:#E7ECF3}
.scn-meta{grid-column:2 / 4;font-size:10px;color:#586275}
@media(min-width:640px){.scn-row{grid-template-columns:52px 90px 90px 1fr}.scn-meta{grid-column:auto}}
/* ===== Alarm harga ===== */
.card-wrap{position:relative}
.bell{position:absolute;top:12px;right:12px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:9999px;border:1px solid #2C3646;background:#0B0F14;color:#8493A8;transition:.15s;z-index:2}
.bell:hover{color:#D4A94F;border-color:rgba(212,169,79,.6)}
.bell.on{color:#D4A94F;border-color:#D4A94F;background:rgba(212,169,79,.12)}
.bell-n{position:absolute;top:-5px;right:-5px;min-width:16px;height:16px;padding:0 4px;border-radius:9999px;background:#D4A94F;color:#0B0F14;font-size:10px;font-weight:700;line-height:16px;text-align:center}

#alarmModal{--ac:#3FCF8E}
#alarmModal.dn{--ac:#F2596B}
.alseg{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.alseg button{padding:9px 0;border-radius:8px;border:1px solid #2C3646;color:#8493A8;font-size:13px;font-weight:600;transition:.15s}
.alseg button[aria-pressed=true][data-aldir="1"]{border-color:#3FCF8E;color:#3FCF8E;background:rgba(63,207,142,.1)}
.alseg button[aria-pressed=true][data-aldir="-1"]{border-color:#F2596B;color:#F2596B;background:rgba(242,89,107,.1)}
.alrange{-webkit-appearance:none;appearance:none;width:100%;height:8px;border-radius:9999px;outline:none;cursor:pointer;background:linear-gradient(90deg,var(--ac) var(--fill,15%),#232D3B var(--fill,15%))}
.alrange::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;background:#E7ECF3;border:4px solid var(--ac);box-shadow:0 2px 8px rgba(0,0,0,.5)}
.alrange::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#E7ECF3;border:4px solid var(--ac)}
.alrange:focus-visible{outline:2px solid #D4A94F;outline-offset:6px}
.alchip{font-variant-numeric:tabular-nums;font-weight:600;min-width:58px}
.alchip.up:hover{border-color:rgba(63,207,142,.6)}.alchip.dn:hover{border-color:rgba(242,89,107,.6)}
.alchip.up[aria-pressed=true]{border-color:#3FCF8E;color:#3FCF8E;background:rgba(63,207,142,.12)}
.alchip.dn[aria-pressed=true]{border-color:#F2596B;color:#F2596B;background:rgba(242,89,107,.12)}
.alitem{display:flex;align-items:center;gap:10px;border:1px solid #232D3B;border-radius:8px;padding:9px 10px;background:#0B0F14}
.alitem .del{margin-left:auto;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px;color:#8493A8;border:1px solid #232D3B}
.alitem .del:hover{color:#F2596B;border-color:rgba(242,89,107,.6)}

#toasts{position:fixed;z-index:80;left:12px;right:12px;top:calc(60px + env(safe-area-inset-top,0px));display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
@keyframes drop{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}
.toast{pointer-events:auto;display:flex;align-items:center;gap:12px;width:100%;max-width:420px;background:#12171F;border:1px solid #2C3646;border-left:4px solid var(--tc);border-radius:10px;padding:12px 12px 12px 14px;box-shadow:0 10px 30px rgba(0,0,0,.5);animation:pop .22s ease-out}
.toast-b{flex:1;min-width:0}
.toast-t{font-size:14px;font-weight:600;color:#E7ECF3}
.toast-s{font-size:12px;color:#8493A8;margin-top:2px;line-height:1.4}
.toast-a{font-size:12px;font-weight:600;color:#0B0F14;background:#D4A94F;border-radius:6px;padding:6px 10px;white-space:nowrap}
.toast-x{color:#586275;font-size:14px;padding:4px}
.toast-x:hover{color:#E7ECF3}
.refresh-fab{position:fixed;z-index:40;top:calc(12px + env(safe-area-inset-top,0px));right:12px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:9999px;border:1px solid #2C3646;background:rgba(18,23,31,.92);backdrop-filter:blur(6px);color:#8493A8;box-shadow:0 4px 14px rgba(0,0,0,.45);transition:.15s}
.refresh-fab:hover{color:#D4A94F;border-color:rgba(212,169,79,.6)}
@keyframes spin{to{transform:rotate(360deg)}}
.refresh-fab.spin svg{animation:spin .8s linear infinite}
/* ===== Grafik kurs ===== */
.rate-i{position:absolute;top:12px;right:12px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:9999px;border:1px solid #2C3646;background:#0B0F14;color:#8493A8;transition:.15s}
.rate-i:hover{color:#D4A94F;border-color:rgba(212,169,79,.6)}
.rc-box{position:relative;width:100%;border:1px solid #232D3B;border-radius:8px;background:#0B0F14;padding:6px 0 0;overflow:hidden;min-height:190px}
.rc-stat{border:1px solid #232D3B;border-radius:8px;padding:8px 10px;background:#0B0F14;min-width:0}
.rc-stat p:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc-tip{position:absolute;top:6px;pointer-events:none;background:#12171F;border:1px solid #2C3646;border-radius:6px;padding:4px 8px;font-size:11px;line-height:1.35;white-space:nowrap;z-index:2}
.rc-tip.hidden{display:none}