/* ── v2/styles/v2-journal.css ─────────────────────────────────────────────
   The journal surfaces — Trades (Calendar + List), Reflection (reports +
   Behavior), Banking, the shared filter bar, and the trade / day dialogs.

   Ported from local-trading-journal's calendar / trades / reports / banking /
   filters partials, but re-skinned entirely in TradeByFire tokens: the same
   --wot-bg / --wot-border / --wot-grad the rest of 2.0 uses, the fire gradient
   for anything selected, and bull/bear green-red for money. No LTJ colour
   values survive; only its information design does.
   ───────────────────────────────────────────────────────────────────────── */

.jn-page { max-width: 1480px; }

/* ── hero ─────────────────────────────────────────────────────────────── */
.jn-hero { display: flex; flex-direction: column; gap: 6px; }
.jn-hero-k { font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase;
  color: var(--wot-grad-end); display: flex; align-items: center; gap: 6px; }
.jn-hero h1 { margin: 0; font-size: 26px; line-height: 1.15; letter-spacing: -0.01em; color: var(--wot-text-0); }
.jn-hero p { margin: 0; max-width: 76ch; font-size: 13.5px; line-height: 1.55; color: var(--wot-text-2); }

/* ── stats bar ────────────────────────────────────────────────────────── */
.jn-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; }
.jn-stat { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md);
  padding: 10px 12px; display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.jn-stat small { font-size: 10.5px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--wot-text-1); }
.jn-stat b { font-size: 22px; font-weight: 800; color: var(--wot-text-0); font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }
/* The tone classes were being APPLIED and then lost: `.jn-stat b` is 0-1-1 and
   the bare `.is-up` is 0-1-0, so the white always won and every money tile read
   the same regardless of sign. Qualify them so the colour survives. */
.jn-stat b.is-up { color: #4ade80; }
.jn-stat b.is-down { color: #ff6b6b; }

/* ── filter bar ───────────────────────────────────────────────────────── */
.jf-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 7px;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 9px 10px; }
.jf-srch, .jf-sel, .jf-btn, .jf-reset {
  appearance: none; background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-1);
  border-radius: 9px; padding: 7px 10px; font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; }
.jf-srch { min-width: 160px; cursor: text; }
.jf-srch::placeholder { color: var(--wot-text-3); }
.jf-srch:focus, .jf-sel:focus, .jf-btn:focus-visible { outline: none; border-color: var(--wot-grad-end); }
.jf-sel { padding-right: 24px; }
.jf-gran { min-width: 84px; }
.jf-btn { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.jf-btn:hover, .jf-reset:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.jf-btn.is-on { background: rgba(255,31,143,0.14); border-color: rgba(255,31,143,0.45); color: var(--wot-text-0); }
.jf-caret { font-size: 9px; opacity: .6; }
.jf-dr-ic { display: inline-flex; width: 13px; height: 13px; opacity: .7; }
.jf-dr-ic svg { width: 100%; height: 100%; }
.jf-reset { color: var(--wot-text-2); }
.jf-openpos.is-on { background: rgba(34,197,94,0.14); border-color: rgba(34,197,94,0.45); color: var(--wot-bull); }

.jf-multi, .jf-dr { position: relative; }
.jf-drop { display: none; position: absolute; z-index: 60; top: calc(100% + 6px); left: 0; min-width: 220px; max-height: 300px;
  overflow-y: auto; background: var(--wot-bg-2); border: 1px solid var(--wot-border-strong);
  border-radius: var(--wot-r-md); box-shadow: var(--wot-shadow-pop); padding: 6px; }
.jf-multi.is-open .jf-drop { display: block; }
.jf-drop.is-tall { max-height: 420px; }
.jf-tabs { display: flex; gap: 4px; padding: 2px 2px 6px; border-bottom: 1px solid var(--wot-border); margin-bottom: 5px; }
.jf-tab { flex: 1; appearance: none; background: transparent; border: 1px solid transparent; color: var(--wot-text-2);
  border-radius: 7px; padding: 5px 8px; font: inherit; font-size: 11.5px; font-weight: 700; cursor: pointer; }
.jf-tab.is-on.is-incl { background: rgba(34,197,94,0.16); border-color: rgba(34,197,94,0.4); color: var(--wot-bull); }
.jf-tab.is-on.is-excl { background: rgba(239,68,68,0.16); border-color: rgba(239,68,68,0.4); color: var(--wot-bear); }
.jf-item { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 7px; cursor: pointer;
  font-size: 12.5px; color: var(--wot-text-1); }
.jf-item:hover { background: var(--wot-bg-3); }
.jf-item input { accent-color: var(--wot-grad-end); }
.jf-count { color: var(--wot-text-3); font-size: 11px; font-style: normal; }
.jf-selectall { width: 100%; appearance: none; background: transparent; border: none; border-bottom: 1px solid var(--wot-border);
  color: var(--wot-grad-end); font: inherit; font-size: 11.5px; font-weight: 700; padding: 5px 8px 8px; margin-bottom: 4px;
  text-align: left; cursor: pointer; }
.jf-empty { padding: 12px 8px; font-size: 12px; color: var(--wot-text-3); }

/* date-range popover */
.jf-dr-clear { position: absolute; right: -4px; top: -4px; z-index: 2; appearance: none; width: 17px; height: 17px;
  display: flex; align-items: center; justify-content: center; border-radius: 50%; border: 1px solid var(--wot-border-strong);
  background: var(--wot-bg-3); color: var(--wot-text-2); font-size: 9px; cursor: pointer; }
.jf-dr-pop { position: absolute; z-index: 70; top: calc(100% + 6px); left: 0; display: flex; gap: 12px;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border-strong); border-radius: var(--wot-r-md);
  box-shadow: var(--wot-shadow-pop); padding: 12px; }
