:root{
  --bg:#0F1216; --panel:#171B21; --panel2:#1D222A; --line:#272D37; --line2:#323945;
  --text:#FF9F1C; --muted:#C97A3D; --faint:#8F5A35;
  --safe:#33D17A; --warn:#F0A93E; --danger:#E15258; --info:#5C8DEF;
  --accent-glow: rgba(255,159,28,0.18);
}

/* ---- Themes — pick one on the Settings tab, purely cosmetic ---- */
body[data-theme="obsidian-gold"]{
  --bg:#0B0B0D; --panel:#151417; --panel2:#1C1A1E; --line:#2B2730; --line2:#3A3440;
  --text:#FF9F1C; --muted:#C97A3D; --faint:#8F5A35;
  --safe:#3FBF8F; --warn:#D4A94C; --danger:#D6564F; --info:#D4A94C;
  --accent-glow: rgba(255,159,28,0.16);
}
body[data-theme="slate-blue"]{
  --bg:#0D1117; --panel:#161C26; --panel2:#1C2430; --line:#28313F; --line2:#374151;
  --text:#FF9F1C; --muted:#C97A3D; --faint:#8F5A35;
  --safe:#3ECF8E; --warn:#E8A33D; --danger:#EF5D5D; --info:#5B9CF6;
  --accent-glow: rgba(255,159,28,0.18);
}
body[data-theme="emerald-terminal"]{
  --bg:#0A100D; --panel:#111A15; --panel2:#16221B; --line:#22332A; --line2:#2D4437;
  --text:#FF9F1C; --muted:#C97A3D; --faint:#8F5A35;
  --safe:#39D98A; --warn:#E3B94A; --danger:#E1615C; --info:#39D98A;
  --accent-glow: rgba(255,159,28,0.16);
}
body[data-theme="sky-blue"]{
  --bg:#EEF3FA; --panel:#FFFFFF; --panel2:#F3F7FC; --line:#D3E0F0; --line2:#B8CCE6;
  --text:#1D4ED8; --muted:#4A72C4; --faint:#7C97C9;
  /* Kept distinct from the blue text on purpose, same call as the
     orange theme before it — profit/loss needs to stay visually
     readable at a glance, not just uniformly "on brand." */
  --safe:#16A34A; --warn:#D97706; --danger:#DC2626; --info:#2563EB;
  --accent-glow: rgba(37,99,235,0.12);
}

*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,sans-serif;font-size:14px;transition:background .2s,color .2s}
h1{font-size:20px;font-weight:600;margin:0 0 4px;letter-spacing:-0.01em}
h2{font-size:14px;font-weight:600;margin:28px 0 10px}
.muted{color:var(--muted);font-size:13px}
.screen{min-height:100vh}
.center{display:flex;align-items:center;justify-content:center}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:18px;box-shadow:0 1px 0 rgba(255,255,255,0.02) inset, 0 8px 24px -12px rgba(0,0,0,0.5)}
label{display:block;font-size:12px;color:var(--muted);margin:12px 0 5px}
input,select,textarea{width:100%;background:var(--bg);border:1px solid var(--line2);color:var(--text);border-radius:6px;padding:8px 10px;font-size:13px;transition:border-color .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--info)}
textarea{min-height:60px;resize:vertical;font-family:inherit}
/* Manual entry only — no click-to-increment spinner buttons on qty/premium fields */
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
input[type=number]{-moz-appearance:textfield}
.btn{background:var(--panel2);border:1px solid var(--line2);color:var(--text);padding:9px 16px;border-radius:6px;font-size:13px;cursor:pointer;margin-top:10px;transition:transform .1s,border-color .15s}
.btn:disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.6)}
button:disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.7);pointer-events:none}

