  :root{
    --board:#14120F;
    --panel:#1D1A15;
    --panel-2:#26221B;
    --rule: rgba(237,230,214,0.10);
    --rule-strong: rgba(237,230,214,0.22);
    --amber:#FFB238;
    --amber-dim:#8a6a2c;
    --amber-glow: rgba(255,178,56,0.35);
    --bone:#EDE6D6;
    --muted:#9c9484;
    --up:#3FA34D;
    --down:#E05252;
    --font-display:'Barlow Condensed', sans-serif;
    --font-mono:'IBM Plex Mono', monospace;
    --font-body:'Inter', sans-serif;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{
    background:var(--board);
    color:var(--bone);
    font-family:var(--font-body);
    min-height:100vh;
    background-image:
      radial-gradient(ellipse 800px 400px at 15% -10%, rgba(255,178,56,0.06), transparent 60%),
      repeating-linear-gradient(180deg, rgba(255,255,255,0.012) 0px, rgba(255,255,255,0.012) 1px, transparent 1px, transparent 3px);
  }
  a{color:var(--amber);}
  ::selection{background:var(--amber-glow);}
  ::-webkit-scrollbar{width:10px;height:10px;}
  ::-webkit-scrollbar-track{background:var(--panel);}
  ::-webkit-scrollbar-thumb{background:var(--panel-2);border-radius:6px;border:2px solid var(--panel);}

  /* ---- Ticker marquee (signature element) ---- */
  .marquee-wrap{
    background:#0c0a08;
    border-bottom:1px solid var(--rule-strong);
    overflow:hidden;
    position:relative;
    height:38px;
    display:flex;
    align-items:center;
  }
  .marquee-wrap::before, .marquee-wrap::after{
    content:'';
    position:absolute; top:0; bottom:0; width:48px; z-index:2; pointer-events:none;
  }
  .marquee-wrap::before{ left:0; background:linear-gradient(90deg,#0c0a08, transparent); }
  .marquee-wrap::after{ right:0; background:linear-gradient(270deg,#0c0a08, transparent); }
  .marquee-track{
    display:flex; align-items:center; white-space:nowrap;
    animation: scroll-left 45s linear infinite;
    will-change: transform;
  }
  .marquee-wrap:hover .marquee-track{ animation-play-state: paused; }
  @keyframes scroll-left{ from{ transform:translateX(0);} to{ transform:translateX(-50%);} }
  .tick{
    font-family:var(--font-mono);
    font-size:12.5px;
    letter-spacing:0.02em;
    padding:0 22px;
    color:var(--bone);
    text-shadow:0 0 8px var(--amber-glow);
    display:inline-flex; gap:8px; align-items:center;
  }
  .tick b{color:var(--amber); font-weight:600;}
  .tick.up{color:var(--up);}
  .tick.down{color:var(--down);}
  @media (prefers-reduced-motion: reduce){
    .marquee-track{ animation:none; overflow-x:auto; }
  }

  /* ---- Top bar ---- */
  header.top{
    display:flex; align-items:center; justify-content:space-between;
    padding:16px 24px; border-bottom:1px solid var(--rule);
    gap:16px; flex-wrap:wrap;
  }
  .brand{ display:flex; align-items:baseline; gap:10px; }
  .brand .rupee{ font-family:var(--font-mono); color:var(--amber); font-size:26px; text-shadow:0 0 14px var(--amber-glow); }
  .brand h1{
    font-family:var(--font-display); font-weight:700; letter-spacing:0.03em;
    font-size:26px; margin:0; text-transform:uppercase; color:var(--bone);
  }
  .brand small{ font-family:var(--font-mono); color:var(--muted); font-size:11px; letter-spacing:0.08em; }
  .disclaimer{ font-size:11px; color:var(--muted); max-width:420px; line-height:1.5; }

  /* ---- Layout ---- */
  .app{ display:flex; min-height:calc(100vh - 38px - 74px); }
  aside.watchlist{
    width:300px; min-width:260px; border-right:1px solid var(--rule);
    background:var(--panel); display:flex; flex-direction:column;
  }
  .watchlist-head{ padding:14px 16px 10px; }
  .watchlist-head .label{
    font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.08em;
    color:var(--muted); font-size:13px; font-weight:600;
  }
  .group-row{ display:flex; align-items:center; gap:6px; }
  .group-select{
    flex:1; min-width:0; background:var(--panel-2); border:1px solid var(--rule-strong); color:var(--bone);
    padding:7px 8px; border-radius:4px; font-family:var(--font-display); text-transform:uppercase;
    letter-spacing:0.04em; font-size:12.5px; font-weight:600;
  }
  .group-btn{
    flex:0 0 24px; width:24px; height:24px; display:flex; align-items:center; justify-content:center;
    background:var(--panel-2); border:1px solid var(--rule-strong); border-radius:4px; color:var(--muted);
    cursor:pointer; font-size:12px; padding:0;
  }
  .group-btn:hover{ color:var(--amber); border-color:var(--amber); }
  .group-btn:disabled{ opacity:0.35; cursor:default; }
  .group-btn:disabled:hover{ color:var(--muted); border-color:var(--rule-strong); }
  .add-row{ display:flex; gap:6px; margin-top:10px; position:relative; }
  .add-row input{
    flex:1; background:var(--panel-2); border:1px solid var(--rule-strong); color:var(--bone);
    padding:8px 10px; border-radius:4px; font-family:var(--font-mono); font-size:13px;
    text-transform:uppercase;
  }
  .add-row input:focus{ outline:2px solid var(--amber); outline-offset:1px; }
  .add-row button{
    background:var(--amber); color:#1b1305; border:none; border-radius:4px;
    padding:0 14px; font-family:var(--font-display); font-weight:600; letter-spacing:0.04em;
    cursor:pointer; font-size:14px; text-transform:uppercase;
  }
  .add-row button:hover{ background:#ffc464; }
  .add-error{ color:var(--down); font-size:11.5px; margin-top:6px; min-height:14px; }
  .search-dropdown{
    position:absolute; top:calc(100% + 4px); left:0; right:0; z-index:20;
    background:var(--panel-2); border:1px solid var(--rule-strong); border-radius:6px;
    max-height:280px; overflow-y:auto; box-shadow:0 8px 24px rgba(0,0,0,0.4);
  }
  .search-item{
    display:flex; justify-content:space-between; align-items:center; gap:10px;
    padding:9px 12px; cursor:pointer; border-bottom:1px solid var(--rule);
  }
  .search-item:last-child{ border-bottom:none; }
  .search-item:hover, .search-item.hl{ background:var(--panel); }
  .search-item .si-sym{ font-family:var(--font-mono); font-weight:600; font-size:13px; color:var(--amber); }
  .search-item .si-name{ font-size:11.5px; color:var(--muted); text-align:right; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:150px; }
  .search-item.si-empty{ color:var(--muted); font-size:12px; cursor:default; padding:12px; }
  .search-item.si-empty:hover{ background:none; }

  .watchlist-items{ overflow-y:auto; flex:1; padding:4px 0 16px; }
  .stock-row{
    display:flex; align-items:center; gap:10px; padding:10px 16px;
    cursor:pointer; border-left:3px solid transparent; position:relative;
  }
  .stock-row:hover{ background:var(--panel-2); }
  .stock-row.active{ background:var(--panel-2); border-left-color:var(--amber); }
  .stock-row .meta{ flex:1; min-width:0; }
  .stock-row .sym{ font-family:var(--font-mono); font-weight:600; font-size:13.5px; color:var(--bone); }
  .stock-row .name{ font-size:11px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:150px; }
  .stock-row .px{ text-align:right; font-family:var(--font-mono); }
  .stock-row .px .p{ font-size:13.5px; }
  .stock-row .px .chg{ font-size:11px; }
  .up-color{ color:var(--up); }
  .down-color{ color:var(--down); }
  .spark{ display:block; }
  .row-btn{
    flex:0 0 22px; width:22px; height:22px; display:flex; align-items:center; justify-content:center;
    background:none; border:none; border-radius:4px; color:var(--muted);
    cursor:pointer; font-size:13px; padding:0; opacity:0; transition:opacity .15s, color .15s, background .15s;
  }
  .stock-row:hover .row-btn, .stock-row:focus-within .row-btn{ opacity:0.7; }
  .row-btn:hover{ opacity:1 !important; background:var(--panel-2); }
  .remove-x{ font-size:15px; }
  .remove-x:hover, .remove-x:active{ color:var(--down); }
  .rule-btn:hover, .rule-btn:active{ color:var(--amber); }
  .rule-btn.on{ color:var(--amber); opacity:1; }
  .rule-dot{
    display:inline-block; width:6px; height:6px; border-radius:50%; background:var(--amber);
    margin-left:6px; box-shadow:0 0 6px var(--amber-glow); vertical-align:middle;
  }

  /* ---- Header actions / Upstox / modals ---- */
  .header-actions{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
  .hdr-btn{
    background:var(--panel-2); border:1px solid var(--rule-strong); color:var(--bone);
    font-family:var(--font-mono); font-size:11.5px; letter-spacing:0.03em; padding:7px 12px;
    border-radius:4px; cursor:pointer; white-space:nowrap;
  }
  .hdr-btn:hover{ border-color:var(--amber); }
  .upstox-badge{
    font-family:var(--font-mono); font-size:11px; padding:6px 10px; border-radius:4px;
    border:1px solid var(--rule-strong); color:var(--muted); white-space:nowrap;
  }
  .upstox-badge.connected{ color:var(--up); border-color:var(--up); }
  .upstox-badge.disconnected{ color:var(--down); border-color:var(--down); cursor:pointer; }

  .market-status-badge{
    font-family:var(--font-mono); font-size:11px; padding:6px 10px; border-radius:4px;
    border:1px solid var(--rule-strong); color:var(--muted); white-space:nowrap;
  }
  .market-status-badge.open{ color:var(--up); border-color:var(--up); }
  .market-status-badge.closed{ color:var(--muted); border-color:var(--rule-strong); }

  .pause-hours-btn{
    font-family:var(--font-mono); font-size:11px; padding:6px 10px; border-radius:4px;
    border:1px solid var(--rule-strong); background:var(--panel-2); color:var(--muted); cursor:pointer;
    white-space:nowrap;
  }
  .pause-hours-btn:hover{ border-color:var(--amber); color:var(--amber); }
  .pause-hours-btn.active{ color:var(--bone); }
  .pause-hours-btn.active.paused{ color:var(--amber); border-color:var(--amber-dim); }

  .modal-overlay{
    display:none; position:fixed; inset:0; background:rgba(0,0,0,0.6); z-index:100;
    align-items:center; justify-content:center; padding:20px;
  }
  .modal-overlay.show{ display:flex; }
  .modal-box{
    background:var(--panel); border:1px solid var(--rule-strong); border-radius:8px;
    width:100%; max-width:420px; max-height:85vh; overflow-y:auto; padding:20px;
    box-shadow:0 20px 60px rgba(0,0,0,0.5);
  }
  .modal-box h3{
    margin:0 0 4px; font-family:var(--font-display); text-transform:uppercase;
    letter-spacing:0.04em; font-size:19px; color:var(--bone);
  }
  .modal-sub{ color:var(--muted); font-size:11.5px; margin-bottom:16px; }
  .field-row{ margin-bottom:12px; }
  .field-row label{
    display:block; font-family:var(--font-mono); font-size:11px; color:var(--muted);
    text-transform:uppercase; letter-spacing:0.05em; margin-bottom:5px;
  }
  .field-row select, .field-row input[type="number"], .field-row input[type="text"]{
    width:100%; background:var(--panel-2); border:1px solid var(--rule-strong); color:var(--bone);
    padding:8px 10px; border-radius:4px; font-family:var(--font-mono); font-size:13px;
  }
  .field-row .hint{ color:var(--muted); font-size:10.5px; margin-top:4px; }
  .field-check{ display:flex; align-items:center; gap:8px; }
  .field-check label{ margin:0; text-transform:none; font-size:12.5px; color:var(--bone); }
  .paper-warning{
    background:rgba(255,178,56,0.08); border:1px solid var(--amber-dim); color:var(--amber);
    font-size:11.5px; padding:8px 10px; border-radius:4px; margin-bottom:14px; line-height:1.5;
  }
  .modal-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }
  .modal-actions button{
    font-family:var(--font-display); text-transform:uppercase; font-weight:600; letter-spacing:0.03em;
    border-radius:4px; padding:9px 16px; cursor:pointer; font-size:13px; border:none;
  }
  .btn-save{ background:var(--amber); color:#1b1305; }
  .btn-save:hover{ background:#ffc464; }
  .btn-cancel{ background:var(--panel-2); color:var(--bone); border:1px solid var(--rule-strong) !important; }
  .btn-disable{ background:transparent; color:var(--down); border:1px solid var(--down) !important; margin-right:auto; }
  .trade-log-row{
    display:flex; justify-content:space-between; gap:10px; padding:8px 0;
    border-bottom:1px solid var(--rule); font-family:var(--font-mono); font-size:11.5px;
  }
  .trade-log-row:last-child{ border-bottom:none; }
  .trade-log-tag{ font-size:9.5px; padding:1px 6px; border-radius:3px; text-transform:uppercase; }
  .trade-log-tag.paper{ background:rgba(255,178,56,0.15); color:var(--amber); }
  .trade-log-tag.live{ background:rgba(224,82,82,0.15); color:var(--down); }

  .live-src-badge{
    display:inline-block; font-size:8.5px; font-weight:700; letter-spacing:0.04em; padding:1px 4px;
    border-radius:3px; background:rgba(63,163,77,0.15); color:var(--up); vertical-align:middle; margin-left:5px;
  }

  .rule-count-badge{
    display:inline-block; min-width:16px; padding:0 4px; margin-left:6px; border-radius:8px;
    background:var(--amber); color:#1b1305; font-size:10px; font-weight:700; line-height:16px; text-align:center;
  }
  .kill-switch-panel{
    background:var(--panel-2); border:1px solid var(--rule-strong); border-radius:8px; padding:12px 14px;
  }
  .kill-switch-panel.live-armed{
    border-color:var(--down); box-shadow:0 0 0 1px var(--down);
  }
  @keyframes liveBannerPulse{
    0%, 100% { opacity:1; }
    50% { opacity:0.72; }
  }
  .live-money-banner{
    background:rgba(224,82,82,0.16); border:1px solid var(--down); color:var(--down);
    border-radius:8px; padding:10px 14px; margin-bottom:10px; font-weight:700; font-size:13px;
    letter-spacing:0.02em; text-align:center; animation:liveBannerPulse 2s ease-in-out infinite;
  }
  .ks-row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
  .ks-row + .ks-row{ margin-top:10px; }
  .ks-label{ font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.03em; font-size:13px; color:var(--bone); }
  .ks-sub{ font-family:var(--font-mono); font-size:11px; color:var(--muted); margin-top:2px; }
  .ks-sub.paused{ color:var(--down); }
  .ks-row input[type="number"]{
    background:var(--panel); border:1px solid var(--rule-strong); color:var(--bone);
    padding:6px 8px; border-radius:4px; font-family:var(--font-mono); font-size:12.5px;
  }
  #ksPauseBtn.active{ border-color:var(--down); color:var(--down); }

  .rr-row{
    display:flex; align-items:center; gap:12px; padding:12px 14px; margin-top:10px;
    background:var(--panel); border:1px solid var(--rule); border-radius:8px;
  }
  .rr-row.disabled{ opacity:0.5; }
  .rr-main{ flex:1; min-width:0; }
  .rr-sym{ font-family:var(--font-mono); font-weight:600; font-size:14px; color:var(--bone); }
  .rr-sym .rr-mode{ font-size:9.5px; padding:1px 6px; border-radius:3px; text-transform:uppercase; margin-left:8px; vertical-align:middle; }
  .rr-mode.paper{ background:rgba(255,178,56,0.15); color:var(--amber); }
  .rr-mode.live{ background:rgba(224,82,82,0.15); color:var(--down); }
  button.rr-mode{ font-family:var(--font-mono); border:1px solid transparent; cursor:pointer; }
  button.rr-mode:hover{ border-color:currentColor; }
  button.rr-mode:disabled{ cursor:default; opacity:0.5; }
  .rr-detail{ font-family:var(--font-mono); font-size:11.5px; color:var(--muted); margin-top:4px; line-height:1.6; }
  .rr-detail b{ color:var(--bone); font-weight:600; }
  .rr-status{ font-size:11px; padding:3px 8px; border-radius:4px; white-space:nowrap; font-family:var(--font-mono); }
  .rr-status.idle{ color:var(--muted); border:1px solid var(--rule-strong); }
  .rr-status.placed, .rr-status.simulated{ color:var(--up); border:1px solid var(--up); }
  .rr-status.error, .rr-status.blocked, .rr-status.skipped, .rr-status.rejected{ color:var(--down); border:1px solid var(--down); }
  .rr-empty{ color:var(--muted); font-size:12.5px; padding:20px; text-align:center; }

  .advanced-details{ margin-top:4px; }
  .advanced-details summary{
    cursor:pointer; list-style:none; font-family:var(--font-mono); font-size:11.5px;
    color:var(--amber); padding:10px 0; border-top:1px solid var(--rule); user-select:none;
    display:flex; align-items:baseline; gap:8px; flex-wrap:wrap;
  }
  .advanced-details summary::-webkit-details-marker{ display:none; }
  .advanced-details summary::before{ content:"▸ "; }
  .advanced-details[open] summary::before{ content:"▾ "; }
  .advanced-details .advanced-hint{ font-family:var(--font-body); color:var(--muted); font-size:11px; }
  .advanced-details .advanced-body{ padding-top:4px; }

  .preset-row{ display:flex; gap:6px; margin:10px 0; flex-wrap:wrap; }
  .preset-btn{
    background:var(--panel-2); border:1px solid var(--rule-strong); color:var(--muted);
    font-family:var(--font-mono); font-size:11.5px; letter-spacing:0.03em; padding:7px 14px;
    border-radius:4px; cursor:pointer; flex:1; min-width:80px;
  }
  .preset-btn:hover{ color:var(--bone); }
  .preset-btn.active{ color:var(--amber); border-color:var(--amber); background:rgba(255,178,56,0.1); }

  .backtest-box{
    margin-top:6px; padding-top:16px; border-top:1px solid var(--rule);
  }
  .bt-stats{
    display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:14px;
  }
  .bt-stat{
    background:var(--panel-2); border:1px solid var(--rule); border-radius:6px; padding:10px 12px;
  }
  .bt-stat .bt-label{
    font-family:var(--font-mono); font-size:9.5px; text-transform:uppercase; letter-spacing:0.06em;
    color:var(--muted); margin-bottom:4px;
  }
  .bt-stat .bt-value{ font-family:var(--font-mono); font-size:17px; font-weight:600; color:var(--bone); }
  .bt-stat .bt-value.pos{ color:var(--up); }
  .bt-stat .bt-value.neg{ color:var(--down); }
  /* Gross -> costs -> net, stacked so the drag reads as a subtraction rather than a stat. */
  .bt-costs{
    margin-top:12px; padding:10px 12px; background:var(--panel-2);
    border:1px solid var(--rule); border-radius:6px; font-family:var(--font-mono); font-size:11.5px;
  }
  .bt-costs-row{
    display:flex; justify-content:space-between; align-items:baseline; gap:12px; padding:3px 0;
    color:var(--muted);
  }
  .bt-costs-row span:last-child{ font-weight:600; white-space:nowrap; }
  .bt-costs-row .pos{ color:var(--up); }
  .bt-costs-row .neg{ color:var(--down); }
  .bt-costs-net{
    border-top:1px solid var(--rule); margin-top:4px; padding-top:6px; color:var(--bone);
  }
  .bt-costs-foot{
    margin-top:8px; padding-top:6px; border-top:1px dashed var(--rule);
    font-family:var(--font-body); font-size:10.5px; color:var(--muted); line-height:1.5;
  }
  .bt-note{
    font-size:11.5px; color:var(--muted); margin-top:12px; line-height:1.5; padding:10px 12px;
    background:var(--panel-2); border-radius:6px;
  }

  .gates-panel{
    background:var(--panel-2); border:1px solid var(--rule-strong); border-radius:8px; padding:12px 14px;
    margin-top:14px;
  }
  .gp-readout{ font-family:var(--font-mono); font-size:11.5px; color:var(--muted); margin-top:2px; }
  .gp-readout b{ color:var(--bone); }

  .circuit-panel{
    background:var(--panel-2); border:1px solid var(--rule-strong); border-radius:8px; padding:12px 14px;
    margin-top:14px;
  }
  .beta-chip{
    display:inline-block; font-size:9px; padding:1px 6px; border-radius:3px; margin-left:6px;
    background:rgba(255,178,56,0.18); color:var(--amber); font-family:var(--font-mono); vertical-align:middle;
  }
  .circuit-warn{
    font-size:11.5px; color:var(--bone); line-height:1.6; margin:10px 0; padding:10px 12px;
    background:rgba(224,82,82,0.08); border:1px solid var(--down); border-radius:6px;
  }
  .circuit-warn b{ color:var(--down); font-weight:600; }
  .circuit-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0 14px; }
  .circuit-grid .field-row{ margin-bottom:10px; }
  .circuit-status{
    font-family:var(--font-mono); font-size:11.5px; color:var(--muted); margin-top:12px;
    padding-top:12px; border-top:1px solid var(--rule); line-height:1.8;
  }
  .circuit-status b{ color:var(--bone); }
  @media (max-width:560px){ .circuit-grid{ grid-template-columns:1fr; } }

  /* ---- Strategies tab ---- */
  .strat-intro{
    background:var(--panel); border:1px solid var(--rule); border-radius:8px; padding:16px 18px; margin-bottom:20px;
  }
  .strat-intro-head{
    font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.04em; font-size:15px;
    color:var(--amber); margin-bottom:8px;
  }
  .strat-intro p{ font-size:13px; color:var(--bone); line-height:1.6; margin:0 0 8px; }
  .strat-intro p:last-child{ margin-bottom:0; }
  .strat-intro p.strat-metric-note{ color:var(--muted); font-size:12px; }
  .strat-intro b{ color:var(--bone); font-weight:600; }

  .strat-controls{
    display:flex; align-items:flex-end; gap:14px; flex-wrap:wrap; margin-bottom:18px;
    padding-bottom:18px; border-bottom:1px solid var(--rule);
  }
  .strat-controls .field-row select{ min-width:140px; }

  .strat-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
  @media (max-width:900px){ .strat-grid{ grid-template-columns:1fr; } }

  .strat-card{
    background:var(--panel); border:1px solid var(--rule); border-radius:8px; padding:16px;
    display:flex; flex-direction:column;
  }
  .strat-card-head{ margin-bottom:10px; }
  .strat-name{
    font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.03em; font-size:16px;
    color:var(--bone); font-weight:600;
  }
  .strat-tagline{ font-size:11.5px; color:var(--muted); margin-top:2px; }
  .strat-explain{ font-size:12.5px; color:var(--bone); line-height:1.6; margin:0 0 8px; }
  .strat-example{
    font-size:12px; color:var(--muted); line-height:1.5; margin:0 0 14px;
    background:var(--panel-2); border-radius:6px; padding:8px 10px;
  }
  .strat-example b{ color:var(--amber); font-weight:600; }
  .strat-card .field-row{ margin-bottom:10px; }
  .strat-run-btn{ margin-top:2px; }
  .strat-apply-btn{
    margin-top:10px; width:100%; background:transparent; color:var(--amber); border:1px solid var(--amber-dim) !important;
  }
  .strat-apply-btn:hover{ background:rgba(255,178,56,0.1); }
  .strat-apply-live-btn{
    margin-top:6px; width:100%; background:transparent; color:var(--down); border:1px solid var(--down) !important;
  }
  .strat-apply-live-btn:hover{ background:rgba(224,82,82,0.12); }
  .strat-result{ margin-top:12px; min-height:0; }
  .strat-stats{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
  .ss{
    background:var(--panel-2); border:1px solid var(--rule); border-radius:6px; padding:8px 10px;
    display:flex; flex-direction:column; gap:2px;
  }
  .ss .ssl{ font-family:var(--font-mono); font-size:9.5px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); }
  .ss .ssv{ font-family:var(--font-mono); font-size:15px; font-weight:600; color:var(--bone); }
  .strat-note{ font-size:11.5px; color:var(--muted); margin-top:8px; line-height:1.5; }

  .ipo-asof{ font-family:var(--font-mono); font-size:11px; color:var(--muted); margin-bottom:6px; }
  .ipo-section{ margin-top:28px; }
  .ipo-section:first-of-type{ margin-top:0; }
  .ipo-columns{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; align-items:start; }
  .ipo-columns .ipo-section{ margin-top:0; }
  @media (max-width:900px){ .ipo-columns{ grid-template-columns:1fr; } }
  .ipo-section-head{
    font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.04em;
    font-size:15px; color:var(--bone); margin-bottom:10px; display:flex; align-items:baseline; gap:10px; flex-wrap:wrap;
  }
  .ipo-section-sub{ font-family:var(--font-body); text-transform:none; letter-spacing:0; font-size:11.5px; color:var(--muted); font-weight:400; }
  .ipo-empty{ color:var(--muted); font-size:12.5px; padding:14px; text-align:center; background:var(--panel); border:1px solid var(--rule); border-radius:8px; }

  .ipo-row{
    display:flex; align-items:center; gap:14px; padding:11px 14px; margin-top:8px;
    background:var(--panel); border:1px solid var(--rule); border-radius:8px;
  }
  .ipo-row.row-clickable:hover{ border-color:var(--amber-dim); background:var(--panel-2); }
  .row-links{ display:flex; align-items:center; gap:8px; margin-top:6px; }
  .watchlist-add-btn{
    font-family:var(--font-mono); font-size:10.5px; padding:3px 8px; background:transparent;
    color:var(--amber); border:1px solid var(--amber-dim); border-radius:4px; cursor:pointer;
  }
  .watchlist-add-btn:hover{ background:rgba(255,178,56,0.1); }
  .watchlist-add-btn:disabled{ color:var(--up); border-color:var(--up); cursor:default; opacity:0.8; }
  .ipo-row .ir-main{ flex:1; min-width:0; }
  .ipo-row .ir-name{ font-size:13.5px; color:var(--bone); font-weight:600; }
  .ipo-row .ir-name .ir-sym{ font-family:var(--font-mono); color:var(--amber); font-weight:600; font-size:11.5px; margin-left:7px; }
  .ipo-row .ir-detail{ font-family:var(--font-mono); font-size:11px; color:var(--muted); margin-top:4px; }
  .ipo-row .ir-stats{ text-align:right; flex:0 0 auto; }
  .mover-trend{ flex:0 0 auto; display:flex; flex-direction:column; align-items:center; gap:3px; }
  .mover-spark{ display:block; width:56px; height:24px; }
  .mover-daily{
    font-family:var(--font-mono); font-size:9px; white-space:nowrap; letter-spacing:0.01em;
    display:flex; gap:4px;
  }
  .mover-daily-compact{ font-size:9.5px; margin-top:2px; }
  .mover-daily-compact:empty{ display:none; }
  .ipo-row .ir-stat-main{ font-family:var(--font-mono); font-size:14px; font-weight:600; }
  .ipo-row .ir-stat-sub{ font-family:var(--font-mono); font-size:10.5px; color:var(--muted); margin-top:2px; }
  .sub-hot{ color:var(--up); }
  .sub-cold{ color:var(--muted); }
  .gmp-chip{
    display:inline-block; font-size:10px; padding:2px 7px; border-radius:4px; margin-left:8px;
    background:rgba(255,178,56,0.15); color:var(--amber); font-family:var(--font-mono);
  }
  .ca-chip{
    display:inline-block; font-size:10px; padding:2px 7px; border-radius:4px; margin-left:8px;
    background:var(--panel-2); color:var(--muted); font-family:var(--font-body); font-weight:400;
  }
  .ipo-tag{
    display:inline-block; font-size:10px; padding:2px 7px; border-radius:4px; margin-left:6px;
    font-family:var(--font-mono);
  }
  .ipo-tag.circuit{ background:rgba(255,178,56,0.15); color:var(--amber); }
  .ipo-tag.market{ background:var(--panel-2); color:var(--muted); }
  .ipo-tag.ipo{ background:rgba(63,163,77,0.15); color:var(--up); }
  .ipo-tag-detail{ opacity:0.75; margin-left:4px; }
  .mover-news-toggle{ margin-top:6px; }
  .mover-news-toggle summary{ padding:4px 0; font-size:11px; border-top:none; }
  .stock-context-strip{ margin-top:8px; }
  .stock-context-strip:empty{ display:none; }
  .stock-context-strip .ipo-tag{ margin-left:0; margin-right:6px; }
  .news-link{
    display:inline-block; font-family:var(--font-mono); font-size:10.5px;
    color:var(--amber); text-decoration:none; border:1px solid var(--amber-dim); border-radius:4px;
    padding:3px 8px;
  }
  .news-link:hover{ background:rgba(255,178,56,0.1); }

  .result-row{
    display:flex; justify-content:space-between; align-items:center; gap:12px; padding:9px 14px;
    margin-top:6px; background:var(--panel); border:1px solid var(--rule); border-radius:6px;
  }
  .result-row.row-clickable:hover{ border-color:var(--amber-dim); background:var(--panel-2); }
  .result-row .res-name{ font-size:12.5px; color:var(--bone); flex:1; min-width:0; }
  .result-row .res-name .res-sym{ font-family:var(--font-mono); color:var(--amber); font-size:11px; margin-left:6px; }
  .result-row .res-date{ font-family:var(--font-mono); font-size:11px; color:var(--muted); white-space:nowrap; margin-top:3px; }
  .result-row .res-price{ font-family:var(--font-mono); font-size:12.5px; white-space:nowrap; text-align:right; flex:0 0 auto; }

  /* ---- Main panel ---- */
  main.detail{ flex:1; min-width:0; padding:22px 28px 40px; }
  .detail-head{ display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:14px; }
  .detail-head h2{
    font-family:var(--font-display); font-size:30px; margin:0; text-transform:uppercase;
    letter-spacing:0.02em; font-weight:700;
  }
  .detail-head .exch{ font-family:var(--font-mono); font-size:11px; color:var(--muted); letter-spacing:0.08em; }
  .refresh-btn{
    background:var(--panel-2); border:1px solid var(--rule-strong); color:var(--bone);
    border-radius:4px; padding:8px 12px; cursor:pointer; font-family:var(--font-mono); font-size:12px;
  }
  .refresh-btn:hover{ border-color:var(--amber); color:var(--amber); }
  .refresh-btn:disabled{ opacity:0.5; cursor:default; }

  .price-line{ display:flex; align-items:baseline; gap:14px; margin-top:6px; flex-wrap:wrap; }
  .price-line .big{ font-family:var(--font-mono); font-size:40px; font-weight:600; color:var(--amber); text-shadow:0 0 20px var(--amber-glow); }
  .price-line .delta{ font-family:var(--font-mono); font-size:16px; }
  .price-line .updated{ font-size:11px; color:var(--muted); }

  .range-row{ display:flex; gap:6px; margin:18px 0 10px; }
  .range-btn{
    background:transparent; border:1px solid var(--rule-strong); color:var(--muted);
    padding:6px 12px; border-radius:20px; cursor:pointer; font-family:var(--font-mono); font-size:12px;
  }
  .range-btn:hover{ color:var(--bone); border-color:var(--amber-dim); }
  .range-btn.active{ background:var(--amber); color:#1b1305; border-color:var(--amber); font-weight:600; }

  .chart-panel{
    background:var(--panel); border:1px solid var(--rule); border-radius:6px;
    padding:14px; height:280px; position:relative;
  }
  .chart-panel canvas{ width:100%; height:100%; display:block; cursor:crosshair; touch-action:pan-y; }
  .chart-msg{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--muted); font-size:13px; text-align:center; padding:0 20px; }

  .tabs{
    display:flex; align-items:center; gap:2px; margin-bottom:22px; border-bottom:1px solid var(--rule);
    overflow-x:auto; overflow-y:hidden; white-space:nowrap; scrollbar-width:thin;
  }
  .tabs-market{
    margin-top:0; position:sticky; top:0; z-index:15; background:var(--board);
    box-shadow:0 8px 12px -8px rgba(0,0,0,0.35);
  }
  .tabs-stock{ margin-top:0; }
  .tabs-stock.hidden{ display:none; }
  .tab-btn{
    background:none; border:none; color:var(--muted); padding:10px 14px; cursor:pointer; flex:0 0 auto;
    font-family:var(--font-display); text-transform:uppercase; letter-spacing:0.05em; font-size:15px;
    border-bottom:2px solid transparent; margin-bottom:-1px; white-space:nowrap;
  }
  .tab-btn:hover{ color:var(--bone); }
  .tab-btn.active{ color:var(--amber); border-bottom-color:var(--amber); }
  .tab-panel{ padding:18px 2px; display:none; }
  .tab-panel.active{ display:block; }
  .tabs-label{
    flex:0 0 auto; font-family:var(--font-mono); font-size:9.5px; text-transform:uppercase; letter-spacing:0.08em;
    color:var(--muted); padding:0 8px 0 2px; align-self:center;
  }
  .tabs-divider{ flex:0 0 auto; width:1px; height:18px; background:var(--rule-strong); margin:0 6px; }
  .tabs::-webkit-scrollbar{ height:4px; }
  .tabs::-webkit-scrollbar-track{ background:transparent; }
  .tabs::-webkit-scrollbar-thumb{ background:var(--rule-strong); border-radius:2px; border:none; }
  .stock-chrome.hidden{ display:none; }

  .news-item{ padding:12px 0; border-bottom:1px solid var(--rule); }
  .news-item:last-child{ border-bottom:none; }
  .news-item a{ color:var(--bone); text-decoration:none; font-size:14.5px; font-weight:500; line-height:1.4; }
  .news-item a:hover{ color:var(--amber); text-decoration:underline; }
  .news-meta{ font-family:var(--font-mono); font-size:11px; color:var(--muted); margin-top:4px; }
  .loading-line{ color:var(--muted); font-size:13px; padding:8px 0; }

  .prospect-tag{
    display:inline-block; background:var(--panel-2); color:var(--amber); font-family:var(--font-mono);
    font-size:10.5px; padding:2px 7px; border-radius:3px; margin-right:6px; text-transform:uppercase;
  }

  .links-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; margin-bottom:22px; }
  .link-card{
    background:var(--panel-2); border:1px solid var(--rule); border-radius:6px; padding:12px 14px;
    text-decoration:none; color:var(--bone); font-family:var(--font-mono); font-size:12.5px;
    display:flex; align-items:center; justify-content:space-between;
  }
  .link-card:hover{ border-color:var(--amber); color:var(--amber); }

  .x-embed-wrap{ max-width:420px; }
  .x-fallback{
    background:var(--panel-2); border:1px dashed var(--rule-strong); border-radius:6px;
    padding:16px; text-align:center; color:var(--muted); font-size:13px;
  }
  .x-fallback a{ display:inline-block; margin-top:8px; }

  /* ---- Technicals tab ---- */
  .tech-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin-bottom:20px; }
  .tech-card{ background:var(--panel-2); border:1px solid var(--rule); border-radius:6px; padding:14px; }
  .tech-card .tl{ font-family:var(--font-mono); font-size:11px; color:var(--muted); text-transform:uppercase; letter-spacing:0.06em; }
  .tech-card .tv{ font-family:var(--font-mono); font-size:20px; margin-top:6px; color:var(--bone); }
  .tech-card .ts{ font-size:11.5px; margin-top:4px; color:var(--muted); }
  .trend-bullish{ color:var(--up); }
  .trend-bearish{ color:var(--down); }
  .trend-mixed{ color:var(--amber); }
  .tech-disclaimer{
    font-size:11.5px; color:var(--muted); line-height:1.6; border-top:1px solid var(--rule);
    padding-top:14px; margin-top:4px;
  }

  footer{ text-align:center; color:var(--muted); font-size:11px; padding:18px; border-top:1px solid var(--rule); }

  @media (max-width:820px){
    .app{ flex-direction:column; }
    aside.watchlist{ width:100%; border-right:none; border-bottom:1px solid var(--rule); max-height:280px; }
    main.detail{ padding:18px; }
  }
/* Utility classes generated from what were inline style="" attributes (roadmap §6d item 6 — CSP style-src can now drop 'unsafe-inline') */
.u-t6ck7f{ display:none; }
.u-1u1wbax{ display:flex; gap:8px; align-items:center; }
.u-9zo3n9{ font-family:var(--font-display);text-transform:uppercase;color:var(--muted);letter-spacing:0.08em;font-size:13px;margin-bottom:8px; }
.u-1c9n314{ margin-right:8px; }
.u-k7dlvq{ width:70px; }
.u-1xc3rr1{ margin-left:auto; display:flex; gap:8px; }
.u-ekydiv{ font-size:12px; }
.u-t0jsje{ width:55px; margin:0 4px; }
.u-1a33px8{ font-size:12px; color:var(--muted); }
.u-noolvc{ margin-left:auto; }
.u-1ow61e9{ width:18px;height:18px; }
.u-uilnkg{ margin-right:8px; font-size:11px; }
.u-k6ttad{ width:60px; }
.u-ekxqjc{ font-size:11px; }
.u-5thnmi{ margin:0 8px 0 16px; font-size:11px; }
.u-14flcbj{ width:50px; margin:0 4px; }
.u-k41gvn{ width:100%; }
.u-oynyic{ margin:14px 0 8px; }
.u-1hr1ydz{ margin:0; }
.u-rsqxpq{ align-self:flex-end; }
.u-1s6zckk{ margin-bottom:10px; }
.u-mx66gq{ margin-left:16px; }
.u-muted-note{ font-size:11px; color:var(--muted); }
.u-text-down{ color:var(--down); }
.u-pad-sm{ padding:6px 0; }
.u-orb-tag{ background:rgba(159,110,255,0.15); color:#b89bff; }
.u-text-muted{ color:var(--muted); }
.u-mt-sm{ margin-top:10px; }