.jf-dr-cals { display: flex; gap: 14px; }
.jf-dr-cal { width: 200px; }
.jf-cal-hdr { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.jf-cal-title { font-size: 12px; font-weight: 800; color: var(--wot-text-0); }
.jf-cal-nav { appearance: none; background: transparent; border: none; color: var(--wot-text-1); font-size: 16px;
  line-height: 1; padding: 0 6px; cursor: pointer; }
.jf-cal-navsp { width: 22px; }
.jf-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; }
.jf-cal-dow { font-size: 9.5px; font-weight: 700; color: var(--wot-text-3); text-align: center; padding: 3px 0; }
.jf-cal-day { font-size: 11.5px; text-align: center; padding: 5px 0; border-radius: 6px; cursor: pointer; color: var(--wot-text-1); }
.jf-cal-day:hover { background: var(--wot-bg-3); }
.jf-cal-day.is-other { color: var(--wot-text-3); opacity: .45; pointer-events: none; }
.jf-cal-day.is-today { box-shadow: inset 0 0 0 1px var(--wot-border-strong); }
.jf-cal-day.is-in { background: rgba(255,31,143,0.12); border-radius: 0; }
.jf-cal-day.is-start, .jf-cal-day.is-end { background: var(--wot-grad); color: #fff; font-weight: 800; }
.jf-dr-presets { display: flex; flex-direction: column; gap: 2px; border-left: 1px solid var(--wot-border); padding-left: 12px; min-width: 150px;
  /* the rail is now longer than the calendars — scroll it, don't stretch the popover */
  max-height: 300px; overflow-y: auto; }
.jf-dr-preset { appearance: none; background: transparent; border: none; color: var(--wot-text-1); font: inherit;
  font-size: 12px; text-align: left; padding: 5px 8px; border-radius: 7px; cursor: pointer; }
.jf-dr-preset:hover { background: var(--wot-bg-3); color: var(--wot-text-0); }

/* active chips */
.jf-active { display: flex; align-items: flex-start; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.jf-active[hidden] { display: none; }
.jf-active-k { font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
  color: var(--wot-text-3); padding-top: 5px; }
.jf-active-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.jf-chip { display: inline-flex; align-items: center; gap: 5px; background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-pill); padding: 4px 6px 4px 10px; font-size: 11.5px; font-weight: 600; color: var(--wot-text-1); }
.jf-chip.is-tags { border-color: rgba(124,92,255,0.4); }
.jf-chip.is-rules { border-color: rgba(34,197,94,0.35); }
.jf-chip.is-mistakes { border-color: rgba(245,180,0,0.4); }
.jf-chip.is-behaviors { border-color: rgba(255,31,143,0.4); }
.jf-chip.is-excl { opacity: .8; text-decoration-color: var(--wot-bear); }
.jf-chip-x { appearance: none; border: none; background: transparent; color: var(--wot-text-3); cursor: pointer;
  font-size: 10px; line-height: 1; padding: 2px 3px; border-radius: 50%; }
.jf-chip-x:hover { color: var(--wot-bear); background: rgba(239,68,68,0.12); }

/* ── sub-tabs ─────────────────────────────────────────────────────────── */
.jn-tabs { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.jn-tabs-sp { flex: 1; }
.jn-tab { appearance: none; background: var(--wot-bg-1); border: 1px solid var(--wot-border); color: var(--wot-text-1);
  border-radius: var(--wot-r-pill); padding: 8px 18px; font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.jn-tab:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.jn-tab.is-on { background: var(--wot-grad); border-color: transparent; color: #fff; box-shadow: var(--wot-grad-glow); }

/* ── calendar ─────────────────────────────────────────────────────────── */
.jn-calnav { display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 16px 0 14px; }
.jn-arrow { appearance: none; width: 36px; height: 36px; border-radius: 10px; border: 1px solid var(--wot-border);
  background: var(--wot-bg-1); color: var(--wot-text-1); font-size: 15px; cursor: pointer; transition: all .12s; }
.jn-arrow:hover { border-color: var(--wot-grad-end); color: var(--wot-text-0); background: var(--wot-bg-2); }
.jn-monthlbl { font-size: 22px; font-weight: 800; color: var(--wot-text-0); letter-spacing: -0.01em; margin-left: 10px; }
.jn-today { padding: 7px 14px; font-size: 12.5px; }
/* The month total belongs NEXT TO the month it totals. Pinned to the far right
   it read as a separate widget — your eye had to cross the whole header to
   connect "August 2026" with what August paid. */
.jn-monthpnl { margin-left: 10px; font-size: 34px; font-weight: 800; font-variant-numeric: tabular-nums;
  letter-spacing: -0.025em; display: flex; align-items: baseline; gap: 10px; color: var(--wot-text-0); }
.jn-monthpnl.is-up { color: #4ade80; }
.jn-monthpnl.is-down { color: #ff6b6b; }
.jn-monthpnl i { font-size: 15px; font-style: normal; font-weight: 700; opacity: .8; color: inherit; }

/* ONE grid: five weekday columns + the week rollup. The week card sharing a
   grid ROW with its days is what keeps the two aligned — a separate column
   beside the grid drifts as soon as a row's tiles grow. */
.jn-calgrid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)) minmax(158px, 200px);
  gap: 7px; align-items: stretch; }
.jn-dayhdr { font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase;
  color: var(--wot-text-1); text-align: center; padding: 2px 0 6px; }
.jn-dayhdr.is-week { color: var(--wot-grad-end); }

/* THE SHARED ROW TEMPLATE. Day tiles and the week card use the same four rows,
   so the money lands on one horizontal line straight across the grid. Rows are
   FIXED, not content-sized: a day carrying a partial close and a taken trade
   must not push its P&L off the line every other tile in the row is holding. */
.jn-day, .jn-week {
  display: grid;
  grid-template-rows: 20px 34px 15px 1fr;
  align-content: start;
  justify-items: center;
  text-align: center;
  gap: 3px;
  min-height: 124px;
  padding: 10px 8px 11px;
  border-radius: 13px;
  border: 1px solid var(--wot-border);
  background: var(--wot-bg-1);
  cursor: pointer;
  position: relative;
  overflow: hidden;
  transition: transform .13s ease, border-color .13s ease, box-shadow .13s ease;
}
.jn-day:hover, .jn-week:hover { transform: translateY(-2px); border-color: var(--wot-border-strong);
  box-shadow: 0 10px 26px rgba(0,0,0,.45); }
.jn-day:focus-visible, .jn-week:focus-visible { outline: 2px solid var(--wot-grad-end); outline-offset: 2px; }

/* A traded day wears a coloured edge at the top and a whisper of its tone —
   enough to read the month's rhythm at a glance without shouting over the
   numbers. */
.jn-day.is-win, .jn-week.is-win { background: linear-gradient(180deg, rgba(34,197,94,.13), rgba(34,197,94,.02) 62%); border-color: rgba(34,197,94,.30); }
.jn-day.is-loss, .jn-week.is-loss { background: linear-gradient(180deg, rgba(239,68,68,.13), rgba(239,68,68,.02) 62%); border-color: rgba(239,68,68,.30); }
.jn-day.is-win::before, .jn-day.is-loss::before, .jn-week.is-win::before, .jn-week.is-loss::before {
  content: ''; position: absolute; inset: 0 0 auto 0; height: 3px; }
.jn-day.is-win::before, .jn-week.is-win::before { background: var(--wot-bull); }
.jn-day.is-loss::before, .jn-week.is-loss::before { background: var(--wot-bear); }
.jn-day.is-open { border-color: rgba(155,135,255,.42); border-style: dashed; }
.jn-day.is-today { border-color: transparent; box-shadow: inset 0 0 0 2px var(--wot-grad-end), 0 0 22px rgba(255,31,143,.20); }
.jn-day.is-other { background: transparent; border-color: transparent; pointer-events: none; box-shadow: none; }
.jn-day.is-other::before { display: none; }

/* row 1 — the label */
.jn-daynum { font-size: 13px; font-weight: 800; color: var(--wot-text-1); line-height: 20px;
  justify-self: start; padding-left: 2px; font-variant-numeric: tabular-nums; }
.jn-day.is-today .jn-daynum { color: var(--wot-text-0); }
.jn-day.is-win .jn-daynum, .jn-day.is-loss .jn-daynum { color: var(--wot-text-0); }

/* row 2 — THE MONEY. The number the eye goes to; big, tight, tabular so the
   digits stack cleanly down a column. */
.jn-daypnl { font-size: 25px; font-weight: 800; letter-spacing: -0.025em; line-height: 34px;
  font-variant-numeric: tabular-nums; color: var(--wot-text-0); white-space: nowrap; }
.jn-daypnl.is-up { color: #4ade80; }
.jn-daypnl.is-down { color: #ff6b6b; }
.jn-daypnl:empty { display: block; }

/* row 3 — % of risk */
.jn-daypct { font-size: 12px; font-weight: 700; line-height: 15px; color: var(--wot-text-1);
  font-variant-numeric: tabular-nums; }
.jn-daypct.is-up { color: rgba(74,222,128,.92); }
.jn-daypct.is-down { color: rgba(255,107,107,.92); }

/* row 4 — what actually happened */
.jn-daymeta { font-size: 11px; font-weight: 600; color: var(--wot-text-1); line-height: 1.35;
  align-self: end; opacity: .82; }

/* The week card: same rows, its own identity — a fire-tinted rail down the
   left so the eye reads it as the summary, not a sixth day. */
.jn-week { background: var(--wot-bg-2); border-color: var(--wot-border-strong); }
.jn-week::after { content: ''; position: absolute; inset: 0 auto 0 0; width: 3px;
  background: linear-gradient(180deg, var(--wot-grad-start), var(--wot-grad-end)); opacity: .75; }
.jn-week.is-empty { background: transparent; border-color: transparent; pointer-events: none; box-shadow: none; }
.jn-week.is-empty::after, .jn-week.is-empty::before { display: none; }
.jn-week-l { font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  color: var(--wot-text-1); line-height: 20px; display: flex; align-items: baseline; gap: 7px; }
.jn-week-l i { font-style: normal; font-weight: 600; letter-spacing: 0; text-transform: none;
  color: var(--wot-text-2); font-size: 11px; }
.jn-week-p { font-size: 25px; font-weight: 800; letter-spacing: -0.025em; line-height: 34px;
  font-variant-numeric: tabular-nums; color: var(--wot-text-1); white-space: nowrap; }
.jn-week-p.is-up { color: #4ade80; }
.jn-week-p.is-down { color: #ff6b6b; }
.jn-week-pct { font-size: 12px; font-weight: 700; line-height: 15px; color: var(--wot-text-1);
  font-variant-numeric: tabular-nums; }
.jn-week-pct.is-up { color: rgba(74,222,128,.92); }
.jn-week-pct.is-down { color: rgba(255,107,107,.92); }
.jn-week-m { font-size: 11px; font-weight: 600; color: var(--wot-text-1); line-height: 1.35;
  align-self: end; opacity: .82; }

/* ── list view ────────────────────────────────────────────────────────── */
.jn-tablewrap, .rp-twrap, .bk-twrap { overflow-x: auto; border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); background: var(--wot-bg-1); }
.jn-table, .rp-table, .bk-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.jn-table th, .rp-table th, .bk-table th { text-align: left; font-size: 10px; font-weight: 800; letter-spacing: .08em;
  text-transform: uppercase; color: var(--wot-text-3); padding: 9px 10px; border-bottom: 1px solid var(--wot-border);
  background: var(--wot-bg-2); position: sticky; top: 0; z-index: 1; white-space: nowrap; }
.jn-table td, .rp-table td, .bk-table td { padding: 9px 10px; border-bottom: 1px solid rgba(255,255,255,0.04);
  color: var(--wot-text-1); vertical-align: top; }
.jn-table tbody tr:hover, .rp-table tbody tr:hover { background: rgba(255,255,255,0.02); }
.jn-sortable, .rp-sortable { cursor: pointer; user-select: none; }
.jn-sortable:hover, .rp-sortable:hover, .rp-sortable.is-on { color: var(--wot-grad-end); }
.jn-c-n { width: 40px; color: var(--wot-text-3); font-variant-numeric: tabular-nums; }
.jn-c-pnl { font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
.jn-c-pnl i { display: block; font-size: 10.5px; font-style: normal; opacity: .75; font-weight: 600; }
.jn-c-notes { max-width: 200px; color: var(--wot-text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jn-emptyrow td { text-align: center; padding: 28px 10px; color: var(--wot-text-3); }
.jn-rowacts { display: flex; gap: 5px; }

.jn-b { display: inline-flex; align-items: center; border-radius: 5px; padding: 2px 6px; font-size: 10px;
  font-weight: 800; letter-spacing: .03em; white-space: nowrap; }
.jn-b.is-opt, .jd-b.is-opt { background: rgba(124,92,255,0.18); color: #b3a3ff; }
.jn-b.is-stock, .jd-b.is-stock { background: rgba(255,255,255,0.08); color: var(--wot-text-1); }
.jn-b.is-long, .jd-b.is-call { background: rgba(34,197,94,0.16); color: var(--wot-bull); }
.jn-b.is-short, .jd-b.is-put { background: rgba(239,68,68,0.16); color: var(--wot-bear); }
.jn-b.is-buy { background: rgba(34,197,94,0.16); color: var(--wot-bull); }
.jn-b.is-sell { background: rgba(239,68,68,0.16); color: var(--wot-bear); }
.jn-b-mut, .jd-b-mut { font-size: 10.5px; color: var(--wot-text-3); margin-left: 4px; }

.jn-pills { display: flex; flex-wrap: wrap; gap: 3px; max-width: 190px; }
.jn-pill, .rp-pill { display: inline-block; border-radius: 5px; padding: 2px 6px; font-size: 10px; font-weight: 700; }
.jn-pill.is-mistake, .rp-pill.is-mistake { background: rgba(245,180,0,0.14); color: var(--wot-chop); }
.jn-pill.is-rule, .rp-pill.is-rule { background: rgba(34,197,94,0.13); color: var(--wot-bull); }
.jn-pill.is-tag, .rp-pill.is-tag { background: rgba(124,92,255,0.15); color: #b3a3ff; }
.jn-pill.is-behavior, .rp-pill.is-behavior { background: rgba(255,31,143,0.15); color: #ff86c0; }
.jn-pill-none { color: var(--wot-text-3); }

.jn-pg { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 6px 0; }
.jn-pg-l, .jn-pg-r { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.jn-pg-pages { display: flex; gap: 3px; }
.jn-pg-nav, .jn-pg-p, .jn-pg-s { appearance: none; background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  color: var(--wot-text-1); border-radius: 7px; padding: 5px 9px; font: inherit; font-size: 11.5px; font-weight: 700; cursor: pointer; }
.jn-pg-nav:disabled { opacity: .35; cursor: not-allowed; }
.jn-pg-p.is-on, .jn-pg-s.is-on { background: var(--wot-grad); border-color: transparent; color: #fff; }
.jn-pg-el { color: var(--wot-text-3); padding: 0 2px; }
.jn-pg-info { font-size: 11.5px; color: var(--wot-text-2); }
.jn-pg-sizes { display: flex; align-items: center; gap: 4px; font-size: 11px; color: var(--wot-text-3); }

/* ── dialogs (trade editor, day sheet, confirm) ───────────────────────── */
.jd-root { position: fixed; inset: 0; z-index: 200; background: rgba(0,0,0,0.72); backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center; padding: 24px 16px; animation: jdIn .16s ease; }
.jd-root.is-out { animation: jdOut .16s ease forwards; }
@keyframes jdIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes jdOut { to { opacity: 0; } }
.jd-modal { width: min(1180px, 100%); max-height: 90vh; display: flex; flex-direction: column;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border-strong); border-radius: var(--wot-r-lg);
  box-shadow: var(--wot-shadow-pop); overflow: hidden; }
.jd-modal-sm { width: min(520px, 100%); }
.jt-modal { width: min(1080px, 100%); }
.jd-head { display: flex; align-items: flex-start; gap: 12px; padding: 16px 18px; border-bottom: 1px solid var(--wot-border); }
.jd-head-t { font-size: 16px; font-weight: 800; color: var(--wot-text-0); }
.jd-head-s { font-size: 12px; color: var(--wot-text-2); margin-top: 2px; }
.jd-head-a { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.jd-csv { padding: 6px 11px; font-size: 12px; }
.jd-x { appearance: none; background: transparent; border: none; color: var(--wot-text-2); font-size: 15px;
  cursor: pointer; padding: 4px 6px; border-radius: 7px; margin-left: auto; }
.jd-head-a .jd-x { margin-left: 0; }
.jd-x:hover { color: var(--wot-text-0); background: var(--wot-bg-3); }
.jd-body { flex: 1; overflow-y: auto; padding: 16px 18px; display: flex; flex-direction: column; gap: 14px; }
.jd-foot { display: flex; align-items: center; gap: 8px; padding: 12px 18px; border-top: 1px solid var(--wot-border);
  background: var(--wot-bg-2); }
.jd-foot-sp { flex: 1; }
.v2-btn.is-danger { background: rgba(239,68,68,0.14); border-color: rgba(239,68,68,0.42); color: var(--wot-bear); }
.jd-confirm .jd-modal { padding: 20px; }
.jd-confirm-msg { margin: 0 0 16px; font-size: 14px; line-height: 1.5; color: var(--wot-text-1); }
.jd-confirm-acts { display: flex; justify-content: flex-end; gap: 8px; }

/* day sheet */
.jd-day { width: min(1320px, 100%); }
.jd-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 8px; }
.jd-card { background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md);
  padding: 11px 13px; display: flex; flex-direction: column; gap: 2px; }
.jd-card small { font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--wot-text-3); }
.jd-card b { font-size: 19px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-0); }
.jd-card em { font-size: 11px; font-style: normal; opacity: .8; }
.jd-hidden { display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  font-size: 11.5px; color: var(--wot-chop); background: rgba(245,180,0,0.08);
  border: 1px solid rgba(245,180,0,0.22); border-radius: 9px; padding: 7px 10px; }
.jd-hidden .v2-btn { margin-left: auto; }
.jd-daysep { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  color: var(--wot-text-3); margin: 12px 0 5px; }
.jd-empty, .rp-empty, .bk-empty { text-align: center; padding: 34px 16px; color: var(--wot-text-3); font-size: 13px; }
.rp-empty.is-err { color: var(--wot-bear); }
.jd-list { display: flex; flex-direction: column; gap: 8px; }
.jd-trade { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, .8fr) minmax(0, .8fr) 130px 62px; gap: 12px;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 11px 13px; }
.jd-trade-top { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 6px; }
.jd-sym { font-size: 15px; font-weight: 800; color: var(--wot-text-0); }
.jd-b { display: inline-flex; align-items: center; border-radius: 5px; padding: 2px 6px; font-size: 10px; font-weight: 800; }
.jd-legs { display: flex; flex-direction: column; gap: 2px; }
.jd-leg { display: flex; align-items: center; gap: 8px; font-size: 11.5px; color: var(--wot-text-1);
  border-left: 2px solid transparent; padding-left: 7px; }
.jd-leg.is-buy { border-left-color: var(--wot-bull); }
.jd-leg.is-sell { border-left-color: var(--wot-bear); }
.jd-leg-a { font-weight: 800; min-width: 30px; }
.jd-leg.is-buy .jd-leg-a { color: var(--wot-bull); }
.jd-leg.is-sell .jd-leg-a { color: var(--wot-bear); }
.jd-leg-f, .jd-leg-d { color: var(--wot-text-3); font-size: 10.5px; }
.jd-note { font-size: 11.5px; font-style: italic; color: var(--wot-text-2); margin-top: 5px; }
.jd-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.jd-chip { display: inline-flex; align-items: center; gap: 4px; border-radius: 5px; padding: 2px 7px; font-size: 10px; font-weight: 700; }
.jd-chip i { font-style: normal; opacity: .6; }
.jd-chip.is-behavior { background: rgba(255,31,143,0.15); color: #ff86c0; }
.jd-chip.is-mistake { background: rgba(245,180,0,0.14); color: var(--wot-chop); }
.jd-chip.is-rule { background: rgba(34,197,94,0.13); color: var(--wot-bull); }
.jd-chip.is-tag { background: rgba(124,92,255,0.15); color: #b3a3ff; }
.jd-sum { display: flex; flex-direction: column; gap: 2px; }
.jd-sum-r { display: flex; justify-content: space-between; gap: 8px; font-size: 11px; }
.jd-sum-r span { color: var(--wot-text-3); }
.jd-sum-r b { color: var(--wot-text-1); font-weight: 700; font-variant-numeric: tabular-nums; }
.jd-pnl { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; }
.jd-pnl b { font-size: 17px; font-weight: 800; font-variant-numeric: tabular-nums; }
.jd-pnl small { font-size: 11px; }
.jd-pnl em { font-size: 10.5px; font-style: normal; color: #9b87ff; }
.jd-acts { display: flex; gap: 5px; align-items: flex-start; justify-content: flex-end; }
.jd-ico { appearance: none; width: 27px; height: 27px; border-radius: 7px; border: 1px solid var(--wot-border);
  background: var(--wot-bg-1); color: var(--wot-text-2); cursor: pointer; font-size: 12px; }
.jd-ico:hover { border-color: var(--wot-grad-end); color: var(--wot-text-0); }
.jd-ico.is-x:hover { border-color: var(--wot-bear); color: var(--wot-bear); }
.is-accent { color: var(--wot-grad-end); }

/* ── trade editor ─────────────────────────────────────────────────────── */
.jt-row { display: grid; gap: 12px; }
.jt-row-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.jt-row-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.jt-fg { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.jt-lbl { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--wot-text-3); }
.jt-f { appearance: none; width: 100%; background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  color: var(--wot-text-0); border-radius: 9px; padding: 8px 10px; font: inherit; font-size: 13px; }
.jt-f:focus { outline: none; border-color: var(--wot-grad-end); }
.jt-ta { min-height: 74px; resize: vertical; }
.jt-hr { border: none; border-top: 1px solid var(--wot-border); margin: 2px 0; }

.jt-legs { display: flex; flex-direction: column; gap: 5px; }
.jt-legs-hdr, .jt-leg { display: grid; grid-template-columns: 78px 176px 92px 78px 82px 78px 88px 96px 96px 30px;
  gap: 6px; align-items: center; }
.jt-legs-hdr span { font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--wot-text-3); }
.jt-legs-body { display: flex; flex-direction: column; gap: 5px; }
.jt-legs-empty { padding: 14px; text-align: center; font-size: 12px; color: var(--wot-text-3);
  border: 1px dashed var(--wot-border); border-radius: var(--wot-r-md); }
.jt-leg-act.is-buy { color: var(--wot-bull); }
.jt-leg-act.is-sell { color: var(--wot-bear); }
.jt-calc { font-size: 11.5px; font-variant-numeric: tabular-nums; color: var(--wot-text-2); text-align: right; padding-right: 4px; }
.jt-leg-x { appearance: none; width: 26px; height: 26px; border-radius: 7px; border: 1px solid var(--wot-border);
  background: transparent; color: var(--wot-text-3); cursor: pointer; font-size: 10px; }
.jt-leg-x:hover { border-color: var(--wot-bear); color: var(--wot-bear); }
.jt-legs-foot { display: flex; align-items: center; gap: 8px; padding-top: 5px; flex-wrap: wrap; }
.jt-legs-sp { flex: 1; }
.jt-legadd { appearance: none; border-radius: 9px; padding: 6px 12px; font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; }
.jt-legadd.is-buy { background: rgba(34,197,94,0.14); border: 1px solid rgba(34,197,94,0.4); color: var(--wot-bull); }
.jt-legadd.is-sell { background: rgba(239,68,68,0.13); border: 1px solid rgba(239,68,68,0.4); color: var(--wot-bear); }
.jt-legs-net, .jt-legs-open { font-size: 12px; color: var(--wot-text-2); }
.jt-legs-net b, .jt-legs-open b { font-size: 14px; font-weight: 800; color: var(--wot-text-0); margin-left: 5px;
  font-variant-numeric: tabular-nums; }
.jt-legs-open b { color: var(--wot-grad-end); }

.jt-ladders { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.jt-ladder { background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 11px 12px; }
.jt-ladder-hdr { display: flex; align-items: center; gap: 6px; }
.jt-ladder-t { font-size: 12px; font-weight: 800; color: var(--wot-bull); }
.jt-ladder-t.is-stop { color: var(--wot-bear); }
.jt-ladder-i { font-size: 11px; color: var(--wot-text-3); cursor: help; }
.jt-ladder-sub { display: grid; grid-template-columns: 1fr 90px 30px; gap: 6px; margin: 8px 0 5px; }
.jt-ladder-sub span { font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--wot-text-3); }
.jt-ladder-body { display: flex; flex-direction: column; gap: 5px; }
.jt-lrow { display: grid; grid-template-columns: 1fr 90px 30px; gap: 6px; align-items: center; }
.jt-lrow-x { appearance: none; width: 26px; height: 26px; border-radius: 7px; border: 1px solid var(--wot-border);
  background: transparent; color: var(--wot-text-3); cursor: pointer; font-size: 10px; }
.jt-ladder-add { appearance: none; margin-top: 7px; width: 28px; height: 28px; border-radius: 8px;
  border: 1px dashed var(--wot-border-strong); background: transparent; color: var(--wot-text-2); font-size: 15px; cursor: pointer; }
.jt-ladder-add:hover { border-color: var(--wot-grad-end); color: var(--wot-grad-end); }

.jt-prev { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; }
.jt-prev[hidden] { display: none; }
.jt-prev-i { background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md);
  padding: 9px 11px; display: flex; flex-direction: column; gap: 2px; }
.jt-prev-i small { font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--wot-text-3); }
.jt-prev-i b { font-size: 15px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-0); }

.jt-sec-hdr { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
.jt-sec-hdr > span:first-child { font-size: 12px; font-weight: 800; color: var(--wot-text-0); }
.jt-behav-n { font-size: 10.5px; color: var(--wot-text-3); }
.jt-behav-all { margin-left: auto; appearance: none; background: transparent; border: none; color: var(--wot-grad-end);
  font: inherit; font-size: 11.5px; font-weight: 700; cursor: pointer; }
.jt-behav-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.jt-behav-row { display: grid; grid-template-columns: 20px 1fr 96px; gap: 8px; align-items: center;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 10px; padding: 8px 10px; }
.jt-behav-num { font-size: 11px; font-weight: 800; color: var(--wot-text-3); }
.jt-behav-t { font-size: 12.5px; font-weight: 700; color: var(--wot-text-0); min-width: 0; }
.jt-behav-t small { display: block; font-size: 10.5px; font-weight: 500; color: var(--wot-text-3); margin-top: 1px; }
.jt-yn { display: flex; gap: 4px; }
.jt-yn-b { flex: 1; appearance: none; border: 1px solid var(--wot-border); background: var(--wot-bg-1);
  color: var(--wot-text-2); border-radius: 7px; padding: 5px 0; font: inherit; font-size: 11.5px; font-weight: 700; cursor: pointer; }
.jt-yn-b.is-yes.is-on { background: rgba(34,197,94,0.18); border-color: rgba(34,197,94,0.5); color: var(--wot-bull); }
.jt-yn-b.is-no.is-on { background: rgba(239,68,68,0.16); border-color: rgba(239,68,68,0.5); color: var(--wot-bear); }

.jt-vocab { display: flex; flex-direction: column; gap: 5px; }
.jt-vocab-box { max-height: 190px; overflow-y: auto; background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 5px; }
.jt-vocab-empty { padding: 10px; font-size: 12px; color: var(--wot-text-3); }
.jt-vrow { display: flex; align-items: center; gap: 6px; padding: 4px 6px; border-radius: 7px; }
.jt-vrow:hover { background: var(--wot-bg-3); }
.jt-vlab { flex: 1; display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--wot-text-1); cursor: pointer; }
.jt-vlab input { accent-color: var(--wot-grad-end); }
.jt-vedit { flex: 1; background: var(--wot-bg-1); border: 1px solid var(--wot-grad-end); color: var(--wot-text-0);
  border-radius: 7px; padding: 5px 8px; font: inherit; font-size: 12.5px; }
.jt-vico { appearance: none; width: 24px; height: 24px; border-radius: 6px; border: 1px solid transparent;
  background: transparent; color: var(--wot-text-3); cursor: pointer; font-size: 11px; }
.jt-vico:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.jt-vico.is-x:hover { border-color: var(--wot-bear); color: var(--wot-bear); }
.jt-vocab-add { display: flex; gap: 6px; }
.jt-vocab-add input { flex: 1; background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-0);
  border-radius: 9px; padding: 7px 10px; font: inherit; font-size: 12.5px; }
.jt-vocab-add input:focus { outline: none; border-color: var(--wot-grad-end); }

/* ── reports ──────────────────────────────────────────────────────────── */
.rp-types { display: flex; flex-wrap: wrap; gap: 6px; border-bottom: 1px solid var(--wot-border); padding-bottom: 10px; }
.rp-type { appearance: none; background: var(--wot-bg-1); border: 1px solid var(--wot-border); color: var(--wot-text-1);
  border-radius: 9px; padding: 8px 14px; font: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.rp-type:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.rp-type.is-on { background: var(--wot-grad); border-color: transparent; color: #fff; box-shadow: var(--wot-grad-glow); }
.rp-subs { display: flex; flex-wrap: wrap; gap: 5px; }
.rp-subs:empty { display: none; }
.rp-sub { appearance: none; background: transparent; border: 1px solid var(--wot-border); color: var(--wot-text-2);
  border-radius: var(--wot-r-pill); padding: 5px 13px; font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; }
.rp-sub.is-on { background: rgba(255,31,143,0.14); border-color: rgba(255,31,143,0.45); color: var(--wot-text-0); }
.rp-content { display: flex; flex-direction: column; gap: 16px; }

.rp-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; }
.rp-card { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 12px 14px; }
.rp-card-l { display: flex; align-items: center; gap: 6px; font-size: 10px; font-weight: 800; letter-spacing: .07em;
  text-transform: uppercase; color: var(--wot-text-3); }
.rp-card-ic { color: var(--wot-grad-end); font-size: 12px; }
.rp-card-t { font-size: 17px; font-weight: 800; color: var(--wot-text-0); margin: 5px 0 2px; }
.rp-card-m { font-size: 11.5px; color: var(--wot-text-2); }

.rp-tsec, .rp-cross { display: flex; flex-direction: column; gap: 8px; }
.rp-ttitle { font-size: 11px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; color: var(--wot-text-3); }
.rp-table tr.rp-total td { font-weight: 800; color: var(--wot-text-0); border-top: 1px solid var(--wot-border-strong);
  background: var(--wot-bg-2); }
.rp-table tr.rp-dim td { opacity: .5; }
.rp-neu { color: var(--wot-text-3); }
.rp-zero { color: var(--wot-text-3); }
.rp-cnt { color: var(--wot-text-1); font-weight: 700; }
.rp-crosstbl th, .rp-crosstbl td { white-space: nowrap; font-variant-numeric: tabular-nums; }
.rp-crosstbl td:first-child, .rp-crosstbl th:first-child { position: sticky; left: 0; background: var(--wot-bg-1); z-index: 2; }
.rp-crosstbl th:first-child { background: var(--wot-bg-2); z-index: 3; }
.rp-cross-hd { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.rp-cross-ctl { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.rp-dd { position: relative; }
.rp-dd-b { appearance: none; background: var(--wot-bg-2); border: 1px solid var(--wot-border); color: var(--wot-text-1);
  border-radius: 9px; padding: 6px 11px; font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; }
.rp-dd-menu { display: none; position: absolute; right: 0; top: calc(100% + 5px); z-index: 60; min-width: 190px;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border-strong); border-radius: var(--wot-r-md);
  box-shadow: var(--wot-shadow-pop); padding: 5px; }
.rp-dd-menu.is-open { display: block; }
.rp-dd-i { display: block; width: 100%; appearance: none; background: transparent; border: none; color: var(--wot-text-1);
  font: inherit; font-size: 12px; text-align: left; padding: 6px 9px; border-radius: 7px; cursor: pointer; }
.rp-dd-i:hover { background: var(--wot-bg-3); color: var(--wot-text-0); }
.rp-dd-i.is-on { color: var(--wot-grad-end); font-weight: 700; }
.rp-dd-sep { height: 1px; background: var(--wot-border); margin: 4px 2px; }
.rp-seg { display: flex; gap: 3px; background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  border-radius: 9px; padding: 3px; }
.rp-seg-b { appearance: none; background: transparent; border: none; color: var(--wot-text-2); border-radius: 6px;
  padding: 4px 10px; font: inherit; font-size: 11.5px; font-weight: 700; cursor: pointer; }
.rp-seg-b.is-on { background: var(--wot-grad); color: #fff; }

.rp-winbar { display: inline-flex; width: 74px; height: 6px; border-radius: 3px; overflow: hidden; background: var(--wot-bg-3);
  vertical-align: middle; }
.rp-winbar i { display: block; height: 100%; }
.rp-winbar i.is-loss { background: var(--wot-bear); }
.rp-winbar i.is-win { background: var(--wot-bull); }

.rp-dte-wrap { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; }
.rp-dte-panel { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 13px 15px; }
.rp-dte-t { font-size: 12.5px; font-weight: 800; color: var(--wot-text-0); }
.rp-dte-s { font-size: 10.5px; color: var(--wot-text-3); margin-bottom: 9px; }
.rp-dte-row { display: grid; grid-template-columns: 82px 1fr; gap: 8px; align-items: center; margin-bottom: 4px; }
.rp-dte-l { font-size: 11px; color: var(--wot-text-2); }
.rp-dte-bar { position: relative; display: flex; align-items: center; height: 17px; background: var(--wot-bg-3); border-radius: 4px; }
.rp-dte-bar.is-perf { background: transparent; }
.rp-dte-half { flex: 1; display: flex; height: 100%; }
.rp-dte-half.is-l { justify-content: flex-end; border-right: 1px solid var(--wot-border); }
.rp-dte-fill { height: 100%; border-radius: 3px; }
.rp-dte-fill.is-dist { background: var(--wot-grad); }
.rp-dte-fill.is-up { background: var(--wot-bull); }
.rp-dte-fill.is-down { background: var(--wot-bear); }
.rp-dte-v { position: absolute; right: 6px; font-size: 10.5px; font-weight: 700; font-variant-numeric: tabular-nums; }

.rp-pgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; }
.rp-pstat { 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: 3px; }
.rp-pstat small { font-size: 10px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--wot-text-3); }
.rp-pstat b { font-size: 18px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-0); }
.rp-pstat em { font-size: 10.5px; font-style: normal; color: var(--wot-text-3); }

/* overview charts */
.rp-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 9px; }
.rp-kpi { 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: 2px; }
.rp-kpi small { font-size: 10px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--wot-text-3); }
.rp-kpi b { font-size: 20px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-0); }
.rp-kpi em { font-size: 10.5px; font-style: normal; color: var(--wot-text-3); }
.rp-panel { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 14px 16px; }
.rp-panel h3 { margin: 0 0 10px; font-size: 12px; font-weight: 800; letter-spacing: .07em;
  text-transform: uppercase; color: var(--wot-text-3); }
.rp-two { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; }
.rp-note { font-size: 11.5px; color: var(--wot-text-3); }

/* behavior report */
.rp-bhero { display: flex; gap: 20px; flex-wrap: wrap; align-items: center; background: var(--wot-bg-1);
  border: 1px solid var(--wot-border); border-left-width: 3px; border-radius: var(--wot-r-md); padding: 15px 18px; }
.rp-bhero.is-green { border-left-color: var(--wot-bull); }
.rp-bhero.is-yellow { border-left-color: var(--wot-chop); }
.rp-bhero.is-red { border-left-color: var(--wot-bear); }
.rp-bhero.is-rest { border-left-color: var(--wot-text-3); }
.rp-bhero-l { display: flex; flex-direction: column; gap: 2px; }
.rp-bhero-l small { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--wot-text-3); }
.rp-bhero-l b { font-size: 30px; font-weight: 800; color: var(--wot-text-0); line-height: 1; }
.rp-bhero-l em { font-size: 12.5px; font-style: normal; color: var(--wot-text-2); }
.rp-bhero-r { margin-left: auto; display: flex; gap: 20px; }
.rp-bhero-r div { display: flex; flex-direction: column; gap: 2px; }
.rp-bhero-r small { font-size: 10px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--wot-text-3); }
.rp-bhero-r b { font-size: 18px; font-weight: 800; color: var(--wot-text-0); }

.rp-brates { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 7px; }
.rp-brate { display: grid; grid-template-columns: 18px 1fr auto; gap: 6px; align-items: baseline;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: 10px; padding: 8px 10px; }
.rp-brate-n { font-size: 10.5px; font-weight: 800; color: var(--wot-text-3); }
.rp-brate-t { font-size: 12px; font-weight: 700; color: var(--wot-text-1); }
.rp-brate-p { font-size: 14px; font-weight: 800; color: var(--wot-text-0); font-variant-numeric: tabular-nums; }
.rp-brate-c { grid-column: 2 / -1; font-size: 10px; color: var(--wot-text-3); }

.rp-legend { display: flex; gap: 14px; font-size: 11px; color: var(--wot-text-3); }
.rp-legend span { display: inline-flex; align-items: center; gap: 5px; }
.rp-cell { display: inline-flex; align-items: center; justify-content: center; width: 17px; height: 17px;
  border-radius: 5px; font-size: 10px; font-weight: 800; font-style: normal; }
.rp-cell.is-pass { background: rgba(34,197,94,0.16); color: var(--wot-bull); }
.rp-cell.is-fail { background: rgba(239,68,68,0.16); color: var(--wot-bear); }
.rp-cell.is-na { background: rgba(255,255,255,0.05); color: var(--wot-text-3); }
.rp-bmatrix .rp-bcol { text-align: center; width: 32px; }
.rp-bmatrix td:nth-child(n+4) { text-align: center; }
.rp-tiers { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 9px; }
.rp-tier { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-left-width: 3px;
  border-radius: var(--wot-r-md); padding: 11px 13px; display: flex; flex-direction: column; gap: 2px; }
.rp-tier.is-green { border-left-color: var(--wot-bull); }
.rp-tier.is-yellow { border-left-color: var(--wot-chop); }
.rp-tier.is-red { border-left-color: var(--wot-bear); }
.rp-tier b { font-size: 22px; font-weight: 800; color: var(--wot-text-0); }
.rp-tier small { font-size: 11px; color: var(--wot-text-3); }
.rp-tierpill { display: inline-block; border-radius: 5px; padding: 2px 8px; font-size: 10px; font-weight: 800; }
.rp-tierpill.is-green { background: rgba(34,197,94,0.16); color: var(--wot-bull); }
.rp-tierpill.is-yellow { background: rgba(245,180,0,0.16); color: var(--wot-chop); }
.rp-tierpill.is-red { background: rgba(239,68,68,0.16); color: var(--wot-bear); }
.rp-tierpill.is-rest { background: rgba(255,255,255,0.06); color: var(--wot-text-3); }
.rp-broke { display: flex; flex-wrap: wrap; gap: 3px; max-width: 380px; }
.rp-costhero { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md);
  padding: 15px 18px; display: flex; flex-direction: column; gap: 3px; }
.rp-costhero small { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--wot-text-3); }
.rp-costhero b { font-size: 30px; font-weight: 800; line-height: 1; }
.rp-costhero em { font-size: 12px; font-style: normal; color: var(--wot-text-2); }
.rp-rulenum { display: inline-block; min-width: 16px; font-size: 10.5px; font-weight: 800; color: var(--wot-text-3); }