/* Live index ticker bar */
.ticker-bar{position:relative;z-index:10;overflow:hidden;background:rgba(0,229,255,.05);border-bottom:1px solid rgba(0,229,255,.15);height:26px;white-space:nowrap}
.ticker-track{display:inline-flex;align-items:center;height:26px;animation:tickerScroll 22s linear infinite;padding-left:100%}
.ticker-item{display:inline-flex;align-items:center;gap:6px;font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.05em;padding:0 28px;color:#FF9F1C}
.ticker-item .ti-name{color:rgba(0,229,255,.8)}
@keyframes tickerScroll{from{transform:translateX(0);}to{transform:translateX(-100%);}}
.btn:hover{border-color:var(--info)}
.btn:active{transform:scale(0.98)}
.btn.primary{background:var(--info);border-color:var(--info);color:#0B0B0D;font-weight:600}
.btn.danger{background:transparent;border:1px solid var(--danger);color:var(--danger)}
.btn.full{width:100%}
.error{color:var(--danger);font-size:12px;min-height:16px}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--line);background:linear-gradient(180deg, var(--panel), var(--bg));gap:20px;flex-wrap:wrap}
.brand{font-weight:700;font-size:13px;letter-spacing:.04em;display:flex;align-items:center;gap:8px}
.dot{width:8px;height:8px;border-radius:99px;background:var(--faint);box-shadow:0 0 0 3px var(--accent-glow)}
.dot.on{background:var(--safe)}
.dot.killed{background:var(--danger)}
.meters{display:flex;gap:24px;flex-wrap:wrap}
.meter{display:flex;flex-direction:column;font-size:11px;color:var(--faint)}
.meter .value{color:var(--text);font-size:13px;font-family:ui-monospace,monospace}
.layout{display:flex;min-height:calc(100vh - 53px)}
.sidebar{width:180px;border-right:1px solid var(--line);padding:14px;display:flex;flex-direction:column;gap:4px}
.nav{background:transparent;border:1px solid transparent;color:var(--muted);text-align:left;padding:9px 12px;border-radius:6px;cursor:pointer;font-size:13px;transition:background .15s,color .15s}
.nav:hover{color:var(--text)}
.nav.active{background:var(--panel2);border-color:var(--line2);color:var(--text);box-shadow:inset 2px 0 0 var(--info)}
.main{flex:1;padding:28px;max-width:760px}
.banner{background:#4A2224;color:var(--danger);border:1px solid #E1525844;border-radius:6px;padding:10px 14px;margin-bottom:20px;font-size:13px;display:flex;justify-content:space-between}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0 22px}
.statcard{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px}
.statcard .k{color:var(--faint);font-size:11px;margin-bottom:6px}
.statcard .v{font-size:18px;font-family:ui-monospace,monospace}
.tradelist{display:flex;flex-direction:column;gap:8px}
.tradeitem{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 12px;display:flex;justify-content:space-between;font-size:13px}
.badge{font-size:11px;padding:2px 8px;border-radius:99px;background:var(--panel2);color:var(--muted);vertical-align:middle}
.ok{color:var(--safe);margin-bottom:6px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* Rules tab — compact sectioned grid, replacing one long stacked column */
.rules-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;max-width:1000px}
.rules-section h3{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--info);margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.rules-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:4px}
.rules-field-grid > div > input, .rules-field-grid > div > select{margin-top:4px}
.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.overlay{position:fixed;inset:0;background:#000000aa;display:flex;align-items:center;justify-content:center;z-index:50}
/* Transparent overlay — no background dim, no click-outside-to-close — since the
   window is now small and movable, it shouldn't block the rest of the app. */
.overlay-transparent{position:fixed;inset:0;pointer-events:none;z-index:50}
.overlay-transparent .modal{pointer-events:auto}
.modal{width:300px;max-height:80vh;position:absolute;top:70px;right:24px;padding:0;display:flex;flex-direction:column;overflow:hidden}
.modal-header{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);cursor:grab;background:var(--panel2);flex-shrink:0}
.modal-header:active{cursor:grabbing}
.modal-header h3{margin:0;font-size:13px;flex:1}
.drag-hint{color:var(--faint);font-size:13px}
.modal-close{background:transparent;border:none;color:var(--faint);cursor:pointer;font-size:13px;padding:2px 6px}
.modal-close:hover{color:var(--text)}
.modal-body{padding:12px;overflow-y:auto}
.modal-body label{margin:8px 0 4px}
.modal-body .card{padding:10px}

