/* ── journal.css ───────────────────────────────────────────────────────────
 * Trading-journal surface (the "Trades" tab): P&L calendar, trades table,
 * stats strip, filter bar, add/edit + bulk modals. Built fresh on WOT
 * tokens (elite.css) — no LTJ code copied verbatim. Pairs with the
 * deterministic FIFO calc in js/views/trades.js.
 * ───────────────────────────────────────────────────────────────────────── */

/* ── shared bits ─────────────────────────────────────────────────────────── */
.wot-jr-pos { color: var(--wot-bull); }
.wot-jr-neg { color: var(--wot-bear); }
.wot-jr-muted { color: var(--wot-text-2); }

.wot-jr-page { display: flex; flex-direction: column; gap: 18px; }

/* stats strip */
.wot-jr-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 10px;
}
.wot-jr-stat {
  background: var(--wot-bg-1);
  border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md);
  padding: 12px 14px;
  display: flex; flex-direction: column; gap: 4px;
}
.wot-jr-stat .k {
  font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--wot-text-2);
}
.wot-jr-stat .v { font-size: 22px; font-weight: 700; color: var(--wot-text-0); line-height: 1.1; }

/* ── calendar ────────────────────────────────────────────────────────────── */
.wot-cal-wrap {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 260px;
  gap: 16px;
  align-items: start;
}
@media (max-width: 880px) { .wot-cal-wrap { grid-template-columns: 1fr; } }

.wot-cal-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 10px; gap: 12px;
}
.wot-cal-title { font-size: 18px; font-weight: 700; color: var(--wot-text-0); }
.wot-cal-month-pnl { font-size: 14px; font-weight: 700; }
.wot-cal-nav { display: flex; gap: 6px; align-items: center; }