/* ── banking ──────────────────────────────────────────────────────────── */
.bk-top { display: flex; gap: 8px; }
.bk-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 400px); gap: 16px; align-items: start; }
.bk-main, .bk-side { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.bk-group { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); overflow: hidden; }
.bk-group-hd { display: flex; align-items: center; gap: 9px; padding: 11px 14px; cursor: pointer;
  border-bottom: 1px solid var(--wot-border); background: var(--wot-bg-2); }
.bk-group-t { font-size: 14px; font-weight: 800; color: var(--wot-text-0); }
.bk-group-c { font-size: 10.5px; color: var(--wot-text-3); }
.bk-group-sp { flex: 1; }
.bk-add { padding: 5px 11px; font-size: 11.5px; }
.bk-arrow { display: inline-block; font-size: 9px; color: var(--wot-text-3); transition: transform .12s; }
.bk-arrow.is-closed { transform: rotate(-90deg); }
.bk-collapsed, .bk-yr-sub { display: flex; align-items: center; gap: 7px; padding: 10px 14px; font-size: 12px; }
.bk-collapsed i, .bk-yr-sub i { font-style: normal; color: var(--wot-text-3); font-size: 10.5px; }
.bk-collapsed b, .bk-yr-sub b { font-weight: 800; font-variant-numeric: tabular-nums; }
.bk-twrap { border: none; border-radius: 0; }
.bk-table th.bk-th-date { cursor: pointer; }
.bk-table th.bk-th-date span { color: var(--wot-grad-end); }
.bk-in { appearance: none; width: 100%; background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  color: var(--wot-text-0); border-radius: 7px; padding: 6px 8px; font: inherit; font-size: 12px; }
.bk-in:focus { outline: none; border-color: var(--wot-grad-end); }
.bk-num { text-align: right; font-variant-numeric: tabular-nums; }
.bk-num.is-up { color: var(--wot-bull); }
.bk-num.is-down { color: var(--wot-bear); }
.bk-del { appearance: none; width: 24px; height: 24px; border-radius: 6px; border: 1px solid var(--wot-border);
  background: transparent; color: var(--wot-text-3); cursor: pointer; font-size: 10px; }
