/* Base: reset, design tokens, layout, components, tables, news, skeletons, trade cards, index chart, best-trades */
*{margin:0;padding:0;box-sizing:border-box}
:root{
  /* Subtle mono palette (Linear / Vercel inspired). Surfaces are near-white;
     accent only where data demands it (red/green for moves, blue for actions). */
  --bg:#fff;
  --bg2:#fafafa;          /* subtle row-alt / chip background */
  --bg3:#f4f4f5;          /* hover / pressed */
  --border:#e4e4e7;       /* default 1px border */
  --border-strong:#d4d4d8;
  --text:#18181b;         /* almost black */
  --text2:#52525b;        /* secondary */
  --text3:#a1a1aa;        /* muted / tertiary */
  --muted:#a1a1aa;        /* alias used in older CSS */
  /* Data accents — only used for live numbers, status, and CTAs. */
  --green:#15803d;        /* tighter, less neon */
  --green-bg:#f0fdf4;
  --red:#b91c1c;
  --red-bg:#fef2f2;
  --blue:#2563eb;
  --blue-bg:#eff6ff;
  --yellow:#a16207;
  --yellow-bg:#fefce8;
  --shadow-sm:0 1px 2px rgba(0,0,0,0.04);
  --shadow-md:0 2px 8px rgba(0,0,0,0.06);
  --radius-sm:6px;--radius-md:10px;--radius-lg:12px;
}
body{font-family:-apple-system,BlinkMacSystemFont,"Inter","Segoe UI",Roboto,sans-serif;
  background:var(--bg);color:var(--text);line-height:1.5;font-size:14px;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--blue);text-decoration:none}

/* Layout */
.header{border-bottom:1px solid var(--border);padding:10px 24px;display:flex;
  align-items:center;gap:28px;background:rgba(255,255,255,0.82);
  backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);
  position:sticky;top:0;z-index:10}
.header-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;
  padding:2px 4px;border-radius:8px;transition:opacity .15s}
.header-brand:hover{opacity:.85}
.header-brand .brand-mark{display:inline-flex;align-items:center;justify-content:center;
  flex-shrink:0;filter:drop-shadow(0 1px 2px rgba(37,99,235,.18))}
.header-brand .brand-mark svg{display:block}
.brand-text{display:flex;flex-direction:column;line-height:1.1}
.brand-name{font-size:18px;font-weight:700;letter-spacing:-0.4px;color:var(--text)}
.brand-tagline{font-size:10px;color:var(--text3);letter-spacing:.3px;margin-top:2px;font-weight:500}
.nav{display:flex;gap:2px;padding:3px;background:var(--bg2);border-radius:999px}
.nav button{background:none;border:none;padding:7px 16px;border-radius:999px;
  cursor:pointer;font-size:13px;color:var(--text2);font-weight:600;transition:all .15s;
  letter-spacing:-0.1px}
.nav button:hover{color:var(--text)}
.nav button.active{background:var(--bg);color:var(--blue);
  box-shadow:0 1px 3px rgba(15,23,42,.08),0 0 0 1px rgba(15,23,42,.04)}
.header-meta{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text2);font-weight:500}
.header-meta .live-dot{width:7px;height:7px;border-radius:50%;background:var(--green);
  box-shadow:0 0 0 3px rgba(22,163,74,.18);animation:pulse-dot 2s infinite}
.header-meta.closed .live-dot{background:var(--text3);box-shadow:none;animation:none}
@keyframes pulse-dot{0%,100%{box-shadow:0 0 0 3px rgba(22,163,74,.18)}50%{box-shadow:0 0 0 6px rgba(22,163,74,.06)}}
.container{max-width:1200px;margin:0 auto;padding:16px 24px}

@media(max-width:640px){
  .header{padding:8px 14px;gap:12px}
  .brand-tagline{display:none}
  .brand-name{font-size:15px}
  .nav button{padding:6px 12px;font-size:12px}
  .header-meta{display:none}
}

/* Cards */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin:16px 0}
.card{border:1px solid var(--border);border-radius:12px;padding:20px;background:var(--bg);
  transition:box-shadow .15s}
.card:hover{box-shadow:0 2px 8px rgba(0,0,0,.06)}
.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.card-title{font-size:15px;font-weight:600}
.badge{display:inline-block;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:600}
.badge-green{background:var(--green-bg);color:var(--green)}
.badge-red{background:var(--red-bg);color:var(--red)}
.badge-yellow{background:var(--yellow-bg);color:var(--yellow)}
.badge-blue{background:var(--blue-bg);color:var(--blue)}
.big-number{font-size:28px;font-weight:700;letter-spacing:-1px;line-height:1.1}
.sub{font-size:12px;color:var(--text2);margin-top:4px}
.positive{color:var(--green)}.negative{color:var(--red)}.neutral{color:var(--text2)}
.divider{border-top:1px solid var(--border);margin:12px 0}

/* Signals */
.signal{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:13px}
.signal-icon{width:18px;text-align:center;font-size:12px}
.signal-name{font-weight:500;min-width:100px}
.signal-reading{color:var(--text2);flex:1}