.wot-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 6px;
}
.wot-cal-dow {
  text-align: center; font-size: 11px; letter-spacing: .05em;
  text-transform: uppercase; color: var(--wot-text-2); padding: 4px 0;
}
.wot-cal-cell {
  min-height: 84px;
  background: var(--wot-bg-1);
  border: 1px solid var(--wot-border);
  border-left: 3px solid transparent;
  border-radius: var(--wot-r-sm);
  padding: 6px 8px;
  display: flex; flex-direction: column; gap: 3px;
  cursor: default;
}
.wot-cal-cell.is-empty { background: transparent; border-color: transparent; }
.wot-cal-cell.has-trades { cursor: pointer; }
.wot-cal-cell.has-trades:hover { border-color: var(--wot-border-strong); }
.wot-cal-cell.win-day  { border-left-color: var(--wot-bull); }
.wot-cal-cell.loss-day { border-left-color: var(--wot-bear); }
.wot-cal-cell.open-day { border-left-color: var(--wot-chop); }
/* Off-plan days carry a faint brand-orange wash so the gap is visible at a glance. */
.wot-cal-cell.has-offplan { background: linear-gradient(180deg, rgba(255,107,31,.07), var(--wot-bg-1) 60%); }
/* Today: brand gradient, NOT the old purple pill. */
.wot-cal-cell.is-today { box-shadow: inset 0 0 0 1px var(--wot-grad-end, #FF1F8F); }
.wot-cal-daynum { font-size: 12px; color: var(--wot-text-2); font-weight: 600; }
.wot-cal-cell.is-today .wot-cal-daynum {
  color: #fff; background: var(--wot-grad, linear-gradient(135deg, #FF6B1F, #FF1F8F));
  border-radius: 999px; width: 20px; height: 20px;
  display: inline-flex; align-items: center; justify-content: center;
  box-shadow: var(--wot-grad-glow);
}
.wot-cal-pnl { font-size: 16px; font-weight: 700; margin-top: auto; }
.wot-cal-count { font-size: 10px; color: var(--wot-text-2); }
/* Per-day adherence strip — grade dots + off-plan / flag markers. */
.wot-cal-adh { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; margin-top: 2px; }
.wot-cal-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; }
.wot-cal-dot.is-a   { background: var(--wot-bull); }
.wot-cal-dot.is-b   { background: var(--wot-chop); }
.wot-cal-dot.is-c   { background: var(--wot-grad-start, #FF6B1F); }
.wot-cal-dot.is-off { background: var(--wot-text-3); }
.wot-cal-dot.is-na  { background: var(--wot-border-strong); }
.wot-cal-mark { font-size: 9px; font-weight: 800; line-height: 1; padding: 1px 3px; border-radius: 4px; }
.wot-cal-mark.is-off  { background: rgba(255,107,31,.18); color: #ff8a4c; }
.wot-cal-mark.is-flag { background: rgba(245,180,0,.18); color: #f5b400; }

/* Trades table: off-plan + flagged row accents + flag chip column. */
.wot-trades-table tbody tr.is-offplan td:first-child { box-shadow: inset 3px 0 0 var(--wot-grad-start, #FF6B1F); }
.wot-trades-table tbody tr.is-flagged td { background: rgba(245,180,0,.03); }
.wot-trades-table .c-flags { display: flex; flex-wrap: wrap; gap: 4px; white-space: normal; max-width: 220px; }

.wot-cal-weeks { display: flex; flex-direction: column; gap: 8px; }
.wot-week-box {
  background: var(--wot-bg-1);
  border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-sm);
  padding: 10px 12px;
  cursor: pointer;
}
.wot-week-box:hover { border-color: var(--wot-border-strong); }
.wot-week-box .wk-label { font-size: 11px; color: var(--wot-text-2); text-transform: uppercase; letter-spacing: .05em; }
.wot-week-box .wk-pnl { font-size: 18px; font-weight: 700; margin: 2px 0; }
.wot-week-box .wk-meta { font-size: 11px; color: var(--wot-text-2); }

/* ── trades table ────────────────────────────────────────────────────────── */
.wot-trades-toolbar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
}
.wot-trades-actions { display: flex; gap: 8px; }

.wot-table-wrap { overflow-x: auto; border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); }
.wot-trades-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.wot-trades-table thead th {
  text-align: left; padding: 10px 12px; white-space: nowrap;
  font-size: 11px; letter-spacing: .05em; text-transform: uppercase;
  color: var(--wot-text-2); background: var(--wot-bg-2);
  border-bottom: 1px solid var(--wot-border); position: sticky; top: 0;
  cursor: pointer; user-select: none;
}
.wot-trades-table thead th.no-sort { cursor: default; }
.wot-trades-table thead th .sort-ind { color: var(--wot-text-0); margin-left: 4px; }
.wot-trades-table tbody td {
  padding: 10px 12px; border-bottom: 1px solid var(--wot-border);
  color: var(--wot-text-1); vertical-align: top; white-space: nowrap;
}
.wot-trades-table tbody tr:hover td { background: rgba(255,255,255,0.02); }
.wot-trades-table .c-notes { white-space: normal; max-width: 280px; color: var(--wot-text-2); }
.wot-trades-table .c-pnl { font-weight: 700; }
.wot-trades-table .row-actions { display: flex; gap: 6px; }

.wot-badge {
  display: inline-block; padding: 2px 8px; border-radius: 999px;
  font-size: 11px; font-weight: 600; line-height: 1.5;
  border: 1px solid var(--wot-border-strong);
}
.wot-badge.b-long   { color: var(--wot-bull); border-color: rgba(34,197,94,.4); }
.wot-badge.b-short  { color: var(--wot-bear); border-color: rgba(239,68,68,.4); }
.wot-badge.b-stock  { color: var(--wot-text-1); }
.wot-badge.b-option { color: var(--wot-target); border-color: rgba(212,240,74,.4); }
.wot-badge.b-open   { color: var(--wot-chop); border-color: rgba(245,180,0,.4); }
.wot-rule-chip {
  display: inline-block; margin: 1px 2px; padding: 1px 7px; border-radius: 999px;
  font-size: 10px; font-weight: 600; background: var(--wot-bg-3);
  color: var(--wot-text-1); border: 1px solid var(--wot-border);
}
.wot-rule-chip.is-hard { border-color: rgba(255,31,143,.5); color: #fff; background: linear-gradient(135deg, rgba(255,107,31,.25), rgba(255,31,143,.25)); }
.wot-tag-chip { display:inline-block; margin:1px 2px; padding:1px 7px; border-radius:999px; font-size:10px; background:var(--wot-bg-3); color:var(--wot-text-2); border:1px solid var(--wot-border); }
.wot-tag-chip.is-mistake { color: var(--wot-bear); border-color: rgba(239,68,68,.35); }

.wot-trades-empty { padding: 40px; text-align: center; color: var(--wot-text-2); }

/* pagination */
.wot-trades-pager { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 4px 2px; font-size: 12px; color: var(--wot-text-2); }
.wot-trades-pager .pg-btns { display: flex; gap: 6px; }

/* ── filter bar ──────────────────────────────────────────────────────────── */
.wot-jr-filters {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 10px 12px;
}
.wot-jr-filters input[type="text"],
.wot-jr-filters input[type="date"],
.wot-jr-filters select {
  background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  color: var(--wot-text-0); border-radius: var(--wot-r-sm);
  padding: 6px 10px; font: inherit; font-size: 13px;
}
.wot-jr-filters input[type="text"]:focus,
.wot-jr-filters select:focus,
.wot-jr-filters input[type="date"]:focus { outline: none; border-color: var(--wot-border-strong); }
.wot-jr-filters .fld { display: flex; flex-direction: column; gap: 3px; }
.wot-jr-filters .fld > label { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); }
.wot-jr-active { display: flex; flex-wrap: wrap; gap: 6px; }
.wot-jr-active .chip {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--wot-bg-3); border: 1px solid var(--wot-border);
  border-radius: 999px; padding: 2px 6px 2px 10px; font-size: 11px; color: var(--wot-text-1);
}
.wot-jr-active .chip button { background: none; border: none; color: var(--wot-text-2); cursor: pointer; padding: 0 2px; font-size: 13px; line-height: 1; }
.wot-jr-active .chip button:hover { color: var(--wot-text-0); }

/* rule multiselect popover (reused for filters + bulk) */
.wot-rule-pop { position: relative; }
.wot-rule-pop-menu {
  position: absolute; z-index: 60; top: calc(100% + 4px); left: 0;
  min-width: 320px; max-height: 320px; overflow: auto;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border-strong);
  border-radius: var(--wot-r-md); padding: 8px; box-shadow: var(--wot-shadow-card, 0 12px 40px rgba(0,0,0,.5));
}

/* ── trade form (modal body) ─────────────────────────────────────────────── */
/* The modal shell (.wot-modal) doesn't scroll on its own — cap the form/bulk
   body height so a tall form scrolls inside the dialog instead of off-screen. */
.wot-tf, .wot-bulk { max-height: 74vh; overflow-y: auto; padding-right: 4px; }
.wot-tf { display: flex; flex-direction: column; gap: 14px; }
.wot-tf-row { display: grid; gap: 10px; }
.wot-tf-row.cols2 { grid-template-columns: 1fr 1fr; }
.wot-tf-row.cols3 { grid-template-columns: 1fr 1fr 1fr; }
.wot-tf-row.cols4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 560px) { .wot-tf-row.cols2,.wot-tf-row.cols3,.wot-tf-row.cols4 { grid-template-columns: 1fr 1fr; } }
.wot-tf-fg { display: flex; flex-direction: column; gap: 4px; }
.wot-tf-fg > label { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); }
.wot-tf input, .wot-tf select, .wot-tf textarea {
  background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  color: var(--wot-text-0); border-radius: var(--wot-r-sm);
  padding: 8px 10px; font: inherit; font-size: 13px; width: 100%;
}
.wot-tf input:focus, .wot-tf select:focus, .wot-tf textarea:focus { outline: none; border-color: var(--wot-border-strong); }
.wot-tf textarea { resize: vertical; min-height: 60px; }
.wot-tf h4 { margin: 4px 0 0; font-size: 13px; color: var(--wot-text-1); display:flex; align-items:center; gap:8px; }