.bk-del:hover { border-color: var(--wot-bear); color: var(--wot-bear); }
.bk-yr td { background: var(--wot-bg-2); cursor: pointer; }
.bk-yr-l { font-size: 12px; font-weight: 800; color: var(--wot-text-0); margin-left: 6px; }
.bk-yr-c { font-size: 10.5px; color: var(--wot-text-3); margin-left: 7px; }
.bk-yr-sub { display: inline-flex; padding: 0; margin-left: 12px; }
.bk-sub td { font-weight: 800; background: var(--wot-bg-2); border-top: 1px solid var(--wot-border-strong);
  font-variant-numeric: tabular-nums; }
.bk-emptyrow td { text-align: center; padding: 22px; color: var(--wot-text-3); }
.bk-overall { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 13px 15px; }
.bk-overall-l { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  color: var(--wot-text-3); margin-bottom: 9px; }
.bk-overall-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; }
.bk-ov-cell { display: flex; flex-direction: column; gap: 2px; }
.bk-ov-cell small { font-size: 10.5px; color: var(--wot-text-3); }
.bk-ov-amt { font-size: 15px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-1); }
.bk-ov-amt.is-up { color: var(--wot-bull); } .bk-ov-amt.is-down { color: var(--wot-bear); }
.bk-pivot { background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); padding: 13px 15px; }
.bk-pivot-t { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  color: var(--wot-text-3); margin-bottom: 9px; }
.bk-pivot-scroll { overflow-x: auto; }
.bk-pivot-tbl { width: 100%; border-collapse: collapse; font-size: 11.5px; }
.bk-pivot-tbl th, .bk-pivot-tbl td { padding: 6px 8px; border-bottom: 1px solid rgba(255,255,255,0.04); white-space: nowrap; }
.bk-pv-grp, .bk-pv-th { font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
  color: var(--wot-text-3); text-align: right; }