/* Table */
.table-wrap{overflow-x:auto;margin:16px 0}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;padding:8px 12px;border-bottom:2px solid var(--border);
  font-weight:600;color:var(--text2);font-size:12px;text-transform:uppercase;letter-spacing:.5px}
td{padding:8px 12px;border-bottom:1px solid var(--border)}
tr:hover td{background:var(--bg2)}
.mono{font-family:"SF Mono",Consolas,monospace;font-size:12px}

/* Tabs for sub-views */
.section-title{font-size:16px;font-weight:600;margin:24px 0 12px}
.filter-bar{display:flex;gap:8px;margin:12px 0;flex-wrap:wrap}
.filter-bar select,.filter-bar input{padding:6px 12px;border:1px solid var(--border);
  border-radius:8px;font-size:13px;background:var(--bg)}

/* News */
.news-item{padding:8px 0;border-bottom:1px solid var(--border)}
.news-score{display:inline-block;min-width:36px;text-align:center;padding:2px 6px;
  border-radius:6px;font-size:11px;font-weight:700}
.news-title{font-size:13px;margin-left:8px}
.news-source{font-size:11px;color:var(--text2);margin-left:8px}
.news-ctx{font-size:11px;color:var(--blue);margin-left:4px}

/* Sparkline canvas */
.sparkline{height:32px;width:100%}

/* Loading */
.loading{text-align:center;padding:40px;color:var(--text2)}

/* ─── Skeleton shimmer placeholders ───────────────────────────────────── */
.skel{background:linear-gradient(90deg,var(--bg2) 25%,rgba(0,0,0,0.04) 50%,var(--bg2) 75%);
  background-size:200% 100%;animation:skel-shimmer 1.3s ease-in-out infinite;border-radius:6px}
.skel-line{margin:6px 0}
.skel-block{margin:8px 0;border-radius:10px}
.skel-card{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px 14px}
.skel-card .tk-name{font-size:11px;font-weight:700;color:var(--text3);letter-spacing:.5px;text-transform:uppercase;margin-bottom:6px}
@keyframes skel-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.empty{text-align:center;padding:40px;color:var(--text2)}

/* Trade cards */
.trade-card{border:1px solid var(--border);border-radius:12px;padding:20px;background:var(--bg);
  position:relative;overflow:hidden}
.trade-card.best{border-color:var(--green);background:linear-gradient(135deg,var(--green-bg) 0%,var(--bg) 100%)}
.trade-card .rank{position:absolute;top:12px;right:16px;font-size:32px;font-weight:800;
  color:var(--border);line-height:1}
