/* ── 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: 14px; align-items: flex-start; flex-wrap: wrap; }
.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; }


/* The capital total is MONEY YOU HAVE, not money you made — but it is still
   the good number on the page, so it wears green rather than the fire gradient
   every other heading uses. Defined once; both totals wear it. */
.jn-page { --wot-grad-green: linear-gradient(135deg, #22c55e, #6ee7a8); }

/* ── account balances · the editor (Banking, top right) ───────────────────
   The ledger below answers "what moved". This answers "what is there" — a
   number nothing can derive, so it is typed once per account and every other
   tab reads it back. */
.bk-cap { margin-left: auto; width: min(430px, 100%); }
.bk-cap-card { position: relative; overflow: hidden; background: var(--wot-bg-1);
  border: 1px solid var(--wot-border); border-radius: var(--wot-r-md); }
/* One fire hairline along the top — the panel is the money, and it should not
   have to shout to say so. */
.bk-cap-card::before { content: ''; position: absolute; inset: 0 0 auto 0; height: 2px; background: var(--wot-grad); }
.bk-cap-hd { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px;
  padding: 14px 15px 11px; border-bottom: 1px solid var(--wot-border); }
.bk-cap-ttl { display: flex; flex-direction: column; gap: 3px; font-size: 10px; font-weight: 800;
  letter-spacing: .08em; text-transform: uppercase; color: var(--wot-text-3); }
.bk-cap-ttl em { font-style: normal; font-size: 11px; font-weight: 500; letter-spacing: 0;
  text-transform: none; color: var(--wot-text-2); }
.bk-cap-tot { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; text-align: right; }
.bk-cap-tot small { font-size: 9.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--wot-text-3); }
.bk-cap-tot b { font-size: 26px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums;
  color: transparent; background: var(--wot-grad-green); -webkit-background-clip: text; background-clip: text; }
.bk-cap-list { display: flex; flex-direction: column; }
.bk-cap-row { display: grid; grid-template-columns: minmax(0, 1fr) 128px; grid-template-rows: auto auto;
  align-items: center; gap: 4px 10px; padding: 10px 15px; border-bottom: 1px solid rgba(255,255,255,0.04); }
.bk-cap-row:last-child { border-bottom: none; }
.bk-cap-row:hover { background: rgba(255,255,255,0.02); }
.bk-cap-name { grid-column: 1; grid-row: 1; font-size: 13px; font-weight: 700; color: var(--wot-text-2);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bk-cap-row.is-set .bk-cap-name { color: var(--wot-text-0); }
/* The input IS the number — no separate read-only display to fall out of sync
   with what is stored. */
.bk-cap-in { grid-column: 2; grid-row: 1 / span 2; appearance: none; width: 100%; text-align: right;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 9px;
  padding: 9px 10px; font: inherit; font-size: 14px; font-weight: 800; font-variant-numeric: tabular-nums;
  color: var(--wot-text-0); transition: border-color .12s, box-shadow .12s; }
.bk-cap-in::placeholder { font-weight: 500; color: var(--wot-text-3); }
.bk-cap-in:hover { border-color: var(--wot-border-strong); }
.bk-cap-in:focus { outline: none; border-color: var(--wot-grad-end); box-shadow: 0 0 0 3px rgba(255,31,143,0.14); }
.bk-cap-in.is-neg { color: var(--wot-bear); }
.bk-cap-meter { grid-column: 1; grid-row: 2; display: flex; align-items: center; gap: 8px; }
.bk-cap-meter i { flex: 1; height: 4px; border-radius: 999px; background: rgba(255,255,255,0.06); overflow: hidden; }
.bk-cap-meter i u { display: block; height: 100%; border-radius: 999px; background: var(--wot-grad);
  transition: width .18s ease; }
.bk-cap-meter em { font-style: normal; font-size: 10px; font-weight: 800; font-variant-numeric: tabular-nums;
  color: var(--wot-text-3); min-width: 26px; text-align: right; }
.bk-cap-ft { display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 9px 15px 11px; font-size: 10.5px; color: var(--wot-text-3); background: var(--wot-bg-2);
  border-top: 1px solid var(--wot-border); }
.bk-cap-hint { color: var(--wot-text-3); opacity: .8; }

/* ── account balances · the read-only strip (Trades + Reflection) ─────────
   Only accounts actually holding something get a chip; a $0 account is not a
   line worth reading twice. Bars are drawn against the LARGEST account, not
   the total, so the smallest one still shows something comparable. */
.jn-cap { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; text-decoration: none;
  background: var(--wot-bg-1); border: 1px solid var(--wot-border); border-radius: var(--wot-r-md);
  padding: 12px 16px; position: relative; overflow: hidden; transition: border-color .14s, transform .14s; }
.jn-cap::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--wot-grad); }
.jn-cap:hover { border-color: var(--wot-border-strong); }
.jn-cap-lead { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; padding-left: 6px; }
.jn-cap-k { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--wot-text-3); }
.jn-cap-total { font-size: 22px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums;
  color: transparent; background: var(--wot-grad-green); -webkit-background-clip: text; background-clip: text; }
.jn-cap-lead em { font-style: normal; font-size: 11px; color: var(--wot-text-3); }
.jn-cap-rail { display: flex; align-items: stretch; gap: 8px; flex-wrap: wrap; margin-left: auto; }
.jn-cap-chip { display: grid; grid-template-columns: auto auto; gap: 2px 8px; align-items: baseline;
  background: var(--wot-bg-2); border: 1px solid var(--wot-border); border-radius: 10px; padding: 7px 11px; }