.bk-pv-grp { text-align: center; border-bottom: 1px solid var(--wot-border); }
.bk-pv-hd { font-weight: 700; color: var(--wot-text-1); text-align: left; }
.bk-pv-hd.is-mon { padding-left: 20px; color: var(--wot-text-3); font-weight: 500; }
.bk-pv-hd.is-total { font-weight: 800; color: var(--wot-text-0); }
.bk-pv-td { text-align: right; font-variant-numeric: tabular-nums; color: var(--wot-text-2); }
.bk-pv-td.is-mon { color: var(--wot-text-3); }
.bk-pv-td.is-up { color: var(--wot-bull); } .bk-pv-td.is-down { color: var(--wot-bear); }
.bk-pv-td.is-total { font-weight: 800; border-top: 1px solid var(--wot-border-strong); }
.bk-pv-yr td { cursor: pointer; background: var(--wot-bg-2); }
.bk-asec { margin-bottom: 16px; }
.bk-asec-hd { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px;
  font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--wot-text-3); }
.bk-alist { display: flex; flex-direction: column; gap: 5px; }
.bk-arow { display: flex; align-items: center; gap: 8px; background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  border-radius: 9px; padding: 8px 10px; }
.bk-drag { color: var(--wot-text-3); cursor: grab; font-size: 12px; }
.bk-aname { flex: 1; font-size: 13px; font-weight: 700; color: var(--wot-text-0); }
.bk-acount { font-size: 10.5px; color: var(--wot-text-3); }
.bk-ain { flex: 1; background: var(--wot-bg-1); border: 1px solid var(--wot-grad-end); color: var(--wot-text-0);
  border-radius: 7px; padding: 5px 8px; font: inherit; font-size: 13px; }