/* Option chain */
.chain-table{max-height:180px;overflow-y:auto;border:1px solid var(--line);border-radius:6px;margin-bottom:10px}
.chain-row{display:grid;grid-template-columns:1fr 60px 1fr;font-size:12px;border-bottom:1px solid var(--line)}
.chain-row:last-child{border-bottom:none}
.chain-cell{padding:6px 8px;cursor:pointer;text-align:center;transition:background .1s}
.chain-cell:hover{background:var(--panel2)}
.chain-cell.selected{background:#ffd400;color:#1a1400;font-weight:700;box-shadow:0 0 0 2px #ffd400,0 0 12px rgba(255,212,0,.6)}
.field-flash{animation:fieldFlash 1s ease-out}
@keyframes fieldFlash{0%{box-shadow:0 0 0 3px #ffd400;background:#3a2f00}100%{box-shadow:0 0 0 0 transparent}}
.chain-cell.disabled{cursor:default;color:var(--faint)}
.chain-strike{padding:6px 4px;text-align:center;font-family:ui-monospace,monospace;font-size:11px;color:var(--muted);background:var(--panel2)}

/* Blocked weekdays picker */
.day-grid{display:flex;gap:6px;margin:6px 0 10px}
.day-toggle{flex:1;text-align:center;padding:8px 0;border-radius:6px;border:1px solid var(--line2);background:var(--bg);color:var(--muted);font-size:11px;cursor:pointer;user-select:none}
.day-toggle.blocked{background:var(--dangerDim,#4A2224);border-color:var(--danger);color:var(--danger)}

/* ---- Guardian + rules, side by side, one compact premium block ---- */
.guardian-rules-row{
  display:flex;gap:20px;align-items:stretch;flex-wrap:wrap;margin-bottom:26px;
  background:linear-gradient(135deg, var(--panel), var(--bg));
  border:1px solid var(--line);border-radius:14px;padding:18px;
  box-shadow:0 20px 40px -28px rgba(0,0,0,0.6);
}
.guardian-panel{width:200px;flex-shrink:0}
.guardian-image-wrap{
  position:relative;border-radius:10px;overflow:hidden;width:100%;
  border:1px solid var(--line2);
  box-shadow:0 0 0 1px var(--accent-glow);
  animation:guardianGlow 5s ease-in-out infinite;
}
@keyframes guardianGlow{
  0%,100%{box-shadow:0 0 0 1px var(--accent-glow);}
  50%{box-shadow:0 0 0 3px var(--accent-glow);}
}
.guardian-img{display:block;width:100%;height:auto;filter:contrast(1.05) saturate(1.05)}
.guard-label{
  position:absolute;display:flex;align-items:flex-start;gap:4px;transform:translate(-4px,-50%);
  opacity:0;animation:guardFadeIn .7s ease-out forwards;
  animation-delay:calc(var(--d, 0) * 0.35s + 0.2s);
  max-width:84px;
}
.guard-label.reverse{flex-direction:row-reverse;transform:translate(calc(-100% + 4px),-50%);text-align:right;margin-left:auto}
.guard-label[data-delay="0"]{--d:0}
.guard-label[data-delay="1"]{--d:1}
.guard-label[data-delay="2"]{--d:2}
.guard-label[data-delay="3"]{--d:3}
.guard-label[data-delay="4"]{--d:4}
@keyframes guardFadeIn{
  from{opacity:0;transform:translate(-10px,-50%);}
  to{opacity:1;transform:translate(-4px,-50%);}
}
.guard-label.reverse{animation-name:guardFadeInReverse}
@keyframes guardFadeInReverse{
  from{opacity:0;transform:translate(calc(-100% + 10px),-50%);}
  to{opacity:1;transform:translate(calc(-100% + 4px),-50%);}
}
.guard-dot{
  width:6px;height:6px;margin-top:3px;border-radius:99px;background:var(--info);flex-shrink:0;
  box-shadow:0 0 0 2px rgba(92,141,239,0.25);
  animation:guardPulse 2.4s ease-in-out infinite;
}
@keyframes guardPulse{
  0%,100%{box-shadow:0 0 0 2px rgba(92,141,239,0.25);}
  50%{box-shadow:0 0 0 5px rgba(92,141,239,0.05);}
}
.guard-text{
  font-size:8.5px;line-height:1.25;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,0.9), 0 0 6px rgba(0,0,0,0.7);
  background:rgba(10,12,16,0.6);backdrop-filter:blur(2px);padding:3px 5px;border-radius:5px;
}
.guard-text b{color:var(--info)}

.rules-glance-col{flex:1;min-width:260px}
.rules-glance-heading{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px}
.rules-glance-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:7px}
.rule-chip{background:rgba(5,10,15,.7);border:1px solid rgba(0,229,255,.15);background-image:linear-gradient(180deg,rgba(0,229,255,.03) 0%,transparent 100%);border-radius:6px;padding:9px 11px}
.rule-chip .rk{color:rgba(0,229,255,.6);font-size:9px;font-family:'JetBrains Mono',monospace;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}
.rule-chip .rv{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;line-height:1.2;color:#FF9F1C}
.rule-chip .rv.off{color:#C97A3D;font-weight:400}

/* Screenshot source picker */
.source-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-top:10px}
.source-card{border:2px solid var(--line);border-radius:8px;overflow:hidden;cursor:pointer;background:var(--bg)}
.source-card.selected{border-color:var(--info)}
.source-card img{width:100%;height:80px;object-fit:cover;display:block;background:#000}
.source-card .name{font-size:10px;padding:5px 6px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Trade journal screenshot thumbnails + viewer */
.journal-thumbs{display:flex;gap:6px;margin-top:6px}
.journal-thumb{position:relative;width:64px;height:44px;border-radius:5px;overflow:hidden;cursor:pointer;border:1px solid var(--line2)}
.journal-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.journal-thumb .tag{position:absolute;bottom:0;left:0;right:0;font-size:8px;text-align:center;padding:1px 0;font-weight:700;letter-spacing:.03em}
.journal-thumb .tag.entry{background:var(--info);color:#fff}
.journal-thumb .tag.exit{background:var(--warn);color:#1a1400}
.screenshot-viewer{position:fixed;inset:0;background:#000000dd;display:flex;align-items:center;justify-content:center;z-index:80}
.screenshot-viewer img{max-width:90vw;max-height:80vh;border-radius:6px;border:2px solid var(--line2)}
.screenshot-viewer .sv-label{position:absolute;top:24px;left:50%;transform:translateX(-50%);padding:6px 16px;border-radius:99px;font-weight:700;font-size:12px;letter-spacing:.04em}
.screenshot-viewer .sv-close{position:absolute;top:20px;right:24px;color:#fff;font-size:22px;cursor:pointer;background:none;border:none}

/* Trade Replay */
.replay-panel{background:var(--panel);border:1px solid var(--line2);border-radius:10px;width:min(920px,92vw);max-height:88vh;overflow-y:auto;padding:20px}
.replay-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.replay-head #replayTitle{font-family:ui-monospace,monospace;font-size:14px;font-weight:600}
.replay-head .sv-close{position:static} /* override the fixed-corner positioning inherited from .screenshot-viewer — this one sits inline in its own header */
.replay-controls{display:flex;align-items:center;gap:12px;margin-top:12px}
.replay-controls input[type=range]{accent-color:var(--info)}
.replay-link{background:none;border:1px solid var(--line2);color:var(--info);font-size:10px;padding:2px 8px;border-radius:99px;cursor:pointer;margin-left:8px}
.replay-link:hover{background:var(--panel2)}
.switch{position:relative;display:inline-block;width:38px;height:22px;flex-shrink:0}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;cursor:pointer;inset:0;background:var(--line2);border-radius:99px;transition:.2s}
.slider::before{content:"";position:absolute;height:16px;width:16px;left:3px;top:3px;background:#fff;border-radius:99px;transition:.2s}
input:checked + .slider{background:var(--info)}
input:checked + .slider::before{transform:translateX(16px)}

/* ---- Setups / confluence checklist ---- */
.setup-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}
.setup-card .name{font-weight:600;font-size:13px}
.setup-card .count{color:var(--faint);font-size:11px;margin-top:2px}
.setup-card .actions{display:flex;gap:6px}
.setup-card .actions button{margin-top:0;padding:6px 10px;font-size:12px}
.point-row{display:flex;gap:6px;margin-bottom:6px;align-items:center}
.point-row input{margin:0}
.point-row button{margin-top:0;padding:6px 10px;font-size:12px;flex-shrink:0}
.confluence-item{display:flex;align-items:flex-start;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.confluence-item:last-child{border-bottom:none}
.confluence-item input[type=checkbox]{width:16px;height:16px;margin-top:2px;accent-color:var(--info)}
.confluence-item label{margin:0;color:var(--text);font-size:13px;cursor:pointer}

/* ---- Theme picker swatches ---- */
.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;max-width:640px}
.theme-swatch{border:2px solid var(--line);border-radius:10px;padding:14px;cursor:pointer;transition:border-color .15s;background:var(--panel)}
.theme-swatch.active{border-color:var(--info)}
.theme-swatch .preview{height:44px;border-radius:6px;display:flex;overflow:hidden;margin-bottom:10px}
.theme-swatch .preview span{flex:1}
.theme-swatch .label{font-size:13px;font-weight:500}

/* ---- Dashboard hero ---- */
.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:26px 28px;border-radius:14px;margin-bottom:22px;
  background:radial-gradient(120% 160% at 0% 0%, var(--accent-glow), transparent 60%), linear-gradient(160deg, var(--panel), var(--bg));
  border:1px solid var(--line);box-shadow:0 20px 40px -24px rgba(0,0,0,0.6);flex-wrap:wrap}
.hero-eyebrow{color:var(--faint);font-size:11px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px}
.hero-pnl{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:44px;font-weight:600;line-height:1;letter-spacing:-0.02em}
.hero-sub{color:var(--muted);font-size:13px;margin-top:8px}
.btn-lg{padding:13px 22px;font-size:14px;border-radius:8px;box-shadow:0 8px 20px -8px var(--accent-glow)}

/* ---- Premium stat cards ---- */
.stat-grid-premium{grid-template-columns:repeat(4,1fr)}
.statcard-p{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px;display:flex;align-items:center;gap:12px;
  box-shadow:0 1px 0 rgba(255,255,255,0.02) inset;transition:border-color .15s,transform .15s}
.statcard-p:hover{border-color:var(--line2);transform:translateY(-1px)}
.statcard-icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--info);flex-shrink:0}
.statcard-p .k{color:var(--faint);font-size:10px;letter-spacing:.05em;text-transform:uppercase;margin-bottom:3px}
.statcard-p .v{font-size:17px;font-family:ui-monospace,monospace;font-weight:600}

/* ---- Chart ---- */
.chart-card{padding:16px 16px 8px}

/* ---- Premium trade list ---- */
.tradeitem-p{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--line2);border-radius:8px;
  padding:12px 14px;display:flex;justify-content:space-between;align-items:center;font-size:13px;transition:border-color .15s}
.tradeitem-p:hover{border-color:var(--line2)}
.tradeitem-p .left{display:flex;flex-direction:column;gap:2px}
.tradeitem-p .main-line{font-weight:500}
.tradeitem-p .sub-line{color:var(--faint);font-size:11px}
.tradeitem-p .result{font-family:ui-monospace,monospace;font-weight:600;font-size:13px}