.jn-cap-chip .jn-cap-n { font-size: 10.5px; font-weight: 700; color: var(--wot-text-3);
  max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jn-cap-chip b { font-size: 14px; font-weight: 800; font-variant-numeric: tabular-nums;
  color: var(--wot-text-0); text-align: right; }
.jn-cap-chip.is-neg b { color: var(--wot-bear); }
.jn-cap-bar { grid-column: 1 / -1; height: 3px; border-radius: 999px; background: rgba(255,255,255,0.06);
  overflow: hidden; margin-top: 3px; }
.jn-cap-bar u { display: block; height: 100%; border-radius: 999px; background: var(--wot-grad); }
.jn-cap.is-empty { padding: 10px 16px; }
.jn-cap-cta { font-size: 12px; color: var(--wot-text-2); }
.jn-cap-cta b { color: var(--wot-grad-end); }
.jn-cap.is-empty:hover .jn-cap-cta { color: var(--wot-text-0); }

/* ── 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); }
  .bk-cap { width: 100%; margin-left: 0; }
  .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; }
  /* The rail wraps under the total instead of squeezing beside it. */
  .jn-cap-rail { margin-left: 0; width: 100%; }
  .jn-cap-chip { flex: 1 1 130px; }
  .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); }

/* ── Reflection → Weekly: the trade log as a week-by-week sheet ────────────
   One panel per week: the week's own scorecard in the header, then every trade
   of that week in the order it was taken. The table is wide by design (ten
   columns — the sheet a trader actually reviews), so it scrolls inside its own
   wrapper and the Date + Position columns stay pinned while it does. */
.rp-wk { background: var(--wot-bg-1); border: 1px solid var(--wot-border);
  border-radius: var(--wot-r-md); padding: 14px 16px 16px; }
.rp-wk-h { display: flex; align-items: flex-end; justify-content: space-between;
  gap: 14px; flex-wrap: wrap; margin-bottom: 12px; }
.rp-wk-title b { display: block; font-size: 15px; font-weight: 800; letter-spacing: -.01em; color: var(--wot-text-0); }
.rp-wk-title em { font-style: normal; font-size: 11.5px; color: var(--wot-text-3); }
.rp-wk-stats { display: flex; gap: 18px; flex-wrap: wrap; }
.rp-wk-stat { display: flex; flex-direction: column; gap: 1px; min-width: 78px; }
.rp-wk-stat small { font-size: 9.5px; font-weight: 800; letter-spacing: .08em;
  text-transform: uppercase; color: var(--wot-text-3); }
.rp-wk-stat b { font-size: 15px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--wot-text-0); }
.rp-wk-stat em { font-style: normal; font-size: 10.5px; color: var(--wot-text-3); font-variant-numeric: tabular-nums; }

.rp-wk-wrap { max-height: 70vh; overflow-y: auto; }
.rp-wk-table { min-width: 1080px; }
.rp-wk-table th { position: sticky; top: 0; z-index: 3; background: var(--wot-bg-2); }
.rp-wk-table td { vertical-align: middle; }
/* A date change inside the week gets a rule, so the day breaks are readable
   without repeating the date on every row. */
.rp-wk-table tr.rp-wk-newday td { border-top: 1px solid var(--wot-border); }
.rp-wk-n, .rp-wk-table th.rp-wk-n { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rp-wk-d { color: var(--wot-text-3); white-space: nowrap; font-variant-numeric: tabular-nums; }
.rp-wk-p { white-space: nowrap; }
.rp-wk-p b { font-weight: 800; color: var(--wot-text-0); }
.rp-wk-p span { color: var(--wot-text-1); font-weight: 600; }
.rp-wk-p em { font-style: normal; margin-left: 6px; font-size: 11px; color: var(--wot-text-3); font-variant-numeric: tabular-nums; }
.rp-wk-t2 { white-space: nowrap; color: var(--wot-text-2); font-variant-numeric: tabular-nums; }
.rp-wk-r { max-width: 210px; color: var(--wot-text-1); }
.rp-wk-x { min-width: 190px; }
.rp-wk-exit { display: inline-flex; align-items: baseline; gap: 5px; margin: 2px 5px 2px 0;
  padding: 3px 8px; border-radius: var(--wot-r-pill); background: var(--wot-bg-2);
  border: 1px solid var(--wot-border); font-size: 11.5px; }
.rp-wk-exit b { font-weight: 700; color: var(--wot-text-0); font-variant-numeric: tabular-nums; }
.rp-wk-exit em { font-style: normal; font-size: 10.5px; color: var(--wot-text-3); }
.rp-wk-open { display: inline-block; padding: 3px 8px; border-radius: var(--wot-r-pill);
  border: 1px solid rgba(245,180,0,0.32); color: var(--wot-chop);
  font-size: 10px; font-weight: 800; letter-spacing: .04em; }
/* The note is the sheet's own column — two lines here, the whole thing on hover. */
.rp-wk-note { max-width: 260px; }
.rp-wk-note span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; color: var(--wot-text-2); font-size: 11.5px; line-height: 1.45; }

@media (max-width: 720px) {
  .rp-wk-stats { gap: 12px; }
  .rp-wk-stat { min-width: 66px; }
  .rp-wk-stat b { font-size: 13.5px; }
}
/* A week label is "Aug 17 – Aug 21" — wider than the shared bar chart's default
   92px rail, which wrapped it onto two lines. */
.rp-wkchart .rp-dbar { grid-template-columns: 118px 1fr 84px; }
.rp-wkchart .rp-dbar-l { white-space: nowrap; }