.bk-aico { appearance: none; width: 25px; height: 25px; border-radius: 6px; border: 1px solid transparent;
  background: transparent; color: var(--wot-text-3); cursor: pointer; font-size: 11px; }
.bk-aico:hover { border-color: var(--wot-border-strong); color: var(--wot-text-0); }
.bk-aico.is-x:hover { border-color: var(--wot-bear); color: var(--wot-bear); }
.bk-aico.is-off { opacity: .3; cursor: not-allowed; }
.bk-aempty { font-size: 12px; color: var(--wot-text-3); padding: 6px 2px; }

/* ── responsive ───────────────────────────────────────────────────────── */
@media (max-width: 1100px) {
  /* No room for the week column — the rollup drops to a full-width band UNDER
     its own row, which keeps it adjacent to the days it summarises. */
  .jn-calgrid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .jn-dayhdr.is-week { display: none; }
  /* The week card becomes a full-width band under its own row: one line, the
     money still the biggest thing on it. */
  .jn-week { grid-column: 1 / -1; min-height: 0; grid-template-rows: auto;
    grid-template-columns: auto auto auto 1fr; justify-items: start; text-align: left;
    align-items: baseline; gap: 12px; padding: 10px 14px; margin-bottom: 4px; }
  .jn-week-p { font-size: 20px; line-height: 1.1; }
  .jn-week-m { align-self: baseline; justify-self: end; }
  .jn-week.is-empty { display: none; }
  .bk-body { grid-template-columns: minmax(0, 1fr); }
  .jd-trade { grid-template-columns: minmax(0, 1fr) 120px 56px; }
  .jd-trade .jd-sum { display: none; }
}
@media (max-width: 760px) {
  .jn-hero h1 { font-size: 21px; }
  .jn-day { min-height: 74px; padding: 5px 6px; }
  .jn-daypnl { font-size: 12px; }
  .jt-row-2, .jt-row-3, .jt-ladders, .jt-behav-grid { grid-template-columns: minmax(0, 1fr); }
  .jt-legs-hdr { display: none; }
  .jt-leg { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; padding: 9px;
    background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 10px; }
  .jt-calc { text-align: left; }
  .jd-modal { max-height: 94vh; }
}