.trade-card .strike-label{font-size:20px;font-weight:700;letter-spacing:-0.5px}
.trade-card .profit-big{font-size:24px;font-weight:700;color:var(--green);letter-spacing:-0.5px}
.trade-flow{display:flex;align-items:center;gap:8px;margin:12px 0;font-size:13px}
.trade-flow .entry,.trade-flow .exit{padding:8px 12px;border-radius:8px;flex:1}
.trade-flow .entry{background:var(--blue-bg);border:1px solid #bfdbfe}
.trade-flow .exit{background:var(--green-bg);border:1px solid #bbf7d0}
.trade-flow .arrow{font-size:18px;color:var(--text2);flex-shrink:0}
.trade-meta{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;font-size:13px;margin-top:8px}
.trade-meta>div{padding:8px;background:var(--bg2);border-radius:8px}
.trade-meta .label{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:.3px}
.trade-meta .value{font-weight:600;margin-top:2px}

/* Index pills */
.idx-pills{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.idx-pill{padding:6px 14px;border:1px solid var(--border);border-radius:20px;cursor:pointer;
  font-size:12px;font-weight:600;background:var(--bg);color:var(--text2);transition:all .15s}
.idx-pill:hover{background:var(--bg2)}
.idx-pill.active{background:var(--blue);color:#fff;border-color:var(--blue)}

/* Monthly calendar */
.cal-wrap{margin:12px 0}
.cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.cal-header .cal-title{font-size:14px;font-weight:700}
.cal-header button{background:none;border:1px solid var(--border);border-radius:6px;
  padding:4px 10px;cursor:pointer;font-size:12px;color:var(--text2)}
.cal-header button:hover{background:var(--bg2)}
.cal-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--border);
  border:1px solid var(--border);border-radius:8px;overflow:hidden}
.cal-grid .cal-dow{background:var(--bg2);padding:6px 4px;text-align:center;font-size:10px;
  font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.5px}
.cal-grid .cal-day{background:var(--bg);padding:6px 4px;text-align:center;min-height:38px;
  font-size:12px;color:var(--text2);position:relative;transition:all .1s}
.cal-day.other-month{color:var(--border)}
.cal-day.today{font-weight:700;color:var(--text)}
.cal-day.today::after{content:'';position:absolute;bottom:2px;left:50%;transform:translateX(-50%);
  width:4px;height:4px;border-radius:50%;background:var(--blue)}
.cal-day.expiry{background:var(--blue-bg);color:var(--blue);font-weight:700;cursor:pointer;
  border-radius:6px;transition:all .15s ease}
.cal-day.expiry:hover{background:#dbeafe;transform:scale(1.08);
  box-shadow:0 2px 8px rgba(59,130,246,0.25);z-index:2}
.cal-day.expiry.monthly{background:var(--green-bg);color:var(--green)}
.cal-day.expiry.monthly:hover{background:#dcfce7;box-shadow:0 2px 8px rgba(22,163,74,0.25)}
.cal-day.expiry.selected{background:var(--blue);color:#fff;font-weight:800;
  box-shadow:0 2px 10px rgba(59,130,246,0.35)}
.cal-day .cal-num{font-size:13px;line-height:1}
.cal-day .cal-dot{width:5px;height:5px;border-radius:50%;margin:2px auto 0;display:none}
.cal-day.expiry .cal-dot{display:block;background:var(--blue)}
.cal-day.expiry.monthly .cal-dot{background:var(--green)}
.cal-day.expiry.selected .cal-dot{background:#fff}
.cal-hint{font-size:11px;color:var(--text2);text-align:center;margin:8px 0 4px;
  display:flex;align-items:center;justify-content:center;gap:4px}
.cal-hint svg{width:14px;height:14px;opacity:0.5}

/* Index chart */
.idx-chart{padding:14px 16px;border:1px solid var(--border);border-radius:12px;margin-bottom:14px;
  background:var(--bg)}
.idx-chart-top{display:flex;align-items:center;gap:16px;margin-bottom:10px}
.idx-chart .idx-info{white-space:nowrap}
.idx-chart-canvas-wrap{position:relative;width:100%;height:140px;cursor:crosshair}
.idx-chart-canvas-wrap canvas{width:100%;height:100%;display:block}
.idx-chart-tooltip{position:absolute;pointer-events:none;background:var(--bg);
  border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:11px;
  box-shadow:0 4px 12px rgba(0,0,0,0.12);white-space:nowrap;display:none;z-index:10;
  line-height:1.5}
.idx-chart-crosshair{position:absolute;top:0;bottom:0;width:1px;
  background:var(--text2);opacity:0.2;pointer-events:none;display:none}
.idx-chart-dot{position:absolute;width:8px;height:8px;border-radius:50%;
  pointer-events:none;display:none;z-index:5;transform:translate(-50%,-50%);
  box-shadow:0 0 0 3px rgba(255,255,255,0.9)}
.tf-pills{display:flex;gap:2px;margin-left:auto}
.tf-pill{padding:4px 10px;border:none;border-radius:6px;cursor:pointer;
  font-weight:600;font-size:11px;background:transparent;color:var(--text2);transition:all .15s}
.tf-pill:hover{background:var(--bg2)}
.tf-pill.active{background:var(--blue);color:#fff}

/* Best Trades Leaderboard */
.best-trades{border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:14px}
.best-trades-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.best-trades-title{font-size:14px;font-weight:700;color:var(--text)}
.period-pills{display:flex;gap:2px}
.period-pill{padding:4px 10px;border:none;border-radius:6px;cursor:pointer;
  font-weight:600;font-size:11px;background:transparent;color:var(--text2);transition:all .15s}
.period-pill:hover{background:var(--bg2)}
.period-pill.active{background:var(--blue);color:#fff}
.best-trade-row{display:flex;align-items:center;gap:12px;padding:8px 0;
  border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s}
.best-trade-row:last-child{border-bottom:none}
.best-trade-row:hover{background:var(--bg2);border-radius:6px;margin:0 -8px;padding:8px}
.best-trade-rank{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:11px;font-weight:800;flex-shrink:0}
.best-trade-rank.gold{background:#fef3c7;color:#92400e}
.best-trade-rank.silver{background:#f3f4f6;color:#4b5563}
.best-trade-rank.bronze{background:#fed7aa;color:#9a3412}
.best-trade-rank.normal{background:var(--bg2);color:var(--text2)}
.best-trade-type{padding:2px 6px;border-radius:4px;font-size:10px;font-weight:700;flex-shrink:0}
.best-trade-type.CE{background:#dbeafe;color:#1d4ed8}
.best-trade-type.PE{background:#fce7f3;color:#be185d}
.best-trade-info{flex:1;min-width:0}
.best-trade-strike{font-size:13px;font-weight:600}
.best-trade-meta{font-size:10px;color:var(--text2)}
.best-trade-profit{text-align:right;flex-shrink:0}
.best-trade-pct{font-size:14px;font-weight:700;color:var(--green)}
.best-trade-amt{font-size:10px;color:var(--text2)}

/* Detail mode pills */
.mode-pills{display:flex;gap:4px;margin-bottom:14px}
.mode-pill{padding:6px 18px;border:none;border-radius:8px;cursor:pointer;
  font-weight:600;font-size:13px;background:var(--bg2);color:var(--text2);transition:all .15s}
.mode-pill.active{background:var(--blue);color:#fff}