.wot-legs { display: flex; flex-direction: column; gap: 6px; }
.wot-leg {
  display: grid; grid-template-columns: 72px 1fr 90px 70px 80px 80px 28px;
  gap: 6px; align-items: center;
}
.wot-leg-head { font-size: 10px; text-transform: uppercase; color: var(--wot-text-2); }
.wot-leg .leg-action { font-weight: 700; font-size: 12px; }
.wot-leg .leg-action.buy { color: var(--wot-bull); }
.wot-leg .leg-action.sell { color: var(--wot-bear); }
.wot-leg-del { background: none; border: none; color: var(--wot-text-2); cursor: pointer; }
.wot-leg-del:hover { color: var(--wot-bear); }
.wot-leg-add { display: flex; gap: 8px; }
@media (max-width: 640px) { .wot-leg { grid-template-columns: 60px 1fr 70px 56px; } .wot-leg .lg-comm, .wot-leg .lg-fees { display:none; } }

.wot-tf-preview {
  display: flex; gap: 18px; flex-wrap: wrap;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-sm); padding: 8px 12px; font-size: 12px;
}
.wot-tf-preview b { color: var(--wot-text-0); }

/* rule checklist in form */
.wot-rule-list { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
@media (max-width: 560px) { .wot-rule-list { grid-template-columns: 1fr; } }
.wot-rule-item {
  display: flex; align-items: flex-start; gap: 8px;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-sm); padding: 7px 9px; cursor: pointer;
  font-size: 12px; color: var(--wot-text-1);
}
.wot-rule-item.is-hard { border-color: rgba(255,31,143,.35); }
.wot-rule-item.is-checked { background: var(--wot-bg-3); border-color: var(--wot-border-strong); }
.wot-rule-item input { width: auto; margin-top: 1px; }
.wot-rule-item .rn { color: var(--wot-text-2); font-weight: 700; }
.wot-rule-item .must { color: var(--wot-grad-end, #FF1F8F); font-style: normal; font-weight: 700; font-size: 10px; margin-left: 4px; }

.wot-tf-error {
  background: rgba(239,68,68,.12); border: 1px solid rgba(239,68,68,.4);
  color: #ffb4b4; border-radius: var(--wot-r-sm); padding: 8px 12px; font-size: 12px;
}
.wot-tf-gatebar { font-size: 12px; color: var(--wot-text-2); }
.wot-tf-gatebar b.ok { color: var(--wot-bull); }
.wot-tf-gatebar b.bad { color: var(--wot-bear); }

/* chips input for tags/mistakes */
.wot-chips { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.wot-chips .added { display:inline-flex; gap:4px; align-items:center; background:var(--wot-bg-3); border:1px solid var(--wot-border); border-radius:999px; padding:2px 6px 2px 10px; font-size:11px; }
.wot-chips .added button { background:none;border:none;color:var(--wot-text-2);cursor:pointer; }
.wot-chips input { max-width: 160px; }

/* ── bulk grid ───────────────────────────────────────────────────────────── */
.wot-bulk { display: flex; flex-direction: column; gap: 14px; }
.wot-bulk-tabs { display: flex; gap: 6px; }
.wot-bulk textarea.csv { min-height: 160px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }
.wot-bulk-grid-wrap { overflow-x: auto; border: 1px solid var(--wot-border); border-radius: var(--wot-r-sm); }
.wot-bulk-grid { width: 100%; border-collapse: collapse; font-size: 12px; }
.wot-bulk-grid th { padding: 6px 8px; background: var(--wot-bg-2); color: var(--wot-text-2); text-transform: uppercase; font-size: 10px; white-space: nowrap; border-bottom:1px solid var(--wot-border); }
.wot-bulk-grid td { padding: 3px 4px; border-bottom: 1px solid var(--wot-border); }
.wot-bulk-grid input, .wot-bulk-grid select { background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-0); border-radius: 4px; padding: 4px 6px; font: inherit; font-size: 12px; width: 100%; min-width: 64px; }
.wot-bulk-preview { font-size: 12px; color: var(--wot-text-2); }
.wot-bulk-preview .err { color: var(--wot-bear); }

/* ── sub-tabs reuse (Trades / Calendar within the journal) ───────────────── */
.wot-jr-subtabs { display: flex; gap: 6px; margin-bottom: 4px; }

/* ── Research hub sub-tabs ───────────────────────────────────────────────── */
.wot-research-tabs { flex-wrap: wrap; margin-bottom: 18px; }
.wot-research-tabs .wot-variant-tab { text-decoration: none; cursor: pointer; }
.wot-research-tabs .wot-variant-tab strong { display: inline-flex; align-items: center; gap: 6px; }
.wot-research-stage { display: block; }

/* ── shared form section header ──────────────────────────────────────────── */
.wot-form-h {
  display: flex; align-items: baseline; gap: 10px;
  margin: 4px 0 2px;
}
.wot-form-h > span:first-child {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 13px; font-weight: 700; color: var(--wot-text-0);
}
.wot-form-h .wot-icon { color: var(--wot-grad-end, #FF1F8F); }
.wot-form-h-note { font-size: 11px; color: var(--wot-text-2); }

.wot-tf-gatebar.is-ok { color: var(--wot-bull); }
.wot-leg .lg-action.buy { color: var(--wot-bull); font-weight: 700; }
.wot-leg .lg-action.sell { color: var(--wot-bear); font-weight: 700; }

/* Inputs in the new sections inherit the modal's field styling. .wot-ts-col
   covers the level editor wherever it mounts (wizard, edit modal, plan editor). */
.wot-legs-section input, .wot-legs-section select,
.wot-ts-col input,
.wot-wizard input, .wot-wizard select, .wot-wizard textarea {
  background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  color: var(--wot-text-0); border-radius: var(--wot-r-sm);
  padding: 8px 10px; font: inherit; font-size: 13px; width: 100%;
}
.wot-wizard textarea { resize: vertical; min-height: 64px; }
.wot-legs-section input:focus, .wot-legs-section select:focus,
.wot-ts-col input:focus,
.wot-wizard input:focus, .wot-wizard select:focus, .wot-wizard textarea:focus {
  outline: none; border-color: var(--wot-grad-end, #FF1F8F);
  box-shadow: 0 0 0 3px rgba(255,31,143,.12);
}
.wot-legs-section { display: flex; flex-direction: column; gap: 8px; }

/* ── profit-target / stop-loss editor ────────────────────────────────────── */
.wot-ts-section { display: flex; flex-direction: column; gap: 10px; }
.wot-ts-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 560px) { .wot-ts-grid { grid-template-columns: 1fr; } }
.wot-ts-col {
  background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 12px; display: flex; flex-direction: column; gap: 8px;
}
.wot-ts-col.is-target { border-top: 2px solid var(--wot-target, #d4f04a); }
.wot-ts-col.is-stop { border-top: 2px solid var(--wot-stop, #ff5252); }
.wot-ts-head { display: flex; align-items: center; justify-content: space-between; }
.wot-ts-label { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; color: var(--wot-text-0); }
.wot-ts-col.is-target .wot-ts-label .wot-icon { color: var(--wot-target, #d4f04a); }
.wot-ts-col.is-stop .wot-ts-label .wot-icon { color: var(--wot-stop, #ff5252); }
.wot-ts-tip { color: var(--wot-text-2); display: inline-flex; }
.wot-ts-subhdr, .wot-ts-row { display: grid; grid-template-columns: 1fr 1fr 28px; gap: 6px; align-items: center; }
.wot-ts-col.no-qty .wot-ts-subhdr, .wot-ts-col.no-qty .wot-ts-row { grid-template-columns: 1fr 28px; }
.wot-ts-subhdr { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); padding: 0 2px; }
.wot-ts-rows { display: flex; flex-direction: column; gap: 6px; }
.wot-ts-empty { font-size: 11.5px; color: var(--wot-text-2); font-style: italic; padding: 2px; }
.wot-ts-del { background: none; border: none; color: var(--wot-text-2); cursor: pointer; display: grid; place-items: center; }
.wot-ts-del:hover { color: var(--wot-bear); }
.wot-ts-add {
  align-self: flex-start;
  display: inline-flex; align-items: center; gap: 5px;
  background: var(--wot-bg-3); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-pill); color: var(--wot-text-1);
  padding: 5px 12px; font-size: 11.5px; font-weight: 600; cursor: pointer;
  transition: border-color .15s, color .15s;
}
.wot-ts-add:hover { color: var(--wot-text-0); border-color: var(--wot-grad-end, #FF1F8F); }
.wot-ts-add .wot-icon { width: 11px; height: 11px; }

.wot-ts-preview {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 12px 14px;
}
@media (max-width: 560px) { .wot-ts-preview { grid-template-columns: 1fr 1fr; } }
.wot-ts-prev { display: flex; flex-direction: column; gap: 3px; }
.wot-ts-prev .k { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); }
.wot-ts-prev .v { font-size: 16px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-0); }
.wot-ts-prev .v.pos { color: var(--wot-bull); }
.wot-ts-prev .v.neg { color: var(--wot-bear); }
.wot-ts-prev .v.accent { color: var(--wot-grad-end, #FF1F8F); }
.wot-ts-prev .v.muted { color: var(--wot-text-2); }

/* ── Add-Trade wizard (inline page) ──────────────────────────────────────── */
.wot-wizard { display: flex; flex-direction: column; gap: 18px; max-width: 980px; }
.wot-wizard-steps {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
}
.wot-wizard-step {
  display: flex; align-items: center; gap: 11px;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 12px 14px;
  transition: border-color .15s, background .15s;
}
.wot-wizard-step .ws-num {
  flex: none; width: 30px; height: 30px; border-radius: 50%;
  display: grid; place-items: center; font-weight: 800; font-size: 13px;
  background: var(--wot-bg-3); color: var(--wot-text-2);
  border: 1px solid var(--wot-border);
}
.wot-wizard-step .ws-text { display: grid; line-height: 1.25; }
.wot-wizard-step .ws-text strong { font-size: 13px; color: var(--wot-text-1); }
.wot-wizard-step .ws-text em { font-size: 10.5px; font-style: normal; color: var(--wot-text-2); }
.wot-wizard-step.is-active { border-color: var(--wot-grad-end, #FF1F8F); background: var(--wot-bg-2); }
.wot-wizard-step.is-active .ws-num { background: var(--wot-grad); color: #fff; border-color: transparent; box-shadow: var(--wot-grad-glow); }
.wot-wizard-step.is-active .ws-text strong { color: var(--wot-text-0); }
.wot-wizard-step.is-done .ws-num { background: rgba(34,197,94,.16); color: var(--wot-bull); border-color: rgba(34,197,94,.4); }
.wot-wizard-step.is-done .ws-num .wot-icon { width: 14px; height: 14px; }
@media (max-width: 640px) { .wot-wizard-steps { grid-template-columns: 1fr; } .wot-wizard-step .ws-text em { display: none; } }

.wot-wizard-stage {
  background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-lg); padding: 20px;
  display: flex; flex-direction: column; gap: 16px;
}
.wot-wizard-details, .wot-wizard-rules, .wot-wizard-source { display: flex; flex-direction: column; gap: 16px; }

.wot-wizard-from, .wot-wizard-source .wot-form-h-note { }
.wot-wizard-from {
  display: flex; align-items: center; gap: 8px;
  background: rgba(255,31,143,.08); border: 1px solid rgba(255,31,143,.22);
  border-radius: var(--wot-r-md); padding: 10px 14px; font-size: 12.5px; color: var(--wot-text-1);
}
.wot-wizard-from .wot-icon { color: var(--wot-grad-end, #FF1F8F); }

.wot-wizard-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.wot-wizard-empty { color: var(--wot-text-2); font-size: 13px; padding: 8px 2px; grid-column: 1 / -1; }
.wot-wizard-pick {
  text-align: left; cursor: pointer;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 14px;
  display: flex; flex-direction: column; gap: 10px;
  transition: border-color .15s, transform .1s, box-shadow .15s;
}
.wot-wizard-pick:hover { border-color: var(--wot-border-strong); transform: translateY(-1px); }
.wot-wizard-pick.is-on { border-color: var(--wot-grad-end, #FF1F8F); box-shadow: 0 0 0 3px rgba(255,31,143,.14); }
.wot-wizard-pick .wp-head { display: flex; align-items: center; gap: 9px; }
.wot-wizard-pick .wp-avatar {
  width: 30px; height: 30px; border-radius: 8px; flex: none;
  display: grid; place-items: center; color: #fff; font-weight: 800; font-size: 14px;
  box-shadow: 0 3px 10px rgba(0,0,0,.5);
}
.wot-wizard-pick .wp-avatar.is-manual { background: var(--wot-bg-3); color: var(--wot-text-1); box-shadow: none; }
.wot-wizard-pick .wp-sym { font-size: 15px; font-weight: 800; color: var(--wot-text-0); }
.wot-wizard-pick .wp-tag { margin-left: auto; font-size: 10px; font-weight: 800; letter-spacing: .06em; padding: 2px 8px; border-radius: 999px; }
.wot-wizard-pick .wp-tag.is-call { background: rgba(34,197,94,.16); color: var(--wot-bull); }
.wot-wizard-pick .wp-tag.is-put { background: rgba(239,68,68,.16); color: var(--wot-bear); }
.wot-wizard-pick .wp-spec { display: flex; align-items: baseline; gap: 7px; font-variant-numeric: tabular-nums; }
.wot-wizard-pick .wp-strike { font-size: 15px; font-weight: 800; color: var(--wot-text-0); }
.wot-wizard-pick.is-put .wp-strike { color: var(--wot-bear); }
.wot-wizard-pick.is-call .wp-strike { color: var(--wot-bull); }
.wot-wizard-pick .wp-at { font-size: 10px; text-transform: uppercase; color: var(--wot-text-2); letter-spacing: .06em; }
.wot-wizard-pick .wp-entry { font-size: 15px; font-weight: 700; color: var(--wot-text-0); }
.wot-wizard-pick .wp-levels { display: flex; gap: 14px; font-size: 12px; color: var(--wot-text-1); }
.wot-wizard-pick .wp-levels .wot-icon { width: 11px; height: 11px; }
.wot-wizard-pick .wp-t .wot-icon { color: var(--wot-target, #d4f04a); }
.wot-wizard-pick .wp-s .wot-icon { color: var(--wot-stop, #ff5252); }
.wot-wizard-pick.is-manual { background: var(--wot-bg-1); }
.wot-wizard-pick .wp-manual-note { font-size: 12px; color: var(--wot-text-2); line-height: 1.4; }
.wot-wizard-manual { display: flex; flex-direction: column; gap: 10px; }

.wot-wizard-nav {
  display: flex; align-items: center; gap: 14px;
  position: sticky; bottom: 0;
  background: linear-gradient(to top, var(--wot-bg-0) 70%, transparent);
  padding: 14px 0 4px;
}
.wot-wizard-nav .wiz-next { margin-left: auto; }
.wot-wizard-nav .wiz-err { color: var(--wot-bear); font-size: 12.5px; }
.wot-wizard-nav .wot-btn[disabled] { opacity: .4; pointer-events: none; }

/* ── discipline grade + flags (shared by wizard, grid, calendar) ──────────── */
.wot-grade {
  display: inline-grid; place-items: center;
  width: 24px; height: 24px; border-radius: 7px;
  font-weight: 900; font-size: 13px; line-height: 1;
  border: 1px solid transparent;
}
.wot-grade.is-a   { background: rgba(34,197,94,.16);  color: #4ade80; border-color: rgba(34,197,94,.4); }
.wot-grade.is-b   { background: rgba(245,180,0,.16);  color: #f5b400; border-color: rgba(245,180,0,.4); }
.wot-grade.is-c   { background: rgba(255,107,31,.16); color: #ff8a4c; border-color: rgba(255,107,31,.4); }
.wot-grade.is-off { background: var(--wot-bg-3);      color: var(--wot-text-2); border-color: var(--wot-border); }
.wot-grade.is-na  { background: var(--wot-bg-2);      color: var(--wot-text-3); border-color: var(--wot-border); }

.wot-plan-pill, .wiz-adh-pill {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 9px; border-radius: 999px;
  font-size: 10.5px; font-weight: 800; letter-spacing: .03em;
}
.wot-plan-pill .wot-icon, .wiz-adh-pill .wot-icon { width: 11px; height: 11px; }
.wot-plan-pill.is-planned, .wiz-adh-pill.is-planned { background: rgba(34,197,94,.15); color: #4ade80; }
.wot-plan-pill.is-offplan, .wiz-adh-pill.is-offplan { background: rgba(255,107,31,.16); color: #ff8a4c; }

.wot-flag, .wiz-adh-flag {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 8px; border-radius: 999px;
  font-size: 10.5px; font-weight: 700; white-space: nowrap;
  background: rgba(245,180,0,.13); color: #f5cf6a; border: 1px solid rgba(245,180,0,.28);
}
.wot-flag .wot-icon, .wiz-adh-flag .wot-icon { width: 10px; height: 10px; }
.wot-flag.is-gap, .wiz-adh-flag.is-gap { background: rgba(255,107,31,.14); color: #ff8a4c; border-color: rgba(255,107,31,.3); }

/* ── wizard live adherence panel ─────────────────────────────────────────── */
.wiz-adh {
  background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 14px; display: flex; flex-direction: column; gap: 12px;
}
.wiz-adh-head { display: flex; align-items: center; gap: 12px; }
.wiz-adh-grade {
  flex: none; width: 40px; height: 40px; border-radius: 11px;
  display: grid; place-items: center; font-weight: 900; font-size: 19px; border: 1px solid transparent;
}
.wiz-adh-grade.is-a   { background: rgba(34,197,94,.16);  color: #4ade80; border-color: rgba(34,197,94,.4); }
.wiz-adh-grade.is-b   { background: rgba(245,180,0,.16);  color: #f5b400; border-color: rgba(245,180,0,.4); }
.wiz-adh-grade.is-c   { background: rgba(255,107,31,.16); color: #ff8a4c; border-color: rgba(255,107,31,.4); }
.wiz-adh-grade.is-off { background: var(--wot-bg-3); color: var(--wot-text-2); border-color: var(--wot-border); }
.wiz-adh-grade.is-na  { background: var(--wot-bg-2); color: var(--wot-text-3); border-color: var(--wot-border); }
.wiz-adh-meta { display: grid; line-height: 1.3; }
.wiz-adh-meta strong { font-size: 13px; color: var(--wot-text-0); }
.wiz-adh-meta span { font-size: 11px; color: var(--wot-text-2); }
.wiz-adh-head .wiz-adh-pill { margin-left: auto; }
.wiz-adh-flags { display: flex; flex-wrap: wrap; gap: 7px; }
.wiz-adh-clean { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--wot-bull); }
.wiz-adh-clean .wot-icon { width: 13px; height: 13px; }

/* ── Banking ─────────────────────────────────────────────────────────────── */
.wot-bank { display: flex; flex-direction: column; gap: 18px; }
.wot-bank-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
@media (max-width: 720px) { .wot-bank-stats { grid-template-columns: 1fr 1fr; } }
.wot-bank-stat {
  background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 14px 16px; display: flex; flex-direction: column; gap: 6px;
}
.wot-bank-stat .k { font-size: 10.5px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); }
.wot-bank-stat .v { font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-0); }
.wot-bank-stat .v.pos { color: var(--wot-bull); }
.wot-bank-stat .v.accent { color: var(--wot-grad-end, #FF1F8F); }
.wot-bank-stat .v.muted { color: var(--wot-text-2); }

.wot-bank-body { display: grid; grid-template-columns: 1fr 300px; gap: 16px; align-items: start; }
@media (max-width: 900px) { .wot-bank-body { grid-template-columns: 1fr; } }

.wot-bank-empty {
  background: var(--wot-bg-1); border: 1px dashed var(--wot-border-strong);
  border-radius: var(--wot-r-md); padding: 28px; text-align: center;
}
.wot-bank-empty p { margin: 4px 0; }
.wot-bank-empty .muted { font-size: 12.5px; color: var(--wot-text-2); }

.wot-bank-month { margin-bottom: 16px; }
.wot-bank-month-head {
  display: flex; align-items: baseline; justify-content: space-between;
  padding: 6px 2px; border-bottom: 1px solid var(--wot-border); margin-bottom: 6px;
}
.wot-bank-month-head .mh-title { font-size: 13px; font-weight: 700; color: var(--wot-text-1); }
.wot-bank-month-head .mh-net { font-size: 13px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-bull); }
.wot-bank-month-head .mh-net.pos { color: var(--wot-bear); } /* negative net = more deployed than returned */
.wot-bank-rows { display: flex; flex-direction: column; gap: 4px; }
.wot-bank-row {
  display: grid; grid-template-columns: 92px 116px 1fr 1fr auto 64px;
  gap: 10px; align-items: center;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  border-left: 3px solid transparent; border-radius: var(--wot-r-sm); padding: 9px 12px; font-size: 12.5px;
}
.wot-bank-row.is-deposit    { border-left-color: var(--wot-grad-start, #FF6B1F); }
.wot-bank-row.is-withdrawal { border-left-color: var(--wot-bull); }
.wot-bank-row .br-date { color: var(--wot-text-2); font-variant-numeric: tabular-nums; }
.wot-bank-row .br-type { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; }
.wot-bank-row.is-deposit .br-type .wot-icon { transform: rotate(45deg); color: var(--wot-grad-start, #FF6B1F); }
.wot-bank-row.is-withdrawal .br-type .wot-icon { transform: rotate(-135deg); color: var(--wot-bull); }
.wot-bank-row .br-flow { color: var(--wot-text-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wot-bank-row .br-note { color: var(--wot-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wot-bank-row .br-amt { font-weight: 800; font-variant-numeric: tabular-nums; text-align: right; }
.wot-bank-row .br-amt.pos { color: var(--wot-bull); }
.wot-bank-row .br-actions { display: flex; gap: 4px; justify-content: flex-end; }
@media (max-width: 720px) {
  .wot-bank-row { grid-template-columns: 1fr auto; grid-auto-rows: auto; }
  .wot-bank-row .br-flow, .wot-bank-row .br-note { grid-column: 1 / -1; }
}

.wot-bank-side { display: flex; flex-direction: column; gap: 14px; }
.wot-bank-acct-block {
  background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 14px;
}
.wot-bank-acct-title { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--wot-text-2); margin-bottom: 8px; }
.wot-bank-acct-row { display: flex; justify-content: space-between; padding: 5px 0; font-size: 13px; font-variant-numeric: tabular-nums; border-bottom: 1px solid var(--wot-border); }
.wot-bank-acct-row:last-child { border-bottom: 0; }
.wot-bank-acct-row span:last-child { font-weight: 700; }
.wot-bank-acct-row span:last-child.pos { color: var(--wot-bear); }
.wot-bank-acct-row.muted { color: var(--wot-text-3); }
.wot-bank-side-note { font-size: 11px; color: var(--wot-text-2); line-height: 1.5; display: flex; gap: 6px; }
.wot-bank-side-note .wot-icon { flex: none; margin-top: 2px; }

.wot-bank-accts .wot-bank-acct-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 6px; }
.wot-bank-acct-manage {
  display: grid; grid-template-columns: 64px 1fr 28px; gap: 10px; align-items: center;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: var(--wot-r-sm); padding: 7px 10px;
}
.ba-badge { font-size: 9px; font-weight: 800; letter-spacing: .06em; padding: 2px 6px; border-radius: 5px; text-align: center; }
.ba-badge.is-bank { background: rgba(34,197,94,.15); color: #4ade80; }
.ba-badge.is-brokerage { background: rgba(255,107,31,.16); color: #ff8a4c; }
.wot-bank-acct-manage .ba-nm { font-size: 13px; color: var(--wot-text-0); }
.wot-bank-accts .muted { color: var(--wot-text-3); }