/* ── trade editor · the day's plans ───────────────────────────────────── */
.jt-plan-list { display: flex; flex-direction: column; gap: 6px; }
.jt-plan-off { appearance: none; text-align: left; background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 10px 13px; cursor: pointer; display: flex; flex-direction: column; gap: 2px; }
.jt-plan-off b { font-size: 13px; font-weight: 800; color: var(--wot-text-0); }
.jt-plan-off small { font-size: 11px; color: var(--wot-text-3); }
.jt-plan-off:hover { border-color: var(--wot-border-strong); }
.jt-plan-off.is-on { background: rgba(255,31,143,0.12); border-color: rgba(255,31,143,0.45); }
.jt-plan-none { font-size: 12px; color: var(--wot-text-3); padding: 10px 13px;
  border: 1px dashed var(--wot-border); border-radius: var(--wot-r-md); }
.jt-plan-stale { font-size: 11.5px; color: var(--wot-chop); display: flex; flex-direction: column; gap: 6px;
  background: rgba(245,180,0,0.07); border: 1px solid rgba(245,180,0,0.24); border-radius: var(--wot-r-md); padding: 9px 11px; }

/* ── the weekend, named rather than lost ──────────────────────────────────
   The grid is Mon–Fri, so a Sat/Sun session has no tile. Its money still
   counts inside the week rollup; this strip is where you can SEE it and open
   it. Renders only on months that actually have one. */
.jn-week-we { font-size: 9.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  color: var(--wot-chop); margin-top: auto; }
.jn-weekend { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 10px;
  background: rgba(245,180,0,0.06); border: 1px solid rgba(245,180,0,0.22);
  border-radius: var(--wot-r-md); padding: 9px 12px; }
.jn-weekend-k { font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--wot-chop); }
.jn-weekend-x { font-size: 11.5px; color: var(--wot-text-1); opacity: .85; }
.jn-weekend-list { display: flex; flex-wrap: wrap; gap: 6px; margin-left: auto; }
.jn-we-chip { appearance: none; background: var(--wot-bg-2); border: 1px solid var(--wot-border);
  color: var(--wot-text-1); border-radius: var(--wot-r-pill); padding: 6px 12px; font: inherit;
  font-size: 12px; font-weight: 700; cursor: pointer; }
.jn-we-chip:hover { border-color: var(--wot-grad-end); color: var(--wot-text-0); }
.jn-we-chip b { font-weight: 800; font-variant-numeric: tabular-nums; }
.jn-we-chip.is-up b { color: var(--wot-bull); }
.jn-we-chip.is-down b { color: var(--wot-bear); }
